com.tonbeller.jpivot.mondrian
Class MondrianQuaxUti

java.lang.Object
  extended by com.tonbeller.jpivot.mondrian.MondrianQuaxUti
All Implemented Interfaces:
QuaxUti

public class MondrianQuaxUti
extends java.lang.Object
implements QuaxUti

Utility Functions for Quax


Field Summary
 
Fields inherited from interface com.tonbeller.jpivot.olap.query.QuaxUti
FUNTYPE_BRACES, FUNTYPE_FUNCTION, FUNTYPE_INFIX, FUNTYPE_PROPERTY, FUNTYPE_TUPLE
 
Method Summary
 void addLevelMembers(java.util.List list, Level level, int[] maxLevel)
          check level and add a levels members to list
 void addMemberChildren(java.util.List list, Member member, int[] maxLevel)
          check level and add a member to list
 void addMemberDescendants(java.util.List list, Member member, Level level, int[] maxLevel)
          check level and add a members descendatns to list
 void addMemberSiblings(java.util.List list, Member member, int[] maxLevel)
          check level and add a member's parents children to list
 void addMemberUncles(java.util.List list, Member member, int[] maxLevel)
          check level and add a member's uncles to list
 boolean canHandle(java.lang.Object oExp)
          check an expression whether we can handle it (expand, collapse) currently we can basically handle following FunCalls member.children, member.descendants, level.members
 boolean checkChild(Member cMember, java.lang.Object pMemObj)
          check, whether member is child of other member
 boolean checkDescendantM(Member aMember, Member dMember)
          return true if Member (2.arg) is descendant of Member (1.arg)
 boolean checkDescendantO(Member aMember, java.lang.Object oMember)
          return true if Expression (2.arg) is descendant of Member (1.arg)
 boolean checkParent(Member pMember, java.lang.Object cMemObj)
          check, whether member is parent of other member
 java.lang.Object createFunCall(java.lang.String function, java.lang.Object[] args, int funType)
          create FunCall
 java.lang.Object createMemberSet(java.util.List mList)
          generate an object for a list of members
 Dimension dimForMember(Member member)
          return a members dimension
 boolean equalMember(java.lang.Object oExp, Member member)
           
 java.lang.Object funCallArg(java.lang.Object oFun, int index)
          return a FunCalls argument of given index
 int funCallArgCount(java.lang.Object oFun)
          get number of funCall arguments
 java.lang.String funCallName(java.lang.Object oFun)
          get funcall name
 java.lang.StringBuffer funString(java.lang.Object oFun)
          create String representation for FunCall
 java.lang.Object[] getChildren(java.lang.Object oMember)
          determine the children of a member object
 java.lang.Object[] getLevelMembers(Level level)
          get the members of a level
 java.lang.String getMemberUniqueName(java.lang.Object oExp)
           
 Level getParentLevel(Level level)
           
 Member getParentMember(java.lang.Object oExp)
           
 Hierarchy hierForExp(java.lang.Object exp)
          determine hierarchy for Exp
 Hierarchy hierForMember(Member member)
           
 boolean isChildOfMemberInFunCall(java.lang.Object oFun, Member member)
          check, whether a funcall set contains any child of a specific member
 boolean isDescendantOfMemberInFunCall(java.lang.Object oFun, Member member)
          check, whether funcall set contains descendant of a specific member
 boolean isFunCall(java.lang.Object oExp)
           
 boolean isFunCallNotTopLevel(java.lang.Object oFun)
          check whether a Funcall does NOT resolve to top level of hierarchy
 boolean isFunCallTo(java.lang.Object oExp, java.lang.String function)
           
 boolean isMember(java.lang.Object oExp)
           
 boolean isMemberInFunCall(java.lang.Object oFun, Member member)
          check, whether funcall set contains member
 boolean isMemberOnToplevel(java.lang.Object oMem)
          check, whether a member is on top level (has no parent);
 int levelDepthForMember(java.lang.Object oExp)
          level depth for member
 Level LevelForObj(java.lang.Object oLevel)
           
 Member memberForObj(java.lang.Object oExp)
          return member for exp object
 java.lang.String memberString(Member[] mPath)
          display member array for debugging purposes
 java.lang.Object objForDim(Dimension dim)
          Expression Object for Dimension
 java.lang.Object objForMember(Member member)
          Expression Object for member
 java.lang.Object removeDescendantsFromFunCall(java.lang.Object oFun, Member member)
          remove descendants of member from set Funcall this function is only called if there *are* descendants of member in funcall
 mondrian.olap.Exp toExp(java.lang.Object o)
          Converts an object to an expression.
 java.lang.Object topLevelMembers(Hierarchy hier, boolean expandAllMember)
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Method Detail

isFunCallNotTopLevel

public boolean isFunCallNotTopLevel(java.lang.Object oFun)
                             throws Quax.CannotHandleException
check whether a Funcall does NOT resolve to top level of hierarchy

Specified by:
isFunCallNotTopLevel in interface QuaxUti
Parameters:
oFun -
Returns:
Throws:
Quax.CannotHandleException

isMemberOnToplevel

public boolean isMemberOnToplevel(java.lang.Object oMem)
Description copied from interface: QuaxUti
check, whether a member is on top level (has no parent);

Specified by:
isMemberOnToplevel in interface QuaxUti
Returns:
true if member is on top level (has no parent)
See Also:
QuaxUti.isMemberOnToplevel(java.lang.Object)

isMemberInFunCall

public boolean isMemberInFunCall(java.lang.Object oFun,
                                 Member member)
                          throws Quax.CannotHandleException
Description copied from interface: QuaxUti
check, whether funcall set contains member

Specified by:
isMemberInFunCall in interface QuaxUti
Parameters:
oFun -
member -
Returns:
true if FunCall matches member
Throws:
Quax.CannotHandleException

isChildOfMemberInFunCall

public boolean isChildOfMemberInFunCall(java.lang.Object oFun,
                                        Member member)
                                 throws Quax.CannotHandleException
Description copied from interface: QuaxUti
check, whether a funcall set contains any child of a specific member

Specified by:
isChildOfMemberInFunCall in interface QuaxUti
Parameters:
oFun -
member -
Returns:
true if FunCall contains child of member
Throws:
Quax.CannotHandleException

isDescendantOfMemberInFunCall

public boolean isDescendantOfMemberInFunCall(java.lang.Object oFun,
                                             Member member)
                                      throws Quax.CannotHandleException
Description copied from interface: QuaxUti
check, whether funcall set contains descendant of a specific member

Specified by:
isDescendantOfMemberInFunCall in interface QuaxUti
Parameters:
oFun -
member -
Returns:
true if FunCall contains descendants of member
Throws:
Quax.CannotHandleException

removeDescendantsFromFunCall

public java.lang.Object removeDescendantsFromFunCall(java.lang.Object oFun,
                                                     Member member)
                                              throws Quax.CannotHandleException
remove descendants of member from set Funcall this function is only called if there *are* descendants of member in funcall

Parameters:
oFun -
member -
Returns:
the remainder after descendants were removed
Throws:
Quax.CannotHandleException

createMemberSet

public java.lang.Object createMemberSet(java.util.List mList)
generate an object for a list of members

Specified by:
createMemberSet in interface QuaxUti
Parameters:
mList - list of members
Returns:
null for empty list, single member or set function otherwise
See Also:
QuaxUti.createMemberSet(java.util.List)

memberForObj

public Member memberForObj(java.lang.Object oExp)
return member for exp object

Specified by:
memberForObj in interface QuaxUti
See Also:
QuaxUti.memberForObj(java.lang.Object)

objForMember

public java.lang.Object objForMember(Member member)
Description copied from interface: QuaxUti
Expression Object for member

Specified by:
objForMember in interface QuaxUti
Returns:
exp object for member
See Also:
QuaxUti.objForMember(com.tonbeller.jpivot.olap.model.Member)

objForDim

public java.lang.Object objForDim(Dimension dim)
Description copied from interface: QuaxUti
Expression Object for Dimension

Specified by:
objForDim in interface QuaxUti
Returns:
exp object for dimension
See Also:
QuaxUti.objForDim(com.tonbeller.jpivot.olap.model.Dimension)

dimForMember

public Dimension dimForMember(Member member)
return a members dimension

Specified by:
dimForMember in interface QuaxUti
See Also:
QuaxUti.dimForMember(com.tonbeller.jpivot.olap.model.Member)

hierForMember

public Hierarchy hierForMember(Member member)
Specified by:
hierForMember in interface QuaxUti
Returns:
a members hierarchy
See Also:
QuaxUti.hierForMember(com.tonbeller.jpivot.olap.model.Member)

LevelForObj

public Level LevelForObj(java.lang.Object oLevel)
Specified by:
LevelForObj in interface QuaxUti
Parameters:
oLevel - expression object representing level
Returns:
Level for given Expression Object
See Also:
QuaxUti.LevelForObj(java.lang.Object)

funCallArgCount

public int funCallArgCount(java.lang.Object oFun)
Description copied from interface: QuaxUti
get number of funCall arguments

Specified by:
funCallArgCount in interface QuaxUti
Parameters:
oFun - funcall expression
Returns:
count of a FunCall's arguments
See Also:
QuaxUti.funCallArgCount(java.lang.Object)

funCallArg

public java.lang.Object funCallArg(java.lang.Object oFun,
                                   int index)
return a FunCalls argument of given index

Specified by:
funCallArg in interface QuaxUti
Returns:
argument object
See Also:
QuaxUti.funCallArg(java.lang.Object, int)

funCallName

public java.lang.String funCallName(java.lang.Object oFun)
Description copied from interface: QuaxUti
get funcall name

Specified by:
funCallName in interface QuaxUti
Parameters:
oFun - funcall expression
Returns:
function name
See Also:
QuaxUti.funCallName(java.lang.Object)

addMemberDescendants

public void addMemberDescendants(java.util.List list,
                                 Member member,
                                 Level level,
                                 int[] maxLevel)
check level and add a members descendatns to list

Specified by:
addMemberDescendants in interface QuaxUti

getParentMember

public Member getParentMember(java.lang.Object oExp)
Specified by:
getParentMember in interface QuaxUti
See Also:
QuaxUti.getParentMember(java.lang.Object)

createFunCall

public java.lang.Object createFunCall(java.lang.String function,
                                      java.lang.Object[] args,
                                      int funType)
create FunCall

Specified by:
createFunCall in interface QuaxUti
Parameters:
function - name
args - arguments
funType - FUNTYPE
Returns:
function object
See Also:
QuaxUti.createFunCall(java.lang.String, java.lang.Object[], int)

isFunCallTo

public boolean isFunCallTo(java.lang.Object oExp,
                           java.lang.String function)
Specified by:
isFunCallTo in interface QuaxUti
Returns:
true, if an expression is a FunCall to e specific function
See Also:
QuaxUti.isFunCallTo(Object, String)

checkParent

public boolean checkParent(Member pMember,
                           java.lang.Object cMemObj)
Description copied from interface: QuaxUti
check, whether member is parent of other member

Specified by:
checkParent in interface QuaxUti
Parameters:
pMember - (parent)
Returns:
true if member (2.arg) is child of Member (1.arg)
See Also:
QuaxUti.checkParent(com.tonbeller.jpivot.olap.model.Member, java.lang.Object)

checkChild

public boolean checkChild(Member cMember,
                          java.lang.Object pMemObj)
Description copied from interface: QuaxUti
check, whether member is child of other member

Specified by:
checkChild in interface QuaxUti
Parameters:
cMember - (parent)
Returns:
true if member (1.arg) is child of Member (2.arg)
See Also:
QuaxUti.checkParent(com.tonbeller.jpivot.olap.model.Member, java.lang.Object)

checkDescendantM

public boolean checkDescendantM(Member aMember,
                                Member dMember)
return true if Member (2.arg) is descendant of Member (1.arg)

Specified by:
checkDescendantM in interface QuaxUti
Parameters:
aMember - (ancestor)
dMember - (descendant)
Returns:
true if dMember (2.arg) is descendant of aMember (1.arg)
See Also:
QuaxUti.isDescendantOfMemberInFunCall(Object, com.tonbeller.jpivot.olap.model.Member)

checkDescendantO

public boolean checkDescendantO(Member aMember,
                                java.lang.Object oMember)
return true if Expression (2.arg) is descendant of Member (1.arg)

Specified by:
checkDescendantO in interface QuaxUti
Parameters:
aMember - (ancestor)
oMember - (descendant member object)
Returns:
true if 2.arg is descendant of 1.arg
See Also:
QuaxUti.isDescendantOfMemberInFunCall(Object, com.tonbeller.jpivot.olap.model.Member)

addLevelMembers

public void addLevelMembers(java.util.List list,
                            Level level,
                            int[] maxLevel)
check level and add a levels members to list

Specified by:
addLevelMembers in interface QuaxUti

hierForExp

public Hierarchy hierForExp(java.lang.Object exp)
                     throws Quax.CannotHandleException
determine hierarchy for Exp

Specified by:
hierForExp in interface QuaxUti
Parameters:
oExp -
Returns:
hierarchy
Throws:
Quax.CannotHandleException

levelDepthForMember

public int levelDepthForMember(java.lang.Object oExp)
Description copied from interface: QuaxUti
level depth for member

Specified by:
levelDepthForMember in interface QuaxUti
Parameters:
oExp - - member
Returns:
the depth of a member's level
See Also:
QuaxUti.levelDepthForMember(java.lang.Object)

topLevelMembers

public java.lang.Object topLevelMembers(Hierarchy hier,
                                        boolean expandAllMember)
Specified by:
topLevelMembers in interface QuaxUti
Parameters:
hier - - the Hierarchy
expandAllMember - - if true, an "All" member will be expanded
Returns:
an Expression Object for the top level members of an hierarchy
See Also:
QuaxUti.topLevelMembers(com.tonbeller.jpivot.olap.model.Hierarchy, boolean)

getParentLevel

public Level getParentLevel(Level level)
Specified by:
getParentLevel in interface QuaxUti
Returns:
the parent level of a given level
See Also:
QuaxUti.getParentLevel(com.tonbeller.jpivot.olap.model.Level)

toExp

public mondrian.olap.Exp toExp(java.lang.Object o)
Description copied from interface: QuaxUti
Converts an object to an expression. In particular, adds expression wrappers (MemberExpr, etc.) to olap elements (Member, etc.).

Specified by:
toExp in interface QuaxUti
Parameters:
o - Object, which may or may not be an expression
Returns:
An expression

isMember

public boolean isMember(java.lang.Object oExp)
Specified by:
isMember in interface QuaxUti
Parameters:
oExp - expression
Returns:
true, if exp is member
See Also:
QuaxUti.isMember(java.lang.Object)

isFunCall

public boolean isFunCall(java.lang.Object oExp)
Specified by:
isFunCall in interface QuaxUti
Returns:
true if oExp is a FunCall expression
See Also:
QuaxUti.isFunCall(java.lang.Object)

addMemberSiblings

public void addMemberSiblings(java.util.List list,
                              Member member,
                              int[] maxLevel)
check level and add a member's parents children to list

Specified by:
addMemberSiblings in interface QuaxUti

addMemberChildren

public void addMemberChildren(java.util.List list,
                              Member member,
                              int[] maxLevel)
check level and add a member to list

Specified by:
addMemberChildren in interface QuaxUti

addMemberUncles

public void addMemberUncles(java.util.List list,
                            Member member,
                            int[] maxLevel)
check level and add a member's uncles to list

Specified by:
addMemberUncles in interface QuaxUti

getMemberUniqueName

public java.lang.String getMemberUniqueName(java.lang.Object oExp)
Specified by:
getMemberUniqueName in interface QuaxUti
Returns:
a members unique name
See Also:
QuaxUti.getMemberUniqueName(java.lang.Object)

funString

public java.lang.StringBuffer funString(java.lang.Object oFun)
create String representation for FunCall

Specified by:
funString in interface QuaxUti
Parameters:
oFun -
Returns:

memberString

public java.lang.String memberString(Member[] mPath)
display member array for debugging purposes

Specified by:
memberString in interface QuaxUti
Parameters:
mPath -
Returns:

equalMember

public boolean equalMember(java.lang.Object oExp,
                           Member member)
Specified by:
equalMember in interface QuaxUti
Parameters:
oExp - expression
Returns:
true if expression equals member
See Also:
QuaxUti.equalMember(java.lang.Object, com.tonbeller.jpivot.olap.model.Member)

canHandle

public boolean canHandle(java.lang.Object oExp)
check an expression whether we can handle it (expand, collapse) currently we can basically handle following FunCalls member.children, member.descendants, level.members

Specified by:
canHandle in interface QuaxUti
See Also:
QuaxUti.canHandle(java.lang.Object)

getChildren

public java.lang.Object[] getChildren(java.lang.Object oMember)
Description copied from interface: QuaxUti
determine the children of a member object

Specified by:
getChildren in interface QuaxUti
Returns:
member children
See Also:
QuaxUti.getChildren(java.lang.Object)

getLevelMembers

public java.lang.Object[] getLevelMembers(Level level)
Description copied from interface: QuaxUti
get the members of a level

Specified by:
getLevelMembers in interface QuaxUti
Returns:
members of level