org.iternine.jeppetto.dao.mongodb
Class MongoDBQueryModelDAO<T,ID>

java.lang.Object
  extended by org.iternine.jeppetto.dao.mongodb.MongoDBQueryModelDAO<T,ID>
Type Parameters:
T - the type of persistent object this DAO will manage.
All Implemented Interfaces:
AccessControllable<ID>, GenericDAO<T,ID>, QueryModelDAO<T,ID>

public class MongoDBQueryModelDAO<T,ID>
extends Object
implements QueryModelDAO<T,ID>, AccessControllable<ID>

Provides a QueryModelDAO implementation for Mongo.

This QueryModelDAO implementation for MongoDB provides bi-directional ODM (Object to Document Mapping) as well as the rich query capabilities found in the core org.iternine.jeppetto.dao package. It requires that the ID be a String. Instantiation requires a daoProperties Map that will look for the following keys (and expected values):

Key Required? Description
db Yes Instance of a configured com.mongodb.DB
uniqueIndexes No List of various MongoDB index values that will be ensured to exist and must be unique.
nonUniqueIndexes No List of various MongoDB index values that will be ensured to exist and need not be unique.
optimisticLockEnabled No Boolean to indicate if instances of the tracked type should be protected by a Jeppetto-managed lock version field.
shardKeyPattern No A comma-separated string of fields that are used to determine the shard key(s) for the collection.
saveNulls No Boolean to indicate whether null fields should be included in MongoDB documents.
writeConcern No String, one of the values as indicated at http://www.mongodb.org/display/DOCS/Replica+Set+Semantics. If not specified, the DAO defaults to "SAFE".
showQueries No Boolean to indicate if executed queries should be logged. Note that logging will need to be enabled for the DAO's package as well.


Constructor Summary
protected MongoDBQueryModelDAO(Class<T> entityClass, Map<String,Object> daoProperties)
           
protected MongoDBQueryModelDAO(Class<T> entityClass, Map<String,Object> daoProperties, AccessControlContextProvider accessControlContextProvider)
           
 
Method Summary
protected  com.mongodb.DBObject augmentObjectCacheKey(com.mongodb.DBObject key)
          This method allows subclasses an opportunity to add any important data to a cache key, such as the __acl from the AccessControlMongoDAO.
 Condition buildCondition(String conditionField, ConditionType conditionType, Iterator argsIterator)
           
protected  com.mongodb.DBObject buildIdentifyingQuery(com.mongodb.DBObject dbObject)
           
protected  com.mongodb.DBObject buildIdentifyingQuery(ID id)
           
 Projection buildProjection(String projectionField, ProjectionType projectionType, Iterator argsIterator)
           
protected  com.mongodb.DBObject[] createIdentifyingQueries(com.mongodb.DBObject dbObject)
           
 void delete(T entity)
           
 void deleteById(ID id)
           
protected  void deleteByIdentifyingQuery(com.mongodb.DBObject identifyingQuery)
           
 Iterable<T> findAll()
           
 T findById(ID id)
           
 T findUniqueUsingQueryModel(QueryModel queryModel)
           
 Iterable<T> findUsingQueryModel(QueryModel queryModel)
           
 void flush()
           
 AccessControlContextProvider getAccessControlContextProvider()
           
 List<String> getAccessIds(ID id)
           
protected  Class<?> getCollectionClass()
           
protected  com.mongodb.DBCollection getDbCollection()
           
 void grantAccess(ID id, String accessId)
           
 Object projectUsingQueryModel(QueryModel queryModel)
           
 void revokeAccess(ID id, String accessId)
           
 void save(T entity)
           
protected  void trueRemove(com.mongodb.DBObject identifyingQuery)
           
protected  void trueSave(com.mongodb.DBObject identifyingQuery, DirtyableDBObject dbo)
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

MongoDBQueryModelDAO

protected MongoDBQueryModelDAO(Class<T> entityClass,
                               Map<String,Object> daoProperties)

MongoDBQueryModelDAO

protected MongoDBQueryModelDAO(Class<T> entityClass,
                               Map<String,Object> daoProperties,
                               AccessControlContextProvider accessControlContextProvider)
Method Detail

findById

public T findById(ID id)
           throws NoSuchItemException
Specified by:
findById in interface GenericDAO<T,ID>
Throws:
NoSuchItemException

findAll

public final Iterable<T> findAll()
Specified by:
findAll in interface GenericDAO<T,ID>

save

public final void save(T entity)
Specified by:
save in interface GenericDAO<T,ID>

delete

public final void delete(T entity)
Specified by:
delete in interface GenericDAO<T,ID>

deleteById

public final void deleteById(ID id)
Specified by:
deleteById in interface GenericDAO<T,ID>

flush

public final void flush()
Specified by:
flush in interface GenericDAO<T,ID>

findUniqueUsingQueryModel

public T findUniqueUsingQueryModel(QueryModel queryModel)
                            throws NoSuchItemException
Specified by:
findUniqueUsingQueryModel in interface QueryModelDAO<T,ID>
Throws:
NoSuchItemException

findUsingQueryModel

public Iterable<T> findUsingQueryModel(QueryModel queryModel)
Specified by:
findUsingQueryModel in interface QueryModelDAO<T,ID>

projectUsingQueryModel

public Object projectUsingQueryModel(QueryModel queryModel)
Specified by:
projectUsingQueryModel in interface QueryModelDAO<T,ID>

buildCondition

public Condition buildCondition(String conditionField,
                                ConditionType conditionType,
                                Iterator argsIterator)
Specified by:
buildCondition in interface QueryModelDAO<T,ID>

buildProjection

public Projection buildProjection(String projectionField,
                                  ProjectionType projectionType,
                                  Iterator argsIterator)
Specified by:
buildProjection in interface QueryModelDAO<T,ID>

grantAccess

public void grantAccess(ID id,
                        String accessId)
Specified by:
grantAccess in interface AccessControllable<ID>

revokeAccess

public void revokeAccess(ID id,
                         String accessId)
Specified by:
revokeAccess in interface AccessControllable<ID>

getAccessIds

public List<String> getAccessIds(ID id)
Specified by:
getAccessIds in interface AccessControllable<ID>

getAccessControlContextProvider

public AccessControlContextProvider getAccessControlContextProvider()
Specified by:
getAccessControlContextProvider in interface AccessControllable<ID>

augmentObjectCacheKey

protected com.mongodb.DBObject augmentObjectCacheKey(com.mongodb.DBObject key)
This method allows subclasses an opportunity to add any important data to a cache key, such as the __acl from the AccessControlMongoDAO. TODO: revsit these methods...

Parameters:
key - key to augment
Returns:
augmented key

createIdentifyingQueries

protected com.mongodb.DBObject[] createIdentifyingQueries(com.mongodb.DBObject dbObject)

buildIdentifyingQuery

protected final com.mongodb.DBObject buildIdentifyingQuery(com.mongodb.DBObject dbObject)

buildIdentifyingQuery

protected final com.mongodb.DBObject buildIdentifyingQuery(ID id)

deleteByIdentifyingQuery

protected final void deleteByIdentifyingQuery(com.mongodb.DBObject identifyingQuery)

trueSave

protected final void trueSave(com.mongodb.DBObject identifyingQuery,
                              DirtyableDBObject dbo)

trueRemove

protected final void trueRemove(com.mongodb.DBObject identifyingQuery)

getDbCollection

protected final com.mongodb.DBCollection getDbCollection()

getCollectionClass

protected final Class<?> getCollectionClass()


Copyright © 2011. All Rights Reserved.