List of usage examples for org.hibernate.criterion Junction add
public Junction add(Criterion criterion)
From source file:apm.common.service.DataService.java
License:Open Source License
/** * ?/*from w w w . ja v a2s .c o m*/ * @param dc Hibernate * @param user ?UserUtils.getUser()?? * @param officeAlias ??dc.createAlias("office", "office"); * @param userAlias ??? * @return ? */ protected static Junction dataScopeFilter(User user, String officeAlias, String userAlias) { // ???? List<String> dataScope = Lists.newArrayList(); Junction junction = Restrictions.disjunction(); // ??? if (!user.isAdmin()) { for (Role r : user.getRoleList()) { String DATA_SCOPE = r.getDataScope(); if (!dataScope.contains(DATA_SCOPE) && StringUtils.isNotBlank(officeAlias)) { boolean isDataScopeAll = false; if (Role.DATA_SCOPE_ALL.equals(DATA_SCOPE)) { isDataScopeAll = true; } else if (Role.DATA_SCOPE_COMPANY_AND_CHILD.equals(DATA_SCOPE)) { //(?)?? junction.add(Restrictions.eq(officeAlias + ".id", user.getCompany().getId())); junction.add(Restrictions.like(officeAlias + ".parentIds", user.getCompany().getParentIds() + user.getCompany().getId() + ",%")); } else if (Role.DATA_SCOPE_COMPANY.equals(DATA_SCOPE)) { junction.add(Restrictions.eq(officeAlias + ".id", user.getCompany().getId())); junction.add(Restrictions.and( Restrictions.eq(officeAlias + ".parent.id", user.getCompany().getId()), Restrictions.eq(officeAlias + ".type", "2"))); // ? } else if (Role.DATA_SCOPE_OFFICE_AND_CHILD.equals(DATA_SCOPE)) { junction.add(Restrictions.eq(officeAlias + ".id", user.getOffice().getId())); junction.add(Restrictions.like(officeAlias + ".parentIds", user.getOffice().getParentIds() + user.getOffice().getId() + ",%")); } else if (Role.DATA_SCOPE_OFFICE.equals(DATA_SCOPE)) { junction.add(Restrictions.eq(officeAlias + ".id", user.getOffice().getId())); } else if (Role.DATA_SCOPE_CUSTOM.equals(DATA_SCOPE)) { junction.add(Restrictions.in(officeAlias + ".id", r.getOfficeIdList())); } //else if (Role.DATA_SCOPE_SELF.equals(DATA_SCOPE)){ if (!isDataScopeAll) { if (StringUtils.isNotBlank(userAlias)) { junction.add(Restrictions.eq(userAlias + ".id", user.getId())); } else { junction.add(Restrictions.isNull(officeAlias + ".id")); } } else { // ????? junction = Restrictions.disjunction(); break; } dataScope.add(DATA_SCOPE); } } } return junction; }
From source file:ar.com.zauber.commons.repository.query.visitor.CriteriaFilterVisitor.java
License:Apache License
/** * Visita hijos de un <code>CompositeFilterObject</code>. * * @param compositeFilterObject//from w ww . j a v a2s . co m */ private void visitCompositeChildren(final CompositeFilter compositeFilter) { // se tira excepcion si el composite esta vacio if (compositeFilter.getFilters().isEmpty()) { throw new IllegalStateException("Composite is empty."); } // un Criterion de union Junction junctionCriterion = setJunctionCriterion(compositeFilter.getConnector()); // proceso de hijos for (BaseFilter filter : compositeFilter.getFilters()) { // se procesa componente hijo, si es un composite se hace recursivo filter.accept(this); // hay componentes que no crean un Criterion if (criterion != null) { junctionCriterion.add(criterion); criterion = null; } } criterion = junctionCriterion; }
From source file:com.bandstand.web.ContactsController.java
License:Apache License
@PrincipalSearch public List<MusicianContact> searchMusicianContacts(MusicianAddressBook addressBook, PrincipalSearchCriteria crit) {//from ww w .j a v a2s . co m if (crit.getCuType().equals(PrincipalSearchCriteria.CU_TYPE_INDIVIDUAL)) { Criteria c = SessionManager.session().createCriteria(MusicianContact.class); Junction combine; if (crit.getTest().equals(PrincipalSearchCriteria.TestType.ALL)) { combine = Restrictions.disjunction(); } else { combine = Restrictions.conjunction(); } for (PrincipalSearchCriteria.SearchItem searchItem : crit.getSearchItems()) { Criterion r = newCriterion(searchItem); if (r != null) { combine.add(r); } } c.add(combine); } return null; }
From source file:com.cimmyt.model.dao.impl.AbstractDAO.java
License:Apache License
/** * adds a criterion to a Junction(conjunction/disjunction), based on the meta-data passed. * /* w ww . ja v a2 s. co m*/ * @param junction The Junction to conditionally add a criterion * @param condition The type of criterion: like, equals, etc. * @param dataType Indicates if its a numeric or character value for a filter * @param qualifiedParam the qualified parameter for a query * @param value The string value to use in the criterion */ public void addDynamicCriterion(Junction junction, Operator condition, DataType dataType, String qualifiedParam, String value) { if (!qualifiedParam.equals("sample.studysampleid")) { if (dataType == DataType.STRING) { if (condition == Operator.TypeString.LIKE) { junction.add(Restrictions.like(qualifiedParam, value, MatchMode.ANYWHERE)); } else if (condition == Operator.TypeString.EQUAL) { junction.add(Restrictions.like(qualifiedParam, value, MatchMode.EXACT)); } else if (condition == Operator.TypeString.NOT_EQUAL) { junction.add(Restrictions.ne(qualifiedParam, value)); } else if (condition == Operator.TypeString.NOT_LIKE) { junction.add(Restrictions.not(Restrictions.like(qualifiedParam, value, MatchMode.ANYWHERE))); } } else if (dataType == DataType.NUMBER) { if (condition == Operator.TypeNumber.EQUALS) { junction.add(Restrictions.eq(qualifiedParam, Integer.valueOf(value))); } else if (condition == Operator.TypeNumber.GREATER) { junction.add(Restrictions.ge(qualifiedParam, Integer.valueOf(value))); } if (condition == Operator.TypeNumber.LESS) { junction.add(Restrictions.le(qualifiedParam, Integer.valueOf(value))); } else if (condition == Operator.TypeNumber.NOT_EQUALS) { junction.add(Restrictions.ne(qualifiedParam, Integer.valueOf(value))); } else if (condition == Operator.TypeNumber.IN) { List<Integer> listStr = new ArrayList<Integer>(); String[] arr = value.split(","); for (int i = 0; i < arr.length; i++) { try { if (!arr[i].trim().equals("")) listStr.add(Integer.parseInt(arr[i])); } catch (Exception ex) { ex.printStackTrace(); } } junction.add(Restrictions.in(qualifiedParam, listStr)); } } } else { String prefix = StrUtils.getPrefixSampleFindString(value); int id = StrUtils.getSampleIDFindString(value); if (prefix.trim().equals("")) prefix = value; if (condition == Operator.TypeString.LIKE) { junction.add(Restrictions.like("study.prefix", prefix, MatchMode.ANYWHERE)); if (id > 0) junction.add(Restrictions.eq("sample.samplegid", id)); } else if (condition == Operator.TypeString.EQUAL) { junction.add(Restrictions.eq("study.prefix", prefix)); if (id > 0) junction.add(Restrictions.eq("sample.samplegid", id)); } else if (condition == Operator.TypeString.NOT_EQUAL) { junction.add(Restrictions.ne("study.prefix", prefix)); if (id > 0) junction.add(Restrictions.ne("sample.samplegid", id)); } else if (condition == Operator.TypeString.NOT_LIKE) { junction.add(Restrictions.not(Restrictions.like("study.prefix", prefix, MatchMode.ANYWHERE))); if (id > 0) junction.add(Restrictions.not(Restrictions.eq("sample.samplegid", id))); } } }
From source file:com.eryansky.common.orm.core.hibernate.restriction.CriterionSingleValueSupport.java
License:Apache License
public Criterion build(PropertyFilter filter) { String matchValue = filter.getMatchValue(); Class<?> FieldType = filter.getFieldType(); MatchValue matchValueModel = getMatchValue(matchValue, FieldType); Junction criterion = null; if (matchValueModel.hasOrOperate()) { criterion = Restrictions.disjunction(); } else {// w w w . j a v a 2s. com criterion = Restrictions.conjunction(); } for (Object value : matchValueModel.getValues()) { if (filter.hasMultiplePropertyNames()) { List<Criterion> disjunction = new ArrayList<Criterion>(); for (String propertyName : filter.getPropertyNames()) { disjunction.add(build(propertyName, value)); } criterion.add(Restrictions.or(disjunction.toArray(new Criterion[disjunction.size()]))); } else { criterion.add(build(filter.getSinglePropertyName(), value)); } } return criterion; }
From source file:com.eucalyptus.autoscaling.common.internal.groups.PersistenceAutoScalingGroups.java
License:Open Source License
@Override public <T> List<T> listRequiringMonitoring(final Set<MonitoringSelector> selectors, final Function<? super AutoScalingGroup, T> transform) throws AutoScalingMetadataException { final Collection<String> suffixes = selectors.stream() .flatMap(FUtils.chain(MonitoringSelector::suffixes, Collection::stream)) .collect(Collectors.toSet()); final Junction likeAnyOf = Restrictions.disjunction(); for (final String suffix : suffixes) { likeAnyOf.add(Restrictions.ilike("id", "%" + suffix)); }//from ww w . ja va 2s . co m return persistenceSupport.listByExample(AutoScalingGroup.withOwner(null), Predicates.alwaysTrue(), likeAnyOf, Collections.<String, String>emptyMap(), transform); }
From source file:com.eucalyptus.autoscaling.groups.PersistenceAutoScalingGroups.java
License:Open Source License
@Override public <T> List<T> listRequiringMonitoring(final long interval, final Function<? super AutoScalingGroup, T> transform) throws AutoScalingMetadataException { // We want to select some groups depending on the interval / time int group = (int) ((System.currentTimeMillis() / interval) % 6); final Collection<String> suffixes = Lists.newArrayList(); switch (group) { case 0://from w w w . j a va 2 s . com suffixes.add("0"); suffixes.add("1"); suffixes.add("2"); break; case 1: suffixes.add("3"); suffixes.add("4"); suffixes.add("5"); break; case 2: suffixes.add("6"); suffixes.add("7"); suffixes.add("8"); break; case 3: suffixes.add("9"); suffixes.add("a"); suffixes.add("b"); break; case 4: suffixes.add("c"); suffixes.add("d"); break; default: suffixes.add("e"); suffixes.add("f"); break; } final Junction likeAnyOf = Restrictions.disjunction(); for (final String suffix : suffixes) { likeAnyOf.add(Restrictions.ilike("id", "%" + suffix)); } return persistenceSupport.listByExample(AutoScalingGroup.withOwner(null), Predicates.alwaysTrue(), likeAnyOf, Collections.<String, String>emptyMap(), transform); }
From source file:com.eucalyptus.cloudwatch.common.internal.domain.alarms.AlarmManager.java
License:Open Source License
private static boolean modifySelectedAlarms(final String accountId, final Collection<String> alarmNames, final Predicate<CloudWatchMetadata.AlarmMetadata> filter, final Predicate<AlarmEntity> update) { final Map<String, Collection<String>> accountToNamesMap = buildAccountIdToAlarmNamesMap(accountId, alarmNames);/*from w w w .j a va2 s.co m*/ try (final TransactionResource db = Entities.transactionFor(AlarmEntity.class)) { final Criteria criteria = Entities.createCriteria(AlarmEntity.class); final Junction disjunction = Restrictions.disjunction(); for (final Map.Entry<String, Collection<String>> entry : accountToNamesMap.entrySet()) { final Junction conjunction = Restrictions.conjunction(); conjunction.add(Restrictions.eq("accountId", entry.getKey())); conjunction.add(Restrictions.in("alarmName", entry.getValue())); disjunction.add(conjunction); } criteria.add(disjunction); criteria.addOrder(Order.asc("creationTimestamp")); criteria.addOrder(Order.asc("naturalId")); final Collection<AlarmEntity> alarmEntities = (Collection<AlarmEntity>) criteria.list(); if (!Iterables.all(alarmEntities, filter)) { return false; } CollectionUtils.each(alarmEntities, update); db.commit(); return true; } }
From source file:com.eucalyptus.cloudwatch.common.internal.domain.alarms.AlarmManager.java
License:Open Source License
public static List<AlarmEntity> describeAlarms(@Nullable final String accountId, @Nullable final String actionPrefix, @Nullable final String alarmNamePrefix, @Nullable final Collection<String> alarmNames, @Nullable final Integer maxRecords, @Nullable final StateValue stateValue, @Nullable final String nextToken, final Predicate<? super CloudWatchMetadata.AlarmMetadata> filter) throws InvalidTokenException { final List<AlarmEntity> results = Lists.newArrayList(); try (final TransactionResource db = Entities.transactionFor(AlarmEntity.class)) { boolean first = true; String token = nextToken; while (token != null || first) { first = false;/*from w ww .ja v a 2s . c o m*/ final Date nextTokenCreatedTime = NextTokenUtils.getNextTokenCreatedTime(token, AlarmEntity.class); final Criteria criteria = Entities.createCriteria(AlarmEntity.class); if (accountId != null) { criteria.add(Restrictions.eq("accountId", accountId)); } if (actionPrefix != null) { final Junction actionsOf = Restrictions.disjunction(); for (int i = 1; i <= AlarmEntity.MAX_OK_ACTIONS_NUM; i++) { actionsOf.add(Restrictions.like("okAction" + i, actionPrefix + "%")); // May need Restrictions.ilike for case insensitive } for (int i = 1; i <= AlarmEntity.MAX_ALARM_ACTIONS_NUM; i++) { actionsOf.add(Restrictions.like("alarmAction" + i, actionPrefix + "%")); // May need Restrictions.ilike for case insensitive } for (int i = 1; i <= AlarmEntity.MAX_INSUFFICIENT_DATA_ACTIONS_NUM; i++) { actionsOf.add(Restrictions.like("insufficientDataAction" + i, actionPrefix + "%")); // May need Restrictions.ilike for case insensitive } criteria.add(actionsOf); } if (alarmNamePrefix != null) { criteria.add(Restrictions.like("alarmName", alarmNamePrefix + "%")); } if (alarmNames != null && !alarmNames.isEmpty()) { criteria.add(Restrictions.in("alarmName", alarmNames)); } if (stateValue != null) { criteria.add(Restrictions.eq("stateValue", stateValue)); } NextTokenUtils.addNextTokenConstraints(maxRecords == null ? null : maxRecords - results.size(), token, nextTokenCreatedTime, criteria); final List<AlarmEntity> alarmEntities = (List<AlarmEntity>) criteria.list(); Iterables.addAll(results, Iterables.filter(alarmEntities, filter)); token = maxRecords == null || (maxRecords != null && (results.size() >= maxRecords || alarmEntities.size() < maxRecords)) ? null : alarmEntities.get(alarmEntities.size() - 1).getNaturalId(); } db.commit(); } return results; }
From source file:com.eucalyptus.cloudwatch.common.internal.domain.alarms.AlarmManager.java
License:Open Source License
public static List<AlarmHistory> describeAlarmHistory(@Nullable final String accountId, @Nullable final String alarmName, @Nullable final Date endDate, @Nullable final HistoryItemType historyItemType, @Nullable final Integer maxRecords, @Nullable final Date startDate, @Nullable final String nextToken, final Predicate<AlarmHistory> filter) throws InvalidTokenException { final List<AlarmHistory> results = Lists.newArrayList(); try (final TransactionResource db = Entities.transactionFor(AlarmHistory.class)) { final Map<String, Collection<String>> accountToNamesMap = alarmName == null ? Collections.<String, Collection<String>>emptyMap() : buildAccountIdToAlarmNamesMap(accountId, Collections.singleton(alarmName)); boolean first = true; String token = nextToken; while (token != null || first) { first = false;/* w w w . ja v a 2s . co m*/ final Date nextTokenCreatedTime = NextTokenUtils.getNextTokenCreatedTime(token, AlarmHistory.class); final Criteria criteria = Entities.createCriteria(AlarmHistory.class); final Junction disjunction = Restrictions.disjunction(); for (final Map.Entry<String, Collection<String>> entry : accountToNamesMap.entrySet()) { final Junction conjunction = Restrictions.conjunction(); conjunction.add(Restrictions.eq("accountId", entry.getKey())); conjunction.add(Restrictions.in("alarmName", entry.getValue())); disjunction.add(conjunction); } criteria.add(disjunction); if (historyItemType != null) { criteria.add(Restrictions.eq("historyItemType", historyItemType)); } if (startDate != null) { criteria.add(Restrictions.ge("timestamp", startDate)); } if (endDate != null) { criteria.add(Restrictions.le("timestamp", endDate)); } NextTokenUtils.addNextTokenConstraints(maxRecords == null ? null : maxRecords - results.size(), token, nextTokenCreatedTime, criteria); final List<AlarmHistory> alarmHistoryEntities = (List<AlarmHistory>) criteria.list(); Iterables.addAll(results, Iterables.filter(alarmHistoryEntities, filter)); token = maxRecords == null || (maxRecords != null && (results.size() >= maxRecords || alarmHistoryEntities.size() < maxRecords)) ? null : alarmHistoryEntities.get(alarmHistoryEntities.size() - 1).getNaturalId(); } db.commit(); } return results; }