use of org.olap4j.metadata.Member in project mondrian by pentaho.
the class VisualTotalsTest method testVisualTotalCaptionBug.
/**
* Test case for bug <a href="http://jira.pentaho.com/browse/MONDRIAN-1279">
* MONDRIAN-1279, "VisualTotals name only applies to member name not
* caption"</a>.
*
* @throws java.sql.SQLException on error
*/
public void testVisualTotalCaptionBug() throws SQLException {
CellSet cellSet = TestContext.instance().executeOlap4jQuery("select {[Measures].[Unit Sales]} on columns, " + "VisualTotals(" + " {[Product].[Food].[Baked Goods].[Bread]," + " [Product].[Food].[Baked Goods].[Bread].[Bagels]," + " [Product].[Food].[Baked Goods].[Bread].[Muffins]}," + " \"**Subtotal - *\") on rows " + "from [Sales]");
List<Position> positions = cellSet.getAxes().get(1).getPositions();
Cell cell;
Member member;
cell = cellSet.getCell(Arrays.asList(0, 0));
member = positions.get(0).getMembers().get(0);
assertEquals("*Subtotal - Bread", member.getName());
assertEquals("*Subtotal - Bread", member.getCaption());
}
use of org.olap4j.metadata.Member in project mondrian by pentaho.
the class VisualTotalsTest method testDrillthroughVisualTotal.
/**
* Test case for bug <a href="http://jira.pentaho.com/browse/MONDRIAN-925">
* MONDRIAN-925, "VisualTotals + drillthrough throws Exception"</a>.
*
* @throws java.sql.SQLException on error
*/
public void testDrillthroughVisualTotal() throws SQLException {
CellSet cellSet = TestContext.instance().executeOlap4jQuery("select {[Measures].[Unit Sales]} on columns, " + "{VisualTotals(" + " {[Product].[Food].[Baked Goods].[Bread]," + " [Product].[Food].[Baked Goods].[Bread].[Bagels]," + " [Product].[Food].[Baked Goods].[Bread].[Muffins]}," + " \"**Subtotal - *\")} on rows " + "from [Sales]");
List<Position> positions = cellSet.getAxes().get(1).getPositions();
Cell cell;
ResultSet resultSet;
Member member;
cell = cellSet.getCell(Arrays.asList(0, 0));
member = positions.get(0).getMembers().get(0);
assertEquals("*Subtotal - Bread", member.getName());
resultSet = cell.drillThrough();
assertNull(resultSet);
cell = cellSet.getCell(Arrays.asList(0, 1));
member = positions.get(1).getMembers().get(0);
assertEquals("Bagels", member.getName());
resultSet = cell.drillThrough();
assertNotNull(resultSet);
resultSet.close();
}
use of org.olap4j.metadata.Member in project pentaho-kettle by pentaho.
the class CellSetFormatter method populateAxis.
/**
* Populates cells in the matrix corresponding to a particular axis.
*
* @param matrix
* Matrix to populate
* @param axis
* Axis
* @param axisInfo
* Description of axis
* @param isColumns
* True if columns, false if rows
* @param offset
* Ordinal of first cell to populate in matrix
*/
private void populateAxis(final Matrix matrix, final CellSetAxis axis, final AxisInfo axisInfo, final boolean isColumns, final int offset) {
if (axis == null) {
return;
}
final Member[] prevMembers = new Member[axisInfo.getWidth()];
final MemberCell[] prevMemberInfo = new MemberCell[axisInfo.getWidth()];
final Member[] members = new Member[axisInfo.getWidth()];
for (int i = 0; i < axis.getPositions().size(); i++) {
final int x = offset + i;
final Position position = axis.getPositions().get(i);
int yOffset = 0;
final List<Member> memberList = position.getMembers();
for (int j = 0; j < memberList.size(); j++) {
Member member = memberList.get(j);
final AxisOrdinalInfo ordinalInfo = axisInfo.ordinalInfos.get(j);
while (member != null) {
if (member.getDepth() < ordinalInfo.minDepth) {
break;
}
final int y = yOffset + member.getDepth() - ordinalInfo.minDepth;
members[y] = member;
member = member.getParentMember();
}
yOffset += ordinalInfo.getWidth();
}
boolean same = true;
for (int y = 0; y < members.length; y++) {
final MemberCell memberInfo = new MemberCell();
final Member member = members[y];
final List<String> memberPath = new ArrayList<String>();
for (int z = 0; z <= position.getMembers().size() - 1; z++) {
if (i < axis.getPositions().size() - 1) {
if (axis.getPositions().get(i + 1).getMembers().get(z).getParentMember() != null && axis.getPositions().get(i + 1).getMembers().get(z).getParentMember().equals(member)) {
if (member == null || position.getMembers().get(z).getUniqueName().equals(member.getUniqueName())) {
break;
}
}
}
memberPath.add(position.getMembers().get(z).getUniqueName());
}
if (member != null) {
memberPath.add(member.getUniqueName());
}
memberInfo.setMemberPath(memberPath);
same = same && i > 0 && Olap4jUtil.equal(prevMembers[y], member);
if (member != null) {
if (x - 1 == offset) {
matrix.setOffset(offset);
}
memberInfo.setRawValue(member.getCaption());
// First try to get a formatted value
memberInfo.setFormattedValue(member.getCaption());
memberInfo.setParentDimension(member.getDimension().getName());
memberInfo.setUniqueName(member.getUniqueName());
if (y > 0 && prevMembers[y - 1] != null) {
memberInfo.setRightOf(prevMemberInfo[y - 1]);
}
if (y > 0 && prevMembers[y - 1] != null) {
memberInfo.setRightOfDimension(prevMembers[y - 1].getDimension().getName());
}
if (member.getParentMember() != null) {
memberInfo.setParentMember(member.getParentMember().getUniqueName());
}
} else {
memberInfo.setRawValue(null);
memberInfo.setFormattedValue(null);
memberInfo.setParentDimension(null);
}
if (isColumns) {
memberInfo.setRight(false);
memberInfo.setSameAsPrev(same);
if (member != null) {
memberInfo.setParentDimension(member.getDimension().getName());
}
matrix.set(x, y, memberInfo);
} else {
if (same) {
memberInfo.setFormattedValue(null);
memberInfo.setRawValue(null);
memberInfo.setParentDimension(null);
}
memberInfo.setRight(false);
memberInfo.setSameAsPrev(false);
matrix.set(y, x, memberInfo);
}
prevMembers[y] = member;
prevMemberInfo[y] = memberInfo;
members[y] = null;
}
}
}
use of org.olap4j.metadata.Member in project mondrian by pentaho.
the class MondrianOlap4jLevel method getMembers.
public List<Member> getMembers() throws OlapException {
final MondrianOlap4jConnection olap4jConnection = olap4jSchema.olap4jCatalog.olap4jDatabaseMetaData.olap4jConnection;
final RolapConnection mondrianConnection = olap4jConnection.getMondrianConnection();
return Locus.execute(mondrianConnection, "Reading members of level", new Locus.Action<List<Member>>() {
public List<Member> execute() {
final mondrian.olap.SchemaReader schemaReader = mondrianConnection.getSchemaReader().withLocus();
final List<mondrian.olap.Member> levelMembers = schemaReader.getLevelMembers(level, true);
return new AbstractList<Member>() {
public Member get(int index) {
return olap4jConnection.toOlap4j(levelMembers.get(index));
}
public int size() {
return levelMembers.size();
}
};
}
});
}
use of org.olap4j.metadata.Member in project mondrian by pentaho.
the class Olap4jTest method testSameMemberByVariousMeans.
/**
* Test case for bug <a href="http://jira.pentaho.com/browse/MONDRIAN-920">
* MONDRIAN-920, "olap4j: inconsistent measure's member type"</a>.
*
* @throws java.sql.SQLException on error
*/
public void testSameMemberByVariousMeans() throws SQLException {
Random random = new Random();
for (int i = 0; i < 20; i++) {
int n = random.nextInt(7);
Member member = foo(n);
String s = "source #" + n;
assertEquals(s, "Unit Sales", member.getName());
assertEquals(s, Member.Type.MEASURE, member.getMemberType());
}
}
Aggregations