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:fr.mcc.ginco.audit.utils.AuditReaderService.java

License:CeCILL license

public AuditReader getAuditReader() {
    return AuditReaderFactory.get(sessionFactory.getCurrentSession());
}

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

License:Apache License

/**
 * @return the auditReader
 */
protected AuditReader getAuditReader() {

    return AuditReaderFactory.get(getEntityManager());
}

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 {//  ww w  .  j av a2  s .c om
            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.SQLCore.java

License:Open Source License

public static AuditReader getAuditReader(Session session) {
    return AuditReaderFactory.get(session);
}

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

License:Open Source License

/** {@inheritDoc} */
@Override/* w w  w .  j  av a  2s .co  m*/
@SafeVarargs
@SuppressWarnings("unchecked")
public final Revisions<Long, T> findInRevisions(final Long id, final Long... revisionNumbers) {
    Preconditions.checkArgument(id != null, ERROR_MESSAGE_ID);
    Preconditions.checkArgument(revisionNumbers.length >= 1, ERROR_MESSAGE_INSUFFICIENT_REV_NUMBERS);

    if (LOGGER.isTraceEnabled()) {
        LOGGER.trace(String.format("%s(%s,%s)", "findInRevision", id, Arrays.toString(revisionNumbers)));
    }

    final Class<T> type = this.entityInformation.getJavaType();
    final AuditReader reader = AuditReaderFactory.get(this.entityManager);
    final Map<Long, T> revisions = new HashMap<>(revisionNumbers.length);
    final Class<?> revisionEntityClass = this.revisionEntityInformation.getRevisionEntityClass();
    final Map<Number, Object> revisionEntities = (Map<Number, Object>) reader.findRevisions(revisionEntityClass,
            new HashSet<Number>(Lists.newArrayList(revisionNumbers)));

    for (Number number : revisionNumbers) {
        revisions.put((Long) number, reader.find(type, id, number));
    }

    return new Revisions<>(this.toRevisions(revisions, revisionEntities));
}

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

License:Open Source License

/** {@inheritDoc} */
@Override/*from www .j  a  va2s.  c o m*/
@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);
}

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

License:Open Source License

/** {@inheritDoc} */
@Override//w  ww .ja v  a  2 s.  com
public long countRevisions(final Long id) {
    final Class<T> type = this.entityInformation.getJavaType();
    final AuditReader reader = AuditReaderFactory.get(this.entityManager);

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

    return (long) reader.createQuery().forRevisionsOfEntity(type, false, true)
            .addProjection(AuditEntity.revisionNumber().count()).getSingleResult();
}

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<>();
    }/*from  www. j  ava 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.azafiu.hibernatetest.datainteractor.CommonDAO.java

License:Apache License

/**
 * Get an {@link AuditReader} from the {@link EntityManager} through the
 * {@link AuditReaderFactory}/*from w w  w  . ja v a 2 s. c  om*/
 * 
 * @return an {@link AuditReader}
 */
protected AuditReader getAuditReader() {
    return AuditReaderFactory.get(this.entityManager);
}

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// w ww .java2  s . c  om
        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()));

        }

    });

}