Search in sources :

Example 51 with Member

use of mondrian.olap.Member in project mondrian by pentaho.

the class SqlConstraintUtils method getSlicerMemberMap.

/**
 * Gets a map of MondrianDef.Expression to the set of sliced members
 * associated with each expression.
 *
 * This map is used by addContextConstraint() to get the set of slicer
 * members associated with each column in the cell request's constrained
 * columns array, {@link CellRequest#getConstrainedColumns}
 */
private static Map<MondrianDef.Expression, Set<RolapMember>> getSlicerMemberMap(Evaluator evaluator) {
    Map<MondrianDef.Expression, Set<RolapMember>> mapOfSlicerMembers = new HashMap<MondrianDef.Expression, Set<RolapMember>>();
    List<Member> slicerMembers = ((RolapEvaluator) evaluator).getSlicerMembers();
    List<Member> expandedSlicers = evaluator.isEvalAxes() ? expandSupportedCalculatedMembers(slicerMembers, evaluator.push()).getMembers() : slicerMembers;
    if (hasMultiPositionSlicer(expandedSlicers)) {
        for (Member slicerMember : expandedSlicers) {
            if (slicerMember.isMeasure()) {
                continue;
            }
            addSlicedMemberToMap(mapOfSlicerMembers, slicerMember);
        }
    }
    return mapOfSlicerMembers;
}
Also used : Set(java.util.Set) HashSet(java.util.HashSet) LinkedHashSet(java.util.LinkedHashSet) HashMap(java.util.HashMap) LinkedHashMap(java.util.LinkedHashMap) MondrianDef(mondrian.olap.MondrianDef) Member(mondrian.olap.Member) LimitedRollupMember(mondrian.rolap.RolapHierarchy.LimitedRollupMember) MultiCardinalityDefaultMember(mondrian.rolap.RestrictedMemberReader.MultiCardinalityDefaultMember)

Example 52 with Member

use of mondrian.olap.Member in project mondrian by pentaho.

the class TupleToStrFunDef method compileCall.

public Calc compileCall(ResolvedFunCall call, ExpCompiler compiler) {
    if (TypeUtil.couldBeMember(call.getArg(0).getType())) {
        final MemberCalc memberCalc = compiler.compileMember(call.getArg(0));
        return new AbstractStringCalc(call, new Calc[] { memberCalc }) {

            public String evaluateString(Evaluator evaluator) {
                final Member member = memberCalc.evaluateMember(evaluator);
                if (member.isNull()) {
                    return "";
                }
                StringBuilder buf = new StringBuilder();
                buf.append(member.getUniqueName());
                return buf.toString();
            }
        };
    } else {
        final TupleCalc tupleCalc = compiler.compileTuple(call.getArg(0));
        return new AbstractStringCalc(call, new Calc[] { tupleCalc }) {

            public String evaluateString(Evaluator evaluator) {
                final Member[] members = tupleCalc.evaluateTuple(evaluator);
                if (members == null) {
                    return "";
                }
                StringBuilder buf = new StringBuilder();
                SetToStrFunDef.appendTuple(buf, members);
                return buf.toString();
            }
        };
    }
}
Also used : AbstractStringCalc(mondrian.calc.impl.AbstractStringCalc) Evaluator(mondrian.olap.Evaluator) Member(mondrian.olap.Member)

Example 53 with Member

use of mondrian.olap.Member 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)

Example 54 with Member

use of mondrian.olap.Member 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 55 with Member

use of mondrian.olap.Member 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)

Aggregations

Member (mondrian.olap.Member)60 ArrayList (java.util.ArrayList)20 TestMember (mondrian.olap.fun.TestMember)20 List (java.util.List)15 LimitedRollupMember (mondrian.rolap.RolapHierarchy.LimitedRollupMember)13 Evaluator (mondrian.olap.Evaluator)11 MultiCardinalityDefaultMember (mondrian.rolap.RestrictedMemberReader.MultiCardinalityDefaultMember)11 SetEvaluator (mondrian.olap.Evaluator.SetEvaluator)8 Hierarchy (mondrian.olap.Hierarchy)8 TupleList (mondrian.calc.TupleList)7 Axis (mondrian.olap.Axis)7 Exp (mondrian.olap.Exp)7 Level (mondrian.olap.Level)7 HashMap (java.util.HashMap)6 LinkedHashMap (java.util.LinkedHashMap)6 HashSet (java.util.HashSet)5 UnaryTupleList (mondrian.calc.impl.UnaryTupleList)5 MemberExpr (mondrian.mdx.MemberExpr)5 LinkedHashSet (java.util.LinkedHashSet)4 ResolvedFunCall (mondrian.mdx.ResolvedFunCall)4