Package mondrian.rolap.agg
Class RangeColumnPredicate
- java.lang.Object
-
- mondrian.rolap.agg.AbstractColumnPredicate
-
- mondrian.rolap.agg.RangeColumnPredicate
-
- All Implemented Interfaces:
StarColumnPredicate
,StarPredicate
public class RangeColumnPredicate extends AbstractColumnPredicate
Predicate constraining a column to be greater than or less than a given bound, or between a pair of bounds.- Since:
- Nov 26, 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 RangeColumnPredicate(RolapStar.Column column, boolean lowerInclusive, ValueColumnPredicate lowerBound, boolean upperInclusive, ValueColumnPredicate upperBound)
Creates a RangeColumnPredicate.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description StarColumnPredicate
cloneWithColumn(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
equals(Object obj)
boolean
evaluate(Object value)
Returns whether this constraint would returntrue
for a given value.ValueColumnPredicate
getLowerBound()
boolean
getLowerInclusive()
ValueColumnPredicate
getUpperBound()
boolean
getUpperInclusive()
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
values(Collection<Object> collection)
Adds the values in this constraint to a collection.-
Methods inherited from class mondrian.rolap.agg.AbstractColumnPredicate
and, cloneListWithColumn, equalConstraint, evaluate, getConstrainedColumn, getConstrainedColumnBitKey, getConstrainedColumnList, or, orColumn, toSql, toString
-
-
-
-
Constructor Detail
-
RangeColumnPredicate
public RangeColumnPredicate(RolapStar.Column column, boolean lowerInclusive, ValueColumnPredicate lowerBound, boolean upperInclusive, ValueColumnPredicate upperBound)
Creates a RangeColumnPredicate.- Parameters:
column
- Constrained columnlowerInclusive
- Whether range includes the lower bound; must be false if not bounded belowlowerBound
- Lower bound, or null if not bounded belowupperInclusive
- Whether range includes the upper bound; must be false if not bounded aboveupperBound
- Upper bound, or null if not bounded above
-
-
Method Detail
-
values
public void values(Collection<Object> collection)
Description copied from interface:StarColumnPredicate
Adds the values in this constraint to a collection.- 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.- 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)
- 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').- 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.- 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.- 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.
-
getLowerBound
public ValueColumnPredicate getLowerBound()
-
getLowerInclusive
public boolean getLowerInclusive()
-
getUpperBound
public ValueColumnPredicate getUpperBound()
-
getUpperInclusive
public boolean getUpperInclusive()
-
-