/**
* Created by mark on 09/07/15.
*/
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import com.datastax.driver.core.Cluster;
import com.datastax.driver.core.Cluster.Builder;
import com.datastax.driver.core.HostDistance;
import com.datastax.driver.core.PoolingOptions;
import com.datastax.driver.core.Session;
import com.datastax.driver.core.exceptions.AlreadyExistsException;
public class TestAlreadyExists {
private static void createKeyspace(Cluster cluster, String keyspace) {
Session session = cluster.connect();
StringBuilder expression = new StringBuilder();
expression.append("create keyspace ");
expression.append(keyspace);
expression.append(" with replication = { 'class' : 'SimpleStrategy', 'replication_factor': '1'}");
session.execute(expression.toString());
session.close();
}
private static void createTable(Session session, String table) throws IOException {
System.out.println(" - create table");
session.execute(getContent("/Users/mark/javaStuff/MarkC/TestAlreadyExists/" + table + "/table.txt"));
}
private static void waitForSchemaAgreement(Cluster cluster) {
while (!cluster.getMetadata().checkSchemaAgreement()) {
try {
Thread.sleep(500);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
private static String getContent(String path) throws IOException {
StringBuilder sb = new StringBuilder();
//BufferedReader br = new BufferedReader(new InputStreamReader(TestAlreadyExists.class.getResourceAsStream(path)));
BufferedReader br = new BufferedReader(new FileReader(path));
String line = null;
while ((line = br.readLine()) != null) {
sb.append(line);
}
br.close();
return sb.toString();
}
public static void main(String[] args) throws IOException {
Builder builder = Cluster.builder();
builder.addContactPoint("192.168.56.21");
Cluster cluster = builder.build();
PoolingOptions pools = cluster.getConfiguration().getPoolingOptions();
pools.setCoreConnectionsPerHost(HostDistance.REMOTE, 2);
pools.setMaxConnectionsPerHost(HostDistance.REMOTE, 2);
for (int i = 1; i < 50; i++) {
String keyspace = "test" + i;
if (!cluster.getMetadata().checkSchemaAgreement()) {
waitForSchemaAgreement(cluster);
}
try {
createKeyspace(cluster, keyspace);
} catch (AlreadyExistsException ae) {
System.out.println(">>>WARN: " + ae.getMessage() + " <<<");
}
if (!cluster.getMetadata().checkSchemaAgreement()) {
waitForSchemaAgreement(cluster);
}
Session session = cluster.connect(keyspace);
String[] tables = {"Agent",
"Award",
"Contribution",
"Customer",
"EditorialObject",
"HistoricalNote",
"Location",
"Opus",
"Profession",
"PublicationEvent",
"Role"};
for (String table : tables) {
System.out.println("table " + table);
if (!cluster.getMetadata().checkSchemaAgreement()) {
waitForSchemaAgreement(cluster);
}
try {
createTable(session, table);
} catch (AlreadyExistsException ae) {
System.out.println(">>>WARN: " + ae.getMessage() + " <<<");
}
if (!cluster.getMetadata().checkSchemaAgreement()) {
waitForSchemaAgreement(cluster);
}
System.out.println("done " + i);
}
}
}
}