Project

General

Profile

« Previous | Next » 

Revision 3310d6a0

Added by Andreas Müller almost 6 years ago

ref #7238 fix datatype for renaming Person.lastname and firstname

View differences:

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
	}
cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/database/update/v47_49/SchemaUpdater_47_49.java
153 153
        tableName = "AgentBase";
154 154
        String oldColumnName = "lastname";
155 155
        newColumnName = "familyName";
156
        step = ColumnNameChanger.NewClobInstance(stepName, tableName, oldColumnName, newColumnName, INCLUDE_AUDIT);
156
        int size = 255;
157
        step = ColumnNameChanger.NewVarCharInstance(stepName, tableName, oldColumnName, newColumnName, size, INCLUDE_AUDIT);
157 158
        stepList.add(step);
158 159

  
159 160
        //... firstName
......
161 162
        tableName = "AgentBase";
162 163
        oldColumnName = "firstname";
163 164
        newColumnName = "givenName";
164
        step = ColumnNameChanger.NewClobInstance(stepName, tableName, oldColumnName, newColumnName, INCLUDE_AUDIT);
165
        size = 255;
166
        step = ColumnNameChanger.NewVarCharInstance(stepName, tableName, oldColumnName, newColumnName, size, INCLUDE_AUDIT);
165 167
        stepList.add(step);
166 168

  
167 169
        //#7210 Add salt field for User
......
199 201
        stepName = "Make individual count a string";
200 202
        tableName = "SpecimenOrObservationBase";
201 203
        String columnName = "individualCount";
202
        int size = 255;
204
        size = 255;
203 205
        step = ColumnTypeChanger.NewInt2StringInstance(stepName, tableName, columnName, size, INCLUDE_AUDIT, null, !NOT_NULL);
204 206
        stepList.add(step);
205 207

  

Also available in: Unified diff