All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.datastax.driver.core.ExecutionProfilesInfoFinder Maven / Gradle / Ivy

Go to download

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.

There is a newer version: 2.4.0
Show newest version
/*
 * 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;
  }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy