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:org.jboss.pnc.rest.provider.BuildRecordProvider.java

License:Open Source License

public CollectionInfo<BuildRecordRest> getAllForConfigurationOrProjectName(int pageIndex, int pageSize,
        String sortingRsql, String query, String name) {

    List<Project> projectsMatchingName = projectRepository
            .queryWithPredicates(ProjectPredicates.searchByProjectName(name));

    AuditDisjunction disjunction = AuditEntity.disjunction();
    projectsMatchingName.forEach(project -> {
        disjunction.add(AuditEntity.relatedId("project").eq(project.getId()));
    });//  w w w  .  java2  s .  c  o m
    disjunction.add(AuditEntity.property("name").like(name));

    List<Object[]> buildConfigurationRevisions = AuditReaderFactory.get(entityManager).createQuery()
            .forRevisionsOfEntity(BuildConfiguration.class, false, false).add(disjunction)
            .addOrder(AuditEntity.revisionNumber().desc()).getResultList();

    return queryForBuildRecords(pageIndex, pageSize, sortingRsql, query, buildConfigurationRevisions);
}

From source file:org.jboss.pressgang.ccms.filter.utils.EntityUtilities.java

License:Open Source License

public static <E> List<Integer> getEditedEntitiesByRevision(final EntityManager entityManager,
        final Class<E> type, final String pkColumnName, final Number startRevision, final Number endRevision) {
    if (startRevision == null && startRevision == null)
        return null;

    final AuditReader reader = AuditReaderFactory.get(entityManager);

    final AuditQuery query = reader.createQuery().forRevisionsOfEntity(type, true, false)
            .addOrder(AuditEntity.revisionProperty("timestamp").asc())
            .addProjection(AuditEntity.property("originalId." + pkColumnName).distinct());

    if (startRevision != null)
        query.add(AuditEntity.revisionNumber().ge(startRevision));

    if (endRevision != null)
        query.add(AuditEntity.revisionNumber().le(endRevision));

    final List<Integer> entityIds = query.getResultList();

    return entityIds;
}

From source file:org.jboss.pressgang.ccms.model.utils.EnversUtilities.java

License:Open Source License

public static <T extends AuditedEntity> Number getClosestRevision(final AuditReader reader,
        final Class<T> entityClass, final Integer id, final Number revision) {
    // Find the closest revision that is less than or equal to the revision specified.
    final Number closestRevision = (Number) reader.createQuery().forRevisionsOfEntity(entityClass, false, true)
            .addProjection(AuditEntity.revisionNumber().max()).add(AuditEntity.id().eq(id))
            .add(AuditEntity.revisionNumber().le(revision)).getSingleResult();
    return closestRevision;
}

From source file:org.tomitribe.tribestream.registryng.repository.Repository.java

License:Apache License

public <T> List<HistoryEntry<T>> getRevisions(final Class<T> entityClass, final String id, final int first,
        final int pageSize) throws NoResultException {
    AuditReader auditReader = AuditReaderFactory.get(em);
    AuditQuery query = auditReader.createQuery().forRevisionsOfEntity(entityClass, false, true);
    query.add(AuditEntity.id().eq(id));/*  w ww .  j a  v  a 2 s  .  c o  m*/
    query.addOrder(AuditEntity.revisionNumber().desc());
    query.setFirstResult(first).setMaxResults(pageSize);

    List<Object[]> objects = query.getResultList();
    return objects.stream().map(HistoryEntry<T>::new).collect(toList());
}

From source file:org.tomitribe.tribestream.registryng.repository.Repository.java

License:Apache License

/**
 * Returns the number of revisions available for the entity with the given id.
 *
 * @param entityClass the Entity class type to use to find revisions
 * @param id          the ID of the entity
 * @return the number of revisions//from w w w  . ja  v a2  s.  c o m
 */
public <T> int getNumberOfRevisions(final Class<T> entityClass, final String id) {
    final AuditQuery query = AuditReaderFactory.get(em).createQuery().forRevisionsOfEntity(entityClass, true,
            true);
    query.add(AuditEntity.id().eq(id));
    query.addProjection(AuditEntity.revisionNumber().count());

    return ((Number) query.getSingleResult()).intValue();
}

From source file:py.una.pol.karaku.replication.server.EnversReplicationProvider.java

License:Open Source License

/**
 * @param clazz/*from   w ww  . j  av a 2 s  .co m*/
 * @param lastId
 * @return
 */
@SuppressWarnings("unchecked")
private <T extends Shareable> Bundle<T> getDelta(Class<T> clazz, String lastId) {

    AuditReader ar = AuditReaderFactory.get(getSession());
    Number number = getLastId(clazz, lastId);
    List<Object[]> entities = ar.createQuery().forRevisionsOfEntity(clazz, false, false)
            .add(AuditEntity.revisionNumber().gt(number)).getResultList();

    Bundle<T> bundle = new Bundle<T>(lastId);
    for (Object[] o : entities) {
        if (o == null) {
            continue;
        }
        bundle.add((T) notNull(o[0]), notNull(getId(o[1])));
    }
    return bundle;
}

From source file:py.una.pol.karaku.replication.server.EnversReplicationProvider.java

License:Open Source License

/**
 * @param clazz// w ww  .j ava 2s  .  c o m
 * @param reader
 * @param lastId
 * @return
 */
@SuppressWarnings("unchecked")
private <T extends Shareable> boolean isUnknown(Class<T> clazz, String lastId) {

    if (Bundle.FIRST_CHANGE.equals(lastId)) {
        return false;
    }

    AuditReader reader = AuditReaderFactory.get(getSession());
    List<T> entitiesAtRevision = reader.createQuery().forRevisionsOfEntity(clazz, false, false)
            .add(AuditEntity.revisionNumber().eq(getLastId(clazz, lastId))).getResultList();
    return (entitiesAtRevision == null) || entitiesAtRevision.isEmpty();
}

From source file:py.una.pol.karaku.replication.server.EnversReplicationProvider.java

License:Open Source License

@Nonnull
private <T extends Shareable> Bundle<T> getAll(@Nonnull Class<T> clazz) {

    AuditReader reader = AuditReaderFactory.get(getSession());
    Number prior = (Number) reader.createQuery().forRevisionsOfEntity(clazz, false, true)
            .addProjection(AuditEntity.revisionNumber().max()).getSingleResult();

    String lastId;/*from w  ww.j  a  v  a  2 s  .  co m*/
    // previous revision, la actual no ser persistida.
    if (prior == null) {
        lastId = Bundle.FIRST_CHANGE;
    } else {
        lastId = String.valueOf(prior);
    }
    return firstChangeProviderHandler.getAll(clazz, notNull(lastId));

}