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: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  .  ja  va  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 w w w .j a  v a  2 s  . 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
 *//*from  ww  w  .  j av  a  2s .  co 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  . ja 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 .  java 2s .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 {/*  w  w  w.j a  v a  2  s . co 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;
}

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

License:Open Source License

private List<AuditRecord> getAuditCommits(List<RevisionEntry> revs) {
    AuditReader reader = AuditReaderFactory.get(em);
    List<AuditRecord> changes = new ArrayList<>();

    for (RevisionEntry rt : revs) {
        String[] clazzesSplit = rt.getType().split(",");
        Set<Class> clazzes = new HashSet<>();
        for (String cl : clazzesSplit) {
            clazzes.add(APersisted.ClassName.valueOf(cl).getClazz());
        }/*from w w  w. ja  va 2 s  .c om*/

        List<APersisted> results = new ArrayList<>();
        for (Class clazz : clazzes) {
            AuditQuery query = reader.createQuery().forEntitiesModifiedAtRevision(clazz, rt.getId());
            results.addAll(query.getResultList());
        }
        changes.add(new AuditRecord(results, rt, get(UserAccount.class, rt.getUserId()), rt.getAppId()));
    }

    return changes;
}

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

License:Open Source License

public Property getAuditProperty(final Repository repository, final UserAccount user, final long propertyId,
        final long revId) throws ConfigException {
    try {/*w w w . ja va2 s  .c o m*/
        if (!repository.hasReadAccess(user)) {
            throw new ConfigException(Error.Code.USER_ACCESS_DENIED);
        }

        AuditReader reader = AuditReaderFactory.get(em);
        AuditQuery query = reader.createQuery().forRevisionsOfEntity(Property.class, true, true)
                .add(AuditEntity.revisionNumber().ge(revId)).add(AuditEntity.revisionNumber().le(revId))
                .add(AuditEntity.property("repository").eq(repository)).add(AuditEntity.id().eq(propertyId));

        return (Property) query.getSingleResult();
    } catch (NoResultException e) {
        return null;
    }
}

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

License:Open Source License

public AbsoluteFilePath getAbsFilePath(final Repository repository, final String absPath, final Date date) {
    if (null == repository || Utils.isBlank(absPath)) {
        return null;
    }/*  w w  w. j  a  v a2  s  .  com*/

    try {
        if (null == date) {
            return (AbsoluteFilePath) em.createNamedQuery("AbsFilePath.getByAbsPath")
                    .setLockMode(LockModeType.NONE).setParameter("absPath", absPath)
                    .setParameter("repository", repository).getSingleResult();
        }

        AuditReader reader = AuditReaderFactory.get(em);
        Number rev = reader.getRevisionNumberForDate(null == date ? new Date() : date);

        AuditQuery kq = reader.createQuery().forEntitiesAtRevision(AbsoluteFilePath.class, rev);
        kq.add(AuditEntity.property("repository").eq(repository));
        kq.add(AuditEntity.property("absPath").eq(absPath));

        return (AbsoluteFilePath) kq.getSingleResult();
    } catch (NoResultException e) {
        return null;
    } catch (Exception e) {
        handleException(e);
        return null;
    }
}