Package mondrian.rolap.agg
Class ValueColumnPredicate
- java.lang.Object
-
- mondrian.rolap.agg.AbstractColumnPredicate
-
- mondrian.rolap.agg.ValueColumnPredicate
-
- All Implemented Interfaces:
Comparable
,StarColumnPredicate
,StarPredicate
- Direct Known Subclasses:
MemberColumnPredicate
public class ValueColumnPredicate extends AbstractColumnPredicate implements Comparable
A constraint which requires a column to have a particular value.- Since:
- Nov 2, 2006
- Author:
- jhyde
-
-
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
Constructors Constructor Description ValueColumnPredicate(RolapStar.Column constrainedColumn, Object value)
Creates a column constraint.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description BitKey
checkInList(BitKey inListLHSBitKey)
StarColumnPredicate
cloneWithColumn(RolapStar.Column column)
This method is required because unfortunately some ColumnPredicate objects are created without a column.int
compareTo(Object o)
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
equals(Object other)
boolean
evaluate(Object value)
Returns whether this constraint would returntrue
for a given value.Object
getValue()
Returns the value which the column is compared to.int
hashCode()
StarColumnPredicate.Overlap
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.StarColumnPredicate
minus(StarPredicate predicate)
Returns the logical inverse of this Predicate.void
toInListSql(SqlQuery sqlQuery, StringBuilder buf)
void
toSql(SqlQuery sqlQuery, StringBuilder buf)
String
toString()
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, orColumn
-
-
-
-
Constructor Detail
-
ValueColumnPredicate
public ValueColumnPredicate(RolapStar.Column constrainedColumn, Object value)
Creates a column constraint.- Parameters:
value
- Value to constraint the column to. (We require that it isComparable
because we will sort the values in order to generate deterministic SQL.)
-
-
Method Detail
-
getValue
public Object getValue()
Returns the value which the column is compared to.
-
toString
public String toString()
- Overrides:
toString
in classAbstractColumnPredicate
-
equalConstraint
public boolean equalConstraint(StarPredicate that)
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
-
compareTo
public int compareTo(Object o)
- Specified by:
compareTo
in interfaceComparable
-
values
public void values(Collection<Object> collection)
Description copied from interface:StarColumnPredicate
Adds the values in this constraint to a collection.- Specified by:
values
in interfaceStarColumnPredicate
- Parameters:
collection
- Collection to add values to
-
evaluate
public boolean evaluate(Object value)
Description copied from interface:StarColumnPredicate
Returns whether this constraint would returntrue
for a given value.- Specified by:
evaluate
in interfaceStarColumnPredicate
- Parameters:
value
- Value- Returns:
- Whether predicate is true
-
describe
public void describe(StringBuilder buf)
Description copied from interface:StarPredicate
Appends a description of this predicate to aStringBuilder
. For example:- =any
- =5
- in (2, 4, 6)
- Specified by:
describe
in interfaceStarPredicate
- Parameters:
buf
- Builder to append to
-
intersect
public StarColumnPredicate.Overlap intersect(StarColumnPredicate predicate)
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').- Specified by:
intersect
in interfaceStarColumnPredicate
- Parameters:
predicate
- Predicate- Returns:
- description of overlap between predicates, if any
-
mightIntersect
public boolean mightIntersect(StarPredicate other)
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.- Specified by:
mightIntersect
in interfaceStarColumnPredicate
- Parameters:
other
- Other constraint- Returns:
- Whether constraints intersect
-
minus
public StarColumnPredicate minus(StarPredicate predicate)
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.- Specified by:
minus
in interfaceStarColumnPredicate
- Specified by:
minus
in interfaceStarPredicate
- Parameters:
predicate
- Predicate- Returns:
- Combined predicate
-
cloneWithColumn
public StarColumnPredicate cloneWithColumn(RolapStar.Column column)
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.- Specified by:
cloneWithColumn
in interfaceStarColumnPredicate
-
toSql
public void toSql(SqlQuery sqlQuery, StringBuilder buf)
- Specified by:
toSql
in interfaceStarPredicate
- Overrides:
toSql
in classAbstractColumnPredicate
-
toInListSql
public void toInListSql(SqlQuery sqlQuery, StringBuilder buf)
-
-