List of usage examples for com.google.common.collect Multimaps index
public static <K, V> ImmutableListMultimap<K, V> index(Iterator<V> values, Function<? super V, K> keyFunction)
From source file:com.siemens.sw360.datahandler.common.SW360Utils.java
private static ImmutableMap<Integer, Collection<ReleaseLink>> getDepthMap(List<ReleaseLink> linkedReleases) { return Multimaps.index(linkedReleases, new Function<ReleaseLink, Integer>() { @Override// ww w. j a v a2 s. c o m public Integer apply(ReleaseLink input) { return input.getDepth(); } }).asMap(); }
From source file:com.esri.android.ecologicalmarineunitexplorer.data.DataManager.java
/** * Process the listenable future by creating a WaterColumn for * any returned data./*from ww w .j a va2 s . c o m*/ * @param envelope - an Envelope representing the search area * @param futureResult - a ListenableFuture<FeatureQueryResult> to process * @param callback - a SummaryCallback called when query processing is complete * @return - a WaterColumn representing returned features. */ private void processQueryForEMuAtLocation(final Envelope envelope, final ListenableFuture<FeatureQueryResult> futureResult, final ServiceApi.SummaryCallback callback) { futureResult.addDoneListener(new Runnable() { @Override public void run() { try { Log.i("ProcessQuery", "Query done..."); FeatureQueryResult fqr = futureResult.get(); Map<Geometry, WaterColumn> pointWaterColumnMap = new HashMap<Geometry, WaterColumn>(); if (fqr != null) { Log.i("ProcessQuery", "Processing features..."); List<EMUObservation> emuObservations = new ArrayList<EMUObservation>(); final Iterator<Feature> iterator = fqr.iterator(); while (iterator.hasNext()) { Feature feature = iterator.next(); Geometry geometry = feature.getGeometry(); Map<String, Object> map = feature.getAttributes(); EMUObservation observation = createEMUObservation(map); emuObservations.add(createEMUObservation(map)); } // Now we have a list with zero or more EMUObservations // 1. Create a map of WaterColumn keyed on location // 2. Determine the closest WaterColumn to the envelope. ImmutableSet<EMUObservation> immutableSet = ImmutableSet.copyOf(emuObservations); Function<EMUObservation, Point> locationFunction = new Function<EMUObservation, Point>() { @Nullable @Override public Point apply(EMUObservation observation) { return observation.getLocation(); } }; ImmutableListMultimap<Point, EMUObservation> observationsByLocation = Multimaps .index(immutableSet, locationFunction); ImmutableMap<Point, Collection<EMUObservation>> map = observationsByLocation.asMap(); Set<Point> keys = map.keySet(); Iterator<Point> pointIterator = keys.iterator(); while (pointIterator.hasNext()) { Point p = pointIterator.next(); WaterColumn waterColumn = new WaterColumn(); waterColumn.setLocation(p); ; Collection<EMUObservation> observations = map.get(p); for (EMUObservation o : observations) { waterColumn.addObservation(o); } pointWaterColumnMap.put(p, waterColumn); } } // If there is more than one water column, we only care about the // one closest to the point clicked in the map. WaterColumn closestWaterColumn = findClosestWaterColumn(envelope, pointWaterColumnMap); // Processing is complete, notify the callback callback.onWaterColumnsLoaded(closestWaterColumn); } catch (Exception e) { e.printStackTrace(); } } }); }
From source file:io.druid.indexing.common.TaskToolbox.java
public void pushSegments(Iterable<DataSegment> segments) throws IOException { // Request segment pushes for each set final Multimap<Interval, DataSegment> segmentMultimap = Multimaps.index(segments, new Function<DataSegment, Interval>() { @Override// ww w. j a v a 2 s .com public Interval apply(DataSegment segment) { return segment.getInterval(); } }); for (final Collection<DataSegment> segmentCollection : segmentMultimap.asMap().values()) { getTaskActionClient().submit(new SegmentInsertAction(ImmutableSet.copyOf(segmentCollection))); } }
From source file:org.onos.yangtools.yang.model.util.FilteringSchemaContextProxy.java
private Multimap<String, Module> getStringModuleMap(SchemaContext delegate) { return Multimaps.index(delegate.getModules(), new Function<Module, String>() { @Override/* w ww .j a v a2 s.c om*/ public String apply(Module input) { return input.getName(); } }); }
From source file:com.b2international.snowowl.snomed.importer.rf2.refset.SnomedLanguageRefSetImporter.java
@Override protected void attach(Collection<SnomedLanguageRefSetMember> componentsToAttach) { final Multimap<String, SnomedLanguageRefSetMember> membersByReferencedComponent = Multimaps .index(componentsToAttach, SnomedRefSetMember::getReferencedComponentId); final Collection<Component> components = getComponents(membersByReferencedComponent.keySet()); for (Component component : components) { if (component instanceof Description) { final Collection<SnomedLanguageRefSetMember> newDescriptionMembers = membersByReferencedComponent .get(component.getId()); ((Description) component).getLanguageRefSetMembers().addAll(newDescriptionMembers); }/*from ww w .j a v a2s .co m*/ } }
From source file:dagger.internal.codegen.MapMultibindingValidator.java
private static ImmutableSetMultimap<Equivalence.Wrapper<DeclaredType>, ContributionBinding> indexByMapKeyAnnotationType( ImmutableSet<ContributionBinding> contributions) { return ImmutableSetMultimap.copyOf(Multimaps.index(contributions, mapBinding -> MoreTypes.equivalence() .wrap(mapBinding.mapKeyAnnotation().get().getAnnotationType()))); }
From source file:com.facebook.presto.raptor.storage.organization.ShardOrganizerUtil.java
public static Collection<Collection<ShardIndexInfo>> getShardsByDaysBuckets(Table tableInfo, Collection<ShardIndexInfo> shards) { // Neither bucketed nor temporal, no partitioning required if (!tableInfo.getBucketCount().isPresent() && !tableInfo.getTemporalColumnId().isPresent()) { return ImmutableList.of(shards); }// w ww . j a v a 2s . c o m // if only bucketed, partition by bucket number if (tableInfo.getBucketCount().isPresent() && !tableInfo.getTemporalColumnId().isPresent()) { return Multimaps.index(shards, shard -> shard.getBucketNumber().getAsInt()).asMap().values(); } // if temporal, partition into days first ImmutableMultimap.Builder<Long, ShardIndexInfo> shardsByDaysBuilder = ImmutableMultimap.builder(); shards.stream().filter(shard -> shard.getTemporalRange().isPresent()).forEach(shard -> { long day = determineDay(shard.getTemporalRange().get()); shardsByDaysBuilder.put(day, shard); }); Collection<Collection<ShardIndexInfo>> byDays = shardsByDaysBuilder.build().asMap().values(); // if table is bucketed further partition by bucket number if (!tableInfo.getBucketCount().isPresent()) { return byDays; } ImmutableList.Builder<Collection<ShardIndexInfo>> sets = ImmutableList.builder(); for (Collection<ShardIndexInfo> s : byDays) { sets.addAll(Multimaps.index(s, ShardIndexInfo::getBucketNumber).asMap().values()); } return sets.build(); }
From source file:com.google.auto.factory.processor.FactoryDescriptorGenerator.java
FactoryMethodDescriptor generateDescriptorForConstructor(final AutoFactoryDeclaration declaration, ExecutableElement constructor) { checkNotNull(constructor);/*from www .j av a 2s . co m*/ checkArgument(constructor.getKind() == ElementKind.CONSTRUCTOR); Element classElement = constructor.getEnclosingElement(); Name returnType = classElement.accept(new ElementKindVisitor6<Name, Void>() { @Override protected Name defaultAction(Element e, Void p) { throw new AssertionError(); } @Override public Name visitTypeAsClass(TypeElement e, Void p) { if (!e.getTypeParameters().isEmpty()) { messager.printMessage(ERROR, "AutoFactory does not support generic types", e); } return e.getQualifiedName(); } }, null); ImmutableListMultimap<Boolean, ? extends VariableElement> parameterMap = Multimaps .index(constructor.getParameters(), Functions.forPredicate(new Predicate<VariableElement>() { @Override public boolean apply(VariableElement parameter) { return parameter.getAnnotation(Provided.class) != null; } })); ImmutableSet<Parameter> providedParameters = Parameter.forParameterList(parameterMap.get(true)); ImmutableSet<Parameter> passedParameters = Parameter.forParameterList(parameterMap.get(false)); return new FactoryMethodDescriptor.Builder(declaration) .factoryName(declaration.getFactoryName(elements.getPackageOf(constructor).getQualifiedName(), classElement.getSimpleName())) .name("create").returnType(returnType.toString()) .publicMethod(constructor.getEnclosingElement().getModifiers().contains(PUBLIC)) .providedParameters(providedParameters).passedParameters(passedParameters) .creationParameters(Parameter.forParameterList(constructor.getParameters())).build(); }
From source file:edu.cmu.cs.lti.ark.fn.evaluation.PrepareFullAnnotationJson.java
/** * Given predicted frame instances, including their frame elements, create a SemaforParseResult ready to be serialized to * JSON// w ww . j av a 2 s. c o m * * @param rankedScoredRoleAssignments Lines encoding predicted frames & FEs in the same format as the .sentences.frame.elements files */ public static SemaforParseResult getSemaforParse( Collection<RankedScoredRoleAssignment> rankedScoredRoleAssignments, List<String> tokens) { final ArrayList<Frame> frames = Lists.newArrayList(); // group by target span (assumes only one predicted frame per target span) final ImmutableListMultimap<Range0Based, RankedScoredRoleAssignment> predictionsByFrame = Multimaps .index(rankedScoredRoleAssignments, getTargetSpan); for (Range0Based targetSpan : predictionsByFrame.keySet()) { final List<RankedScoredRoleAssignment> predictionsForFrame = predictionsByFrame.get(targetSpan); final RankedScoredRoleAssignment first = predictionsForFrame.get(0); final NamedSpanSet target = makeSpan(first.targetSpan.start, first.targetSpan.end + 1, first.frame, tokens); final List<Frame.ScoredRoleAssignment> scoredRoleAssignments = Lists.newArrayList(); for (RankedScoredRoleAssignment ra : predictionsForFrame) { // extract frame elements final List<FrameElementAndSpan> frameElementsAndSpans = ra.fesAndSpans; final List<NamedSpanSet> frameElements = Lists.newArrayList(); for (FrameElementAndSpan frameElementAndSpan : frameElementsAndSpans) { final Range0Based range = frameElementAndSpan.span; frameElements.add(makeSpan(range.start, range.end + 1, frameElementAndSpan.name, tokens)); } scoredRoleAssignments.add(new Frame.ScoredRoleAssignment(ra.rank, ra.score, frameElements)); } frames.add(new Frame(target, scoredRoleAssignments)); } return new SemaforParseResult(frames, tokens); }
From source file:io.prestosql.plugin.raptor.legacy.storage.organization.ShardCompactionManager.java
private void discoverShards() { log.info("Discovering shards that need compaction..."); Set<ShardMetadata> allShards = shardManager.getNodeShards(currentNodeIdentifier); ListMultimap<Long, ShardMetadata> tableShards = Multimaps.index(allShards, ShardMetadata::getTableId); for (Entry<Long, List<ShardMetadata>> entry : Multimaps.asMap(tableShards).entrySet()) { long tableId = entry.getKey(); if (!metadataDao.isCompactionEligible(tableId)) { continue; }//from w ww .j a v a 2s . co m List<ShardMetadata> shards = entry.getValue(); Collection<OrganizationSet> organizationSets = filterAndCreateCompactionSets(tableId, shards); log.info("Created %s organization set(s) for table ID %s", organizationSets.size(), tableId); for (OrganizationSet set : organizationSets) { organizer.enqueue(set); } } }