/** * Start building a new CREATE TYPE statement. * * @param typeName the name of the custom type to create. * @return an in-construction CREATE TYPE statement. */ public static CreateType createType(String typeName) { return new CreateType(typeName); }
@Override public String buildInternal() { StringBuilder createStatement = new StringBuilder(STATEMENT_START).append("CREATE TYPE "); if (ifNotExists) { createStatement.append("IF NOT EXISTS "); } if (keyspaceName.isPresent()) { createStatement.append(keyspaceName.get()).append("."); } createStatement.append(typeName); List<String> allColumns = new ArrayList<String>(); for (Map.Entry<String, ColumnType> entry : simpleColumns.entrySet()) { allColumns.add(buildColumnType(entry)); } createStatement.append("(").append(COLUMN_FORMATTING); createStatement.append(Joiner.on("," + COLUMN_FORMATTING).join(allColumns)); createStatement.append(")"); return createStatement.toString(); } }
/** * Generate the script for custom type creation * * @return a CREATE TYPE statement */ public String build() { return buildInternal(); }
CreateType(String typeName) { validateNotEmpty(typeName, "Custom type name"); validateNotKeyWord( typeName, String.format( "The custom type name '%s' is not allowed because it is a reserved keyword", typeName)); this.typeName = typeName; }
@Test(groups = "unit") public void should_create_UDT_if_not_exists() throws Exception { // When SchemaStatement statement = createType("myType") .ifNotExists() .addColumn("col1", DataType.text()) .addColumn("col2", DataType.bigint()); // Then assertThat(statement.getQueryString()) .isEqualTo( "\n\tCREATE TYPE IF NOT EXISTS myType(\n\t\t" + "col1 text,\n\t\t" + "col2 bigint)"); }
@Test(groups = "unit") public void should_create_simple_UDT_column() throws Exception { // When SchemaStatement statement = createType("ks", "myType") .addColumn("col1", DataType.text()) .addUDTColumn("my_udt", frozen("address")); // Then assertThat(statement.getQueryString()) .isEqualTo( "\n\tCREATE TYPE ks.myType(\n\t\t" + "col1 text,\n\t\t" + "my_udt frozen<address>)"); }
@Test(groups = "unit") public void should_create_key_UDT_map_column() throws Exception { // When SchemaStatement statement = createType("ks", "myType") .addColumn("col1", DataType.text()) .addUDTMapColumn("my_udt", frozen("address"), DataType.text()); // Then assertThat(statement.getQueryString()) .isEqualTo( "\n\tCREATE TYPE ks.myType(\n\t\t" + "col1 text,\n\t\t" + "my_udt map<frozen<address>, text>)"); }
@Test(groups = "unit") public void should_create_list_UDT_column() throws Exception { // When SchemaStatement statement = createType("ks", "myType") .addColumn("col1", DataType.text()) .addUDTListColumn("my_udt", frozen("address")); // Then assertThat(statement.getQueryString()) .isEqualTo( "\n\tCREATE TYPE ks.myType(\n\t\t" + "col1 text,\n\t\t" + "my_udt list<frozen<address>>)"); }
@Test(groups = "unit") public void should_create_set_UDT_column() throws Exception { // When SchemaStatement statement = createType("ks", "myType") .addColumn("col1", DataType.text()) .addUDTSetColumn("my_udt", frozen("address")); // Then assertThat(statement.getQueryString()) .isEqualTo( "\n\tCREATE TYPE ks.myType(\n\t\t" + "col1 text,\n\t\t" + "my_udt set<frozen<address>>)"); }
@Test(groups = "unit") public void should_create_UDT() throws Exception { // When SchemaStatement statement = createType("ks", "myType") .addColumn("col1", DataType.text()) .addColumn("col2", DataType.bigint()); // Then assertThat(statement.getQueryString()) .isEqualTo("\n\tCREATE TYPE ks.myType(\n\t\t" + "col1 text,\n\t\t" + "col2 bigint)"); }
public Builder statement(Function<CreateType, CreateType> createStatement) { return originalBuilderReference.addType( new CassandraType(typeName, createStatement.apply( SchemaBuilder.createType(typeName) .ifNotExists()))); } }
CreateType(String keyspaceName, String typeName) { validateNotEmpty(keyspaceName, "Keyspace name"); validateNotEmpty(typeName, "Custom type name"); validateNotKeyWord( keyspaceName, String.format( "The keyspace name '%s' is not allowed because it is a reserved keyword", keyspaceName)); validateNotKeyWord( typeName, String.format( "The custom type name '%s' is not allowed because it is a reserved keyword", typeName)); this.typeName = typeName; this.keyspaceName = Optional.fromNullable(keyspaceName); }
@Test(groups = "unit") public void should_create_key_value_UDT_map_column() throws Exception { // When SchemaStatement statement = createType("ks", "myType") .addColumn("col1", DataType.text()) .addUDTMapColumn("my_udt", frozen("coords"), frozen("address")); // Then assertThat(statement.getQueryString()) .isEqualTo( "\n\tCREATE TYPE ks.myType(\n\t\t" + "col1 text,\n\t\t" + "my_udt map<frozen<coords>, frozen<address>>)"); }
.execute(SchemaBuilder.createType("MyUDT").ifNotExists().addColumn("x", DataType.cint())); UDTType myUDT = UDTType.frozen("MyUDT"); session()
@Test(groups = "unit") public void should_create_column_with_manual_type() throws Exception { // When SchemaStatement statement = createType("ks", "myType") .addColumn("col1", DataType.text()) .addUDTColumn("my_udt", udtLiteral("frozen<address>")); // Then assertThat(statement.getQueryString()) .isEqualTo( "\n\tCREATE TYPE ks.myType(\n\t\t" + "col1 text,\n\t\t" + "my_udt frozen<address>)"); } }
@Test(groups = "unit") public void should_create_list_UDT_column() throws Exception { // When SchemaStatement statement = createType("ks", "myType") .addColumn("col1", DataType.text()) .addUDTListColumn("my_udt", frozen("address")); // Then assertThat(statement.getQueryString()) .isEqualTo( "\n\tCREATE TYPE ks.myType(\n\t\t" + "col1 text,\n\t\t" + "my_udt list<frozen<address>>)"); }
@Test(groups = "unit") public void should_create_set_UDT_column() throws Exception { // When SchemaStatement statement = createType("ks", "myType") .addColumn("col1", DataType.text()) .addUDTSetColumn("my_udt", frozen("address")); // Then assertThat(statement.getQueryString()) .isEqualTo( "\n\tCREATE TYPE ks.myType(\n\t\t" + "col1 text,\n\t\t" + "my_udt set<frozen<address>>)"); }
public Builder statement(Function<CreateType, CreateType> createStatement) { return originalBuilderReference.addType( new CassandraType(typeName, createStatement.apply( SchemaBuilder.createType(typeName) .ifNotExists()))); } }
CreateType(String typeName) { validateNotEmpty(typeName, "Custom type name"); validateNotKeyWord(typeName, String.format("The custom type name '%s' is not allowed because it is a reserved keyword", typeName)); this.typeName = typeName; }