Class ListColumnPredicate

java.lang.Object
mondrian.rolap.agg.AbstractColumnPredicate
mondrian.rolap.agg.ListColumnPredicate
All Implemented Interfaces:
StarColumnPredicate, StarPredicate

public class ListColumnPredicate extends AbstractColumnPredicate
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:
  • Constructor Details

    • ListColumnPredicate

      public ListColumnPredicate(RolapStar.Column column, List<StarColumnPredicate> list)
      Creates a ListColumnPredicate
      Parameters:
      column - Column being constrained
      list - List of child predicates
  • Method Details

    • getPredicates

      public List<StarColumnPredicate> getPredicates()
      Returns the list of child predicates.
      Returns:
      list of child predicates
    • hashCode

      public int hashCode()
      Overrides:
      hashCode in class Object
    • equals

      public boolean equals(Object obj)
      Overrides:
      equals in class Object
    • 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 return true for a given value.
      Parameters:
      value - Value
      Returns:
      Whether predicate is true
    • 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
    • describe

      public void describe(StringBuilder buf)
      Description copied from interface: StarPredicate
      Appends a description of this predicate to a StringBuilder. 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
    • orColumn

      public StarColumnPredicate orColumn(StarColumnPredicate predicate)
      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 interface StarColumnPredicate
      Overrides:
      orColumn in class AbstractColumnPredicate
      Parameters:
      predicate - Another predicate on this column
      Returns:
      Union predicate on this column
    • 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 and bug MONDRIAN-314 are fixed.

    • toSql

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