Class ExpressionUtils
java.lang.Object
org.datanucleus.store.rdbms.sql.expression.ExpressionUtils
Utility methods for working with SQL expressions.
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionstatic void
Convenience method that compares the mappings used by the two expressions for compatibility for use in a boolean comparison (eq, noteq, gt, gteq, lt, lteq) and, if necessary, updates the mapping if one of them is a SQLLiteral and is deemed inconsistent with the other expression.protected static void
static BooleanExpression
getAppIdEqualityExpression
(Object id, SQLExpression expr, RDBMSStoreManager storeMgr, org.datanucleus.ClassLoaderResolver clr, org.datanucleus.metadata.AbstractClassMetaData acmd, Integer index, BooleanExpression bExpr) Create an equality expression "(expr == id)" for an application identity using reflection to retrieve values and generate the mappings.static BooleanExpression
getEqualityExpressionForObjectExpressions
(ObjectExpression expr1, ObjectExpression expr2, boolean equals) Method to generate an equality/inequality expression between two ObjectExpressions.static SQLExpression
getEscapedPatternExpression
(SQLExpression patternExpr) The pattern string for representing one character.static SQLExpression
getLiteralForOne
(SQLStatement stmt) Convenience accessor for a literal for the number 1.static NumericExpression
Method to return a numeric expression for the supplied SQL expression.static Object
getValueForMemberOfObject
(org.datanucleus.ExecutionContext ec, org.datanucleus.metadata.AbstractMemberMetaData mmd, Object object) Get the value of a managed field/property in the provided object.static int
populatePrimaryKeyMappingsValuesForPCMapping
(JavaTypeMapping[] pkMappings, Object[] pkFieldValues, int position, PersistableMapping pcMapping, org.datanucleus.metadata.AbstractClassMetaData cmd, org.datanucleus.metadata.AbstractMemberMetaData mmd, Object fieldValue, RDBMSStoreManager storeMgr, org.datanucleus.ClassLoaderResolver clr) Convenience method to populate PK mappings/values allowing for recursion where a PK field is itself a PCMapping, that itself has PK mappings, which in turn may include PCMappings.
-
Constructor Details
-
ExpressionUtils
private ExpressionUtils()
-
-
Method Details
-
getNumericExpression
Method to return a numeric expression for the supplied SQL expression. Makes use of the RDBMS function to convert to a numeric.- Parameters:
expr
- The expression- Returns:
- The numeric expression for this SQL expression
-
getLiteralForOne
Convenience accessor for a literal for the number 1.- Parameters:
stmt
- The SQL statement- Returns:
- The literal
-
getEscapedPatternExpression
The pattern string for representing one character. Most of databases will use the underscore character.- Parameters:
patternExpr
- The expression that represents one character for a matcher/parser in the database- Returns:
- the pattern string.
-
populatePrimaryKeyMappingsValuesForPCMapping
public static int populatePrimaryKeyMappingsValuesForPCMapping(JavaTypeMapping[] pkMappings, Object[] pkFieldValues, int position, PersistableMapping pcMapping, org.datanucleus.metadata.AbstractClassMetaData cmd, org.datanucleus.metadata.AbstractMemberMetaData mmd, Object fieldValue, RDBMSStoreManager storeMgr, org.datanucleus.ClassLoaderResolver clr) Convenience method to populate PK mappings/values allowing for recursion where a PK field is itself a PCMapping, that itself has PK mappings, which in turn may include PCMappings. The pkMappings/pkFieldValues arrays are already created and we populate from "position".- Parameters:
pkMappings
- The array of pk mappings to be populatedpkFieldValues
- The array of pk field values to be populatedposition
- The current position needing populatingpcMapping
- The PC mapping we are processingcmd
- ClassMetaData for the owning class with this PCMapping fieldmmd
- Field metadata for the field that this PCMapping representsfieldValue
- The value for the PCMapping field in the owning objectstoreMgr
- Store Managerclr
- ClassLoader resolver- Returns:
- The current position (after our processing)
-
getValueForMemberOfObject
public static Object getValueForMemberOfObject(org.datanucleus.ExecutionContext ec, org.datanucleus.metadata.AbstractMemberMetaData mmd, Object object) Get the value of a managed field/property in the provided object.- Parameters:
ec
- execution contextmmd
- metadata for the field/propertyobject
- the pc object- Returns:
- The field value
-
getAppIdEqualityExpression
public static BooleanExpression getAppIdEqualityExpression(Object id, SQLExpression expr, RDBMSStoreManager storeMgr, org.datanucleus.ClassLoaderResolver clr, org.datanucleus.metadata.AbstractClassMetaData acmd, Integer index, BooleanExpression bExpr) Create an equality expression "(expr == id)" for an application identity using reflection to retrieve values and generate the mappings.- Parameters:
id
- the identity to compare againstexpr
- the object expressionstoreMgr
- the StoreManagerclr
- the ClassLoaderResolveracmd
- MetaData for the class the object id representsindex
- the current index in the source expression (internal)bExpr
- the boolean equals expression (internal)- Returns:
- the equality expression
-
getEqualityExpressionForObjectExpressions
public static BooleanExpression getEqualityExpressionForObjectExpressions(ObjectExpression expr1, ObjectExpression expr2, boolean equals) Method to generate an equality/inequality expression between two ObjectExpressions. Either or both of the expressions can be ObjectLiterals.- Parameters:
expr1
- First expressionexpr2
- Second expressionequals
- Whether it is equality (otherwise inequality)- Returns:
- The expression
-
checkAndCorrectExpressionMappingsForBooleanComparison
public static void checkAndCorrectExpressionMappingsForBooleanComparison(SQLExpression expr1, SQLExpression expr2) Convenience method that compares the mappings used by the two expressions for compatibility for use in a boolean comparison (eq, noteq, gt, gteq, lt, lteq) and, if necessary, updates the mapping if one of them is a SQLLiteral and is deemed inconsistent with the other expression. Additionally, if both sides of the comparison are parameters, this will swap one to be its literal value.- Parameters:
expr1
- First expressionexpr2
- Second expression
-
checkAndCorrectLiteralForConsistentMappingsForBooleanComparison
protected static void checkAndCorrectLiteralForConsistentMappingsForBooleanComparison(SQLLiteral lit, SQLExpression expr)
-