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

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

Introduction

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

Prototype

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

Source Link

Document

Returns a new Builder .

Usage

From source file:com.google.caliper.runner.options.ParsedOptions.java

@Override
public ImmutableSetMultimap<String, String> vmArguments() {
    // de-dup values, but keep in order
    return new ImmutableSetMultimap.Builder<String, String>().orderKeysBy(Ordering.natural())
            .putAll(mutableVmArguments).build();
}

From source file:dagger.internal.codegen.BasicProcessor.java

/**
 * Returns the valid annotated elements contained in all of the deferred elements. If none are
 * found for a deferred element, defers it again.
 *//*www .  jav  a2s. c o m*/
private ImmutableSetMultimap<Class<? extends Annotation>, Element> validElements(
        ImmutableMap<String, Optional<? extends Element>> deferredElements, RoundEnvironment roundEnv) {
    ImmutableSetMultimap.Builder<Class<? extends Annotation>, Element> deferredElementsByAnnotationBuilder = ImmutableSetMultimap
            .builder();
    for (Entry<String, Optional<? extends Element>> deferredTypeElementEntry : deferredElements.entrySet()) {
        Optional<? extends Element> deferredElement = deferredTypeElementEntry.getValue();
        if (deferredElement.isPresent()) {
            findAnnotatedElements(deferredElement.get(), getSupportedAnnotationClasses(),
                    deferredElementsByAnnotationBuilder);
        } else {
            deferredElementNames.add(ElementName.forTypeName(deferredTypeElementEntry.getKey()));
        }
    }

    ImmutableSetMultimap<Class<? extends Annotation>, Element> deferredElementsByAnnotation = deferredElementsByAnnotationBuilder
            .build();

    ImmutableSetMultimap.Builder<Class<? extends Annotation>, Element> validElements = ImmutableSetMultimap
            .builder();

    Set<ElementName> validElementNames = new LinkedHashSet<ElementName>();

    // Look at the elements we've found and the new elements from this round and validate them.
    for (Class<? extends Annotation> annotationClass : getSupportedAnnotationClasses()) {
        // This should just call roundEnv.getElementsAnnotatedWith(Class) directly, but there is a bug
        // in some versions of eclipse that cause that method to crash.
        TypeElement annotationType = elements.getTypeElement(annotationClass.getCanonicalName());
        Set<? extends Element> elementsAnnotatedWith = (annotationType == null) ? ImmutableSet.<Element>of()
                : roundEnv.getElementsAnnotatedWith(annotationType);
        for (Element annotatedElement : Sets.union(elementsAnnotatedWith,
                deferredElementsByAnnotation.get(annotationClass))) {
            if (annotatedElement.getKind().equals(PACKAGE)) {
                PackageElement annotatedPackageElement = (PackageElement) annotatedElement;
                ElementName annotatedPackageName = ElementName
                        .forPackageName(annotatedPackageElement.getQualifiedName().toString());
                boolean validPackage = validElementNames.contains(annotatedPackageName)
                        || (!deferredElementNames.contains(annotatedPackageName)
                                && validateElement(annotatedPackageElement));
                if (validPackage) {
                    validElements.put(annotationClass, annotatedPackageElement);
                    validElementNames.add(annotatedPackageName);
                } else {
                    deferredElementNames.add(annotatedPackageName);
                }
            } else {
                TypeElement enclosingType = getEnclosingType(annotatedElement);
                ElementName enclosingTypeName = ElementName
                        .forTypeName(enclosingType.getQualifiedName().toString());
                boolean validEnclosingType = validElementNames.contains(enclosingTypeName)
                        || (!deferredElementNames.contains(enclosingTypeName)
                                && validateElement(enclosingType));
                if (validEnclosingType) {
                    validElements.put(annotationClass, annotatedElement);
                    validElementNames.add(enclosingTypeName);
                } else {
                    deferredElementNames.add(enclosingTypeName);
                }
            }
        }
    }

    return validElements.build();
}

From source file:org.apache.sentry.provider.file.SimplePolicyEngine.java

/**
 * {@inheritDoc}/*from   ww w .j a  va 2  s .  c o m*/
 */
@Override
public ImmutableSetMultimap<String, String> getPermissions(List<Authorizable> authorizables,
        List<String> groups) {
    Roles roles = rolesReference.get();
    String database = null;
    Boolean isURI = false;
    for (Authorizable authorizable : authorizables) {
        if (authorizable instanceof Database) {
            database = authorizable.getName();
        }
        if (authorizable instanceof AccessURI) {
            isURI = true;
        }
    }

    if (LOGGER.isDebugEnabled()) {
        LOGGER.debug("Getting permissions for {} via {}", groups, database);
    }
    ImmutableSetMultimap.Builder<String, String> resultBuilder = ImmutableSetMultimap.builder();
    for (String group : groups) {
        resultBuilder.putAll(group, roles.getRoles(database, group, isURI));
    }
    ImmutableSetMultimap<String, String> result = resultBuilder.build();
    if (LOGGER.isDebugEnabled()) {
        LOGGER.debug("result = " + result);
    }
    return result;
}

From source file:com.facebook.buck.android.apkmodule.APKModuleGraph.java

/**
 * Group the classes in the input jars into a multimap based on the APKModule they belong to
 *
 * @param apkModuleToJarPathMap the mapping of APKModules to the path for the jar files
 * @param translatorFunction function used to translate the class names to obfuscated names
 * @param filesystem filesystem representation for resolving paths
 * @return The mapping of APKModules to the class names they contain
 * @throws IOException/*from   w  w  w . ja  va  2  s. com*/
 */
public static ImmutableMultimap<APKModule, String> getAPKModuleToClassesMap(
        ImmutableMultimap<APKModule, Path> apkModuleToJarPathMap, Function<String, String> translatorFunction,
        ProjectFilesystem filesystem) throws IOException {
    ImmutableMultimap.Builder<APKModule, String> builder = ImmutableSetMultimap.builder();
    if (!apkModuleToJarPathMap.isEmpty()) {
        for (APKModule dexStore : apkModuleToJarPathMap.keySet()) {
            for (Path jarFilePath : apkModuleToJarPathMap.get(dexStore)) {
                ClasspathTraverser classpathTraverser = new DefaultClasspathTraverser();
                classpathTraverser.traverse(new ClasspathTraversal(ImmutableSet.of(jarFilePath), filesystem) {
                    @Override
                    public void visit(FileLike entry) {
                        if (!entry.getRelativePath().endsWith(".class")) {
                            // ignore everything but class files in the jar.
                            return;
                        }

                        String classpath = entry.getRelativePath().replaceAll("\\.class$", "");

                        if (translatorFunction.apply(classpath) != null) {
                            builder.put(dexStore, translatorFunction.apply(classpath));
                        }
                    }
                });
            }
        }
    }
    return builder.build();
}

From source file:org.onosproject.store.topology.impl.DefaultTopology.java

private ImmutableSetMultimap<ClusterId, ConnectPoint> buildBroadcastSets() {
    Builder<ClusterId, ConnectPoint> builder = ImmutableSetMultimap.builder();
    for (TopologyCluster cluster : clusters.get().values()) {
        addClusterBroadcastSet(cluster, builder);
    }/*from   www . j  a v  a2 s . c  o  m*/
    return builder.build();
}

From source file:uk.ac.ebi.atlas.bioentity.BioEntityPageController.java

protected ImmutableSetMultimap<Integer, GoPoTerm> mapGoTermsByDepth(Set<String> accessions) {
    ImmutableSetMultimap.Builder<Integer, GoPoTerm> builder = new ImmutableSetMultimap.Builder<>();

    for (String accession : accessions) {
        builder.put(goTermTrader.getDepth(accession), goTermTrader.getTerm(accession));
    }// www  .ja v a  2s.  co  m

    return builder.build();
}

From source file:uk.ac.ebi.atlas.bioentity.BioEntityPageController.java

protected ImmutableSetMultimap<Integer, GoPoTerm> mapPoTermsByDepth(Set<String> accessions) {
    ImmutableSetMultimap.Builder<Integer, GoPoTerm> builder = new ImmutableSetMultimap.Builder<>();

    for (String accession : accessions) {
        builder.put(poTermTrader.getDepth(accession), poTermTrader.getTerm(accession));
    }//from  w w  w  . j a va 2s  . co  m

    return builder.build();
}

From source file:com.publictransitanalytics.scoregenerator.workflow.Calculation.java

private static SetMultimap<PointLocation, Sector> buildPointSectorMap(final Grid grid,
        final Set<TransitStop> stops) {
    final ImmutableSetMultimap.Builder<PointLocation, Sector> builder = ImmutableSetMultimap.builder();

    for (final PointLocation gridPoint : grid.getGridPoints()) {
        builder.putAll(gridPoint, grid.getSectors(gridPoint));
    }//from  w ww  . ja v a2s .  c  o  m
    for (final TransitStop stop : stops) {
        if (grid.coversPoint(stop.getLocation())) {
            final Set<Sector> sectors = grid.getSectors(stop);
            if (sectors.isEmpty()) {
                log.warn("{} ({}) is not within the bounds.", stop.getCommonName(),
                        stop.getLocation().toDegreeString());
            } else {
                builder.putAll(stop, sectors);
            }
        }
    }
    return builder.build();
}

From source file:com.example.processor.common.BasicAnnotationProcessor.java

/** Processes the valid elements, including those previously deferred by each step. */
private void process(ImmutableSetMultimap<Class<? extends Annotation>, Element> validElements) {
    for (ProcessingStep step : steps) {
        ImmutableSetMultimap<Class<? extends Annotation>, Element> stepElements = new ImmutableSetMultimap.Builder<Class<? extends Annotation>, Element>()
                .putAll(indexByAnnotation(elementsDeferredBySteps.get(step)))
                .putAll(filterKeys(validElements, Predicates.<Object>in(step.annotations()))).build();
        if (stepElements.isEmpty()) {
            elementsDeferredBySteps.removeAll(step);
        } else {//from  w  w  w . java 2 s.  c om
            Set<Element> rejectedElements = step.process(stepElements);
            elementsDeferredBySteps.replaceValues(step,
                    transform(rejectedElements, new Function<Element, ElementName>() {
                        @Override
                        public ElementName apply(Element element) {
                            return ElementName.forAnnotatedElement(element);
                        }
                    }));
        }
    }
}

From source file:org.onosproject.store.topology.impl.DefaultTopology.java

private ClusterIndexes buildIndexes() {
    // Prepare the index builders
    ImmutableMap.Builder<DeviceId, TopologyCluster> clusterBuilder = ImmutableMap.builder();
    ImmutableSetMultimap.Builder<TopologyCluster, DeviceId> devicesBuilder = ImmutableSetMultimap.builder();
    ImmutableSetMultimap.Builder<TopologyCluster, Link> linksBuilder = ImmutableSetMultimap.builder();

    // Now scan through all the clusters
    for (TopologyCluster cluster : clusters.get().values()) {
        int i = cluster.id().index();

        // Scan through all the cluster vertexes.
        for (TopologyVertex vertex : clusterResults.get().clusterVertexes().get(i)) {
            devicesBuilder.put(cluster, vertex.deviceId());
            clusterBuilder.put(vertex.deviceId(), cluster);
        }//from   www.ja v a2 s .  com

        // Scan through all the cluster edges.
        for (TopologyEdge edge : clusterResults.get().clusterEdges().get(i)) {
            linksBuilder.put(cluster, edge.link());
        }
    }

    // Finalize all indexes.
    return new ClusterIndexes(clusterBuilder.build(), devicesBuilder.build(), linksBuilder.build());
}