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.facebook.presto.sql.planner.iterative.rule.PushProjectionThroughUnion.java

@Override
public Optional<PlanNode> apply(PlanNode node, Lookup lookup, PlanNodeIdAllocator idAllocator,
        SymbolAllocator symbolAllocator, Session session) {
    if (!(node instanceof ProjectNode)) {
        return Optional.empty();
    }//from ww w  . j a  v  a2  s  .c om

    ProjectNode parent = (ProjectNode) node;

    PlanNode child = lookup.resolve(parent.getSource());
    if (!(child instanceof UnionNode)) {
        return Optional.empty();
    }

    UnionNode source = (UnionNode) child;

    // OutputLayout of the resultant Union, will be same as the layout of the Project
    List<Symbol> outputLayout = node.getOutputSymbols();

    // Mapping from the output symbol to ordered list of symbols from each of the sources
    ImmutableListMultimap.Builder<Symbol, Symbol> mappings = ImmutableListMultimap.builder();

    // sources for the resultant UnionNode
    ImmutableList.Builder<PlanNode> outputSources = ImmutableList.builder();

    for (int i = 0; i < child.getSources().size(); i++) {
        Map<Symbol, SymbolReference> outputToInput = source.sourceSymbolMap(i); // Map: output of union -> input of this source to the union
        Assignments.Builder assignments = Assignments.builder(); // assignments for the new ProjectNode

        // mapping from current ProjectNode to new ProjectNode, used to identify the output layout
        Map<Symbol, Symbol> projectSymbolMapping = new HashMap<>();

        // Translate the assignments in the ProjectNode using symbols of the source of the UnionNode
        for (Map.Entry<Symbol, Expression> entry : parent.getAssignments().entrySet()) {
            Expression translatedExpression = translateExpression(entry.getValue(), outputToInput);
            Type type = symbolAllocator.getTypes().get(entry.getKey());
            Symbol symbol = symbolAllocator.newSymbol(translatedExpression, type);
            assignments.put(symbol, translatedExpression);
            projectSymbolMapping.put(entry.getKey(), symbol);
        }
        outputSources
                .add(new ProjectNode(idAllocator.getNextId(), source.getSources().get(i), assignments.build()));
        outputLayout.forEach(symbol -> mappings.put(symbol, projectSymbolMapping.get(symbol)));
    }

    return Optional.of(new UnionNode(node.getId(), outputSources.build(), mappings.build(),
            ImmutableList.copyOf(mappings.build().keySet())));
}

From source file:com.google.api.server.spi.MethodHierarchyReader.java

private void readMethodHierarchyIfNecessary() {
    if (endpointMethods == null) {
        ImmutableListMultimap.Builder<EndpointMethod.ResolvedSignature, EndpointMethod> builder = ImmutableListMultimap
                .builder();/*from   www  .ja  v  a2s  .  c  om*/
        buildServiceMethods(builder, TypeToken.of(endpointClass));
        endpointMethods = builder.build();
    }
}

From source file:de.metas.ui.web.menu.MenuTree.java

private MenuTree(final long version, final MenuNode rootNode) {
    super();/*from   ww w .  ja  va 2s .c om*/
    this.version = version;
    Preconditions.checkNotNull(rootNode, "rootNode");
    this.rootNode = rootNode;

    final ImmutableMap.Builder<String, MenuNode> nodesByIdBuilder = ImmutableMap.builder();
    final ImmutableListMultimap.Builder<ArrayKey, MenuNode> nodesByTypeAndElementIdBuilder = ImmutableListMultimap
            .builder();
    final ImmutableListMultimap.Builder<String, MenuNode> nodesByMainTableNameBuilder = ImmutableListMultimap
            .builder();
    rootNode.iterate(node -> {
        nodesByIdBuilder.put(node.getId(), node);
        nodesByTypeAndElementIdBuilder.put(mkTypeAndElementIdKey(node.getType(), node.getElementId()), node);

        final String mainTableName = node.getMainTableName();
        if (mainTableName != null) {
            nodesByMainTableNameBuilder.put(mainTableName, node);
        }
    });
    nodesById = nodesByIdBuilder.build();
    nodesByTypeAndElementId = nodesByTypeAndElementIdBuilder.build();
    nodesByMainTableName = nodesByMainTableNameBuilder.build();
}

From source file:com.isotrol.impe3.web20.server.TagMap.java

TagMap(Builder builder) {
    final ImmutableListMultimap.Builder<Long, UsedTagDTO> b = ImmutableListMultimap.builder();
    for (Long setId : builder.used.keySet()) {
        b.putAll(setId, COMPOUND.sortedCopy(builder.used.get(setId)));
    }/*from  w w  w  .  j a v  a2  s .  com*/
    this.map = b.build();
    this.tagMap = builder.countMap.build();
}

From source file:com.github.nmorel.gwtjackson.guava.client.deser.ImmutableListMultimapJsonDeserializer.java

@Override
protected ImmutableListMultimap<K, V> doDeserialize(JsonReader reader, JsonDeserializationContext ctx,
        JsonDeserializerParameters params) {
    ImmutableListMultimap.Builder<K, V> builder = ImmutableListMultimap.builder();
    buildMultimap(reader, ctx, params, builder);
    return builder.build();
}

From source file:org.nmdp.service.epitope.service.EpitopeServiceImpl.java

public void buildMaps() {
    ImmutableListMultimap.Builder<Integer, Allele> builder = ImmutableListMultimap.builder();
    builder.orderKeysBy(Ordering.natural());
    builder.orderValuesBy(new Comparator<Allele>() {
        @Override//from w  w w .  j a  v a2  s .c o m
        public int compare(Allele o1, Allele o2) {
            return o1.getGlstring().compareTo(o2.getGlstring());
        }
    });
    for (int i = 0; i <= 3; i++) {
        Integer group = i;
        List<Allele> alleles = groupResolver.apply(group);
        if (null == alleles) {
            throw new IllegalStateException("failed to resolve alleles in group: " + group);
        }
        for (Allele allele : alleles)
            builder.put(group, allele);
    }
    groupAlleleMap = builder.build();
    alleleGroupMap = groupAlleleMap.inverse();
}

From source file:com.facebook.buck.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());// ww w  .  j a  v  a2s.  c om
    }

    ImmutableList<Either<Path, String>> references = resolveReferences(refs);

    ImmutableList.Builder<Step> steps = ImmutableList.builder();

    steps.add(new MakeCleanDirectoryStep(filesystem, output.getParent()));
    steps.add(new CsharpLibraryCompile(filesystem.resolve(output), sourceFiles, references,
            resolvedResources.build(), version));

    return steps.build();
}

From source file:com.isotrol.impe3.oi.server.ClassMap.java

ClassMap(Builder builder) {
    final ImmutableListMultimap.Builder<Long, UsedClassDTO> b = ImmutableListMultimap.builder();
    for (Long setId : builder.used.keySet()) {
        b.putAll(setId, COMPOUND.sortedCopy(builder.used.get(setId)));
    }/* www.j  a va2  s  .c  o m*/
    this.map = b.build();
    this.classMap = builder.countMap.build();
}

From source file:com.google.gerrit.server.change.AbandonUtil.java

public void abandonInactiveOpenChanges() {
    if (cfg.getAbandonAfter() <= 0) {
        return;//  www. j av a 2  s. c o m
    }

    try {
        String query = "status:new age:" + TimeUnit.MILLISECONDS.toMinutes(cfg.getAbandonAfter()) + "m";
        if (!cfg.getAbandonIfMergeable()) {
            query += " -is:mergeable";
        }

        List<ChangeData> changesToAbandon = queryProcessor.enforceVisibility(false)
                .query(queryBuilder.parse(query)).entities();
        ImmutableListMultimap.Builder<Project.NameKey, ChangeControl> builder = ImmutableListMultimap.builder();
        for (ChangeData cd : changesToAbandon) {
            ChangeControl control = cd.changeControl(internalUser);
            builder.put(control.getProject().getNameKey(), control);
        }

        int count = 0;
        ListMultimap<Project.NameKey, ChangeControl> abandons = builder.build();
        String message = cfg.getAbandonMessage();
        for (Project.NameKey project : abandons.keySet()) {
            Collection<ChangeControl> changes = getValidChanges(abandons.get(project), query);
            try {
                abandon.batchAbandon(project, internalUser, changes, message);
                count += changes.size();
            } catch (Throwable e) {
                StringBuilder msg = new StringBuilder("Failed to auto-abandon inactive change(s):");
                for (ChangeControl change : changes) {
                    msg.append(" ").append(change.getId().get());
                }
                msg.append(".");
                log.error(msg.toString(), e);
            }
        }
        log.info(String.format("Auto-Abandoned %d of %d changes.", count, changesToAbandon.size()));
    } catch (QueryParseException | OrmException e) {
        log.error("Failed to query inactive open changes for auto-abandoning.", e);
    }
}

From source file:com.facebook.presto.sql.planner.iterative.rule.PushTableWriteThroughUnion.java

@Override
public Result apply(TableWriterNode tableWriterNode, Captures captures, Context context) {
    UnionNode unionNode = captures.get(CHILD);
    ImmutableList.Builder<PlanNode> rewrittenSources = ImmutableList.builder();
    ImmutableListMultimap.Builder<Symbol, Symbol> mappings = ImmutableListMultimap.builder();
    for (int i = 0; i < unionNode.getSources().size(); i++) {
        int index = i;
        ImmutableList.Builder<Symbol> newSymbols = ImmutableList.builder();
        for (Symbol outputSymbol : tableWriterNode.getOutputSymbols()) {
            Symbol newSymbol = context.getSymbolAllocator().newSymbol(outputSymbol);
            newSymbols.add(newSymbol);/*w w w.  ja  va  2  s.c  om*/
            mappings.put(outputSymbol, newSymbol);
        }
        rewrittenSources.add(new TableWriterNode(context.getIdAllocator().getNextId(),
                unionNode.getSources().get(index), tableWriterNode.getTarget(),
                tableWriterNode.getColumns().stream()
                        .map(column -> unionNode.getSymbolMapping().get(column).get(index))
                        .collect(toImmutableList()),
                tableWriterNode.getColumnNames(), newSymbols.build(), tableWriterNode.getPartitioningScheme()));
    }

    return Result.ofPlanNode(new UnionNode(context.getIdAllocator().getNextId(), rewrittenSources.build(),
            mappings.build(), ImmutableList.copyOf(mappings.build().keySet())));
}