List of usage examples for com.google.common.base Predicates compose
public static <A, B> Predicate<A> compose(Predicate<B> predicate, Function<A, ? extends B> function)
From source file:org.apache.aurora.common.args.ArgScanner.java
/** * Applies argument values to fields based on their annotations. * * @param parserOracle ParserOracle available to parse raw args with. * @param verifiers Verifiers available to verify argument constraints with. * @param argsInfo Fields to apply argument values to. * @param args Unparsed argument values. * @param positionalArgs The unparsed positional arguments. * @return {@code true} if the given {@code args} were successfully applied to their * corresponding {@link Arg} fields. *//*ww w . ja v a 2 s . c o m*/ private boolean process(final ParserOracle parserOracle, Verifiers verifiers, ArgsInfo argsInfo, Map<String, String> args, List<String> positionalArgs) { if (!Sets.intersection(args.keySet(), ArgumentInfo.HELP_ARGS).isEmpty()) { printHelp(verifiers, argsInfo); return false; } Iterable<? extends OptionInfo<?>> optionInfos = argsInfo.getOptionInfos(); final Set<String> argsFailedToParse = Sets.newHashSet(); final Set<String> argsConstraintsFailed = Sets.newHashSet(); Set<String> argAllShortNamesNoCollisions = getNoCollisions(optionInfos); final Map<String, OptionInfo<?>> argsByName = ImmutableMap.<String, OptionInfo<?>>builder() // Map by short arg name -> arg def. .putAll(Maps.uniqueIndex(Iterables.filter(optionInfos, Predicates.compose(Predicates.in(argAllShortNamesNoCollisions), GET_OPTION_INFO_NAME)), GET_OPTION_INFO_NAME)) // Map by negated short arg name (for booleans) .putAll(Maps .uniqueIndex( Iterables.filter(Iterables.filter(optionInfos, IS_BOOLEAN), Predicates.compose(Predicates.in(argAllShortNamesNoCollisions), GET_OPTION_INFO_NEGATED_NAME)), GET_OPTION_INFO_NEGATED_NAME)) .build(); // TODO(William Farner): Make sure to disallow duplicate arg specification by short and // canonical names. // TODO(William Farner): Support non-atomic argument constraints. @OnlyIfSet, @OnlyIfNotSet, // @ExclusiveOf to define inter-argument constraints. Set<String> recognizedArgs = Sets.intersection(argsByName.keySet(), args.keySet()); for (String argName : recognizedArgs) { String argValue = args.get(argName); OptionInfo<?> optionInfo = argsByName.get(argName); try { optionInfo.load(parserOracle, argName, argValue); } catch (IllegalArgumentException e) { argsFailedToParse.add(argName + " - " + e.getMessage()); } } Set<String> commandLineArgumentInfos = Sets.newTreeSet(); Iterable<? extends ArgumentInfo<?>> allArguments = argsInfo.getOptionInfos(); for (ArgumentInfo<?> anArgumentInfo : allArguments) { Arg<?> arg = anArgumentInfo.getArg(); commandLineArgumentInfos.add(String.format("%s: %s", anArgumentInfo.getName(), arg.uncheckedGet())); try { anArgumentInfo.verify(verifiers); } catch (IllegalArgumentException e) { argsConstraintsFailed.add(anArgumentInfo.getName() + " - " + e.getMessage()); } } ImmutableMultimap<String, String> warningMessages = ImmutableMultimap.<String, String>builder() .putAll("Unrecognized arguments", Sets.difference(args.keySet(), argsByName.keySet())) .putAll("Failed to parse", argsFailedToParse) .putAll("Value did not meet constraints", argsConstraintsFailed).build(); if (!warningMessages.isEmpty()) { printHelp(verifiers, argsInfo); StringBuilder sb = new StringBuilder(); for (Map.Entry<String, Collection<String>> warnings : warningMessages.asMap().entrySet()) { sb.append(warnings.getKey()).append(":\n\t").append(Joiner.on("\n\t").join(warnings.getValue())) .append("\n"); } throw new IllegalArgumentException(sb.toString()); } LOG.info("-------------------------------------------------------------------------"); LOG.info("Command line argument values"); for (String commandLineArgumentInfo : commandLineArgumentInfos) { LOG.info(commandLineArgumentInfo); } LOG.info("-------------------------------------------------------------------------"); return true; }
From source file:ec.nbdemetra.ui.DemetraUI.java
private static <X, Y> X find(Class<X> clazz, Function<? super X, Y> toName, Y... names) { Collection<? extends X> items = Lookup.getDefault().lookupAll(clazz); for (Y o : names) { Optional<? extends X> result = Iterables.tryFind(items, Predicates.compose(Predicates.equalTo(o), toName)); if (result.isPresent()) { return result.get(); }// w ww . ja v a 2 s .c om } return null; }
From source file:forge.quest.BoosterUtils.java
/** * parseReward - used internally to parse individual items in a challenge reward definition. * @param s// www. j a v a 2 s . co 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; }
From source file:com.twitter.common.args.ArgScanner.java
/** * Applies argument values to fields based on their annotations. * * @param parserOracle ParserOracle available to parse raw args with. * @param verifiers Verifiers available to verify argument constraints with. * @param argsInfo Fields to apply argument values to. * @param args Unparsed argument values. * @param positionalArgs The unparsed positional arguments. * @return {@code true} if the given {@code args} were successfully applied to their * corresponding {@link com.twitter.common.args.Arg} fields. *///from w ww .j ava 2s . co m private boolean process(final ParserOracle parserOracle, Verifiers verifiers, ArgsInfo argsInfo, Map<String, String> args, List<String> positionalArgs) { if (!Sets.intersection(args.keySet(), ArgumentInfo.HELP_ARGS).isEmpty()) { printHelp(verifiers, argsInfo); return false; } Optional<? extends PositionalInfo<?>> positionalInfoOptional = argsInfo.getPositionalInfo(); checkArgument(positionalInfoOptional.isPresent() || positionalArgs.isEmpty(), "Positional arguments have been supplied but there is no Arg annotated to received them."); Iterable<? extends OptionInfo<?>> optionInfos = argsInfo.getOptionInfos(); final Set<String> argsFailedToParse = Sets.newHashSet(); final Set<String> argsConstraintsFailed = Sets.newHashSet(); Set<String> argAllShortNamesNoCollisions = getNoCollisions(optionInfos); final Map<String, OptionInfo<?>> argsByName = ImmutableMap.<String, OptionInfo<?>>builder() // Map by short arg name -> arg def. .putAll(Maps.uniqueIndex(Iterables.filter(optionInfos, Predicates.compose(Predicates.in(argAllShortNamesNoCollisions), GET_OPTION_INFO_NAME)), GET_OPTION_INFO_NAME)) // Map by canonical arg name -> arg def. .putAll(Maps.uniqueIndex(optionInfos, GET_CANONICAL_ARG_NAME)) // Map by negated short arg name (for booleans) .putAll(Maps.uniqueIndex(Iterables.filter(Iterables.filter(optionInfos, IS_BOOLEAN), Predicates.compose(Predicates.in(argAllShortNamesNoCollisions), GET_OPTION_INFO_NEGATED_NAME)), GET_OPTION_INFO_NEGATED_NAME)) // Map by negated canonical arg name (for booleans) .putAll(Maps.uniqueIndex(Iterables.filter(optionInfos, IS_BOOLEAN), GET_CANONICAL_NEGATED_ARG_NAME)) .build(); // TODO(William Farner): Make sure to disallow duplicate arg specification by short and // canonical names. // TODO(William Farner): Support non-atomic argument constraints. @OnlyIfSet, @OnlyIfNotSet, // @ExclusiveOf to define inter-argument constraints. Set<String> recognizedArgs = Sets.intersection(argsByName.keySet(), args.keySet()); for (String argName : recognizedArgs) { String argValue = args.get(argName); OptionInfo<?> optionInfo = argsByName.get(argName); try { optionInfo.load(parserOracle, argName, argValue); } catch (IllegalArgumentException e) { argsFailedToParse.add(argName + " - " + e.getMessage()); } } if (positionalInfoOptional.isPresent()) { PositionalInfo<?> positionalInfo = positionalInfoOptional.get(); positionalInfo.load(parserOracle, positionalArgs); } Set<String> commandLineArgumentInfos = Sets.newTreeSet(); Iterable<? extends ArgumentInfo<?>> allArguments = argsInfo.getOptionInfos(); if (positionalInfoOptional.isPresent()) { PositionalInfo<?> positionalInfo = positionalInfoOptional.get(); allArguments = Iterables.concat(optionInfos, ImmutableList.of(positionalInfo)); } for (ArgumentInfo<?> anArgumentInfo : allArguments) { Arg<?> arg = anArgumentInfo.getArg(); commandLineArgumentInfos.add(String.format("%s (%s): %s", anArgumentInfo.getName(), anArgumentInfo.getCanonicalName(), arg.uncheckedGet())); try { anArgumentInfo.verify(verifiers); } catch (IllegalArgumentException e) { argsConstraintsFailed.add(anArgumentInfo.getName() + " - " + e.getMessage()); } } ImmutableMultimap<String, String> warningMessages = ImmutableMultimap.<String, String>builder() .putAll("Unrecognized arguments", Sets.difference(args.keySet(), argsByName.keySet())) .putAll("Failed to parse", argsFailedToParse) .putAll("Value did not meet constraints", argsConstraintsFailed).build(); if (!warningMessages.isEmpty()) { printHelp(verifiers, argsInfo); StringBuilder sb = new StringBuilder(); for (Map.Entry<String, Collection<String>> warnings : warningMessages.asMap().entrySet()) { sb.append(warnings.getKey()).append(":\n\t").append(Joiner.on("\n\t").join(warnings.getValue())) .append("\n"); } throw new IllegalArgumentException(sb.toString()); } LOG.info("-------------------------------------------------------------------------"); LOG.info("Command line argument values"); for (String commandLineArgumentInfo : commandLineArgumentInfos) { LOG.info(commandLineArgumentInfo); } LOG.info("-------------------------------------------------------------------------"); return true; }
From source file:org.immutables.value.processor.meta.ValueType.java
public Set<ValueAttribute> computeConstructorArguments() { return ImmutableSet.copyOf(attributes() .filter(Predicates.compose(Predicates.not(Predicates.equalTo(-1)), ToConstructorArgumentOrder.FUNCTION)) .toSortedList(Ordering.natural().onResultOf(ToConstructorArgumentOrder.FUNCTION))); }
From source file:com.twitter.aurora.scheduler.thrift.SchedulerThriftInterface.java
@Override public Response getJobs(@Nullable String maybeNullRole) { Optional<String> ownerRole = Optional.fromNullable(maybeNullRole); // Ensure we only return one JobConfiguration for each JobKey. Map<IJobKey, IJobConfiguration> jobs = Maps.newHashMap(); // Query the task store, find immediate jobs, and synthesize a JobConfiguration for them. // This is necessary because the ImmediateJobManager doesn't store jobs directly and // ImmediateJobManager#getJobs always returns an empty Collection. Query.Builder scope = ownerRole.isPresent() ? Query.roleScoped(ownerRole.get()) : Query.unscoped(); Multimap<IJobKey, IScheduledTask> tasks = Tasks .byJobKey(Storage.Util.weaklyConsistentFetchTasks(storage, scope.active())); jobs.putAll(Maps.transformEntries(tasks.asMap(), new Maps.EntryTransformer<IJobKey, Collection<IScheduledTask>, IJobConfiguration>() { @Override// w w w . ja v a 2 s .c o m public IJobConfiguration transformEntry(IJobKey jobKey, Collection<IScheduledTask> tasks) { // Pick an arbitrary task for each immediate job. The chosen task might not be the most // recent if the job is in the middle of an update or some shards have been selectively // created. TaskConfig firstTask = tasks.iterator().next().getAssignedTask().getTask().newBuilder(); return IJobConfiguration.build( new JobConfiguration().setKey(jobKey.newBuilder()).setOwner(firstTask.getOwner()) .setTaskConfig(firstTask).setInstanceCount(tasks.size())); } })); // Get cron jobs directly from the manager. Do this after querying the task store so the real // template JobConfiguration for a cron job will overwrite the synthesized one that could have // been created above. Predicate<IJobConfiguration> configFilter = ownerRole.isPresent() ? Predicates.compose(Predicates.equalTo(ownerRole.get()), JobKeys.CONFIG_TO_ROLE) : Predicates.<IJobConfiguration>alwaysTrue(); jobs.putAll(Maps.uniqueIndex(FluentIterable.from(cronJobManager.getJobs()).filter(configFilter), JobKeys.FROM_CONFIG)); return new Response().setResponseCode(OK).setResult(Result .getJobsResult(new GetJobsResult().setConfigs(IJobConfiguration.toBuildersSet(jobs.values())))); }
From source file:com.eucalyptus.reporting.ReportingDataVerifier.java
private static Address findAddress(final String uuid) { return Iterables.getFirst(Iterables.filter( Iterables.concat(Addresses.getInstance().listValues(), Addresses.getInstance().listDisabledValues()), Predicates.compose(Predicates.equalTo(uuid), naturalId())), null); }
From source file:clocker.mesos.entity.MesosClusterImpl.java
public List<String> scanFrameworks(JsonArray frameworks) { List<String> frameworkNames = MutableList.<String>of(); for (int i = 0; i < frameworks.size(); i++) { JsonObject task = frameworks.get(i).getAsJsonObject(); String id = task.get("id").getAsString(); JsonElement pidObj = task.get("pid"); String pid = null;//from ww w . j a v a 2s .c om if (pidObj != null && !pidObj.isJsonNull()) { pid = pidObj.getAsString(); } String name = task.get("name").getAsString(); String url = task.get("webui_url").getAsString(); frameworkNames.add(name); Optional<Entity> entity = Iterables.tryFind(sensors().get(MESOS_FRAMEWORKS).getMembers(), Predicates .compose(Predicates.equalTo(id), EntityFunctions.attribute(MesosFramework.FRAMEWORK_ID))); if (entity.isPresent()) continue; EntitySpec<? extends MesosFramework> frameworkSpec = EntitySpec .create(FRAMEWORKS.containsKey(name) ? FRAMEWORKS.get(name) : EntitySpec.create(MesosFramework.class)) .configure(MesosFramework.FRAMEWORK_ID, id).configure(MesosFramework.FRAMEWORK_PID, pid) .configure(MesosFramework.FRAMEWORK_NAME, name).configure(MesosFramework.FRAMEWORK_URL, url) .configure(MesosFramework.MESOS_CLUSTER, this) .displayName(String.format("%s Framework", Strings.toInitialCapOnly(name))); MesosFramework added = sensors().get(MESOS_FRAMEWORKS).addMemberChild(frameworkSpec); added.start(ImmutableList.<Location>of()); } return frameworkNames; }
From source file:edu.harvard.med.screensaver.service.libraries.PlateUpdater.java
private void updatePrimaryPlateLocation(Copy copy) { Set<Entry<PlateLocation, Integer>> plateLocationCounts = Maps .transformValues(Multimaps// w w w. ja v a 2s .c o m .index(Iterables.filter(copy.getPlates().values(), Predicates.compose(Predicates.notNull(), Plate.ToLocation)), Plate.ToLocation) .asMap(), CollectionSize) .entrySet(); if (plateLocationCounts.isEmpty()) { copy.setPrimaryPlateLocation(null); } else { PlateLocation primaryPlateLocation = Collections .max(plateLocationCounts, plateLocationFrequencyComparator).getKey(); copy.setPrimaryPlateLocation(primaryPlateLocation); copy.setPlateLocationsCount(plateLocationCounts.size()); } }
From source file:edu.harvard.med.iccbl.screensaver.policy.IccblEntityViewPolicy.java
private Set<Screen> findMutualScreens() { if (_mutualScreens == null) { _mutualScreens = Sets.newHashSet(); if (getScreensaverUser().getScreensaverUserRoles() .contains(ScreensaverUserRole.SM_DSL_LEVEL1_MUTUAL_SCREENS)) { _mutualScreens.addAll(findOthersLevel1AndLevel2Screens(ScreenType.SMALL_MOLECULE)); }/* www.j av a2 s . c om*/ if (getScreensaverUser().getScreensaverUserRoles() .contains(ScreensaverUserRole.RNAI_DSL_LEVEL1_MUTUAL_SCREENS)) { _mutualScreens.addAll(findOthersLevel1AndLevel2Screens(ScreenType.RNAI)); } // filter out the level 2 screens, since we've called findOthersLevel1AndLevel2Screens() for code reuse, even though it returns a superset of screens that we need in this method _mutualScreens = Sets.newHashSet(Iterables.filter(_mutualScreens, Predicates.compose( Predicates.equalTo(ScreenDataSharingLevel.MUTUAL_SCREENS), Screen.ToDataSharingLevel))); if (log.isDebugEnabled()) { log.debug("other's mutually shared screens: " + Joiner.on(", ").join(Iterables.transform(_mutualScreens, Screen.ToNameFunction))); } } return _mutualScreens; }