blob: 82310e03d985639bd09c73f3938c1354dd39ae99 [file] [log] [blame]
/*
* Copyright (c) 2011, 2021 Oracle and/or its affiliates. All rights reserved.
*
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License v. 2.0 which is available at
* http://www.eclipse.org/legal/epl-2.0,
* or the Eclipse Distribution License v. 1.0 which is available at
* http://www.eclipse.org/org/documents/edl-v10.php.
*
* SPDX-License-Identifier: EPL-2.0 OR BSD-3-Clause
*/
// Contributors:
// Oracle - initial API and implementation
//
package org.eclipse.persistence.jpa.jpql.tools.model;
import org.eclipse.persistence.jpa.jpql.parser.TrimExpression.Specification;
import org.eclipse.persistence.jpa.jpql.tools.model.query.SimpleSelectStatementStateObject;
import org.eclipse.persistence.jpa.jpql.tools.model.query.StateObject;
/**
* @version 2.4
* @since 2.4
* @author Pascal Filion
*/
public interface IAbstractConditionalExpressionStateObjectBuilder<T extends IScalarExpressionStateObjectBuilder<T>> extends IScalarExpressionStateObjectBuilder<T> {
/**
* Creates the expression <code><b>ALL(subquery)</b></code>.
*
* @param subquery The already constructed subquery
* @return This builder
*/
T all(SimpleSelectStatementStateObject subquery);
/**
* Creates the expression <code><b>x AND y</b></code>.
*
* @param builder The right side of the logical expression
* @return This builder
*/
T and(T builder);
/**
* Creates the expression <code><b>ANY(subquery)</b></code>.
*
* @param subquery The already constructed subquery
* @return This builder
*/
T any(SimpleSelectStatementStateObject subquery);
/**
* Creates the expression <code><b>x BETWEEN y AND z</b></code>.
*
* @param lowerBoundExpression The lower bound expression
* @param upperBoundExpression The upper bound expression
* @return This builder
*/
T between(T lowerBoundExpression, T upperBoundExpression);
/**
* Creates a new collection-valued path expression.
*
* @param path The collection-valued path expression
* @return This builder
*/
T collectionPath(String path);
T different(Number number);
T different(String literal);
T different(T builder);
T equal(Number number);
T equal(String literal);
T equal(T builder);
T exists(SimpleSelectStatementStateObject subquery);
T FALSE();
T greaterThan(Number number);
T greaterThan(String literal);
T greaterThan(T builder);
T greaterThanOrEqual(Number number);
T greaterThanOrEqual(String literal);
T greaterThanOrEqual(T builder);
T in(SimpleSelectStatementStateObject subquery);
T in(String... inItems);
T in(T builder);
T in(T builder1, T builder2);
T isEmpty(String path);
T isNotEmpty(String path);
T isNotNull(String path);
T isNull(String path);
T like(String patternValue);
T like(T patternValue);
T like(T patternValue, String escapeCharacter);
T lower(T builder);
T lowerThan(Number number);
T lowerThan(String literal);
T lowerThan(T builder);
T lowerThanOrEqual(Number number);
T lowerThanOrEqual(String literal);
T lowerThanOrEqual(T builder);
T member(String path);
T memberOf(String path);
T notBetween(T lowerBoundExpression, T upperBoundExpression);
T notExists(SimpleSelectStatementStateObject subquery);
T notIn(SimpleSelectStatementStateObject subquery);
T notIn(String... inItems);
T notIn(T builder);
T notIn(T builder1, T builder2);
T notLike(String patternValue);
T notLike(T builder);
T notLike(T builder, String escapeCharacter);
T notMember(String path);
T notMemberOf(String path);
T NULL();
T or(T builder);
T some(SimpleSelectStatementStateObject subquery);
T sub(StateObject stateObject);
T substring(T parameter1, T parameter2, T parameter3);
T trim(Specification specification, String trimCharacter, T builder);
T trim(Specification specification, T builder);
T TRUE();
T upper(T builder);
/**
* Creates the expression representing an identification variable.
*
* @param variable The identification variable
* @return This builder
*/
T variable(String variable);
}