Class QQueryFilter

java.lang.Object
com.kingsrook.qqq.backend.core.model.actions.tables.query.QQueryFilter
All Implemented Interfaces:
QMetaDataObject, Serializable, Cloneable

public class QQueryFilter extends Object implements Serializable, Cloneable, QMetaDataObject
Full "filter" for a query - a list of criteria and order-bys
See Also:
  • Constructor Details

    • QQueryFilter

      public QQueryFilter()
      Constructor
    • QQueryFilter

      public QQueryFilter(QFilterCriteria... criteria)
      Constructor
  • Method Details

    • clone

      public QQueryFilter clone()
      Overrides:
      clone in class Object
    • hasAnyCriteria

      public boolean hasAnyCriteria()
      recursively look at both this filter, and any sub-filters it may have.
    • getCriteria

      public List<QFilterCriteria> getCriteria()
      Getter for criteria
    • setCriteria

      public void setCriteria(List<QFilterCriteria> criteria)
      Setter for criteria
    • getOrderBys

      public List<QFilterOrderBy> getOrderBys()
      Getter for order
    • setOrderBys

      public void setOrderBys(List<QFilterOrderBy> orderBys)
      Setter for order
    • addCriteria

      public void addCriteria(QFilterCriteria qFilterCriteria)
    • withCriteria

      public QQueryFilter withCriteria(QFilterCriteria qFilterCriteria)
    • withCriteria

      public QQueryFilter withCriteria(String fieldName, QCriteriaOperator operator, Collection<? extends Serializable> values)
      fluent method to add a new criteria
    • withCriteria

      public QQueryFilter withCriteria(String fieldName, QCriteriaOperator operator, Serializable... values)
      fluent method to add a new criteria
    • addOrderBy

      public void addOrderBy(QFilterOrderBy qFilterOrderBy)
    • withOrderBy

      public QQueryFilter withOrderBy(QFilterOrderBy qFilterOrderBy)
    • getBooleanOperator

      public QQueryFilter.BooleanOperator getBooleanOperator()
      Getter for booleanOperator
    • setBooleanOperator

      public void setBooleanOperator(QQueryFilter.BooleanOperator booleanOperator)
      Setter for booleanOperator
    • withBooleanOperator

      public QQueryFilter withBooleanOperator(QQueryFilter.BooleanOperator booleanOperator)
      Fluent setter for booleanOperator
    • getSubFilters

      public List<QQueryFilter> getSubFilters()
      Getter for subFilters
    • setSubFilters

      public void setSubFilters(List<QQueryFilter> subFilters)
      Setter for subFilters
    • withSubFilters

      public QQueryFilter withSubFilters(List<QQueryFilter> subFilters)
      Fluent setter for subFilters
    • withSubFilter

      public QQueryFilter withSubFilter(QQueryFilter subFilter)
      Fluent setter for adding a single subFilter
    • addSubFilter

      public void addSubFilter(QQueryFilter subFilter)
    • toString

      public String toString()
      Overrides:
      toString in class Object
    • prepForBackend

      public void prepForBackend()
      Replaces any FilterVariables' variableNames with one constructed from the field name, criteria, and index, camel style
    • interpretValues

      public void interpretValues(Map<String,Serializable> inputValues) throws QException
      Replace any criteria values that look like ${input.XXX} with the value of XXX from the supplied inputValues map. Note - it may be very important that you call this method on a clone of a QQueryFilter - e.g., if it's one that defined in metaData, and that we don't want to be (permanently) changed!! This overload does not take in a FilterUseCase - it uses FilterUseCase.DEFAULT
      Throws:
      QException
    • interpretValues

      public void interpretValues(Map<String,Map<String,Serializable>> valueMap, FilterUseCase useCase) throws QException
      Replace any criteria values that look like ${input.XXX} with the value of XXX from the supplied valueMap map - where the handling of missing values is specified in the inputted FilterUseCase parameter input values is a map of maps, so that more than one 'inputValue' map can be used e.g. MapBuilder.of("input", valueMap, "processValues", processValues) Note - it may be very important that you call this method on a clone of a QQueryFilter - e.g., if it's one that defined in metaData, and that we don't want to be (permanently) changed!!
      Throws:
      QException
    • getSkip

      public Integer getSkip()
      Getter for skip
    • setSkip

      public void setSkip(Integer skip)
      Setter for skip
    • withSkip

      public QQueryFilter withSkip(Integer skip)
      Fluent setter for skip
    • getLimit

      public Integer getLimit()
      Getter for limit
    • setLimit

      public void setLimit(Integer limit)
      Setter for limit
    • withLimit

      public QQueryFilter withLimit(Integer limit)
      Fluent setter for limit
    • equals

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

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

      public QQueryFilter.SubFilterSetOperator getSubFilterSetOperator()
      Getter for subFilterSetOperator
    • setSubFilterSetOperator

      public void setSubFilterSetOperator(QQueryFilter.SubFilterSetOperator subFilterSetOperator)
      Setter for subFilterSetOperator
    • withSubFilterSetOperator

      public QQueryFilter withSubFilterSetOperator(QQueryFilter.SubFilterSetOperator subFilterSetOperator)
      Fluent setter for subFilterSetOperator
    • applyCriteriaOptionToAllCriteria

      public void applyCriteriaOptionToAllCriteria(CriteriaOptionInterface criteriaOption)