Example usage for org.hibernate.envers AuditReaderFactory get

List of usage examples for org.hibernate.envers AuditReaderFactory get

Introduction

In this page you can find the example usage for org.hibernate.envers AuditReaderFactory get.

Prototype

public static AuditReader get(EntityManager entityManager) throws AuditException 

Source Link

Document

Create an audit reader associated with an open entity manager.

Usage

From source file:ch.puzzle.itc.mobiliar.business.auditview.control.AuditService.java

License:Open Source License

public List<AuditViewEntry> getAuditViewEntriesForResource(Integer resourceId) {
    // Map<Hashcode, AuditViewEntry>
    Map<Integer, AuditViewEntry> allAuditViewEntries = new HashMap<>();
    AuditReader reader = AuditReaderFactory.get(entityManager);
    CrossTypeRevisionChangesReader crossTypeRevisionChangesReader = reader.getCrossTypeRevisionChangesReader();
    List<MyRevisionEntity> revisionsForResource = getRevisionsForResource(resourceId);
    for (MyRevisionEntity revisionEntity : revisionsForResource) {
        List<Object> changedEntitiesForRevision = crossTypeRevisionChangesReader
                .findEntities(revisionEntity.getId());
        for (Object o : changedEntitiesForRevision) {
            List resultList = reader.createQuery().forRevisionsOfEntity(o.getClass(), false, true)
                    .add(AuditEntity.revisionNumber().eq(revisionEntity.getId())).getResultList();
            createAuditViewEntriesAndAddToMap(allAuditViewEntries, resultList);
        }//from  w ww.  j ava  2 s  .c  om
    }
    return new ArrayList<>(allAuditViewEntries.values());
}

From source file:ch.puzzle.itc.mobiliar.business.auditview.control.AuditService.java

License:Open Source License

/**
 * @return a list of three-element arrays, containing:
 * <ol>//from  w  w  w.  java  2 s.  c o m
 * <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;
}

From source file:ch.puzzle.itc.mobiliar.business.database.control.AmwAuditReader.java

License:Open Source License

protected AuditReader getAuditReader() {
    return AuditReaderFactory.get(entityManager);
}

From source file:ch.puzzle.itc.mobiliar.business.function.boundary.FunctionsBoundary.java

License:Open Source License

/**
 * Returns a AmwFunctionEntity identified by its id and revision id
 *///  w w  w  .j a  v a  2  s  .  c om
public AmwFunctionEntity getFunctionByIdAndRevision(Integer functionId, Number revisionId) {
    AmwFunctionEntity amwFunctionEntity = AuditReaderFactory.get(entityManager).find(AmwFunctionEntity.class,
            functionId, revisionId);
    return amwFunctionEntity;
}

From source file:ch.puzzle.itc.mobiliar.business.function.boundary.FunctionsBoundary.java

License:Open Source License

/**
 * Returns all RevisionInformation for the specified function id
 *///from www  .j  a  v  a  2 s . c o  m
public List<RevisionInformation> getFunctionRevisions(Integer functionId) {
    List<RevisionInformation> result = new ArrayList<>();
    if (functionId != null) {
        AuditReader reader = AuditReaderFactory.get(entityManager);
        List<Number> list = reader.getRevisions(AmwFunctionEntity.class, functionId);
        for (Number rev : list) {
            Date date = reader.getRevisionDate(rev);
            MyRevisionEntity myRev = entityManager.find(MyRevisionEntity.class, rev);
            result.add(new RevisionInformation(rev, date, myRev.getUsername()));
        }
        Collections.sort(result);
    }
    return result;
}

From source file:ch.puzzle.itc.mobiliar.business.globalfunction.boundary.GlobalFunctionsBoundary.java

License:Open Source License

/**
 * Returns a AmwFunctionEntity identified by its id and revision id
 *//*from ww w.  j a v  a 2s .  co m*/
public GlobalFunctionEntity getFunctionByIdAndRevision(Integer functionId, Number revisionId) {
    GlobalFunctionEntity globalFunctionEntity = AuditReaderFactory.get(entityManager)
            .find(GlobalFunctionEntity.class, functionId, revisionId);
    return globalFunctionEntity;
}

From source file:ch.puzzle.itc.mobiliar.business.globalfunction.boundary.GlobalFunctionsBoundary.java

License:Open Source License

/**
 * Returns all RevisionInformation for the specified function id
 *//*from  www  . j a v  a2s  .  c o m*/
public List<RevisionInformation> getFunctionRevisions(Integer functionId) {
    List<RevisionInformation> result = new ArrayList<RevisionInformation>();
    if (functionId != null) {
        AuditReader reader = AuditReaderFactory.get(entityManager);
        List<Number> list = reader.getRevisions(GlobalFunctionEntity.class, functionId);
        for (Number rev : list) {
            Date date = reader.getRevisionDate(rev);
            MyRevisionEntity myRev = entityManager.find(MyRevisionEntity.class, rev);
            result.add(new RevisionInformation(rev, date, myRev.getUsername()));
        }
        Collections.sort(result);
    }
    return result;
}

From source file:ch.puzzle.itc.mobiliar.business.template.boundary.TemplateEditor.java

License:Open Source License

public TemplateDescriptorEntity getTemplateByIdAndRevision(Integer templateId, Number revisionId) {
    TemplateDescriptorEntity templateDescriptorEntity = AuditReaderFactory.get(entityManager)
            .find(TemplateDescriptorEntity.class, templateId, revisionId);
    //We have to ensure, that the target platforms are loaded. To make sure, that the compiler doesn't optimize the access to the target platforms away, we have to do this ugly hack.
    templateDescriptorEntity.getTargetPlatforms().size();
    return templateDescriptorEntity;
}

From source file:ch.puzzle.itc.mobiliar.business.template.boundary.TemplateEditor.java

License:Open Source License

public List<RevisionInformation> getTemplateRevisions(Integer templateId) {
    List<RevisionInformation> result = new ArrayList<>();
    AuditReader reader = AuditReaderFactory.get(entityManager);
    List<Number> list = reader.getRevisions(TemplateDescriptorEntity.class, templateId);
    for (Number rev : list) {
        Date date = reader.getRevisionDate(rev);
        MyRevisionEntity myRev = entityManager.find(MyRevisionEntity.class, rev);
        result.add(new RevisionInformation(rev, date, myRev.getUsername()));
    }//from w w w  .  j a  v a2  s .  c  o m
    Collections.sort(result);
    return result;
}

From source file:ch.puzzle.itc.mobiliar.envers.EnversAssumptionTests.java

License:Open Source License

@Before
public void setup() throws Exception {
    auditReader = AuditReaderFactory.get(entityManager);

    // We create a context entity
    c = new ContextEntity();
    persistAndCommitTransaction(c);//www  .j  a v a 2s  .c  o m
    // and we memorize the last revision number before we continue
    revisionInBetween = auditReader.getRevisionNumberForDate(new Date());

    // We define a property and add it to the context
    property = new PropertyDescriptorEntity();
    property.setPropertyComment("comment");
    // save first revision
    c.addPropertyDescriptor(property);
    persistAndCommitTransaction(property);
    revisionAfter = auditReader.getRevisionNumberForDate(new Date());

    property.setPropertyComment("newComment");
    persistAndCommitTransaction(property);
    revisionLatest = auditReader.getRevisionNumberForDate(new Date());
}