| 1 9 package mondrian.rolap; 10 11 import java.util.List ; 12 13 import mondrian.olap.Evaluator; 14 import mondrian.olap.Level; 15 import mondrian.olap.MondrianProperties; 16 import mondrian.rolap.sql.MemberChildrenConstraint; 17 import mondrian.rolap.sql.TupleConstraint; 18 19 25 public class SqlConstraintFactory { 26 27 boolean enabled = MondrianProperties.instance().EnableNativeNonEmpty.get(); 28 29 private static final SqlConstraintFactory instance = new SqlConstraintFactory(); 30 31 32 private SqlConstraintFactory() { 33 } 34 35 public static SqlConstraintFactory instance() { 36 return instance; 37 } 38 39 public MemberChildrenConstraint getMemberChildrenConstraint(Evaluator context) { 40 if (!enabled || !SqlContextConstraint.isValidContext(context)) 41 return DefaultMemberChildrenConstraint.instance(); 42 return new SqlContextConstraint((RolapEvaluator) context, false); 43 } 44 45 public TupleConstraint getLevelMembersConstraint(Evaluator context) { 46 return getLevelMembersConstraint(context, null); 47 } 48 49 public TupleConstraint getLevelMembersConstraint( 50 Evaluator context, 51 Level [] levels) { 52 if (!enabled || 53 !SqlContextConstraint.isValidContext(context, false, levels)) 54 { 55 return DefaultTupleConstraint.instance(); 56 } 57 return new SqlContextConstraint((RolapEvaluator) context, false); 58 } 59 60 public MemberChildrenConstraint getChildByNameConstraint( 61 RolapMember parent, 62 String childName) 63 { 64 if (!enabled || parent.getHierarchy().isRagged()) { 66 return DefaultMemberChildrenConstraint.instance(); 67 } 68 return new ChildByNameConstraint(childName); 69 } 70 71 76 public TupleConstraint getDescendantsConstraint( 77 List <RolapMember> parentMembers, 78 MemberChildrenConstraint mcc) 79 { 80 return new DescendantsConstraint(parentMembers, mcc); 81 } 82 } 83 84 | Popular Tags |