/** * Create restrictions, projections and specify order for a property of the revision entity, * corresponding to an audited entity. * * @param propertyName Name of the property. */ public static AuditProperty<Object> revisionProperty(String propertyName) { return revisionProperty( null, propertyName ); }
@Test public void testRevisionPropertyRestriction() { List<Object[]> result = getAuditReader().createQuery() .forRevisionsOfEntity( StrIntTestEntity.class, false, true ) .add( AuditEntity.id().eq( id1 ) ) .add( AuditEntity.revisionProperty( "customTimestamp" ).ge( timestamp ) ) .getResultList(); assert result.get( 0 )[0].equals( new StrIntTestEntity( "c", 10, id1 ) ); assert result.get( 0 )[1] instanceof CustomRevEntity; assert ((CustomRevEntity) result.get( 0 )[1]).getCustomId() == 2; assert ((CustomRevEntity) result.get( 0 )[1]).getCustomTimestamp() >= timestamp; } }
@Test @FailureExpected(jiraKey = "HHH-11841", message = "Reverted fix in HHH-12018 and will be fixed in HHH-12043") public void testRevisionHistory() { final AuditReader reader = getAuditReader(); AuditQuery categoryQuery = reader.createQuery().forRevisionsOfEntity( Category.class, false, true ) .addOrder( AuditEntity.revisionProperty( "timestamp" ).asc() ) .add( AuditEntity.id().eq( category.getId() ) ); @SuppressWarnings( "unchecked" ) List<Object[]> history = (List<Object[]>) categoryQuery.getResultList(); assertNotNull( history ); assertEquals( 1, history.size() ); final Category category = (Category) reader.createQuery().forEntitiesAtRevision( Category.class, 1 ) .add( AuditEntity.property( "id" ).eq( this.category.getId() ) ) .setMaxResults( 1 ) .getSingleResult(); assertEquals( this.category.getName(), category.getName() ); assertEquals( this.category.getDescription(), category.getDescription() ); assertEquals( "The text", category.getText( this.item ) ); final Value value = category.getValue( this.item ); assertEquals( "The Value", value.getText() ); assertEquals( Long.valueOf( 4711L ), value.getNumberValue() ); }
/** * Create restrictions, projections and specify order for a property of the revision entity, * corresponding to an audited entity. * * @param propertyName Name of the property. */ public static AuditProperty<Object> revisionProperty(String propertyName) { return revisionProperty( null, propertyName ); }
private void filterOnDateAndThesaurusId(AuditQuery query, Thesaurus thesaurus, Date startDate) { query.add( AuditEntity.revisionProperty("thesaurusId").eq( thesaurus.getIdentifier())).add( AuditEntity.revisionProperty("timestamp").ge( startDate.getTime())); }
@SuppressWarnings("unchecked") public static <E> List<Integer> getEditedEntities(final EntityManager entityManager, final Class<E> type, final String pkColumnName, final DateTime startDate, final DateTime endDate) { if (startDate == null && endDate == null) return null; final AuditReader reader = AuditReaderFactory.get(entityManager); final AuditQuery query = reader.createQuery().forRevisionsOfEntity(type, true, false).addOrder( AuditEntity.revisionProperty("timestamp").asc()).addProjection( AuditEntity.property("originalId." + pkColumnName).distinct()); if (startDate != null) query.add(AuditEntity.revisionProperty("timestamp").ge(startDate.toDate().getTime())); if (endDate != null) query.add(AuditEntity.revisionProperty("timestamp").le(endDate.toDate().getTime())); final List<Integer> entityIds = query.getResultList(); return entityIds; }
/** * @param clazz * @param revision * @param thesaurusId * @return */ public AuditQuery getEntityAtRevision(Class<?> clazz, Number revision, String thesaurusId) { AuditQuery query = readerService .getAuditReader() .createQuery() .forEntitiesAtRevision(clazz, revision) .add(AuditEntity.revisionProperty("thesaurusId").eq( thesaurusId)); return query; }
@SuppressWarnings("unchecked") public static <T extends AuditedEntity> List<Integer> getEditedBy(final EntityManager entityManager, final Class<T> clazz, final String idName, final String username) { final AuditReader reader = AuditReaderFactory.get(entityManager); final AuditQuery query = reader.createQuery() .forRevisionsOfEntity(clazz, true, false) .addProjection(AuditEntity.property("originalId." + idName).distinct()) .add(AuditEntity.revisionProperty("userName").eq(username)) .add(AuditEntity.revisionType().eq(RevisionType.MOD)); return query.getResultList(); } }
@SuppressWarnings("unchecked") public static <T extends AuditedEntity> List<Integer> getCreatedBy(final EntityManager entityManager, final Class<T> clazz, final String idName, final String username) { final AuditReader reader = AuditReaderFactory.get(entityManager); final AuditQuery query = reader.createQuery() .forRevisionsOfEntity(clazz, true, false) .addProjection(AuditEntity.property("originalId." + idName).distinct()) .add(AuditEntity.revisionProperty("userName").eq(username)) .add(AuditEntity.revisionType().eq(RevisionType.ADD)); return query.getResultList(); }
public static <E> List<Integer> getEditedEntitiesByRevision(final EntityManager entityManager, final Class<E> type, final String pkColumnName, final Number startRevision, final Number endRevision) { if (startRevision == null && startRevision == null) return null; final AuditReader reader = AuditReaderFactory.get(entityManager); final AuditQuery query = reader.createQuery().forRevisionsOfEntity(type, true, false) .addOrder(AuditEntity.revisionProperty("timestamp").asc()) .addProjection(AuditEntity.property("originalId." + pkColumnName).distinct()); if (startRevision != null) query.add(AuditEntity.revisionNumber().ge(startRevision)); if (endRevision != null) query.add(AuditEntity.revisionNumber().le(endRevision)); final List<Integer> entityIds = query.getResultList(); return entityIds; }