Search in sources :

Example 1 with Member

use of org.olap4j.metadata.Member in project pentaho-kettle by pentaho.

the class CellSetFormatter method computeAxisInfo.

/**
 * Computes a description of an axis.
 *
 * @param axis
 *          Axis
 * @return Description of axis
 */
private AxisInfo computeAxisInfo(final CellSetAxis axis) {
    if (axis == null) {
        return new AxisInfo(0);
    }
    final AxisInfo axisInfo = new AxisInfo(axis.getAxisMetaData().getHierarchies().size());
    int p = -1;
    for (final Position position : axis.getPositions()) {
        ++p;
        int k = -1;
        for (final Member member : position.getMembers()) {
            ++k;
            final AxisOrdinalInfo axisOrdinalInfo = axisInfo.ordinalInfos.get(k);
            final int topDepth = member.isAll() ? member.getDepth() : member.getHierarchy().hasAll() ? 1 : 0;
            if (axisOrdinalInfo.minDepth > topDepth || p == 0) {
                axisOrdinalInfo.minDepth = topDepth;
            }
            axisOrdinalInfo.maxDepth = Math.max(axisOrdinalInfo.maxDepth, member.getDepth());
        }
    }
    return axisInfo;
}
Also used : Position(org.olap4j.Position) Member(org.olap4j.metadata.Member)

Example 2 with Member

use of org.olap4j.metadata.Member in project mondrian by pentaho.

the class Olap4jTest method testFormatString.

public void testFormatString() throws SQLException {
    final OlapConnection connection = getTestContext().getOlap4jConnection();
    final CellSet cellSet = connection.createStatement().executeOlapQuery("with member [Measures].[Foo] as 1, FORMAT_STRING = Iif(1 < 2, '##.0%', 'foo')\n" + "select\n" + " [Measures].[Foo] DIMENSION PROPERTIES FORMAT_EXP on 0\n" + "from [Sales]");
    final CellSetAxis axis = cellSet.getAxes().get(0);
    final Member member = axis.getPositions().get(0).getMembers().get(0);
    Property property = findProperty(axis, "FORMAT_EXP");
    assertNotNull(property);
    // Note that the expression is returned, unevaluated. You can tell from
    // the parentheses and quotes that it has been un-parsed.
    assertEquals("IIf((1 < 2), \"##.0%\", \"foo\")", member.getPropertyValue(property));
}
Also used : Member(org.olap4j.metadata.Member) Property(org.olap4j.metadata.Property)

Example 3 with Member

use of org.olap4j.metadata.Member in project mondrian by pentaho.

the class Olap4jTest method testLevelProperties.

/**
 * Tests that a property that is not a standard olap4j property but is a
 * Mondrian-builtin property (viz, "FORMAT_EXP") is included among a level's
 * properties.
 *
 * @throws SQLException on error
 */
public void testLevelProperties() throws SQLException {
    final OlapConnection connection = getTestContext().getOlap4jConnection();
    final CellSet cellSet = connection.createStatement().executeOlapQuery("select [Store].[Store Name].Members on 0\n" + "from [Sales]");
    final CellSetAxis axis = cellSet.getAxes().get(0);
    final Member member = axis.getPositions().get(0).getMembers().get(0);
    final NamedList<Property> properties = member.getLevel().getProperties();
    // UNIQUE_NAME is an olap4j standard property.
    assertNotNull(properties.get("MEMBER_UNIQUE_NAME"));
    // FORMAT_EXP is a Mondrian built-in but not olap4j standard property.
    assertNotNull(properties.get("FORMAT_EXP"));
    // [Store Type] is a property of the level.
    assertNotNull(properties.get("Store Type"));
}
Also used : Member(org.olap4j.metadata.Member) Property(org.olap4j.metadata.Property)

Example 4 with Member

use of org.olap4j.metadata.Member in project mondrian by pentaho.

the class Olap4jTest method foo.

private Member foo(int i) throws SQLException {
    final OlapConnection connection = getTestContext().getOlap4jConnection();
    final Cube cube;
    final Hierarchy measuresHierarchy;
    final CellSet cellSet;
    switch(i) {
        case 0:
            cellSet = connection.createStatement().executeOlapQuery("select [Measures].[Unit Sales] on 0\n" + "from [Sales]");
            return cellSet.getAxes().get(0).getPositions().get(0).getMembers().get(0);
        case 1:
            cellSet = connection.createStatement().executeOlapQuery("select [Measures].Members on 0\n" + "from [Sales]");
            return cellSet.getAxes().get(0).getPositions().get(0).getMembers().get(0);
        case 2:
            cellSet = connection.createStatement().executeOlapQuery("select [Measures].[Measures].Members on 0\n" + "from [Sales]");
            return cellSet.getAxes().get(0).getPositions().get(0).getMembers().get(0);
        case 3:
            cube = connection.getOlapSchema().getCubes().get("Sales");
            measuresHierarchy = cube.getHierarchies().get("Measures");
            final NamedList<Member> rootMembers = measuresHierarchy.getRootMembers();
            return rootMembers.get(0);
        case 4:
            cube = connection.getOlapSchema().getCubes().get("Sales");
            measuresHierarchy = cube.getHierarchies().get("Measures");
            final Level measuresLevel = measuresHierarchy.getLevels().get(0);
            final List<Member> levelMembers = measuresLevel.getMembers();
            return levelMembers.get(0);
        case 5:
            cube = connection.getOlapSchema().getCubes().get("Sales");
            measuresHierarchy = cube.getHierarchies().get("Measures");
            return measuresHierarchy.getDefaultMember();
        case 6:
            cube = connection.getOlapSchema().getCubes().get("Sales");
            return cube.lookupMember(IdentifierNode.parseIdentifier("[Measures].[Unit Sales]").getSegmentList());
        default:
            throw new IllegalArgumentException("bad index " + i);
    }
}
Also used : Hierarchy(org.olap4j.metadata.Hierarchy) Cube(org.olap4j.metadata.Cube) Level(org.olap4j.metadata.Level) Member(org.olap4j.metadata.Member)

Example 5 with Member

use of org.olap4j.metadata.Member in project mondrian by pentaho.

the class MondrianOlap4jCube method getMeasures.

public List<Measure> getMeasures() {
    final Dimension dimension = getDimensions().get("Measures");
    if (dimension == null) {
        return Collections.emptyList();
    }
    final MondrianOlap4jConnection olap4jConnection = olap4jSchema.olap4jCatalog.olap4jDatabaseMetaData.olap4jConnection;
    try {
        final mondrian.olap.SchemaReader schemaReader = olap4jConnection.getMondrianConnection().getSchemaReader().withLocus();
        final MondrianOlap4jLevel measuresLevel = (MondrianOlap4jLevel) dimension.getDefaultHierarchy().getLevels().get(0);
        final List<Measure> measures = new ArrayList<Measure>();
        List<mondrian.olap.Member> levelMembers = schemaReader.getLevelMembers(measuresLevel.level, true);
        for (mondrian.olap.Member member : levelMembers) {
            // This corrects MONDRIAN-1123, a ClassCastException (see below)
            // that occurs when you create a calculated member on a
            // dimension other than Measures:
            // java.lang.ClassCastException:
            // mondrian.olap4j.MondrianOlap4jMember cannot be cast to
            // org.olap4j.metadata.Measure
            MondrianOlap4jMember olap4jMember = olap4jConnection.toOlap4j(member);
            if (olap4jMember instanceof Measure) {
                measures.add((Measure) olap4jMember);
            }
        }
        return measures;
    } catch (OlapException e) {
        // Demote from checked to unchecked exception.
        throw new RuntimeException(e);
    }
}
Also used : OlapException(org.olap4j.OlapException) Dimension(org.olap4j.metadata.Dimension) mondrian.olap(mondrian.olap) Member(org.olap4j.metadata.Member)

Aggregations

Member (org.olap4j.metadata.Member)12 Position (org.olap4j.Position)3 ArrayList (java.util.ArrayList)2 mondrian.olap (mondrian.olap)2 Property (org.olap4j.metadata.Property)2 ResultSet (java.sql.ResultSet)1 RolapConnection (mondrian.rolap.RolapConnection)1 Locus (mondrian.server.Locus)1 Cell (org.olap4j.Cell)1 OlapException (org.olap4j.OlapException)1 Cube (org.olap4j.metadata.Cube)1 Dimension (org.olap4j.metadata.Dimension)1 Hierarchy (org.olap4j.metadata.Hierarchy)1 Level (org.olap4j.metadata.Level)1