Package net.sf.basedb.core.query
Class Expressions
java.lang.Object
net.sf.basedb.core.query.Expressions
A factory class to create expressions.
- Version:
- 2.0
- Author:
- Samuel, Nicklas
- Last modified
- $Date: 2015-12-04 08:47:16 +0100 (fr, 04 dec 2015) $
-
Field Summary
Modifier and TypeFieldDescriptionstatic final Pattern
A parameter name can only contain the characters a-z, A-Z or 0-9. -
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionstatic Expression
abs
(Expression e) Calculate the absolute value of an expression: new expression = abs(e).static Expression
add
(Expression e1, Expression e2) Add two expressions: new expression = e1 + e2.static Expression
aFloat
(float value) Create a constant expression from a float.static Expression
Create a subquery expression:ANY (subquery)
.static Expression
Create a subquery expression:ANY (subquery)
.static Expression
bool
(boolean value) Create a constant expression from a boolean.static Expression
bool
(Restriction restriction) Create a boolean expression view of a restriction.static Expression
caseWhen
(Expression elseExpression, WhenStatement... whenStatements) Create a conditionalCASE-WHEN
expression:static Expression
conditionalExpression
(Filter<? extends Query> filter, Expression ifTrue, Expression ifFalse) Create an expression that falls back to one of two expression depending on if the query passes a filter or not.static Expression
divide
(Expression e1, Expression e2) Divide one expression by another: new expression = e1 / e2.static Expression
exp
(Expression e) Calculate the exponential of an expression: new expression = exp(e).private static int
getFirstNull
(Object[] array) Test if there is null in the array.static Expression
integer
(int value) Create a constant expression from an integer.static Expression
ln
(Expression e) Calculate the natural logarithm of an expression: new expression = ln(e).static Expression
log
(double n, Expression e) Calculate the n-based logarithm of an expression: new expression = log(n, e).static Expression
log10
(Expression e) Calculate the 10-based logarithm of an expression: new expression = log10(e).static Expression
log2
(Expression e) Calculate the 2-based logarithm of an expression: new expression = log2(e).static Expression
multiply
(Expression e1, Expression e2) Multiply two expressions: new expression = e1 * e2.static Expression
negate
(Expression e) Negate an expression: new expression = -e1.static Expression
Create an expression for a parameter without a default value or type.static Expression
Create an expression for a parameter with a default value but no type.static Expression
Create an expression for a parameter with a default value and type.static Expression
Create an expression for a typed parameter without a default value.static Expression
power
(Expression e1, Expression e2) Calculate the first expression raised to the power of the second expression: new expression = e1 ^ e2static Expression
Create an expression for an already selected query element.static Expression
sqrt
(Expression e) Calculate the square root of an expression: new expression = sqrt(e).static Expression
Create a constant expression from a string.static Expression
subtract
(Expression e1, Expression e2) Subtract one expression from another: new expression = e1 - e2.static Expression
toDate
(Expression e) Get the date part from a date or timestamp expression.
-
Field Details
-
PARAMETER_REGEXP
A parameter name can only contain the characters a-z, A-Z or 0-9.
-
-
Constructor Details
-
Expressions
public Expressions()
-
-
Method Details
-
add
Add two expressions: new expression = e1 + e2.- Parameters:
e1
- The left valuee2
- The right value- Returns:
- The new expression
- Throws:
InvalidDataException
- If any of the arguments are null
-
subtract
Subtract one expression from another: new expression = e1 - e2.- Parameters:
e1
- The left valuee2
- The right value- Returns:
- The new expression
- Throws:
InvalidDataException
- If any of the arguments are null
-
divide
Divide one expression by another: new expression = e1 / e2.- Parameters:
e1
- The numeratore2
- The denominator- Returns:
- The new expression
- Throws:
InvalidDataException
- If any of the arguments are null
-
multiply
Multiply two expressions: new expression = e1 * e2.- Parameters:
e1
- The left valuee2
- The right value- Returns:
- The new expression
- Throws:
InvalidDataException
- If any of the arguments are null
-
negate
Negate an expression: new expression = -e1.- Parameters:
e
- The expression to negate- Returns:
- The new expression
- Throws:
InvalidDataException
- If the argument is null
-
integer
Create a constant expression from an integer.- Parameters:
value
- The value to create an expression for- Returns:
- The expression
-
aFloat
Create a constant expression from a float.- Parameters:
value
- The value to create an expression for- Returns:
- The expression
-
string
Create a constant expression from a string. Internally this is implemented as parameter with a default value. Ie.parameter(String, Object)
. In most cases it is better to use that method instead of this.- Parameters:
value
- The string value- Returns:
- The expression
- Throws:
InvalidDataException
- If the value is null
-
bool
Create a constant expression from a boolean.- Parameters:
value
- The value to create an expression for- Returns:
- The expression
- Since:
- 3.1
-
bool
Create a boolean expression view of a restriction.- Parameters:
restriction
- The restriction- Returns:
- The expression
- Since:
- 3.1
-
parameter
Create an expression for a parameter without a default value or type.- Parameters:
name
- Name of the parameter. Can not be null.- Returns:
- An expression.
- Throws:
InvalidDataException
- If the parameter is null.- See Also:
-
parameter
Create an expression for a typed parameter without a default value.- Parameters:
name
- Name of the parameter. Can not be nullvalueType
- Type of value the parameter holds.- Returns:
- An expression
- Throws:
InvalidDataException
- If required argument is null.- See Also:
-
parameter
Create an expression for a parameter with a default value but no type.- Parameters:
name
- Name of the parameter. Can not be null.value
- Value of the parameter.- Returns:
- An expression to use in queries.
- Throws:
InvalidDataException
- If required parameter is null.- See Also:
-
parameter
public static Expression parameter(String name, Object value, Type valueType) throws InvalidDataException Create an expression for a parameter with a default value and type.- Parameters:
name
- The name of the parameter. Can not be nullvalue
- The default value of the parameter, or null if no default is neededvalueType
- The type of the parameter, or null if not used- Returns:
- An expression representing the parameter
- Throws:
InvalidDataException
- If the argument 'name' is null or contains invalid characters- See Also:
-
selected
Create an expression for an already selected query element. If an alias has been specified it will be used, otherwise the entire expression is built again.- Parameters:
select
- A selected query element. Can not be null.- Returns:
- A expression object representing the selected expression
- Throws:
InvalidDataException
- If the argument is null
-
log10
Calculate the 10-based logarithm of an expression: new expression = log10(e).- Parameters:
e
- The expression to take the logarithm of- Returns:
- The new expression
- Throws:
InvalidDataException
- If the argument is null
-
log2
Calculate the 2-based logarithm of an expression: new expression = log2(e).- Parameters:
e
- The expression to take the logarithm of- Returns:
- The new expression
- Throws:
InvalidDataException
- If the argument is null
-
ln
Calculate the natural logarithm of an expression: new expression = ln(e).- Parameters:
e
- The expression to take the logarithm of- Returns:
- The new expression
- Throws:
InvalidDataException
- If the argument is null
-
log
Calculate the n-based logarithm of an expression: new expression = log(n, e).- Parameters:
n
- The log base, must be > 0e
- The expression to take the logarithm of- Returns:
- The new expression
- Throws:
InvalidDataException
- If the expression is null or if the base is 0 or below
-
exp
Calculate the exponential of an expression: new expression = exp(e).- Parameters:
e
- The expression to take the exponential of- Returns:
- The new expression
- Throws:
InvalidDataException
- If the argument is null
-
power
Calculate the first expression raised to the power of the second expression: new expression = e1 ^ e2- Parameters:
e1
- The base expressione2
- The exponent expression- Returns:
- The new expression
- Throws:
InvalidDataException
- If some of the arguments are null- Since:
- 2.12
-
sqrt
Calculate the square root of an expression: new expression = sqrt(e).- Parameters:
e
- The expression to take the square root of- Returns:
- The new expression
- Throws:
InvalidDataException
- If the argument is null
-
abs
Calculate the absolute value of an expression: new expression = abs(e).- Parameters:
e
- The expression to take the absolute value of- Returns:
- The new expression
- Throws:
InvalidDataException
- If the argument is null
-
toDate
Get the date part from a date or timestamp expression.- Parameters:
e
- An expression which should evaluate to a date or timestamp- Returns:
- The new expression
- Since:
- 2.16
-
caseWhen
public static Expression caseWhen(Expression elseExpression, WhenStatement... whenStatements) throws InvalidDataException Create a conditionalCASE-WHEN
expression:CASE WHEN r1 THEN e1 WHEN r2 THEN e2 ... ELSE elseExpression END
- Parameters:
elseExpression
- The optional else part of the expressionwhenStatements
- An array ofWhenStatement
:s- Returns:
- The new expression
- Throws:
InvalidDataException
- If any of the when statements are null or if no when statements have been specified
-
any
Create a subquery expression:ANY (subquery)
. The expression is useful in the WHERE part of a query only. For example, to find all users that are members of a group having a name starting with A.Query groupFilter = User.getQuery(); groupFilter.join(Hql.innerJoin("groups", "grp")); groupFilter.restrict(Restrictions.like(Hql.property("grp", "name"), Expressions.string("A%"))); Query userQuery = User.getQuery(); userQuery.restrict(Restrictions.eq(Hql.property("id"), Expressions.any(groupFilter)));
- Parameters:
subquery
- The subquery- Returns:
- The new expression
- Throws:
InvalidDataException
- If the subquery is null- Since:
- 2.9
-
all
Create a subquery expression:ANY (subquery)
. WARNING!!! It is not recommended to use this method for creating restriction like<>ANY (subquery)
since it may have a bad impact on performance. Consider usingRestrictions.not(Restriction)
andRestrictions.in(Expression, Query)
instead.- Parameters:
subquery
- The subquery- Returns:
- The new expression
- Throws:
InvalidDataException
- If the subquery is null- Since:
- 2.9
- See Also:
-
conditionalExpression
public static Expression conditionalExpression(Filter<? extends Query> filter, Expression ifTrue, Expression ifFalse) Create an expression that falls back to one of two expression depending on if the query passes a filter or not.- Parameters:
filter
- A filter, if null the 'ifTrue' expression is returnedifTrue
- The epxression to use if the filter evaluates to TRUEifFalse
- The expression to use if the filter evaluates to FALSE- Returns:
- A conditional expression, or the 'ifTrue' expression if the filter is null, or null if both expressions are null
- Since:
- 3.7
-
getFirstNull
Test if there is null in the array.- Returns:
- The index of the first null element, or -1 if no null elements are found, or 0 if the array itself is null
-