Example usage for com.google.common.collect ImmutableListMultimap builder

List of usage examples for com.google.common.collect ImmutableListMultimap builder

Introduction

In this page you can find the example usage for com.google.common.collect ImmutableListMultimap builder.

Prototype

public static <K, V> Builder<K, V> builder() 

Source Link

Document

Returns a new builder.

Usage

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