Class SQLSession

java.lang.Object
org.nuxeo.ecm.directory.BaseSession
org.nuxeo.ecm.directory.sql.SQLSession
All Implemented Interfaces:
AutoCloseable, EntrySource, Session

public class SQLSession extends BaseSession
This class represents a session against an SQLDirectory.
  • Field Details

  • Constructor Details

  • Method Details

    • getDirectory

      public SQLDirectory getDirectory()
      Description copied from class: BaseSession
      To be implemented with a more specific return type.
      Specified by:
      getDirectory in class BaseSession
    • getEntryFromSource

      public DocumentModel getEntryFromSource(String id, boolean fetchReferences)
      Specified by:
      getEntryFromSource in interface EntrySource
      Overrides:
      getEntryFromSource in class BaseSession
    • getReadColumns

      protected List<Column> getReadColumns()
    • getReadColumnsSQL

      protected String getReadColumnsSQL()
    • getIdColumn

      protected Column getIdColumn()
    • fieldMapToDocumentModel

      protected DocumentModel fieldMapToDocumentModel(Map<String,Object> fieldMap)
    • checkConcurrentUpdate

      protected void checkConcurrentUpdate(Throwable e) throws ConcurrentUpdateException
      Checks the SQL error we got and determine if a concurrent update happened. Throws if that's the case.
      Parameters:
      e - the exception
      Throws:
      ConcurrentUpdateException
      Since:
      7.10-HF04, 8.2
    • addFilterWhereClause

      protected String addFilterWhereClause(String whereClause)
    • addFilterWhereClause

      protected void addFilterWhereClause(StringBuilder clause, List<SQLQueryBuilder.ColumnAndValue> params)
    • addFilterValues

      protected void addFilterValues(PreparedStatement ps, int startIdx)
    • addFilterValuesForLog

      protected void addFilterValuesForLog(List<Serializable> values)
    • getPassword

      protected String getPassword(String id)
      Internal method to read the hashed password for authentication.
      Since:
      9.1
    • deleteEntry

      public void deleteEntry(String id)
      Description copied from interface: Session
      Deletes a directory entry by id.
      Specified by:
      deleteEntry in interface Session
      Overrides:
      deleteEntry in class BaseSession
      Parameters:
      id - the id of the entry to delete
    • query

      public DocumentModelList query(Map<String,Serializable> filter, Set<String> fulltext, Map<String,String> orderBy, boolean fetchReferences, int limit, int offset)
      Description copied from interface: Session
      Executes a query with the possibility to fetch a subset of the results. org.nuxeo.ecm.directory.BaseSession provides a default implementation fetching all results to return the subset. Not recommended.
      limit - maximum number of results ignored if less than 1
      offset - number of rows skipped before starting, will be 0 if less than 0.
      See Also:
    • query

      public DocumentModelList query(QueryBuilder queryBuilder, boolean fetchReferences)
      Description copied from interface: Session
      Executes a query with the possibility to fetch a subset of the results.
      Parameters:
      queryBuilder - the query to use, including limit, offset, ordering and countTotal
      fetchReferences - boolean stating if references have to be fetched
      Returns:
      the list of documents, where the total size may be present if countTotal was true
    • queryIds

      public List<String> queryIds(QueryBuilder queryBuilder)
      Description copied from interface: Session
      Executes a query with the possibility to fetch a subset of the results. Returns the matching ids.
      Parameters:
      queryBuilder - the query to use, including limit, offset and ordering
      Returns:
      the list of document ids
    • createEntryWithoutReferences

      protected DocumentModel createEntryWithoutReferences(Map<String,Object> fieldMap)
      Description copied from class: BaseSession
      To be implemented for specific creation.
      Specified by:
      createEntryWithoutReferences in class BaseSession
    • setIdFieldInMap

      protected void setIdFieldInMap(ResultSet rs, Column column, String idFieldName, Map<String,Object> fieldMap) throws SQLException
      Throws:
      SQLException
    • prepareStatementWithAutoKeys

      protected PreparedStatement prepareStatementWithAutoKeys(String sql) throws SQLException
      Create a PreparedStatement returning the id key if it is auto-incremented and dialect has identity generated key (Dialect.hasIdentityGeneratedKey()).
      Throws:
      SQLException
      Since:
      10.1
    • updateEntryWithoutReferences

      protected List<String> updateEntryWithoutReferences(DocumentModel docModel)
      Description copied from class: BaseSession
      To be implemented for specific update.
      Specified by:
      updateEntryWithoutReferences in class BaseSession
    • deleteEntryWithoutReferences

      public void deleteEntryWithoutReferences(String id)
      Description copied from class: BaseSession
      To be implemented for specific deletion.
      Specified by:
      deleteEntryWithoutReferences in class BaseSession
    • fillPreparedStatementFields

      protected void fillPreparedStatementFields(Map<String,Object> filterMap, List<Column> orderedColumns, PreparedStatement ps)
    • fieldValueForWrite

      protected Serializable fieldValueForWrite(Object value, Column column)
    • close

      public void close()
      Description copied from interface: Session
      Closes the session and all open result sets obtained from this session.

      Releases this Connection object's resources immediately instead of waiting for them to be automatically released.

      TODO: should this operation auto-commit pending changes?

    • isLive

      public boolean isLive()
      Enable connection status checking on SQL directory connections
      Since:
      5.7.2
    • authenticate

      public boolean authenticate(String username, String password)
      Description copied from interface: Session
      Checks that the credentials provided by the UserManager match those registered in the directory. If username is not in the directory, this should return false instead of throrwing an exception.
      Returns:
      true is the credentials match those stored in the directory
    • isAuthenticating

      public boolean isAuthenticating()
      Description copied from interface: Session
      Tells whether the directory implementation can be used as an authenticating backend for the UserManager (based on login / password check).
      Specified by:
      isAuthenticating in interface Session
      Overrides:
      isAuthenticating in class BaseSession
      Returns:
      true is the directory is authentication aware
    • hasEntry

      public boolean hasEntry(String id)
      Description copied from interface: Session
      Returns true if session has an entry with given id.
    • toString

      public String toString()
      Overrides:
      toString in class Object