List of usage examples for org.hibernate.envers.query AuditEntity revisionType
public static AuditProperty<RevisionType> revisionType()
From source file:ch.puzzle.itc.mobiliar.business.auditview.control.AuditService.java
License:Open Source License
@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]; }// w w w .jav a 2 s . c om } return null; }
From source file:ch.puzzle.itc.mobiliar.business.auditview.control.AuditService.java
License:Open Source License
@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]); }// ww w .j av a 2s . c om return deleted; } } return Collections.EMPTY_LIST; }
From source file:com.actelion.research.spiritcore.services.dao.DAORevision.java
License:Open Source License
private static List<Object[]> queryForRevisions(AuditReader reader, Set<Class<?>> entityClasses, int minRev, int maxRev, String userFilter, int sid, String studyIdFilter) { List<Object[]> res = new ArrayList<>(); LoggerFactory.getLogger(DAORevision.class).debug("queryForRevisions " + entityClasses + " " + userFilter + " " + sid + " " + studyIdFilter + " " + minRev + " " + maxRev); //Find the study Id from the studyId (the study may have been deleted) if (sid <= 0 && studyIdFilter != null && studyIdFilter.length() > 0) { AuditQuery query = reader.createQuery().forRevisionsOfEntity(Study.class, false, true) .add(AuditEntity.revisionType().eq(RevisionType.ADD)) .add(AuditEntity.property("studyId").eq(studyIdFilter)); List<Object[]> array = query.getResultList(); for (Object[] a : array) { Study entity = (Study) a[0]; sid = entity.getId();//from ww w .j a v a 2s .co m break; } if (sid <= 0) return res; } for (Class<?> claz : entityClasses) { AuditQuery query = reader.createQuery().forRevisionsOfEntity(claz, false, true) .add(AuditEntity.revisionNumber().between(minRev, maxRev)); if (userFilter != null && userFilter.length() > 0 && (claz == Result.class || claz == Biosample.class || claz == Study.class || claz == Location.class)) { query = query.add(AuditEntity.property("updUser").eq(userFilter)); } if (sid > 0) { //If a studyId filter is given, query the properyId directly if (claz == Study.class) { query = query.add(AuditEntity.property("id").eq(sid)); } else if (claz == Biosample.class) { query = query.add(AuditEntity.property("inheritedStudy").eq(new Study(sid))); } else if (claz == Result.class) { query = query.add(AuditEntity.property("study").eq(new Study(sid))); } else { continue; } } res.addAll(query.getResultList()); } return res; }
From source file:fr.mcc.ginco.audit.utils.AuditQueryBuilder.java
License:CeCILL license
/** * Builds a query returning objects creations revisions * /*from w ww .ja va2s .c o m*/ * @param reader * @param thesaurus * the thesaurus on which searched should be performed * @param startDate * the start date for the search * @param clazz * the object class * @return */ public AuditQuery getEntityAddedQuery(Thesaurus thesaurus, Date startDate, Class<?> clazz) { AuditQuery auditQuery = readerService.getAuditReader().createQuery().forRevisionsOfEntity(clazz, false, true); filterOnDateAndThesaurusId(auditQuery, thesaurus, startDate); auditQuery.add(AuditEntity.revisionType().eq(RevisionType.ADD)); return auditQuery; }
From source file:fr.mcc.ginco.audit.utils.AuditQueryBuilder.java
License:CeCILL license
/** * Builds a query returning objects property updates revisions * // ww w . j av a2 s . c o m * @param reader * @param thesaurus * the thesaurus on which searched should be performed * @param startDate * the start date for the search * @param clazz * the object class * @param propertyName * the audited property * @return */ public AuditQuery getPropertyChangedQueryOnUpdate(Thesaurus thesaurus, Date startDate, Class<?> clazz, String propertyName) { AuditQuery auditQuery = readerService.getAuditReader().createQuery().forRevisionsOfEntity(clazz, false, true); filterOnDateAndThesaurusId(auditQuery, thesaurus, startDate); auditQuery.add(AuditEntity.property(propertyName).hasChanged()); auditQuery.add(AuditEntity.revisionType().eq(RevisionType.MOD)); return auditQuery; }
From source file:fr.mcc.ginco.audit.utils.AuditQueryBuilder.java
License:CeCILL license
/** * Builds a query returning an object creation revision Assumes the id field * of the object is named "identifier"//from ww w . j a va 2 s . com * * @param reader * @param clazz * the object class * @param identifier * the object identifier * @return */ public AuditQuery getEntityAddedQuery(AuditReader reader, Class<?> clazz, Serializable identifier) { return reader.createQuery().forRevisionsOfEntity(clazz, false, true).add(AuditEntity.id().eq(identifier)) .add(AuditEntity.revisionType().eq(RevisionType.ADD)); }
From source file:org.azafiu.hibernatetest.datainteractor.ProductDAO.java
License:Apache License
/** * Get all products that need to be shown to the checker for approval. * /*from w ww. j ava 2 s. co m*/ * @return a list of Object[]. Each element will be an Object[3] array with * the following items: Object[0] - the {@link ProductEntity} at a * revision ( greater or equal than the one given as parameter) * Object[1] a {@link DefaultRevisionEntity} Object[2] a * {@link RevisionType} object containing information about the * revision */ @Transactional public List<Object[]> getAllProductsWaitingForApproval() { /** * Get all distinct {@link ProductEntity} objects where the wasChecked * property is false order by modified descending */ final AuditQuery query = this.getAuditReader().createQuery() .forRevisionsOfEntity(ProductEntity.class, false, true) .addOrder(AuditEntity.property("modified").desc()) .add(AuditEntity.revisionNumber().maximize().computeAggregationInInstanceContext()) .add(AuditEntity.property("wasChecked").eq(Boolean.FALSE)) .add(AuditEntity.revisionType().ne(RevisionType.DEL)); final List<Object[]> resultList = query.getResultList(); final List<Object[]> result = new ArrayList<>(); /** * for each "changed" object found in the db we need to check if there * is a newer revision of it in which the {@link ProductEntity} was * approved (wasChecked = true) because we do not need to retrieve * already checked objects to the checker. */ for (final Object[] change : resultList) { final ProductEntity pe = (ProductEntity) change[0]; final AuditQuery queryForWasCheckedTrue = this.getAuditReader().createQuery() .forRevisionsOfEntity(ProductEntity.class, false, true) .addOrder(AuditEntity.property("modified").desc()).add(AuditEntity.id().eq(pe.getId())) .add(AuditEntity.property("wasChecked").eq(Boolean.TRUE)); if (pe.getModified() != null) { queryForWasCheckedTrue.add(AuditEntity.property("modified").gt(pe.getModified())); } try { final Object[] trueWasChecked = (Object[]) queryForWasCheckedTrue.getSingleResult(); } catch (final NoResultException ex) { // there is no newer revision where the current product has // wasChecked property == true result.add(change); } } return result; }
From source file:org.jboss.pressgang.ccms.filter.utils.EntityUtilities.java
License:Open Source License
@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(); }
From source file:org.jboss.pressgang.ccms.filter.utils.EntityUtilities.java
License:Open Source License
@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(); }