use of mondrian.olap.Axis in project mondrian by pentaho.
the class TestContext method cellIter.
/**
* Returns an iterator over cells in a result.
*/
static Iterable<Cell> cellIter(final Result result) {
return new Iterable<Cell>() {
public Iterator<Cell> iterator() {
int[] axisDimensions = new int[result.getAxes().length];
int k = 0;
for (Axis axis : result.getAxes()) {
axisDimensions[k++] = axis.getPositions().size();
}
final CoordinateIterator coordIter = new CoordinateIterator(axisDimensions);
return new Iterator<Cell>() {
public boolean hasNext() {
return coordIter.hasNext();
}
public Cell next() {
final int[] ints = coordIter.next();
return result.getCell(ints);
}
public void remove() {
throw new UnsupportedOperationException();
}
};
}
};
}
use of mondrian.olap.Axis in project mondrian by pentaho.
the class TestContext method assertAxisReturns.
/**
* Executes a query with a given expression on an axis, and asserts that it
* returns the expected string.
*/
public void assertAxisReturns(String expression, String expected) {
Axis axis = executeAxis(expression);
assertEqualsVerbose(expected, upgradeActual(toString(axis.getPositions())));
}
use of mondrian.olap.Axis in project mondrian by pentaho.
the class MondrianOlap4jCellSet method execute.
/**
* Executes a query. Not part of the olap4j API; internal to the mondrian
* driver.
*
* <p>This method may take some time. While it is executing, a client may
* execute {@link MondrianOlap4jStatement#cancel()}.
*
* @throws org.olap4j.OlapException on error
*/
void execute() throws OlapException {
result = olap4jStatement.olap4jConnection.getMondrianConnection().execute(this);
// initialize axes
mondrian.olap.Axis[] axes = result.getAxes();
QueryAxis[] queryAxes = result.getQuery().getAxes();
assert axes.length == queryAxes.length;
for (int i = 0; i < axes.length; i++) {
Axis axis = axes[i];
QueryAxis queryAxis = queryAxes[i];
axisList.add(new MondrianOlap4jCellSetAxis(this, queryAxis, (RolapAxis) axis));
}
// initialize filter axis
QueryAxis queryAxis = result.getQuery().getSlicerAxis();
final Axis axis = result.getSlicerAxis();
if (queryAxis == null) {
// Dummy slicer axis.
queryAxis = new QueryAxis(false, null, AxisOrdinal.StandardAxisOrdinal.SLICER, QueryAxis.SubtotalVisibility.Undefined);
}
filterAxis = new MondrianOlap4jCellSetAxis(this, queryAxis, (RolapAxis) axis);
}
use of mondrian.olap.Axis in project pentaho-platform by pentaho.
the class MDXMetaData method createRowHeaders.
protected Object[][] createRowHeaders() {
int rowCount = 0;
int colCount = 0;
Object[][] result = null;
Axis[] axes = nativeResultSet.getAxes();
// Another IndexOOB Fix
if ((axes.length <= MDXMetaData.AXIS_ROW) || (axes[MDXMetaData.AXIS_ROW] == null)) {
return new Object[0][0];
}
List positions = axes[MDXMetaData.AXIS_ROW].getPositions();
if (useExtendedColumnNames) {
if (positions != null && positions.size() > 0) {
rowCount = positions.size();
colCount = ((List) positions.get(0)).size();
}
result = new Object[rowCount][colCount];
for (int r = 0; r < rowCount; r++) {
List members = (List) positions.get(r);
Member member = null;
for (int c = 0; c < colCount; c++) {
member = (Member) members.get(c);
result[r][c] = member.getCaption();
}
}
} else {
if ((positions != null) && (positions.size() > 0)) {
rowCount = positions.size();
colCount = ((List) positions.get(0)).size() + 1;
}
result = new Object[rowCount][colCount];
for (int r = 0; r < rowCount; r++) {
List members = (List) positions.get(r);
Member member = null;
for (int c = 0; c < colCount - 1; c++) {
member = (Member) members.get(c);
result[r][c] = member.getCaption();
}
result[r][colCount - 1] = member.getHierarchy().getCaption();
}
}
return result;
}
use of mondrian.olap.Axis in project pentaho-platform by pentaho.
the class MDXMetaData method createColumnHeaders.
protected Object[][] createColumnHeaders() {
int rowCount = 0;
int colCount = 0;
Object[][] result = null;
Axis[] axes = nativeResultSet.getAxes();
// Another IndexOOB Fix
if ((axes.length <= MDXMetaData.AXIS_COLUMN) || (axes[MDXMetaData.AXIS_COLUMN] == null)) {
return new Object[0][0];
}
List positions = axes[MDXMetaData.AXIS_COLUMN].getPositions();
if (useExtendedColumnNames) {
if (positions != null && positions.size() > 0) {
rowCount = ((List) positions.get(0)).size();
colCount = positions.size();
}
result = new Object[rowCount][colCount];
for (int c = 0; c < colCount; c++) {
List members = (List) positions.get(c);
Member member = null;
for (int r = 0; r < rowCount; r++) {
member = (Member) members.get(r);
result[r][c] = member.getCaption();
}
}
} else {
if ((positions != null) && (positions.size() > 0)) {
rowCount = ((List) positions.get(0)).size() + 1;
colCount = positions.size();
}
result = new Object[rowCount][colCount];
for (int c = 0; c < colCount; c++) {
List members = (List) positions.get(c);
Member member = null;
for (int r = 0; r < rowCount - 1; r++) {
member = (Member) members.get(r);
result[r][c] = member.getCaption();
}
result[rowCount - 1][c] = member.getHierarchy().getCaption();
}
}
return result;
}
Aggregations