javax.jcr.query.qom.Comparison Maven / Gradle / Ivy
Show all versions of aem-sdk-api Show documentation
/*
* Copyright 2009 Day Management AG, Switzerland. All rights reserved.
*/
package javax.jcr.query.qom;
/**
* Filters node-tuples based on the outcome of a binary operation.
*
* For any comparison, {@link #getOperand2 operand2} always evaluates to a
* scalar value. In contrast, {@link #getOperand1 operand1} may evaluate to an
* array of values (for example, the value of a multi-valued property), in which
* case the comparison is separately performed for each element of the array,
* and the Comparison
constraint is satisfied as a whole if the
* comparison against any element of the array is satisfied.
*
* If {@link #getOperand1 operand1} and {@link #getOperand2 operand2} evaluate
* to values of different property types, the value of {@link #getOperand2
* operand2} is converted to the property type of the value of {@link
* #getOperand1 operand1}. If the type conversion fails, the query is invalid.
*
* If {@link #getOperator operator} is not supported for the property type of
* {@link #getOperand1 operand1}, the query is invalid.
*
* If {@link #getOperand1 operand1} evaluates to null (for example, if the
* operand evaluates the value of a property which does not exist), the
* constraint is not satisfied.
*
* The JCR_OPERATOR_EQUAL_TO
operator is satisfied only if
* the value of {@link #getOperand1 operand1} equals the value of {@link
* #getOperand2 operand2}.
*
* The JCR_OPERATOR_NOT_EQUAL_TO
operator is satisfied
* unless the value of {@link #getOperand1 operand1} equals the value of
* {@link #getOperand2 operand2}.
*
* The JCR_OPERATOR_LESSS_THAN
operator is satisfied only if
* the value of {@link #getOperand1 operand1} is ordered before the value
* of {@link #getOperand2 operand2}.
*
* The JCR_OPERATOR_LESS_THAN_OR_EQUAL_TO
operator is satisfied
* unless the value of {@link #getOperand1 operand1} is ordered
* after the value of {@link #getOperand2 operand2}.
*
* The JCR_OPERATOR_GREATER_THAN
operator is satisfied only
* if the value of {@link #getOperand1 operand1} is ordered after the
* value of {@link #getOperand2 operand2}.
*
* The JCR_OPERATOR_GREATER_THAN_OR_EQUAL_TO
operator is satisfied
* unless the value of {@link #getOperand1 operand1} is ordered
* before the value of {@link #getOperand2 operand2}.
*
* The JCR_OPERATOR_LIKE
operator is satisfied only if the value of
* {@link #getOperand1 operand1} matches the pattern specified by the
* value of {@link #getOperand2 operand2}, where in the pattern:
- the
* character "
%
" matches zero or more characters, and - the
* character "
_
" (underscore) matches exactly one character,
* and - the string "
\x
" matches the character
* "x
", and - all other characters match
* themselves.
*
* @since JCR 2.0
*/
public interface Comparison
extends Constraint {
/**
* Gets the first operand.
*
* @return the operand; non-null
*/
public DynamicOperand getOperand1();
/**
* Gets the operator.
*
* @return either - {@link QueryObjectModelConstants#JCR_OPERATOR_EQUAL_TO},
* - {@link QueryObjectModelConstants#JCR_OPERATOR_NOT_EQUAL_TO},
* - {@link QueryObjectModelConstants#JCR_OPERATOR_LESS_THAN},
* - {@link QueryObjectModelConstants#JCR_OPERATOR_LESS_THAN_OR_EQUAL_TO},
* - {@link QueryObjectModelConstants#JCR_OPERATOR_GREATER_THAN},
* - {@link QueryObjectModelConstants#JCR_OPERATOR_GREATER_THAN_OR_EQUAL_TO},
* or
- {@link QueryObjectModelConstants#JCR_OPERATOR_LIKE}
*
*/
public String getOperator();
/**
* Gets the second operand.
*
* @return the operand; non-null
*/
public StaticOperand getOperand2();
}