Example usage for com.google.common.base Predicates and

List of usage examples for com.google.common.base Predicates and

Introduction

In this page you can find the example usage for com.google.common.base Predicates and.

Prototype

public static <T> Predicate<T> and(Predicate<? super T>... components) 

Source Link

Document

Returns a predicate that evaluates to true if each of its components evaluates to true .

Usage

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