String => DataType, CreateTableBuilder#partitionColumn(..) => #partitionKeyColumn(..), other improvements

This commit is contained in:
Matthew Adams
2013-11-15 16:21:28 -06:00
parent ddc85bbb72
commit f04b96e015
3 changed files with 24 additions and 17 deletions

View File

@@ -10,6 +10,8 @@ import org.springframework.data.cassandra.cql.CqlStringUtils;
import org.springframework.data.cassandra.mapping.KeyType;
import org.springframework.data.cassandra.mapping.Ordering;
import com.datastax.driver.core.DataType;
/**
* Builder class to help construct CQL statements that involve column manipulation. Not threadsafe.
* <p/>
@@ -28,7 +30,7 @@ public class ColumnBuilder {
public static final Ordering DFAULT_ORDERING = ASCENDING;
private String name;
private String type;
private DataType type;
private KeyType keyType;
private Ordering ordering;
@@ -51,7 +53,7 @@ public class ColumnBuilder {
*
* @return this
*/
public ColumnBuilder type(String type) {
public ColumnBuilder type(DataType type) {
this.type = type;
return this;
}
@@ -136,7 +138,7 @@ public class ColumnBuilder {
return name;
}
public String getType() {
public DataType getType() {
return type;
}
@@ -158,6 +160,7 @@ public class ColumnBuilder {
@Override
public String toString() {
return toCql(null).append(" /* key=").append(keyType).append(", order=").append(ordering).append(" */").toString();
return toCql(null).append(" /* keyType=").append(keyType).append(", ordering=").append(ordering).append(" */ ")
.toString();
}
}

View File

@@ -17,6 +17,8 @@ import org.springframework.data.cassandra.cql.CqlStringUtils;
import org.springframework.data.cassandra.mapping.KeyType;
import org.springframework.data.cassandra.mapping.Ordering;
import com.datastax.driver.core.DataType;
/**
* Builder class to construct CQL for a <code>CREATE TABLE</code> statement. Not threadsafe.
*
@@ -129,24 +131,24 @@ public class CreateTableBuilder {
return this;
}
public CreateTableBuilder column(String name, String type) {
public CreateTableBuilder column(String name, DataType type) {
return column(name, type, null, null);
}
public CreateTableBuilder partitionColumn(String name, String type) {
public CreateTableBuilder partitionKeyColumn(String name, DataType type) {
return column(name, type, PARTITION, null);
}
public CreateTableBuilder primaryKeyColumn(String name, String type) {
public CreateTableBuilder primaryKeyColumn(String name, DataType type) {
return primaryKeyColumn(name, type, ASCENDING);
}
public CreateTableBuilder primaryKeyColumn(String name, String type, Ordering order) {
public CreateTableBuilder primaryKeyColumn(String name, DataType type, Ordering order) {
return column(name, type, PRIMARY, order);
}
protected CreateTableBuilder column(String name, String type, KeyType key, Ordering order) {
columns().add(new ColumnBuilder().name(name).type(type).keyType(key).ordering(order));
protected CreateTableBuilder column(String name, DataType type, KeyType keyType, Ordering ordering) {
columns().add(new ColumnBuilder().name(name).type(type).keyType(keyType).ordering(ordering));
return this;
}
@@ -309,10 +311,10 @@ public class CreateTableBuilder {
cql.append(", ");
}
cql.append("'").append(entry.getKey()).append("'"); // 'name'
cql.append(singleQuote(entry.getKey())); // 'name'
cql.append(" : ");
Object entryValue = entry.getValue();
cql.append("'").append(entryValue == null ? "" : entryValue.toString()).append("'"); // 'value'
cql.append(singleQuote(entryValue == null ? "" : entryValue.toString())); // 'value'
}
cql.append(" }");

View File

@@ -8,18 +8,20 @@ import java.util.Map;
import org.junit.Test;
import org.springframework.data.cassandra.cql.builder.CreateTableBuilder;
import com.datastax.driver.core.DataType;
public class CreateTableBuilderTest {
@Test
public void createTableTest() {
String name = "mytable";
String type0 = "text";
DataType type0 = DataType.text();
String partition0 = "partitionKey0";
String partition1 = "partitionKey1";
String primary0 = "primary0";
String type1 = "text";
DataType type1 = DataType.text();
String column1 = "column1";
String type2 = "text";
DataType type2 = DataType.bigint();
String column2 = "column2";
Object value2 = "this is a comment";
String option2 = "comment";
@@ -29,8 +31,8 @@ public class CreateTableBuilderTest {
value4.put("class", "LeveledCompactionStrategy");
String option4 = "compaction";
CreateTableBuilder builder = createTable().ifNotExists().name(name).partitionColumn(partition0, type0)
.partitionColumn(partition1, type0).primaryKeyColumn(primary0, type0).column(column1, type1)
CreateTableBuilder builder = createTable().ifNotExists().name(name).partitionKeyColumn(partition0, type0)
.partitionKeyColumn(partition1, type0).primaryKeyColumn(primary0, type0).column(column1, type1)
.column(column2, type2).withQuoted(option2, value2).withUnquoted(option3, value3).with(option4, value4)
.withCompactStorage();