Package mondrian.rolap.agg
Class ListColumnPredicate
java.lang.Object
mondrian.rolap.agg.AbstractColumnPredicate
mondrian.rolap.agg.ListColumnPredicate
- All Implemented Interfaces:
StarColumnPredicate
,StarPredicate
Predicate which is the union of a list of predicates, each of which applies
to the same, single column. It evaluates to
true if any of the predicates evaluates to true.
- Since:
- Nov 2, 2006
- Author:
- jhyde
- See Also:
-
Nested Class Summary
Nested classes/interfaces inherited from class mondrian.rolap.agg.AbstractColumnPredicate
AbstractColumnPredicate.Factory
Nested classes/interfaces inherited from interface mondrian.rolap.StarColumnPredicate
StarColumnPredicate.Overlap
-
Field Summary
Fields inherited from class mondrian.rolap.agg.AbstractColumnPredicate
constrainedColumn
Fields inherited from interface mondrian.rolap.StarPredicate
WILDCARD
-
Constructor Summary
ConstructorDescriptionListColumnPredicate
(RolapStar.Column column, List<StarColumnPredicate> list) Creates a ListColumnPredicate -
Method Summary
Modifier and TypeMethodDescriptioncloneWithColumn
(RolapStar.Column column) This method is required because unfortunately some ColumnPredicate objects are created without a column.void
describe
(StringBuilder buf) Appends a description of this predicate to aStringBuilder
.boolean
equalConstraint
(StarPredicate that) Returns whether this Predicate has the same constraining effect as the other constraint.boolean
boolean
Returns whether this constraint would returntrue
for a given value.Returns the list of child predicates.int
hashCode()
intersect
(StarColumnPredicate predicate) Applies this predicate to a predicate from the axis of a segment, and tests for overlap.boolean
mightIntersect
(StarPredicate other) Returns whether this predicate might intersect another predicate.minus
(StarPredicate predicate) Returns the logical inverse of this Predicate.orColumn
(StarColumnPredicate predicate) Returns this union of this Predicate with another.void
toSql
(SqlQuery sqlQuery, StringBuilder buf) void
values
(Collection<Object> collection) Adds the values in this constraint to a collection.Methods inherited from class mondrian.rolap.agg.AbstractColumnPredicate
and, cloneListWithColumn, evaluate, getConstrainedColumn, getConstrainedColumnBitKey, getConstrainedColumnList, or, toString
-
Constructor Details
-
ListColumnPredicate
Creates a ListColumnPredicate- Parameters:
column
- Column being constrainedlist
- List of child predicates
-
-
Method Details
-
getPredicates
Returns the list of child predicates.- Returns:
- list of child predicates
-
hashCode
public int hashCode() -
equals
-
values
Description copied from interface:StarColumnPredicate
Adds the values in this constraint to a collection.- Parameters:
collection
- Collection to add values to
-
evaluate
Description copied from interface:StarColumnPredicate
Returns whether this constraint would returntrue
for a given value.- Parameters:
value
- Value- Returns:
- Whether predicate is true
-
equalConstraint
Description copied from interface:StarPredicate
Returns whether this Predicate has the same constraining effect as the other constraint. This is weaker thanObject.equals(Object)
: it is possible for two different members to constrain the same column in the same way.- Specified by:
equalConstraint
in interfaceStarPredicate
- Overrides:
equalConstraint
in classAbstractColumnPredicate
- Parameters:
that
- Other predicate- Returns:
- whether the other predicate is equivalent
-
describe
Description copied from interface:StarPredicate
Appends a description of this predicate to aStringBuilder
. For example:- =any
- =5
- in (2, 4, 6)
- Parameters:
buf
- Builder to append to
-
intersect
Description copied from interface:StarColumnPredicate
Applies this predicate to a predicate from the axis of a segment, and tests for overlap. The result might be that there is no overlap, full overlap (so the constraint can be removed), or partial overlap (so the constraint will need to be replaced with a stronger constraint, say 'x > 10' is replaced with 'x > 20').- Parameters:
predicate
- Predicate- Returns:
- description of overlap between predicates, if any
-
mightIntersect
Description copied from interface:StarColumnPredicate
Returns whether this predicate might intersect another predicate. That is, whether there might be a value which holds true for both constraints.- Parameters:
other
- Other constraint- Returns:
- Whether constraints intersect
-
minus
Description copied from interface:StarPredicate
Returns the logical inverse of this Predicate. The result is a Predicate which holds whenever this predicate holds but the other does not.- Parameters:
predicate
- Predicate- Returns:
- Combined predicate
-
orColumn
Description copied from interface:StarColumnPredicate
Returns this union of this Predicate with another.Unlike
StarPredicate.or(mondrian.rolap.StarPredicate)
, the other predicate must be on this column, and the result is a column predicate.- Specified by:
orColumn
in interfaceStarColumnPredicate
- Overrides:
orColumn
in classAbstractColumnPredicate
- Parameters:
predicate
- Another predicate on this column- Returns:
- Union predicate on this column
-
cloneWithColumn
Description copied from interface:StarColumnPredicate
This method is required because unfortunately some ColumnPredicate objects are created without a column.We call this method to provide a fake column, then call
StarPredicate.toSql(mondrian.rolap.sql.SqlQuery, StringBuilder)
.todo: remove this method when
bug MONDRIAN-313
andbug MONDRIAN-314
are fixed. -
toSql
- Specified by:
toSql
in interfaceStarPredicate
- Overrides:
toSql
in classAbstractColumnPredicate
-