Project

General

Profile

Download (20.5 KB) Statistics
| Branch: | Tag: | Revision:
1
/**
2
 * Copyright (C) 2007 EDIT
3
 * European Distributed Institute of Taxonomy
4
 * http://www.e-taxonomy.eu
5
 *
6
 * The contents of this file are subject to the Mozilla Public License Version 1.1
7
 * See LICENSE.TXT at the top of this package for the full license terms.
8
 */
9

    
10
package eu.etaxonomy.cdm.database.update.v50_55;
11

    
12
import java.util.ArrayList;
13
import java.util.List;
14
import java.util.UUID;
15

    
16
import org.apache.logging.log4j.LogManager;import org.apache.logging.log4j.Logger;
17

    
18
import eu.etaxonomy.cdm.common.UTF8;
19
import eu.etaxonomy.cdm.database.update.ColumnAdder;
20
import eu.etaxonomy.cdm.database.update.ColumnNameChanger;
21
import eu.etaxonomy.cdm.database.update.ColumnRemover;
22
import eu.etaxonomy.cdm.database.update.ColumnTypeChanger;
23
import eu.etaxonomy.cdm.database.update.ISchemaUpdater;
24
import eu.etaxonomy.cdm.database.update.ISchemaUpdaterStep;
25
import eu.etaxonomy.cdm.database.update.MnTableCreator;
26
import eu.etaxonomy.cdm.database.update.SchemaUpdaterBase;
27
import eu.etaxonomy.cdm.database.update.SimpleSchemaUpdaterStep;
28
import eu.etaxonomy.cdm.database.update.TableNameChanger;
29
import eu.etaxonomy.cdm.database.update.TermRepresentationUpdater;
30
import eu.etaxonomy.cdm.database.update.v40_50.SchemaUpdater_47_50;
31
import eu.etaxonomy.cdm.model.term.TermType;
32

    
33
/**
34
/**
35
 * @author a.mueller
36
 * @date 09.06.2017
37
 */
38
public class SchemaUpdater_50_55 extends SchemaUpdaterBase {
39

    
40
	@SuppressWarnings("unused")
41
	private static final Logger logger = LogManager.getLogger(SchemaUpdater_50_55.class);
42
	private static final String startSchemaVersion = "5.0.0.0.20180514";
43
	private static final String endSchemaVersion = "5.5.0.0.20190221";
44

    
45
	// ********************** FACTORY METHOD *************************************
46

    
47
	public static SchemaUpdater_50_55 NewInstance() {
48
		return new SchemaUpdater_50_55();
49
	}
50

    
51
	/**
52
	 * @param startSchemaVersion
53
	 * @param endSchemaVersion
54
	 */
55
	protected SchemaUpdater_50_55() {
56
		super(startSchemaVersion, endSchemaVersion);
57
	}
58

    
59
	@Override
60
	protected List<ISchemaUpdaterStep> getUpdaterList() {
61

    
62
		String stepName;
63
		String tableName;
64
		String newColumnName;
65
		String query;
66

    
67
		List<ISchemaUpdaterStep> stepList = new ArrayList<>();
68

    
69

    
70
		//#6699 delete term version
71
		//just in case not fixed before yet
72
		stepName = "Delete term version";
73
		query = "DELETE FROM @@CdmMetaData@@ WHERE propertyName = 'TERM_VERSION'";
74
		SimpleSchemaUpdaterStep.NewNonAuditedInstance(stepList, stepName, query, -99);
75

    
76
        //#7414 remove mediaCreatedOld column
77
        stepName = "remove mediaCreatedOld column";
78
        tableName = "Media";
79
        String oldColumnName = "mediaCreatedOld";
80
        ColumnRemover.NewInstance(stepList, stepName, tableName, oldColumnName, INCLUDE_AUDIT);
81

    
82
        //#7772 rename TermBase_inverseRepresentation to DefinedTermBase_InverseRepresentation
83
        stepName = "Rename TermBase_inverseRepresentation to DefinedTermBase_InverseRepresentation";
84
        String oldName = "TermBase_inverseRepresentation";
85
        String newName = "DefinedTermBase_InverseRepresentation";
86
        TableNameChanger.NewInstance(stepList, stepName, oldName,
87
                newName, INCLUDE_AUDIT);
88

    
89
        //#7772 rename DefinedTermBase_InverseRepresentation.term_id to .definedTermBase_id
90
        stepName = "Rename TermBase_inverseRepresentation to DefinedTermBase_InverseRepresentation";
91
        tableName = "DefinedTermBase_InverseRepresentation";
92
        oldColumnName = "term_id";
93
        newColumnName = "definedTermBase_id";
94
        ColumnNameChanger.NewIntegerInstance(stepList, stepName, tableName, oldColumnName, newColumnName, INCLUDE_AUDIT);
95

    
96
        //#8004 add sortindex to description element
97
        stepName = "Add sortindex to description element";
98
        tableName = "DescriptionElementBase";
99
        newColumnName = "sortIndex";
100
        ColumnAdder.NewIntegerInstance(stepList, stepName, tableName, newColumnName, INCLUDE_AUDIT, null, !NOT_NULL);
101

    
102
        //#7682 update Point.precision from 0 to null
103
        stepName = "update Point.precision from 0 to null";
104
        query = "UPDATE @@GatheringEvent@@ SET exactLocation_errorRadius = null WHERE exactLocation_errorRadius = 0 ";
105
        tableName = "GatheringEvent";
106
        SimpleSchemaUpdaterStep.NewAuditedInstance(stepList, stepName, query, tableName, -99);
107

    
108
        //#7859 CdmPreference.value as CLOB
109
        stepName = "Make CdmPreference.value a CLOB";
110
        String columnName = "value";
111
        tableName = "CdmPreference";
112
        // TODO check non MySQL and with existing data (probably does not exist)
113
        ColumnTypeChanger.NewClobInstance(stepList, stepName, tableName,
114
                columnName, !INCLUDE_AUDIT);
115

    
116
        //#7857 update name realtionships
117
        updateNameRelationships(stepList);
118

    
119
        //#7683 allow null for ExternalLink_AUD.uuid
120
        stepName = "Allow null for ExternalLink_AUD.uuid ";
121
        columnName = "uuid";
122
        tableName = "ExternalLink_AUD";
123
        ColumnTypeChanger.NewStringSizeInstance(stepList, stepName, tableName, columnName, 36, !INCLUDE_AUDIT);
124

    
125
        //#7514 change symbols for pro parte synonyms and misapplied name relationship types
126
        updateConceptRelationshipSymbols(stepList);
127

    
128
        //#8006
129
        updateTaxonRelationshipLabels(stepList);
130

    
131
        //#7372
132
        stepName = "Add allowDuplicates to feature tree";
133
        tableName = "FeatureTree";
134
        newColumnName = "allowDuplicates";
135
        ColumnAdder.NewBooleanInstance(stepList, stepName, tableName, newColumnName, INCLUDE_AUDIT, false);
136

    
137
        //#6794 add term type to feature tree
138
        stepName = "Add termType to feature tree";
139
        tableName = "FeatureTree";
140
        newColumnName = "termType";
141
        ColumnAdder.NewStringInstance(stepList, stepName, tableName, newColumnName, 255, TermType.Feature.getKey(), INCLUDE_AUDIT)
142
                .setNotNull(NOT_NULL);
143

    
144
        //#6794 add term type to feature node
145
        stepName = "Add termType to feature node";
146
        tableName = "FeatureNode";
147
        newColumnName = "termType";
148
        ColumnAdder.NewStringInstance(stepList, stepName, tableName, newColumnName, 255, TermType.Feature.getKey(), INCLUDE_AUDIT)
149
                .setNotNull(NOT_NULL);
150

    
151
        //#8120 add structure modifier
152
        stepName = "Add structure modifier to Character";
153
        tableName = "DefinedTermBase";
154
        String referedTableName = "DefinedTermBase";
155
        newColumnName = "structureModifier_id";
156
        ColumnAdder.NewIntegerInstance(stepList, stepName, tableName, newColumnName, INCLUDE_AUDIT, !NOT_NULL, referedTableName);
157

    
158
        //#8120 add property modifier
159
        stepName = "Add property modifier to Character";
160
        tableName = "DefinedTermBase";
161
        referedTableName = "DefinedTermBase";
162
        newColumnName = "propertyModifier_id";
163
        ColumnAdder.NewIntegerInstance(stepList, stepName, tableName, newColumnName, INCLUDE_AUDIT, !NOT_NULL, referedTableName);
164

    
165
        //#8142 add plural to representations
166
        stepName = "Add plural to representations";
167
        tableName = "Representation";
168
        newColumnName = "plural";
169
        ColumnAdder.NewStringInstance(stepList, stepName, tableName, newColumnName, INCLUDE_AUDIT);
170

    
171
        //#8017 add type designation sources
172
        stepName = "Add plural type designation sources";
173
        String firstTableName = "TypeDesignationBase";
174
        String secondTableName = "OriginalSourceBase";
175
        MnTableCreator.NewMnInstance(stepList, stepName, firstTableName, null, secondTableName, null, "sources", INCLUDE_AUDIT, !IS_LIST, IS_1_TO_M);
176

    
177
        return stepList;
178

    
179
	}
180

    
181
    //8006 update taxon relationships
182
    private void updateTaxonRelationshipLabels(List<ISchemaUpdaterStep> stepList) {
183

    
184
//        //7857 Update symmetrical for name relationships
185
//        String stepName = "Update symmetrical for name relationships";
186
//        String query = "UPDATE @@DefinedTermBase@@ "
187
//                + " SET symmetrical=0 "
188
//                + " WHERE uuid IN ('049c6358-1094-4765-9fae-c9972a0e7780', '6e23ad45-3f2a-462b-ad87-d2389cd6e26c', "
189
//                + " 'c6f9afcb-8287-4a2b-a6f6-4da3a073d5de', 'eeaea868-c4c1-497f-b9fe-52c9fc4aca53') ";
190
//        String tableName = "DefinedTermBase";
191
//        step = SimpleSchemaUpdaterStep.NewAuditedInstance(stepList, stepName, query, tableName, -99);
192

    
193
        //Taxonomically Included in
194
        String stepName = "Taxonomically Included in => is taxonomically included in";
195
        UUID uuidTerm = UUID.fromString("d13fecdf-eb44-4dd7-9244-26679c05df1c");
196
        UUID uuidLanguage = UUID.fromString("e9f8cdb7-6819-44e8-95d3-e2d0690c3523");
197
        String label = "is taxonomically included in";
198
        TermRepresentationUpdater.NewInstanceWithTitleCache(stepList, stepName, uuidTerm,
199
                label, label, null, uuidLanguage);
200

    
201
        stepName = "taxonomically includes => taxonomically includes";
202
        label = "taxonomically includes";
203
        TermRepresentationUpdater.NewInverseInstance(stepList, stepName, uuidTerm,
204
                label, label, null, uuidLanguage);
205

    
206
        //Misapplied Name for
207
        stepName = "Misapplied Name for => is misapplied name for";
208
        uuidTerm = UUID.fromString("1ed87175-59dd-437e-959e-0d71583d8417");
209
        label = "is misapplied name for";
210
        TermRepresentationUpdater.NewInstanceWithTitleCache(stepList, stepName, uuidTerm,
211
                label, label, null, uuidLanguage);
212

    
213
        stepName = "Has Misapplied Name => has misapplied name";
214
        label = "has misapplied name";
215
        TermRepresentationUpdater.NewInverseInstance(stepList, stepName, uuidTerm,
216
                label, label, null, uuidLanguage);
217

    
218
        //Pro parte Misapplied Name for
219
        stepName = "Pro parte Misapplied Name for => is pro parte misapplied name for";
220
        uuidTerm = UUID.fromString("b59b4bd2-11ff-45d1-bae2-146efdeee206");
221
        label = "is pro parte misapplied name for";
222
        TermRepresentationUpdater.NewInstanceWithTitleCache(stepList, stepName, uuidTerm,
223
                label, label, null, uuidLanguage);
224

    
225
        stepName = "Has Pro parte Misapplied Name => has pro parte misapplied name";
226
        label = "has pro parte misapplied name";
227
        TermRepresentationUpdater.NewInverseInstance(stepList, stepName, uuidTerm,
228
                label, label, null, uuidLanguage);
229

    
230
        //Partial Misapplied Name for
231
        stepName = "Partial Misapplied Name for => is partial misapplied name for";
232
        uuidTerm = UUID.fromString("859fb615-b0e8-440b-866e-8a19f493cd36");
233
        label = "is partial misapplied name for";
234
        TermRepresentationUpdater.NewInstanceWithTitleCache(stepList, stepName, uuidTerm,
235
                label, label, null, uuidLanguage);
236

    
237
        stepName = "Has Partial Misapplied Name => has partial misapplied name";
238
        label = "has partial misapplied name";
239
        TermRepresentationUpdater.NewInverseInstance(stepList, stepName, uuidTerm,
240
                label, label, null, uuidLanguage);
241

    
242
        //Pro parte Synonym for
243
        stepName = "Pro parte Synonym for => is pro parte synonym for";
244
        uuidTerm = UUID.fromString("8a896603-0fa3-44c6-9cd7-df2d8792e577");
245
        label = "is pro parte synonym for";
246
        TermRepresentationUpdater.NewInstanceWithTitleCache(stepList, stepName, uuidTerm,
247
                label, label, null, uuidLanguage);
248

    
249
        stepName = "Has Pro parte Synonym => has pro parte synonym";
250
        label = "has pro parte synonym";
251
        TermRepresentationUpdater.NewInverseInstance(stepList, stepName, uuidTerm,
252
                label, label, null, uuidLanguage);
253

    
254
        //Partial Synonym for
255
        stepName = "Partial Synonym for => is partial synonym for";
256
        uuidTerm = UUID.fromString("9d7a5e56-973c-474c-b6c3-a1cb00833a3c");
257
        label = "is partial synonym for";
258
        TermRepresentationUpdater.NewInstanceWithTitleCache(stepList, stepName, uuidTerm,
259
                label, label, null, uuidLanguage);
260

    
261
        stepName = "Has Partial Synonym => has partial synonym";
262
        label = "has partial synonym";
263
        TermRepresentationUpdater.NewInverseInstance(stepList, stepName, uuidTerm,
264
                label, label, null, uuidLanguage);
265

    
266
        //Invalid Designation for
267
        stepName = "Invalid Designation for => is invalid designation for";
268
        uuidTerm = UUID.fromString("605b1d01-f2b1-4544-b2e0-6f08def3d6ed");
269
        label = "is invalid designation for";
270
        TermRepresentationUpdater.NewInstanceWithTitleCache(stepList, stepName, uuidTerm,
271
                label, label, null, uuidLanguage);
272

    
273
        stepName = "Has Invalid Designation => has invalid designation";
274
        label = "has invalid designation";
275
        TermRepresentationUpdater.NewInverseInstance(stepList, stepName, uuidTerm,
276
                label, label, null, uuidLanguage);
277

    
278
        //Not yet worked on
279
        stepName = "Unclear => Not yet worked on";
280
        label = "Not yet worked on";
281
        uuidTerm = UUID.fromString("8d47e59a-790d-428f-8060-01d443519166");
282
        TermRepresentationUpdater.NewInverseInstance(stepList, stepName, uuidTerm,
283
                label, label, null, uuidLanguage);
284
    }
285

    
286

    
287
	//7514
288
    private void updateConceptRelationshipSymbols(List<ISchemaUpdaterStep> stepList) {
289

    
290
        //Update misapplied name symbols
291
        String stepName = "Update misapplied name symbols";
292
        String query = "UPDATE @@DefinedTermBase@@ "
293
                + " SET symbol='"+UTF8.EM_DASH_DOUBLE+"' , inverseSymbol = '"+UTF8.EN_DASH+"' "
294
                + " WHERE uuid = '1ed87175-59dd-437e-959e-0d71583d8417' ";
295
        String tableName = "DefinedTermBase";
296
        SimpleSchemaUpdaterStep.NewAuditedInstance(stepList, stepName, query, tableName, -99);
297

    
298
        //Update pro parte misapplied name symbols
299
        stepName = "Update pro parte misapplied name symbols";
300
        query = "UPDATE @@DefinedTermBase@@ "
301
                + " SET symbol='"+UTF8.EM_DASH_DOUBLE+"(p.p.)' , inverseSymbol = '"+UTF8.EN_DASH+"(p.p.)' "
302
                + " WHERE uuid = 'b59b4bd2-11ff-45d1-bae2-146efdeee206' ";
303
        tableName = "DefinedTermBase";
304
        SimpleSchemaUpdaterStep.NewAuditedInstance(stepList, stepName, query, tableName, -99);
305

    
306
        //Update partial misapplied name symbols
307
        stepName = "Update partial misapplied name symbols";
308
        query = "UPDATE @@DefinedTermBase@@ "
309
                + " SET symbol='"+UTF8.EM_DASH_DOUBLE+"(part.)' , inverseSymbol = '"+UTF8.EN_DASH+"(part.)' "
310
                + " WHERE uuid = '859fb615-b0e8-440b-866e-8a19f493cd36' ";
311
        tableName = "DefinedTermBase";
312
        SimpleSchemaUpdaterStep.NewAuditedInstance(stepList, stepName, query, tableName, -99);
313

    
314
        //Update pro parte synonym symbols
315
        stepName = "Update pro parte synonym symbols";
316
        query = "UPDATE @@DefinedTermBase@@ "
317
                + " SET symbol='⊃p.p.' , inverseSymbol = 'p.p.' "
318
                + " WHERE uuid = '8a896603-0fa3-44c6-9cd7-df2d8792e577' ";
319
        tableName = "DefinedTermBase";
320
        SimpleSchemaUpdaterStep.NewAuditedInstance(stepList, stepName, query, tableName, -99);
321

    
322
        //Update partial synonym symbols
323
        stepName = "Update partial synonym symbols";
324
        query = "UPDATE @@DefinedTermBase@@ "
325
                + " SET symbol='⊃part.' , inverseSymbol = 'part.' "
326
                + " WHERE uuid = '9d7a5e56-973c-474c-b6c3-a1cb00833a3c' ";
327
        tableName = "DefinedTermBase";
328
        SimpleSchemaUpdaterStep.NewAuditedInstance(stepList, stepName, query, tableName, -99);
329

    
330
    }
331

    
332
    //7857 update name realtionships
333
    private void updateNameRelationships(List<ISchemaUpdaterStep> stepList) {
334

    
335
        //7857 Update symmetrical for name relationships
336
        String stepName = "Update symmetrical for name relationships";
337
        String query = "UPDATE @@DefinedTermBase@@ "
338
                + " SET symmetrical=0 "
339
                + " WHERE uuid IN ('049c6358-1094-4765-9fae-c9972a0e7780', '6e23ad45-3f2a-462b-ad87-d2389cd6e26c', "
340
                + " 'c6f9afcb-8287-4a2b-a6f6-4da3a073d5de', 'eeaea868-c4c1-497f-b9fe-52c9fc4aca53') ";
341
        String tableName = "DefinedTermBase";
342
        SimpleSchemaUpdaterStep.NewAuditedInstance(stepList, stepName, query, tableName, -99);
343

    
344
        //orthographic variant for
345
        stepName = "orthographic variant for => is orthographic variant for";
346
        UUID uuidTerm = UUID.fromString("eeaea868-c4c1-497f-b9fe-52c9fc4aca53");
347
        UUID uuidLanguage = UUID.fromString("e9f8cdb7-6819-44e8-95d3-e2d0690c3523");
348
        String label = "is orthographic variant for";
349
        TermRepresentationUpdater.NewInstanceWithTitleCache(stepList, stepName, uuidTerm,
350
                label, label, null, uuidLanguage);
351

    
352
        //original spelling for
353
        stepName = "original spelling for => is original spelling for";
354
        uuidTerm = UUID.fromString("264d2be4-e378-4168-9760-a9512ffbddc4");
355
        label = "is original spelling for";
356
        TermRepresentationUpdater.NewInstanceWithTitleCache(stepList, stepName, uuidTerm,
357
                label, label, null, uuidLanguage);
358

    
359
        //misspelling for
360
        stepName = "misspelling for => is misspelling for";
361
        uuidTerm = UUID.fromString("c6f9afcb-8287-4a2b-a6f6-4da3a073d5de");
362
        label = "is misspelling for";
363
        TermRepresentationUpdater.NewInstanceWithTitleCache(stepList, stepName, uuidTerm,
364
                label, label, null, uuidLanguage);
365

    
366
        //later homonym for
367
        stepName = "later homonym for => is later homonym for";
368
        uuidTerm = UUID.fromString("80f06f65-58e0-4209-b811-cb40ad7220a6");
369
        label = "is later homonym for";
370
        TermRepresentationUpdater.NewInstanceWithTitleCache(stepList, stepName, uuidTerm,
371
                label, label, null, uuidLanguage);
372

    
373
        //treated as later homonym for
374
        stepName = " => is treated as later homonym for";
375
        uuidTerm = UUID.fromString("2990a884-3302-4c8b-90b2-dfd31aaa2778");
376
        label = "is treated as later homonym for";
377
        TermRepresentationUpdater.NewInstanceWithTitleCache(stepList, stepName, uuidTerm,
378
                label, label, null, uuidLanguage);
379

    
380
        //alternative name for
381
        stepName = "alternative name for => is alternative name for";
382
        uuidTerm = UUID.fromString("049c6358-1094-4765-9fae-c9972a0e7780");
383
        label = "is alternative name for";
384
        TermRepresentationUpdater.NewInstanceWithTitleCache(stepList, stepName, uuidTerm,
385
                label, label, null, uuidLanguage);
386

    
387
        //basionym for
388
        stepName = "basionym for => is basionym for";
389
        uuidTerm = UUID.fromString("25792738-98de-4762-bac1-8c156faded4a");
390
        label = "is basionym for";
391
        TermRepresentationUpdater.NewInstanceWithTitleCache(stepList, stepName, uuidTerm,
392
                label, label, null, uuidLanguage);
393

    
394
        //replaced synonym for
395
        stepName = "replaced synonym for => is replaced synonym for";
396
        uuidTerm = UUID.fromString("71c67c38-d162-445b-b0c2-7aba56106696");
397
        label = "is replaced synonym for";
398
        TermRepresentationUpdater.NewInstanceWithTitleCache(stepList, stepName, uuidTerm,
399
                label, label, null, uuidLanguage);
400

    
401
        //conserved against
402
        stepName = "conserved against => is conserved against";
403
        uuidTerm = UUID.fromString("e6439f95-bcac-4ebb-a8b5-69fa5ce79e6a");
404
        label = "is conserved against";
405
        TermRepresentationUpdater.NewInstanceWithTitleCache(stepList, stepName, uuidTerm,
406
                label, label, null, uuidLanguage);
407

    
408
        //validated by
409
        stepName = "validated by => is validated by";
410
        uuidTerm = UUID.fromString("a176c9ad-b4c2-4c57-addd-90373f8270eb");
411
        label = "is validated by";
412
        TermRepresentationUpdater.NewInstanceWithTitleCache(stepList, stepName, uuidTerm,
413
                label, label, null, uuidLanguage);
414

    
415
        //later validated by
416
        stepName = "later validated by => is later validated by";
417
        uuidTerm = UUID.fromString("a25ee4c1-863a-4dab-9499-290bf9b89639");
418
        label = "is later validated by";
419
        TermRepresentationUpdater.NewInstanceWithTitleCache(stepList, stepName, uuidTerm,
420
                label, label, null, uuidLanguage);
421

    
422
        //blocking name for
423
        stepName = "blocking name for => is blocking name for";
424
        uuidTerm = UUID.fromString("1dab357f-2e12-4511-97a4-e5153589e6a6");
425
        label = "blocking name for";
426
        TermRepresentationUpdater.NewInstanceWithTitleCache(stepList, stepName, uuidTerm,
427
                label, label, null, uuidLanguage);
428

    
429
        //emendation for
430
        stepName = "emendation for => is emendation for";
431
        uuidTerm = UUID.fromString("6e23ad45-3f2a-462b-ad87-d2389cd6e26c");
432
        label = "is emendation for";
433
        TermRepresentationUpdater.NewInverseInstance(stepList, stepName, uuidTerm,
434
                label, label, null, uuidLanguage);
435
    }
436

    
437
	@Override
438
	public ISchemaUpdater getPreviousUpdater() {
439
		return SchemaUpdater_47_50.NewInstance();
440
	}
441
}
    (1-1/1)