Example usage for org.hibernate.envers.query AuditEntity property

List of usage examples for org.hibernate.envers.query AuditEntity property

Introduction

In this page you can find the example usage for org.hibernate.envers.query AuditEntity property.

Prototype

public static AuditProperty<Object> property(String propertyName) 

Source Link

Document

Create restrictions, projections and specify order for a property of an audited entity.

Usage

From source file:br.ufac.sion.service.AuditoriaService.java

public Set<AuditoriaDTO> findAllRevisions(FiltroAuditoria filtro) throws NegocioException {
    if (filtro.getDataInicio() != null && filtro.getDataFim() != null) {
        if (!filtro.getDataFim().isAfter(filtro.getDataInicio())) {
            throw new NegocioException("A data de termino deve ser maior que a data de incio!");
        }/*  w ww .  j  ava2  s .  c o m*/
    }
    Set<AuditoriaDTO> dtos = new HashSet<>();

    AuditReader reader = AuditReaderFactory.get(em);

    AuditQuery query = reader.createQuery().forRevisionsOfEntity(filtro.getClasse(), false, true);

    if (filtro.getDataInicio() != null) {
        query.add(AuditEntity.revisionProperty("timestamp")
                .gt(Timestamp.from(filtro.getDataInicio().toInstant(ZoneOffset.UTC)).getTime()));
    }
    if (filtro.getDataFim() != null) {
        query.add(AuditEntity.revisionProperty("timestamp")
                .lt(Timestamp.from(filtro.getDataFim().toInstant(ZoneOffset.UTC)).getTime()));
    }

    if (StringUtils.isNotEmpty(filtro.getLogin())) {
        query.add(AuditEntity.revisionProperty("username").ilike(filtro.getLogin(), MatchMode.EXACT));
    }

    if (filtro.getTiposRevisao().length > 0) {
        System.out.println("entra id tipo revisao");
        query.add(AuditEntity.property("REVTYPE").in(filtro.getTiposRevisao()));
    }

    List<Object[]> result = query.getResultList();

    for (Object[] o : result) {
        try {
            //                Object instancia = filtro.getClass().cast(o[0]);
            Object instancia = Class.forName(filtro.getClasse().getName()).cast(o[0]);
            //                Method metodo;
            //                metodo = instancia.getClass().getMethod("getId");
            //                Long id = (Long) metodo.invoke(instancia);

            CustomRevisionEntity revision = (CustomRevisionEntity) o[1];
            RevisionType revisionType = (RevisionType) o[2];

            Instant instant = Instant.ofEpochMilli(revision.getTimestamp());

            AuditoriaDTO dto = new AuditoriaDTO(instancia, revisionType, filtro.getEntidade(), revision);

            dtos.add(dto);
        } catch (Exception ex) {
            throw new NegocioException(ex.getMessage());
        }
    }
    return dtos;
}

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();/* www.j  a v  a2 s  . c om*/
            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: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

/**
 * 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
 *///from w  w  w .  ja v a  2s .co 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  www . j  a v  a2s.c om

    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
 *//*w ww  . j  a va2  s  .  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;//from  w w  w  .  ja  v a  2s.  co  m
    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/* ww w. j  ava 2  s. c om*/
 *
 * @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;
    }
}

From source file:com.confighub.core.store.Store.java

License:Open Source License

public Collection<PropertyKey> getPropertiesKeys(final Repository repository, final Date time)
        throws ConfigException {
    AuditReader reader = AuditReaderFactory.get(em);
    Number rev = reader.getRevisionNumberForDate(time);

    AuditQuery query = reader.createQuery().forEntitiesAtRevision(PropertyKey.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 SecurityProfile getSecurityProfile(final Repository repository, final Date date, final String spName)
        throws ConfigException {
    try {/*from w  w  w  .j  a v a  2s .c o m*/
        if (null == date) {
            return (SecurityProfile) em.createNamedQuery("SecurityProfile.byName")
                    .setLockMode(LockModeType.NONE).setParameter("repository", repository)
                    .setParameter("name", spName).getSingleResult();
        }

        AuditReader reader = AuditReaderFactory.get(em);
        Number rev = reader.getRevisionNumberForDate(date);

        AuditQuery kq = reader.createQuery().forEntitiesAtRevision(SecurityProfile.class, rev);
        kq.add(AuditEntity.property("repository").eq(repository));
        kq.add(AuditEntity.property("name").eq(spName));

        SecurityProfile sp = (SecurityProfile) kq.getSingleResult();
        return sp;
    } catch (NoResultException e) {
        return null;
    } catch (Exception e) {
        handleException(e);
    }

    return null;
}