/** * Determine if the named column is auto-incremented. * * @param columnName the name of the column * @return {@code true} if a column exists in this table and it is auto-incremented, or {@code false} otherwise */ default boolean isAutoIncremented(String columnName) { Column column = columnWithName(columnName); return column == null ? false : column.isAutoIncremented(); }
@Override public boolean equals(Object obj) { if (obj == this) return true; if (obj instanceof Column) { Column that = (Column) obj; return this.name().equalsIgnoreCase(that.name()) && this.typeExpression().equalsIgnoreCase(that.typeExpression()) && this.typeName().equalsIgnoreCase(that.typeName()) && this.jdbcType() == that.jdbcType() && Strings.equalsIgnoreCase(this.charsetName(),that.charsetName()) && this.position() == that.position() && this.length() == that.length() && this.scale().equals(that.scale()) && this.isOptional() == that.isOptional() && this.isAutoIncremented() == that.isAutoIncremented() && this.isGenerated() == that.isGenerated() && Objects.equals(this.defaultValue(), that.defaultValue()) && this.hasDefaultValue() == that.hasDefaultValue(); } return false; }
.length(selectedColumn.length()) .scale(selectedColumn.scale().orElse(null)) .autoIncremented(selectedColumn.isAutoIncremented()) .generated(selectedColumn.isGenerated()) .optional(selectedColumn.isOptional()).create());
private Document toDocument(Column column) { Document document = Document.create(); document.setString("name", column.name()); document.setNumber("jdbcType", column.jdbcType()); if (column.nativeType() != Column.UNSET_INT_VALUE) { document.setNumber("nativeType", column.nativeType()); } document.setString("typeName", column.typeName()); document.setString("typeExpression", column.typeExpression()); document.setString("charsetName", column.charsetName()); if (column.length() != Column.UNSET_INT_VALUE) { document.setNumber("length", column.length()); } column.scale().ifPresent(s -> document.setNumber("scale", s)); document.setNumber("position", column.position()); document.setBoolean("optional", column.isOptional()); document.setBoolean("autoIncremented", column.isAutoIncremented()); document.setBoolean("generated", column.isGenerated()); return document; }
@Test public void shouldFilterColumnsUsingPredicate() { assertThat(table.filterColumns(c->c.isAutoIncremented())).containsExactly(c4); assertThat(table.filterColumns(c->c.isGenerated())).containsExactly(c1); assertThat(table.filterColumns(c->c.isOptional())).containsExactly(c3,c4); }
protected void assertColumn(Table table, String name, String typeName, int jdbcType, int length, int scale, boolean optional, boolean generated, boolean autoIncremented ) { Column column = table.columnWithName(name); assertThat(column.name()).isEqualTo(name); assertThat(column.typeName()).isEqualTo(typeName); assertThat(column.jdbcType()).isEqualTo(jdbcType); assertThat(column.length()).isEqualTo(length); if (scale == Column.UNSET_INT_VALUE) { assertFalse(column.scale().isPresent()); } else { assertThat(column.scale().get()).isEqualTo(scale); } assertThat(column.isOptional()).isEqualTo(optional); assertThat(column.isGenerated()).isEqualTo(generated); assertThat(column.isAutoIncremented()).isEqualTo(autoIncremented); }
protected void assertColumn(Table table, String name, String typeName, int jdbcType, int length, int scale, boolean optional, boolean generated, boolean autoIncremented) { Column column = table.columnWithName(name); assertThat(column.name()).isEqualTo(name); assertThat(column.typeName()).isEqualTo(typeName); assertThat(column.jdbcType()).isEqualTo(jdbcType); assertThat(column.length()).isEqualTo(length); if (scale == Column.UNSET_INT_VALUE) { assertFalse(column.scale().isPresent()); } else { assertThat(column.scale().get()).isEqualTo(scale); } assertThat(column.isOptional()).isEqualTo(optional); assertThat(column.isGenerated()).isEqualTo(generated); assertThat(column.isAutoIncremented()).isEqualTo(autoIncremented); }
protected void assertColumn(Table table, String name, String typeName, int jdbcType, int length, String charsetName, boolean optional) { Column column = table.columnWithName(name); assertThat(column.name()).isEqualTo(name); assertThat(column.typeName()).isEqualTo(typeName); assertThat(column.jdbcType()).isEqualTo(jdbcType); assertThat(column.length()).isEqualTo(length); assertThat(column.charsetName()).isEqualTo(charsetName); assertFalse(column.scale().isPresent()); assertThat(column.isOptional()).isEqualTo(optional); assertThat(column.isGenerated()).isFalse(); assertThat(column.isAutoIncremented()).isFalse(); }
@Test public void shouldCreateColumnWithAllFieldsSetToNonDefaults() { createColumnWithAllFieldsSetToNonDefaults(); assertThat(column.name()).isEqualTo("price"); assertThat(column.typeName()).isEqualTo("NUMBER"); assertThat(column.jdbcType()).isEqualTo(Types.DOUBLE); assertThat(column.length()).isEqualTo(5); assertThat(column.scale().get()).isEqualTo(2); assertThat(column.position()).isEqualTo(4); assertThat(column.isOptional()).isTrue(); assertThat(column.isAutoIncremented()).isTrue(); assertThat(column.isGenerated()).isTrue(); }
@Test public void shouldCreateColumnWithAllFieldsSetToDefaults() { Column column = editor.create(); assertThat(column.name()).isNull(); assertThat(column.typeName()).isNull(); assertThat(column.jdbcType()).isEqualTo(Types.INTEGER); assertThat(column.length()).isEqualTo(-1); Assert.assertFalse(column.scale().isPresent()); assertThat(column.position()).isEqualTo(1); assertThat(column.isOptional()).isTrue(); assertThat(column.isAutoIncremented()).isFalse(); assertThat(column.isGenerated()).isFalse(); }
@Test public void shouldFindAutoIncrementedColumns() { editor.tableId(id); Column c1 = columnEditor.name("C1").type("VARCHAR").jdbcType(Types.VARCHAR).length(10).position(1).create(); Column c2 = columnEditor.name("C2").type("NUMBER").jdbcType(Types.NUMERIC).length(5).autoIncremented(true).create(); Column c3 = columnEditor.name("C3").type("DATE").jdbcType(Types.DATE).autoIncremented(true).create(); editor.addColumns(c1, c2, c3); editor.setPrimaryKeyNames("C1"); table = editor.create(); assertThat(table.retrieveColumnNames()).containsExactly("C1", "C2", "C3"); table.columns().forEach(col -> { assertThat(table.isAutoIncremented(col.name())).isEqualTo(col.isAutoIncremented()); }); assertValidPositions(editor); }
Table person = tables.forTable(DATABASE.getDatabaseName(), null, "person"); assertThat(person).isNotNull(); assertThat(person.filterColumns(col->col.isAutoIncremented())).isEmpty(); assertThat(person.primaryKeyColumnNames()).containsOnly("name"); assertThat(person.retrieveColumnNames()).containsExactly("name","birthdate","age","salary","bitStr"); assertFalse(person.columnWithName("name").scale().isPresent()); assertThat(person.columnWithName("name").position()).isEqualTo(1); assertThat(person.columnWithName("name").isAutoIncremented()).isFalse(); assertThat(person.columnWithName("name").isGenerated()).isFalse(); assertThat(person.columnWithName("name").isOptional()).isFalse(); assertFalse(person.columnWithName("birthdate").scale().isPresent()); assertThat(person.columnWithName("birthdate").position()).isEqualTo(2); assertThat(person.columnWithName("birthdate").isAutoIncremented()).isFalse(); assertThat(person.columnWithName("birthdate").isGenerated()).isFalse(); assertThat(person.columnWithName("birthdate").isOptional()).isTrue(); assertThat(person.columnWithName("age").isAutoIncremented()).isFalse(); assertThat(person.columnWithName("age").isGenerated()).isFalse(); assertThat(person.columnWithName("age").isOptional()).isTrue(); assertThat(person.columnWithName("salary").scale().get()).isEqualTo(2); assertThat(person.columnWithName("salary").position()).isEqualTo(4); assertThat(person.columnWithName("salary").isAutoIncremented()).isFalse(); assertThat(person.columnWithName("salary").isGenerated()).isFalse(); assertThat(person.columnWithName("salary").isOptional()).isTrue(); assertFalse(person.columnWithName("bitStr").scale().isPresent());
/** * Determine if the named column is auto-incremented. * * @param columnName the name of the column * @return {@code true} if a column exists in this table and it is auto-incremented, or {@code false} otherwise */ default boolean isAutoIncremented(String columnName) { Column column = columnWithName(columnName); return column == null ? false : column.isAutoIncremented(); }
@Override public boolean equals(Object obj) { if (obj == this) return true; if (obj instanceof Column) { Column that = (Column) obj; return this.name().equalsIgnoreCase(that.name()) && this.typeExpression().equalsIgnoreCase(that.typeExpression()) && this.typeName().equalsIgnoreCase(that.typeName()) && this.jdbcType() == that.jdbcType() && Strings.equalsIgnoreCase(this.charsetName(),that.charsetName()) && this.position() == that.position() && this.length() == that.length() && this.scale().equals(that.scale()) && this.isOptional() == that.isOptional() && this.isAutoIncremented() == that.isAutoIncremented() && this.isGenerated() == that.isGenerated() && Objects.equals(this.defaultValue(), that.defaultValue()) && this.hasDefaultValue() == that.hasDefaultValue(); } return false; }
private Document toDocument(Column column) { Document document = Document.create(); document.setString("name", column.name()); document.setNumber("jdbcType", column.jdbcType()); if (column.nativeType() != Column.UNSET_INT_VALUE) { document.setNumber("nativeType", column.nativeType()); } document.setString("typeName", column.typeName()); document.setString("typeExpression", column.typeExpression()); document.setString("charsetName", column.charsetName()); if (column.length() != Column.UNSET_INT_VALUE) { document.setNumber("length", column.length()); } column.scale().ifPresent(s -> document.setNumber("scale", s)); document.setNumber("position", column.position()); document.setBoolean("optional", column.isOptional()); document.setBoolean("autoIncremented", column.isAutoIncremented()); document.setBoolean("generated", column.isGenerated()); return document; }
protected void assertColumn(Table table, String name, String typeName, int jdbcType, int length, int scale, boolean optional, boolean generated, boolean autoIncremented) { Column column = table.columnWithName(name); assertThat(column.name()).isEqualTo(name); assertThat(column.typeName()).isEqualTo(typeName); assertThat(column.jdbcType()).isEqualTo(jdbcType); assertThat(column.length()).isEqualTo(length); if (scale == Column.UNSET_INT_VALUE) { assertFalse(column.scale().isPresent()); } else { assertThat(column.scale().get()).isEqualTo(scale); } assertThat(column.isOptional()).isEqualTo(optional); assertThat(column.isGenerated()).isEqualTo(generated); assertThat(column.isAutoIncremented()).isEqualTo(autoIncremented); }
protected void assertColumn(Table table, String name, String typeName, int jdbcType, int length, String charsetName, boolean optional) { Column column = table.columnWithName(name); assertThat(column.name()).isEqualTo(name); assertThat(column.typeName()).isEqualTo(typeName); assertThat(column.jdbcType()).isEqualTo(jdbcType); assertThat(column.length()).isEqualTo(length); assertThat(column.charsetName()).isEqualTo(charsetName); assertFalse(column.scale().isPresent()); assertThat(column.isOptional()).isEqualTo(optional); assertThat(column.isGenerated()).isFalse(); assertThat(column.isAutoIncremented()).isFalse(); }
Table person = tables.forTable(DATABASE.getDatabaseName(), null, "person"); assertThat(person).isNotNull(); assertThat(person.filterColumns(col->col.isAutoIncremented())).isEmpty(); assertThat(person.primaryKeyColumnNames()).containsOnly("name"); assertThat(person.retrieveColumnNames()).containsExactly("name","birthdate","age","salary","bitStr"); assertFalse(person.columnWithName("name").scale().isPresent()); assertThat(person.columnWithName("name").position()).isEqualTo(1); assertThat(person.columnWithName("name").isAutoIncremented()).isFalse(); assertThat(person.columnWithName("name").isGenerated()).isFalse(); assertThat(person.columnWithName("name").isOptional()).isFalse(); assertFalse(person.columnWithName("birthdate").scale().isPresent()); assertThat(person.columnWithName("birthdate").position()).isEqualTo(2); assertThat(person.columnWithName("birthdate").isAutoIncremented()).isFalse(); assertThat(person.columnWithName("birthdate").isGenerated()).isFalse(); assertThat(person.columnWithName("birthdate").isOptional()).isTrue(); assertThat(person.columnWithName("age").isAutoIncremented()).isFalse(); assertThat(person.columnWithName("age").isGenerated()).isFalse(); assertThat(person.columnWithName("age").isOptional()).isTrue(); assertThat(person.columnWithName("salary").scale().get()).isEqualTo(2); assertThat(person.columnWithName("salary").position()).isEqualTo(4); assertThat(person.columnWithName("salary").isAutoIncremented()).isFalse(); assertThat(person.columnWithName("salary").isGenerated()).isFalse(); assertThat(person.columnWithName("salary").isOptional()).isTrue(); assertFalse(person.columnWithName("bitStr").scale().isPresent());