Example usage for com.google.common.collect Multimaps index

List of usage examples for com.google.common.collect Multimaps index

Introduction

In this page you can find the example usage for com.google.common.collect Multimaps index.

Prototype

public static <K, V> ImmutableListMultimap<K, V> index(Iterator<V> values, Function<? super V, K> keyFunction) 

Source Link

Document

Creates an index ImmutableListMultimap that contains the results of applying a specified function to each item in an Iterator of values.

Usage

From source file:org.opentestsystem.authoring.testauth.service.impl.ItemMetadataKeysServiceImpl.java

@Override
public void loadTibItemImportIntoItemMetadataKeys(final String assessmentId, final List<TibItem> tibItemList) {
    checkForLockedAssessment(assessmentId);
    final Set<String> metadataKeys = Sets
            .newHashSet(Iterables.concat(Multimaps.index(tibItemList, TIBITEM_METADATA_KEYS).asMap().keySet()));
    ItemMetadataKeys itemMetadataKeys = getItemMetadataKeysByAssessment(assessmentId);
    if (itemMetadataKeys == null) {
        itemMetadataKeys = new ItemMetadataKeys();
        itemMetadataKeys.setAssessmentId(assessmentId);
        itemMetadataKeys.setItemMetadataKeys(metadataKeys);
    } else {/*from  www .  java  2 s. com*/
        itemMetadataKeys.getItemMetadataKeys().addAll(metadataKeys);
    }
    try {
        this.itemMetadataKeysRepository.save(itemMetadataKeys);
    } catch (final DuplicateKeyException dke) {
        throw new LocalizedException("itemMetadataKeys.already.exists", new String[] {}, dke);
    }
}

From source file:com.twitter.aurora.scheduler.http.Maintenance.java

@GET
@Produces(MediaType.APPLICATION_JSON)/*from   ww w  .  j  a va  2  s . c om*/
public Response getHosts() {
    return storage.weaklyConsistentRead(new Work.Quiet<Response>() {
        @Override
        public Response apply(StoreProvider storeProvider) {
            Multimap<MaintenanceMode, String> hostsByMode = Multimaps.transformValues(
                    Multimaps.index(storeProvider.getAttributeStore().getHostAttributes(), GET_MODE),
                    HOST_NAME);

            Map<MaintenanceMode, Object> hosts = Maps.newHashMap();
            hosts.put(DRAINED, ImmutableSet.copyOf(hostsByMode.get(DRAINED)));
            hosts.put(SCHEDULED, ImmutableSet.copyOf(hostsByMode.get(SCHEDULED)));
            hosts.put(DRAINING, getTasksByHosts(storeProvider, hostsByMode.get(DRAINING)).asMap());
            return Response.ok(hosts).build();
        }
    });
}

From source file:springfox.documentation.spring.web.plugins.DefaultRequestHandlerCombiner.java

private Collection<? extends RequestHandler> combined(Collection<RequestHandler> requestHandlers) {
    List<RequestHandler> source = newArrayList(requestHandlers);
    if (source.size() == 0 || source.size() == 1) {
        return requestHandlers;
    }/*ww w .j a  v a2 s .c om*/
    ListMultimap<Equivalence.Wrapper<RequestHandler>, RequestHandler> groupByEquality = Multimaps.index(source,
            equivalenceAsKey());
    List<RequestHandler> combined = newArrayList();
    for (Equivalence.Wrapper<RequestHandler> path : groupByEquality.keySet()) {
        List<RequestHandler> handlers = groupByEquality.get(path);

        RequestHandler toCombine = path.get();
        if (handlers.size() > 1) {
            for (RequestHandler each : handlers) {
                toCombine = combine(toCombine, each);
            }
        }
        combined.add(toCombine);
    }
    return combined;
}

From source file:com.b2international.snowowl.snomed.datastore.converter.MembersExpander.java

void expand(List<? extends SnomedCoreComponent> results, Set<String> componentIds) {
    if (expand.containsKey("members")) {
        final Options membersOptions = expand.get("members", Options.class);
        // TODO support limit, offset, filtering, selection
        final SnomedReferenceSetMembers matchingMembers = SnomedRequests.prepareSearchMember().all()
                .filterByReferencedComponent(componentIds).setLocales(locales)
                .setExpand(membersOptions.get("expand", Options.class)).build().execute(context);
        final Multimap<String, SnomedReferenceSetMember> membersByReferencedComponentId = Multimaps
                .index(matchingMembers, new Function<SnomedReferenceSetMember, String>() {
                    @Override/*from w w  w  .j av  a  2  s  .  c o m*/
                    public String apply(SnomedReferenceSetMember input) {
                        return input.getReferencedComponent().getId();
                    }
                });
        for (SnomedCoreComponent component : results) {
            final Collection<SnomedReferenceSetMember> members = membersByReferencedComponentId
                    .get(component.getId());
            ((SnomedCoreComponent) component).setMembers(new SnomedReferenceSetMembers(
                    ImmutableList.copyOf(members), null, null, members.size(), members.size()));
        }
    }
}

From source file:org.apache.aurora.scheduler.base.Tasks.java

/**
 * A utility method that returns a multi-map of tasks keyed by IJobKey.
 *
 * @param tasks A list of tasks to be keyed by map
 * @return A multi-map of tasks keyed by job key.
 *///  w w  w  .  ja v  a  2s  .c  o m
public static Multimap<IJobKey, IScheduledTask> byJobKey(Iterable<IScheduledTask> tasks) {
    return Multimaps.index(tasks, Tasks::getJob);
}

From source file:edu.isi.karma.modeling.research.approach1.RankedSteinerSet.java

private List<Integer> computeCohesion() {

    if (nodes == null)
        return null;

    List<String> patternIds = new ArrayList<String>();

    for (Node n : nodes)
        for (String s : n.getPatternIds())
            patternIds.add(s);/* w w w. j  a v  a  2 s  . c  o  m*/

    Function<String, String> stringEqualiy = new Function<String, String>() {
        @Override
        public String apply(final String s) {
            return s;
        }
    };

    Multimap<String, String> index = Multimaps.index(patternIds, stringEqualiy);

    List<Integer> frequencies = new ArrayList<Integer>();
    for (String s : index.keySet()) {
        frequencies.add(index.get(s).size());
    }

    Collections.sort(frequencies);
    frequencies = Lists.reverse(frequencies);
    return frequencies;

}

From source file:kn.uni.gis.dataimport.Main.java

private static void insertData(SQLFacade sqlConnection, final String tableName, final List<String> readLines)
        throws SQLException {
    // Mapping from id -> multiple (parsed) lines
    Multimap<String, List<String>> index = Multimaps
            .index(Lists.transform(readLines, new Function<String, List<String>>() {
                @Override//from w  w  w. j  a  v  a 2s. c  o m
                public List<String> apply(String input) {
                    ArrayList<String> newArrayList = Lists
                            .newArrayList(Splitter.on("\t").trimResults().split(input));
                    newArrayList.remove(newArrayList.size() - 1);
                    return newArrayList;

                }

            }), new Function<List<String>, String>() {
                @Override
                public String apply(List<String> input) {
                    return input.get(ID_INDEX);
                }
            });

    // Collapse now to a mapping id -> one line
    Map<String, List<String>> collapsedValues = Maps.transformValues(index.asMap(),
            new Function<Collection<List<String>>, List<String>>() {

                @Override
                public List<String> apply(Collection<List<String>> input) {
                    List<String> toReturn = Lists.newArrayList();

                    // set id
                    List<String> firstLine = input.iterator().next();
                    toReturn.add(firstLine.get(0));

                    // set coordinates
                    StringBuilder stringBuilder = new StringBuilder();

                    for (List<String> ret : input) {
                        stringBuilder.append(ret.get(1));
                        stringBuilder.append(" ");
                        stringBuilder.append(ret.get(2));
                        stringBuilder.append(",");
                    }
                    String coords = stringBuilder.toString();

                    // add additional line data
                    for (int i = 5; i < firstLine.size(); i++) {
                        toReturn.add("'" + firstLine.get(i).replaceAll("'", "''") + "'");
                    }

                    // delete last ',' and add GeoInformation as last column
                    toReturn.add(GeoColumn.getGeoColumn(tableName)
                            .getGeoInsertionSQL(coords.substring(0, coords.lastIndexOf(','))));
                    return toReturn;
                }

            });

    List<String> toexecute = Lists.newArrayList();
    for (Map.Entry<String, List<String>> entry : collapsedValues.entrySet()) {
        toexecute.add(String.format("insert into \"%s\" values (%s);", tableName,
                Joiner.on(",").join(entry.getValue())));
    }
    sqlConnection.executeBatch(toexecute.toArray(new String[toexecute.size()]));

}

From source file:com.sun.tools.hat.internal.server.RootsQuery.java

@Override
public void run() {
    long id = parseHex(query);
    JavaHeapObject target = snapshot.findThing(id);
    if (target == null) {
        startHtml("Object not found for rootset");
        error("object not found");
        endHtml();/* www  .jav a2  s  .c  o m*/
        return;
    }
    if (includeWeak) {
        startHtml("Rootset references to " + target + " (includes weak refs)");
    } else {
        startHtml("Rootset references to " + target + " (excludes weak refs)");
    }
    out.flush();

    out.print("<h1>References to ");
    printThing(target);
    out.println("</h1>");
    // More interesting values are *higher*
    Multimap<Integer, ReferenceChain> refs = Multimaps.index(snapshot.rootsetReferencesTo(target, includeWeak),
            chain -> chain.getObj().getRoot().getType());
    refs.asMap().entrySet().stream().sorted(Ordering.natural().reverse().onResultOf(entry -> entry.getKey()))
            .forEach(entry -> {
                out.print("<h2>");
                print(Root.getTypeName(entry.getKey()) + " References");
                out.println("</h2>");
                entry.getValue().stream().sorted(Ordering.natural().onResultOf(ReferenceChain::getDepth))
                        .forEach(ref -> {
                            Root root = ref.getObj().getRoot();
                            out.print("<h3>");
                            printRoot(root);
                            if (root.getReferer() != null) {
                                out.print("<small> (from ");
                                printThingAnchorTag(root.getReferer().getId());
                                print(root.getReferer().toString());
                                out.print(")</a></small>");

                            }
                            out.print(" :</h3>");
                            while (ref != null) {
                                ReferenceChain next = ref.getNext();
                                JavaHeapObject obj = ref.getObj();
                                print("--> ");
                                printThing(obj);
                                if (next != null) {
                                    print(" (" + obj.describeReferenceTo(next.getObj(), snapshot) + ":)");
                                }
                                out.println("<br>");
                                ref = next;
                            }
                        });
            });

    out.println("<h2>Other queries</h2>");

    if (includeWeak) {
        printAnchorStart();
        out.print("roots/");
        printHex(id);
        out.print("\">");
        out.println("Exclude weak refs</a><br>");
        endHtml();
    }

    if (!includeWeak) {
        printAnchorStart();
        out.print("allRoots/");
        printHex(id);
        out.print("\">");
        out.println("Include weak refs</a><br>");
    }
}

From source file:com.nesscomputing.service.discovery.testing.client.MemoryDiscoveryClient.java

private void updateStateOfTheWorld() {

    Map<String, ConsistentRingGroup> newWorldOrder = Maps
            .transformValues(Multimaps.index(announcements, GET_SERVICE_NAME).asMap(), BUILD_RING_GROUP);

    getStateOfTheWorldHolder().setState(newWorldOrder);

    LOG.trace("Pushed out discovery update, new world order = %s", newWorldOrder);
}

From source file:org.opencms.ade.sitemap.shared.CmsSitemapCategoryData.java

/**
 * Gets a multimap of the top-level entries, indexed by whether they are local categories or not.<p>
 *
 * A category counts as local if all of its parent categories are defined in the current sitemap.
 *
 * @return the multimap of entries/*w  w w .jav a  2s  . c  o  m*/
 */
public Multimap<Boolean, CmsCategoryTreeEntry> getEntriesIndexedByLocality() {

    return ArrayListMultimap
            .create(Multimaps.index(m_categoryEntries, new Function<CmsCategoryTreeEntry, Boolean>() {

                @SuppressWarnings("synthetic-access")
                public Boolean apply(CmsCategoryTreeEntry entry) {

                    return Boolean.valueOf(entry.getBasePath().equals(m_basePath));
                }
            }));
}