in query-builder/src/main/java/com/datastax/oss/driver/internal/querybuilder/schema/DefaultCreateTable.java [239:321]
public String asCql() {
StringBuilder builder = new StringBuilder();
builder.append("CREATE TABLE ");
if (ifNotExists) {
builder.append("IF NOT EXISTS ");
}
CqlHelper.qualify(keyspace, tableName, builder);
if (columnsInOrder.isEmpty()) {
// no columns provided yet.
return builder.toString();
}
boolean singlePrimaryKey = partitionKeyColumns.size() == 1 && clusteringKeyColumns.size() == 0;
builder.append(" (");
boolean first = true;
for (Map.Entry<CqlIdentifier, DataType> column : columnsInOrder.entrySet()) {
if (first) {
first = false;
} else {
builder.append(',');
}
builder
.append(column.getKey().asCql(true))
.append(' ')
.append(column.getValue().asCql(true, true));
if (singlePrimaryKey && partitionKeyColumns.contains(column.getKey())) {
builder.append(" PRIMARY KEY");
} else if (staticColumns.contains(column.getKey())) {
builder.append(" STATIC");
}
}
if (!singlePrimaryKey) {
builder.append(",");
CqlHelper.buildPrimaryKey(partitionKeyColumns, clusteringKeyColumns, builder);
}
builder.append(')');
if (compactStorage || !orderings.isEmpty() || !options.isEmpty()) {
boolean firstOption = true;
if (compactStorage) {
firstOption = false;
builder.append(" WITH COMPACT STORAGE");
}
if (!orderings.isEmpty()) {
if (firstOption) {
builder.append(" WITH ");
firstOption = false;
} else {
builder.append(" AND ");
}
builder.append("CLUSTERING ORDER BY (");
boolean firstClustering = true;
for (Map.Entry<CqlIdentifier, ClusteringOrder> ordering : orderings.entrySet()) {
if (firstClustering) {
firstClustering = false;
} else {
builder.append(',');
}
builder
.append(ordering.getKey().asCql(true))
.append(' ')
.append(ordering.getValue().toString());
}
builder.append(')');
}
builder.append(OptionsUtils.buildOptions(options, firstOption));
}
return builder.toString();
}