Search in sources :

Example 6 with Member

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());
}
Also used : Member(org.olap4j.metadata.Member)

Example 7 with Member

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();
}
Also used : ResultSet(java.sql.ResultSet) Member(org.olap4j.metadata.Member)

Example 8 with Member

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;
        }
    }
}
Also used : Position(org.olap4j.Position) ArrayList(java.util.ArrayList) Member(org.olap4j.metadata.Member)

Example 9 with Member

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();
                }
            };
        }
    });
}
Also used : RolapConnection(mondrian.rolap.RolapConnection) mondrian.olap(mondrian.olap) Locus(mondrian.server.Locus) Member(org.olap4j.metadata.Member)

Example 10 with Member

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());
    }
}
Also used : 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