Class AbstractJongoRepository<T>
- All Implemented Interfaces:
CrudRepository<T>
Changes MongoException in to MongoRepositoryException (which is a checked exception).As well if Command result is not ok (CommandResult#isOk) return false a exception will be thrown the message for that exception will be CommandResult#getErrorMessage.
Some of the find and insert methods use a template queryName. this means that the string can contain placeholders ('#') this will allow the user to have predefine json strings that will be substitute with the given params.Params are not Name therefor if the same value is needed multiple times for now it has to be send multiple times.Order of the params should match the same in the json string.
This class is mark as abstract to force inheritance , so we can get in runtime the class of the generic parameter with this we can simplify the mapping.
- Author:
- Carlos Ortiz.
-
Field Summary
FieldsModifier and TypeFieldDescriptionprotected Stringprotected com.mongodb.gridfs.GridFSprotected org.jongo.Jongoprotected JongoQueries -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionlongcount()Returns the number of all documents in the collection.longReturns the number of documents that match the querylongReturns the number of documents that match the queryprotected StringcreateSortQuery(List<org.apache.commons.collections4.keyvalue.DefaultKeyValue<String, Boolean>> fields) Creates a Sort query based on the fields.
Key of the map is the field False=Desc,True=asc for the field, Respect order of the keysvoiddeleteFile(String storeName) Deletes the File with the given name.voiddeleteFile(org.bson.types.ObjectId fileId) Deletes the File with the given Id.Search all documents in the given collection that match the query.Finds all documents of the given collection that match the template query
§§findAll()Gets all documents of a the given collection.Finds by the Id.findByStringId(String id) Finds by the Id.Search for documents of the given collection that match the query.
In only return the first DocumentSearch for documents of the given collection that match the query.
In only return the first Documentprotected org.jongo.MongoCollectionGets the Jongo Document.getFileInfo(String storeName) Gets the file information based on its name..getFileInfo(org.bson.types.ObjectId fileId) Gets the file information based on its id..protected StringgetQueryFor(String key) Get the query string for a given keyvoidinit()voidInserts the document into the collection.voidInserts multiple documents into the collection.listFilesByName(String filename) Returns the InputStream of the file with the given name.readFile(org.bson.types.ObjectId fileId) Returns the InputStream of the file with the given id.voidRemoves all Documents that are found using the given query.voidRemoves all Documents that are found using the given query.voidremoveById(String id) Removes a Document with the given idvoidRemoves by the Id.returnList(org.jongo.Find find) Actually makes the transformation form Jongo to List of Objects.protected TreturnSimple(org.jongo.FindOne findOne) Actually makes the transformation form Jongo to the Object.voidInserts in the given collection the json "As Is"
Json String can contain placeholders this will allow the user to have predefine json strings
that will be substitute with the given queryParams.Params are not Name therefor if the same value is needed multiple times for now it has to be send multiple times.Order of the queryParams should match the same in the json string.
Example
String Json ="{name:#,address: #,age:#}"
save("testCollection",Json,"Dr.John Z.", new Address(), 125);voidSaves the document into the collection.saveFile(InputStream inputStream, String storeName, String contentType) Saves the given InputStream as with the given name.saveFile(InputStream inputStream, String storeName, String contentType, org.bson.types.ObjectId fileId) Saves the given InputStream as with the given name.voidsetJongo(org.jongo.Jongo jongo) voidsetQueries(JongoQueries queries) voidUpdates the object with the given id with the given Object information.voidUpdates the object with the given id with the given Object information.voidUpdates the givenvoidUpdates the givenupdateFile(InputStream inputStream, String storeName, String contentType) "Updates" the file with the new information (A name change is NOT valid )updateFile(org.bson.types.ObjectId fileId, InputStream inputStream, String storeName, String contentType) "Updates" the file with the new information (A name change is valid as long a file with new name does not exists)updateFile(org.bson.types.ObjectId fileId, InputStream inputStream, String storeName, String contentType, boolean sameFileId) "Updates" the file with the new information (A name change is valid as long a file with new name does not exists)protected com.mongodb.gridfs.GridFSDBFilevalidateObject(String storeName) protected com.mongodb.gridfs.GridFSDBFilevalidateObject(org.bson.types.ObjectId fileId)
-
Field Details
-
clazz
-
jongo
protected org.jongo.Jongo jongo -
collectionName
-
queries
-
gridfs
protected com.mongodb.gridfs.GridFS gridfs
-
-
Constructor Details
-
AbstractJongoRepository
public AbstractJongoRepository()
-
-
Method Details
-
init
- Throws:
Exception
-
insert
Description copied from interface:CrudRepositoryInserts the document into the collection.- Specified by:
insertin interfaceCrudRepository<T>- Parameters:
document- document to be inserted (aka Pojo).- Throws:
MongoDataException- if the document can't be inserted.
-
getCollection
protected org.jongo.MongoCollection getCollection()Gets the Jongo Document.- Returns:
- a Jongo Document to interact with the Mongo.
-
insert
Description copied from interface:CrudRepositoryInserts multiple documents into the collection.- Specified by:
insertin interfaceCrudRepository<T>- Parameters:
documents- documents to be inserted (aka Pojo).- Throws:
MongoDataException- if the documents can't be inserted.
-
save
Description copied from interface:CrudRepositorySaves the document into the collection.- Specified by:
savein interfaceCrudRepository<T>- Parameters:
document- Document to be save (aka Pojo).- Throws:
MongoDataException- if Document can't be save.
-
save
Description copied from interface:CrudRepositoryInserts in the given collection the json "As Is"
Json String can contain placeholders this will allow the user to have predefine json strings
that will be substitute with the given queryParams.Params are not Name therefor if the same value is needed multiple times for now it has to be send multiple times.Order of the queryParams should match the same in the json string.
Example
String Json ="{name:#,address: #,age:#}"
save("testCollection",Json,"Dr.John Z.", new Address(), 125);- Specified by:
savein interfaceCrudRepository<T>- Parameters:
query- Name of the Query to be look in default-queries.xml or custom-queries.propertiesqueryParams- Params of the json.- Throws:
MongoDataException
-
update
public void update(String id, Object updateObject, boolean multi, boolean upsert) throws MongoDataException Description copied from interface:CrudRepositoryUpdates the object with the given id with the given Object information.- Specified by:
updatein interfaceCrudRepository<T>- Parameters:
id- Id of the object to be updated.updateObject- Object to be use to updated.multi- If set to true, updates multiple documents that meet the query criteria. If set to false, updates one document.upsert- If set to true, creates a new document when no document matches the query criteria.- Throws:
MongoDataException- if document can't be save.
-
update
Description copied from interface:CrudRepositoryUpdates the object with the given id with the given Object information.
Should be equals to
CrudRepository.update(String, Object, boolean, boolean)with String,Object,false,false- Specified by:
updatein interfaceCrudRepository<T>- Parameters:
id- Id of the object to be updated.updateObject- Object to be use to updated.- Throws:
MongoDataException- if document can't be save.
-
update
public void update(String id, String modifier, boolean multi, boolean upsert) throws MongoDataException Description copied from interface:CrudRepositoryUpdates the given- Specified by:
updatein interfaceCrudRepository<T>- Parameters:
id- Id of the object to be updated.modifier- The modifications to apply.multi- If set to true, updates multiple documents that meet the query criteria. If set to false, updates one document.upsert- If set to true, creates a new document when no document matches the query criteria.- Throws:
MongoDataException- if document can't be save.
-
update
public void update(String id, String modifier, boolean multi, boolean upsert, Object... params) throws MongoDataException Description copied from interface:CrudRepositoryUpdates the given- Specified by:
updatein interfaceCrudRepository<T>- Parameters:
id- Id of the object to be updated.modifier- The modifications to apply.multi- If set to true, updates multiple documents that meet the query criteria. If set to false, updates one document.upsert- If set to true, creates a new document when no document matches the query criteria.params- Params of the modifier query.- Throws:
MongoDataException- if document can't be save.
-
count
Description copied from interface:CrudRepositoryReturns the number of all documents in the collection.- Specified by:
countin interfaceCrudRepository<T>- Returns:
- the count of all documents
- Throws:
MongoDataException- if an error occurs
-
count
Description copied from interface:CrudRepositoryReturns the number of documents that match the query- Specified by:
countin interfaceCrudRepository<T>- Parameters:
query- the query the documents should match- Returns:
- the count of documents that match the query
- Throws:
MongoDataException- if an error occurs
-
count
Description copied from interface:CrudRepositoryReturns the number of documents that match the query- Specified by:
countin interfaceCrudRepository<T>- Parameters:
query- the query the documents should matchqueryParams- the query parameters- Returns:
- the count of documents that match the query
- Throws:
MongoDataException- if an error occurs
-
findAll
Description copied from interface:CrudRepositoryGets all documents of a the given collection. Tries to convert them in to Instances of the given class. Order of the params should match the same in the json string.
Example
String Json ="{name:#,address: #,age:#}"
find("testCollection",Json,"Dr. John.Z", new Address(), 125);- Specified by:
findAllin interfaceCrudRepository<T>- Returns:
- A Iterable Instance of all the documents.This is lazy loaded
- Throws:
MongoDataException- If couldn't search for the documents. or a mapping exception happen.
-
find
Description copied from interface:CrudRepositorySearch all documents in the given collection that match the query.- Specified by:
findin interfaceCrudRepository<T>- Parameters:
query- Name of the Query to be look in default-queries.xml or custom-queries.properties- Returns:
- A Iterable Instance of all the documents that match the query.This is lazy loaded
- Throws:
MongoDataException
-
find
Description copied from interface:CrudRepositoryFinds all documents of the given collection that match the template query
§§- Specified by:
findin interfaceCrudRepository<T>- Parameters:
query- Name of the Template Query to be look in default-queries.xml or custom-queries .propertiesqueryParams- Params to be use in the template query. Must match the order of the templates .
Template queryParams are not named, therefor they have to be send multiple times if needed- Returns:
- A Iterable Instance of all the documents.This is lazy loaded
- Throws:
MongoDataException- If couldn't search for the documents. or a mapping exception happen.
-
findOne
Description copied from interface:CrudRepositorySearch for documents of the given collection that match the query.
In only return the first Document- Specified by:
findOnein interfaceCrudRepository<T>- Parameters:
query- Name of the Template Query to be look in default-queries.xml or custom-queries .properties- Returns:
- A instance of the given class. Null if nothing is found.
- Throws:
MongoDataException- If couldn't search for the documents. or a mapping exception happen.
-
findOne
Description copied from interface:CrudRepositorySearch for documents of the given collection that match the query.
In only return the first Document- Specified by:
findOnein interfaceCrudRepository<T>- Parameters:
query- Name of the Template Query to be look in default-queries.xml or custom-queries .propertiesqueryParams- Params to be use in the template query. Must match the order of the templates .
Template queryParams are not named, therefor they have to be send multiple times if needed- Returns:
- A instance of the given class. Null if nothing is found.
- Throws:
MongoDataException- If couldn't search for the documents. or a mapping exception happen.
-
remove
Description copied from interface:CrudRepositoryRemoves all Documents that are found using the given query.- Specified by:
removein interfaceCrudRepository<T>- Parameters:
query- Name of the Template Query to be look in default-queries.xml or custom-queries .propertiesqueryParams- Params to be use in the template query. Must match the order of the templates- Throws:
MongoDataException
-
findById
Description copied from interface:CrudRepositoryFinds by the Id.
Internal transforms the given String to and Object Id
- Specified by:
findByIdin interfaceCrudRepository<T>- Parameters:
id- String representation of the Id.- Returns:
- A instance of the object with the given Id.
- Throws:
MongoDataException
-
remove
Description copied from interface:CrudRepositoryRemoves all Documents that are found using the given query.- Specified by:
removein interfaceCrudRepository<T>- Parameters:
query- Name of the Template Query to be look in default-queries.xml or custom-queries .properties- Throws:
MongoDataException
-
removeById
Description copied from interface:CrudRepositoryRemoves a Document with the given id- Specified by:
removeByIdin interfaceCrudRepository<T>- Parameters:
id- Id of the object to be remove- Throws:
MongoDataException
-
saveFile
public FileInfo saveFile(InputStream inputStream, String storeName, String contentType, org.bson.types.ObjectId fileId) throws MongoDataException, org.apache.commons.io.FileExistsException Description copied from interface:CrudRepositorySaves the given InputStream as with the given name. Closes the Stream after its done.- Specified by:
saveFilein interfaceCrudRepository<T>- Parameters:
inputStream- InputStream to be Save.storeName- File name for the inputStream.- Returns:
- FileInfo with all the information of the file.
- Throws:
MongoDataException- If Can't save the file.org.apache.commons.io.FileExistsException- If a file with the given file name already exists.
-
saveFile
public FileInfo saveFile(InputStream inputStream, String storeName, String contentType) throws MongoDataException, org.apache.commons.io.FileExistsException Description copied from interface:CrudRepositorySaves the given InputStream as with the given name. Closes the Stream after its done.- Specified by:
saveFilein interfaceCrudRepository<T>- Parameters:
inputStream- InputStream to be Save.storeName- File name for the inputStream.- Returns:
- FileInfo with all the information of the file.
- Throws:
MongoDataException- If Can't save the file.org.apache.commons.io.FileExistsException- If a file with the given file name already exists.
-
getFileInfo
Description copied from interface:CrudRepositoryGets the file information based on its id..- Specified by:
getFileInfoin interfaceCrudRepository<T>- Parameters:
fileId- file Id to look up the information.- Returns:
- File Information of the file.
- Throws:
FileNotFoundException- If file with the given id does not exist.
-
getFileInfo
Description copied from interface:CrudRepositoryGets the file information based on its name..- Specified by:
getFileInfoin interfaceCrudRepository<T>- Parameters:
storeName- file name to look up the information.- Returns:
- File Information of the file.
- Throws:
FileNotFoundException- If file with the given id does not exist.
-
readFile
Description copied from interface:CrudRepositoryReturns the InputStream of the file with the given id.- Specified by:
readFilein interfaceCrudRepository<T>- Parameters:
fileId- File Id to read.- Returns:
- A InputStream with that file Information.
- Throws:
FileNotFoundException- If there is no file with that Id.
-
readFile
Description copied from interface:CrudRepositoryReturns the InputStream of the file with the given name.- Specified by:
readFilein interfaceCrudRepository<T>- Parameters:
storeName- File Id to read.- Returns:
- A InputStream with that file Information.
- Throws:
FileNotFoundException- If there is no file with that name.
-
deleteFile
Description copied from interface:CrudRepositoryDeletes the File with the given Id.- Specified by:
deleteFilein interfaceCrudRepository<T>- Parameters:
fileId- Id of the file to delete.- Throws:
FileNotFoundException- If there is no file with that id.
-
deleteFile
Description copied from interface:CrudRepositoryDeletes the File with the given name.- Specified by:
deleteFilein interfaceCrudRepository<T>- Parameters:
storeName- Name of the file to delete.- Throws:
FileNotFoundException- If there is no file with that name.
-
updateFile
public FileInfo updateFile(org.bson.types.ObjectId fileId, InputStream inputStream, String storeName, String contentType) throws FileNotFoundException, MongoDataException, org.apache.commons.io.FileExistsException Description copied from interface:CrudRepository"Updates" the file with the new information (A name change is valid as long a file with new name does not exists)
Mongodb Does not actually support any update Operation in GridFs therefor Calling this method should be as calling
CrudRepository.deleteFile(org.bson.types.ObjectId)and thenCrudRepository.saveFile(java.io.InputStream, String,String)It will generate also new FileInfo Including It's Id- Specified by:
updateFilein interfaceCrudRepository<T>- Parameters:
fileId- File id to be UpdatedinputStream- new InputStream of the file.storeName- File name of the inputStream (can differ from the original).- Returns:
- The new FileInfo of the "Updated" file
- Throws:
FileNotFoundException- If File with Given Id Does not exists.MongoDataException- If unable to save the File.org.apache.commons.io.FileExistsException- If a file name exists with the new storeName (this should Only happen if you change the file name)
-
updateFile
public FileInfo updateFile(org.bson.types.ObjectId fileId, InputStream inputStream, String storeName, String contentType, boolean sameFileId) throws FileNotFoundException, MongoDataException, org.apache.commons.io.FileExistsException Description copied from interface:CrudRepository"Updates" the file with the new information (A name change is valid as long a file with new name does not exists)
Mongodb Does not actually support any update Operation in GridFs therefor Calling this method should be as calling
CrudRepository.deleteFile(org.bson.types.ObjectId)and thenCrudRepository.saveFile(java.io.InputStream, String,String)It will generate also new FileInfo Including It's Id- Specified by:
updateFilein interfaceCrudRepository<T>- Parameters:
fileId- File id to be UpdatedinputStream- new InputStream of the file.storeName- File name of the inputStream (can differ from the original).- Returns:
- The new FileInfo of the "Updated" file
- Throws:
FileNotFoundException- If File with Given Id Does not exists.MongoDataException- If unable to save the File.org.apache.commons.io.FileExistsException- If a file name exists with the new storeName (this should Only happen if you change the file name)
-
updateFile
public FileInfo updateFile(InputStream inputStream, String storeName, String contentType) throws FileNotFoundException, MongoDataException, org.apache.commons.io.FileExistsException Description copied from interface:CrudRepository"Updates" the file with the new information (A name change is NOT valid )
Mongodb Does not actually support any update Operation in GridFs therefor Calling this method should be as calling
CrudRepository.deleteFile(org.bson.types.ObjectId)and thenCrudRepository.saveFile(java.io.InputStream, String,String)It will generate also new FileInfo Including It's Id- Specified by:
updateFilein interfaceCrudRepository<T>- Parameters:
inputStream- new InputStream of the file.storeName- File id to be Updated. (Have to the the same as the original of not it will throw a FileNotFoundException)- Returns:
- The new FileInfo of the "Updated" file
- Throws:
FileNotFoundException- If File with Given Id Does not exists.MongoDataException- If unable to save the File.org.apache.commons.io.FileExistsException- this exception is highly unlikely to happen but posible.
-
findByStringId
Description copied from interface:CrudRepositoryFinds by the Id.
No internal Modification is done, uses Mongodb default '_id' field name
- Specified by:
findByStringIdin interfaceCrudRepository<T>- Parameters:
id- String representation of the Id.- Returns:
- A instance of the object with the given Id.
- Throws:
MongoDataException
-
listFilesByName
- Specified by:
listFilesByNamein interfaceCrudRepository<T>
-
removeByStringId
Description copied from interface:CrudRepositoryRemoves by the Id.
No internal Modification is done, uses Mongodb default '_id' field name
- Specified by:
removeByStringIdin interfaceCrudRepository<T>- Parameters:
id- String representation of the Id.- Throws:
MongoDataException
-
validateObject
protected com.mongodb.gridfs.GridFSDBFile validateObject(String storeName) throws FileNotFoundException - Throws:
FileNotFoundException
-
validateObject
protected com.mongodb.gridfs.GridFSDBFile validateObject(org.bson.types.ObjectId fileId) throws FileNotFoundException - Throws:
FileNotFoundException
-
returnSimple
Actually makes the transformation form Jongo to the Object.- Parameters:
findOne- Find object to transform.- Returns:
- a Object with the results null if nothing is found.
-
returnList
Actually makes the transformation form Jongo to List of Objects.- Parameters:
find- Find object to transform.- Returns:
- a Iterable with the results null if nothing is found.
-
setJongo
@Autowired public void setJongo(@Lazy org.jongo.Jongo jongo) -
setQueries
-
getQueryFor
Get the query string for a given key- Parameters:
key- Key of the query,- Returns:
- Query with the given key. IllegalArgumentException if query does not exist
- Throws:
IllegalArgumentException- if q
-
createSortQuery
protected String createSortQuery(List<org.apache.commons.collections4.keyvalue.DefaultKeyValue<String, Boolean>> fields) Creates a Sort query based on the fields.
Key of the map is the field False=Desc,True=asc for the field, Respect order of the keys- Parameters:
fields- Keys are fields, true if asc, false desc- Returns:
- Sorted Json string with the query.
-