Class AbstractJongoRepository<T>

  • All Implemented Interfaces:
    CrudRepository<T>

    public abstract class AbstractJongoRepository<T>
    extends Object
    implements CrudRepository<T>
    Simple interface to interact with Jongo/MongoDB.
    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.
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      long count()
      Returns the number of all documents in the collection.
      long count​(String query)
      Returns the number of documents that match the query
      long count​(String query, Object... queryParams)
      Returns the number of documents that match the query
      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
      void deleteFile​(String storeName)
      Deletes the File with the given name.
      void deleteFile​(org.bson.types.ObjectId fileId)
      Deletes the File with the given Id.
      Iterable<T> find​(String query)
      Search all documents in the given collection that match the query.
      Iterable<T> find​(String query, Object... queryParams)
      Finds all documents of the given collection that match the template query
      §§
      Iterable<T> findAll()
      Gets all documents of a the given collection.
      T findById​(String id)
      Finds by the Id.
      T findByStringId​(String id)
      Finds by the Id.
      T findOne​(String query)
      Search for documents of the given collection that match the query.
      In only return the first Document
      T findOne​(String query, Object... queryParams)
      Search for documents of the given collection that match the query.
      In only return the first Document
      protected org.jongo.MongoCollection getCollection()
      Gets the Jongo Document.
      FileInfo getFileInfo​(String storeName)
      Gets the file information based on its name..
      FileInfo getFileInfo​(org.bson.types.ObjectId fileId)
      Gets the file information based on its id..
      protected String getQueryFor​(String key)
      Get the query string for a given key
      void init()  
      void insert​(T document)
      Inserts the document into the collection.
      void insert​(T... documents)
      Inserts multiple documents into the collection.
      List<FileInfo> listFilesByName​(String filename)  
      FileInfo readFile​(String storeName)
      Returns the InputStream of the file with the given name.
      FileInfo readFile​(org.bson.types.ObjectId fileId)
      Returns the InputStream of the file with the given id.
      void remove​(String query)
      Removes all Documents that are found using the given query.
      void remove​(String query, Object... queryParams)
      Removes all Documents that are found using the given query.
      void removeById​(String id)
      Removes a Document with the given id
      void removeByStringId​(String id)
      Removes by the Id.
      protected Iterable<T> returnList​(org.jongo.Find find)
      Actually makes the transformation form Jongo to List of Objects.
      protected T returnSimple​(org.jongo.FindOne findOne)
      Actually makes the transformation form Jongo to the Object.
      void save​(String query, Object... queryParams)
      Inserts 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);
      void save​(T document)
      Saves the document into the collection.
      FileInfo saveFile​(InputStream inputStream, String storeName, String contentType)
      Saves the given InputStream as with the given name.
      FileInfo saveFile​(InputStream inputStream, String storeName, String contentType, org.bson.types.ObjectId fileId)
      Saves the given InputStream as with the given name.
      void setJongo​(org.jongo.Jongo jongo)  
      void setQueries​(JongoQueries queries)  
      void update​(String id, Object updateObject)
      Updates the object with the given id with the given Object information.
      void update​(String id, Object updateObject, boolean multi, boolean upsert)
      Updates the object with the given id with the given Object information.
      void update​(String id, String modifier, boolean multi, boolean upsert)
      Updates the given
      void update​(String id, String modifier, boolean multi, boolean upsert, Object... params)
      Updates the given
      FileInfo updateFile​(InputStream inputStream, String storeName, String contentType)
      "Updates" the file with the new information (A name change is NOT valid )
      FileInfo 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)
      FileInfo 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.GridFSDBFile validateObject​(String storeName)  
      protected com.mongodb.gridfs.GridFSDBFile validateObject​(org.bson.types.ObjectId fileId)  
    • Field Detail

      • clazz

        protected Class<? extends T> clazz
      • jongo

        protected org.jongo.Jongo jongo
      • collectionName

        protected String collectionName
      • gridfs

        protected com.mongodb.gridfs.GridFS gridfs
    • Constructor Detail

      • AbstractJongoRepository

        public AbstractJongoRepository()
    • Method Detail

      • getCollection

        protected org.jongo.MongoCollection getCollection()
        Gets the Jongo Document.
        Returns:
        a Jongo Document to interact with the Mongo.
      • save

        public void save​(String query,
                         Object... queryParams)
                  throws MongoDataException
        Description copied from interface: CrudRepository
        Inserts 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:
        save in interface CrudRepository<T>
        Parameters:
        query - Name of the Query to be look in default-queries.xml or custom-queries.properties
        queryParams - Params of the json.
        Throws:
        MongoDataException
      • update

        public void update​(String id,
                           Object updateObject,
                           boolean multi,
                           boolean upsert)
                    throws MongoDataException
        Description copied from interface: CrudRepository
        Updates the object with the given id with the given Object information.
        Specified by:
        update in interface CrudRepository<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

        public void update​(String id,
                           String modifier,
                           boolean multi,
                           boolean upsert)
                    throws MongoDataException
        Description copied from interface: CrudRepository
        Updates the given
        Specified by:
        update in interface CrudRepository<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: CrudRepository
        Updates the given
        Specified by:
        update in interface CrudRepository<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

        public long count​(String query)
                   throws MongoDataException
        Description copied from interface: CrudRepository
        Returns the number of documents that match the query
        Specified by:
        count in interface CrudRepository<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

        public long count​(String query,
                          Object... queryParams)
                   throws MongoDataException
        Description copied from interface: CrudRepository
        Returns the number of documents that match the query
        Specified by:
        count in interface CrudRepository<T>
        Parameters:
        query - the query the documents should match
        queryParams - the query parameters
        Returns:
        the count of documents that match the query
        Throws:
        MongoDataException - if an error occurs
      • findAll

        public Iterable<T> findAll()
                            throws MongoDataException
        Description copied from interface: CrudRepository
        Gets 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:
        findAll in interface CrudRepository<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

        public Iterable<T> find​(String query)
                         throws MongoDataException
        Description copied from interface: CrudRepository
        Search all documents in the given collection that match the query.
        Specified by:
        find in interface CrudRepository<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

        public Iterable<T> find​(String query,
                                Object... queryParams)
                         throws MongoDataException
        Description copied from interface: CrudRepository
        Finds all documents of the given collection that match the template query
        §§
        Specified by:
        find in interface CrudRepository<T>
        Parameters:
        query - Name of the Template Query to be look in default-queries.xml or custom-queries .properties
        queryParams - 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

        public T findOne​(String query)
                  throws MongoDataException
        Description copied from interface: CrudRepository
        Search for documents of the given collection that match the query.
        In only return the first Document
        Specified by:
        findOne in interface CrudRepository<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

        public T findOne​(String query,
                         Object... queryParams)
                  throws MongoDataException
        Description copied from interface: CrudRepository
        Search for documents of the given collection that match the query.
        In only return the first Document
        Specified by:
        findOne in interface CrudRepository<T>
        Parameters:
        query - Name of the Template Query to be look in default-queries.xml or custom-queries .properties
        queryParams - 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

        public void remove​(String query,
                           Object... queryParams)
                    throws MongoDataException
        Description copied from interface: CrudRepository
        Removes all Documents that are found using the given query.
        Specified by:
        remove in interface CrudRepository<T>
        Parameters:
        query - Name of the Template Query to be look in default-queries.xml or custom-queries .properties
        queryParams - Params to be use in the template query. Must match the order of the templates
        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: CrudRepository
        Saves the given InputStream as with the given name. Closes the Stream after its done.
        Specified by:
        saveFile in interface CrudRepository<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: CrudRepository
        Saves the given InputStream as with the given name. Closes the Stream after its done.
        Specified by:
        saveFile in interface CrudRepository<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.
      • returnSimple

        protected T returnSimple​(org.jongo.FindOne findOne)
        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

        protected Iterable<T> returnList​(org.jongo.Find find)
        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

        public void setJongo​(org.jongo.Jongo jongo)
      • setQueries

        public void setQueries​(JongoQueries queries)
      • getQueryFor

        protected String getQueryFor​(String key)
        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.