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:de.iteratec.iteraplan.persistence.dao.HistoryDAOImpl.java

License:Open Source License

/** {@inheritDoc} */
@SuppressWarnings({ "unchecked", "boxing" })
public <T extends BuildingBlock> List<BuildingBlockRevision<T>> getRevisionBounded(final Class<T> entityClass,
        Integer id, Integer curPage, Integer pageSize, DateTime fromDate, DateTime toDate) {

    Preconditions.checkArgument(id != null && id.intValue() >= 0, "Param id is invalid, should be >=0");
    Preconditions.checkArgument(pageSize >= -1, "Param pageSize is invalid, should be -1 or >0");
    Preconditions.checkArgument(pageSize.intValue() != 0, "Param pageSize is invalid, should be -1 or >0"); //would lead to /0 err

    AuditReader auditReader = getAuditReader();

    // Query retrieves RevisionType in addition to Entity; Revs of type DEL are not retrieved
    // Get date on revisions of this BB
    AuditQuery curPageQuery = auditReader.createQuery().forRevisionsOfEntity(entityClass, false, false)
            .add(AuditEntity.id().eq(id));

    // Limit results by date
    if (fromDate != null) {
        Long fromDateLong = Long.valueOf(fromDate.getMillis());
        curPageQuery.add(AuditEntity.revisionProperty(TIMESTAMP_PROPERTY).ge(fromDateLong));
    }/*from   w w  w .j ava2  s . c o m*/
    if (toDate != null) {
        Long toDateLong = Long.valueOf(toDate.getMillis());
        curPageQuery.add(AuditEntity.revisionProperty(TIMESTAMP_PROPERTY).le(toDateLong));
    }

    int firstResult = curPage * pageSize;

    // Paging (first results, max results), disabled when requesting all results (pageSize=-1)
    if (pageSize > 0) {
        curPageQuery.setFirstResult(firstResult).setMaxResults(pageSize);
    }

    // Object Array[3] contains: T, HistoryRevisionEntity, RevisionType
    List<Object[]> revsList = curPageQuery.addOrder(AuditEntity.revisionNumber().desc()).getResultList();

    return Lists.newArrayList(Lists.transform(revsList, new Function<Object[], BuildingBlockRevision<T>>() {

        @Override
        public BuildingBlockRevision<T> apply(Object[] revObjects) {
            return new BuildingBlockRevision<T>(revObjects, entityClass);
        }

    }));
}

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();/*from ww  w .  ja  va  2s .c  o 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 ww  w .  ja  va2  s.  com*/
                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]));
    }/*  w  ww. j a  va2 s .  co m*/

    return revisions;
}

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

License:CeCILL license

/**
 * Builds the query to get the previous version
 * /*w w w .  j  a  v  a2s. c o  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

/**
 * Builds a query returning an object creation revision Assumes the id field
 * of the object is named "identifier"// ww w.j a  v a2s  .c o m
 * 
 * @param reader
 * @param clazz
 *            the object class
 * @param identifier
 *            the object identifier
 * @return
 */
public AuditQuery getEntityAddedQuery(AuditReader reader, Class<?> clazz, Serializable identifier) {
    return reader.createQuery().forRevisionsOfEntity(clazz, false, true).add(AuditEntity.id().eq(identifier))
            .add(AuditEntity.revisionType().eq(RevisionType.ADD));

}

From source file:it.archiworld.util.EJBPreferenceStoreBean.java

License:Open Source License

@SuppressWarnings("unchecked")
public List<String> getStringList(String name, Timestamp timestamp) {
    List<EJBPreferenceObject> list = null;
    if (timestamp != null) {
        System.out.println("Getting Stringlist " + name + " with Timestamp: " + timestamp);
        try {/* w w w  .  j a v  a  2  s. c  o m*/
            reader = AuditReaderFactory.get(manager);
            Number revision = reader.getRevisionNumberForDate(new Date(timestamp.getTime()));
            System.out.println(revision);
            list = reader.createQuery().forEntitiesAtRevision(EJBPreferenceObject.class, revision)
                    .add(AuditEntity.id().eq(name)).setMaxResults(1).getResultList();
        } catch (Exception ex) {
            ex.printStackTrace();
        }
    } else {
        System.out.println("Getting Stringlist without Timestamp");
        list = manager
                .createQuery("Select ejbprefobj from EJBPreferenceObject as ejbprefobj where ejbprefobj.name=?")
                .setParameter(1, name).getResultList();
    }
    if (list != null && !list.isEmpty() && list.get(0) != null)
        return list.get(0).getListString();
    return null;
}

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);
    }/*from   w  w  w  .  j a va2s.c  o  m*/
}

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

License:Apache License

@Transactional
public Object[] getLatestChangeForItemWithID(final Long id, final Class<?> itemClass) {
    final AuditQuery query = this.getAuditReader().createQuery().forRevisionsOfEntity(itemClass, false, true)
            .addOrder(AuditEntity.property("modified").desc()).add(AuditEntity.id().eq(id)).setMaxResults(1);

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

    if (resultList != null && resultList.size() > 0) {
        return resultList.get(0);
    }/*w w  w. ja  v  a2 s . co m*/
    return null;
}

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.j  a  v a2s  .  c om
 * @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;
}