com.datastax.driver.core.ExecutionProfilesInfoFinder Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of dse-java-driver-core Show documentation
Show all versions of dse-java-driver-core Show documentation
A driver for DataStax Enterprise (DSE)
and Apache Cassandra 1.2+ clusters that works exclusively with the
Cassandra Query Language version 3 (CQL3) and Cassandra's binary protocol,
supporting DSE-specific features such as geospatial types, DSE Graph and DSE authentication.
/*
* Copyright DataStax, Inc.
*
* This software can be used solely with DataStax Enterprise. Please consult the license at
* http://www.datastax.com/terms/datastax-dse-driver-license-terms
*/
package com.datastax.driver.core;
import static com.datastax.driver.core.InsightsSchema.*;
import static com.datastax.driver.core.PackageUtil.getNamespace;
import com.datastax.driver.dse.DseCluster;
import com.datastax.driver.dse.graph.GraphOptions;
import java.util.HashMap;
import java.util.Map;
class ExecutionProfilesInfoFinder {
private SpeculativeExecutionInfoFinder speculativeExecutionInfoFinder;
private DataCentersFinder dataCentersFinder;
ExecutionProfilesInfoFinder(
SpeculativeExecutionInfoFinder speculativeExecutionInfoFinder,
DataCentersFinder dataCentersFinder) {
this.speculativeExecutionInfoFinder = speculativeExecutionInfoFinder;
this.dataCentersFinder = dataCentersFinder;
}
Map getExecutionProfilesInfo(Cluster cluster) {
Map executionProfiles =
new HashMap();
Class> loadBalancingClass = cluster.getManager().loadBalancingPolicy().getClass();
SpecificExecutionProfile defaultExecutionProfile =
new SpecificExecutionProfile(
cluster.getConfiguration().getSocketOptions().getReadTimeoutMillis(),
new LoadBalancingInfo(
cluster.getManager().loadBalancingPolicy().getClass().getSimpleName(),
getNamespace(loadBalancingClass),
maybeSetLocalDc(cluster)),
speculativeExecutionInfoFinder.getSpeculativeExecutionInfo(
cluster.getManager().speculativeExecutionPolicy()),
cluster.getConfiguration().getQueryOptions().getConsistencyLevel().toString(),
cluster.getConfiguration().getQueryOptions().getSerialConsistencyLevel().toString(),
getGraphOptions(cluster));
executionProfiles.put("default", defaultExecutionProfile);
return executionProfiles;
}
private Map maybeSetLocalDc(Cluster cluster) {
Map options = new HashMap();
String localDataCenter = dataCentersFinder.getLocalDataCenter(cluster);
if (localDataCenter != null) {
options.put("localDataCenter", localDataCenter);
}
return options;
}
private Map getGraphOptions(Cluster cluster) {
Map graphOptionsMap = new HashMap();
if (cluster instanceof DseCluster) {
DseCluster dseCluster = (DseCluster) cluster;
GraphOptions graphOptions = dseCluster.getConfiguration().getGraphOptions();
graphOptionsMap.put("language", graphOptions.getGraphLanguage());
graphOptionsMap.put("source", graphOptions.getGraphSource());
}
return graphOptionsMap;
}
}