List of usage examples for org.hibernate.envers.query AuditEntity or
public static AuditCriterion or(AuditCriterion lhs, AuditCriterion rhs)
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); }