Example usage for org.hibernate.envers.query.criteria AuditProperty ge

List of usage examples for org.hibernate.envers.query.criteria AuditProperty ge

Introduction

In this page you can find the example usage for org.hibernate.envers.query.criteria AuditProperty ge.

Prototype

public AuditCriterion ge(T value) 

Source Link

Document

Apply a "greater than or equal" constraint

Usage

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

License:Open Source License

/** {@inheritDoc} */
@Override//from  ww w . j a v a2 s  . com
@SuppressWarnings({ "unchecked", "SuspiciousToArrayCall" })
public Revisions<Long, T> findRevisions(final Long id, final DateTime dateTime, final Operators operator) {
    final Class<T> type = this.entityInformation.getJavaType();
    final AuditReader reader = AuditReaderFactory.get(this.entityManager);
    final AuditProperty<Object> actualDate = AuditEntity.revisionProperty("timestamp");

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

    AuditQuery auditQuery = reader.createQuery().forRevisionsOfEntity(type, false, true);

    switch (operator) {
    case BEFORE:
        auditQuery = auditQuery.add(actualDate.le(dateTime.getMillis()));
        break;
    case AFTER:
        auditQuery = auditQuery.add(actualDate.ge(dateTime.getMillis()));
        break;
    case EQ:
        auditQuery = auditQuery.add(actualDate.eq(dateTime.getMillis()));
        break;
    }

    final List<Object[]> resultList = auditQuery.getResultList();
    if (resultList.isEmpty()) {
        return new Revisions<>(Lists.<Revision<Long, T>>newArrayList());
    }

    final List<Revision<Long, T>> revisionList = new ArrayList<>();
    for (Object[] number : resultList) {
        final Object entity = number[0];
        final Object revEntity = number[1];
        revisionList.add((Revision<Long, T>) new Revision<>(this.getRevisionMetadata(revEntity), entity));
    }

    return new Revisions<>(revisionList);
}