Package org.datanucleus.store.mongodb
Class MongoDBUtils
- java.lang.Object
-
- org.datanucleus.store.mongodb.MongoDBUtils
-
public class MongoDBUtils extends Object
Utilities for MongoDB.
-
-
Method Summary
All Methods Static Methods Concrete Methods Modifier and Type Method Description static Object
getAcceptableDatastoreValue(Object value)
static String
getClassNameForIdentity(Object id, org.datanucleus.metadata.AbstractClassMetaData rootCmd, org.datanucleus.ExecutionContext ec, org.datanucleus.ClassLoaderResolver clr)
Convenience method that tries to find the object with the specified identity from all DBCollection objects from the rootCmd and subclasses.static String
getDefaultValueForMember(org.datanucleus.metadata.AbstractMemberMetaData mmd)
Accessor for the default value specified for the provided member.static String
getFieldName(org.datanucleus.metadata.AbstractMemberMetaData mmd, int fieldNumber)
Accessor for the MongoDB field for the field of this embedded field.static Object
getFieldValueForJavaSerialisedField(org.datanucleus.metadata.AbstractMemberMetaData mmd, Object value)
Method to return the raw value when stored java serialised.static Object
getFieldValueFromStored(org.datanucleus.ExecutionContext ec, org.datanucleus.metadata.AbstractMemberMetaData mmd, org.datanucleus.store.schema.table.MemberColumnMapping mapping, Object value, org.datanucleus.metadata.FieldRole fieldRole)
Convenience method to convert the stored value for an object field into the value that will be held in the object.static com.mongodb.DBObject
getObjectForObjectProvider(com.mongodb.DBCollection dbCollection, org.datanucleus.state.ObjectProvider op, boolean checkVersion, boolean originalValue)
Method to return the DBObject that equates to the provided object.static List
getObjectsOfCandidateType(org.datanucleus.store.query.Query q, com.mongodb.DB db, com.mongodb.BasicDBObject filterObject, com.mongodb.BasicDBObject orderingObject, Map<String,Object> options, Integer skip, Integer limit)
Convenience method to return all objects of the candidate type (optionally allowing subclasses).static List
getObjectsOfCandidateType(org.datanucleus.store.query.Query q, com.mongodb.DB db, com.mongodb.BasicDBObject filterObject, Map<String,Object> options)
static Object
getObjectUsingApplicationIdForDBObject(com.mongodb.DBObject dbObject, org.datanucleus.metadata.AbstractClassMetaData cmd, org.datanucleus.ExecutionContext ec, boolean ignoreCache, int[] fpMembers)
static Object
getObjectUsingDatastoreIdForDBObject(com.mongodb.DBObject dbObject, org.datanucleus.metadata.AbstractClassMetaData cmd, org.datanucleus.ExecutionContext ec, boolean ignoreCache, int[] fpMembers)
static Object
getObjectUsingNondurableIdForDBObject(com.mongodb.DBObject dbObject, org.datanucleus.metadata.AbstractClassMetaData cmd, org.datanucleus.ExecutionContext ec, boolean ignoreCache, int[] fpMembers)
static Object
getPojoForDBObjectForCandidate(com.mongodb.DBObject dbObject, org.datanucleus.ExecutionContext ec, org.datanucleus.metadata.AbstractClassMetaData cmd, int[] fpMembers, boolean ignoreCache)
Convenience method that takes the provided DBObject and the details of the candidate that it is an instance of, and converts it into the associated POJO.static Object
getStoredValueForField(org.datanucleus.ExecutionContext ec, org.datanucleus.metadata.AbstractMemberMetaData mmd, org.datanucleus.store.schema.table.MemberColumnMapping mapping, Object value, org.datanucleus.metadata.FieldRole fieldRole)
Convenience method to convert the raw value of an object field into the value that will be stored in MongoDB.static byte[]
getStoredValueForJavaSerialisedField(org.datanucleus.metadata.AbstractMemberMetaData mmd, Object value)
Method to return the value to store when using java serialisation.static boolean
isMemberNested(org.datanucleus.metadata.AbstractMemberMetaData mmd)
static List<Long>
performMongoCount(com.mongodb.DB db, com.mongodb.BasicDBObject filterObject, Class candidateClass, boolean subclasses, org.datanucleus.ExecutionContext ec)
protected static void
selectAllFieldsOfEmbeddedObject(org.datanucleus.metadata.AbstractMemberMetaData mmd, com.mongodb.BasicDBObject fieldsSelection, org.datanucleus.ExecutionContext ec, org.datanucleus.ClassLoaderResolver clr)
-
-
-
Method Detail
-
performMongoCount
public static List<Long> performMongoCount(com.mongodb.DB db, com.mongodb.BasicDBObject filterObject, Class candidateClass, boolean subclasses, org.datanucleus.ExecutionContext ec) throws com.mongodb.MongoException
- Throws:
com.mongodb.MongoException
-
isMemberNested
public static boolean isMemberNested(org.datanucleus.metadata.AbstractMemberMetaData mmd)
-
getDefaultValueForMember
public static String getDefaultValueForMember(org.datanucleus.metadata.AbstractMemberMetaData mmd)
Accessor for the default value specified for the provided member. If no defaultValue is provided on the column then returns null.- Parameters:
mmd
- Metadata for the member- Returns:
- The default value
-
getFieldName
public static String getFieldName(org.datanucleus.metadata.AbstractMemberMetaData mmd, int fieldNumber)
Accessor for the MongoDB field for the field of this embedded field. Uses the column name from the embedded definition (if present), otherwise falls back to the column name of the field in its own class definition, otherwise uses its field name.- Parameters:
mmd
- Metadata for the owning memberfieldNumber
- Member number of the embedded object- Returns:
- The field name to use
-
getClassNameForIdentity
public static String getClassNameForIdentity(Object id, org.datanucleus.metadata.AbstractClassMetaData rootCmd, org.datanucleus.ExecutionContext ec, org.datanucleus.ClassLoaderResolver clr)
Convenience method that tries to find the object with the specified identity from all DBCollection objects from the rootCmd and subclasses. Returns the class name of the object with this identity (or null if not found).- Parameters:
id
- The identityrootCmd
- ClassMetaData for the root class in the inheritance treeec
- ExecutionContextclr
- ClassLoader resolver- Returns:
- The class name of the object with this id
-
getObjectForObjectProvider
public static com.mongodb.DBObject getObjectForObjectProvider(com.mongodb.DBCollection dbCollection, org.datanucleus.state.ObjectProvider op, boolean checkVersion, boolean originalValue)
Method to return the DBObject that equates to the provided object.- Parameters:
dbCollection
- The collection in which it is storedop
- The ObjectProvidercheckVersion
- Whether to also check for a particular versionoriginalValue
- Whether to use the original value of fields (when using nondurable id and doing update).- Returns:
- The object (or null if not found)
-
getObjectsOfCandidateType
public static List getObjectsOfCandidateType(org.datanucleus.store.query.Query q, com.mongodb.DB db, com.mongodb.BasicDBObject filterObject, Map<String,Object> options)
-
getObjectsOfCandidateType
public static List getObjectsOfCandidateType(org.datanucleus.store.query.Query q, com.mongodb.DB db, com.mongodb.BasicDBObject filterObject, com.mongodb.BasicDBObject orderingObject, Map<String,Object> options, Integer skip, Integer limit)
Convenience method to return all objects of the candidate type (optionally allowing subclasses).- Parameters:
q
- Querydb
- Mongo DBfilterObject
- Optional filter objectorderingObject
- Optional ordering objectoptions
- Set of options for controlling this queryskip
- Number of records to skiplimit
- Max number of records to return- Returns:
- List of all candidate objects (implements QueryResult)
-
getPojoForDBObjectForCandidate
public static Object getPojoForDBObjectForCandidate(com.mongodb.DBObject dbObject, org.datanucleus.ExecutionContext ec, org.datanucleus.metadata.AbstractClassMetaData cmd, int[] fpMembers, boolean ignoreCache)
Convenience method that takes the provided DBObject and the details of the candidate that it is an instance of, and converts it into the associated POJO.- Parameters:
dbObject
- The DBObjectec
- ExecutionContextcmd
- Metadata for the candidate classfpMembers
- FetchPlan members for the class that are providedignoreCache
- Whether to ignore the cache- Returns:
- The Pojo object
-
selectAllFieldsOfEmbeddedObject
protected static void selectAllFieldsOfEmbeddedObject(org.datanucleus.metadata.AbstractMemberMetaData mmd, com.mongodb.BasicDBObject fieldsSelection, org.datanucleus.ExecutionContext ec, org.datanucleus.ClassLoaderResolver clr)
-
getObjectUsingApplicationIdForDBObject
public static Object getObjectUsingApplicationIdForDBObject(com.mongodb.DBObject dbObject, org.datanucleus.metadata.AbstractClassMetaData cmd, org.datanucleus.ExecutionContext ec, boolean ignoreCache, int[] fpMembers)
-
getObjectUsingDatastoreIdForDBObject
public static Object getObjectUsingDatastoreIdForDBObject(com.mongodb.DBObject dbObject, org.datanucleus.metadata.AbstractClassMetaData cmd, org.datanucleus.ExecutionContext ec, boolean ignoreCache, int[] fpMembers)
-
getObjectUsingNondurableIdForDBObject
public static Object getObjectUsingNondurableIdForDBObject(com.mongodb.DBObject dbObject, org.datanucleus.metadata.AbstractClassMetaData cmd, org.datanucleus.ExecutionContext ec, boolean ignoreCache, int[] fpMembers)
-
getStoredValueForField
public static Object getStoredValueForField(org.datanucleus.ExecutionContext ec, org.datanucleus.metadata.AbstractMemberMetaData mmd, org.datanucleus.store.schema.table.MemberColumnMapping mapping, Object value, org.datanucleus.metadata.FieldRole fieldRole)
Convenience method to convert the raw value of an object field into the value that will be stored in MongoDB. Note that this does not cater for relation fields, just basic fields.- Parameters:
ec
- ExecutionContextmmd
- Metadata for the field holding this value (if available)mapping
- Mapping for the member (if available)value
- The raw value for the fieldfieldRole
- The role of this value for the field- Returns:
- The value to store
-
getFieldValueFromStored
public static Object getFieldValueFromStored(org.datanucleus.ExecutionContext ec, org.datanucleus.metadata.AbstractMemberMetaData mmd, org.datanucleus.store.schema.table.MemberColumnMapping mapping, Object value, org.datanucleus.metadata.FieldRole fieldRole)
Convenience method to convert the stored value for an object field into the value that will be held in the object. Note that this does not cater for relation fields, just basic fields.- Parameters:
ec
- ExecutionContextmmd
- Metadata for the field holding this value (if available)mapping
- Member column mapping (if available)value
- The stored value for the fieldfieldRole
- The role of this value for the field- Returns:
- The value to put in the field
-
getStoredValueForJavaSerialisedField
public static byte[] getStoredValueForJavaSerialisedField(org.datanucleus.metadata.AbstractMemberMetaData mmd, Object value)
Method to return the value to store when using java serialisation.- Parameters:
mmd
- Metadata of the membervalue
- The raw value of the member- Returns:
- The value to store
-
getFieldValueForJavaSerialisedField
public static Object getFieldValueForJavaSerialisedField(org.datanucleus.metadata.AbstractMemberMetaData mmd, Object value)
Method to return the raw value when stored java serialised.- Parameters:
mmd
- Metadata for the membervalue
- The serialised value- Returns:
- The raw value
-
-