Example usage for org.hibernate.envers AuditReader createQuery

List of usage examples for org.hibernate.envers AuditReader createQuery

Introduction

In this page you can find the example usage for org.hibernate.envers AuditReader createQuery.

Prototype

AuditQueryCreator createQuery();

Source Link

Document

Creates an audit query

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 {//from  w w  w  . j  av  a 2 s.com
        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  ww w  .  ja  v  a  2s.c  o m*/
        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 Set<AuditoriaDTO> findAllRevisions(FiltroAuditoria filtro) throws NegocioException {
    if (filtro.getDataInicio() != null && filtro.getDataFim() != null) {
        if (!filtro.getDataFim().isAfter(filtro.getDataInicio())) {
            throw new NegocioException("A data de termino deve ser maior que a data de incio!");
        }// w  ww . j a  v a2s . c om
    }
    Set<AuditoriaDTO> dtos = new HashSet<>();

    AuditReader reader = AuditReaderFactory.get(em);

    AuditQuery query = reader.createQuery().forRevisionsOfEntity(filtro.getClasse(), false, true);

    if (filtro.getDataInicio() != null) {
        query.add(AuditEntity.revisionProperty("timestamp")
                .gt(Timestamp.from(filtro.getDataInicio().toInstant(ZoneOffset.UTC)).getTime()));
    }
    if (filtro.getDataFim() != null) {
        query.add(AuditEntity.revisionProperty("timestamp")
                .lt(Timestamp.from(filtro.getDataFim().toInstant(ZoneOffset.UTC)).getTime()));
    }

    if (StringUtils.isNotEmpty(filtro.getLogin())) {
        query.add(AuditEntity.revisionProperty("username").ilike(filtro.getLogin(), MatchMode.EXACT));
    }

    if (filtro.getTiposRevisao().length > 0) {
        System.out.println("entra id tipo revisao");
        query.add(AuditEntity.property("REVTYPE").in(filtro.getTiposRevisao()));
    }

    List<Object[]> result = query.getResultList();

    for (Object[] o : result) {
        try {
            //                Object instancia = filtro.getClass().cast(o[0]);
            Object instancia = Class.forName(filtro.getClasse().getName()).cast(o[0]);
            //                Method metodo;
            //                metodo = instancia.getClass().getMethod("getId");
            //                Long id = (Long) metodo.invoke(instancia);

            CustomRevisionEntity revision = (CustomRevisionEntity) o[1];
            RevisionType revisionType = (RevisionType) o[2];

            Instant instant = Instant.ofEpochMilli(revision.getTimestamp());

            AuditoriaDTO dto = new AuditoriaDTO(instancia, revisionType, filtro.getEntidade(), revision);

            dtos.add(dto);
        } catch (Exception ex) {
            throw new NegocioException(ex.getMessage());
        }
    }
    return dtos;
}

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));//from  w w w  . j  a  va2s. c  om
    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];
        }/* ww w  . j  a v  a 2  s .  c om*/
    }
    return null;
}

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

License:Open Source License

@SuppressWarnings("unchecked")
public List<Object> getAllDeletedEntities(Class clazz) {
    Objects.requireNonNull(clazz, "Clazz can not be null");

    AuditReader reader = AuditReaderFactory.get(entityManager);

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

        List<Object[]> resultList = query.getResultList();
        if (!resultList.isEmpty()) {
            List<Object> deleted = new ArrayList<>();
            for (Object[] objects : resultList) {
                deleted.add(objects[0]);
            }//w w w  . j av  a2s.  com
            return deleted;
        }
    }
    return Collections.EMPTY_LIST;
}

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

License:Open Source License

public List<AuditViewEntry> getAuditViewEntriesForResource(Integer resourceId) {
    // Map<Hashcode, AuditViewEntry>
    Map<Integer, AuditViewEntry> allAuditViewEntries = new HashMap<>();
    AuditReader reader = AuditReaderFactory.get(entityManager);
    CrossTypeRevisionChangesReader crossTypeRevisionChangesReader = reader.getCrossTypeRevisionChangesReader();
    List<MyRevisionEntity> revisionsForResource = getRevisionsForResource(resourceId);
    for (MyRevisionEntity revisionEntity : revisionsForResource) {
        List<Object> changedEntitiesForRevision = crossTypeRevisionChangesReader
                .findEntities(revisionEntity.getId());
        for (Object o : changedEntitiesForRevision) {
            List resultList = reader.createQuery().forRevisionsOfEntity(o.getClass(), false, true)
                    .add(AuditEntity.revisionNumber().eq(revisionEntity.getId())).getResultList();
            createAuditViewEntriesAndAddToMap(allAuditViewEntries, resultList);
        }//w w w.  j a va 2  s  .c o m
    }
    return new ArrayList<>(allAuditViewEntries.values());
}

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>//  w  ww  .j a  va  2 s  .  c  o m
 * <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 ww w  .  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 w  w  w  .java  2 s .  com
 * @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;
}