package com.waitingforcode; import com.datastax.driver.core.Cluster; import com.datastax.driver.core.Session; import java.util.ArrayList; import java.util.List; import java.util.stream.Collectors; public class CassandraSession { private static final String TEST_KEYSPACE = "test_keyspace"+System.currentTimeMillis(); private final Session session; private final List wideRowTable80Columns = new ArrayList<>(); private final List wideRowTable40Columns = new ArrayList<>(); private final List wideRowTable20Columns = new ArrayList<>(); public CassandraSession() { Cluster cluster = Cluster.builder().addContactPoint("127.0.0.1").build(); session = cluster.connect(); for (int i = 0; i < 80; i++) { String columnName = "column"+i; wideRowTable80Columns.add(columnName); if (i < 40) { wideRowTable40Columns.add(columnName); if (i < 20) { wideRowTable20Columns.add(columnName); } } } session.execute("CREATE KEYSPACE IF NOT EXISTS "+ TEST_KEYSPACE +" WITH REPLICATION = { 'class' : 'SimpleStrategy', 'replication_factor' : 2}"); session.execute("USE "+ TEST_KEYSPACE); } public List getWideRowTable80Columns() { return wideRowTable80Columns; } public List getWideRowTable40Columns() { return wideRowTable40Columns; } public List getWideRowTable20Columns() { return wideRowTable20Columns; } public void execute(String query) { session.execute(query); } public void createTables() { session.execute(getWideRowTableCreationQuery(wideRowTable80Columns)); session.execute(getWideRowTableCreationQuery(wideRowTable40Columns)); session.execute(getWideRowTableCreationQuery(wideRowTable20Columns)); String skinnyRowTableQuery = "CREATE TABLE skinny_row_test ( col text, value text, PRIMARY KEY (col)) "; session.execute(skinnyRowTableQuery); } private String getWideRowTableCreationQuery(List columns) { int columnsCount = columns.size(); String wideRowTableQuery = "CREATE TABLE wide_rows_test_"+columnsCount+" (id INT, "; String wideRowTableCols = columns.stream().map(column -> column+" text ") .collect(Collectors.joining(",")); wideRowTableQuery += wideRowTableCols; wideRowTableQuery += " , PRIMARY KEY(id) )"; return wideRowTableQuery; } public void closeSession() { session.close(); session.getCluster().close(); } }