List of usage examples for org.hibernate.criterion Restrictions in
public static Criterion in(String propertyName, Collection values)
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 ww . j a v a 2 s . com*/ 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;//w w w. j a va2 s. 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;/*from w w w . j ava 2 s . 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; }
From source file:com.eucalyptus.cloudwatch.common.internal.domain.alarms.AlarmManager.java
License:Open Source License
public static void changeAlarmStateBatch(Map<String, AlarmState> statesToUpdate, Date evaluationDate) { if (statesToUpdate.isEmpty()) return;//from w w w . j av a2s . c om try (final TransactionResource db = Entities.transactionFor(AlarmEntity.class)) { Criteria criteria = Entities.createCriteria(AlarmEntity.class); criteria = criteria.add(Restrictions.in("naturalId", statesToUpdate.keySet())); List<AlarmEntity> result = criteria.list(); for (AlarmEntity alarmEntity : result) { AlarmState newState = statesToUpdate.get(alarmEntity.getNaturalId()); if (newState != null) { alarmEntity.setStateReason(newState.getStateReason()); alarmEntity.setStateReasonData(newState.getStateReasonData()); alarmEntity.setStateValue(newState.getStateValue()); alarmEntity.setStateUpdatedTimestamp(evaluationDate); } } db.commit(); } }
From source file:com.eucalyptus.cloudwatch.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 . jav a 2s.com final EntityTransaction db = Entities.get(AlarmEntity.class); try { 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; } catch (RuntimeException ex) { Logs.extreme().error(ex, ex); throw ex; } finally { if (db.isActive()) db.rollback(); } }
From source file:com.eucalyptus.cloudwatch.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<CloudWatchMetadata.AlarmMetadata> filter) throws CloudWatchException { final List<AlarmEntity> results = Lists.newArrayList(); final EntityTransaction db = Entities.get(AlarmEntity.class); try {//w ww . j a v a 2 s .com boolean first = true; String token = nextToken; while (token != null || first) { first = false; final Date nextTokenCreatedTime = NextTokenUtils.getNextTokenCreatedTime(token, AlarmEntity.class, true); 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(); } catch (RuntimeException ex) { Logs.extreme().error(ex, ex); throw ex; } finally { if (db.isActive()) db.rollback(); } return results; }
From source file:com.eucalyptus.cloudwatch.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 CloudWatchException { final List<AlarmHistory> results = Lists.newArrayList(); final EntityTransaction db = Entities.get(AlarmHistory.class); try {/*from w w w .j a v a 2s. c om*/ 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; final Date nextTokenCreatedTime = NextTokenUtils.getNextTokenCreatedTime(token, AlarmHistory.class, true); 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(); } catch (RuntimeException ex) { Logs.extreme().error(ex, ex); throw ex; } finally { if (db.isActive()) db.rollback(); } return results; }
From source file:com.eucalyptus.compute.common.internal.tags.FilterSupport.java
License:Open Source License
/** * Construct a criterion from a filter pattern. * * A Pattern is constructed from the given filter, as per AWS: * * Filters support the following wildcards: * * *: Matches zero or more characters * ?: Matches exactly one character//from www.java2s . c o m * * Your search can include the literal values of the wildcard characters; you just need to escape * them with a backslash before the character. For example, a value of \*amazon\?\\ searches for * the literal string *amazon?\. * * Wildcards are translated for use with 'like': * * % : Matches zero or more characters * _: Matches exactly one character * * In both cases wildcards can be escaped (to allow literal values) with a backslash (\). * * Translation of wildcards for direct DB filtering must support literal values from each grammar. */ private Criterion buildRestriction(final String property, final Object persistentValue) { final Object valueObject; if (persistentValue instanceof String) { final String value = persistentValue.toString(); final StringBuilder likeValueBuilder = new StringBuilder(); translateWildcards(value, likeValueBuilder, "_", "%", SyntaxEscape.Like); final String likeValue = likeValueBuilder.toString(); if (!value.equals(likeValue)) { // even if no regex, may contain \ escapes that must be removed return Restrictions.like(property, likeValue); } valueObject = persistentValue; } else { valueObject = persistentValue; } if (persistentValue instanceof Collection) { if (((Collection) persistentValue).isEmpty()) { return Restrictions.not(Restrictions.conjunction()); // always false } else { return Restrictions.in(property, (Collection) persistentValue); } } else { return Restrictions.eq(property, valueObject); } }
From source file:com.eucalyptus.compute.common.internal.tags.TagSupport.java
License:Open Source License
/** * Get the tags for the given resources, grouped by ID and ordered for display. * // www .jav a 2s . c o m * @param owner The account for the tags * @param identifiers The resource identifiers for the tags * @return The tag map with an entry for each requested resource */ public Map<String, List<Tag>> getResourceTagMap(final OwnerFullName owner, final Iterable<String> identifiers) { final int identifiersSize = Iterables.size(identifiers); final Map<String, List<Tag>> tagMap = Maps.newHashMapWithExpectedSize(identifiersSize); for (final String id : identifiers) { tagMap.put(id, Lists.<Tag>newArrayList()); } if (!tagMap.isEmpty()) { final Tag example = example(owner); final Criterion idRestriction = identifiersSize < 1000 ? Property.forName(tagClassResourceField) .in(DetachedCriteria.forClass(resourceClass) .add(Restrictions.in(resourceClassIdField, Lists.newArrayList(identifiers))) .setProjection(Projections.id())) : Restrictions.conjunction(); try { final List<Tag> tags = Tags.list(example, Predicates.alwaysTrue(), idRestriction, Collections.<String, String>emptyMap()); for (final Tag tag : tags) { final List<Tag> keyTags = tagMap.get(tag.getResourceId()); if (keyTags != null) { keyTags.add(tag); } } } catch (Exception e) { log.error(e, e); } Ordering<Tag> order = Ordering.natural().onResultOf(Tags.key()); for (final String id : identifiers) { Collections.sort(tagMap.get(id), order); } } return tagMap; }
From source file:com.eucalyptus.compute.common.internal.vm.VmCreateImageTask.java
License:Open Source License
/** * Instance matching criterion./*ww w .jav a 2 s.c o m*/ */ public static Criterion inState(final Set<CreateImageState> states) { return Restrictions.in("runtimeState.createImageTask.state", Lists.newArrayList(Iterables.transform(states, Functions.toStringFunction()))); }