List of usage examples for com.google.common.base Predicates and
public static <T> Predicate<T> and(Predicate<? super T>... components)
From source file:org.apache.brooklyn.rest.resources.CatalogResource.java
@SuppressWarnings({ "unchecked", "rawtypes" }) private <T, SpecT> List<CatalogItemSummary> getCatalogItemSummariesMatchingRegexFragment( Predicate<CatalogItem<T, SpecT>> type, String regex, String fragment, boolean allVersions) { List filters = new ArrayList(); filters.add(type);//from w w w . j a v a 2 s. c o m if (Strings.isNonEmpty(regex)) filters.add(CatalogPredicates.xml(StringPredicates.containsRegex(regex))); if (Strings.isNonEmpty(fragment)) filters.add(CatalogPredicates.xml(StringPredicates.containsLiteralIgnoreCase(fragment))); if (!allVersions) filters.add(CatalogPredicates.isBestVersion(mgmt())); filters.add(CatalogPredicates.entitledToSee(mgmt())); ImmutableList<CatalogItem<Object, Object>> sortedItems = FluentIterable .from(brooklyn().getCatalog().getCatalogItems()).filter(Predicates.and(filters)) .toSortedList(CatalogItemComparator.getInstance()); return Lists.transform(sortedItems, TO_CATALOG_ITEM_SUMMARY); }
From source file:org.apache.brooklyn.core.objs.ConstraintSerialization.java
private <T> Predicate<?> and(Iterable<Predicate<? super T>> preds) { Iterator<Predicate<? super T>> pi = preds.iterator(); if (!pi.hasNext()) return Predicates.alwaysTrue(); Predicate<?> first = pi.next(); if (!pi.hasNext()) return first; return Predicates.and(preds); }
From source file:com.eucalyptus.ws.EmpyreanService.java
public static DescribeServicesResponseType describeService(final DescribeServicesType request) { final DescribeServicesResponseType reply = request.getReply(); Topology.touch(request);/*from w w w .j ava 2 s .c o m*/ if (request.getServices().isEmpty()) { final ComponentId compId = (request.getByServiceType() != null) ? ComponentIds.lookup(request.getByServiceType().toLowerCase()) : Empyrean.INSTANCE; final boolean showEventStacks = Boolean.TRUE.equals(request.getShowEventStacks()); final boolean showEvents = Boolean.TRUE.equals(request.getShowEvents()) || showEventStacks; final Function<ServiceConfiguration, ServiceStatusType> transformToStatus = ServiceConfigurations .asServiceStatus(showEvents, showEventStacks); final List<Predicate<ServiceConfiguration>> filters = new ArrayList<Predicate<ServiceConfiguration>>() { { if (request.getByPartition() != null) { Partitions.exists(request.getByPartition()); this.add(Filters.host(request.getByPartition())); } if (request.getByState() != null) { final Component.State stateFilter = Component.State .valueOf(request.getByState().toUpperCase()); this.add(Filters.state(stateFilter)); } this.add(Filters.host(request.getByHost())); this.add(Filters.listAllOrInternal(request.getListAll(), request.getListUserServices(), request.getListInternal())); } }; final Predicate<Component> componentFilter = Filters.componentType(compId); final Predicate<ServiceConfiguration> configPredicate = Predicates.and(filters); for (final Component comp : Components.list()) { if (componentFilter.apply(comp)) { for (final ServiceConfiguration config : comp.services()) { if (configPredicate.apply(config)) { reply.getServiceStatuses().add(transformToStatus.apply(config)); } } } } } else { for (ServiceId s : request.getServices()) { reply.getServiceStatuses().add(TypeMappers.transform(s, ServiceStatusType.class)); } } return reply; }
From source file:com.eucalyptus.empyrean.EmpyreanService.java
public static DescribeServicesResponseType describeService(final DescribeServicesType request) { final DescribeServicesResponseType reply = request.getReply(); Topology.touch(request);/* w w w . jav a 2s. co m*/ if (request.getServices().isEmpty()) { final ComponentId compId = (request.getByServiceType() != null) ? ComponentIds.lookup(request.getByServiceType().toLowerCase()) : Empyrean.INSTANCE; final boolean showEventStacks = Boolean.TRUE.equals(request.getShowEventStacks()); final boolean showEvents = Boolean.TRUE.equals(request.getShowEvents()) || showEventStacks; final Function<ServiceConfiguration, ServiceStatusType> transformToStatus = ServiceConfigurations .asServiceStatus(showEvents, showEventStacks); final List<Predicate<ServiceConfiguration>> filters = new ArrayList<Predicate<ServiceConfiguration>>() { { if (request.getByPartition() != null) { Partitions.exists(request.getByPartition()); this.add(Filters.partition(request.getByPartition())); } if (request.getByState() != null) { final Component.State stateFilter = Component.State .valueOf(request.getByState().toUpperCase()); this.add(Filters.state(stateFilter)); } if (!request.getServiceNames().isEmpty()) { this.add(Filters.name(request.getServiceNames())); } this.add(Filters.host(request.getByHost())); this.add(Filters.listAllOrInternal(request.getListAll(), request.getListUserServices(), request.getListInternal())); } }; final Predicate<Component> componentFilter = Filters.componentType(compId); final Predicate<ServiceConfiguration> configPredicate = Predicates.and(filters); List<ServiceConfiguration> replyConfigs = Lists.newArrayList(); for (final Component comp : Components.list()) { if (componentFilter.apply(comp)) { Collection<ServiceConfiguration> acceptedConfigs = Collections2.filter(comp.services(), configPredicate); replyConfigs.addAll(acceptedConfigs); } } ImmutableList<ServiceConfiguration> sortedReplyConfigs = ServiceOrderings.defaultOrdering() .immutableSortedCopy(replyConfigs); final Collection<ServiceStatusType> transformedReplyConfigs = Collections2.transform(sortedReplyConfigs, transformToStatus); reply.getServiceStatuses().addAll(transformedReplyConfigs); } else { for (ServiceId s : request.getServices()) { reply.getServiceStatuses().add(TypeMappers.transform(s, ServiceStatusType.class)); } } return reply; }
From source file:forge.itemmanager.ItemManager.java
public boolean applyFilters() { if (lockFiltering || !initialized) { return false; }//ww w .ja va2 s . c om List<Predicate<? super T>> predicates = new ArrayList<Predicate<? super T>>(); for (ItemFilter<? extends T> filter : filters) { if (!filter.isEmpty()) { predicates.add(filter.buildPredicate(genericType)); } } if (!searchFilter.isEmpty()) { predicates.add(searchFilter.buildPredicate(genericType)); } if (advancedSearchFilter != null && !advancedSearchFilter.isEmpty()) { predicates.add(advancedSearchFilter.buildPredicate(genericType)); } Predicate<? super T> newFilterPredicate = predicates.size() == 0 ? null : Predicates.and(predicates); if (filterPredicate == newFilterPredicate) { return false; } filterPredicate = newFilterPredicate; if (pool != null) { if (viewUpdating) { needSecondUpdate = true; } else { viewUpdating = true; FThreads.invokeInBackgroundThread(new Runnable() { @Override public void run() { do { needSecondUpdate = false; updateView(true, null); Gdx.graphics.requestRendering(); } while (needSecondUpdate); viewUpdating = false; } }); } } return true; }
From source file:com.eucalyptus.compute.common.internal.tags.FilterSupport.java
/** * Generate a Filter for the given filters. * * @param filters The map of filter names to (multiple) values * @param allowInternalFilters True to allow use of internal filters * @return The filter representation/*w w w. j a va 2 s. c o m*/ * @throws InvalidFilterException If a filter is invalid */ public Filter generate(final Map<String, Set<String>> filters, final boolean allowInternalFilters, final String accountId) throws InvalidFilterException { // Construct collection filter final List<Predicate<Object>> and = Lists.newArrayList(); for (final Map.Entry<String, Set<String>> filter : Iterables.filter(filters.entrySet(), Predicates.not(isTagFilter()))) { final List<Predicate<Object>> or = Lists.newArrayList(); for (final String value : filter.getValue()) { final Function<? super String, Predicate<? super RT>> predicateFunction = predicateFunctions .get(filter.getKey()); if (predicateFunction == null || (!allowInternalFilters && internalFilters.contains(filter.getKey()))) { throw InvalidFilterException.forName(filter.getKey()); } final Predicate<? super RT> valuePredicate = predicateFunction.apply(value); or.add(typedPredicate(valuePredicate)); } and.add(Predicates.or(or)); } // Construct database filter and aliases final Junction conjunction = Restrictions.conjunction(); final Map<String, String> aliases = Maps.newHashMap(); for (final Map.Entry<String, Set<String>> filter : Iterables.filter(filters.entrySet(), Predicates.not(isTagFilter()))) { final Junction disjunction = Restrictions.disjunction(); for (final String value : filter.getValue()) { final PersistenceFilter persistenceFilter = persistenceFilters.get(filter.getKey()); if (persistenceFilter != null) { final Object persistentValue = persistenceFilter.value(value); if (persistentValue != null) { for (final String alias : persistenceFilter.getAliases()) aliases.put(alias, this.aliases.get(alias)); disjunction.add(buildRestriction(persistenceFilter.getProperty(), persistentValue)); } // else, there is no valid DB filter for the given value (e.g. wildcard for integer value) } } conjunction.add(disjunction); } // Construct database filter and aliases for tags boolean tagPresent = false; final List<Junction> tagJunctions = Lists.newArrayList(); for (final Map.Entry<String, Set<String>> filter : Iterables.filter(filters.entrySet(), isTagFilter())) { tagPresent = true; final Junction disjunction = Restrictions.disjunction(); final String filterName = filter.getKey(); for (final String value : filter.getValue()) { if ("tag-key".equals(filterName)) { disjunction.add(buildTagRestriction(value, null, true)); } else if ("tag-value".equals(filterName)) { disjunction.add(buildTagRestriction(null, value, true)); } else { disjunction.add(buildTagRestriction(filterName.substring(4), value, false)); } } tagJunctions.add(disjunction); } if (tagPresent) conjunction.add(tagCriterion(accountId, tagJunctions)); return new Filter(aliases, conjunction, Predicates.and(and), tagPresent); }
From source file:com.eucalyptus.autoscaling.AutoScalingService.java
public DescribeTagsResponseType describeTags(final DescribeTagsType request) throws EucalyptusCloudException { final DescribeTagsResponseType reply = request.getReply(); //TODO: MaxRecords / NextToken support for DescribeTags final Collection<Predicate<Tag>> tagFilters = Lists.newArrayList(); for (final Filter filter : request.filters()) { final Function<Tag, String> extractor = tagFilterExtractors.get(filter.getName()); if (extractor == null) { throw new ValidationErrorException("Filter type " + filter.getName() + " is not correct. Allowed Filter types are: auto-scaling-group key value propagate-at-launch"); }/* ww w.j a v a 2 s . c om*/ final Function<String, String> tagValueConverter = Objects .firstNonNull(tagValuePreProcessors.get(filter.getName()), Functions.<String>identity()); tagFilters.add(Predicates .compose(Predicates.in(Collections2.transform(filter.values(), tagValueConverter)), extractor)); } final Context context = Contexts.lookup(); final Ordering<Tag> ordering = Ordering.natural().onResultOf(Tags.resourceId()) .compound(Ordering.natural().onResultOf(Tags.key())) .compound(Ordering.natural().onResultOf(Tags.value())); try { final TagDescriptionList tagDescriptions = new TagDescriptionList(); for (final Tag tag : ordering .sortedCopy(Tags.list(context.getUserFullName().asAccountFullName(), Predicates.and(tagFilters), Restrictions.conjunction(), Collections.<String, String>emptyMap()))) { if (Permissions.isAuthorized(PolicySpec.VENDOR_AUTOSCALING, tag.getResourceType(), tag.getKey(), context.getAccount(), PolicySpec.describeAction(PolicySpec.VENDOR_AUTOSCALING, tag.getResourceType()), context.getUser())) { tagDescriptions.getMember().add(TypeMappers.transform(tag, TagDescription.class)); } } if (!tagDescriptions.getMember().isEmpty()) { reply.getDescribeTagsResult().setTags(tagDescriptions); } } catch (AutoScalingMetadataNotFoundException e) { handleException(e); } return reply; }
From source file:com.eucalyptus.autoscaling.backend.AutoScalingBackendService.java
public DescribeTagsResponseType describeTags(final DescribeTagsType request) throws EucalyptusCloudException { final DescribeTagsResponseType reply = request.getReply(); //TODO: MaxRecords / NextToken support for DescribeTags final Collection<Predicate<Tag>> tagFilters = Lists.newArrayList(); for (final Filter filter : request.filters()) { final Function<Tag, String> extractor = tagFilterExtractors.get(filter.getName()); if (extractor == null) { throw new ValidationErrorException("Filter type " + filter.getName() + " is not correct. Allowed Filter types are: auto-scaling-group key value propagate-at-launch"); }/*from w w w. java 2 s . c o m*/ final Function<String, String> tagValueConverter = Objects .firstNonNull(tagValuePreProcessors.get(filter.getName()), Functions.<String>identity()); tagFilters.add(Predicates .compose(Predicates.in(Collections2.transform(filter.values(), tagValueConverter)), extractor)); } final Context context = Contexts.lookup(); final Ordering<Tag> ordering = Ordering.natural().onResultOf(Tags.resourceId()) .compound(Ordering.natural().onResultOf(Tags.key())) .compound(Ordering.natural().onResultOf(Tags.value())); try { final TagDescriptionList tagDescriptions = new TagDescriptionList(); for (final Tag tag : ordering .sortedCopy(Tags.list(context.getUserFullName().asAccountFullName(), Predicates.and(tagFilters), Restrictions.conjunction(), Collections.<String, String>emptyMap()))) { if (Permissions.isAuthorized(PolicySpec.VENDOR_AUTOSCALING, tag.getResourceType(), tag.getKey(), context.getAccount(), PolicySpec.describeAction(PolicySpec.VENDOR_AUTOSCALING, tag.getResourceType()), context.getAuthContext())) { tagDescriptions.getMember().add(TypeMappers.transform(tag, TagDescription.class)); } } if (!tagDescriptions.getMember().isEmpty()) { reply.getDescribeTagsResult().setTags(tagDescriptions); } } catch (AutoScalingMetadataNotFoundException e) { handleException(e); } return reply; }