Revision 3310d6a0
Added by Andreas Müller almost 6 years ago
cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/database/update/ColumnNameChanger.java | ||
---|---|---|
24 | 24 |
|
25 | 25 |
private static final Logger logger = Logger.getLogger(ColumnNameChanger.class); |
26 | 26 |
|
27 |
private final String newColumnName; |
|
28 |
private final String oldColumnName; |
|
29 |
private final Datatype datatype; //TODO make enum |
|
27 |
private String newColumnName; |
|
28 |
private String oldColumnName; |
|
29 |
private Datatype datatype; |
|
30 |
private Integer size; //only required for MySQL |
|
30 | 31 |
|
31 | 32 |
private enum Datatype{ |
32 | 33 |
integer, |
33 |
clob |
|
34 |
clob, |
|
35 |
varchar |
|
34 | 36 |
} |
35 | 37 |
|
36 | 38 |
public static ColumnNameChanger NewIntegerInstance(String stepName, String tableName, String oldColumnName, String newColumnName, boolean includeAudTable){ |
37 |
return new ColumnNameChanger(stepName, tableName, oldColumnName, newColumnName, includeAudTable, null, Datatype.integer); |
|
39 |
return new ColumnNameChanger(stepName, tableName, oldColumnName, newColumnName, includeAudTable, null, Datatype.integer, null);
|
|
38 | 40 |
} |
39 | 41 |
|
40 | 42 |
public static ColumnNameChanger NewClobInstance(String stepName, String tableName, String oldColumnName, |
41 | 43 |
String newColumnName, boolean includeAudTable){ |
42 |
return new ColumnNameChanger(stepName, tableName, oldColumnName, newColumnName, includeAudTable, null, Datatype.clob); |
|
44 |
return new ColumnNameChanger(stepName, tableName, oldColumnName, newColumnName, includeAudTable, null, Datatype.clob, null);
|
|
43 | 45 |
} |
44 | 46 |
|
47 |
public static ColumnNameChanger NewVarCharInstance(String stepName, String tableName, String oldColumnName, |
|
48 |
String newColumnName, int size, boolean includeAudTable){ |
|
49 |
return new ColumnNameChanger(stepName, tableName, oldColumnName, newColumnName, includeAudTable, null, Datatype.varchar, size); |
|
50 |
} |
|
51 |
|
|
52 |
// **************************************** Constructor ***************************************/ |
|
53 |
|
|
45 | 54 |
protected ColumnNameChanger(String stepName, String tableName, String oldColumnName, |
46 |
String newColumnName, boolean includeAudTable, Object defaultValue, Datatype datatype) { |
|
55 |
String newColumnName, boolean includeAudTable, Object defaultValue, Datatype datatype, Integer size) {
|
|
47 | 56 |
super(stepName, tableName, includeAudTable); |
48 | 57 |
this.newColumnName = newColumnName; |
49 | 58 |
this.oldColumnName = oldColumnName; |
50 | 59 |
this.datatype = datatype; |
60 |
this.size = size; |
|
51 | 61 |
} |
52 | 62 |
|
53 | 63 |
@Override |
... | ... | |
98 | 108 |
return "integer"; |
99 | 109 |
}else if (this.datatype == Datatype.clob){ |
100 | 110 |
return "longtext"; |
101 |
}else{ |
|
111 |
}else if (this.datatype == Datatype.varchar){ |
|
112 |
return "nvarchar("+size+")"; |
|
113 |
}else{ |
|
102 | 114 |
throw new RuntimeException("Definition type not supported"); |
103 | 115 |
} |
104 | 116 |
} |
Also available in: Unified diff
ref #7238 fix datatype for renaming Person.lastname and firstname