com.hmsonline.trident.cql.ConstructorConfiguredCqlClientFactory Maven / Gradle / Ivy
package com.hmsonline.trident.cql;
import java.net.InetSocketAddress;
import java.util.ArrayList;
import java.util.List;
import org.apache.commons.lang.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.datastax.driver.core.Cluster;
import com.datastax.driver.core.ConsistencyLevel;
import com.datastax.driver.core.ProtocolOptions;
import com.datastax.driver.core.QueryOptions;
public class ConstructorConfiguredCqlClientFactory extends CqlClientFactory {
private static final long serialVersionUID = 1L;
private static final Logger LOG = LoggerFactory.getLogger(ConstructorConfiguredCqlClientFactory.class);
private String[] hosts;
private String clusterName = null;
private ConsistencyLevel clusterConsistencyLevel= null;
private ConsistencyLevel serialConsistencyLevel = null;
protected static Cluster cluster;
private final ProtocolOptions.Compression compression;
public ConstructorConfiguredCqlClientFactory(String hosts) {
this(hosts, null, ConsistencyLevel.QUORUM, QueryOptions.DEFAULT_SERIAL_CONSISTENCY_LEVEL, ProtocolOptions.Compression.NONE);
}
public ConstructorConfiguredCqlClientFactory(String hosts, ConsistencyLevel clusterConsistency) {
this(hosts, null, clusterConsistency, QueryOptions.DEFAULT_SERIAL_CONSISTENCY_LEVEL, ProtocolOptions.Compression.NONE);
}
public ConstructorConfiguredCqlClientFactory(String hosts, String clusterName, ConsistencyLevel clusterConsistency,
ConsistencyLevel conditionalUpdateConsistency, ProtocolOptions.Compression compression) {
this.hosts = hosts.split(",");
this.clusterConsistencyLevel = clusterConsistency;
if (conditionalUpdateConsistency != null){
this.serialConsistencyLevel = conditionalUpdateConsistency;
}
if (clusterName != null) {
this.clusterName = clusterName;
}
this.compression = compression;
}
public Cluster.Builder getClusterBuilder() {
final List sockets = new ArrayList();
for (String host : hosts) {
if(StringUtils.contains(host, ":")) {
String hostParts [] = StringUtils.split(host, ":");
sockets.add(new InetSocketAddress(hostParts[0], Integer.valueOf(hostParts[1])));
LOG.debug("Connecting to [" + host + "] with port [" + hostParts[1] + "]");
} else {
sockets.add(new InetSocketAddress(host, ProtocolOptions.DEFAULT_PORT));
LOG.debug("Connecting to [" + host + "] with port [" + ProtocolOptions.DEFAULT_PORT + "]");
}
}
Cluster.Builder builder = Cluster.builder().addContactPointsWithPorts(sockets).withCompression(compression);
QueryOptions queryOptions = new QueryOptions();
queryOptions.setConsistencyLevel(clusterConsistencyLevel);
queryOptions.setSerialConsistencyLevel(serialConsistencyLevel);
builder = builder.withQueryOptions(queryOptions);
if (StringUtils.isNotEmpty(clusterName)) {
builder = builder.withClusterName(clusterName);
}
return builder;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy