Example usage for org.hibernate.envers AuditReaderFactory get

List of usage examples for org.hibernate.envers AuditReaderFactory get

Introduction

In this page you can find the example usage for org.hibernate.envers AuditReaderFactory get.

Prototype

public static AuditReader get(EntityManager entityManager) throws AuditException 

Source Link

Document

Create an audit reader associated with an open entity manager.

Usage

From source file:com.intuit.tank.dao.JobNotificationDao.java

License:Open Source License

/**
 * gets the entity at the specified revision
 * // w w w  .  j  av  a  2 s. c o m
 * @param id
 *            the id of the entity to fetch
 * @param revisionNumber
 *            the revision number
 * @return the entity or null if no entity can be found
 */
@Nullable
@Override
public JobNotification findRevision(int id, int revisionNumber) {
    JobNotification result = null;
    try {
        begin();
        AuditReader reader = AuditReaderFactory.get(getEntityManager());
        result = reader.find(JobNotification.class, id, revisionNumber);
        Hibernate.initialize(result.getLifecycleEvents());
        result.getLifecycleEvents().contains(JobLifecycleEvent.QUEUE_ADD);
        commit();
    } catch (NoResultException e) {
        LOG.warn("No result for revision " + revisionNumber + " with id of " + id);
    } finally {
        cleanup();
    }
    return result;
}

From source file:com.lvg.springtest.services.springdatajpa.impl.ContactAuditServiceSpringDataJpaImpl.java

@Override
@Transactional(readOnly = true)/*  w w  w.  ja  va  2s .  co m*/
public ContactAudit findAuditByRevision(Long id, int revision) {
    AuditReader auditReader = AuditReaderFactory.get(em);
    return auditReader.find(ContactAudit.class, id, revision);
}

From source file:com.sdm.core.hibernate.dao.AuditDAO.java

public AuditDAO(Session session) {
    this(AuditReaderFactory.get(session));
}

From source file:com.webbfontaine.valuewebb.envers.AuditedEntityLoader.java

License:Open Source License

private SimpleDocument getAuditRecord(Class entityClass) {
    Integer revNum = Integer.parseInt(this.revNum);
    Long entityId = Long.valueOf(this.entityId);

    Object auditRecord;/*from   www  .  j  av  a 2 s .  c om*/
    AuditReader reader = AuditReaderFactory.get(Utils.getEntityManager());

    AuditQuery auditQuery = reader.createQuery().forEntitiesAtRevision(entityClass, revNum)
            .add(AuditEntity.revisionNumber().eq(revNum)).add(AuditEntity.id().eq(entityId));
    List result = auditQuery.getResultList();
    if (result.isEmpty()) {
        auditQuery = reader.createQuery().forEntitiesAtRevision(entityClass, revNum)
                .add(AuditEntity.revisionNumber().le(revNum)).add(AuditEntity.id().eq(entityId));
        auditRecord = auditQuery.getResultList().get(0);
    } else {
        auditRecord = result.get(0);
    }

    SimpleDocument simpleDocument = null;

    if (auditRecord instanceof SimpleDocument) {
        simpleDocument = (SimpleDocument) auditRecord;
    } else {
        LOGGER.error("Audited entity of class {} does not implement necessary logic of {}",
                auditRecord.getClass().getName(), SimpleDocument.class.getName());
    }

    return simpleDocument;
}

From source file:com.wiiyaya.framework.provider.repository.revision.BaseRevisionDaoImpl.java

License:Apache License

@SuppressWarnings("unchecked")
public Revision<N, T> findLastChangeRevision(ID id) {

    Class<T> type = entityInformation.getJavaType();
    AuditReader reader = AuditReaderFactory.get(entityManager);

    List<Number> revisions = reader.getRevisions(type, id);

    if (revisions.isEmpty()) {
        return null;
    }//ww  w  .j a v a2 s.  c  om

    N latestRevision = (N) revisions.get(revisions.size() - 1);

    Class<?> revisionEntityClass = revisionEntityInformation.getRevisionEntityClass();

    Object revisionEntity = reader.findRevision(revisionEntityClass, latestRevision);
    RevisionMetadata<N> metadata = (RevisionMetadata<N>) getRevisionMetadata(revisionEntity);
    return new Revision<N, T>(metadata, reader.find(type, id, latestRevision));
}

From source file:com.wiiyaya.framework.provider.repository.revision.BaseRevisionDaoImpl.java

License:Apache License

@Override
public Revision<N, T> findRevision(ID id, N revisionNumber) {

    Assert.notNull(id, "Identifier must not be null!");
    Assert.notNull(revisionNumber, "Revision number must not be null!");

    return getEntityForRevision(revisionNumber, id, AuditReaderFactory.get(entityManager));
}

From source file:com.wiiyaya.framework.provider.repository.revision.BaseRevisionDaoImpl.java

License:Apache License

@SuppressWarnings("unchecked")
public Revisions<N, T> findRevisions(ID id) {

    Class<T> type = entityInformation.getJavaType();
    AuditReader reader = AuditReaderFactory.get(entityManager);
    List<? extends Number> revisionNumbers = reader.getRevisions(type, id);

    return revisionNumbers.isEmpty() ? new Revisions<N, T>(Collections.EMPTY_LIST)
            : getEntitiesForRevisions((List<N>) revisionNumbers, id, reader);
}

From source file:com.wiiyaya.framework.provider.repository.revision.BaseRevisionDaoImpl.java

License:Apache License

@SuppressWarnings("unchecked")
public Page<Revision<N, T>> findRevisions(ID id, Pageable pageable) {

    Class<T> type = entityInformation.getJavaType();
    AuditReader reader = AuditReaderFactory.get(entityManager);
    List<Number> revisionNumbers = reader.getRevisions(type, id);

    if (pageable.getOffset() > revisionNumbers.size()) {
        return new PageImpl<Revision<N, T>>(Collections.<Revision<N, T>>emptyList(), pageable, 0);
    }//  w  ww.j av a2  s. co m

    int upperBound = pageable.getOffset() + pageable.getPageSize();
    upperBound = upperBound > revisionNumbers.size() ? revisionNumbers.size() : upperBound;

    List<? extends Number> subList = revisionNumbers.subList(pageable.getOffset(), upperBound);
    Revisions<N, T> revisions = getEntitiesForRevisions((List<N>) subList, id, reader);

    return new PageImpl<Revision<N, T>>(revisions.getContent(), pageable, revisionNumbers.size());
}

From source file:cz.filmtit.userspace.Session.java

License:Open Source License

/**
 * Loads previous versions of subtitle items
 *
 * @param results list of currently loaded Translation Results
 * @param date date before which the translation results to load were
 * created//from   w  ww  .  j a v  a  2s . c o m
 * @return returns list of old Translation Results created before given date
 */
public List<TranslationResult> loadPreviousVersions(List<TranslationResult> results, Date date) {
    AuditReader auditReader = AuditReaderFactory.get(usHibernateUtil.getSessionWithActiveTransaction());
    List<TranslationResult> tResults = new ArrayList<TranslationResult>();

    try {

        Number revisionNumber = auditReader.getRevisionNumberForDate(date);

        logger.log(Logger.Level.ERROR, revisionNumber);

        for (TranslationResult result : results) {
            List resultList = auditReader.createQuery()
                    .forRevisionsOfEntity(USTranslationResult.class, true, false)
                    .add(AuditEntity.id().eq(result.getId()))
                    .add(AuditEntity.revisionNumber().le(revisionNumber))
                    .addOrder(AuditEntity.revisionNumber().desc()).getResultList();

            if (resultList != null && !resultList.isEmpty()) {
                USTranslationResult singleResult = (USTranslationResult) resultList.get(0);
                tResults.add(singleResult.getTranslationResult());
            }
        }

    } catch (RevisionDoesNotExistException e) {
        logger.log(Logger.Level.ERROR, e.getDate() + " " + e.getRevision());
    }

    return tResults;

}

From source file:cz.filmtit.userspace.Session.java

License:Open Source License

/**
 * Loads old Subtitle Item for a given Translation Result created before
 * revision number//from  www. j  a  v  a  2 s . c o  m
 *
 * @param result Translation Result of which to load old version
 * @param number Revision Number
 * @return returns an object containing old version of Translation Result
 * and number of revision at which it was created
 */
public AuditResponse loadOldTranslationResult(TranslationResult result, Number number) {
    AuditReader auditReader = AuditReaderFactory.get(usHibernateUtil.getSessionWithActiveTransaction());

    if (number == null) {
        number = Integer.MAX_VALUE;
    }

    Number revisionNumber = (Number) auditReader.createQuery()
            .forRevisionsOfEntity(USTranslationResult.class, true, false)
            .add(AuditEntity.id().eq(result.getId())).addProjection(AuditEntity.revisionNumber().max())
            .add(AuditEntity.revisionNumber().lt(number))
            .add(AuditEntity.or(AuditEntity.property("userTranslation").hasChanged(),
                    AuditEntity.property("posteditedString").hasChanged()))
            .getSingleResult();

    if (revisionNumber == null) {
        return new AuditResponse();
    }

    USTranslationResult singleResult = (USTranslationResult) auditReader.createQuery()
            .forEntitiesAtRevision(USTranslationResult.class, revisionNumber)
            .add(AuditEntity.id().eq(result.getId())).getSingleResult();

    if (singleResult == null) {
        return new AuditResponse();
    }

    logger.log(Logger.Level.ERROR, singleResult.getTranslationResult() + " " + revisionNumber);

    return new AuditResponse(singleResult.getTranslationResult(), revisionNumber);
}