mondrian.rolap
Interface StarColumnPredicate

All Superinterfaces:
StarPredicate
All Known Implementing Classes:
AbstractColumnPredicate, ListColumnPredicate, LiteralStarPredicate, MemberColumnPredicate, MinusStarPredicate, RangeColumnPredicate, ValueColumnPredicate

public interface StarColumnPredicate
extends StarPredicate

Refinement of StarPredicate which constrains precisely one column.

Since:
Jan 15, 2007
Author:
jhyde
 

Nested Class Summary
static class StarColumnPredicate.Overlap
          Returned by intersect(mondrian.rolap.StarColumnPredicate), describes whether two predicates overlap, and if so, the remaining predicate.
 
Field Summary
 
Fields inherited from interface mondrian.rolap.StarPredicate
WILDCARD
 
Method Summary
 StarColumnPredicate cloneWithColumn(RolapStar.Column column)
          This method is required because unfortunately some ColumnPredicate objects are created without a column.
 boolean evaluate(Object value)
          Returns whether this constraint would return true for a given value.
 RolapStar.Column getConstrainedColumn()
          Returns the column constrained by this predicate.
 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.
 StarColumnPredicate orColumn(StarColumnPredicate predicate)
          Returns this union of this Predicate with another.
 void values(Collection<Object> collection)
          Adds the values in this constraint to a collection.
 
Methods inherited from interface mondrian.rolap.StarPredicate
and, describe, equalConstraint, evaluate, getConstrainedColumnBitKey, getConstrainedColumnList, or, toSql
 

Method Detail

values

void values(Collection<Object> collection)
Adds the values in this constraint to a collection.

Parameters:
collection - Collection to add values to

evaluate

boolean evaluate(Object value)
Returns whether this constraint would return true for a given value.

Parameters:
value - Value
Returns:
Whether predicate is true

getConstrainedColumn

RolapStar.Column getConstrainedColumn()
Returns the column constrained by this predicate.

Returns:
Column constrained by this predicate.

intersect

StarColumnPredicate.Overlap intersect(StarColumnPredicate predicate)
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

boolean mightIntersect(StarPredicate other)
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

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 interface StarPredicate
Parameters:
predicate - Predicate
Returns:
Combined predicate

orColumn

StarColumnPredicate orColumn(StarColumnPredicate predicate)
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.

Parameters:
predicate - Another predicate on this column
Returns:
Union predicate on this column

cloneWithColumn

StarColumnPredicate cloneWithColumn(RolapStar.Column column)
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 1767776 and bug 1767779 are fixed.


SourceForge.net_Logo