@Test public void testSelectEntitiesAndRevisionsQuery() { List result = getAuditReader().createQuery() .forRevisionsOfEntity( StrIntTestEntity.class, false, true ) .add( AuditEntity.id().eq( id1 ) ) .getResultList(); assert result.size() == 3; assert ((Object[]) result.get( 0 ))[0].equals( new StrIntTestEntity( "a", 10, id1 ) ); assert ((Object[]) result.get( 1 ))[0].equals( new StrIntTestEntity( "aBc", 10, id1 ) ); assert ((Object[]) result.get( 2 ))[0].equals( new StrIntTestEntity( null, null, id1 ) ); assert ((SequenceIdRevisionEntity) ((Object[]) result.get( 0 ))[1]).getId() == 1; assert ((SequenceIdRevisionEntity) ((Object[]) result.get( 1 ))[1]).getId() == 2; assert ((SequenceIdRevisionEntity) ((Object[]) result.get( 2 ))[1]).getId() == 4; assert ((Object[]) result.get( 0 ))[2].equals( RevisionType.ADD ); assert ((Object[]) result.get( 1 ))[2].equals( RevisionType.MOD ); assert ((Object[]) result.get( 2 ))[2].equals( RevisionType.DEL ); }
public static AuditId id(String alias) { return new AuditId( alias ); }
@Test public void testProjectionsInEntitiesAtRevision() { assert getAuditReader().createQuery().forEntitiesAtRevision( StrIntTestEntity.class, 1 ) .getResultList().size() == 2; assert getAuditReader().createQuery().forEntitiesAtRevision( StrIntTestEntity.class, 2 ) .getResultList().size() == 1; assert (Long) getAuditReader().createQuery().forEntitiesAtRevision( StrIntTestEntity.class, 1 ) .addProjection( AuditEntity.id().count() ).getResultList().get( 0 ) == 2; assert (Long) getAuditReader().createQuery().forEntitiesAtRevision( StrIntTestEntity.class, 2 ) .addProjection( AuditEntity.id().count() ).getResultList().get( 0 ) == 1; }
@Test @TestForIssue(jiraKey = "HHH-8036") public void testEntityIdOrdering() { List<IntTestEntity> list = getAuditReader().createQuery().forRevisionsOfEntity( IntTestEntity.class, true, true ) .add( AuditEntity.revisionNumber().lt( 2 ) ) .addOrder( AuditEntity.id().desc() ) .getResultList(); Assert.assertEquals( Arrays.asList( new IntTestEntity( 10, 2 ), new IntTestEntity( 2, 1 ) ), list ); }
@Test @TestForIssue(jiraKey = "HHH-8036") public void testEntityIdRestriction() { List<IntTestEntity> list = getAuditReader().createQuery().forRevisionsOfEntity( IntTestEntity.class, true, true ) .add( AuditEntity.id().between( 2, 3 ) ) .getResultList(); Assert.assertTrue( TestTools.checkCollection( list, new IntTestEntity( 10, 2 ), new IntTestEntity( 8, 3 ), new IntTestEntity( 52, 2 ) ) ); }
@Test public void testRevisionsOfEntityWithoutDelete() { List result = getAuditReader().createQuery() .forRevisionsOfEntity( StrIntTestEntity.class, false, false ) .add( AuditEntity.id().eq( id2 ) ) .getResultList(); assert result.size() == 1; assert ((Object[]) result.get( 0 ))[0].equals( new StrIntTestEntity( "b", 11, id2 ) ); assert ((SequenceIdRevisionEntity) ((Object[]) result.get( 0 ))[1]).getId() == 1; assert ((Object[]) result.get( 0 ))[2].equals( RevisionType.ADD ); } }
/** * It returns how many entities are modified for a specific class and number revision. */ private int howManyEntitiesChangedAtRevisionNumber(AuditReader auditReader, Class<?> clazz, Number revision) { return ( (Long) auditReader.createQuery().forEntitiesModifiedAtRevision( clazz, revision ) .addProjection( AuditEntity.id().count() ).getSingleResult() ).intValue(); }
public static AuditId id(String alias) { return new AuditId( alias ); }
private void printAddressHistory(StringBuilder sb, int addressId) { AuditReader reader = AuditReaderFactory.get(entityManager); List addressHistory = reader.createQuery() .forRevisionsOfEntity(Address.class, false, true) .add(AuditEntity.id().eq(addressId)) .getResultList(); if (addressHistory.size() == 0) { sb.append("A address with id ").append(addressId).append(" does not exist.\n"); } else { for (Object historyObj : addressHistory) { Object[] history = (Object[]) historyObj; DefaultRevisionEntity revision = (DefaultRevisionEntity) history[1]; sb.append("revision = ").append(revision.getId()).append(", "); printAddress(sb, (Address) history[0]); sb.append(" (").append(revision.getRevisionDate()).append(")\n"); } } }
@Test public void testRevisionsPropertyEqQuery() { List revs_id1 = getAuditReader().createQuery() .forRevisionsOfEntity( StrIntTestEntity.class, false, true ) .add( AuditEntity.id().eq( id1 ) ) .getResultList(); Assert.assertEquals( 2, revs_id1.size() ); Assert.assertEquals( new StrIntTestEntity( "a", 10, id1 ), ((Object[]) revs_id1.get( 0 ))[0] ); Assert.assertEquals( new StrIntTestEntity( "a", 10, id1 ), ((Object[]) revs_id1.get( 1 ))[0] ); }
private void printPersonHistory(StringBuilder sb, int personId) { AuditReader reader = AuditReaderFactory.get(entityManager); List personHistory = reader.createQuery() .forRevisionsOfEntity(Person.class, false, true) .add(AuditEntity.id().eq(personId)) .getResultList(); if (personHistory.size() == 0) { sb.append("A person with id ").append(personId).append(" does not exist.\n"); } else { for (Object historyObj : personHistory) { Object[] history = (Object[]) historyObj; DefaultRevisionEntity revision = (DefaultRevisionEntity) history[1]; sb.append("revision = ").append(revision.getId()).append(", "); printPerson(sb, (Person) history[0]); sb.append(" (").append(revision.getRevisionDate()).append(")\n"); } } }
@Test public void testRevisionsOfId1Query() { List<Object[]> result = getAuditReader().createQuery() .forRevisionsOfEntity( StrIntTestEntity.class, false, true ) .add( AuditEntity.id().eq( id1 ) ) .getResultList(); assert result.get( 0 )[0].equals( new StrIntTestEntity( "a", 10, id1 ) ); assert result.get( 0 )[1] instanceof CustomRevEntity; assert ((CustomRevEntity) result.get( 0 )[1]).getCustomId() == 1; assert result.get( 1 )[0].equals( new StrIntTestEntity( "c", 10, id1 ) ); assert result.get( 1 )[1] instanceof CustomRevEntity; assert ((CustomRevEntity) result.get( 1 )[1]).getCustomId() == 2; }
@Test public void testSelectEntitiesQuery() { List result = getAuditReader().createQuery() .forRevisionsOfEntity( StrIntTestEntity.class, true, false ) .add( AuditEntity.id().eq( id1 ) ) .getResultList(); assert result.size() == 2; assert result.get( 0 ).equals( new StrIntTestEntity( "a", 10, id1 ) ); assert result.get( 1 ).equals( new StrIntTestEntity( "aBc", 10, id1 ) ); }
@Test public void testSelectRevisionTypeQuery() { List result = getAuditReader().createQuery() .forRevisionsOfEntity( StrIntTestEntity.class, false, true ) .addProjection( AuditEntity.revisionType() ) .add( AuditEntity.id().eq( id1 ) ) .addOrder( AuditEntity.revisionNumber().asc() ) .getResultList(); assert result.size() == 3; assert result.get( 0 ).equals( RevisionType.ADD ); assert result.get( 1 ).equals( RevisionType.MOD ); assert result.get( 2 ).equals( RevisionType.DEL ); }
@Test public void testRevisionsOfId2Query() { List<Object[]> result = getAuditReader().createQuery() .forRevisionsOfEntity( StrIntTestEntity.class, false, true ) .add( AuditEntity.id().eq( id2 ) ) .getResultList(); assert result.get( 0 )[0].equals( new StrIntTestEntity( "b", 15, id2 ) ); assert result.get( 0 )[1] instanceof CustomRevEntity; assert ((CustomRevEntity) result.get( 0 )[1]).getCustomId() == 1; }
@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 public void testRevisionTypes() { @SuppressWarnings({"unchecked"}) List<Object[]> results = getAuditReader().createQuery() .forRevisionsOfEntity( StrTestEntity.class, false, true ) .add( AuditEntity.id().eq( id ) ) .getResultList(); assertEquals( results.get( 0 )[2], RevisionType.ADD ); assertEquals( results.get( 1 )[2], RevisionType.MOD ); } }
@Test public void testRevisionTypes() { @SuppressWarnings({"unchecked"}) List<Object[]> results = getAuditReader().createQuery() .forRevisionsOfEntity( StrTestEntity.class, false, true ) .add( AuditEntity.id().eq( id ) ) .getResultList(); assertEquals( results.get( 0 )[2], RevisionType.ADD ); assertEquals( results.get( 1 )[2], RevisionType.MOD ); } }
@Test public void testRevisionTypes() { List<Object[]> results = getAuditReader().createQuery() .forRevisionsOfEntity( StrTestEntity.class, false, true ) .add( AuditEntity.id().eq( id ) ) .getResultList(); assertEquals( results.get( 0 )[2], RevisionType.ADD ); assertEquals( results.get( 1 )[2], RevisionType.MOD ); } }
private AuditQuery createForRevisionsQuery(Class<?> clazz, Object id, boolean withDeleted) { return getAuditReader().createQuery() .forRevisionsOfEntity( clazz, false, withDeleted ) .add( AuditEntity.id().eq( id ) ); }