Class ExpressionUtils
- java.lang.Object
-
- org.datanucleus.store.rdbms.sql.expression.ExpressionUtils
-
public class ExpressionUtils extends Object
Utility methods for working with SQL expressions.
-
-
Method Summary
All Methods Static Methods Concrete Methods Modifier and Type Method Description 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.protected static void
checkAndCorrectLiteralForConsistentMappingsForBooleanComparison(SQLLiteral lit, SQLExpression expr)
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
getNumericExpression(SQLExpression expr)
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.
-
-
-
Method Detail
-
getNumericExpression
public static NumericExpression getNumericExpression(SQLExpression expr)
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
public static SQLExpression getLiteralForOne(SQLStatement stmt)
Convenience accessor for a literal for the number 1.- Parameters:
stmt
- The SQL statement- Returns:
- The literal
-
getEscapedPatternExpression
public static SQLExpression getEscapedPatternExpression(SQLExpression patternExpr)
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)
-
-