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;
}
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));
}
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"));
}
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);
}
}
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);
}
}
Aggregations