mondrian.rolap.agg
Class ValueColumnPredicate

java.lang.Object
  extended by mondrian.rolap.agg.AbstractColumnPredicate
      extended by 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
ValueColumnPredicate(RolapStar.Column constrainedColumn, Object value)
          Creates a column constraint.
 
Method Summary
 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 a StringBuilder.
 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 return true 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
 
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
 

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 is Comparable 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 class AbstractColumnPredicate

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 than Object.equals(Object): it is possible for two different members to constrain the same column in the same way.

Specified by:
equalConstraint in interface StarPredicate
Overrides:
equalConstraint in class AbstractColumnPredicate
Parameters:
that - Other predicate
Returns:
whether the other predicate is equivalent

compareTo

public int compareTo(Object o)
Specified by:
compareTo in interface Comparable

equals

public boolean equals(Object other)
Overrides:
equals in class Object

hashCode

public int hashCode()
Overrides:
hashCode in class Object

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 interface StarColumnPredicate
Parameters:
collection - Collection to add values to

evaluate

public boolean evaluate(Object value)
Description copied from interface: StarColumnPredicate
Returns whether this constraint would return true for a given value.

Specified by:
evaluate in interface StarColumnPredicate
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 a StringBuilder. For example:

Specified by:
describe in interface StarPredicate
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 interface StarColumnPredicate
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 interface StarColumnPredicate
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 interface StarColumnPredicate
Specified by:
minus in interface StarPredicate
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 1767776 and bug 1767779 are fixed.

Specified by:
cloneWithColumn in interface StarColumnPredicate

toSql

public void toSql(SqlQuery sqlQuery,
                  StringBuilder buf)
Specified by:
toSql in interface StarPredicate
Overrides:
toSql in class AbstractColumnPredicate

checkInList

public BitKey checkInList(BitKey inListLHSBitKey)

toInListSql

public void toInListSql(SqlQuery sqlQuery,
                        StringBuilder buf)

SourceForge.net_Logo