Example usage for org.hibernate.criterion Junction add

List of usage examples for org.hibernate.criterion Junction add

Introduction

In this page you can find the example usage for org.hibernate.criterion Junction add.

Prototype

public Junction add(Criterion criterion) 

Source Link

Document

Adds a criterion to the junction (and/or)

Usage

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;
}