Search in sources :

Example 41 with Axis

use of mondrian.olap.Axis in project pentaho-platform by pentaho.

the class MDXMetaData method createColumnNames.

/**
 * Flattens the row headers into column names (where the useful columns have useful names and the unuseful columns
 * have unusful names).
 *
 * @return the row headers in a String array
 */
protected String[] createColumnNames() {
    String[] colNames = null;
    if (nativeResultSet != null) {
        // HACK for BISERVER-2640; need backward compatibility to old format of column
        // names, yet with the old format cross joins will have problems (BISERVER-1266).
        Axis[] axes = nativeResultSet.getAxes();
        // Another IndexOOB Fix
        if ((axes.length <= MDXMetaData.AXIS_ROW) || (axes[MDXMetaData.AXIS_ROW] == null)) {
            // no rows...
            return new String[0];
        }
        List positions = axes[MDXMetaData.AXIS_ROW].getPositions();
        if (useExtendedColumnNames) {
            if ((this.rowHeaders.length > 0) && (positions != null) && (positions.size() > 0)) {
                colNames = new String[this.rowHeaders[0].length];
                // Flatten out the column headers into one column-name
                for (int i = 0; i < colNames.length; ++i) {
                    Member member = (Member) ((List) positions.get(0)).get(i);
                    colNames[i] = "[" + member.getDimension().getName() + "].[" + member.getHierarchy().getName() + "].[" + member.getLevel().getName() + "]";
                }
            } else {
                colNames = new String[0];
            }
        } else {
            if ((positions != null) && (positions.size() > 0)) {
                colNames = new String[getColumnCount()];
                // Flatten out the column headers into one column-name
                for (int i = 0; i < colNames.length; ++i) {
                    if (i < ((List) positions.get(0)).size()) {
                        Member member = (Member) ((List) positions.get(0)).get(i);
                        Hierarchy hierarchy = member.getHierarchy();
                        colNames[i] = hierarchy.getCaption();
                    } else {
                        colNames[i] = ((Member) ((List) positions.get(0)).get(((List) positions.get(0)).size() - 1)).getHierarchy().getName() + "{" + i + // $NON-NLS-1$ //$NON-NLS-2$
                        "}";
                    }
                }
            } else {
                colNames = new String[0];
            }
        }
    }
    return colNames;
}
Also used : Hierarchy(mondrian.olap.Hierarchy) List(java.util.List) Member(mondrian.olap.Member) Axis(mondrian.olap.Axis)

Example 42 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)

Example 43 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)

Aggregations

Axis (mondrian.olap.Axis)43 Result (mondrian.olap.Result)24 Member (mondrian.olap.Member)13 Position (mondrian.olap.Position)10 Cell (mondrian.olap.Cell)8 List (java.util.List)7 Test (org.junit.Test)7 ArrayList (java.util.ArrayList)6 TupleList (mondrian.calc.TupleList)4 UnaryTupleList (mondrian.calc.impl.UnaryTupleList)4 CellSetAxis (org.olap4j.CellSetAxis)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