Example usage for org.hibernate.envers.query AuditEntity id

List of usage examples for org.hibernate.envers.query AuditEntity id

Introduction

In this page you can find the example usage for org.hibernate.envers.query AuditEntity id.

Prototype

public static AuditId id() 

Source Link

Usage

From source file:TestConsole.java

License:Open Source License

private void printPersonHistory(StringBuilder sb, int personId) {
    AuditReader reader = AuditReaderFactory.get(entityManager);

    List<?> personHistory = reader.createQuery().forRevisionsOfEntity(Person.class, false, true)
            .add(AuditEntity.id().eq(personId)).getResultList();

    if (personHistory.size() == 0) {
        sb.append("A person with id ").append(personId).append(" does not exist.\n");
    } else {/*ww  w. ja v  a2  s.  c o m*/
        for (Object historyObj : personHistory) {
            Object[] history = (Object[]) historyObj;
            DefaultRevisionEntity revision = (DefaultRevisionEntity) history[1];
            sb.append("revision = ").append(revision.getId()).append(", ");
            printPerson(sb, (Person) history[0]);
            sb.append(" (").append(revision.getRevisionDate()).append(")\n");
        }
    }
}

From source file:TestConsole.java

License:Open Source License

private void printAddressHistory(StringBuilder sb, int addressId) {
    AuditReader reader = AuditReaderFactory.get(entityManager);

    List<?> addressHistory = reader.createQuery().forRevisionsOfEntity(Address.class, false, true)
            .add(AuditEntity.id().eq(addressId)).getResultList();

    if (addressHistory.size() == 0) {
        sb.append("A address with id ").append(addressId).append(" does not exist.\n");
    } else {/*from   w w  w. j  a va2  s  .  c  om*/
        for (Object historyObj : addressHistory) {
            Object[] history = (Object[]) historyObj;
            DefaultRevisionEntity revision = (DefaultRevisionEntity) history[1];
            sb.append("revision = ").append(revision.getId()).append(", ");
            printAddress(sb, (Address) history[0]);
            sb.append(" (").append(revision.getRevisionDate()).append(")\n");
        }
    }
}

From source file:br.ufac.sion.service.AuditoriaService.java

public <T> List<T> findRevisionsById(Class<?> classe, Long id) {
    AuditReader reader = AuditReaderFactory.get(em);

    AuditQuery q = reader.createQuery().forRevisionsOfEntity(classe, true, true);
    q.add(AuditEntity.id().eq(id));
    List<T> audit = q.getResultList();

    return audit;
}

From source file:ch.puzzle.itc.mobiliar.business.auditview.control.AuditService.java

License:Open Source License

@SuppressWarnings("unchecked")
public <T> Object getDeletedEntity(T entity, Integer id) {
    Objects.requireNonNull(entity, "Entity can not be null");
    Objects.requireNonNull(id, "Id can not be null");

    AuditReader reader = AuditReaderFactory.get(entityManager);

    if (reader.isEntityClassAudited(entity.getClass())) {
        AuditQuery query = reader.createQuery().forRevisionsOfEntity(entity.getClass(), false, true)
                .add(AuditEntity.id().eq(id)).add(AuditEntity.revisionType().eq(DEL));

        List<Object[]> resultList = query.getResultList();
        if (!resultList.isEmpty()) {
            return resultList.get(0)[0];
        }//from   ww w  .j av  a 2 s  . com
    }
    return null;
}

From source file:ch.puzzle.itc.mobiliar.business.auditview.control.AuditService.java

License:Open Source License

/**
 * @return a list of three-element arrays, containing:
 * <ol>//from  www  .jav  a2s .c  om
 * <li>the entity instance</li>
 * <li>revision entity, corresponding to the revision at which the entity was modified. If no custom
 * revision entity is used, this will be an instance of {@link org.hibernate.envers.DefaultRevisionEntity}</li>
 * <li>type of the revision (an enum instance of class {@link org.hibernate.envers.RevisionType})</li>
 * </ol>
 */
private <T> List getAllRevisionsForEntity(T entity, Integer id) {
    Objects.requireNonNull(entity, "Entity can not be null");
    Objects.requireNonNull(id, "Id can not be null");

    AuditReader reader = AuditReaderFactory.get(entityManager);
    Number revisionNumberOneYearAgo = getRevisionNumberOneYearAgo(reader);

    if (reader.isEntityClassAudited(entity.getClass())) {
        AuditQuery query = reader.createQuery().forRevisionsOfEntity(entity.getClass(), false, true)
                .add(AuditEntity.id().eq(id)).add(AuditEntity.revisionNumber().gt(revisionNumberOneYearAgo))
                .addOrder(AuditEntity.revisionNumber().desc());
        return (List<T>) query.getResultList();
    }
    return null;
}

From source file:com.actelion.research.spiritcore.services.dao.DAORevision.java

License:Open Source License

/**
 * Returns all revisions of the given entity until the given maxRevId
 * @param obj/*from  www  . j  av a 2 s. c  o m*/
 * @param maxRevId (-1, to ignore)
 * @return
 */
@SuppressWarnings("unchecked")
public static List<Revision> getLastRevisions(Class<?> claz, Serializable entityId, int maxRevId, int n) {

    long s = System.currentTimeMillis();
    EntityManager session = JPAUtil.getManager();
    AuditReader reader = AuditReaderFactory.get(session);
    AuditQuery query = reader.createQuery().forRevisionsOfEntity(claz, false, true).setCacheable(false)
            .setLockMode(LockMode.NONE);
    query.add(AuditEntity.id().eq(entityId));

    if (maxRevId > 0) {
        query.add(AuditEntity.revisionNumber().le(maxRevId));
    }
    if (n > 0) {
        query.setMaxResults(n);
        query.addOrder(AuditEntity.revisionNumber().desc());
    }
    List<Revision> revisions = getRevisions(null, query.getResultList());
    LoggerFactory.getLogger(DAORevision.class).debug("Loaded revisions for " + claz.getSimpleName() + "("
            + entityId + ") maxRevId=" + maxRevId + "-" + n + " in " + (System.currentTimeMillis() - s) + "ms");
    return revisions;
}

From source file:com.actelion.research.spiritcore.services.dao.DAORevision.java

License:Open Source License

/**
 * Get the different version of an element, the first element of the list shows the most recent version
 * @param obj/*from   ww  w .j  a  v  a2 s  .co  m*/
 * @return
 */
public static <T extends IObject> List<T> getHistory(Class claz, Serializable objectId, int maxRevs) {
    long s = System.currentTimeMillis();
    EntityManager session = JPAUtil.getManager();
    AuditReader reader = AuditReaderFactory.get(session);
    AuditQuery query = reader.createQuery().forRevisionsOfEntity(claz, true, false)
            .add(AuditEntity.id().eq(objectId)).addOrder(AuditEntity.revisionNumber().desc())
            .setCacheable(false).setLockMode(LockMode.NONE);
    if (maxRevs > 0) {
        query.setMaxResults(maxRevs);
    }
    List<T> res = query.getResultList();
    for (T t : res) {
        session.detach(t);
    }

    LoggerFactory.getLogger(DAORevision.class).debug("Loaded history for " + claz.getSimpleName() + ": ("
            + objectId + ") in " + (System.currentTimeMillis() - s) + "ms");
    return res;
}

From source file:com.actelion.research.spiritcore.services.dao.DAORevision.java

License:Open Source License

/**
 * Gets the last version and the change for the given entity, in the given context.
 * This method should return the last change, even if the changes of the given entity have not been committed.
 *
 * This method should be used exclusively from the SpritRevisionEntityListener to record the differences between the object to be saved and the last revision.
 * (when the record to be saved in already in the audit table)
 *
 * @param entityClass/* w  ww .  ja  va  2 s  .c  o  m*/
 * @param entityId
 * @return
 */
@SuppressWarnings("unchecked")
public static <T extends IAuditable> Pair<IAuditable, DifferenceList> getLastChange(RevisionType revisionType,
        Class<T> entityClass, Serializable entityId) {
    //Query the 2 last revisions of entityClass:entityId
    EntityManager session = JPAUtil.getManager();
    AuditReader reader = AuditReaderFactory.get(session);
    AuditQuery query = reader.createQuery().forRevisionsOfEntity(entityClass, false, true)
            .add(AuditEntity.id().eq(entityId)).addOrder(AuditEntity.revisionNumber().desc()).setMaxResults(2)
            .setCacheable(false).setLockMode(LockMode.NONE);
    List<Object[]> histories = query.getResultList();

    //Compute the difference between those 2 last versions
    assert histories.size() > 0;

    DifferenceList diff = null;
    if (revisionType == RevisionType.DEL) {
        diff = ((T) histories.get(0)[0]).getDifferenceList(null);
        diff.add("", ChangeType.DEL);
        assert diff.size() == 1;
    } else if (revisionType == RevisionType.ADD) {
        diff = ((T) histories.get(0)[0]).getDifferenceList(null);
        diff.add("", ChangeType.ADD);
        assert diff.size() == 1;
    } else if (histories.size() >= 2) {
        diff = ((T) histories.get(0)[0]).getDifferenceList((T) histories.get(1)[0]);
    } else {
        return null;
    }
    return new Pair<IAuditable, DifferenceList>((T) histories.get(0)[0], diff);
}

From source file:com.actelion.research.spiritcore.services.dao.DAORevision.java

License:Open Source License

/**
 * Returns the lastChange from the given entity.
 * This method should be called outside the SpritRevisionEntityListener (when the record is not yet in the audit table)
 *
 * @param auditable/*from  w w  w.j  a v a2 s . c  om*/
 * @return
 */
@SuppressWarnings("unchecked")
public static <T extends IAuditable> Pair<T, DifferenceList> getLastChange(IAuditable auditable) {
    //Query the 2 last revisions of entityClass:entityId
    EntityManager session = JPAUtil.getManager();
    AuditReader reader = AuditReaderFactory.get(session);
    AuditQuery query = reader.createQuery().forRevisionsOfEntity(auditable.getClass(), true, true)
            .add(AuditEntity.id().eq(auditable.getSerializableId()))
            .addOrder(AuditEntity.revisionNumber().desc()).setMaxResults(1).setCacheable(false)
            .setLockMode(LockMode.NONE);
    List<IAuditable> histories = query.getResultList();

    //Compute the difference between those 2 last versions
    if (histories.size() == 0) {
        return new Pair<T, DifferenceList>(null, new DifferenceList());
    } else {
        return new Pair<T, DifferenceList>((T) histories.get(0), auditable.getDifferenceList(histories.get(0)));
    }
}

From source file:com.confighub.core.store.Store.java

License:Open Source License

/**
 * @param repositoryId/*from w w  w  .  j  a va  2s  . c o m*/
 * @param date
 * @return
 * @throws ConfigException
 */
public Repository getRepository(final Long repositoryId, final Date date) throws ConfigException {
    if (Utils.anyNull(repositoryId)) {
        throw new ConfigException(Error.Code.MISSING_PARAMS);
    }

    if (null == date) {
        return get(Repository.class, repositoryId);
    }

    AuditReader reader = AuditReaderFactory.get(em);
    Number rev = reader.getRevisionNumberForDate(date);

    AuditQuery query = reader.createQuery().forEntitiesAtRevision(Repository.class, rev);
    query.add(AuditEntity.id().eq(repositoryId));

    try {
        return (Repository) query.getSingleResult();
    } catch (NoResultException e) {
        return null;
    } catch (Exception e) {
        handleException(e);
        return null;
    }
}