Search in sources :

Example 31 with Axis

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();
                }
            };
        }
    };
}
Also used : CoordinateIterator(org.olap4j.impl.CoordinateIterator) CoordinateIterator(org.olap4j.impl.CoordinateIterator) Cell(mondrian.olap.Cell) Axis(mondrian.olap.Axis)

Example 32 with Axis

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())));
}
Also used : Axis(mondrian.olap.Axis)

Example 33 with Axis

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);
}
Also used : RolapAxis(mondrian.rolap.RolapAxis) Axis(mondrian.olap.Axis) RolapAxis(mondrian.rolap.RolapAxis)

Example 34 with 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;
}
Also used : List(java.util.List) Member(mondrian.olap.Member) Axis(mondrian.olap.Axis)

Example 35 with Axis

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;
}
Also used : List(java.util.List) Member(mondrian.olap.Member) Axis(mondrian.olap.Axis)

Aggregations

Axis (mondrian.olap.Axis)38 Result (mondrian.olap.Result)9 Position (mondrian.olap.Position)8 List (java.util.List)7 Member (mondrian.olap.Member)7 Test (org.junit.Test)7 Cell (mondrian.olap.Cell)6 ArrayList (java.util.ArrayList)5 TupleList (mondrian.calc.TupleList)4 UnaryTupleList (mondrian.calc.impl.UnaryTupleList)4 BigDecimal (java.math.BigDecimal)2 Date (java.util.Date)2 Hierarchy (mondrian.olap.Hierarchy)2 RolapAxis (mondrian.rolap.RolapAxis)2 DBCacheEntry (org.pentaho.di.core.DBCacheEntry)2 KettleDatabaseException (org.pentaho.di.core.exception.KettleDatabaseException)2 RowMeta (org.pentaho.di.core.row.RowMeta)2 ValueMetaInterface (org.pentaho.di.core.row.ValueMetaInterface)2 ValueMetaBoolean (org.pentaho.di.core.row.value.ValueMetaBoolean)2 ValueMetaDate (org.pentaho.di.core.row.value.ValueMetaDate)2