## org.hibernate.envers.reader
Class AuditReaderImpl

    java.lang.Object
      org.hibernate.envers.reader.AuditReaderImpl

All Implemented Interfaces:
  AuditReader, AuditReaderImplementor

    public class AuditReaderImpl

extends Object
implements AuditReaderImplementor

Author:
  Adam Warski (adam at warski dot org), Hernán Chanfreau

Constructor Summary
`AuditReaderImpl(AuditConfiguration verCfg, Session session, SessionImplementor sessionImplementor)`

Method Summary
`AuditQueryCreator` `createQuery()`

`

`<T> T`

`

`find(Class<T> cls, Object primaryKey, Number revision)`
Find an entity by primary key at the given revision.

`

`<T> T`

`

`find(Class<T> cls, String entityName, Object primaryKey, Number revision)`
Find an entity by primary key at the given revision with the specified entityName.

`

`<T> T`

`

`findRevision(Class<T> revisionEntityClass, Number revision)`
A helper method; should be used only if a custom revision entity is used.

`

`<T> Map<Number,T>`

`

`findRevisions(Class<T> revisionEntityClass, Set<Number> revisions)`
Find a map of revisions using the revision numbers specified.

`

`<T> T`

`

`getCurrentRevision(Class<T> revisionEntityClass, boolean persist)`
Gets an instance of the current revision entity, to which any entries in the audit tables will be bound.

`String` `getEntityName(Object primaryKey, Number revision, Object entity)`
`FirstLevelCache` `getFirstLevelCache()`
`Date` `getRevisionDate(Number revision)` Get the date, at which a revision was created.
`Number` `getRevisionNumberForDate(Date date)` Gets the revision number, that corresponds to the given date.
`List<Number>` `getRevisions(Class<?> cls, Object primaryKey)` Get a list of revision numbers, at which an entity was modified.
`List<Number>` `getRevisions(Class<?> cls, String entityName, Object primaryKey)` Get a list of revision numbers, at which an entity was modified, looking by entityName.
`Session` `getSession()`
`SessionImplementor` `getSessionImplementor()`
`boolean` `isEntityClassAudited(Class<?> entityClass)` Checks if the entityClass was configured to be audited.
`boolean` `isEntityNameAudited(String entityName)` Checks if the entityName was configured to be audited.

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

Constructor Detail

### AuditReaderImpl

    public AuditReaderImpl(AuditConfiguration verCfg,
                           Session session,
                           SessionImplementor sessionImplementor)

Method Detail

### getSessionImplementor

    public SessionImplementor getSessionImplementor()

  Specified by:
    `getSessionImplementor` in interface `AuditReaderImplementor`

### getSession

    public Session getSession()

  Specified by:
    `getSession` in interface `AuditReaderImplementor`

### getFirstLevelCache

    public FirstLevelCache getFirstLevelCache()

  Specified by:
    `getFirstLevelCache` in interface `AuditReaderImplementor`

### find

    public <T> T find(Class<T> cls,
                      Object primaryKey,
                      Number revision)
           throws IllegalArgumentException,
                  NotAuditedException,
                  IllegalStateException

  Description copied from interface: `AuditReader`
  Find an entity by primary key at the given revision.

  Specified by:
    `find` in interface `AuditReader`
  Parameters:
    `cls` - Class of the entity.
    `primaryKey` - Primary key of the entity.
    `revision` - Revision in which to get the entity.
  Returns:
    The found entity instance at the given revision (its properties may be partially filled if not all properties are audited) or null, if an entity with that id didn't exist at that revision.
  Throws:
    `IllegalArgumentException` - If cls or primaryKey is null or revision is less or equal to 0.
    `NotAuditedException` - When entities of the given class are not audited.
    `IllegalStateException` - If the associated entity manager is closed.

### find

    public <T> T find(Class<T> cls,
                      String entityName,
                      Object primaryKey,
                      Number revision)
           throws IllegalArgumentException,
                  NotAuditedException,
                  IllegalStateException

  Description copied from interface: `AuditReader`
  Find an entity by primary key at the given revision with the specified entityName.

  Specified by:
    `find` in interface `AuditReader`
  Parameters:
    `cls` - Class of the entity.
    `entityName` - Name of the entity (if can't be guessed basing on the `cls`).
    `primaryKey` - Primary key of the entity.
    `revision` - Revision in which to get the entity.
  Returns:
    The found entity instance at the given revision (its properties may be partially filled if not all properties are audited) or null, if an entity with that id didn't exist at that revision.
  Throws:
    `IllegalArgumentException` - If cls or primaryKey is null or revision is less or equal to 0.
    `NotAuditedException` - When entities of the given class are not audited.
    `IllegalStateException` - If the associated entity manager is closed.

### getRevisions

    public List<Number> getRevisions(Class<?> cls,
                                     Object primaryKey)
                              throws IllegalArgumentException,
                                     NotAuditedException,
                                     IllegalStateException

  Description copied from interface: `AuditReader`
  Get a list of revision numbers, at which an entity was modified.

  Specified by:
    `getRevisions` in interface `AuditReader`
  Parameters:
    `cls` - Class of the entity.
    `primaryKey` - Primary key of the entity.
  Returns:
    A list of revision numbers, at which the entity was modified, sorted in ascending order (so older revisions come first).
  Throws:
    `IllegalArgumentException` - If cls or primaryKey is null.
    `NotAuditedException` - When entities of the given class are not audited.
    `IllegalStateException` - If the associated entity manager is closed.

### getRevisions

    public List<Number> getRevisions(Class<?> cls,
                                     String entityName,
                                     Object primaryKey)
                              throws IllegalArgumentException,
                                     NotAuditedException,
                                     IllegalStateException

  Description copied from interface: `AuditReader`
  Get a list of revision numbers, at which an entity was modified, looking by entityName.

  Specified by:
    `getRevisions` in interface `AuditReader`
  Parameters:
    `cls` - Class of the entity.
    `entityName` - Name of the entity (if can't be guessed basing on the `cls`).
    `primaryKey` - Primary key of the entity.
  Returns:
    A list of revision numbers, at which the entity was modified, sorted in ascending order (so older revisions come first).
  Throws:
    `IllegalArgumentException` - If cls or primaryKey is null.
    `NotAuditedException` - When entities of the given class are not audited.
    `IllegalStateException` - If the associated entity manager is closed.

### getRevisionDate

    public Date getRevisionDate(Number revision)
                         throws IllegalArgumentException,
                                RevisionDoesNotExistException,
                                IllegalStateException

  Description copied from interface: `AuditReader`
  Get the date, at which a revision was created.

  Specified by:
    `getRevisionDate` in interface `AuditReader`
  Parameters:
    `revision` - Number of the revision for which to get the date.
  Returns:
    Date of commiting the given revision.
  Throws:
    `IllegalArgumentException` - If revision is less or equal to 0.
    `RevisionDoesNotExistException` - If the revision does not exist.
    `IllegalStateException` - If the associated entity manager is closed.

### getRevisionNumberForDate

    public Number getRevisionNumberForDate(Date date)

  Description copied from interface: `AuditReader`
  Gets the revision number, that corresponds to the given date. More precisely, returns the number of the highest revision, which was created on or before the given date. So: `getRevisionDate(getRevisionNumberForDate(date)) <= date` and `getRevisionDate(getRevisionNumberForDate(date)+1) > date`.

  Specified by:
    `getRevisionNumberForDate` in interface `AuditReader`
  Parameters:
    `date` - Date for which to get the revision.
  Returns:
    Revision number corresponding to the given date.

### findRevision

    public <T> T findRevision(Class<T> revisionEntityClass,
                              Number revision)
                   throws IllegalArgumentException,
                          RevisionDoesNotExistException,
                          IllegalStateException

  Description copied from interface: `AuditReader`
  A helper method; should be used only if a custom revision entity is used. See also `RevisionEntity`.

  Specified by:
    `findRevision` in interface `AuditReader`
  Parameters:
    `revisionEntityClass` - Class of the revision entity. Should be annotated with `RevisionEntity`.
    `revision` - Number of the revision for which to get the data.
  Returns:
    Entity containing data for the given revision.
  Throws:
    `IllegalArgumentException` - If revision is less or equal to 0 or if the class of the revision entity is invalid.
    `RevisionDoesNotExistException` - If the revision does not exist.
    `IllegalStateException` - If the associated entity manager is closed.

### findRevisions

    public <T> Map<Number,T> findRevisions(Class<T> revisionEntityClass,
                                           Set<Number> revisions)
                                throws IllegalArgumentException,
                                       IllegalStateException

  Description copied from interface: `AuditReader`
  Find a map of revisions using the revision numbers specified.

  Specified by:
    `findRevisions` in interface `AuditReader`
  Parameters:
    `revisionEntityClass` - Class of the revision entity. Should be annotated with `RevisionEntity`.
    `revisions` - Revision numbers of the revision for which to get the data.
  Returns:
    A map of revision number and the given revision entity.
  Throws:
    `IllegalArgumentException` - If a revision number is less or equal to 0 or if the class of the revision entity is invalid.
    `IllegalStateException` - If the associated entity manager is closed.

### getCurrentRevision

    public <T> T getCurrentRevision(Class<T> revisionEntityClass,
                                    boolean persist)

  Description copied from interface: `AuditReader`
  Gets an instance of the current revision entity, to which any entries in the audit tables will be bound. Please note the if `persist` is `false`, and no audited entities are modified in this session, then the obtained revision entity instance won't be persisted. If `persist` is `true`, the revision entity instance will always be persisted, regardless of whether audited entities are changed or not.

  Specified by:
    `getCurrentRevision` in interface `AuditReader`
  Parameters:
    `revisionEntityClass` - Class of the revision entity. Should be annotated with `RevisionEntity`.
    `persist` - If the revision entity is not yet persisted, should it become persisted. This way, the primary identifier (id) will be filled (if it's assigned by the DB) and available, but the revision entity will be persisted even if there are no changes to audited entities. Otherwise, the revision number (id) can be `null`.
  Returns:
    The current revision entity, to which any entries in the audit tables will be bound.

### createQuery

    public AuditQueryCreator createQuery()

  Specified by:
    `createQuery` in interface `AuditReader`
  Returns:
    A query creator, associated with this AuditReader instance, with which queries can be created and later executed. Shouldn't be used after the associated Session or EntityManager is closed.

### isEntityClassAudited

    public boolean isEntityClassAudited(Class<?> entityClass)

  Description copied from interface: `AuditReader`
  Checks if the entityClass was configured to be audited. Calling isEntityNameAudited() with the string of the class name will return the same value.

  Specified by:
    `isEntityClassAudited` in interface `AuditReader`
  Parameters:
    `entityClass` - Class of the entity asking for audit support
  Returns:
    true if the entityClass is audited.

### isEntityNameAudited

    public boolean isEntityNameAudited(String entityName)

  Description copied from interface: `AuditReader`
  Checks if the entityName was configured to be audited.

  Specified by:
    `isEntityNameAudited` in interface `AuditReader`
  Returns:
    true if the entityName is audited.

### getEntityName

    public String getEntityName(Object primaryKey,
                                Number revision,
                                Object entity)
                         throws HibernateException

  Specified by:
    `getEntityName` in interface `AuditReader`
    `entity` - that was obtained previously from the same AuditReader.
  Returns:
    the entityName for the given entity, null in case the entity is not associated with this AuditReader instance.
  Throws:
    `HibernateException`

Copyright © 2001-2010 Red Hat, Inc. All Rights Reserved.