Fix migration script

This commit is contained in:
Igor Kulikov 2020-05-19 15:56:51 +03:00
parent 22e5da1c02
commit 135aa8ddb9
2 changed files with 14 additions and 8 deletions

View File

@ -135,7 +135,7 @@ public class CassandraEntitiesToSqlMigrateService implements EntitiesMigrateServ
stringColumn("entity_type"), stringColumn("entity_type"),
stringColumn("attribute_type"), stringColumn("attribute_type"),
stringColumn("attribute_key"), stringColumn("attribute_key"),
booleanColumn("bool_v"), booleanColumn("bool_v", true),
stringColumn("str_v"), stringColumn("str_v"),
bigintColumn("long_v"), bigintColumn("long_v"),
doubleColumn("dbl_v"), doubleColumn("dbl_v"),

View File

@ -38,6 +38,7 @@ public class CassandraToSqlColumn {
private int sqlType; private int sqlType;
private int size; private int size;
private Class<? extends Enum> enumClass; private Class<? extends Enum> enumClass;
private boolean allowNullBoolean = false;
public static CassandraToSqlColumn idColumn(String name) { public static CassandraToSqlColumn idColumn(String name) {
return new CassandraToSqlColumn(name, CassandraToSqlColumnType.ID); return new CassandraToSqlColumn(name, CassandraToSqlColumnType.ID);
@ -60,7 +61,11 @@ public class CassandraToSqlColumn {
} }
public static CassandraToSqlColumn booleanColumn(String name) { public static CassandraToSqlColumn booleanColumn(String name) {
return new CassandraToSqlColumn(name, CassandraToSqlColumnType.BOOLEAN); return booleanColumn(name, false);
}
public static CassandraToSqlColumn booleanColumn(String name, boolean allowNullBoolean) {
return new CassandraToSqlColumn(name, name, CassandraToSqlColumnType.BOOLEAN, null, allowNullBoolean);
} }
public static CassandraToSqlColumn jsonColumn(String name) { public static CassandraToSqlColumn jsonColumn(String name) {
@ -72,32 +77,33 @@ public class CassandraToSqlColumn {
} }
public CassandraToSqlColumn(String columnName) { public CassandraToSqlColumn(String columnName) {
this(columnName, columnName, CassandraToSqlColumnType.STRING, null); this(columnName, columnName, CassandraToSqlColumnType.STRING, null, false);
} }
public CassandraToSqlColumn(String columnName, CassandraToSqlColumnType type) { public CassandraToSqlColumn(String columnName, CassandraToSqlColumnType type) {
this(columnName, columnName, type, null); this(columnName, columnName, type, null, false);
} }
public CassandraToSqlColumn(String columnName, CassandraToSqlColumnType type, Class<? extends Enum> enumClass) { public CassandraToSqlColumn(String columnName, CassandraToSqlColumnType type, Class<? extends Enum> enumClass) {
this(columnName, columnName, type, enumClass); this(columnName, columnName, type, enumClass, false);
} }
public CassandraToSqlColumn(String cassandraColumnName, String sqlColumnName) { public CassandraToSqlColumn(String cassandraColumnName, String sqlColumnName) {
this(cassandraColumnName, sqlColumnName, CassandraToSqlColumnType.STRING, null); this(cassandraColumnName, sqlColumnName, CassandraToSqlColumnType.STRING, null, false);
} }
public CassandraToSqlColumn(String cassandraColumnName, String sqlColumnName, CassandraToSqlColumnType type, public CassandraToSqlColumn(String cassandraColumnName, String sqlColumnName, CassandraToSqlColumnType type,
Class<? extends Enum> enumClass) { Class<? extends Enum> enumClass, boolean allowNullBoolean) {
this.cassandraColumnName = cassandraColumnName; this.cassandraColumnName = cassandraColumnName;
this.sqlColumnName = sqlColumnName; this.sqlColumnName = sqlColumnName;
this.type = type; this.type = type;
this.enumClass = enumClass; this.enumClass = enumClass;
this.allowNullBoolean = allowNullBoolean;
} }
public String getColumnValue(Row row) { public String getColumnValue(Row row) {
if (row.isNull(index)) { if (row.isNull(index)) {
if (this.type == CassandraToSqlColumnType.BOOLEAN) { if (this.type == CassandraToSqlColumnType.BOOLEAN && !this.allowNullBoolean) {
return Boolean.toString(false); return Boolean.toString(false);
} else { } else {
return null; return null;