org.apache.openjpa.persistence.query.Expression Maven / Gradle / Ivy
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you 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 org.apache.openjpa.persistence.query;
/**
* Instances of this interface can be used either as select list items or as
* predicate operands.
*/
public interface Expression extends SelectItem, PredicateOperand {
/*
* Conditional predicates over expression items
*/
/**
* Create a predicate for testing whether the expression is a member of the
* association or element collection denoted by the path expression. The
* argument must correspond to a collection-valued association or element
* collection of like type.
*
* @param arg -
* a path expression that specifies a collection-valued
* association or an element collection
* @return conditional predicate
*/
Predicate member(PathExpression arg);
/**
* Create a predicate for testing whether the value of the expression is
* null.
*
* @return conditional predicate
*/
Predicate isNull();
/**
* Create a predicate for testing whether the expression value is a member
* of the argument list.
*
* @param strings
* @return conditional predicate
*/
Predicate in(String... strings);
/**
* Create a predicate for testing whether the expression value is a member
* of the argument list.
*
* @param nums
* @return conditional predicate
*/
Predicate in(Number... nums);
/**
* Create a predicate for testing whether the expression value is a member
* of the argument list.
*
* @param enums
* @return conditional predicate
*/
Predicate in(Enum>... enums);
/**
* Create a predicate for testing whether the expression value is a member
* of the argument list.
*
* @param classes
* @return conditional predicate
*/
Predicate in(Class... classes);
/**
* Create a predicate for testing whether the expression value is a member
* of the argument list.
*
* @param params
* @return conditional predicate
*/
Predicate in(Expression... params);
/**
* Create a predicate for testing whether the expression value is a member
* of a subquery result.
*
* @param subquery
* @return conditional predicate
*/
Predicate in(Subquery subquery);
/*
* Operations on strings
*/
/**
* String length This method must be invoked on an expression corresponding
* to a string.
*
* @return expression denoting the length of the string.
*/
Expression length();
/**
* Concatenate a string with other string(s). This method must be invoked on
* an expression corresponding to a string.
*
* @param str -
* string(s)
* @return expression denoting the concatenation of the strings, starting
* with the string corresponding to the expression on which the
* method was invoked.
*/
Expression concat(String... str);
/**
* Concatenate a string with other string(s). This method must be invoked on
* an expression corresponding to a string.
*
* @param str -
* expression(s) corresponding to string(s)
* @return expression denoting the concatenation of the strings, starting
* with the string corresponding to the expression on which the
* method was invoked.
*/
Expression concat(Expression... str);
/**
* Extract a substring starting at specified position through to the end of
* the string. This method must be invoked on an expression corresponding to
* a string.
*
* @param start -
* start position (1 indicates first position)
* @return expression denoting the extracted substring
*/
Expression substring(int start);
/**
* Extract a substring starting at specified position through to the end of
* the string. This method must be invoked on an expression corresponding to
* a string.
*
* @param start -
* expression denoting start position (1 indicates first
* position)
* @return expression denoting the extracted substring
*/
Expression substring(Expression start);
/**
* Extract a substring. This method must be invoked on an expression
* corresponding to a string.
*
* @param start -
* start position (1 indicates first position)
* @param len -
* length of the substring to be returned
* @return expression denoting the extracted substring
*/
Expression substring(int start, int len);
/**
* Extract a substring. This method must be invoked on an expression
* corresponding to a string.
*
* @param start -
* start position (1 indicates first position)
* @param len -
* expression denoting length of the substring to return
* @return expression denoting the extracted substring
*/
Expression substring(int start, Expression len);
/**
* Extract a substring. This method must be invoked on an expression
* corresponding to a string.
*
* @param start -
* expression denoting start position (1 indicates first
* position)
* @param len -
* length of the substring to return
* @return expression denoting the extracted substring
*/
Expression substring(Expression start, int len);
/**
* Extract a substring. This method must be invoked on an expression
* corresponding to a string.
*
* @param start -
* expression denoting start position (1 indicates first
* position)
* @param len -
* expression denoting length of the substring to return
* @return expression denoting the extracted substring
*/
Expression substring(Expression start, Expression len);
/**
* Convert string to lowercase. This method must be invoked on an expression
* corresponding to a string.
*
* @return expression denoting the string in lowercase
*/
Expression lower();
/**
* Convert string to uppercase. This method must be invoked on an expression
* corresponding to a string.
*
* @return expression denoting the string in uppercase
*/
Expression upper();
/**
* Trim leading and trailing blanks. This method must be invoked on an
* expression corresponding to a string.
*
* @return expression denoting trimmed string
*/
Expression trim();
/**
* Trim leading, trailing blanks (or both) as specified by trim spec. This
* method must be invoked on an expression corresponding to a string.
*
* @param spec -
* trim specification
* @return expression denoting trimmed string
*/
Expression trim(TrimSpec spec);
/**
* Trim leading and trailing occurrences of character from the string. This
* method must be invoked on an expression corresponding to a string.
*
* @param c -
* character to be trimmed
* @return expression denoting trimmed string
*/
Expression trim(char c);
/**
* Trim occurrences of the character from leading or trailing (or both)
* positions of the string, as specified by trim spec. This method must be
* invoked on an expression corresponding to a string.
*
* @param c -
* character to be trimmed
* @param spec -
* trim specification
* @return expression denoting trimmed string
*/
Expression trim(char c, TrimSpec spec);
/**
* Trim leading and trailing occurrences of character specified by the
* expression argument from the string. This method must be invoked on an
* expression corresponding to a string.
*
* @param expr -
* expression corresponding to the character to be trimmed
* @return expression denoting trimmed string
*/
Expression trim(Expression expr);
/**
* Trim occurrences of the character specified by the expression argument
* from leading or trailing (or both) positions of the string, as specified
* by trim spec. This method must be invoked on an expression corresponding
* to a string.
*
* @param expr -
* expression corresponding to the character to be trimmed
* @param spec -
* trim specification
* @return expression denoting trimmed string
*/
Expression trim(Expression expr, TrimSpec spec);
/**
* Locate a string contained within the string corresponding to the
* expression on which the method was invoked. The search is started at
* position 1 (first string position). This method must be invoked on an
* expression corresponding to a string.
*
* @param str -
* string to be located
* @return expression denoting the first position at which the string was
* found or expression denoting 0 if the string was not found
*/
Expression locate(String str);
/**
* Locate a string contained within the string corresponding to the
* expression on which the method was invoked. The search is started at
* position 1 (first string position). This method must be invoked on an
* expression corresponding to a string.
*
* @param str -
* expression corresponding to the string to be located
* @return expression denoting the first position at which the string was
* found or expression denoting 0 if the string was not found
*/
Expression locate(Expression str);
/**
* Locate a string contained within the string corresponding to the
* expression on which the method was invoked, starting at a specified
* search position. This method must be invoked on an expression
* corresponding to a string.
*
* @param str -
* string to be located
* @param position -
* position at which to start the search
* @return expression denoting the first position at which the string was
* found or expression denoting 0 if the string was not found
*/
Expression locate(String str, int position);
/**
* Locate a string contained within the string corresponding to the
* expression on which the method was invoked, starting at a specified
* search position. This method must be invoked on an expression
* corresponding to a string.
*
* @param str -
* string to be located
* @param position -
* expression corresponding to position at which to start
* the search
* @return expression denoting the first position at which the string was
* found or expression denoting 0 if the string was not found
*/
Expression locate(String str, Expression position);
/**
* Locate a string contained within the string corresponding to the
* expression on which the method was invoked, starting at a specified
* search position. This method must be invoked on an expression
* corresponding to a string.
*
* @param str -
* expression corresponding to the string to be located
* @param position -
* position at which to start the search
* @return expression denoting the first position at which the string was
* found or expression denoting 0 if the string was not found
*/
Expression locate(Expression str, int position);
/**
* Locate a string contained within the string corresponding to the
* expression on which the method was invoked, starting at a specified
* search position. This method must be invoked on an expression
* corresponding to a string.
*
* @param str -
* expression corresponding to the string to be located
* @param position -
* expression corresponding to position at which to start
* the search
* @return expression denoting the first position at which the string was
* found or expression denoting 0 if the string was not found
*/
Expression locate(Expression str, Expression position);
/*
* Arithmetic operations
*/
/**
* Addition. This method must be invoked on an expression corresponding to a
* number.
*
* @param num -
* number to be added
* @return expression denoting the sum
*/
Expression plus(Number num);
/**
* Addition. This method must be invoked on an expression corresponding to a
* number.
*
* @param expr -
* expression corresponding to number to be added
* @return expression denoting the sum
*/
Expression plus(Expression expr);
/**
* Unary minus. This method must be invoked on an expression corresponding
* to a number.
*
* @return expression denoting the unary minus of the expression
*/
Expression minus();
/**
* Subtraction. This method must be invoked on an expression corresponding
* to a number.
*
* @param num -
* subtrahend
* @return expression denoting the result of subtracting the argument from
* the number corresponding to the expression on which the method
* was invoked.
*/
Expression minus(Number num);
/**
* Subtraction. This method must be invoked on an expression corresponding
* to a number.
*
* @param expr -
* expression corresponding to subtrahend
* @return expression denoting the result of subtracting the number denoted
* by the argument from the number corresponding to the expression
* on which the method was invoked.
*/
Expression minus(Expression expr);
/**
* Division. This method must be invoked on an expression corresponding to a
* number.
*
* @param num -
* divisor
* @return expression denoting the result of dividing the number
* corresponding to the expression on which the method was invoked
* by the argument
*/
Expression dividedBy(Number num);
/**
* Division. This method must be invoked on an expression corresponding to a
* number.
*
* @param expr -
* expression corresponding to the divisor
* @return expression denoting the result of dividing the number
* corresponding to the expression on which the method was invoked
* by the number denoted by the argument
*/
Expression dividedBy(Expression expr);
/**
* Multiplication. This method must be invoked on an expression
* corresponding to a number.
*
* @param num -
* multiplier
* @return expression denoting the result of multiplying the argument with
* the number corresponding to the expression on which the method
* was invoked.
*/
Expression times(Number num);
/**
* Multiplication. This method must be invoked on an expression
* corresponding to a number.
*
* @param expr -
* expression corresponding to the multiplier
* @return expression denoting the result of multiplying the number denoted
* by the argument with the number corresponding to the expression
* on which the method was invoked.
*/
Expression times(Expression expr);
/**
* Absolute value. This method must be invoked on an expression
* corresponding to a number.
*
* @return expression corresponding to the absolute value
*/
Expression abs();
/**
* Square root. This method must be invoked on an expression corresponding
* to a number.
*
* @return expression corresponding to the square root
*/
Expression sqrt();
/**
* Modulo operation. This must be invoked on an expression corresponding to
* an integer value
*
* @param num -
* integer divisor
* @return expression corresponding to the integer remainder of the division
* of the integer corresponding to the expression on which the
* method was invoked by the argument.
*/
Expression mod(int num);
/**
* Modulo operation. This must be invoked on an expression corresponding to
* an integer value
*
* @param expr -
* expression corresponding to integer divisor
* @return expression corresponding to the integer remainder of the division
* of the integer corresponding to the expression on which the
* method was invoked by the argument.
*/
Expression mod(Expression expr);
}