List of usage examples for com.google.common.collect ImmutableListMultimap builder
public static <K, V> Builder<K, V> builder()
From source file:com.publictransitanalytics.scoregenerator.console.InteractiveNetworkConsole.java
private void showDeltas(final String route, final String beginningStopId, final String endingStopId) { final TransitStop beginningStop = stopIdMap.get(beginningStopId); final TransitStop endingStop = stopIdMap.get(endingStopId); final Set<EntryPoint> entryPoints = transitNetwork.getEntryPoints(beginningStop); final ImmutableListMultimap.Builder<Hop, Duration> durationsBuilder = ImmutableListMultimap.builder(); for (final EntryPoint entryPoint : entryPoints) { final Trip trip = entryPoint.getTrip(); if (trip.getRouteNumber().equals(route)) { final String tripId = trip.getTripId().toString(); final LocalDateTime beginningTime = entryPoint.getTime(); System.out.println(String.format("Trip %s %s", tripId, beginningTime)); TransitStop stop = beginningStop; LocalDateTime time = beginningTime; final Iterator<VehicleEvent> iterator = trip.getForwardIterator(entryPoint.getSequence()); while (iterator.hasNext() && !stop.equals(endingStop)) { final VehicleEvent nextScheduledLocation = iterator.next(); final LocalDateTime nextTime = nextScheduledLocation.getScheduledTime(); final TransitStop nextStop = nextScheduledLocation.getLocation(); final Duration delta = Duration.between(time, nextTime); final Hop hop = new Hop(stop, nextStop); durationsBuilder.put(hop, delta); System.out// ww w . j a v a2s . c o m .println(String.format("%s -> %s: %s", stop.getStopId(), nextStop.getStopId(), delta)); stop = nextStop; time = nextTime; } System.out.println("---"); } } final ImmutableListMultimap<Hop, Duration> hopDurations = durationsBuilder.build(); for (final Hop hop : hopDurations.keySet()) { final ImmutableList<Duration> durations = hopDurations.get(hop); final Duration min = durations.stream().min(Comparator.naturalOrder()).get(); final Duration max = durations.stream().max(Comparator.naturalOrder()).get(); final double averageSeconds = durations.stream() .collect(Collectors.averagingLong(Duration::getSeconds)); final Duration average = Duration.ofSeconds(Math.round(averageSeconds)); System.out.println(String.format("%s -> %s: min: %s max: %s avg: %s", hop.getStart().getStopId(), hop.getEnd().getStopId(), min, max, average)); } }
From source file:dagger.android.processor.DuplicateAndroidInjectorsChecker.java
private void validateMapKeyUniqueness(Binding dispatchingAndroidInjector, BindingGraph graph, DiagnosticReporter diagnosticReporter) { ImmutableSet<Binding> injectorFactories = injectorMapDependencies(dispatchingAndroidInjector, graph) .flatMap(injectorFactoryMap -> graph.requestedBindings(injectorFactoryMap).stream()) .collect(collectingAndThen(toList(), ImmutableSet::copyOf)); ImmutableListMultimap.Builder<String, Binding> mapKeyIndex = ImmutableListMultimap.builder(); for (Binding injectorFactory : injectorFactories) { AnnotationMirror mapKey = mapKey(injectorFactory).get(); Optional<String> injectedType = injectedTypeFromMapKey(mapKey); if (injectedType.isPresent()) { mapKeyIndex.put(injectedType.get(), injectorFactory); } else {/*from w ww .j a va 2 s. co m*/ diagnosticReporter.reportBinding(ERROR, injectorFactory, "Unrecognized class: %s", mapKey); } } Map<String, List<Binding>> duplicates = Maps.filterValues(Multimaps.asMap(mapKeyIndex.build()), bindings -> bindings.size() > 1); if (!duplicates.isEmpty()) { StringBuilder errorMessage = new StringBuilder( "Multiple injector factories bound for the same type:\n"); Formatter formatter = new Formatter(errorMessage); duplicates.forEach((injectedType, duplicateFactories) -> { formatter.format(" %s:\n", injectedType); duplicateFactories.forEach(duplicate -> formatter.format(" %s\n", duplicate)); }); diagnosticReporter.reportBinding(ERROR, dispatchingAndroidInjector, errorMessage.toString()); } }
From source file:de.metas.ui.web.window.datatypes.LookupValuesList.java
private static final LookupValuesList build( final ImmutableListMultimap.Builder<Object, LookupValue> valuesByIdBuilder, final Map<String, String> debugProperties) { final ImmutableListMultimap<Object, LookupValue> valuesById = valuesByIdBuilder.build(); if (valuesById.isEmpty() && (debugProperties == null || debugProperties.isEmpty())) { return EMPTY; }//from www .j a v a2 s . c om final LookupValuesList result = new LookupValuesList(valuesById, debugProperties); return result; }
From source file:com.facebook.buck.features.dotnet.CsharpLibrary.java
@Override public ImmutableList<Step> getBuildSteps(BuildContext context, BuildableContext buildableContext) { ProjectFilesystem filesystem = getProjectFilesystem(); ImmutableSortedSet<Path> sourceFiles = context.getSourcePathResolver().getAllAbsolutePaths(srcs); ImmutableListMultimap.Builder<Path, String> resolvedResources = ImmutableListMultimap.builder(); for (Map.Entry<String, SourcePath> resource : resources.entrySet()) { resolvedResources.put(context.getSourcePathResolver().getAbsolutePath(resource.getValue()), resource.getKey());/* www . j ava 2s . com*/ } ImmutableList<Either<Path, String>> references = resolveReferences(context.getSourcePathResolver(), refs); ImmutableList.Builder<Step> steps = ImmutableList.builder(); steps.addAll(MakeCleanDirectoryStep.of(BuildCellRelativePath .fromCellRelativePath(context.getBuildCellRootPath(), getProjectFilesystem(), output.getParent()))); steps.add(new CsharpLibraryCompile(context.getSourcePathResolver(), csharpCompiler, filesystem.resolve(output), sourceFiles, references, resolvedResources.build(), version)); buildableContext.recordArtifact(output); return steps.build(); }
From source file:dk.ilios.spanner.internal.ConsoleOutput.java
/** * Prints a summary of a successful trial result. *//*from w w w .j a v a2s . c o m*/ void processTrial(Trial.Result result) { Trial baseline = result.getExperiment().getBaseline(); trialsCompleted++; stdout.printf("Trial Report (%d of %d):%n Experiment %s%n", trialsCompleted, numberOfTrials, result.getExperiment()); if (!result.getTrialMessages().isEmpty()) { stdout.println(" Messages:"); for (String message : result.getTrialMessages()) { stdout.print(" "); stdout.println(message); } } Trial trial = result.getTrial(); // Group measurements by their description // TODO Why? All measurements for a single trial should have the same description ImmutableListMultimap<String, Measurement> measurementsIndex = new ImmutableListMultimap.Builder<String, Measurement>() .orderKeysBy(Ordering.natural()) .putAll(Multimaps.index(trial.measurements(), new Function<Measurement, String>() { @Override public String apply(Measurement input) { return input.description(); } })).build(); stdout.println(" Results:"); for (Map.Entry<String, Collection<Measurement>> entry : measurementsIndex.asMap().entrySet()) { Collection<Measurement> measurements = entry.getValue(); String unit = measurements.iterator().next().value().unit(); double[] weightedValues = new double[measurements.size()]; int i = 0; for (Measurement measurement : measurements) { weightedValues[i] = measurement.value().magnitude() / measurement.weight(); i++; } Percentile percentile = new Percentile(); percentile.setData(weightedValues); DescriptiveStatistics descriptiveStatistics = new DescriptiveStatistics(weightedValues); stdout.printf(" %s%s: min=%.2f, 1st qu.=%.2f, median=%.2f (%s), mean=%.2f, 3rd qu.=%.2f, max=%.2f%n", entry.getKey(), unit.isEmpty() ? "" : "(" + unit + ")", descriptiveStatistics.getMin(), percentile.evaluate(25), percentile.evaluate(50), calculateDiff(percentile.evaluate(50), baseline), descriptiveStatistics.getMean(), percentile.evaluate(75), descriptiveStatistics.getMax()); } instrumentSpecs.add(trial.instrumentSpec()); Scenario scenario = trial.scenario(); benchmarkSpecs.add(scenario.benchmarkSpec()); numMeasurements += trial.measurements().size(); }
From source file:com.google.caliper.runner.ConsoleOutput.java
/** * Prints a summary of a successful trial result. */// w w w. j a v a2s . co m void processTrial(TrialResult result) { trialsCompleted++; stdout.printf("Trial Report (%d of %d):%n Experiment %s%n", trialsCompleted, numberOfTrials, result.getExperiment()); if (!result.getTrialMessages().isEmpty()) { stdout.println(" Messages:"); for (String message : result.getTrialMessages()) { stdout.print(" "); stdout.println(message); } } Trial trial = result.getTrial(); ImmutableListMultimap<String, Measurement> measurementsIndex = new ImmutableListMultimap.Builder<String, Measurement>() .orderKeysBy(Ordering.natural()) .putAll(Multimaps.index(trial.measurements(), new Function<Measurement, String>() { @Override public String apply(Measurement input) { return input.description(); } })).build(); stdout.println(" Results:"); for (Entry<String, Collection<Measurement>> entry : measurementsIndex.asMap().entrySet()) { Collection<Measurement> measurements = entry.getValue(); ImmutableSet<String> units = FluentIterable.from(measurements) .transform(new Function<Measurement, String>() { @Override public String apply(Measurement input) { return input.value().unit(); } }).toSet(); double[] weightedValues = new double[measurements.size()]; int i = 0; for (Measurement measurement : measurements) { weightedValues[i] = measurement.value().magnitude() / measurement.weight(); i++; } Percentile percentile = new Percentile(); percentile.setData(weightedValues); DescriptiveStatistics descriptiveStatistics = new DescriptiveStatistics(weightedValues); String unit = Iterables.getOnlyElement(units); stdout.printf(" %s%s: min=%.2f, 1st qu.=%.2f, median=%.2f, mean=%.2f, 3rd qu.=%.2f, max=%.2f%n", entry.getKey(), unit.isEmpty() ? "" : "(" + unit + ")", descriptiveStatistics.getMin(), percentile.evaluate(25), percentile.evaluate(50), descriptiveStatistics.getMean(), percentile.evaluate(75), descriptiveStatistics.getMax()); } instrumentSpecs.add(trial.instrumentSpec()); Scenario scenario = trial.scenario(); vmSpecs.add(scenario.vmSpec()); benchmarkSpecs.add(scenario.benchmarkSpec()); numMeasurements += trial.measurements().size(); }
From source file:org.elasticsoftware.elasticactors.cluster.LocalActorRefGroup.java
@Override public ActorRefGroup withMembersRemoved(ActorRef... membersToRemove) { // create a set for faster lookup ImmutableSet<ActorRef> memberToRemoveSet = ImmutableSet.copyOf(membersToRemove); ImmutableListMultimap.Builder<ActorShardRef, ActorRef> newMemberMap = ImmutableListMultimap.builder(); for (Map.Entry<ActorShardRef, ActorRef> entry : this.members.entries()) { if (!memberToRemoveSet.contains(entry.getValue())) { newMemberMap.put(entry.getKey(), entry.getValue()); }// w ww . j av a2s .c o m } return new LocalActorRefGroup(newMemberMap.build()); }
From source file:com.google.auto.factory.processor.AutoFactoryProcessor.java
private void doProcess(Set<? extends TypeElement> annotations, RoundEnvironment roundEnv) { for (Element element : roundEnv.getElementsAnnotatedWith(Provided.class)) { providedChecker.checkProvidedParameter(element); }//from w w w. ja va2 s . c o m ImmutableListMultimap.Builder<String, FactoryMethodDescriptor> indexedMethods = ImmutableListMultimap .builder(); ImmutableSet.Builder<ImplemetationMethodDescriptor> implemetationMethodDescriptors = ImmutableSet.builder(); for (Element element : roundEnv.getElementsAnnotatedWith(AutoFactory.class)) { Optional<AutoFactoryDeclaration> declaration = declarationFactory.createIfValid(element); if (declaration.isPresent()) { TypeElement extendingType = declaration.get().extendingType(); List<ExecutableElement> supertypeMethods = ElementFilter .methodsIn(elements.getAllMembers(extendingType)); for (ExecutableElement supertypeMethod : supertypeMethods) { if (supertypeMethod.getModifiers().contains(Modifier.ABSTRACT)) { ExecutableType methodType = Elements2.getExecutableElementAsMemberOf(types, supertypeMethod, extendingType); implemetationMethodDescriptors .add(new ImplemetationMethodDescriptor.Builder() .name(supertypeMethod.getSimpleName().toString()) .returnType(getAnnotatedType(element).getQualifiedName().toString()) .publicMethod() .passedParameters(Parameter.forParameterList( supertypeMethod.getParameters(), methodType.getParameterTypes())) .build()); } } for (TypeElement implementingType : declaration.get().implementingTypes()) { List<ExecutableElement> interfaceMethods = ElementFilter .methodsIn(elements.getAllMembers(implementingType)); for (ExecutableElement interfaceMethod : interfaceMethods) { if (interfaceMethod.getModifiers().contains(Modifier.ABSTRACT)) { ExecutableType methodType = Elements2.getExecutableElementAsMemberOf(types, interfaceMethod, implementingType); implemetationMethodDescriptors.add(new ImplemetationMethodDescriptor.Builder() .name(interfaceMethod.getSimpleName().toString()) .returnType(getAnnotatedType(element).getQualifiedName().toString()) .publicMethod() .passedParameters(Parameter.forParameterList(interfaceMethod.getParameters(), methodType.getParameterTypes())) .build()); } } } } ImmutableSet<FactoryMethodDescriptor> descriptors = factoryDescriptorGenerator .generateDescriptor(element); indexedMethods.putAll(Multimaps.index(descriptors, new Function<FactoryMethodDescriptor, String>() { @Override public String apply(FactoryMethodDescriptor descriptor) { return descriptor.factoryName(); } })); } for (Entry<String, Collection<FactoryMethodDescriptor>> entry : indexedMethods.build().asMap().entrySet()) { ImmutableSet.Builder<String> extending = ImmutableSet.builder(); ImmutableSortedSet.Builder<String> implementing = ImmutableSortedSet.naturalOrder(); boolean publicType = false; for (FactoryMethodDescriptor methodDescriptor : entry.getValue()) { extending.add(methodDescriptor.declaration().extendingType().getQualifiedName().toString()); for (TypeElement implementingType : methodDescriptor.declaration().implementingTypes()) { implementing.add(implementingType.getQualifiedName().toString()); } publicType |= methodDescriptor.publicMethod(); } try { factoryWriter.writeFactory( new FactoryDescriptor(entry.getKey(), Iterables.getOnlyElement(extending.build()), implementing.build(), publicType, ImmutableSet.copyOf(entry.getValue()), // TODO(gak): this needs to be indexed too implemetationMethodDescriptors.build())); } catch (IOException e) { messager.printMessage(Kind.ERROR, "failed"); } } }
From source file:com.google.api.tools.framework.model.ProtoFile.java
private ProtoFile(Model model, FileDescriptorProto proto, boolean isSource, ExtensionPool extensionPool) { super(null, proto.getName(), PATH); this.model = model; this.isSource = isSource; this.proto = proto; buildChildren(proto.getMessageTypeList(), proto.getEnumTypeList(), PATH, FileDescriptorProto.MESSAGE_TYPE_FIELD_NUMBER, FileDescriptorProto.ENUM_TYPE_FIELD_NUMBER, extensionPool);/*from w ww .j a va 2 s . co m*/ // Build services. ImmutableList.Builder<Interface> interfacesBuilder = ImmutableList.builder(); List<ServiceDescriptorProto> serviceProtos = proto.getServiceList(); for (int i = 0; i < serviceProtos.size(); i++) { String childPath = buildPath(null, FileDescriptorProto.SERVICE_FIELD_NUMBER, i); interfacesBuilder.add(Interface.create(this, serviceProtos.get(i), childPath)); } interfaces = interfacesBuilder.build(); // Build location map ImmutableListMultimap.Builder<String, DescriptorProtos.SourceCodeInfo.Location> builder = ImmutableListMultimap .builder(); for (DescriptorProtos.SourceCodeInfo.Location location : proto.getSourceCodeInfo().getLocationList()) { builder.put(DOT_JOINER.join(location.getPathList()), location); } // Add all extension locations for (Entry<Extension, Field> entry : extensions.entrySet()) { builder.put(entry.getKey().getPath(), entry.getKey().getLocation()); protoToLocation.put(entry.getValue(), entry.getKey().getFileLocation()); } locationMap = builder.build(); // Initialize ProtoFile location. protoToLocation.put(this, new SimpleLocation(proto.getName())); syntax = getProtoSyntax(proto); }
From source file:google.registry.request.RequestModule.java
/** * Provides an immutable representation of the servlet request parameters. * * <p>This performs a shallow copy of the {@code Map<String, String[]>} data structure from the * servlets API, each time this is provided. This is almost certainly less expensive than the * thread synchronization expense of {@link javax.inject.Singleton @Singleton}. * * <p><b>Note:</b> If a parameter is specified without a value, e.g. {@code /foo?lol} then an * empty string value is assumed, since Guava's multimap doesn't permit {@code null} mappings. * * @see HttpServletRequest#getParameterMap() */// www . j a va 2 s.com @Provides @ParameterMap static ImmutableListMultimap<String, String> provideParameterMap(HttpServletRequest req) { ImmutableListMultimap.Builder<String, String> params = new ImmutableListMultimap.Builder<>(); @SuppressWarnings("unchecked") // Safe by specification. Map<String, String[]> original = req.getParameterMap(); for (Map.Entry<String, String[]> param : original.entrySet()) { if (param.getValue().length == 0) { params.put(param.getKey(), ""); } else { params.putAll(param.getKey(), param.getValue()); } } return params.build(); }