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:zipkin.storage.cassandra.Indexer.java

ImmutableSet<ListenableFuture<?>> index(List<Span> spans) {
    // First parse each span into partition keys used to support query requests
    Builder<PartitionKeyToTraceId, Long> parsed = ImmutableSetMultimap.builder();
    for (Span span : spans) {
        Long timestamp = guessTimestamp(span);
        if (timestamp == null)
            continue;
        for (String partitionKey : index.partitionKeys(span)) {
            parsed.put(new PartitionKeyToTraceId(index.table(), partitionKey, span.traceId),
                    1000 * (timestamp / 1000)); // index precision is millis
        }/*from   w ww  .  j  ava2 s .c o  m*/
    }

    // The parsed results may include inserts that already occur, or are redundant as they don't
    // impact QueryRequest.endTs or QueryRequest.loopback. For example, a parsed timestamp could
    // be between timestamps of rows that already exist for a particular trace.
    ImmutableSetMultimap<PartitionKeyToTraceId, Long> maybeInsert = parsed.build();

    ImmutableSetMultimap<PartitionKeyToTraceId, Long> toInsert;
    if (sharedState == null) { // special-case when caching is disabled.
        toInsert = maybeInsert;
    } else {
        // Optimized results will be smaller when the input includes traces with local spans, or when
        // other threads indexed the same trace.
        toInsert = entriesThatIncreaseGap(sharedState, maybeInsert);

        if (maybeInsert.size() > toInsert.size() && LOG.isDebugEnabled()) {
            int delta = maybeInsert.size() - toInsert.size();
            LOG.debug("optimized out {}/{} inserts into {}", delta, maybeInsert.size(), index.table());
        }
    }

    // For each entry, insert a new row in the index table asynchronously
    ImmutableSet.Builder<ListenableFuture<?>> result = ImmutableSet.builder();
    for (Map.Entry<PartitionKeyToTraceId, Long> entry : toInsert.entries()) {
        BoundStatement bound = bindWithName(prepared, boundName).setLong("trace_id", entry.getKey().traceId)
                .setBytesUnsafe("ts", timestampCodec.serialize(entry.getValue()));
        if (indexTtl != null) {
            bound.setInt("ttl_", indexTtl);
        }
        index.bindPartitionKey(bound, entry.getKey().partitionKey);
        result.add(session.executeAsync(bound));
    }
    return result.build();
}

From source file:uk.ac.ebi.atlas.search.baseline.BaselineExperimentAssayGroupsDao.java

public SetMultimap<String, String> fetchExperimentAssayGroupsWithNonSpecificExpression(
        Optional<? extends Collection<IndexedAssayGroup>> indexedAssayGroups,
        Optional<? extends Collection<String>> geneIds) {
    if (isEmpty(indexedAssayGroups) && isEmpty(geneIds)) {
        return ImmutableSetMultimap.<String, String>builder().build();
    }/* w  ww  .  j a  v a  2s .c  o m*/

    Optional<ImmutableSet<IndexedAssayGroup>> uniqueIndexedAssayGroups = uniqueIndexedContrasts(
            indexedAssayGroups);

    log("fetchExperimentAssayGroupsWithNonSpecificExpression", uniqueIndexedAssayGroups, geneIds);

    Stopwatch stopwatch = Stopwatch.createStarted();

    DatabaseQuery<Object> baselineExpressionQuery = buildSelect(uniqueIndexedAssayGroups, geneIds);

    try {
        SetMultimap<String, String> results = jdbcTemplate.query(baselineExpressionQuery.getQuery(),
                baselineExpressionQuery.getParameters().toArray(),
                new ResultSetExtractor<SetMultimap<String, String>>() {
                    @Override
                    public SetMultimap<String, String> extractData(ResultSet rs)
                            throws SQLException, DataAccessException {

                        ImmutableSetMultimap.Builder<String, String> builder = ImmutableSetMultimap.builder();

                        while (rs.next()) {
                            String experimentAccession = rs.getString("experiment");
                            String assayGroupId = rs.getString("assaygroupid");

                            builder.put(experimentAccession, assayGroupId);
                        }

                        return builder.build();
                    }
                });

        stopwatch.stop();

        LOGGER.debug(String.format(
                "fetchExperimentAssayGroupsWithNonSpecificExpression returned %s results in %.2f seconds",
                results.size(), stopwatch.elapsed(TimeUnit.MILLISECONDS) / 1000D));

        return results;

    } catch (Exception e) {
        LOGGER.error(e.getMessage(), e);
        throw e;
    }

}

From source file:com.google.copybara.git.Mirror.java

@Override
public ImmutableSetMultimap<String, String> getDestinationDescription() {
    return new ImmutableSetMultimap.Builder<String, String>().put("url", destination)
            .putAll("ref", refspec.stream().map(Refspec::toString).collect(Collectors.toList())).build();
}

From source file:com.facebook.buck.java.PrebuiltJar.java

PrebuiltJar(BuildRuleParams buildRuleParams, Path classesJar, Optional<Path> sourceJar,
        Optional<String> javadocUrl) {
    this.target = buildRuleParams.getBuildTarget();
    this.deps = buildRuleParams.getDeps();

    this.binaryJar = Preconditions.checkNotNull(classesJar);
    this.sourceJar = Preconditions.checkNotNull(sourceJar);
    this.javadocUrl = Preconditions.checkNotNull(javadocUrl);

    transitiveClasspathEntriesSupplier = Suppliers
            .memoize(new Supplier<ImmutableSetMultimap<JavaLibrary, Path>>() {
                @Override/*  w  w w . j a  v a 2s  . c om*/
                public ImmutableSetMultimap<JavaLibrary, Path> get() {
                    ImmutableSetMultimap.Builder<JavaLibrary, Path> classpathEntries = ImmutableSetMultimap
                            .builder();
                    classpathEntries.put(PrebuiltJar.this, getBinaryJar());
                    classpathEntries.putAll(Classpaths.getClasspathEntries(deps));
                    return classpathEntries.build();
                }
            });

    declaredClasspathEntriesSupplier = Suppliers
            .memoize(new Supplier<ImmutableSetMultimap<JavaLibrary, Path>>() {
                @Override
                public ImmutableSetMultimap<JavaLibrary, Path> get() {
                    ImmutableSetMultimap.Builder<JavaLibrary, Path> classpathEntries = ImmutableSetMultimap
                            .builder();
                    classpathEntries.put(PrebuiltJar.this, getBinaryJar());
                    return classpathEntries.build();
                }
            });

    buildOutputInitializer = new BuildOutputInitializer<>(buildRuleParams.getBuildTarget(), this);
}

From source file:io.prestosql.sql.planner.EqualityInference.java

private EqualityInference(Iterable<Set<Expression>> equalityGroups, Set<Expression> derivedExpressions) {
    ImmutableSetMultimap.Builder<Expression, Expression> setBuilder = ImmutableSetMultimap.builder();
    for (Set<Expression> equalityGroup : equalityGroups) {
        if (!equalityGroup.isEmpty()) {
            setBuilder.putAll(CANONICAL_ORDERING.min(equalityGroup), equalityGroup);
        }//w ww . ja v  a 2  s. c  om
    }
    equalitySets = setBuilder.build();

    ImmutableMap.Builder<Expression, Expression> mapBuilder = ImmutableMap.builder();
    for (Map.Entry<Expression, Expression> entry : equalitySets.entries()) {
        Expression canonical = entry.getKey();
        Expression expression = entry.getValue();
        mapBuilder.put(expression, canonical);
    }
    canonicalMap = mapBuilder.build();

    this.derivedExpressions = ImmutableSet.copyOf(derivedExpressions);
}

From source file:com.facebook.presto.sql.planner.EqualityInference.java

private EqualityInference(Iterable<Set<Expression>> equalityGroups) {
    ImmutableSetMultimap.Builder<Expression, Expression> setBuilder = ImmutableSetMultimap.builder();
    for (Set<Expression> equalityGroup : equalityGroups) {
        if (!equalityGroup.isEmpty()) {
            setBuilder.putAll(CANONICAL_ORDERING.min(equalityGroup), equalityGroup);
        }/*from  w  ww.  j a  v a 2 s  . co m*/
    }
    equalitySets = setBuilder.build();

    ImmutableMap.Builder<Expression, Expression> mapBuilder = ImmutableMap.builder();
    for (Map.Entry<Expression, Expression> entry : equalitySets.entries()) {
        Expression canonical = entry.getKey();
        Expression expression = entry.getValue();
        mapBuilder.put(expression, canonical);
    }
    canonicalMap = mapBuilder.build();
}

From source file:omero.cmd.graphs.GraphRequestFactory.java

/**
 * Construct a new graph request factory.
 * @param aclVoter ACL voter for permissions checking
 * @param securityRoles the security roles
 * @param systemTypes for identifying the system types
 * @param graphPathBean the graph path bean
 * @param deletionInstance a deletion instance for deleting files
 * @param allTargets legal target object classes for all request classes that use the graph path bean
 * @param allRules rules for all request classes that use the graph path bean
 * @param unnullable properties that, while nullable, may not be nulled by a graph traversal operation
 * @param defaultExcludeNs the default value for an unset excludeNs field
 * @throws GraphException if the graph path rules could not be parsed
 *///w  ww. j a  v a 2 s  .co  m
public GraphRequestFactory(ACLVoter aclVoter, Roles securityRoles, SystemTypes systemTypes,
        GraphPathBean graphPathBean, Deletion deletionInstance,
        Map<Class<? extends Request>, List<String>> allTargets,
        Map<Class<? extends Request>, List<GraphPolicyRule>> allRules, List<String> unnullable,
        Set<String> defaultExcludeNs) throws GraphException {
    this.aclVoter = aclVoter;
    this.securityRoles = securityRoles;
    this.systemTypes = systemTypes;
    this.graphPathBean = graphPathBean;
    this.deletionInstance = deletionInstance;

    final ImmutableSetMultimap.Builder<Class<? extends Request>, Class<? extends IObject>> allTargetsBuilder = ImmutableSetMultimap
            .builder();
    for (final Map.Entry<Class<? extends Request>, List<String>> rules : allTargets.entrySet()) {
        final Class<? extends Request> requestClass = rules.getKey();
        for (final String targetClassName : rules.getValue()) {
            allTargetsBuilder.put(requestClass, graphPathBean.getClassForSimpleName(targetClassName));
        }
    }
    this.allTargets = allTargetsBuilder.build();

    final ImmutableMap.Builder<Class<? extends Request>, GraphPolicy> graphPoliciesBuilder = ImmutableMap
            .builder();
    for (final Map.Entry<Class<? extends Request>, List<GraphPolicyRule>> rules : allRules.entrySet()) {
        graphPoliciesBuilder.put(rules.getKey(), GraphPolicyRule.parseRules(graphPathBean, rules.getValue()));
    }
    this.graphPolicies = graphPoliciesBuilder.build();

    final ImmutableSetMultimap.Builder<String, String> unnullableBuilder = ImmutableSetMultimap.builder();
    for (final String classProperty : unnullable) {
        final int period = classProperty.indexOf('.');
        final String classNameSimple = classProperty.substring(0, period);
        final String property = classProperty.substring(period + 1);
        final String classNameFull = graphPathBean.getClassForSimpleName(classNameSimple).getName();
        unnullableBuilder.put(classNameFull, property);
    }
    this.unnullable = unnullableBuilder.build();

    this.defaultExcludeNs = ImmutableSet.copyOf(defaultExcludeNs);
}

From source file:org.sonar.server.rule.RuleRepositories.java

void register(RulesDefinition.Context context) {
    ImmutableSortedSet.Builder<Repository> listBuilder = ImmutableSortedSet.naturalOrder();
    ImmutableSetMultimap.Builder<String, Repository> langBuilder = ImmutableSetMultimap.builder();
    ImmutableMap.Builder<String, Repository> keyBuilder = ImmutableMap.builder();
    for (RulesDefinition.Repository repoDef : context.repositories()) {
        Repository repository = new Repository(repoDef);
        listBuilder.add(repository);// w ww  .j a v  a 2 s. c o m
        langBuilder.put(repository.language(), repository);
        keyBuilder.put(repository.key(), repository);
    }
    repositories = listBuilder.build();
    repositoriesByLang = langBuilder.build();
    repositoriesByKey = keyBuilder.build();
}

From source file:com.facebook.presto.metadata.DiscoveryNodeManager.java

private synchronized PrestoNode refreshNodesInternal() {
    lastUpdateTimestamp = System.nanoTime();

    // This is currently a blacklist.
    // TODO: make it a whitelist (a failure-detecting service selector) and maybe build in support for injecting this in airlift
    Set<ServiceDescriptor> services = serviceSelector.selectAllServices().stream()
            .filter(service -> !failureDetector.getFailed().contains(service)).collect(toImmutableSet());

    PrestoNode currentNode = null;/*from  w ww .ja va2 s  .  c o m*/

    ImmutableSet.Builder<Node> activeNodesBuilder = ImmutableSet.builder();
    ImmutableSet.Builder<Node> inactiveNodesBuilder = ImmutableSet.builder();
    ImmutableSet.Builder<Node> coordinatorsBuilder = ImmutableSet.builder();
    ImmutableSetMultimap.Builder<String, Node> byDataSourceBuilder = ImmutableSetMultimap.builder();

    for (ServiceDescriptor service : services) {
        URI uri = getHttpUri(service);
        NodeVersion nodeVersion = getNodeVersion(service);
        if (uri != null && nodeVersion != null) {
            PrestoNode node = new PrestoNode(service.getNodeId(), uri, nodeVersion);

            // record current node
            if (node.getNodeIdentifier().equals(nodeInfo.getNodeId())) {
                currentNode = node;
                checkState(currentNode.getNodeVersion().equals(expectedNodeVersion),
                        "INVARIANT: current node version should be equal to expected node version");
            }

            if (isActive(node)) {
                activeNodesBuilder.add(node);
                if (Boolean.parseBoolean(service.getProperties().get("coordinator"))) {
                    coordinatorsBuilder.add(node);
                }

                // record available active nodes organized by data source
                String dataSources = service.getProperties().get("datasources");
                if (dataSources != null) {
                    dataSources = dataSources.toLowerCase(ENGLISH);
                    for (String dataSource : DATASOURCES_SPLITTER.split(dataSources)) {
                        byDataSourceBuilder.put(dataSource, node);
                    }
                }

                // always add system data source
                byDataSourceBuilder.put(SystemConnector.NAME, node);
            } else {
                inactiveNodesBuilder.add(node);
            }
        }
    }

    allNodes = new AllNodes(activeNodesBuilder.build(), inactiveNodesBuilder.build());
    activeNodesByDataSource = byDataSourceBuilder.build();
    coordinators = coordinatorsBuilder.build();

    checkState(currentNode != null, "INVARIANT: current node not returned from service selector");
    return currentNode;
}

From source file:com.facebook.buck.java.PrebuiltJarRule.java

PrebuiltJarRule(BuildRuleParams buildRuleParams, String classesJar, Optional<String> sourceJar,
        Optional<String> javadocUrl) {
    super(buildRuleParams);
    this.binaryJar = Preconditions.checkNotNull(classesJar);
    this.sourceJar = Preconditions.checkNotNull(sourceJar);
    this.javadocUrl = Preconditions.checkNotNull(javadocUrl);

    transitiveClasspathEntriesSupplier = Suppliers
            .memoize(new Supplier<ImmutableSetMultimap<JavaLibraryRule, String>>() {
                @Override//w  w  w  .j av  a2s  . com
                public ImmutableSetMultimap<JavaLibraryRule, String> get() {
                    ImmutableSetMultimap.Builder<JavaLibraryRule, String> classpathEntries = ImmutableSetMultimap
                            .builder();
                    classpathEntries.put(PrebuiltJarRule.this, getBinaryJar());
                    classpathEntries.putAll(Classpaths.getClasspathEntries(getDeps()));
                    return classpathEntries.build();
                }
            });

    declaredClasspathEntriesSupplier = Suppliers
            .memoize(new Supplier<ImmutableSetMultimap<JavaLibraryRule, String>>() {
                @Override
                public ImmutableSetMultimap<JavaLibraryRule, String> get() {
                    ImmutableSetMultimap.Builder<JavaLibraryRule, String> classpathEntries = ImmutableSetMultimap
                            .builder();
                    classpathEntries.put(PrebuiltJarRule.this, getBinaryJar());
                    return classpathEntries.build();
                }
            });
}