1 10 package mondrian.olap.fun; 11 12 import mondrian.calc.Calc; 13 import mondrian.calc.ExpCompiler; 14 import mondrian.calc.MemberCalc; 15 import mondrian.calc.impl.AbstractBooleanCalc; 16 import mondrian.mdx.ResolvedFunCall; 17 import mondrian.olap.Evaluator; 18 import mondrian.olap.FunDef; 19 import mondrian.olap.Member; 20 import mondrian.olap.Literal; 21 22 29 class IsNullFunDef extends FunDefBase { 30 33 static final ReflectiveMultiResolver Resolver = new ReflectiveMultiResolver( 34 "IS NULL", 35 "<Expression> IS NULL", 36 "Returns whether an object is null", 37 new String []{"Qbm", "Qbl", "Qbh", "Qbd"}, 38 IsNullFunDef.class); 39 40 public IsNullFunDef(FunDef dummyFunDef) { 41 super(dummyFunDef); 42 } 43 44 public Calc compileCall(ResolvedFunCall call, ExpCompiler compiler) { 45 assert call.getArgCount() == 1; 46 final MemberCalc memberCalc = compiler.compileMember(call.getArg(0)); 47 return new AbstractBooleanCalc(call, new Calc[]{memberCalc}) { 48 public boolean evaluateBoolean(Evaluator evaluator) { 49 Member member = memberCalc.evaluateMember(evaluator); 50 return member.isNull(); 51 } 52 }; 53 } 54 } 55 56 | Popular Tags |