blob: 7c53539f5361d98740ed38c222a2e54702c011a6 [file] [log] [blame]
/**
*
* Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
*
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
*
*/
package org.eclipse.osbp.xtext.datamart.common.olap;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.ListIterator;
import java.util.Map;
import mondrian.olap.Axis;
import org.eclipse.osbp.bpm.api.BPMTaskSummary;
import org.olap4j.CellSetAxis;
public class DerivedAxis {
private DerivedCellSet container = null;
public static final int AXIS_COLUMNS = 0; // see Cellset javadoc
public static final int AXIS_ROWS = 1; // see Cellset javadoc
private CellSetAxis olapAxis = null;
private Axis mondrianAxis = null;
private List<BPMTaskSummary> taskAxis = null;
private List<DerivedPosition> positionList = new ArrayList<>();
private Map<Integer, DerivedPosition> positionsByOrdinal = new HashMap<>();
private Map<DerivedPosition, Integer> ordinalsByPosition = new HashMap<>();
public DerivedAxis(CellSetAxis olapAxis, DerivedCellSet container) {
super();
this.container = container;
this.olapAxis = olapAxis;
for (org.olap4j.Position olapPosition : olapAxis.getPositions()) {
DerivedPosition pos = new DerivedPosition(olapPosition, container);
positionList.add(pos);
positionsByOrdinal.put(olapPosition.getOrdinal(), pos);
ordinalsByPosition.put(pos, olapPosition.getOrdinal());
}
}
public DerivedAxis(Axis mondrianAxis, DerivedCellSet container) {
super();
this.container = container;
this.mondrianAxis = mondrianAxis;
int ordinal = 0;
for (mondrian.olap.Position mondrianPosition : mondrianAxis.getPositions()) {
DerivedPosition pos = new DerivedPosition(mondrianPosition, ordinal, container);
positionList.add(pos);
positionsByOrdinal.put(ordinal, pos);
ordinalsByPosition.put(pos, ordinal);
ordinal++;
}
}
public DerivedAxis(List<BPMTaskSummary> taskAxis, int axisNo, DerivedCellSet container) {
super();
this.container = container;
this.taskAxis = taskAxis;
int ordinal = 0;
if (axisNo == 0) {
DerivedPosition pos = new DerivedPosition("name", ordinal++, container);
positionList.add(pos);
positionsByOrdinal.put(ordinal, pos);
ordinalsByPosition.put(pos, ordinal);
pos = new DerivedPosition("priority", ordinal++, container);
positionList.add(pos);
positionsByOrdinal.put(ordinal, pos);
ordinalsByPosition.put(pos, ordinal);
pos = new DerivedPosition("status", ordinal++, container);
positionList.add(pos);
positionsByOrdinal.put(ordinal, pos);
ordinalsByPosition.put(pos, ordinal);
pos = new DerivedPosition("subject", ordinal++, container);
positionList.add(pos);
positionsByOrdinal.put(ordinal, pos);
ordinalsByPosition.put(pos, ordinal);
pos = new DerivedPosition("description", ordinal++, container);
positionList.add(pos);
positionsByOrdinal.put(ordinal, pos);
ordinalsByPosition.put(pos, ordinal);
pos = new DerivedPosition("expiration", ordinal++, container);
positionList.add(pos);
positionsByOrdinal.put(ordinal, pos);
ordinalsByPosition.put(pos, ordinal);
pos = new DerivedPosition("created", ordinal++, container);
positionList.add(pos);
positionsByOrdinal.put(ordinal, pos);
ordinalsByPosition.put(pos, ordinal);
pos = new DerivedPosition("created by", ordinal++, container);
positionList.add(pos);
positionsByOrdinal.put(ordinal, pos);
ordinalsByPosition.put(pos, ordinal);
pos = new DerivedPosition("activation", ordinal++, container);
positionList.add(pos);
positionsByOrdinal.put(ordinal, pos);
ordinalsByPosition.put(pos, ordinal);
pos = new DerivedPosition("owner", ordinal++, container);
positionList.add(pos);
positionsByOrdinal.put(ordinal, pos);
ordinalsByPosition.put(pos, ordinal);
pos = new DerivedPosition("taskid", ordinal++, container);
positionList.add(pos);
positionsByOrdinal.put(ordinal, pos);
ordinalsByPosition.put(pos, ordinal);
}
if (axisNo == 1) {
for (BPMTaskSummary task : taskAxis) {
DerivedPosition pos = new DerivedPosition("row", ordinal++, container);
positionList.add(pos);
positionsByOrdinal.put(ordinal, pos);
ordinalsByPosition.put(pos, ordinal);
}
}
}
public List<DerivedPosition> getPositions() {
return positionList;
}
public int getPositionCount() {
if (olapAxis!=null){
return olapAxis.getPositionCount();
} else if (mondrianAxis!=null) {
return mondrianAxis.getPositions().size();
} else {
return positionList.size();
}
}
public ListIterator<DerivedPosition> iterator() {
return getPositions().listIterator();
}
public Map<Integer, DerivedPosition> getPositionsByOrdinal() {
return positionsByOrdinal;
}
public void setPositionsByOrdinal(Map<Integer, DerivedPosition> positionsByOrdinal) {
this.positionsByOrdinal = positionsByOrdinal;
}
public Map<DerivedPosition, Integer> getOrdinalsByPosition() {
return ordinalsByPosition;
}
public void setOrdinalsByPosition(Map<DerivedPosition, Integer> ordinalsByPosition) {
this.ordinalsByPosition = ordinalsByPosition;
}
public DerivedPosition getPositionByOrdinal(Integer ordinal) {
if (positionsByOrdinal.containsKey(ordinal)) {
return positionsByOrdinal.get(ordinal);
}
return null;
}
public int getOrdinalByPosition(DerivedPosition pos) {
if (ordinalsByPosition.containsKey(pos)) {
return ordinalsByPosition.get(pos);
}
return -1;
}
}