@Test public void testIsEntityClassAuditedForNotAuditedEntity() { assert !getAuditReader().isEntityClassAudited( NotAuditedTestEntity.class ); try { getAuditReader().getRevisions( NotAuditedTestEntity.class, 1 ); } catch (NotAuditedException nae) { // it's ok because the entity is not audited assert true; } }
@Test public void testIsEntityClassAuditedForAuditedEntity() { assertTrue( getAuditReader().isEntityClassAudited( AuditedTestEntity.class ) ); assertEquals( Arrays.asList( 1, 2, 3 ), getAuditReader().getRevisions( AuditedTestEntity.class, 1 ) ); }
Assert.assertTrue( getAuditReader().isEntityClassAudited( proxySte.getClass() ) );
@SuppressWarnings("unchecked") public List<Object> getAllDeletedEntities(Class clazz) { Objects.requireNonNull(clazz, "Clazz can not be null"); AuditReader reader = AuditReaderFactory.get(entityManager); if (reader.isEntityClassAudited(clazz)) { AuditQuery query = reader.createQuery() .forRevisionsOfEntity(clazz, false, true) .add(AuditEntity.revisionType().eq(DEL)); List<Object[]> resultList = query.getResultList(); if (!resultList.isEmpty()) { List<Object> deleted = new ArrayList<>(); for (Object[] objects : resultList) { deleted.add(objects[0]); } return deleted; } } return Collections.EMPTY_LIST; }
@SuppressWarnings("unchecked") public <T> Object getDeletedEntity(T entity, Integer id) { Objects.requireNonNull(entity, "Entity can not be null"); Objects.requireNonNull(id, "Id can not be null"); AuditReader reader = AuditReaderFactory.get(entityManager); if (reader.isEntityClassAudited(entity.getClass())) { AuditQuery query = reader.createQuery() .forRevisionsOfEntity(entity.getClass(), false, true) .add(AuditEntity.id().eq(id)) .add(AuditEntity.revisionType().eq(DEL)); List<Object[]> resultList = query.getResultList(); if (!resultList.isEmpty()) { return resultList.get(0)[0]; } } return null; }
/** * @return a list of three-element arrays, containing: * <ol> * <li>the entity instance</li> * <li>revision entity, corresponding to the revision at which the entity was modified. If no custom * revision entity is used, this will be an instance of {@link org.hibernate.envers.DefaultRevisionEntity}</li> * <li>type of the revision (an enum instance of class {@link org.hibernate.envers.RevisionType})</li> * </ol> */ private <T> List getAllRevisionsForEntity(T entity, Integer id){ Objects.requireNonNull(entity, "Entity can not be null"); Objects.requireNonNull(id, "Id can not be null"); AuditReader reader = AuditReaderFactory.get(entityManager); Number revisionNumberOneYearAgo = getRevisionNumberOneYearAgo(reader); if (reader.isEntityClassAudited(entity.getClass())) { AuditQuery query = reader.createQuery().forRevisionsOfEntity(entity.getClass(), false, true) .add(AuditEntity.id().eq(id)) .add(AuditEntity.revisionNumber().gt(revisionNumberOneYearAgo)) .addOrder(AuditEntity.revisionNumber().desc()); return (List<T>) query.getResultList(); } return null; }