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:com.facebook.buck.android.FilterResourcesStep.java

private int doExecute(ExecutionContext context) throws IOException {
    List<Predicate<Path>> pathPredicates = Lists.newArrayList();

    final boolean canDownscale = imageScaler != null && imageScaler.isAvailable(context);

    if (filterDrawables) {
        Set<Path> drawables = drawableFinder.findDrawables(inResDirToOutResDirMap.keySet(),
                context.getProjectFilesystem());
        pathPredicates.add(Filters.createImageDensityFilter(drawables, targetDensities, canDownscale));
    }//  w  w w .j  av  a 2s  . c om

    if (filterStrings) {
        pathPredicates.add(new Predicate<Path>() {
            @Override
            public boolean apply(Path pathRelativeToProjectRoot) {
                if (!NON_ENGLISH_STRING_PATH.matcher(pathRelativeToProjectRoot.toString()).matches()) {
                    return true;
                }
                for (Path whitelistedStringDir : whitelistedStringDirs) {
                    if (pathRelativeToProjectRoot.startsWith(whitelistedStringDir)) {
                        return true;
                    }
                }
                nonEnglishStringFilesBuilder.add(pathRelativeToProjectRoot);
                return false;
            }
        });
    }

    // Create filtered copies of all resource directories. These will be passed to aapt instead.
    filteredDirectoryCopier.copyDirs(context.getProjectFilesystem(), inResDirToOutResDirMap,
            Predicates.and(pathPredicates));

    // If an ImageScaler was specified, but only if it is available, try to apply it.
    if (canDownscale && filterDrawables) {
        scaleUnmatchedDrawables(context);
    }

    return 0;
}

From source file:forge.toolbox.ListChooser.java

@SuppressWarnings("unchecked")
public void applyFilters() {
    lstChoices.clearSelection();/* ww w. ja v  a 2  s  . co m*/

    List<Predicate<? super T>> predicates = new ArrayList<Predicate<? super T>>();

    final String pattern = txtSearch.getText().toLowerCase();
    if (!pattern.isEmpty()) {
        predicates.add(new Predicate<T>() {
            @Override
            public boolean apply(T input) {
                return lstChoices.getChoiceText(input).toLowerCase().contains(pattern);
            }
        });
    }
    if (advancedSearchFilter != null && !advancedSearchFilter.isEmpty()) {
        predicates.add((Predicate<? super T>) advancedSearchFilter.getPredicate());
    }

    if (predicates.isEmpty()) {
        lstChoices.setListData(list);
    } else {
        lstChoices.setListData(Iterables.filter(list, Predicates.and(predicates)));
    }

    if (!lstChoices.isEmpty() && lstChoices.getMaxChoices() > 0) {
        lstChoices.addSelectedIndex(0);
    }
    lstChoices.setScrollTop(0);
}

From source file:org.sonatype.nexus.timeline.feeds.sources.AbstractFeedSource.java

/**
 * Creates predicates out of the map keys and values. It consider entry key for key, and value as "allowed value".
 * Hence, for values, one might use comma separated values. It uses {@link AnyOfFilter} to implement predicate for
 * each map entry. Values are turned into sets in method {@link #valueSet(String)}.
 * <p/>/*from   ww  w  . j  a v  a  2 s.com*/
 * Example HTTP request with query parameters {@code ?foo=1&bar=a,b,c} will be turned into predicates like
 * (pseudo code):
 * <pre>
 *   and(
 *     value of "foo" member of {1}, // this basically means "foo=1"
 *     value of "bar" member of {a,b,c}, // this basically means "bar" value is in set of {a,b,c}
 *   );
 * </pre>
 *
 * @see {@link AnyOfFilter}
 * @see {@link #valueSet(String)}
 */
protected Predicate<Entry> filters(final Map<String, String> params) {
    if (params.isEmpty()) {
        return Predicates.alwaysTrue();
    }
    final List<Predicate<Entry>> filters = Lists.newArrayList();
    for (Map.Entry<String, String> param : params.entrySet()) {
        // TODO: maybe all with "_" as prefix? But then how to filter for type and subType?
        if (param.getKey().equals("_dc")) {
            continue;
        }
        final AnyOfFilter filter = new AnyOfFilter(param.getKey(), valueSet(param.getValue()));
        filters.add(filter);
    }
    return Predicates.and(filters);
}

From source file:com.textocat.textokit.io.brat.AutoBratUimaMappingFactory.java

private Type searchTypeByBaseName(String baseName) {
    @SuppressWarnings("unchecked")
    Iterator<Type> iter = Iterators.filter(ts.getTypeIterator(), Predicates
            .and(asList(annotationTypePredicate, typeBaseNamePredicate(baseName), namespacePredicate)));
    Type result = null;/*from  w  ww .ja  v  a2  s.c  o  m*/
    if (iter.hasNext()) {
        result = iter.next();
        if (iter.hasNext()) {
            throw new IllegalStateException(String
                    .format("There are at least two types with target basename: %s, %s", result, iter.next()));
        }
    }
    return result;
}

From source file:org.sonatype.nexus.plugins.capabilities.internal.rest.StoresResource.java

private Predicate<Repository> hasNoneOfFacets(@Nullable final List<String> facets) {
    if (facets != null && !facets.isEmpty()) {
        List<Predicate<Repository>> predicates = Lists.newArrayList();
        for (String facet : facets) {
            if (StringUtils.isNotEmpty(facet) && facet.startsWith("!")) {
                String actualFacet = facet.substring(1);
                try {
                    final Class<?> facetClass = getClass().getClassLoader().loadClass(actualFacet);
                    predicates.add(new Predicate<Repository>() {
                        @Override
                        public boolean apply(@Nullable final Repository input) {
                            return input != null && !input.getRepositoryKind().isFacetAvailable(facetClass);
                        }/*from  www.j  a  v  a2 s .c  om*/
                    });
                } catch (ClassNotFoundException e) {
                    log.warn("Repositories will not be filtered by facet {} as it could not be loaded",
                            actualFacet);
                }
            }
        }
        if (!predicates.isEmpty()) {
            if (predicates.size() == 1) {
                return predicates.get(0);
            }
            return Predicates.and(predicates);
        }
    }
    return null;
}

From source file:org.apache.brooklyn.core.objs.ConstraintSerialization.java

@SuppressWarnings({ "unchecked", "rawtypes" })
private void init() {
    PredicateSerializationRuleAdder.predicateListConstructor((o) -> ConfigConstraints.required())
            .equivalentPredicates(StringPredicates.isNonBlank()).add(this);

    PredicateSerializationRuleAdder.predicateListConstructor((o) -> Predicates.or((Iterable) o))
            .preferredName("any").equivalentNames("or").add(this);
    PredicateSerializationRuleAdder/*  w w w  .jav  a2  s  . c  o m*/
            .predicateListConstructor(
                    (o) -> /* and predicate is default when given list */ toPredicateFromJson(o))
            .preferredName("all").sample(Predicates.and(Collections.emptyList())).equivalentNames("and")
            .add(this);
    PredicateSerializationRuleAdder.noArgConstructor(Predicates::alwaysFalse).add(this);
    PredicateSerializationRuleAdder.noArgConstructor(Predicates::alwaysTrue).add(this);
    PredicateSerializationRuleAdder.noArgConstructor(Predicates::notNull).add(this);

    PredicateSerializationRuleAdder.noArgConstructor(ResourcePredicates::urlExists).preferredName("urlExists")
            .add(this);
    PredicateSerializationRuleAdder.noArgConstructor(StringPredicates::isBlank).add(this);

    PredicateSerializationRuleAdder.stringConstructor(StringPredicates::matchesRegex).preferredName("regex")
            .add(this);
    PredicateSerializationRuleAdder.stringConstructor(StringPredicates::matchesGlob).preferredName("glob")
            .add(this);

    PredicateSerializationRuleAdder.stringConstructor(ConfigConstraints::forbiddenIf).add(this);
    PredicateSerializationRuleAdder.stringConstructor(ConfigConstraints::forbiddenUnless).add(this);
    PredicateSerializationRuleAdder.stringConstructor(ConfigConstraints::requiredIf).add(this);
    PredicateSerializationRuleAdder.stringConstructor(ConfigConstraints::requiredUnless).add(this);
    PredicateSerializationRuleAdder.listConstructor(ConfigConstraints::requiredUnlessAnyOf).add(this);
    PredicateSerializationRuleAdder.listConstructor(ConfigConstraints::forbiddenUnlessAnyOf).add(this);
}

From source file:org.sosy_lab.cpachecker.cfa.postprocessing.function.CFunctionPointerResolver.java

private Predicate<Pair<CFunctionCall, CFunctionType>> getFunctionSetPredicate(
        Collection<FunctionSet> pFunctionSets) {
    // note that this set is sorted according to the declaration order of the enum
    EnumSet<FunctionSet> functionSets = EnumSet.copyOf(pFunctionSets);

    if (functionSets.contains(FunctionSet.EQ_PARAM_TYPES)
            || functionSets.contains(FunctionSet.EQ_PARAM_SIZES)) {
        functionSets.add(FunctionSet.EQ_PARAM_COUNT); // TYPES and SIZES need COUNT checked first
    }/*from   ww  w  .j a  va  2 s .co  m*/

    List<Predicate<Pair<CFunctionCall, CFunctionType>>> predicates = new ArrayList<>();
    for (FunctionSet functionSet : functionSets) {
        switch (functionSet) {
        case ALL:
            // do nothing
            break;
        case EQ_PARAM_COUNT:
            predicates.add(new Predicate<Pair<CFunctionCall, CFunctionType>>() {
                @Override
                public boolean apply(Pair<CFunctionCall, CFunctionType> pInput) {
                    boolean result = checkParamSizes(pInput.getFirst().getFunctionCallExpression(),
                            pInput.getSecond());
                    if (!result) {
                        logger.log(Level.FINEST, "Function call", pInput.getFirst().toASTString(),
                                "does not match function", pInput.getSecond(),
                                "because of number of parameters.");
                    }
                    return result;
                }
            });
            break;
        case EQ_PARAM_SIZES:
            predicates.add(new Predicate<Pair<CFunctionCall, CFunctionType>>() {
                @Override
                public boolean apply(Pair<CFunctionCall, CFunctionType> pInput) {
                    return checkReturnAndParamSizes(pInput.getFirst().getFunctionCallExpression(),
                            pInput.getSecond());
                }
            });
            break;
        case EQ_PARAM_TYPES:
            predicates.add(new Predicate<Pair<CFunctionCall, CFunctionType>>() {
                @Override
                public boolean apply(Pair<CFunctionCall, CFunctionType> pInput) {
                    return checkReturnAndParamTypes(pInput.getFirst().getFunctionCallExpression(),
                            pInput.getSecond());
                }
            });
            break;
        case RETURN_VALUE:
            predicates.add(new Predicate<Pair<CFunctionCall, CFunctionType>>() {
                @Override
                public boolean apply(Pair<CFunctionCall, CFunctionType> pInput) {
                    return checkReturnValue(pInput.getFirst(), pInput.getSecond());
                }
            });
            break;
        case USED_IN_CODE:
            // Not necessary, only matching functions are in the
            // candidateFunctions set
            break;
        default:
            throw new AssertionError();
        }
    }
    return Predicates.and(predicates);
}

From source file:brooklyn.rest.resources.CatalogResource.java

@SuppressWarnings({ "unchecked", "rawtypes" })
private <T, SpecT> List<CatalogItemSummary> getCatalogItemSummariesMatchingRegexFragment(
        Predicate<CatalogItem<T, SpecT>> type, String regex, String fragment) {
    List filters = new ArrayList();
    filters.add(type);// w  w w  .  ja  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)));

    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:forge.card.BoosterGenerator.java

/**
 * This method also modifies passed parameter
 *///  ww w  .ja v  a  2s  .  c  om
private static Predicate<PaperCard> buildExtraPredicate(List<String> operators) {

    List<Predicate<PaperCard>> conditions = new ArrayList<>();

    Iterator<String> itOp = operators.iterator();
    while (itOp.hasNext()) {

        String operator = itOp.next();
        if (StringUtils.isEmpty(operator)) {
            itOp.remove();
            continue;
        }

        if (operator.endsWith("s")) {
            operator = operator.substring(0, operator.length() - 1);
        }

        boolean invert = operator.charAt(0) == '!';
        if (invert) {
            operator = operator.substring(1);
        }

        Predicate<PaperCard> toAdd = null;
        if (operator.equalsIgnoreCase(BoosterSlots.DUAL_FACED_CARD)) {
            toAdd = Predicates.compose(CardRulesPredicates.splitType(CardSplitType.Transform),
                    PaperCard.FN_GET_RULES);
        } else if (operator.equalsIgnoreCase(BoosterSlots.LAND)) {
            toAdd = Predicates.compose(CardRulesPredicates.Presets.IS_LAND, PaperCard.FN_GET_RULES);
        } else if (operator.equalsIgnoreCase(BoosterSlots.BASIC_LAND)) {
            toAdd = IPaperCard.Predicates.Presets.IS_BASIC_LAND;
        } else if (operator.equalsIgnoreCase(BoosterSlots.TIME_SHIFTED)) {
            toAdd = IPaperCard.Predicates.Presets.IS_SPECIAL;
        } else if (operator.equalsIgnoreCase(BoosterSlots.SPECIAL)) {
            toAdd = IPaperCard.Predicates.Presets.IS_SPECIAL;
        } else if (operator.equalsIgnoreCase(BoosterSlots.MYTHIC)) {
            toAdd = IPaperCard.Predicates.Presets.IS_MYTHIC_RARE;
        } else if (operator.equalsIgnoreCase(BoosterSlots.RARE)) {
            toAdd = IPaperCard.Predicates.Presets.IS_RARE;
        } else if (operator.equalsIgnoreCase(BoosterSlots.UNCOMMON)) {
            toAdd = IPaperCard.Predicates.Presets.IS_UNCOMMON;
        } else if (operator.equalsIgnoreCase(BoosterSlots.COMMON)) {
            toAdd = IPaperCard.Predicates.Presets.IS_COMMON;
        } else if (operator.startsWith("name(")) {
            operator = StringUtils.strip(operator.substring(4), "() ");
            String[] cardNames = TextUtil.splitWithParenthesis(operator, ',', '"', '"');
            toAdd = IPaperCard.Predicates.names(Lists.newArrayList(cardNames));
        } else if (operator.startsWith("color(")) {
            operator = StringUtils.strip(operator.substring("color(".length() + 1), "()\" ");
            switch (operator.toLowerCase()) {
            case "black":
                toAdd = Presets.IS_BLACK;
                break;
            case "blue":
                toAdd = Presets.IS_BLUE;
                break;
            case "green":
                toAdd = Presets.IS_GREEN;
                break;
            case "red":
                toAdd = Presets.IS_RED;
                break;
            case "white":
                toAdd = Presets.IS_WHITE;
                break;
            case "colorless":
                toAdd = Presets.IS_COLORLESS;
                break;
            }
        } else if (operator.startsWith("fromSets(")) {
            operator = StringUtils.strip(operator.substring("fromSets(".length() + 1), "()\" ");
            String[] sets = operator.split(",");
            toAdd = IPaperCard.Predicates.printedInSets(sets);
        } else if (operator.startsWith("fromSheet(") && invert) {
            String sheetName = StringUtils.strip(operator.substring(9), "()\" ");
            Iterable<PaperCard> src = StaticData.instance().getPrintSheets().get(sheetName).toFlatList();
            List<String> cardNames = Lists.newArrayList();
            for (PaperCard card : src) {
                cardNames.add(card.getName());
            }
            toAdd = IPaperCard.Predicates.names(Lists.newArrayList(cardNames));
        }

        if (toAdd == null) {
            continue;
        } else {
            itOp.remove();
        }

        if (invert) {
            toAdd = Predicates.not(toAdd);
        }
        conditions.add(toAdd);

    }

    if (conditions.isEmpty()) {
        return Predicates.alwaysTrue();
    }

    return Predicates.and(conditions);

}

From source file:forge.quest.BoosterUtils.java

/**
 * parseReward - used internally to parse individual items in a challenge reward definition.
 * @param s//from www  .  j ava 2 s.c o m
 *      String, the reward to parse
 * @return List<CardPrinted>
 */
private static List<InventoryItem> parseReward(final String s) {

    String[] temp = s.split(" ");
    List<InventoryItem> rewards = new ArrayList<>();

    // last word starts with 'rare' ignore case
    if (temp.length > 1 && temp[temp.length - 1].regionMatches(true, 0, "rare", 0, 4)) {
        // Type 1: 'n [color] rares'
        final int qty = Integer.parseInt(temp[0]);

        List<Predicate<PaperCard>> preds = new ArrayList<>();
        preds.add(IPaperCard.Predicates.Presets.IS_RARE_OR_MYTHIC); // Determine rarity

        if (temp.length > 2) {
            Predicate<CardRules> cr = parseRulesLimitation(temp[1]);
            //noinspection RedundantCast
            if (Predicates.alwaysTrue() != (Object) cr) { // guava has a single instance for always-const predicates
                preds.add(Predicates.compose(cr, PaperCard.FN_GET_RULES));
            }
        }

        if (FModel.getQuest().getFormat() != null) {
            preds.add(FModel.getQuest().getFormat().getFilterPrinted());
        }

        PrintSheet ps = new PrintSheet("Quest rewards");
        Predicate<PaperCard> predicate = preds.size() == 1 ? preds.get(0) : Predicates.and(preds);
        ps.addAll(Iterables.filter(FModel.getMagicDb().getCommonCards().getAllCards(), predicate));
        rewards.addAll(ps.random(qty, true));
    } else if (temp.length == 2 && temp[0].equalsIgnoreCase("duplicate") && temp[1].equalsIgnoreCase("card")) {
        // Type 2: a duplicate card of the players choice
        rewards.add(new QuestRewardCardDuplicate());
    } else if (temp.length >= 2 && temp[0].equalsIgnoreCase("chosen") && temp[1].equalsIgnoreCase("card")) {
        // Type 3: a duplicate card of the players choice
        rewards.add(new QuestRewardCardFiltered(temp));
    } else if (temp.length >= 3 && temp[0].equalsIgnoreCase("booster") && temp[1].equalsIgnoreCase("pack")) {
        // Type 4: a predetermined extra booster pack
        rewards.add(BoosterPack.FN_FROM_SET.apply(FModel.getMagicDb().getEditions().get(temp[2])));
    } else if (temp.length >= 3 && temp[0].equalsIgnoreCase("tournament") && temp[1].equalsIgnoreCase("pack")) {
        // Type 5: a predetermined extra tournament ("starter") pack
        rewards.add(TournamentPack.FN_FROM_SET.apply(FModel.getMagicDb().getEditions().get(temp[2])));
    } else if (temp.length > 0) {
        // default: assume we are asking for a single copy of a specific card
        final PaperCard specific = FModel.getMagicDb().getCommonCards().getCard(s);
        if (specific != null) {
            rewards.add(specific);
        }
    }
    // Return the duplicate, a specified card, or an empty list
    return rewards;
}