项目:GitHub
文件:LongBits.java
LongPositions(Iterable<? extends Object> elements,final int bitPerLong) {
this.elements = ImmutableList.copyOf(elements);
checkArgument(bitPerLong <= BITS_IN_LONG,bitPerLong);
for (int i = 0; i < this.elements.size(); i++) {
positions.put(
this.elements.get(i),new BitPosition(
i / bitPerLong,i % bitPerLong));
}
this.longPositions = ImmutableSortedMap.copyOf(
Maps.transformEntries(
Multimaps.index(positions.values(),ToLongIndex.FUNCTION).asMap(),new Maps.EntryTransformer<Integer,Collection<BitPosition>,LongSet>() {
@Override
public LongSet transformEntry(Integer key,Collection<BitPosition> position) {
return new LongSet(key,position);
}
}));
}
项目:HardVox
文件:TaskManager.java
public void runTasks() {
Multimaps.asMap(ImmutableListMultimap.copyOf(taskQueue)).values().forEach(tasks -> {
int size = tasks.size();
while (size > 0) {
int last = size - 1;
Task<?> current = tasks.get(last);
if (current.done()) {
taskQueue.get(current.getClass()).remove(last);
size--;
continue;
}
current.tick();
return;
}
});
}
项目:powsybl-core
文件:ImpactAnalysisTool.java
private static Multimap<String,SecurityIndex> runImpactAnalysis(Network network,Set<String> contingencyIds,computationManager computationManager,SimulatorFactory simulatorFactory,ContingenciesProvider contingenciesProvider,PrintStream out) throws Exception {
Stabilization stabilization = simulatorFactory.createStabilization(network,computationManager,0);
ImpactAnalysis impactAnalysis = simulatorFactory.createImpactAnalysis(network,contingenciesProvider);
Map<String,Object> initContext = new HashMap<>();
SimulationParameters simulationParameters = SimulationParameters.load();
stabilization.init(simulationParameters,initContext);
impactAnalysis.init(simulationParameters,initContext);
out.println("running stabilization simulation...");
StabilizationResult sr = stabilization.run();
out.println("stabilization status: " + sr.getStatus());
out.println("stabilization metrics: " + sr.getMetrics());
if (sr.getStatus() == StabilizationStatus.COMPLETED) {
out.println("running impact analysis...");
ImpactAnalysisResult iar = impactAnalysis.run(sr.getState(),contingencyIds);
out.println("impact analysis metrics: " + iar.getMetrics());
return Multimaps.index(iar.getSecurityIndexes(),securityIndex -> securityIndex.getId().getContingencyId());
}
return null;
}
项目:tac-kbp-eal
文件:_CorpusQueryAssessments.java
public final CorpusQueryAssessments filterForAssessment(final Set<QueryAssessment2016> assessment2016) {
final ImmutableSet.Builder<QueryResponse2016> matchingQueriesB = ImmutableSet.builder();
for (final QueryResponse2016 queryResponse2016 : assessments().keySet()) {
if (assessment2016.contains(assessments().get(queryResponse2016))) {
matchingQueriesB.add(queryResponse2016);
}
}
final ImmutableSet<QueryResponse2016> matchingQueries = matchingQueriesB.build();
final CorpusQueryAssessments.Builder ret = CorpusQueryAssessments.builder();
ret.queryReponses(matchingQueries);
ret.putAllQueryResponsesToSystemIDs(
Multimaps.filterKeys(queryResponsesToSystemIDs(),in(matchingQueries)));
ret.putAllMetadata(Maps.filterKeys(Metadata(),in(matchingQueries)));
ret.putAllAssessments(Maps.filterKeys(assessments(),in(matchingQueries)));
return ret.build();
}
项目:tac-kbp-eal
文件:SameEventTypeLinker.java
private ResponseLinking linkResponses(final Symbol docId,final Iterable<Response> responses) {
final Predicate<Response> HasRelevantRealis =
compose(in(realisesWhichMustBeAligned),ResponseFunctions.realis());
final ImmutableSet<Response> systemResponsesAlignedRealis =
FluentIterable.from(responses).filter(HasRelevantRealis).toSet();
final Multimap<Symbol,Response> responsesByEventType =
Multimaps.index(systemResponsesAlignedRealis,ResponseFunctions.type());
final ImmutableSet.Builder<ResponseSet> ret = ImmutableSet.builder();
for (final Collection<Response> responseSet : responsesByEventType.asMap().values()) {
ret.add(ResponseSet.from(responseSet));
}
return ResponseLinking.builder().docID(docId).addAllResponseSets(ret.build()).build();
}
/**
* Assigns all fields an id if possible. Fields are grouped by name and for each group,if there
* is a single id,all fields in the group are assigned this id. If the group has multiple ids,* an error is reported.
*/
protected final Set<String> inferThriftFieldIds()
{
Set<String> fieldsWithConflictingIds = new HashSet<>();
// group fields by explicit name or by name extracted from field,method or property
Multimap<String,FieldMetadata> fieldsByExplicitOrExtractedname = Multimaps.index(fields,FieldMetadata::getorExtractThriftFieldName);
inferThriftFieldIds(fieldsByExplicitOrExtractedname,fieldsWithConflictingIds);
// group fields by name extracted from field,method or property
// this allows thrift name to be set explicitly without having to duplicate the name on getters and setters
// todo should this be the only way this works?
Multimap<String,FieldMetadata> fieldsByExtractedname = Multimaps.index(fields,FieldMetadata::extractName);
inferThriftFieldIds(fieldsByExtractedname,fieldsWithConflictingIds);
return fieldsWithConflictingIds;
}
项目:guava-mock
文件:MediaType.java
private String computetoString() {
StringBuilder builder = new StringBuilder().append(type).append('/').append(subtype);
if (!parameters.isEmpty()) {
builder.append("; ");
Multimap<String,String> quotedParameters =
Multimaps.transformValues(
parameters,new Function<String,String>() {
@Override
public String apply(String value) {
return TOKEN_MATCHER.matchesAllOf(value) ? value : escapeAndQuote(value);
}
});
ParaMETER_JOINER.appendTo(builder,quotedParameters.entries());
}
return builder.toString();
}
项目:Equella
文件:AbstractIntegrationService.java
private SetMultimap<String,IntegrationSessionExtension> getExtensionMap()
{
if( extensionMap == null )
{
synchronized( this )
{
if( extensionMap == null )
{
final SetMultimap<String,IntegrationSessionExtension> map = HashMultimap
.<String,IntegrationSessionExtension>create();
for( Extension ext : resultsTracker.getExtensions() )
{
final IntegrationSessionExtension integExtension = resultsTracker.getBeanByExtension(ext);
for( Parameter parameter : ext.getParameters("type") )
{
map.put(parameter.valueAsstring(),integExtension);
}
}
extensionMap = Multimaps.unmodifiableSetMultimap(map);
}
}
}
return extensionMap;
}
项目:athena
文件:DefaultRouter.java
@Activate
public void activate() {
ribTable4 = new ConcurrentInvertedRadixTree<>(
new DefaultByteArrayNodeFactory());
ribTable6 = new ConcurrentInvertedRadixTree<>(
new DefaultByteArrayNodeFactory());
routesWaitingOnArp = Multimaps.synchronizedSetMultimap(
HashMultimap.create());
coreService.registerapplication(ROUTER_APP_ID);
bgpUpdatesExecutor = Executors.newSingleThreadExecutor(
new ThreadFactoryBuilder()
.setNameFormat("rib-updates-%d").build());
}
/**
* Constructor.
*/
public RemoteConfigLongPollService() {
m_longPollFailSchedulePolicyInSecond = new ExponentialSchedulePolicy(1,120); //in second
m_longPollingStopped = new AtomicBoolean(false);
m_longPollingService = Executors.newSingleThreadExecutor(
ApolloThreadFactory.create("RemoteConfigLongPollService",true));
m_longPollStarted = new AtomicBoolean(false);
m_longPollNamespaces =
Multimaps.synchronizedSetMultimap(HashMultimap.<String,RemoteConfigRepository>create());
m_notifications = Maps.newConcurrentMap();
m_remoteNotificationMessages = Maps.newConcurrentMap();
m_responseType = new Typetoken<List<ApolloConfigNotification>>() {
}.getType();
gson = new Gson();
m_configUtil = ApolloInjector.getInstance(ConfigUtil.class);
m_httpUtil = ApolloInjector.getInstance(HttpUtil.class);
m_serviceLocator = ApolloInjector.getInstance(ConfigServiceLocator.class);
m_longPollRateLimiter = RateLimiter.create(m_configUtil.getLongPollQPS());
}
项目:hashsdn-controller
文件:DOMNotificationRouter.java
@Override
public synchronized <T extends DOMNotificationListener> ListenerRegistration<T> registerNotificationListener(final T listener,final Collection<SchemaPath> types) {
final ListenerRegistration<T> reg = new AbstractListenerRegistration<T>(listener) {
@Override
protected void removeRegistration() {
final ListenerRegistration<T> me = this;
synchronized (DOMNotificationRouter.this) {
replaceListeners(ImmutableMultimap.copyOf(Multimaps.filterValues(listeners,input -> input != me)));
}
}
};
if (!types.isEmpty()) {
final Builder<SchemaPath,ListenerRegistration<? extends DOMNotificationListener>> b = ImmutableMultimap.builder();
b.putAll(listeners);
for (final SchemaPath t : types) {
b.put(t,reg);
}
replaceListeners(b.build());
}
return reg;
}
项目:Mastering-Mesos
文件:Maintenance.java
@GET
@Produces(MediaType.APPLICATION_JSON)
public Response getHosts() {
return storage.read(storeProvider -> {
Multimap<MaintenanceMode,String> hostsByMode =
Multimaps.transformValues(
Multimaps.index(
storeProvider.getAttributeStore().getHostAttributes(),IHostAttributes::getMode),IHostAttributes::getHost);
Map<MaintenanceMode,Object> hosts = ImmutableMap.of(
DRAINED,ImmutableSet.copyOf(hostsByMode.get(DRAINED)),SCHEDULED,ImmutableSet.copyOf(hostsByMode.get(SCHEDULED)),DRAINING,getTasksByHosts(storeProvider,hostsByMode.get(DRAINING)).asMap());
return Response.ok(hosts).build();
});
}
项目:Mastering-Mesos
文件:SchedulerThriftInterface.java
private static Set<InstanceTaskConfig> buildInitialState(Map<Integer,ITaskConfig> tasks) {
// Translate tasks into instance IDs.
Multimap<ITaskConfig,Integer> instancesByConfig = HashMultimap.create();
Multimaps.invertFrom(Multimaps.forMap(tasks),instancesByConfig);
// Reduce instance IDs into contiguous ranges.
Map<ITaskConfig,Set<Range<Integer>>> rangesByConfig =
Maps.transformValues(instancesByConfig.asMap(),Numbers::toRanges);
ImmutableSet.Builder<InstanceTaskConfig> builder = ImmutableSet.builder();
for (Map.Entry<ITaskConfig,Set<Range<Integer>>> entry : rangesByConfig.entrySet()) {
builder.add(new InstanceTaskConfig()
.setTask(entry.getKey().newBuilder())
.setInstances(IRange.toBuildeRSSet(convertRanges(entry.getValue()))));
}
return builder.build();
}
项目:Mastering-Mesos
文件:ReadOnlySchedulerImpl.java
@Override
public Response getRoleSummary() {
Multimap<String,IJobKey> jobsByRole = storage.read(
storeProvider ->
Multimaps.index(storeProvider.getTaskStore().getJobKeys(),IJobKey::getRole));
Multimap<String,IJobKey> cronJobsByRole = Multimaps.index(
Iterables.transform(Storage.Util.fetchCronJobs(storage),IJobConfiguration::getKey),IJobKey::getRole);
Set<RoleSummary> summaries = FluentIterable.from(
Sets.union(jobsByRole.keySet(),cronJobsByRole.keySet()))
.transform(role -> new RoleSummary(
role,jobsByRole.get(role).size(),cronJobsByRole.get(role).size()))
.toSet();
return ok(Result.roleSummaryResult(new RoleSummaryResult(summaries)));
}
/**
* Constructor.
*/
public RemoteConfigLongPollService() {
m_longPollFailSchedulePolicyInSecond = new ExponentialSchedulePolicy(1,RemoteConfigRepository>create());
m_notifications = Maps.newConcurrentMap();
m_remoteNotificationMessages = Maps.newConcurrentMap();
m_responseType = new Typetoken<List<ApolloConfigNotification>>() {
}.getType();
gson = new Gson();
m_configUtil = ApolloInjector.getInstance(ConfigUtil.class);
m_httpUtil = ApolloInjector.getInstance(HttpUtil.class);
m_serviceLocator = ApolloInjector.getInstance(ConfigServiceLocator.class);
m_longPollRateLimiter = RateLimiter.create(m_configUtil.getLongPollQPS());
}
项目:hmftools
文件:LoadStructuralVariants.java
@NotNull
private static List<EnrichedStructuralVariant> enrichStructuralVariants(@NotNull List<StructuralVariant> variants,@NotNull DatabaseAccess @R_971_4044@,@NotNull String tumorSample) {
final purityContext purityContext = @R_971_404[email protected]purityContext(tumorSample);
if (purityContext == null) {
LOGGER.warn("Unable to retrieve purple data. Enrichment may be incomplete.");
}
final purityAdjuster purityAdjuster = purityContext == null
? new purityAdjuster(Gender.FEMALE,1,1)
: new purityAdjuster(purityContext.gender(),purityContext.bestFit().purity(),purityContext.bestFit().normFactor());
final List<PurplecopyNumber> copyNumberList = @R_971_404[email protected]copynumbers(tumorSample);
final Multimap<String,PurplecopyNumber> copyNumbers = Multimaps.index(copyNumberList,PurplecopyNumber::chromosome);
return EnrichedStructuralVariantFactory.enrich(variants,purityAdjuster,copyNumbers);
}
@Override
public Map<ApiKey,String> writeConfig(Iterable<? extends ApiConfig> configs)
throws ApiConfigException {
Multimap<ApiKey,? extends ApiConfig> apisByKey = Multimaps.index(configs,new Function<ApiConfig,ApiKey>() {
@Override public ApiKey apply(ApiConfig config) {
return config.getApiKey();
}
});
// This *must* retain the order of apisByKey so the lily_java_api BUILD rule has predictable
// output order.
Map<ApiKey,String> results = Maps.newLinkedHashMap();
for (ApiKey apiKey : apisByKey.keySet()) {
Collection<? extends ApiConfig> apiConfigs = apisByKey.get(apiKey);
validator.validate(apiConfigs);
results.put(apiKey,generateForApi(apiConfigs));
}
return results;
}
项目:emodb
文件:AstyanaxBlockedDataReaderDAO.java
/**
* Gets the topology for a Cassandra keyspace as a Multimap,where the keys identify a rack (or availability zone
* in Amazon) and the values are the token ranges for each host in that rack. For example,for a well distributed
* ring of 12 hosts and a replication factor of 3 this method would return a Multimap with 3 keys and each key would
* contain 4 token ranges.
*/
private Multimap<String,TokenRange> describeCassandratopology(final Keyspace keyspace) {
try {
@SuppressWarnings ("unchecked")
ConnectionPool<Cassandra.Client> connectionPool = (ConnectionPool<Cassandra.Client>) keyspace.getConnectionPool();
return connectionPool.executeWithFailover(
new AbstractKeyspaceOperationImpl<Multimap<String,TokenRange>>(EmptyKeyspaceTracerFactory.getInstance().newTracer(CassandraOperationType.DESCRIBE_RING),keyspace.getKeyspaceName()) {
@Override
protected Multimap<String,TokenRange> internalExecute(Cassandra.Client client,ConnectionContext state)
throws Exception {
Multimap<String,TokenRange> racks = ArrayListMultimap.create();
for (org.apache.cassandra.thrift.TokenRange tokenRange : client.describe_local_ring(getKeyspace())) {
// The final local endpoint "owns" the token range,the rest are for replication
EndpointDetails endpointDetails = Iterables.getLast(tokenRange.getEndpoint_details());
racks.put(endpointDetails.getRack(),new TokenRangeImpl(tokenRange.getStart_token(),tokenRange.getEnd_token(),tokenRange.getEndpoints()));
}
return Multimaps.unmodifiableMultimap(racks);
}
},keyspace.getConfig().getRetryPolicy().duplicate()).getResult();
} catch (ConnectionException e) {
throw Throwables.propagate(e);
}
}
项目:emodb
文件:AstyanaxDataReaderDAO.java
/**
* Gets the topology for a Cassandra keyspace as a Multimap,keyspace.getConfig().getRetryPolicy().duplicate()).getResult();
} catch (ConnectionException e) {
throw Throwables.propagate(e);
}
}
项目:codebuff
文件:MediaType.java
项目:beam
文件:ApiSurface.java
/** See {@link #getExposedToExposers}. */
private void constructExposedToExposers() {
visited = Sets.newHashSet();
exposedToExposers =
Multimaps.newSetMultimap(
Maps.<Class<?>,Collection<Class<?>>>newHashMap(),new supplier<Set<Class<?>>>() {
@Override
public Set<Class<?>> get() {
return Sets.newHashSet();
}
});
for (Class<?> clazz : rootClasses) {
addExposedTypes(clazz,null);
}
}
项目:xtext-core
文件:Validator.java
protected Multimap<URI,MWEDiagnostic> groupByURI(MWEDiagnostic[] diagnostic) {
Multimap<URI,MWEDiagnostic> result = Multimaps.newMultimap(
Maps.<URI,Collection<MWEDiagnostic>> newLinkedHashMap(),new supplier<Collection<MWEDiagnostic>>() {
@Override
public Collection<MWEDiagnostic> get() {
return Sets.newTreeSet(getDiagnosticComparator());
}
});
result.putAll(Multimaps.index(Arrays.asList(diagnostic),new Function<MWEDiagnostic,URI>() {
@Override
public URI apply(MWEDiagnostic from) {
Issue issue = (Issue) from.getElement();
URI uriToProblem = issue.getUriToProblem();
return uriToProblem != null ? uriToProblem.trimFragment() : NullURI;
}
}));
return result;
}
项目:dsl-devkit
文件:CheckJavaValidator.java
/**
* Gets duplicates of a given type based on a guard (predicate). A given function is used for converting an instance of type T
* to a string which is used for checking for duplicates.
*
* @param <T>
* the generic type
* @param predicate
* the predicate acting as a guard
* @param function
* returns a string for an instance of type T
* @param elements
* the elements to be checked
* @return the duplicates
*/
private <T extends EObject> Iterable<T> getDuplicates(final Predicate<T> predicate,final Function<T,String> function,final Iterable<T> elements) {
List<T> result = Lists.newArrayList();
Multimap<String,T> multiMap = Multimaps.newMultimap(Maps.<String,Collection<T>> newHashMap(),new supplier<Collection<T>>() {
@Override
public Collection<T> get() {
return Lists.<T> newArrayList();
}
});
for (final T candidate : elements) {
if (predicate.apply(candidate)) {
multiMap.put(function.apply(candidate),candidate);
}
}
for (String elem : multiMap.keySet()) {
final Collection<T> duplicates = multiMap.get(elem);
if (duplicates.size() > 1) {
result.addAll(duplicates);
}
}
return result;
}
/**
* Gets duplicates of a given type based on a guard (predicate). A given function is used for converting an instance of type T
* to a string which is used for checking for duplicates.
*
* @param <T>
* the generic type
* @param predicate
* the predicate acting as a guard
* @param function
* returns a string for an instance of type T
* @param elements
* the elements to be checked
* @return the duplicates
*/
private <T extends EObject> Iterable<T> getDuplicates(final Predicate<T> predicate,candidate);
}
}
for (String elem : multiMap.keySet()) {
final Collection<T> duplicates = multiMap.get(elem);
if (duplicates.size() > 1) {
result.addAll(duplicates);
}
}
return result;
}
项目:jira-dvcs-connector
文件:ChangesetServiceImpl.java
@Override
public List<Changeset> getChangesetsWithFileDetails(List<Changeset> changesets)
{
ImmutableList.Builder<Changeset> detailedChangesets = ImmutableList.builder();
// group by repo so we only have to load each repo one time inside the loop
ListMultimap<Integer,Changeset> changesetsByRepo = Multimaps.index(changesets,Changesets.TO_REPOSITORY_ID);
for (Map.Entry<Integer,Collection<Changeset>> repoChangesets : changesetsByRepo.asMap().entrySet())
{
final Repository repository = repositoryDao.get(repoChangesets.getKey());
final DvcsCommunicator communicator = dvcsCommunicatorProvider.getCommunicator(repository.getDvcsType());
processRepository(repository,repoChangesets.getValue(),communicator,detailedChangesets);
}
return detailedChangesets.build();
}
项目:FreeBuilder
文件:ListMultimapProperty.java
private void addGetter(SourceBuilder code,Metadata Metadata) {
code.addLine("")
.addLine("/**")
.addLine(" * Returns an unmodifiable view of the multimap that will be returned by")
.addLine(" * %s.",Metadata.getType().javadocNoArgMethodLink(property.getGetterName()))
.addLine(" * Changes to this builder will be reflected in the view.")
.addLine(" */")
.addLine("public %s<%s,%s> %s() {",ListMultimap.class,keyType,valueType,getter(property))
.addLine(" return %s.unmodifiableListMultimap(%s);",Multimaps.class,property.getField())
.addLine("}");
}
项目:FreeBuilder
文件:SetMultimapProperty.java
项目:FreeBuilder
文件:ListMultimapMutateMethodTest.java
@Test
public void mutateAndAddAtIndexViaAsMapModifiesUnderlyingproperty() {
behaviorTester
.with(new Processor(features))
.with(CHECKED_PROPERTY)
.with(testBuilder()
.addLine("DataType value = new DataType.Builder()")
.addLine(" .putAllItems(\"one\",ImmutableList.of(\"A\",\"B\",\"C\"))")
.addLine(" .mutateItems(items -> %s.asMap(items).get(\"one\").add(2,\"foo\"))",Multimaps.class)
.addLine(" .build();")
.addLine("assertthat(value.getItems())")
.addLine(" .contains(\"one\",\"A\",\"foo\",\"C\")")
.addLine(" .andnothingElse()")
.addLine(" .inorder();")
.build())
.runtest();
}
项目:FreeBuilder
文件:ListMultimapMutateMethodTest.java
@Test
public void mutateAndAddAtIndexViaAsMapKeepsSubstitute() {
behaviorTester
.with(new Processor(features))
.with(INTERNED_PROPERTY)
.with(testBuilder()
.addLine("String s = new String(\"foobar\");")
.addLine("String i = s.intern();")
.addLine("assertthat(s).isNotSameAs(i);")
.addLine("DataType value = new DataType.Builder()")
.addLine(" .putAllItems(\"one\",s))",Multimaps.class)
.addLine(" .build();")
.addLine("assertthat(value.getItems().get(\"one\").get(2)).isSameAs(i);")
.build())
.runtest();
}
项目:consultant
文件:Consultant.java
private Consultant(scheduledexecutorservice executor,ObjectMapper mapper,URI consulUri,ServiceIdentifier identifier,SetMultimap<String,SettingListener> settingListeners,Set<ConfigListener> configListeners,ConfigValidator validator,CloseableHttpClient http,boolean pullConfig,String healthEndpoint,String kvPrefix) {
this.registered = new AtomicBoolean();
this.settingListeners = Multimaps.synchronizedSetMultimap(settingListeners);
this.configListeners = Sets.newConcurrentHashSet(configListeners);
this.serviceInstanceBackend = new ServiceInstanceBackend(identifier.getDatacenter(),consulUri,mapper,http);
this.mapper = mapper;
this.validator = validator;
this.executor = executor;
this.consulUri = consulUri;
this.id = identifier;
this.pullConfig = pullConfig;
this.validated = new Properties();
this.healthEndpoint = healthEndpoint;
this.http = http;
this.kvPrefix = kvPrefix;
}
项目:onetwo
文件:GuavaTest.java
@Test
public void testGroupBy(){
List<UserEntity> all = LangUtils.newArrayList();
List<UserEntity> aa = createuserList("aa",3);
List<UserEntity> bb = createuserList("bb",1);
List<UserEntity> cc = createuserList("cc",2);
all.addAll(aa);
all.addAll(bb);
all.addAll(cc);
ImmutableListMultimap<String,UserEntity> groups = Multimaps.index(all,new Function<UserEntity,String>() {
@Override
public String apply(UserEntity input) {
return input.getUserName();
}
});
System.out.println("groups:" + groups);
Assert.assertEquals(3,groups.get("aa").size());
Assert.assertEquals(1,groups.get("bb").size());
Assert.assertEquals(2,groups.get("cc").size());
}
项目:jklol
文件:IntMultimap.java
/**
* Creates a new multimap that reverses the keys and values in {@code map}.
*
* @param map
* @return
*/
public static IntMultimap invertFrom(Multimap<? extends Integer,? extends Integer> map) {
if (map instanceof IntMultimap) {
IntMultimap other = (IntMultimap) map;
// This is unnecessary,but it makes this method easier to implement.
other.reindexItems();
int[] newSortedKeys = Arrays.copyOf(other.sortedValues,other.sortedValues.length);
int[] newSortedValues = Arrays.copyOf(other.sortedKeys,other.sortedKeys.length);
ArrayUtils.sortkeyvaluePairs(newSortedKeys,newSortedValues,newSortedKeys.length);
return new IntMultimap(newSortedKeys,newSortedValues);
} else {
IntMultimap inverse = IntMultimap.create();
Multimaps.invertFrom(map,inverse);
return inverse;
}
}
项目:presto
文件:FunctionRegistry.java
public FunctionMap(FunctionMap map,Iterable<? extends sqlFunction> functions)
{
this.functions = ImmutableListMultimap.<Qualifiedname,sqlFunction>builder()
.putAll(map.functions)
.putAll(Multimaps.index(functions,function -> Qualifiedname.of(function.getSignature().getName())))
.build();
// Make sure all functions with the same name are aggregations or none of them are
for (Map.Entry<Qualifiedname,Collection<sqlFunction>> entry : this.functions.asMap().entrySet()) {
Collection<sqlFunction> values = entry.getValue();
long aggregations = values.stream()
.map(function -> function.getSignature().getKind())
.filter(kind -> kind == AGGREGATE || kind == APPROXIMATE_AGGREGATE)
.count();
checkState(aggregations == 0 || aggregations == values.size(),"'%s' is both an aggregation and a scalar function",entry.getKey());
}
}
项目:presto
文件:PartitionUpdate.java
public static List<PartitionUpdate> mergePartitionUpdates(List<PartitionUpdate> unMergedUpdates)
{
ImmutableList.Builder<PartitionUpdate> partitionUpdates = ImmutableList.builder();
for (Collection<PartitionUpdate> partitionGroup : Multimaps.index(unMergedUpdates,PartitionUpdate::getName).asMap().values()) {
PartitionUpdate firstPartition = partitionGroup.iterator().next();
ImmutableList.Builder<String> allFileNames = ImmutableList.builder();
for (PartitionUpdate partition : partitionGroup) {
// verify partitions have the same new flag,write path and target path
// this shouldn't happen but Could if another user added a partition during the write
if (partition.isNew() != firstPartition.isNew() ||
!partition.getWritePath().equals(firstPartition.getWritePath()) ||
!partition.getTargetPath().equals(firstPartition.getTargetPath())) {
throw new PrestoException(HIVE_WRITER_ERROR,format("Partition %s was added or modified during INSERT",firstPartition.getName()));
}
allFileNames.addAll(partition.getFileNames());
}
partitionUpdates.add(new PartitionUpdate(firstPartition.getName(),firstPartition.isNew(),firstPartition.getWritePath(),firstPartition.getTargetPath(),allFileNames.build()));
}
return partitionUpdates.build();
}
项目:onboard
文件:WebsocketHandler.java
public void sendMessage(String userEmail,String message) {
Multimap<String,WebSocketSession> syncMap = Multimaps.synchronizedMultimap(userPagesMap);
Collection<WebSocketSession> mis = syncMap.get(userEmail);
synchronized (syncMap) {
if (mis != null) {
Iterator<WebSocketSession> it = mis.iterator();
while (it.hasNext()) {
WebSocketSession session = it.next();
try {
session.sendMessage(new TextMessage(message));
} catch (Exception e) {
logger.info("The WebSocket connection has been closed: " + session.toString());
}
}
}
}
}
项目:onboard
文件:WebSocketServiceImpl.java
@Override
public void broadcastOne(String user,String message) {
Multimap<String,MessageInbound> syncMap = Multimaps.synchronizedMultimap(userPagesMap);
Collection<MessageInbound> mis = syncMap.get(user);
synchronized (syncMap) {
if (mis != null) {
Iterator<MessageInbound> it = mis.iterator();
while (it.hasNext()) {
MessageInbound inbound = it.next();
try {
sendToPage(inbound,message);
} catch (IOException e) {
// userPagesMap.remove(user,inbound);
logger.info("The WebSocket connection has been closed: " + inbound.toString());
}
}
}
}
}
项目:gradle-workspace-plugin
文件:WorkspacePlugin.java
/**
* Get the configurations that export an artifact
*
* @param projects Projects to search
* @return Exporting configurations
*/
protected Multimap<@NonNull String,@NonNull ExportingConfiguration> getExportingConfigurations(
Collection<@NonNull Project> projects) {
Multimap<@NonNull String,@NonNull ExportingConfiguration> exports = Multimaps.newSetMultimap(new HashMap<>(),() -> new TreeSet<>(CONfigURATION_INFO_COMParaTOR));
for (Project project : projects) {
Set<String> configurationNames = ImmutableSet.of("default");
WorkspaceConfig workspaceConfig = project.getExtensions().findByType(WorkspaceConfig.class);
if (workspaceConfig != null) {
configurationNames = workspaceConfig.getExportedConfigurations();
}
for (String configurationName : configurationNames) {
Configuration configuration = project.getConfigurations().findByName(configurationName);
if (configuration != null) {
getExportingConfigurations(project,configuration,exports);
}
}
}
return exports;
}
项目:artifactory
文件:WatchesServiceImpl.java
private void lazyInitCacheIfNeeded() {
if (!initialized) {
synchronized (this) {
if (!initialized) {
if (watchersCache == null) {
watchersCache = HashMultimap.create();
watchersCache = Multimaps.synchronizedMultimap(watchersCache);
}
try {
//Todo: [by YS] consider using single query to get watch + repo path
List<Watch> nodeWatches = watchesDao.getWatches();
for (Watch nodeWatch : nodeWatches) {
RepoPath repoPath = fileService.loadItem(nodeWatch.getNodeId()).getRepoPath();
watchersCache.put(repoPath,nodeWatch);
}
initialized = true;
} catch (sqlException e) {
throw new StorageException("Failed to load watches",e);
}
}
}
}
}
@NotNull
@Override
protected Collection<Collection<BilingualEntry>> findCandidates(@NotNull Collection<BilingualEntry> normalizedInput) {
Multimap<MergeCandidateIdentifier,BilingualEntry> candidatesMap = buildMergeCandidateMultimap(normalizedInput);
Multimap<MergeCandidateIdentifier,BilingualEntry> kNownMap = Multimaps.filterEntries(candidatesMap,this::toNullIfUnkNown);
Multimap<MergeCandidateIdentifier,BilingualEntry> unkNownMap = Multimaps.filterEntries(candidatesMap,this::toNullIfKNown);
Collection<Collection<BilingualEntry>> candidates = new ArrayList<>(candidatesMap.keys().size());
identifyUnkNownEntryTypeCandidates(candidatesMap,kNownMap,unkNownMap,candidates);
mergeSingleDialectLanguages(candidatesMap);
for (MergeCandidateIdentifier key : kNownMap.asMap().keySet()) {
candidates.add(candidatesMap.get(key));
}
return candidates;
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。