Class NotDimFilter

All Implemented Interfaces:
Cacheable, DimFilter

public class NotDimFilter extends AbstractOptimizableDimFilter implements DimFilter
  • Constructor Details

    • NotDimFilter

      public NotDimFilter(DimFilter field)
  • Method Details

    • of

      public static NotDimFilter of(DimFilter field)
    • getField

      public DimFilter getField()
    • getCacheKey

      public byte[] getCacheKey()
      Description copied from interface: Cacheable
      Get a byte array used as a cache key.
      Specified by:
      getCacheKey in interface Cacheable
      Returns:
      bytes to be used as cache key - or null if this object should not be cached.
    • optimize

      public DimFilter optimize(boolean mayIncludeUnknown)
      Description copied from interface: DimFilter
      Returns an optimized version of this filter.
      Specified by:
      optimize in interface DimFilter
      Overrides:
      optimize in class AbstractOptimizableDimFilter
      Parameters:
      mayIncludeUnknown - whether the optimized filter may need to operate in "includeUnknown" mode.
    • toFilter

      public Filter toFilter()
      Description copied from interface: DimFilter
      Returns a Filter that implements this DimFilter. This does not generally involve optimizing the DimFilter, so it does make sense to optimize first and then call toFilter on the resulting DimFilter.
      Specified by:
      toFilter in interface DimFilter
      Returns:
      a Filter that implements this DimFilter, or null if this DimFilter is a no-op.
    • getDimensionRangeSet

      public com.google.common.collect.RangeSet<String> getDimensionRangeSet(String dimension)
      There are some special cases involving null that require special casing for And and Or instead of simply taking the complement Example 1 : "NOT ( [0,INF) OR null)" The inside of NOT would evaluate to null, and the complement would also be null. However, by breaking the NOT, this statement is "NOT([0,INF)) AND NOT(null)", which means it should actually evaluate to (-INF, 0). Example 2 : "NOT ( [0,INF) AND null )" The inside of NOT would evaluate to [0,INF), and the complement would be (-INF, 0). However the statement is actually "NOT([0,INF)) OR NOT(null)", and it should be evaluated to null.
      Specified by:
      getDimensionRangeSet in interface DimFilter
      Parameters:
      dimension - name of the dimension to get range for
      Returns:
      a RangeSet that represent the possible range of the input dimension, or null if it is not possible to determine for this DimFilter.
    • getRequiredColumns

      public Set<String> getRequiredColumns()
      Specified by:
      getRequiredColumns in interface DimFilter
      Returns:
      a HashSet that represents all columns' name which the DimFilter required to do filter.
    • equals

      public boolean equals(Object o)
      Overrides:
      equals in class Object
    • hashCode

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

      public String toString()
      Overrides:
      toString in class Object