/** * Create a {@link ColumnSchema} builder with given column name and type. * * @param columnName * @param type * @return A builder object used for schema creation */ public static Builder builder(String columnName, ColumnType type) { return new Builder(columnName, type); }
/** * Create a {@link ColumnSchema} based on fields in the builder. * * @return Column Schema */ public ColumnSchema build() { return new ColumnSchema(columnName, type, isNullable, isAutoIncrement, maxLength, scale, precision); } }
/** * Verifies that the provided table schema has an auto increment column name * * @param schema The table schema to verify * @return True if the schema has an auto increment column name, false otherwise */ public static boolean hasAutoIncrementColumn(final TableSchema schema) { return schema.getAutoIncrementColumn() != null; }
@Test public void testHasAutoIncrementColumnNotAutoInc() { final List<ColumnSchema> columns = ImmutableList.<ColumnSchema>of( ColumnSchema.builder(COLUMN_B, ColumnType.LONG).setIsAutoIncrement(false).build()); final TableSchema tableSchema = new TableSchema(columns, ImmutableList.<IndexSchema>of()); Verify.hasAutoIncrementColumn(tableSchema); } }
@Test(expected = IllegalArgumentException.class) public void testBuildDecimalColumnWithMaxLength() { new ColumnSchema.Builder(TEST_COLUMN, ColumnType.DECIMAL).setScale(0).setPrecision(0).setMaxLength(0).build(); }
@Test(expected = IllegalArgumentException.class) public void testBuildDecimalColumnAsAutoIncrement() { new ColumnSchema.Builder(TEST_COLUMN, ColumnType.DECIMAL).setScale(0).setPrecision(0).setIsNullable(false) .setIsAutoIncrement(true).build(); }
@Test public void testGetColumnSchemaValidColumnName() { final TableSchema schema = new TableSchema(ImmutableList.<ColumnSchema>of(FAKE_COL_SCHEMA), INDICES); final ColumnSchema actual = schema.getColumnSchema(FAKE_COL_SCHEMA.getColumnName()); assertEquals(FAKE_COL_SCHEMA.getColumnName(), actual.getColumnName()); assertEquals(FAKE_COL_SCHEMA, actual); }
public QueryKeyGenerator(TableSchema schema) { super(); this.rows = new RowGenerator(schema); ImmutableList.Builder<String> indices = ImmutableList.builder(); for (IndexSchema indexSchema : schema.getIndices()) { indices.add(indexSchema.getIndexName()); } this.indices = PrimitiveGenerators.fixedValues(indices.build()); }
public RowGenerator(TableSchema schema) { super(); ImmutableMap.Builder<String, Generator<ByteBuffer>> recordGenerators = ImmutableMap.builder(); for (ColumnSchema column : schema.getColumns()) { recordGenerators.put(column.getColumnName(), new FieldGenerator(column)); } this.recordGenerators = recordGenerators.build(); }
/** * Return the name of the auto increment column in the table, or null. * * @return ColumnSchema with an auto increment modifier */ public String getAutoIncrementColumn() { for (ColumnSchema entry : columns) { if (entry.getIsAutoIncrement()) { return entry.getColumnName(); } } return null; }
@Test public void testBuildULongColumnAsAutoIncrement() { new ColumnSchema.Builder(TEST_COLUMN, ColumnType.ULONG).setIsAutoIncrement(true).build(); }
@Test public void testBuildBinaryColumnValidMaxLength() { new ColumnSchema.Builder(TEST_COLUMN, ColumnType.BINARY).setMaxLength(0).build(); }
@Test(expected = IllegalArgumentException.class) public void testDeserializeEmptyIndexName() { IndexSchema.deserialize(TEST_INDEX_SCHEMA.serialize(), ""); }
@Test(expected = NullPointerException.class) public void testDeserializeInvalidColumnName() { ColumnSchema.deserialize(TEST_COL_SCHEMA.serialize(), null); }
@Test(expected = NullPointerException.class) public void testGetColumnSchemaInvalidColumnName() { tableSchema.getColumnSchema(null); }
@Test(expected = NullPointerException.class) public void testDeserializeNullSerializedSchema() { IndexSchema.deserialize(null, INDEX_A); }
@Test(expected = NullPointerException.class) public void testRemoveIndexUnknownIndexName() { tableSchema.removeIndex(UNKNOWN_INDEX); }
@Test public void testHasAutoIncrementColumn() { final List<ColumnSchema> columns = ImmutableList.<ColumnSchema>of( ColumnSchema.builder(COLUMN_B, ColumnType.LONG).setIsAutoIncrement(true).build()); final TableSchema tableSchema = new TableSchema(columns, ImmutableList.<IndexSchema>of()); Verify.hasAutoIncrementColumn(tableSchema); }
@Test(expected = IllegalArgumentException.class) public void testBuildDecimalColumnInvalidScale() { new ColumnSchema.Builder(TEST_COLUMN, ColumnType.DECIMAL).setScale(-1).setPrecision(0).build(); }
@Test public void testIsValidTableSchemaValidSchema() { final List<ColumnSchema> columns = ImmutableList.<ColumnSchema>of( ColumnSchema.builder(COLUMN_B, ColumnType.LONG).setIsAutoIncrement(true).build()); Verify.isValidTableSchema(new TableSchema(columns, ImmutableList.<IndexSchema>of())); }