Class XWikiHibernateStore

  • All Implemented Interfaces:
    XWikiStoreInterface, org.xwiki.component.phase.Initializable

    @Component
    @Named("hibernate")
    @Singleton
    public class XWikiHibernateStore
    extends XWikiHibernateBaseStore
    implements XWikiStoreInterface, org.xwiki.component.phase.Initializable
    The XWiki Hibernate database driver.
    Version:
    $Id: 727c988a694d94a37c3c45e2709b2a0878475057 $
    • Constructor Detail

      • XWikiHibernateStore

        @Deprecated
        public XWikiHibernateStore​(XWiki xwiki,
                                   XWikiContext context)
        Deprecated.
        1.6M1. Use ComponentManager.lookup(XWikiStoreInterface.class) instead.
        This allows to initialize our storage engine. The hibernate config file path is taken from xwiki.cfg or directly in the WEB-INF directory.
        Parameters:
        xwiki -
        context -
      • XWikiHibernateStore

        @Deprecated
        public XWikiHibernateStore​(String hibpath)
        Deprecated.
        1.6M1. Use ComponentManager.lookup(XWikiStoreInterface.class) instead.
        Initialize the storage engine with a specific path. This is used for tests.
        Parameters:
        hibpath -
      • XWikiHibernateStore

        public XWikiHibernateStore()
        Empty constructor needed for component manager.
    • Method Detail

      • initialize

        public void initialize()
                        throws org.xwiki.component.phase.InitializationException
        Specified by:
        initialize in interface org.xwiki.component.phase.Initializable
        Throws:
        org.xwiki.component.phase.InitializationException
      • isWikiNameAvailable

        public boolean isWikiNameAvailable​(String wikiName,
                                           XWikiContext inputxcontext)
                                    throws XWikiException
        Description copied from interface: XWikiStoreInterface
        Indicate if the provided wiki name could be used to create a new wiki.
        Specified by:
        isWikiNameAvailable in interface XWikiStoreInterface
        Parameters:
        wikiName - the name of the wiki.
        inputxcontext - the XWiki context.
        Returns:
        true if the name is already used, false otherwise.
        Throws:
        XWikiException - error when looking if wiki name already used.
      • executeDeleteWikiStatement

        protected void executeDeleteWikiStatement​(Statement statement,
                                                  DatabaseProduct databaseProduct,
                                                  String escapedSchemaName)
                                           throws SQLException
        Execute the SQL statement on the database to remove a wiki.
        Parameters:
        statement - the statement object on which to execute the wiki deletion
        databaseProduct - the database type
        escapedSchemaName - the subwiki schema name being deleted
        Throws:
        SQLException - in case of an error while deleting the sub wiki
      • renameXWikiDoc

        public void renameXWikiDoc​(XWikiDocument doc,
                                   DocumentReference newReference,
                                   XWikiContext inputxcontext)
                            throws XWikiException
        Atomic operation for renaming a document. This operation will rename the document in DB by performing updates in all tables the document name is used. This implementation of rename relies on saveXWikiDoc(XWikiDocument, XWikiContext, boolean) and deleteXWikiDoc(XWikiDocument, XWikiContext, boolean). The idea here is that the document reference has many impacts everywhere and it's actually safer to keep relying on existing save method. Now all the benefit of this rename, is to call those methods in the same transaction when both old and new reference belong to the same wiki (same database). If the references belong to different databases we are force to use two transactions.
        Specified by:
        renameXWikiDoc in interface XWikiStoreInterface
        Parameters:
        doc - the actual document instance to rename.
        newReference - the new reference to use for renaming.
        inputxcontext - the current context.
        Throws:
        XWikiException - in case of problem during the rename.
      • searchDocumentReferences

        public List<DocumentReference> searchDocumentReferences​(String parametrizedSqlClause,
                                                                int nb,
                                                                int start,
                                                                List<?> parameterValues,
                                                                XWikiContext context)
                                                         throws XWikiException
        Description copied from interface: XWikiStoreInterface
        Search documents by passing HQL where clause values as parameters. This allows generating a Named HQL query which will automatically encode the passed values (like escaping single quotes). This API is recommended to be used over the other similar methods where the values are passed inside the where clause and for which you'll need to do the encoding/escaping yourself before calling them.

        Example:

         
         #set($orphans = $xwiki.searchDocuments(" where doc.fullName <> ?1 and (doc.parent = ?2 or "
             + "(doc.parent = ?3 and doc.space = ?4))",
             ["${doc.fullName}as", ${doc.fullName}, ${doc.name}, ${doc.space}]))
         
         
        Specified by:
        searchDocumentReferences in interface XWikiStoreInterface
        Parameters:
        parametrizedSqlClause - the HQL where clause. For example: where doc.fullName <> ?1 and (doc.parent = ?2 or (doc.parent = ?3 and doc.space = ?4))
        nb - the number of rows to return. If 0 then all rows are returned
        start - the number of rows to skip. If 0 don't skip any row
        parameterValues - the where clause values that replace the question marks (?)
        context - the XWiki context required for getting information about the execution context
        Returns:
        a list of document references
        Throws:
        XWikiException - in case of error while performing the query
      • search

        public <T> List<T> search​(String sql,
                                  int nb,
                                  int start,
                                  XWikiContext context)
                           throws XWikiException
        Description copied from interface: XWikiStoreInterface
        Execute a reading request and return result.
        Specified by:
        search in interface XWikiStoreInterface
        Parameters:
        sql - the HQL request clause. For example: where doc.fullName <> ?1 and (doc.parent = ?2 or (doc.parent = ?3 and doc.space = ?4))
        nb - the number of rows to return. If 0 then all rows are returned.
        start - the number of rows to skip. If 0 don't skip any row.
        context - the XWiki context required for getting information about the execution context.
        Returns:
        a list of XWikiDocument.
        Throws:
        XWikiException - in case of error while performing the query.
      • search

        public <T> List<T> search​(String sql,
                                  int nb,
                                  int start,
                                  List<?> parameterValues,
                                  XWikiContext context)
                           throws XWikiException
        Description copied from interface: XWikiStoreInterface
        Execute a reading request with parameters and return result.

        Execute query by passing HQL request values as parameters. This allows generating a Named HQL query which will automatically encode the passed values (like escaping single quotes). This API is recommended to be used over the other similar methods where the values are passed inside the where clause and for which you'll need to do the encoding/escaping yourself before calling them.

        Specified by:
        search in interface XWikiStoreInterface
        Parameters:
        sql - the HQL request.
        nb - the number of rows to return. If 0 then all rows are returned.
        start - the number of rows to skip. If 0 don't skip any row.
        parameterValues - the where clause values that replace the question marks (?).
        context - the XWiki context required for getting information about the execution context.
        Returns:
        a list of XWikiDocument.
        Throws:
        XWikiException - in case of error while performing the query.
      • search

        public <T> List<T> search​(String sql,
                                  int nb,
                                  int start,
                                  Object[][] whereParams,
                                  XWikiContext context)
                           throws XWikiException
        Description copied from interface: XWikiStoreInterface
        Execute a reading request and return result.
        Specified by:
        search in interface XWikiStoreInterface
        Parameters:
        sql - the HQL request.
        nb - the number of rows to return. If 0 then all rows are returned.
        start - the number of rows to skip. If 0 don't skip any row.
        whereParams - if not null add to sql a where clause based on a table of table containing field name, field value and compared symbol (=, >, etc.).
        context - the XWiki context required for getting information about the execution context.
        Returns:
        a list of XWikiDocument.
        Throws:
        XWikiException - in case of error while performing the query.
      • search

        public <T> List<T> search​(String sql,
                                  int nb,
                                  int start,
                                  Object[][] whereParams,
                                  List<?> parameterValues,
                                  XWikiContext inputxcontext)
                           throws XWikiException
        Description copied from interface: XWikiStoreInterface
        Execute a reading request with parameters and return result.

        Execute query by passing HQL request values as parameters. This allows generating a Named HQL query which will automatically encode the passed values (like escaping single quotes). This API is recommended to be used over the other similar methods where the values are passed inside the where clause and for which you'll need to do the encoding/escaping yourself before calling them.

        Specified by:
        search in interface XWikiStoreInterface
        Parameters:
        sql - the HQL request.
        nb - the number of rows to return. If 0 then all rows are returned.
        start - the number of rows to skip. If 0 don't skip any row.
        whereParams - if not null add to sql a where clause based on a table of table containing field name, field value and compared symbol (=, >, etc.).
        parameterValues - the where clause values that replace the question marks (?).
        inputxcontext - the XWiki context required for getting information about the execution context.
        Returns:
        a list of XWikiDocument.
        Throws:
        XWikiException - in case of error while performing the query.
      • countDocuments

        public int countDocuments​(String parametrizedSqlClause,
                                  List<?> parameterValues,
                                  XWikiContext context)
                           throws XWikiException
        Description copied from interface: XWikiStoreInterface
        API allowing to count the total number of documents that would be returned by a parameterized query.
        Specified by:
        countDocuments in interface XWikiStoreInterface
        Parameters:
        parametrizedSqlClause - Parameterized query to use, similar to the ones accepted by XWikiStoreInterface.searchDocuments(String, List, XWikiContext). It should not contain order by or group clauses, since this kind of queries are not portable.
        parameterValues - The parameter values that replace the question marks.
        context - The current request context.
        Returns:
        The number of documents that matched the query.
        Throws:
        XWikiException - if there was a problem executing the query.
      • searchDocuments

        public List<XWikiDocument> searchDocuments​(String wheresql,
                                                   boolean distinctbylanguage,
                                                   boolean customMapping,
                                                   boolean checkRight,
                                                   int nb,
                                                   int start,
                                                   XWikiContext context)
                                            throws XWikiException
        Description copied from interface: XWikiStoreInterface
        Search documents in the storing system.
        Specified by:
        searchDocuments in interface XWikiStoreInterface
        Parameters:
        wheresql - the HQL where clause. For example: where doc.fullName <> ?1 and (doc.parent = ?2 or (doc.parent = ?3 and doc.space = ?4))
        distinctbylanguage - when a document has multiple version for each language it is returned as one document a language.
        customMapping - inject custom mapping in session.
        checkRight - if true check for each found document if context's user has "view" rights for it.
        nb - the number of rows to return. If 0 then all rows are returned.
        start - the number of rows to skip. If 0 don't skip any row.
        context - the XWiki context required for getting information about the execution context.
        Returns:
        a list of XWikiDocument.
        Throws:
        XWikiException - in case of error while performing the query.
      • searchDocuments

        public List<XWikiDocument> searchDocuments​(String wheresql,
                                                   boolean distinctbylanguage,
                                                   boolean customMapping,
                                                   boolean checkRight,
                                                   int nb,
                                                   int start,
                                                   List<?> parameterValues,
                                                   XWikiContext inputxcontext)
                                            throws XWikiException
        Description copied from interface: XWikiStoreInterface
        Search documents in the storing system.

        Search documents by passing HQL where clause values as parameters. This allows generating a Named HQL query which will automatically encode the passed values (like escaping single quotes). This API is recommended to be used over the other similar methods where the values are passed inside the where clause and for which you'll need to do the encoding/escpaing yourself before calling them.

        Specified by:
        searchDocuments in interface XWikiStoreInterface
        Parameters:
        wheresql - the HQL where clause. For example: where doc.fullName <> ?1 and (doc.parent = ?2 or (doc.parent = ?3 and doc.space = ?4))
        distinctbylanguage - when a document has multiple version for each language it is returned as one document a language.
        customMapping - inject custom mapping in session.
        checkRight - if true check for each found document if context's user has "view" rights for it.
        nb - the number of rows to return. If 0 then all rows are returned.
        start - the number of rows to skip. If 0 don't skip any row.
        parameterValues - the where clause values that replace the question marks (?).
        inputxcontext - the XWiki context required for getting information about the execution context.
        Returns:
        a list of XWikiDocument.
        Throws:
        XWikiException - in case of error while performing the query.
      • createSQLQuery

        protected String createSQLQuery​(String queryPrefix,
                                        String whereSQL)
        Parameters:
        queryPrefix - the start of the SQL query (for example "select distinct doc.space, doc.name")
        whereSQL - the where clause to append
        Returns:
        the full formed SQL query, to which the order by columns have been added as returned columns (this is required for example for HSQLDB).
      • getColumnsForSelectStatement

        protected String getColumnsForSelectStatement​(String whereSQL)
        Parameters:
        whereSQL - the SQL where clause
        Returns:
        the list of columns to return in the select clause as a string starting with ", " if there are columns or an empty string otherwise. The returned columns are extracted from the where clause. One reason for doing so is because HSQLDB only support SELECT DISTINCT SQL statements where the columns operated on are returned from the query.
      • injectCustomMapping

        public boolean injectCustomMapping​(String className,
                                           String customMapping,
                                           XWikiContext inputxcontext)
                                    throws XWikiException
        Parameters:
        className - the name of the class to map
        customMapping - the custom mapping to inject for this class
        inputxcontext - the current XWikiContext
        Returns:
        a boolean indicating if the mapping has been added to the current hibernate configuration, and a reload of the factory is required.
        Throws:
        XWikiException - if an error occurs
        Since:
        4.0M1
      • searchDocuments

        public List<XWikiDocument> searchDocuments​(String wheresql,
                                                   XWikiContext context)
                                            throws XWikiException
        Description copied from interface: XWikiStoreInterface
        Search documents in the storing system.
        Specified by:
        searchDocuments in interface XWikiStoreInterface
        Parameters:
        wheresql - the HQL where clause. For example: where doc.fullName <> ?1 and (doc.parent = ?2 or (doc.parent = ?3 and doc.space = ?4))
        context - the XWiki context required for getting information about the execution context.
        Returns:
        a list of XWikiDocument.
        Throws:
        XWikiException - in case of error while performing the query.
      • searchDocuments

        public List<XWikiDocument> searchDocuments​(String wheresql,
                                                   List<?> parameterValues,
                                                   XWikiContext context)
                                            throws XWikiException
        Description copied from interface: XWikiStoreInterface
        Search documents in the storing system.

        Search documents by passing HQL where clause values as parameters. This allows generating a Named HQL query which will automatically encode the passed values (like escaping single quotes). This API is recommended to be used over the other similar methods where the values are passed inside the where clause and for which you'll need to do the encoding/escpaing yourself before calling them.

        Specified by:
        searchDocuments in interface XWikiStoreInterface
        Parameters:
        wheresql - the HQL where clause. For example: where doc.fullName <> ?1 and (doc.parent = ?2 or (doc.parent = ?3 and doc.space = ?4))
        parameterValues - the where clause values that replace the question marks (?).
        context - the XWiki context required for getting information about the execution context.
        Returns:
        a list of XWikiDocument.
        Throws:
        XWikiException - in case of error while performing the query.
      • searchDocuments

        public List<XWikiDocument> searchDocuments​(String wheresql,
                                                   boolean distinctbylanguage,
                                                   XWikiContext context)
                                            throws XWikiException
        Description copied from interface: XWikiStoreInterface
        Search documents in the storing system.
        Specified by:
        searchDocuments in interface XWikiStoreInterface
        Parameters:
        wheresql - the HQL where clause. For example: where doc.fullName <> ?1 and (doc.parent = ?2 or (doc.parent = ?3 and doc.space = ?4))
        distinctbylanguage - when a document has multiple version for each language it is returned as one document a language.
        context - the XWiki context required for getting information about the execution context.
        Returns:
        a list of XWikiDocument.
        Throws:
        XWikiException - in case of error while performing the query.
      • searchDocuments

        public List<XWikiDocument> searchDocuments​(String wheresql,
                                                   boolean distinctbylanguage,
                                                   boolean customMapping,
                                                   XWikiContext context)
                                            throws XWikiException
        Description copied from interface: XWikiStoreInterface
        Search documents in the storing system.
        Specified by:
        searchDocuments in interface XWikiStoreInterface
        Parameters:
        wheresql - the HQL where clause. For example: where doc.fullName <> ?1 and (doc.parent = ?2 or (doc.parent = ?3 and doc.space = ?4))
        distinctbylanguage - when a document has multiple version for each language it is returned as one document a language.
        customMapping - inject custom mapping in session.
        context - the XWiki context required for getting information about the execution context.
        Returns:
        a list of XWikiDocument.
        Throws:
        XWikiException - in case of error while performing the query.
      • searchDocuments

        public List<XWikiDocument> searchDocuments​(String wheresql,
                                                   int nb,
                                                   int start,
                                                   XWikiContext context)
                                            throws XWikiException
        Description copied from interface: XWikiStoreInterface
        Search documents in the storing system.
        Specified by:
        searchDocuments in interface XWikiStoreInterface
        Parameters:
        wheresql - the HQL where clause. For example: where doc.fullName <> ?1 and (doc.parent = ?2 or (doc.parent = ?3 and doc.space = ?4))
        nb - the number of rows to return. If 0 then all rows are returned.
        start - the number of rows to skip. If 0 don't skip any row.
        context - the XWiki context required for getting information about the execution context.
        Returns:
        a list of XWikiDocument.
        Throws:
        XWikiException - in case of error while performing the query.
      • searchDocuments

        public List<XWikiDocument> searchDocuments​(String wheresql,
                                                   int nb,
                                                   int start,
                                                   List<?> parameterValues,
                                                   XWikiContext context)
                                            throws XWikiException
        Description copied from interface: XWikiStoreInterface
        Search documents in the storing system.

        Search documents by passing HQL where clause values as parameters. This allows generating a Named HQL query which will automatically encode the passed values (like escaping single quotes). This API is recommended to be used over the other similar methods where the values are passed inside the where clause and for which you'll need to do the encoding/escpaing yourself before calling them.

        Specified by:
        searchDocuments in interface XWikiStoreInterface
        Parameters:
        wheresql - the HQL where clause. For example: where doc.fullName <> ?1 and (doc.parent = ?2 or (doc.parent = ?3 and doc.space = ?4))
        nb - the number of rows to return. If 0 then all rows are returned.
        start - the number of rows to skip. If 0 don't skip any row.
        parameterValues - the where clause values that replace the question marks (?).
        context - the XWiki context required for getting information about the execution context.
        Returns:
        a list of XWikiDocument.
        Throws:
        XWikiException - in case of error while performing the query.
      • searchDocuments

        public List<XWikiDocument> searchDocuments​(String wheresql,
                                                   boolean distinctbylanguage,
                                                   int nb,
                                                   int start,
                                                   List<?> parameterValues,
                                                   XWikiContext context)
                                            throws XWikiException
        Description copied from interface: XWikiStoreInterface
        Search documents in the storing system.
        Specified by:
        searchDocuments in interface XWikiStoreInterface
        Parameters:
        wheresql - the HQL where clause. For example: where doc.fullName <> ?1 and (doc.parent = ?2 or (doc.parent = ?3 and doc.space = ?4))
        distinctbylanguage - when a document has multiple version for each language it is returned as one document a language.
        nb - the number of rows to return. If 0 then all rows are returned.
        start - the number of rows to skip. If 0 don't skip any row.
        parameterValues - the where clause values that replace the question marks (?).
        context - the XWiki context required for getting information about the execution context.
        Returns:
        a list of XWikiDocument.
        Throws:
        XWikiException - in case of error while performing the query.
      • searchDocuments

        public List<XWikiDocument> searchDocuments​(String wheresql,
                                                   boolean distinctbylanguage,
                                                   int nb,
                                                   int start,
                                                   XWikiContext context)
                                            throws XWikiException
        Description copied from interface: XWikiStoreInterface
        Search documents in the storing system.
        Specified by:
        searchDocuments in interface XWikiStoreInterface
        Parameters:
        wheresql - the HQL where clause. For example: where doc.fullName <> ?1 and (doc.parent = ?2 or (doc.parent = ?3 and doc.space = ?4))
        distinctbylanguage - when a document has multiple version for each language it is returned as one document a language.
        nb - the number of rows to return. If 0 then all rows are returned.
        start - the number of rows to skip. If 0 don't skip any row.
        context - the XWiki context required for getting information about the execution context.
        Returns:
        a list of XWikiDocument.
        Throws:
        XWikiException - in case of error while performing the query.
      • searchDocuments

        public List<XWikiDocument> searchDocuments​(String wheresql,
                                                   boolean distinctbylanguage,
                                                   boolean customMapping,
                                                   int nb,
                                                   int start,
                                                   XWikiContext context)
                                            throws XWikiException
        Description copied from interface: XWikiStoreInterface
        Search documents in the storing system.
        Specified by:
        searchDocuments in interface XWikiStoreInterface
        Parameters:
        wheresql - the HQL where clause. For example: where doc.fullName <> ?1 and (doc.parent = ?2 or (doc.parent = ?3 and doc.space = ?4))
        distinctbylanguage - when a document has multiple version for each language it is returned as one document a language.
        customMapping - inject custom mapping in session.
        nb - the number of rows to return. If 0 then all rows are returned.
        start - the number of rows to skip. If 0 don't skip any row.
        context - the XWiki context required for getting information about the execution context.
        Returns:
        a list of XWikiDocument.
        Throws:
        XWikiException - in case of error while performing the query.
      • searchDocuments

        public List<XWikiDocument> searchDocuments​(String wheresql,
                                                   boolean distinctbylanguage,
                                                   boolean customMapping,
                                                   int nb,
                                                   int start,
                                                   List<?> parameterValues,
                                                   XWikiContext context)
                                            throws XWikiException
        Description copied from interface: XWikiStoreInterface
        Search documents in the storing system.

        Search documents by passing HQL where clause values as parameters. This allows generating a Named HQL query which will automatically encode the passed values (like escaping single quotes). This API is recommended to be used over the other similar methods where the values are passed inside the where clause and for which you'll need to do the encoding/escpaing yourself before calling them.

        Specified by:
        searchDocuments in interface XWikiStoreInterface
        Parameters:
        wheresql - the HQL where clause. For example: where doc.fullName <> ?1 and (doc.parent = ?2 or (doc.parent = ?3 and doc.space = ?4))
        distinctbylanguage - when a document has multiple version for each language it is returned as one document a language.
        customMapping - inject custom mapping in session.
        nb - the number of rows to return. If 0 then all rows are returned.
        start - the number of rows to skip. If 0 don't skip any row.
        parameterValues - the where clause values that replace the question marks (?).
        context - the XWiki context required for getting information about the execution context.
        Returns:
        a list of XWikiDocument.
        Throws:
        XWikiException - in case of error while performing the query.
      • getQueryManager

        public QueryManager getQueryManager()
        Specified by:
        getQueryManager in interface XWikiStoreInterface
        Returns:
        QueryManager used for creating queries to store. Use QueryManager instead of #search* methods because it is more abstract from store implementation and support multiple query languages.
      • getLimitSize

        public int getLimitSize​(XWikiContext context,
                                Class<?> entityType,
                                String propertyName)
        Description copied from interface: XWikiStoreInterface
        Get the limit size of a property.
        Specified by:
        getLimitSize in interface XWikiStoreInterface
        Parameters:
        context - the context of the wiki to retrieve the property
        entityType - the entityType where the property is located.
        propertyName - the property on which we want the limit size.
        Returns:
        an integer representing the limit size.