All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.querydsl.core.QueryMetadata Maven / Gradle / Ivy

There is a newer version: 6.8
Show newest version
/*
 * Copyright 2015, The Querydsl Team (http://www.querydsl.com/team)
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 * http://www.apache.org/licenses/LICENSE-2.0
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package com.querydsl.core;

import com.querydsl.core.types.Expression;
import com.querydsl.core.types.OrderSpecifier;
import com.querydsl.core.types.ParamExpression;
import com.querydsl.core.types.Predicate;
import java.io.Serializable;
import java.util.List;
import java.util.Map;
import java.util.Set;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.annotations.Unmodifiable;

/**
 * {@code QueryMetadata} defines query metadata such as query sources, filtering conditions and the
 * projection
 *
 * @author tiwe
 */
public interface QueryMetadata extends Serializable {

  /**
   * Add the given group by expressions
   *
   * @param o group by expressions
   */
  void addGroupBy(Expression o);

  /**
   * Add the given having expressions
   *
   * @param o having conditions
   */
  void addHaving(Predicate o);

  /**
   * Add the given query join
   *
   * @param joinType type of join
   * @param expr join target
   */
  void addJoin(JoinType joinType, Expression expr);

  /**
   * Add the given join flag to the last given join
   *
   * @param flag join flag
   */
  void addJoinFlag(JoinFlag flag);

  /**
   * Add the given join condition to the last given join
   *
   * @param o join condition
   */
  void addJoinCondition(Predicate o);

  /**
   * Add the given order specifiers
   *
   * @param o order
   */
  void addOrderBy(OrderSpecifier o);

  /**
   * Add the given where expressions
   *
   * @param o where condition
   */
  void addWhere(Predicate o);

  /** Clear the order expressions */
  void clearOrderBy();

  /** Clear the where expressions */
  void clearWhere();

  /**
   * Clone this QueryMetadata instance
   *
   * @return new QueryMetadata instance with cloned state
   */
  QueryMetadata clone();

  /**
   * Get the group by expressions
   *
   * @return group by
   */
  @Unmodifiable
  List> getGroupBy();

  /**
   * Get the having expressions
   *
   * @return having condition, or null if none set
   */
  @Nullable
  Predicate getHaving();

  /**
   * Get the query joins
   *
   * @return joins
   */
  @Unmodifiable
  List getJoins();

  /**
   * Get the QueryModifiers
   *
   * @return modifiers
   */
  QueryModifiers getModifiers();

  /**
   * Get the OrderSpecifiers
   *
   * @return order by
   */
  @Unmodifiable
  List> getOrderBy();

  /**
   * Get the projection
   *
   * @return projection
   */
  @Nullable
  Expression getProjection();

  /**
   * Get the parameter bindings
   *
   * @return parameter bindings
   */
  @Unmodifiable
  Map, Object> getParams();

  /**
   * Get the expressions aggregated into a single boolean expression or null, if none where defined
   *
   * @return where condition or null, if none set
   */
  @Nullable
  Predicate getWhere();

  /**
   * Get whether the projection is distinct
   *
   * @return distinct
   */
  boolean isDistinct();

  /**
   * Get whether the projection is unique
   *
   * @return unique
   */
  boolean isUnique();

  /** Reset the projection */
  void reset();

  /**
   * Set the distinct flag
   *
   * @param distinct distinct
   */
  void setDistinct(boolean distinct);

  /**
   * Set the maximum number of rows
   *
   * @param limit limit
   */
  void setLimit(@Nullable Long limit);

  /**
   * Set the query modifiers limit and offset
   *
   * @param restriction restriction
   */
  void setModifiers(QueryModifiers restriction);

  /**
   * Set the number of skipped rows
   *
   * @param offset offset
   */
  void setOffset(@Nullable Long offset);

  /**
   * Set the unique flag
   *
   * @param unique unique
   */
  void setUnique(boolean unique);

  /**
   * Bind the value for the given parameter expression
   *
   * @param  binding type
   * @param param parameter
   * @param value binding
   */
   void setParam(ParamExpression param, T value);

  /**
   * Set the projection
   *
   * @param o projection
   */
  void setProjection(Expression o);

  /**
   * Add the given query flag
   *
   * @param flag query flag
   */
  void addFlag(QueryFlag flag);

  /**
   * Return whether the given query flag is applied
   *
   * @param flag query flag
   * @return true, if present, false, if not
   */
  boolean hasFlag(QueryFlag flag);

  /**
   * Remove the given query flag
   *
   * @param flag query flag
   */
  void removeFlag(QueryFlag flag);

  /**
   * Get all query flags
   *
   * @return all used query flags
   */
  @Unmodifiable
  Set getFlags();

  /**
   * Set the validate flag
   *
   * @param v validate
   */
  void setValidate(boolean v);
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy