List of usage examples for org.hibernate.envers AuditReader find
<T> T find(Class<T> cls, Object primaryKey, Date date) throws IllegalArgumentException, NotAuditedException,
RevisionDoesNotExistException, IllegalStateException;
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; }/*from w w w. j a v a 2s. 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
@SuppressWarnings("unchecked") private Revisions<N, T> getEntitiesForRevisions(List<N> revisionNumbers, ID id, AuditReader reader) { Class<T> type = entityInformation.getJavaType(); Map<N, T> revisions = new HashMap<N, T>(revisionNumbers.size()); Class<?> revisionEntityClass = revisionEntityInformation.getRevisionEntityClass(); Map<Number, Object> revisionEntities = (Map<Number, Object>) reader.findRevisions(revisionEntityClass, new HashSet<Number>(revisionNumbers)); for (Number number : revisionNumbers) { revisions.put((N) number, reader.find(type, id, number)); }//from www . java 2 s . c o m return new Revisions<N, T>(toRevisions(revisions, revisionEntities)); }
From source file:com.wiiyaya.framework.provider.repository.revision.BaseRevisionDaoImpl.java
License:Apache License
@SuppressWarnings("unchecked") private Revision<N, T> getEntityForRevision(N revisionNumber, ID id, AuditReader reader) { Class<?> type = revisionEntityInformation.getRevisionEntityClass(); T revision = (T) reader.findRevision(type, revisionNumber); Object entity = reader.find(entityInformation.getJavaType(), id, revisionNumber); return new Revision<N, T>((RevisionMetadata<N>) getRevisionMetadata(revision), (T) entity); }
From source file:de.iteratec.iteraplan.persistence.dao.HistoryDAOImpl.java
License:Open Source License
public <T extends BuildingBlock> T getPreceedingRevisionFor(Class<T> entityClass, Integer bbId, Integer currentRevId) {/*from w w w .j a v a 2 s .c o m*/ AuditReader auditReader = getAuditReader(); // Query to get max Rev less than this one (Should exist, since this is a MOD, but might not Number prevRev = (Number) auditReader.createQuery().forRevisionsOfEntity(entityClass, true, true) .addProjection(AuditEntity.revisionNumber().max()).add(AuditEntity.id().eq(bbId)) .add(AuditEntity.revisionNumber().lt(currentRevId)).getSingleResult(); // If History recording was off during the Initial creation of this BB, this MOD rev might be the // first known rev if (prevRev == null) { return null; } return auditReader.find(entityClass, bbId, prevRev); }
From source file:org.agatom.springatom.data.hades.repo.factory.NVersionedRepositoryImpl.java
License:Open Source License
/** {@inheritDoc} */ @Override//from w ww. j a v a2 s .c o 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.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.j a va 2 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())); } }); }
From source file:org.jboss.as.test.compat.jpa.hibernate.envers.SLSBPU.java
License:Open Source License
public int retrieveOldPersonVersionFromAddress(int id) { AuditReader reader = AuditReaderFactory.get(em); Address address1_rev = reader.find(Address.class, id, 1); return address1_rev.getPersons().size(); }
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.as.test.integration.jpa.transaction.envers.SFSB1.java
License:Open Source License
public String retrieveOldEmployeeVersion(int id) { AuditReader reader = AuditReaderFactory.get(em); Employee emp1_rev = reader.find(Employee.class, id, 1); return emp1_rev.getAddress(); }