Example usage for org.hibernate.envers AuditReader getRevisions

List of usage examples for org.hibernate.envers AuditReader getRevisions

Introduction

In this page you can find the example usage for org.hibernate.envers AuditReader getRevisions.

Prototype

List<Number> getRevisions(Class<?> cls, Object primaryKey)
        throws IllegalArgumentException, NotAuditedException, IllegalStateException;

Source Link

Document

Get a list of revision numbers, at which an entity was modified.

Usage

From source file:io.oasp.module.jpa.dataaccess.base.AbstractGenericRevisionedDao.java

License:Apache License

@Override
public List<RevisionMetadata> getRevisionHistoryMetadata(Object id) {

    AuditReader auditReader = getAuditReader();
    List<Number> revisionList = auditReader.getRevisions(getEntityClass(), id);
    List<RevisionMetadata> result = new ArrayList<>();
    for (Number revision : revisionList) {
        Long revisionLong = Long.valueOf(revision.longValue());
        result.add(new LazyRevisionMetadata(getEntityManager(), revisionLong));
    }/*from  w  ww  . ja  v a  2s  . c o  m*/
    return result;
}

From source file:net.sf.mmm.persistence.impl.hibernate.AbstractRevisionedDaoEnvers.java

License:Apache License

/**
 * {@inheritDoc}/*ww w.  jav a 2s .  c  om*/
 */
@Override
public List<RevisionMetadata> getRevisionHistoryMetadata(Object id) {

    AuditReader auditReader = getAuditReader();
    List<Number> revisionList = auditReader.getRevisions(getEntityClass(), id);
    List<RevisionMetadata> result = new ArrayList<RevisionMetadata>();
    for (Number revision : revisionList) {
        Long revisionLong = Long.valueOf(revision.longValue());
        result.add(new LazyRevisionMetadata(this.persistenceManager, revisionLong));
    }
    return result;
}

From source file:org.asqatasun.entity.dao.audit.ProcessResultDAOImpl.java

License:Open Source License

@Override
public List<DefiniteResult> getHistoryChanges(ProcessResult processResultImpl) {

    List<DefiniteResult> history = new ArrayList<>();
    AuditReader auditReader = AuditReaderFactory.get(this.entityManager);
    Long id = processResultImpl.getId();
    if (id == null) {
        return new ArrayList<>();
    }//  w  w w. j  av  a  2 s.c om
    List<Number> revisions = auditReader.getRevisions(processResultImpl.getClass(), id);
    DefiniteResult find = null;
    for (int i = 0; i < revisions.size(); i++) {
        Number revision = revisions.get(i);
        find = auditReader.find(DefiniteResultImpl.class, id, revision);
        history.add(find);
    }

    return history;

}

From source file:org.bitbucket.fbascheper.tutorial.envers.EnversIllustrationTest.java

License:Apache License

@Test
public void testOne() {

    // create a couple of events
    final Event event1 = getTransactionTemplate().execute(new TransactionCallback<Event>() {
        @Override/*from  ww  w  .  ja  v  a 2s  .com*/
        public Event doInTransaction(TransactionStatus status) {
            // revision 1
            Event event = new Event("Our very first event!", new Date());
            getEntityManager().persist(event);
            return event;

        }
    });
    final Event event2 = getTransactionTemplate().execute(new TransactionCallback<Event>() {
        @Override
        public Event doInTransaction(TransactionStatus status) {
            // revision 2
            Event event = new Event("A follow up event", new Date());
            getEntityManager().persist(event);
            return event;

        }
    });

    // now lets pull events from the database and list them

    List<Event> result = getTransactionTemplate().execute(new TransactionCallback<List<Event>>() {
        @Override
        public List<Event> doInTransaction(TransactionStatus status) {
            List<Event> result = getEntityManager().createQuery("select evt from Event evt", Event.class)
                    .getResultList();
            for (Event event : result) {
                System.out.println("Event (" + event.getDate() + ") : " + event.getTitle());
            }

            return result;
        }
    });

    // verify that id's were generated
    final Long event1Id = event1.getId();
    final Long event2Id = event2.getId();

    assertThat(event1Id, notNullValue());
    assertThat(event2Id, notNullValue());

    // so far the code is the same as we have seen in previous tutorials.  Now lets leverage Envers...
    // first lets create some revisions
    getTransactionTemplate().execute(new TransactionCallbackWithoutResult() {
        @Override
        protected void doInTransactionWithoutResult(TransactionStatus status) {
            // revision 3
            Event myEvent = getEntityManager().find(Event.class, event2Id);
            myEvent.setDate(new Date());
            myEvent.setTitle(myEvent.getTitle() + " (rescheduled)");

        }
    });

    // and then use an AuditReader to look back through history
    getTransactionTemplate().execute(new TransactionCallbackWithoutResult() {
        @Override
        protected void doInTransactionWithoutResult(TransactionStatus status) {

            Event myEvent = getEntityManager().find(Event.class, event2Id);
            assertThat("A follow up event (rescheduled)", is(myEvent.getTitle()));

            AuditReader reader = AuditReaderFactory.get(getEntityManager());

            List<? extends Number> event2Revisions = reader.getRevisions(Event.class, event2Id);
            assertThat(event2Revisions.size(), is(2));

            long event2Revision1 = event2Revisions.get(0).longValue();
            long event2Revision2 = event2Revisions.get(1).longValue();

            assertThat(event2Revision1, is(2L));
            assertThat(event2Revision2, is(3L));

            Event firstRevision = reader.find(Event.class, event2Id, event2Revision1);

            assertThat(firstRevision, notNullValue());
            assertThat(firstRevision.getTitle(), notNullValue());
            assertThat(firstRevision.getTitle(), not(is(myEvent.getTitle())));
            assertThat(firstRevision.getDate(), not(is(myEvent.getDate())));

            Event secondRevision = reader.find(Event.class, event2Id, event2Revision2);
            assertThat(secondRevision, notNullValue());
            assertThat(secondRevision.getTitle(), notNullValue());
            assertThat(secondRevision.getTitle(), is(myEvent.getTitle()));
            assertThat(secondRevision.getDate(), is(myEvent.getDate()));

        }

    });

}

From source file:org.jboss.as.test.integration.hibernate.envers.SFSBHibernateEnversSessionFactory.java

License:Open Source License

public StudentAudited retrieveOldStudentVersion(int id) {
    AuditReader reader = AuditReaderFactory.get(sessionFactory.openSession());
    StudentAudited student_rev = reader.find(StudentAudited.class, id, 1);
    List<Number> revlist = reader.getRevisions(StudentAudited.class, id);
    // this is for checking revision size hence not removing this S.o.p
    //System.out.println("Size of revisionList:--" + revlist.size());
    return student_rev;
}

From source file:org.jboss.pnc.model.BuildConfigurationTest.java

License:Open Source License

@Test
public void testRetrieveAuditedGenericParameters() {
    //given//ww  w  . jav  a2  s  .co  m
    String key = "key";
    String initialValue = "initialValue";
    String updatedValue = "updatedValue";
    Map<String, String> initialParameters = new HashMap<>();
    initialParameters.put(key, initialValue);

    Map<String, String> updatedParameters = new HashMap<>();
    updatedParameters.put(key, updatedValue);

    //when
    BuildConfiguration buildConfiguration = createBc("auditing test", "description", initialParameters);
    em.getTransaction().begin();
    em.persist(buildConfiguration);
    em.getTransaction().commit();

    buildConfiguration.setGenericParameters(updatedParameters);
    buildConfiguration.setDescription("updated description");
    em.getTransaction().begin();
    em.persist(buildConfiguration);
    em.getTransaction().commit();

    //then
    BuildConfiguration obtained = em.find(BuildConfiguration.class, buildConfiguration.getId());

    AuditReader reader = AuditReaderFactory.get(em);
    List<Number> revisions = reader.getRevisions(BuildConfiguration.class, obtained.getId());

    assertEquals(2, revisions.size());

    Number firstRevision = revisions.get(0);
    BuildConfiguration oldBuildConfiguration = reader.find(BuildConfiguration.class, obtained.getId(),
            firstRevision);
    Number secondRevision = revisions.get(1);
    BuildConfiguration newBuildConfiguration = reader.find(BuildConfiguration.class, obtained.getId(),
            secondRevision);

    Assert.assertEquals(oldBuildConfiguration.getGenericParameters().get(key), initialValue);
    Assert.assertEquals(newBuildConfiguration.getGenericParameters().get(key), updatedValue);

    BuildConfiguration buildConfigurationOld = getByIdRev(buildConfiguration.getId(), firstRevision.intValue());
    BuildConfigurationAudited auditedOld = BuildConfigurationAudited
            .fromBuildConfiguration(buildConfigurationOld, firstRevision.intValue());

    Assert.assertEquals(auditedOld.getGenericParameters().get(key), initialValue);

    BuildConfiguration buildConfigurationNew = getByIdRev(buildConfiguration.getId(),
            secondRevision.intValue());
    BuildConfigurationAudited auditedNew = BuildConfigurationAudited
            .fromBuildConfiguration(buildConfigurationNew, secondRevision.intValue());

    Assert.assertEquals(auditedNew.getGenericParameters().get(key), updatedValue);

}

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

License:Open Source License

/**
 * @return Returns a collection of revisions
 *///from  www  . j  a v  a  2  s. c o  m
public static <T extends AuditedEntity> Map<Number, T> getRevisionEntities(final EntityManager entityManager,
        final Class<T> entityClass, final Integer id) {
    final AuditReader reader = AuditReaderFactory.get(entityManager);
    final List<Number> revisions = reader.getRevisions(entityClass, id);
    Collections.sort(revisions, Collections.reverseOrder());

    /* Use a LinkedHashMap to preserver the order */
    final Map<Number, T> retValue = new LinkedHashMap<Number, T>();
    for (final Number revision : revisions)
        retValue.put(revision, getRevision(reader, entityClass, id, revision, false));

    return retValue;
}

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

License:Open Source License

/**
 * @return Returns the list of revision numbers for this entity, as maintained by Envers
 *///  w w w  .ja  v  a2  s .  c  om
public static <T extends AuditedEntity> List<Number> getRevisions(final EntityManager entityManager,
        final Class<T> entityClass, final Number id) {
    final AuditReader reader = AuditReaderFactory.get(entityManager);
    final List<Number> retValue = reader.getRevisions(entityClass, id);
    Collections.sort(retValue, Collections.reverseOrder());
    return retValue;
}

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

License:Open Source License

public static <T extends AuditedEntity> Number getLatestRevision(final EntityManager entityManager,
        final Class<T> entityClass, final Integer id) {
    final AuditReader reader = AuditReaderFactory.get(entityManager);
    final List<Number> retValue = reader.getRevisions(entityClass, id);
    Collections.sort(retValue, Collections.reverseOrder());
    return retValue.size() != 0 ? retValue.get(0) : -1;
}

From source file:org.opens.tanaguru.entity.dao.audit.ProcessResultDAOImpl.java

License:Open Source License

@Override
public List<DefiniteResult> getHistoryChanges(ProcessResult processResultImpl) {

    List<DefiniteResult> history = new ArrayList<DefiniteResult>();
    AuditReader auditReader = AuditReaderFactory.get(this.entityManager);
    Long id = processResultImpl.getId();
    if (id == null) {
        return new ArrayList<DefiniteResult>();
    }//from   w w w. j a v a2s. com
    List<Number> revisions = auditReader.getRevisions(processResultImpl.getClass(), id);
    DefiniteResult find = null;
    for (int i = 0; i < revisions.size(); i++) {
        Number revision = revisions.get(i);
        find = auditReader.find(DefiniteResultImpl.class, id, revision);
        history.add(find);
    }

    return history;

}