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

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

Introduction

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

Prototype

public static AuditProperty<Number> revisionNumber() 

Source Link

Document

Create restrictions, projections and specify order for the revision number, corresponding to an audited entity.

Usage

From source file:fi.vm.sade.eperusteet.amosaa.repository.version.JpaWithVersioningRepositoryImpl.java

License:EUPL

@Override
public Revision getLatestRevision(ID id) {
    AuditReader auditReader = AuditReaderFactory.get(entityManager);
    Object[] rev = (Object[]) auditReader.createQuery()
            .forRevisionsOfEntity(entityInformation.getJavaType(), false, true).add(AuditEntity.id().eq(id))
            .addOrder(AuditEntity.revisionNumber().desc()).addProjection(AuditEntity.revisionNumber())
            .addProjection(AuditEntity.revisionProperty(RevisionInfo_.timestamp.getName()))
            .addProjection(AuditEntity.revisionProperty(RevisionInfo_.muokkaajaOid.getName()))
            .addProjection(AuditEntity.revisionProperty(RevisionInfo_.kommentti.getName()))
            .addOrder(AuditEntity.revisionProperty(RevisionInfo_.timestamp.getName()).desc()).getResultList()
            .iterator().next();/*w ww.  j av a  2s .  co  m*/

    return rev != null ? new Revision((Integer) rev[0], (Long) rev[1], (String) rev[2], (String) rev[3]) : null;
}

From source file:fi.vm.sade.eperusteet.amosaa.repository.version.JpaWithVersioningRepositoryImpl.java

License:EUPL

@Override
public List<Revision> getRevisions(ID id) {
    AuditReader auditReader = AuditReaderFactory.get(entityManager);

    @SuppressWarnings("unchecked")
    List<Object[]> results = (List<Object[]>) auditReader.createQuery()
            .forRevisionsOfEntity(entityInformation.getJavaType(), false, true)
            .addProjection(AuditEntity.revisionNumber())
            .addProjection(AuditEntity.revisionProperty(RevisionInfo_.timestamp.getName()))
            .addProjection(AuditEntity.revisionProperty(RevisionInfo_.muokkaajaOid.getName()))
            .addProjection(AuditEntity.revisionProperty(RevisionInfo_.kommentti.getName()))
            .addOrder(AuditEntity.revisionProperty(RevisionInfo_.timestamp.getName()).desc())
            .add(AuditEntity.id().eq(id)).getResultList();

    List<Revision> revisions = new ArrayList<>();
    for (Object[] result : results) {
        revisions.add(//from   w w w  .  j ava2 s  .  c o m
                new Revision((Integer) result[0], (Long) result[1], (String) result[2], (String) result[3]));
    }

    return revisions;
}

From source file:fi.vm.sade.eperusteet.ylops.repository.version.JpaWithVersioningRepositoryImpl.java

License:EUPL

@Override
public List<Revision> getRevisions(ID id) {
    AuditReader auditReader = AuditReaderFactory.get(entityManager);

    @SuppressWarnings("unchecked")
    List<Object[]> results = (List<Object[]>) auditReader.createQuery()
            .forRevisionsOfEntity(entityInformation.getJavaType(), false, true).addProjection(AuditEntity.id())
            .addProjection(AuditEntity.revisionNumber())
            .addProjection(AuditEntity.revisionProperty(RevisionInfo_.timestamp.getName()))
            .addProjection(AuditEntity.revisionProperty(RevisionInfo_.muokkaajaOid.getName()))
            .addProjection(AuditEntity.revisionProperty(RevisionInfo_.kommentti.getName()))
            .addOrder(AuditEntity.revisionProperty(RevisionInfo_.timestamp.getName()).desc())
            .add(AuditEntity.id().eq(id)).getResultList();

    List<Revision> revisions = new ArrayList<>();
    for (Object[] result : results) {
        revisions.add(new Revision((Long) result[0], (Integer) result[1], (Long) result[2], (String) result[3],
                (String) result[4]));
    }/* www.j  ava  2s  .  c  o m*/

    return revisions;
}

From source file:fr.mcc.ginco.audit.utils.AuditHelper.java

License:CeCILL license

/**
 * Gets the preferred term of the given concept at the given revision
 * @param revisionNumber//w  w  w. j a v  a  2 s .c  o  m
 * @param conceptId
 * @param lang
 * @return
 */
public ThesaurusTerm getPreferredTermAtRevision(Number revisionNumber, String conceptId, String lang) {
    AuditQuery query = reader.getAuditReader().createQuery()
            .forEntitiesAtRevision(ThesaurusTerm.class, revisionNumber)
            .add(AuditEntity.relatedId("concept").eq(conceptId)).add(AuditEntity.property("prefered").eq(true))
            .addOrder(AuditEntity.revisionNumber().desc()).setMaxResults(1);
    if (lang != null) {
        auditQueryBuilder.addFilterOnLanguage(query, lang);
    }
    List results = query.getResultList();
    if (results.isEmpty()) {
        return null;
    } else {
        return (ThesaurusTerm) results.get(0);
    }
}

From source file:fr.mcc.ginco.audit.utils.AuditQueryBuilder.java

License:CeCILL license

/**
 * Builds the query to get the previous version
 * /*from   w w w  .  j  a v a  2  s . co  m*/
 * @param reader
 * @param clazz
 * @param identifier
 * @param currentRevision
 * @return
 */
public AuditQuery getPreviousVersionQuery(Class<?> clazz, Serializable identifier, int currentRevision) {
    return readerService.getAuditReader().createQuery().forRevisionsOfEntity(clazz, false, true)
            .addProjection(AuditEntity.revisionNumber().max()).add(AuditEntity.id().eq(identifier))
            .add(AuditEntity.revisionNumber().lt(currentRevision));
}

From source file:fr.mcc.ginco.audit.utils.AuditQueryBuilder.java

License:CeCILL license

/**
 * @param reader/*www  .ja v  a  2s  .  c  om*/
 * @param clazz
 * @param identifier
 * @param currentRevision
 * @return
 */
public AuditQuery getPreviousPreferredTermQuery(int currentRevision, String conceptId) {
    return readerService.getAuditReader().createQuery().forRevisionsOfEntity(ThesaurusTerm.class, false, true)
            .add(AuditEntity.revisionNumber().lt(currentRevision))
            .add(AuditEntity.property("prefered").eq(true)).add(AuditEntity.relatedId("concept").eq(conceptId));
}

From source file:love.sola.netsupport.api.stuff.TicketLog.java

License:Open Source License

@SuppressWarnings("unchecked")
@Override//  w w w.j av  a 2 s .c  o m
protected Object process(HttpServletRequest req, WxSession session) throws Exception {
    int first;
    int limit;
    Date start;
    Date end;
    first = req.getParameter("first") == null ? 0 : Integer.parseInt(req.getParameter("first"));
    limit = req.getParameter("limit") == null ? 20 : Integer.parseInt(req.getParameter("limit"));
    start = req.getParameter("start") == null ? getToday() : dateFormat.parse(req.getParameter("start"));
    end = req.getParameter("end") == null ? getToday() : dateFormat.parse(req.getParameter("end"));
    end = DateUtils.addDays(end, 1);
    try (Session s = SQLCore.sf.openSession()) {
        AuditReader reader = TableTicket.getAuditReader(s);
        List<Object[]> resultList = reader.createQuery().forRevisionsOfEntity(Ticket.class, false, true)
                .addOrder(AuditEntity.revisionNumber().desc())
                .add(AuditEntity.revisionProperty("timestamp").between(start.getTime(), end.getTime()))
                .setFirstResult(first).setMaxResults(limit).getResultList();
        return TableTicket.initializeTickets(resultList);
    }
}

From source file:love.sola.netsupport.sql.TableTicket.java

License:Open Source License

@SuppressWarnings("unchecked")
public static List<Object[]> track(int tid) {
    try (Session s = SQLCore.sf.openSession()) {
        AuditReader reader = getAuditReader(s);
        List<Object[]> resultList = reader.createQuery().forRevisionsOfEntity(Ticket.class, false, true)
                .addOrder(AuditEntity.revisionNumber().desc()).add(AuditEntity.id().eq(tid)).getResultList();
        return initializeTickets(resultList);
    }/* w w  w . j av a 2  s  .  co  m*/
}

From source file:org.agatom.springatom.data.hades.repo.factory.NVersionedRepositoryImpl.java

License:Open Source License

/** {@inheritDoc} */
@Override//from   w  w w  .  j  a v a 2s  .co  m
public long countRevisions(final Long id) {
    final Class<T> type = this.entityInformation.getJavaType();
    final AuditReader reader = AuditReaderFactory.get(this.entityManager);

    if (LOGGER.isTraceEnabled()) {
        LOGGER.trace(String.format("%s(%s)", "countRevisions", id));
    }

    return (long) reader.createQuery().forRevisionsOfEntity(type, false, true)
            .addProjection(AuditEntity.revisionNumber().count()).getSingleResult();
}

From source file:org.azafiu.hibernatetest.datainteractor.ProductDAO.java

License:Apache License

/**
 * Get all products that need to be shown to the checker for approval.
 * /*www. ja v a  2s  .co m*/
 * @return a list of Object[]. Each element will be an Object[3] array with
 *         the following items: Object[0] - the {@link ProductEntity} at a
 *         revision ( greater or equal than the one given as parameter)
 *         Object[1] a {@link DefaultRevisionEntity} Object[2] a
 *         {@link RevisionType} object containing information about the
 *         revision
 */
@Transactional
public List<Object[]> getAllProductsWaitingForApproval() {
    /**
     * Get all distinct {@link ProductEntity} objects where the wasChecked
     * property is false order by modified descending
     */
    final AuditQuery query = this.getAuditReader().createQuery()
            .forRevisionsOfEntity(ProductEntity.class, false, true)
            .addOrder(AuditEntity.property("modified").desc())
            .add(AuditEntity.revisionNumber().maximize().computeAggregationInInstanceContext())
            .add(AuditEntity.property("wasChecked").eq(Boolean.FALSE))
            .add(AuditEntity.revisionType().ne(RevisionType.DEL));

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

    final List<Object[]> result = new ArrayList<>();

    /**
     * for each "changed" object found in the db we need to check if there
     * is a newer revision of it in which the {@link ProductEntity} was
     * approved (wasChecked = true) because we do not need to retrieve
     * already checked objects to the checker.
     */
    for (final Object[] change : resultList) {
        final ProductEntity pe = (ProductEntity) change[0];
        final AuditQuery queryForWasCheckedTrue = this.getAuditReader().createQuery()
                .forRevisionsOfEntity(ProductEntity.class, false, true)
                .addOrder(AuditEntity.property("modified").desc()).add(AuditEntity.id().eq(pe.getId()))
                .add(AuditEntity.property("wasChecked").eq(Boolean.TRUE));

        if (pe.getModified() != null) {
            queryForWasCheckedTrue.add(AuditEntity.property("modified").gt(pe.getModified()));
        }

        try {
            final Object[] trueWasChecked = (Object[]) queryForWasCheckedTrue.getSingleResult();
        } catch (final NoResultException ex) {
            // there is no newer revision where the current product has
            // wasChecked property == true
            result.add(change);
        }

    }

    return result;
}