Package mondrian.calc.impl

Examples of mondrian.calc.impl.AbstractTupleCalc


                public Member evaluateMember(Evaluator evaluator) {
                    return namedSetExpr.getEval(evaluator).currentMember();
                }
            };
        } else {
            return new AbstractTupleCalc(call, new Calc[0]) {
                public Member[] evaluateTuple(Evaluator evaluator) {
                    return namedSetExpr.getEval(evaluator).currentTuple();
                }
            };
        }
View Full Code Here


            final Hierarchy[] hierarchies =
                new Hierarchy[tupleType.elementTypes.length];
            for (int i = 0; i < tupleType.elementTypes.length; i++) {
                hierarchies[i] = tupleType.elementTypes[i].getHierarchy();
            }
            return new AbstractTupleCalc(call, new Calc[] {stringCalc}) {
                public Member[] evaluateTuple(Evaluator evaluator) {
                    String string = stringCalc.evaluateString(evaluator);
                    if (string == null) {
                        throw newEvalException(
                            MondrianResource.instance().NullValue.ex());
View Full Code Here

        Calc[] calcs = calcList.toArray(new Calc[calcList.size()]);
        if (elementType instanceof TupleType) {
            final TupleType tupleType = (TupleType) elementType;
            final Member[] nullTuple = makeNullTuple(tupleType);
            if (isString) {
                return new AbstractTupleCalc(call, calcs) {
                    public Member[] evaluateTuple(Evaluator evaluator) {
                        final List<Member[]> list =
                            listCalc.evaluateList(evaluator.push(false));
                        assert list != null;
                        String[] results = new String[stringCalcs.length];
                        for (int i = 0; i < stringCalcs.length; i++) {
                            results[i] =
                                    stringCalcs[i].evaluateString(evaluator);
                        }
                        listLoop:
                        for (Member[] members : list) {
                            for (int j = 0; j < results.length; j++) {
                                String result = results[j];
                                final Member member = members[j];
                                if (!matchMember(member, result)) {
                                    continue listLoop;
                                }
                            }
                            // All members match. Return the current one.
                            return members;
                        }
                        // We use 'null' to represent the null tuple. Don't
                        // know why.
                        return null;
                    }
                };
            } else {
                return new AbstractTupleCalc(call, calcs) {
                    public Member[] evaluateTuple(Evaluator evaluator) {
                        final List<Member[]> list =
                            listCalc.evaluateList(evaluator.push(false));
                        assert list != null;
                        final int index = indexCalc.evaluateInteger(evaluator);
View Full Code Here

                public Member evaluateMember(Evaluator evaluator) {
                    return namedSetExpr.getEval(evaluator).currentMember();
                }
            };
        } else {
            return new AbstractTupleCalc(call, new Calc[0]) {
                public Member[] evaluateTuple(Evaluator evaluator) {
                    return namedSetExpr.getEval(evaluator).currentTuple();
                }
            };
        }
View Full Code Here

        Calc[] calcs = calcList.toArray(new Calc[calcList.size()]);
        if (elementType instanceof TupleType) {
            final TupleType tupleType = (TupleType) elementType;
            final Member[] nullTuple = makeNullTuple(tupleType);
            if (isString) {
                return new AbstractTupleCalc(call, calcs) {
                    public Member[] evaluateTuple(Evaluator evaluator) {
                        final int savepoint = evaluator.savepoint();
                        final TupleList list;
                        try {
                            evaluator.setNonEmpty(false);
                            list = listCalc.evaluateList(evaluator);
                            assert list != null;
                        } finally {
                            evaluator.restore(savepoint);
                        }
                        try {
                            String[] results = new String[stringCalcs.length];
                            for (int i = 0; i < stringCalcs.length; i++) {
                                results[i] =
                                    stringCalcs[i].evaluateString(evaluator);
                            }
                            listLoop:
                            for (List<Member> members : list) {
                                for (int j = 0; j < results.length; j++) {
                                    String result = results[j];
                                    final Member member = members.get(j);
                                    if (!matchMember(member, result)) {
                                        continue listLoop;
                                    }
                                }
                                // All members match. Return the current one.
                                return members.toArray(
                                    new Member[members.size()]);
                            }
                        } finally {
                            evaluator.restore(savepoint);
                        }
                        // We use 'null' to represent the null tuple. Don't
                        // know why.
                        return null;
                    }
                };
            } else {
                return new AbstractTupleCalc(call, calcs) {
                    public Member[] evaluateTuple(Evaluator evaluator) {
                        final int savepoint = evaluator.savepoint();
                        final TupleList list;
                        try {
                            evaluator.setNonEmpty(false);
View Full Code Here

                }
            };
        } else {
            TupleType tupleType = (TupleType) elementType;
            final List<Hierarchy> hierarchies = tupleType.getHierarchies();
            return new AbstractTupleCalc(call, new Calc[] {stringCalc}) {
                public Member[] evaluateTuple(Evaluator evaluator) {
                    String string = stringCalc.evaluateString(evaluator);
                    if (string == null) {
                        throw newEvalException(
                            MondrianResource.instance().NullValue.ex());
View Full Code Here

TOP

Related Classes of mondrian.calc.impl.AbstractTupleCalc

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.