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

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

Introduction

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

Prototype

public static AuditCriterion or(AuditCriterion lhs, AuditCriterion rhs) 

Source Link

Document

Return the disjuction of two criterions.

Usage

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

License:Open Source License

/**
 * @param user//  w  ww . j  a v a 2 s  .  c  o  m
 * @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:cz.filmtit.userspace.Session.java

License:Open Source License

/**
 * Loads old Subtitle Item for a given Translation Result created before
 * revision number//from w w w. ja  v a  2s  .  c o m
 *
 * @param result Translation Result of which to load old version
 * @param number Revision Number
 * @return returns an object containing old version of Translation Result
 * and number of revision at which it was created
 */
public AuditResponse loadOldTranslationResult(TranslationResult result, Number number) {
    AuditReader auditReader = AuditReaderFactory.get(usHibernateUtil.getSessionWithActiveTransaction());

    if (number == null) {
        number = Integer.MAX_VALUE;
    }

    Number revisionNumber = (Number) auditReader.createQuery()
            .forRevisionsOfEntity(USTranslationResult.class, true, false)
            .add(AuditEntity.id().eq(result.getId())).addProjection(AuditEntity.revisionNumber().max())
            .add(AuditEntity.revisionNumber().lt(number))
            .add(AuditEntity.or(AuditEntity.property("userTranslation").hasChanged(),
                    AuditEntity.property("posteditedString").hasChanged()))
            .getSingleResult();

    if (revisionNumber == null) {
        return new AuditResponse();
    }

    USTranslationResult singleResult = (USTranslationResult) auditReader.createQuery()
            .forEntitiesAtRevision(USTranslationResult.class, revisionNumber)
            .add(AuditEntity.id().eq(result.getId())).getSingleResult();

    if (singleResult == null) {
        return new AuditResponse();
    }

    logger.log(Logger.Level.ERROR, singleResult.getTranslationResult() + " " + revisionNumber);

    return new AuditResponse(singleResult.getTranslationResult(), revisionNumber);
}