package org.jboss.as.test.integration.jpa.hibernate.envers; import java.util.ArrayList; import java.util.List; import javax.ejb.Stateless; import javax.persistence.EntityManager; import javax.persistence.PersistenceContext; import org.hibernate.envers.AuditReader; import org.hibernate.envers.AuditReaderFactory; import org.hibernate.envers.RevisionType; import org.hibernate.envers.query.AuditEntity; import org.hibernate.envers.query.AuditQuery; /** * @author Madhumita Sadhukhan */ @Stateless public class SLSBOrg { @PersistenceContext(unitName = "myOrg") EntityManager em; public Organization createOrg(String name, String type, String startDate, String endDate, String location) { Organization org = new Organization(); org.setName(name); org.setType(type); org.setStartDate(startDate); org.setEndDate(endDate); org.setLocation(location); em.persist(org); return org; } public Organization updateOrg(Organization o) { return em.merge(o); } public void deleteOrg(Organization o) { em.remove(em.merge(o)); } public Organization retrieveOldOrgbyId(int id) { AuditReader reader = AuditReaderFactory.get(em); List<Number> revList = reader.getRevisions(Organization.class, id); Organization org1_rev = reader.find(Organization.class, id, 2); return org1_rev; } public Organization retrieveDeletedOrgbyId(int id) { AuditReader reader = AuditReaderFactory.get(em); List<Number> revList = reader.getRevisions(Organization.class, id); /*for (Number revisionNumber : revList) { System.out.println("Available revisionNumber for o1:" + revisionNumber); }*/ List<Object> custHistory = new ArrayList<Object>(); AuditQuery query = reader.createQuery().forRevisionsOfEntity(Organization.class, true, true); query.add(AuditEntity.revisionType().eq(RevisionType.DEL)); Organization rev = (Organization) (((List<Object>) (query.getResultList())).toArray()[0]); return rev; } public Organization retrieveOldOrgbyEntityName(String name, int id) { AuditReader reader = AuditReaderFactory.get(em); Organization org1_rev = reader.find(Organization.class, name, id, 3); return org1_rev; } }