@@ -28,15 +28,18 @@ import static java.lang.String.format; | |||
import static java.util.Objects.requireNonNull; | |||
import static org.sonar.db.version.ColumnDefValidation.validateColumnName; | |||
public class StringColumnDef extends AbstractColumnDef { | |||
/** | |||
* Used to define VARCHAR column | |||
*/ | |||
public class VarcharColumnDef extends AbstractColumnDef { | |||
private final int columnSize; | |||
private StringColumnDef(Builder builder) { | |||
private VarcharColumnDef(Builder builder) { | |||
super(builder.columnName, builder.isNullable); | |||
this.columnSize = builder.columnSize; | |||
} | |||
public static Builder newStringColumnDefBuilder() { | |||
public static Builder newVarcharColumnDefBuilder() { | |||
return new Builder(); | |||
} | |||
@@ -76,10 +79,10 @@ public class StringColumnDef extends AbstractColumnDef { | |||
return this; | |||
} | |||
public StringColumnDef build() { | |||
public VarcharColumnDef build() { | |||
validateColumnName(columnName); | |||
requireNonNull(columnSize, "Limit cannot be null"); | |||
return new StringColumnDef(this); | |||
return new VarcharColumnDef(this); | |||
} | |||
} | |||
@@ -26,7 +26,7 @@ import org.sonar.db.version.AddColumnsBuilder; | |||
import org.sonar.db.version.DdlChange; | |||
import static org.sonar.db.version.BigDecimalColumnDef.newBigDecimalColumnDefBuilder; | |||
import static org.sonar.db.version.StringColumnDef.newStringColumnDefBuilder; | |||
import static org.sonar.db.version.VarcharColumnDef.newVarcharColumnDefBuilder; | |||
/** | |||
* Add the following columns to the issues table : | |||
@@ -56,9 +56,9 @@ public class AddIssuesColumns extends DdlChange { | |||
.addColumn(newBigDecimalColumnDefBuilder().setColumnName("issue_creation_date_ms").setIsNullable(true).build()) | |||
.addColumn(newBigDecimalColumnDefBuilder().setColumnName("issue_update_date_ms").setIsNullable(true).build()) | |||
.addColumn(newBigDecimalColumnDefBuilder().setColumnName("issue_close_date_ms").setIsNullable(true).build()) | |||
.addColumn(newStringColumnDefBuilder().setColumnName("tags").setLimit(4000).setIsNullable(true).build()) | |||
.addColumn(newStringColumnDefBuilder().setColumnName("component_uuid").setLimit(50).setIsNullable(true).build()) | |||
.addColumn(newStringColumnDefBuilder().setColumnName("project_uuid").setLimit(50).setIsNullable(true).build()) | |||
.addColumn(newVarcharColumnDefBuilder().setColumnName("tags").setLimit(4000).setIsNullable(true).build()) | |||
.addColumn(newVarcharColumnDefBuilder().setColumnName("component_uuid").setLimit(50).setIsNullable(true).build()) | |||
.addColumn(newVarcharColumnDefBuilder().setColumnName("project_uuid").setLimit(50).setIsNullable(true).build()) | |||
.build(); | |||
} | |||
@@ -25,7 +25,7 @@ import org.sonar.db.Database; | |||
import org.sonar.db.version.AddColumnsBuilder; | |||
import org.sonar.db.version.DdlChange; | |||
import static org.sonar.db.version.StringColumnDef.newStringColumnDefBuilder; | |||
import static org.sonar.db.version.VarcharColumnDef.newVarcharColumnDefBuilder; | |||
/** | |||
* Add the following column to the manual_measures table : | |||
@@ -44,7 +44,7 @@ public class AddManualMeasuresComponentUuidColumn extends DdlChange { | |||
private String generateSql() { | |||
return new AddColumnsBuilder(getDatabase().getDialect(), "manual_measures") | |||
.addColumn(newStringColumnDefBuilder().setColumnName("component_uuid").setLimit(50).setIsNullable(true).build()) | |||
.addColumn(newVarcharColumnDefBuilder().setColumnName("component_uuid").setLimit(50).setIsNullable(true).build()) | |||
.build(); | |||
} | |||
} |
@@ -33,11 +33,10 @@ import static org.assertj.core.api.Assertions.assertThat; | |||
public class AddColumnsBuilderTest { | |||
static final String TABLE_NAME = "issues"; | |||
@Rule | |||
public ExpectedException thrown = ExpectedException.none(); | |||
static final String TABLE_NAME = "issues"; | |||
@Test | |||
public void add_columns_on_h2() { | |||
assertThat(createSampleBuilder(new H2()).build()) | |||
@@ -79,6 +78,6 @@ public class AddColumnsBuilderTest { | |||
private AddColumnsBuilder createSampleBuilder(Dialect dialect) { | |||
return new AddColumnsBuilder(dialect, TABLE_NAME) | |||
.addColumn(new BigDecimalColumnDef.Builder().setColumnName("date_in_ms").setIsNullable(true).build()) | |||
.addColumn(new StringColumnDef.Builder().setColumnName("name").setLimit(10).setIsNullable(false).build()); | |||
.addColumn(new VarcharColumnDef.Builder().setColumnName("name").setLimit(10).setIsNullable(false).build()); | |||
} | |||
} |
@@ -32,15 +32,14 @@ import org.sonar.db.dialect.PostgreSql; | |||
import static org.assertj.core.api.Assertions.assertThat; | |||
import static org.sonar.db.version.DecimalColumnDef.newDecimalColumnDefBuilder; | |||
import static org.sonar.db.version.StringColumnDef.newStringColumnDefBuilder; | |||
import static org.sonar.db.version.VarcharColumnDef.newVarcharColumnDefBuilder; | |||
public class AlterColumnsBuilderTest { | |||
static final String TABLE_NAME = "issues"; | |||
@Rule | |||
public ExpectedException thrown = ExpectedException.none(); | |||
static final String TABLE_NAME = "issues"; | |||
@Test | |||
public void update_columns_on_h2() { | |||
assertThat(createSampleBuilder(new H2()).build()) | |||
@@ -88,7 +87,7 @@ public class AlterColumnsBuilderTest { | |||
.setScale(20) | |||
.build()) | |||
.updateColumn( | |||
newStringColumnDefBuilder() | |||
newVarcharColumnDefBuilder() | |||
.setColumnName("name") | |||
.setLimit(10) | |||
.build()); |
@@ -17,7 +17,6 @@ | |||
* along with this program; if not, write to the Free Software Foundation, | |||
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. | |||
*/ | |||
package org.sonar.db.version; | |||
import org.junit.Rule; | |||
@@ -31,14 +30,14 @@ import org.sonar.db.dialect.PostgreSql; | |||
import static org.assertj.core.api.Assertions.assertThat; | |||
public class StringColumnDefTest { | |||
public class VarcharColumnDefTest { | |||
@Rule | |||
public ExpectedException thrown = ExpectedException.none(); | |||
@Test | |||
public void build_string_column_def() throws Exception { | |||
StringColumnDef def = new StringColumnDef.Builder() | |||
VarcharColumnDef def = new VarcharColumnDef.Builder() | |||
.setColumnName("issues") | |||
.setLimit(10) | |||
.setIsNullable(true) | |||
@@ -51,7 +50,7 @@ public class StringColumnDefTest { | |||
@Test | |||
public void generate_sql_type() throws Exception { | |||
StringColumnDef def = new StringColumnDef.Builder() | |||
VarcharColumnDef def = new VarcharColumnDef.Builder() | |||
.setColumnName("issues") | |||
.setLimit(10) | |||
.setIsNullable(true) | |||
@@ -69,7 +68,7 @@ public class StringColumnDefTest { | |||
thrown.expect(NullPointerException.class); | |||
thrown.expectMessage("Column name cannot be null"); | |||
new StringColumnDef.Builder() | |||
new VarcharColumnDef.Builder() | |||
.setColumnName(null); | |||
} | |||
@@ -78,7 +77,7 @@ public class StringColumnDefTest { | |||
thrown.expect(NullPointerException.class); | |||
thrown.expectMessage("Column name cannot be null"); | |||
new StringColumnDef.Builder() | |||
new VarcharColumnDef.Builder() | |||
.build(); | |||
} | |||
@@ -87,7 +86,7 @@ public class StringColumnDefTest { | |||
thrown.expect(NullPointerException.class); | |||
thrown.expectMessage("Limit cannot be null"); | |||
new StringColumnDef.Builder() | |||
new VarcharColumnDef.Builder() | |||
.setColumnName("issues") | |||
.build(); | |||
} |