List of usage examples for org.hibernate.envers AuditReader getRevisionNumberForDate
Number getRevisionNumberForDate(Date date)
throws IllegalStateException, RevisionDoesNotExistException, IllegalArgumentException;
From source file:ch.puzzle.itc.mobiliar.business.auditview.control.AuditService.java
License:Open Source License
private Number getRevisionNumberOneYearAgo(AuditReader reader) { Calendar c = Calendar.getInstance(); c.setTime(new Date()); int currentYear = c.get(Calendar.YEAR); c.set(Calendar.YEAR, currentYear - 1); return reader.getRevisionNumberForDate(c.getTime()); }
From source file:ch.puzzle.itc.mobiliar.business.database.control.AmwAuditReader.java
License:Open Source License
/** * @param clazz//from ww w. ja va 2s . c om * - the entity class which shall be found in the history of the database * @param date * - the date for which the result shall be loaded in the history of data * @param id * - the id of the entity class that shall be loaded * @return the entity-instance with its state at the given date or null if the entity didn't exist at * that time * @throws IllegalArgumentException * - if the date is null (re-thrown from {@link AuditReader#getRevisionNumberForDate(Date)}) */ public <T> T getByDate(final Class<T> clazz, final Date date, final Integer id) throws IllegalArgumentException { final AuditReader r = getAuditReader(); Number currentRevisionNumber = null; try { // find the revision number for the given date currentRevisionNumber = r.getRevisionNumberForDate(date); } catch (final RevisionDoesNotExistException e) { return null; } return r.find(clazz, id, currentRevisionNumber); }
From source file:com.actelion.research.spiritcore.services.dao.DAORevision.java
License:Open Source License
public static List<Revision> queryRevisions(RevisionQuery query) { assert query != null; long s = System.currentTimeMillis(); EntityManager session = JPAUtil.getManager(); AuditReader reader = AuditReaderFactory.get(session); int rev1 = 0; try {// w w w . j a va 2s .c o m rev1 = query.getRevId() > 0 ? query.getRevId() : query.getFromDate() == null ? 0 : reader.getRevisionNumberForDate(query.getFromDate()).intValue() + 1; } catch (Exception e) { //before first revision->ignore } int rev2 = Integer.MAX_VALUE; try { rev2 = query.getRevId() > 0 ? query.getRevId() : query.getToDate() == null ? Integer.MAX_VALUE : reader.getRevisionNumberForDate(query.getToDate()).intValue(); } catch (Exception e) { //after last revision->ignore } LoggerFactory.getLogger(DAORevision.class).debug("getRevisions between " + rev1 + " and " + rev2); Set<Class<?>> entityClasses = new HashSet<>(); if (query.isStudies()) entityClasses.add(Study.class); if (query.isSamples()) entityClasses.add(Biosample.class); if (query.isResults()) entityClasses.add(Result.class); if (query.isLocations()) entityClasses.add(Location.class); if (query.isAdmin()) entityClasses.add(Biotype.class); if (query.isAdmin()) entityClasses.add(Test.class); if (query.isAdmin()) entityClasses.add(Employee.class); if (query.isAdmin()) entityClasses.add(EmployeeGroup.class); if (query.isAdmin()) entityClasses.add(SpiritProperty.class); List<Revision> revisions = getRevisions(entityClasses, queryForRevisions(reader, entityClasses, rev1, rev2, query.getUserIdFilter(), query.getSidFilter(), query.getStudyIdFilter())); LoggerFactory.getLogger(DAORevision.class) .debug("Loaded revisions in " + (System.currentTimeMillis() - s) + "ms"); //Post filter per study List<Revision> res = new ArrayList<>(); for (Revision revision : revisions) { System.out.println("DAORevision.queryRevisions() " + revision + " " + revision.getType() + " " + revision.getDifference()); if (query.getSidFilter() > 0 || (query.getStudyIdFilter() != null && query.getStudyIdFilter().length() > 0)) { boolean ok = false; if (!ok) { for (Study study : revision.getStudies()) { if (query.getSidFilter() > 0 && query.getSidFilter() == study.getId()) ok = true; else if (query.getStudyIdFilter() != null && query.getStudyIdFilter().contains(study.getStudyId())) ok = true; } } if (!ok) { for (Biosample b : revision.getBiosamples()) { if (b.getInheritedStudy() != null) { if (query.getSidFilter() > 0 && query.getSidFilter() == b.getInheritedStudy().getId()) ok = true; else if (query.getStudyIdFilter() != null && query.getStudyIdFilter().contains(b.getInheritedStudy().getStudyId())) ok = true; } } } if (!ok) { for (Result r : revision.getResults()) { if (r.getStudy() != null) { if (query.getSidFilter() > 0 && query.getSidFilter() == r.getStudy().getId()) ok = true; else if (query.getStudyIdFilter() != null && query.getStudyIdFilter().contains(r.getStudy().getStudyId())) ok = true; } } } if (!ok) { continue; } } res.add(revision); } return res; }
From source file:com.confighub.core.store.Store.java
License:Open Source License
/** * @param user//from ww w .j a v a 2 s . c om * @param repository * @param searchTerm * @return Map<PropertyKey , Collection < Property>> of keys and values that contain the searchTerm * @throws ConfigException */ public Map<PropertyKey, Collection<Property>> searchKeysAndValues(final UserAccount user, final Repository repository, final Date dateObj, final String searchTerm) throws ConfigException { if (Utils.anyNull(repository)) { throw new ConfigException(Error.Code.MISSING_PARAMS); } if (!repository.hasReadAccess(user)) { throw new ConfigException(Error.Code.USER_ACCESS_DENIED); } List<PropertyKey> keys = null; List<Property> props = null; if (null == dateObj) { try { keys = em.createNamedQuery("Search.keysAndComments").setLockMode(LockModeType.NONE) .setParameter("repository", repository) .setParameter("searchTerm", "%" + searchTerm.toUpperCase() + "%").getResultList(); } catch (NoResultException ignore) { } catch (Exception e) { handleException(e); } try { props = em.createNamedQuery("Search.values").setLockMode(LockModeType.NONE) .setParameter("repository", repository) .setParameter("searchTerm", "%" + searchTerm.toUpperCase() + "%").getResultList(); } catch (NoResultException ignore) { } catch (Exception e) { handleException(e); } } else { AuditReader reader = AuditReaderFactory.get(em); Number rev = reader.getRevisionNumberForDate(dateObj); AuditQuery query = reader.createQuery().forEntitiesAtRevision(PropertyKey.class, rev); query.add(AuditEntity.property("repository").eq(repository)); query.add(AuditEntity.or(AuditEntity.property("key").ilike("%" + searchTerm + "%"), AuditEntity.property("readme").ilike("%" + searchTerm + "%"))); keys = query.getResultList(); query = reader.createQuery().forEntitiesAtRevision(Property.class, rev); query.add(AuditEntity.property("repository").eq(repository)); query.add(AuditEntity.property("value").ilike("%" + searchTerm + "%")); props = query.getResultList(); } Map<PropertyKey, Collection<Property>> keyListMap = new HashMap<>(); if (null != keys) { keys.forEach(k -> keyListMap.put(k, null)); } if (null != props) { props.forEach(p -> { PropertyKey key = p.getPropertyKey(); if (keyListMap.containsKey(key)) { Collection<Property> ps = keyListMap.get(key); if (null == ps) { ps = new ArrayList<>(); keyListMap.put(key, ps); } ps.add(p); } else { ArrayList<Property> ps = new ArrayList<>(); ps.add(p); keyListMap.put(key, ps); } }); } return keyListMap; }
From source file:com.confighub.core.store.Store.java
License:Open Source License
/** * @param repositoryId//w w w.ja v a2 s .c o m * @param date * @return * @throws ConfigException */ public Repository getRepository(final Long repositoryId, final Date date) throws ConfigException { if (Utils.anyNull(repositoryId)) { throw new ConfigException(Error.Code.MISSING_PARAMS); } if (null == date) { return get(Repository.class, repositoryId); } AuditReader reader = AuditReaderFactory.get(em); Number rev = reader.getRevisionNumberForDate(date); AuditQuery query = reader.createQuery().forEntitiesAtRevision(Repository.class, rev); query.add(AuditEntity.id().eq(repositoryId)); try { return (Repository) query.getSingleResult(); } catch (NoResultException e) { return null; } catch (Exception e) { handleException(e); return null; } }
From source file:com.confighub.core.store.Store.java
License:Open Source License
/** * Get levels at a specific point in time. * * @param repository To which levels are assigned * @param time At the time levels were current * @return Collection of Levels from that time * @throws ConfigException Is thrown if there were problems fetching records */// w w w. j a va 2s . c o m public Collection<CtxLevel> getLevels(final Repository repository, final Date time) throws ConfigException { AuditReader reader = AuditReaderFactory.get(em); Number rev = reader.getRevisionNumberForDate(time); AuditQuery query = reader.createQuery().forEntitiesAtRevision(CtxLevel.class, rev); query.add(AuditEntity.property("repository").eq(repository)); return query.getResultList(); }
From source file:com.confighub.core.store.Store.java
License:Open Source License
public CtxLevel getLevel(final String levelName, final Depth depth, final Repository repository, final Date time) throws ConfigException { if (Utils.anyNull(levelName, repository)) { return null; }/*from w w w. j a va2 s. com*/ if (null == time) { try { String levelUpper = levelName.toUpperCase(); return (CtxLevel) em.createNamedQuery("Level.getByName").setLockMode(LockModeType.NONE) .setParameter("repository", repository).setParameter("name", levelUpper) .setParameter("depth", depth).getSingleResult(); } catch (NoResultException e) { return null; } catch (Exception e) { handleException(e); } return null; } AuditReader reader = AuditReaderFactory.get(em); Number rev = reader.getRevisionNumberForDate(time); // ToDo will not return deleted level AuditQuery query = reader.createQuery().forEntitiesAtRevision(CtxLevel.class, rev); query.add(AuditEntity.property("repository").eq(repository)); query.add(AuditEntity.property("name").eq(levelName)); query.add(AuditEntity.property("depth").eq(depth)); try { return (CtxLevel) query.getSingleResult(); } catch (NoResultException e) { return null; } catch (Exception e) { handleException(e); return null; } }
From source file:com.confighub.core.store.Store.java
License:Open Source License
/** * Get properties at a specific point in time. * * @param repository To which levels are assigned * @param date At the time levels were current * @return Collection of Levels from that time * @throws ConfigException Is thrown if there were problems fetching records *//*from w ww.j ava 2s . c o m*/ public Collection<Property> getProperties(final Repository repository, final Date date) throws ConfigException { AuditReader reader = AuditReaderFactory.get(em); Number rev = reader.getRevisionNumberForDate(date); AuditQuery query = reader.createQuery().forEntitiesAtRevision(Property.class, rev); query.add(AuditEntity.property("repository").eq(repository)); return query.getResultList(); }
From source file:com.confighub.core.store.Store.java
License:Open Source License
public Pair<PropertyKey, Collection<Property>> getPropertiesForKey(final Repository repository, final Date date, String key) throws ConfigException { AuditReader reader = AuditReaderFactory.get(em); Number rev = reader.getRevisionNumberForDate(null == date ? new Date() : date); AuditQuery kq = reader.createQuery().forEntitiesAtRevision(PropertyKey.class, rev); kq.add(AuditEntity.property("repository").eq(repository)); kq.add(AuditEntity.property("key").eq(key)); PropertyKey propertyKey;/* w w w.j a v a 2s .c om*/ try { propertyKey = (PropertyKey) kq.getSingleResult(); } catch (NoResultException e) { return null; } AuditQuery query = reader.createQuery().forEntitiesAtRevision(Property.class, rev); query.add(AuditEntity.property("repository").eq(repository)); query.add(AuditEntity.relatedId("propertyKey").eq(propertyKey.getId())); Collection<Property> properties = query.getResultList(); propertyKey.propertyCount = properties.size(); return new Pair(propertyKey, properties); }
From source file:com.confighub.core.store.Store.java
License:Open Source License
/** * Returns the key from a specific date//from w w w . j a v a 2 s .co m * * @param repository * @param key * @param date * @return */ public PropertyKey getKey(final Repository repository, final String key, final Date date) { if (null == repository || Utils.isBlank(key)) { return null; } try { if (null == date) { return (PropertyKey) em.createNamedQuery("Key.getByKey").setLockMode(LockModeType.NONE) .setParameter("key", key.toUpperCase()).setParameter("repository", repository) .getSingleResult(); } AuditReader reader = AuditReaderFactory.get(em); Number rev = reader.getRevisionNumberForDate(null == date ? new Date() : date); AuditQuery kq = reader.createQuery().forEntitiesAtRevision(PropertyKey.class, rev); kq.add(AuditEntity.property("repository").eq(repository)); kq.add(AuditEntity.property("key").eq(key)); return (PropertyKey) kq.getSingleResult(); } catch (NoResultException e) { return null; } catch (Exception e) { handleException(e); return null; } }