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.v40_41;
|
11
|
|
12
|
import java.util.ArrayList;
|
13
|
import java.util.List;
|
14
|
|
15
|
import org.apache.log4j.Logger;
|
16
|
|
17
|
import eu.etaxonomy.cdm.common.UTF8;
|
18
|
import eu.etaxonomy.cdm.database.DatabaseTypeEnum;
|
19
|
import eu.etaxonomy.cdm.database.update.ColumnAdder;
|
20
|
import eu.etaxonomy.cdm.database.update.ColumnRemover;
|
21
|
import eu.etaxonomy.cdm.database.update.ISchemaUpdater;
|
22
|
import eu.etaxonomy.cdm.database.update.ISchemaUpdaterStep;
|
23
|
import eu.etaxonomy.cdm.database.update.IndexAdder;
|
24
|
import eu.etaxonomy.cdm.database.update.LanguageStringTableCreator;
|
25
|
import eu.etaxonomy.cdm.database.update.SchemaUpdaterBase;
|
26
|
import eu.etaxonomy.cdm.database.update.SimpleSchemaUpdaterStep;
|
27
|
import eu.etaxonomy.cdm.database.update.SortIndexUpdater;
|
28
|
import eu.etaxonomy.cdm.database.update.TableDroper;
|
29
|
import eu.etaxonomy.cdm.database.update.v36_40.SchemaUpdater_36_40;
|
30
|
import eu.etaxonomy.cdm.database.update.v41_47.SchemaUpdater_41_47;
|
31
|
|
32
|
/**
|
33
|
* @author a.mueller
|
34
|
* @since 16.04.2016
|
35
|
*/
|
36
|
public class SchemaUpdater_40_41 extends SchemaUpdaterBase {
|
37
|
|
38
|
@SuppressWarnings("unused")
|
39
|
private static final Logger logger = Logger.getLogger(SchemaUpdater_40_41.class);
|
40
|
private static final String endSchemaVersion = "4.1.0.0.201607300000";
|
41
|
private static final String startSchemaVersion = "4.0.0.0.201604200000";
|
42
|
|
43
|
// ********************** FACTORY METHOD *************************************
|
44
|
|
45
|
public static SchemaUpdater_40_41 NewInstance() {
|
46
|
return new SchemaUpdater_40_41();
|
47
|
}
|
48
|
|
49
|
/**
|
50
|
* @param startSchemaVersion
|
51
|
* @param endSchemaVersion
|
52
|
*/
|
53
|
protected SchemaUpdater_40_41() {
|
54
|
super(startSchemaVersion, endSchemaVersion);
|
55
|
}
|
56
|
|
57
|
@Override
|
58
|
protected List<ISchemaUpdaterStep> getUpdaterList() {
|
59
|
|
60
|
String stepName;
|
61
|
String tableName;
|
62
|
ISchemaUpdaterStep step;
|
63
|
String query;
|
64
|
String newColumnName;
|
65
|
String oldColumnName;
|
66
|
|
67
|
List<ISchemaUpdaterStep> stepList = new ArrayList<ISchemaUpdaterStep>();
|
68
|
|
69
|
|
70
|
//#3658 update nomenclatural code
|
71
|
NomenclaturalCodeUpdater.NewInstance(stepList);
|
72
|
|
73
|
//#5970
|
74
|
//Implement allowOverride in CdmPreference
|
75
|
stepName = "Add allowOverride in CdmPreference";
|
76
|
tableName = "CdmPreference";
|
77
|
newColumnName = "allowOverride";
|
78
|
step = ColumnAdder.NewBooleanInstance(stepName, tableName, newColumnName, ! INCLUDE_AUDIT, false);
|
79
|
stepList.add(step);
|
80
|
|
81
|
//#5875
|
82
|
//Implement isDefault to DescriptionBase
|
83
|
stepName = "Add isDefault in DescriptionBase";
|
84
|
tableName = "DescriptionBase";
|
85
|
newColumnName = "isDefault";
|
86
|
step = ColumnAdder.NewBooleanInstance(stepName, tableName, newColumnName, INCLUDE_AUDIT, false);
|
87
|
stepList.add(step);
|
88
|
|
89
|
//#5826
|
90
|
//Cleanup empty name descriptions
|
91
|
stepName = "Cleanup empty name descriptions";
|
92
|
// query = " DELETE FROM @@DescriptionBase@@ db " +
|
93
|
// " WHERE db.DTYPE = 'TaxonNameDescription' " +
|
94
|
// " AND NOT EXISTS (SELECT * FROM @@DescriptionElementBase@@ deb WHERE deb.indescription_id = db.id )";
|
95
|
query = "DELETE FROM @@DescriptionBase@@ "
|
96
|
+ " WHERE DTYPE = 'TaxonNameDescription' AND id IN (SELECT id FROM " +
|
97
|
" (SELECT id FROM DescriptionBase db "
|
98
|
+ " WHERE NOT EXISTS (SELECT * FROM DescriptionElementBase deb WHERE deb.indescription_id = db.id )"
|
99
|
+ " AND NOT EXISTS (SELECT * FROM DescriptionBase_Annotation MN WHERE MN.descriptionbase_id = db.id) "
|
100
|
+ " AND NOT EXISTS (SELECT * FROM DescriptionBase_Credit MN WHERE MN.descriptionbase_id = db.id) "
|
101
|
+ " AND NOT EXISTS (SELECT * FROM DescriptionBase_Extension MN WHERE MN.descriptionbase_id = db.id) "
|
102
|
+ " AND NOT EXISTS (SELECT * FROM DescriptionBase_Identifier MN WHERE MN.descriptionbase_id = db.id) "
|
103
|
+ " AND NOT EXISTS (SELECT * FROM DescriptionBase_Marker MN WHERE MN.descriptionbase_id = db.id) "
|
104
|
+ " AND NOT EXISTS (SELECT * FROM DescriptionBase_OriginalSourceBase MN WHERE MN.descriptionbase_id = db.id) "
|
105
|
+ " AND NOT EXISTS (SELECT * FROM DescriptionBase_Reference MN WHERE MN.descriptionbase_id = db.id) "
|
106
|
+ " AND NOT EXISTS (SELECT * FROM DescriptionBase_RightsInfo MN WHERE MN.descriptionbase_id = db.id) "
|
107
|
+ " AND NOT EXISTS (SELECT * FROM WorkingSet_DescriptionBase MN WHERE MN.descriptions_id = db.id) "
|
108
|
+ " ) as drvTbl) ";
|
109
|
SimpleSchemaUpdaterStep simpleStep = SimpleSchemaUpdaterStep.NewNonAuditedInstance(stepName, query, -99);
|
110
|
stepList.add(simpleStep);
|
111
|
|
112
|
//#5921
|
113
|
//UPDATE congruent symbol in DefinedTermBase
|
114
|
stepName = "UPDATE congruent symbol in DefinedTermBase";
|
115
|
query = " UPDATE @@DefinedTermBase@@ "
|
116
|
+ " SET idInVocabulary = Replace(idInVocabulary, '\u2245', '\u225c'), symbol = Replace(symbol, '\u2245', '\u225c'), inverseSymbol = Replace(inverseSymbol, '\u2245', '\u225c')"
|
117
|
+ " WHERE DTYPE like 'TaxonRel%' "
|
118
|
+ " AND (idInVocabulary like '%\u2245%' OR symbol like '%\u2245%' OR inverseSymbol like '%\u2245%' )";
|
119
|
simpleStep = SimpleSchemaUpdaterStep.NewAuditedInstance(stepName, query, "DefinedTermBase", -99);
|
120
|
stepList.add(simpleStep);
|
121
|
|
122
|
//#5921
|
123
|
//UPDATE congruent symbol in Representations
|
124
|
stepName = "UPDATE congruent symbol in Representations";
|
125
|
query = " UPDATE @@Representation@@ "
|
126
|
+ " SET abbreviatedLabel = Replace(abbreviatedLabel, '\u2245', '\u225c') "
|
127
|
+ " WHERE (abbreviatedLabel like '%\u2245%' )";
|
128
|
simpleStep = SimpleSchemaUpdaterStep.NewAuditedInstance(stepName, query, "Representation", -99);
|
129
|
stepList.add(simpleStep);
|
130
|
|
131
|
|
132
|
//#5976
|
133
|
//update sortindex on FeatureNode children
|
134
|
stepName = "Update sort index on FeatureNode children";
|
135
|
tableName = "FeatureNode";
|
136
|
String parentIdColumn = "parent_id";
|
137
|
String sortIndexColumn = "sortIndex";
|
138
|
SortIndexUpdater updateSortIndex = SortIndexUpdater.NewUpdateExistingSortindexInstance(stepName, tableName, parentIdColumn, sortIndexColumn, INCLUDE_AUDIT);
|
139
|
stepList.add(updateSortIndex);
|
140
|
|
141
|
//#5976
|
142
|
// update sortindex for TaxonNodes
|
143
|
stepName = "Update sort index on TaxonNode children";
|
144
|
tableName = "TaxonNode";
|
145
|
parentIdColumn = "parent_id";
|
146
|
sortIndexColumn = "sortIndex";
|
147
|
updateSortIndex = SortIndexUpdater.NewUpdateExistingSortindexInstance(
|
148
|
stepName, tableName, parentIdColumn, sortIndexColumn,
|
149
|
INCLUDE_AUDIT);
|
150
|
stepList.add(updateSortIndex);
|
151
|
|
152
|
//#5976
|
153
|
stepName = "Update sort index on PolytomousKeyNode children";
|
154
|
tableName = "PolytomousKeyNode";
|
155
|
parentIdColumn = "parent_id";
|
156
|
sortIndexColumn = "sortIndex";
|
157
|
updateSortIndex = SortIndexUpdater.NewUpdateExistingSortindexInstance(
|
158
|
stepName, tableName, parentIdColumn, sortIndexColumn,
|
159
|
INCLUDE_AUDIT);
|
160
|
stepList.add(updateSortIndex);
|
161
|
|
162
|
//#3925
|
163
|
//excluded to TaxonNode
|
164
|
stepName = "Add excluded to TaxonNode";
|
165
|
tableName = "TaxonNode";
|
166
|
newColumnName = "excluded";
|
167
|
step = ColumnAdder.NewBooleanInstance(stepName, tableName, newColumnName, INCLUDE_AUDIT, false);
|
168
|
stepList.add(step);
|
169
|
|
170
|
//#3925
|
171
|
//Move excluded from Taxon to TaxonNode
|
172
|
stepName = "Move excluded from Taxon to TaxonNode";
|
173
|
query = "UPDATE @@TaxonNode@@ tn " +
|
174
|
" SET excluded = (SELECT DISTINCT excluded FROM @@TaxonBase@@ tb WHERE tb.id = tn.taxon_id)";
|
175
|
simpleStep = SimpleSchemaUpdaterStep.NewAuditedInstance(stepName, query, "TaxonNode", -99)
|
176
|
//.addDefaultAuditing("TaxonBase") removed due to non unique results in subquery, solving this problem is too much work to be implemented here, so audited values will not be correct partly but always representing the current state
|
177
|
;
|
178
|
stepList.add(simpleStep);
|
179
|
|
180
|
stepName = "Move excluded from Taxon to TaxonNode/set null to false";
|
181
|
query = "UPDATE @@TaxonNode@@ SET excluded = 0 WHERE excluded IS NULL";
|
182
|
simpleStep = SimpleSchemaUpdaterStep.NewAuditedInstance(stepName, query, "TaxonNode", -99);
|
183
|
simpleStep.put(DatabaseTypeEnum.PostgreSQL, query.replace("0", "false"));
|
184
|
simpleStep.putAudited(DatabaseTypeEnum.PostgreSQL, query.replace("TaxonNode","TaxonNode_AUD").replace("0", "false"));
|
185
|
stepList.add(simpleStep);
|
186
|
|
187
|
//#3925
|
188
|
//remove excluded from TaxonNode
|
189
|
stepName = "Remove excluded from TaxonBase";
|
190
|
tableName = "TaxonBase";
|
191
|
oldColumnName = "excluded";
|
192
|
step = ColumnRemover.NewInstance(stepName, tableName, oldColumnName, INCLUDE_AUDIT);
|
193
|
stepList.add(step);
|
194
|
|
195
|
//#3925
|
196
|
//unplaced to TaxonNode
|
197
|
stepName = "Add unplaced to TaxonNode";
|
198
|
tableName = "TaxonNode";
|
199
|
newColumnName = "unplaced";
|
200
|
step = ColumnAdder.NewBooleanInstance(stepName, tableName, newColumnName, INCLUDE_AUDIT, false);
|
201
|
stepList.add(step);
|
202
|
|
203
|
|
204
|
//#3925
|
205
|
//Move unplaced from Taxon to TaxonNode
|
206
|
|
207
|
stepName = "Move unplaced from Taxon to TaxonNode";
|
208
|
query = "UPDATE @@TaxonNode@@ tn " +
|
209
|
" SET unplaced = (SELECT DISTINCT unplaced FROM @@TaxonBase@@ tb WHERE tb.id = tn.taxon_id)";
|
210
|
simpleStep = SimpleSchemaUpdaterStep.NewAuditedInstance(stepName, query, "TaxonNode", -99)
|
211
|
//.addDefaultAuditing("TaxonBase") removed due to non unique results in subquery, solving this problem is too much work to be implemented here, so audited values will not be correct partly but always representing the current state
|
212
|
;
|
213
|
stepList.add(simpleStep);
|
214
|
|
215
|
stepName = "Move unplaced from Taxon to TaxonNode/set null to false";
|
216
|
query = "UPDATE @@TaxonNode@@ SET unplaced = 0 WHERE unplaced IS NULL";
|
217
|
simpleStep = SimpleSchemaUpdaterStep.NewAuditedInstance(stepName, query, "TaxonNode", -99);
|
218
|
simpleStep.put(DatabaseTypeEnum.PostgreSQL, query.replace("0", "false"));
|
219
|
simpleStep.putAudited(DatabaseTypeEnum.PostgreSQL, query.replace("TaxonNode","TaxonNode_AUD").replace("0", "false"));
|
220
|
stepList.add(simpleStep);
|
221
|
|
222
|
//#3925
|
223
|
//remove unplaced from TaxonNode
|
224
|
stepName = "Remove unplaced from TaxonBase";
|
225
|
tableName = "TaxonBase";
|
226
|
oldColumnName = "unplaced";
|
227
|
step = ColumnRemover.NewInstance(stepName, tableName, oldColumnName, INCLUDE_AUDIT);
|
228
|
stepList.add(step);
|
229
|
|
230
|
//#5778
|
231
|
//update PresenceAbsenceTerm symbols
|
232
|
updatePresenceAbsenceTermSymbols(stepList);
|
233
|
|
234
|
//#6089
|
235
|
//Remove taxonomicParentCache from Taxon
|
236
|
stepName = "Remove taxonomicParentCache from Taxon";
|
237
|
tableName = "TaxonBase";
|
238
|
oldColumnName = "taxonomicParentCache_id";
|
239
|
step = ColumnRemover.NewInstance(stepName, tableName, oldColumnName, INCLUDE_AUDIT);
|
240
|
stepList.add(step);
|
241
|
|
242
|
//#6089
|
243
|
//Remove taxonomicChildrenCount from Taxon
|
244
|
stepName = "Remove taxonomicChildrenCount from Taxon";
|
245
|
tableName = "TaxonBase";
|
246
|
oldColumnName = "taxonomicChildrenCount";
|
247
|
step = ColumnRemover.NewInstance(stepName, tableName, oldColumnName, INCLUDE_AUDIT);
|
248
|
stepList.add(step);
|
249
|
|
250
|
//#5974 Remove synonym relationships
|
251
|
removeSynonymRelationships_5974(stepList);
|
252
|
|
253
|
|
254
|
//#5981 Add abbreviation to Rank "Cultivar"
|
255
|
stepName = "Add abbreviation to Rank 'Cultivar'";
|
256
|
String updateSql = "UPDATE Representation SET abbreviatedLabel='cv.' WHERE label='Cultivar'";
|
257
|
String nonAuditedTableName = "Representation";
|
258
|
step = SimpleSchemaUpdaterStep.NewAuditedInstance(stepName, updateSql, nonAuditedTableName, -99);
|
259
|
stepList.add(step);
|
260
|
|
261
|
//#5981 Add abbreviation to idInVoc for 'Cultivar'
|
262
|
stepName = "#5981 Add abbreviation to idInVoc for 'Cultivar'";
|
263
|
updateSql = "UPDATE DefinedTermBase SET idInVocabulary='cv.' WHERE uuid='5e98415b-dc6e-440b-95d6-ea33dbb39ad0'";
|
264
|
nonAuditedTableName = "DefinedTermBase";
|
265
|
step = SimpleSchemaUpdaterStep.NewAuditedInstance(stepName, updateSql, nonAuditedTableName, -99);
|
266
|
stepList.add(step);
|
267
|
|
268
|
//#5952 Add identityCache
|
269
|
stepName = "Add identityCache";
|
270
|
tableName = "SpecimenOrObservationBase";
|
271
|
newColumnName = "identityCache";
|
272
|
step = ColumnAdder.NewStringInstance (stepName, tableName, newColumnName, INCLUDE_AUDIT);
|
273
|
stepList.add(step);
|
274
|
|
275
|
//index
|
276
|
stepName = "Add identityCache index";
|
277
|
tableName = "SpecimenOrObservationBase";
|
278
|
newColumnName = "identityCache";
|
279
|
step = IndexAdder.NewStringInstance(stepName, tableName, newColumnName, null);
|
280
|
stepList.add(step);
|
281
|
|
282
|
stepName = "Add protectedIdentityCache";
|
283
|
tableName = "SpecimenOrObservationBase";
|
284
|
newColumnName = "protectedIdentityCache";
|
285
|
step = ColumnAdder.NewBooleanInstance(stepName, tableName, newColumnName, INCLUDE_AUDIT, false);
|
286
|
stepList.add(step);
|
287
|
|
288
|
//#5634 Add excluded note
|
289
|
stepName = "Add excluded note";
|
290
|
tableName = "TaxonNode";
|
291
|
String attributeName = "excludedNote";
|
292
|
step = LanguageStringTableCreator.NewLanguageStringInstance(stepName, tableName, attributeName, INCLUDE_AUDIT);
|
293
|
stepList.add(step);
|
294
|
|
295
|
return stepList;
|
296
|
}
|
297
|
|
298
|
private void removeSynonymRelationships_5974(List<ISchemaUpdaterStep> stepList) {
|
299
|
//add partial column to Synonym
|
300
|
String stepName = "Add partial column to Synonym";
|
301
|
String tableName = "TaxonBase";
|
302
|
String newColumnName = "partial";
|
303
|
ISchemaUpdaterStep step = ColumnAdder.NewBooleanInstance(stepName, tableName, newColumnName, INCLUDE_AUDIT, false);
|
304
|
stepList.add(step);
|
305
|
|
306
|
//add proParte column to Synonym
|
307
|
stepName = "Add proParte column to Synonym";
|
308
|
tableName = "TaxonBase";
|
309
|
newColumnName = "proParte";
|
310
|
step = ColumnAdder.NewBooleanInstance(stepName, tableName, newColumnName, INCLUDE_AUDIT, false);
|
311
|
stepList.add(step);
|
312
|
|
313
|
//add type column to Synonym
|
314
|
stepName = "Add type column to Synonym";
|
315
|
tableName = "TaxonBase";
|
316
|
newColumnName = "type_id";
|
317
|
String referencedTable = "DefinedTermBase";
|
318
|
step = ColumnAdder.NewIntegerInstance(stepName, tableName, newColumnName, INCLUDE_AUDIT, !NOT_NULL, referencedTable);
|
319
|
stepList.add(step);
|
320
|
|
321
|
//add acceptedTaxon_id to Synonym
|
322
|
stepName = "Add acceptedTaxon to Synonym";
|
323
|
tableName = "TaxonBase";
|
324
|
newColumnName = "acceptedTaxon_id";
|
325
|
referencedTable = "TaxonBase";
|
326
|
step = ColumnAdder.NewIntegerInstance(stepName, tableName, newColumnName, INCLUDE_AUDIT, !NOT_NULL, referencedTable);
|
327
|
stepList.add(step);
|
328
|
|
329
|
//move data
|
330
|
//move duplicates first
|
331
|
step = SynonymDeduplicator.NewInstance();
|
332
|
stepList.add(step);
|
333
|
|
334
|
//update pro parte
|
335
|
stepName = "Update proParte";
|
336
|
String updateSql = "UPDATE @@TaxonBase@@ syn " +
|
337
|
" SET proParte = (SELECT DISTINCT proParte FROM @@SynonymRelationship@@ sr WHERE sr.relatedFrom_id = syn.id) " +
|
338
|
" WHERE acceptedTaxon_id IS NULL ";
|
339
|
step = SimpleSchemaUpdaterStep.NewAuditedInstance(stepName, updateSql, "TaxonBase", -99)
|
340
|
//.addDefaultAuditing("SynonymRelationship") //difficult to implement due to non-uniqueness in subquery
|
341
|
;
|
342
|
stepList.add(step);
|
343
|
|
344
|
updateSql = "UPDATE @@TaxonBase@@ " +
|
345
|
" SET proParte = @FALSE@ " +
|
346
|
" WHERE DTYPE='Synonym' AND proParte IS NULL ";
|
347
|
step = SimpleSchemaUpdaterStep.NewAuditedInstance(stepName, updateSql, "TaxonBase", -99);
|
348
|
stepList.add(step);
|
349
|
|
350
|
|
351
|
//update partial
|
352
|
stepName = "Update partial";
|
353
|
updateSql = "UPDATE @@TaxonBase@@ syn " +
|
354
|
" SET partial=(SELECT DISTINCT partial FROM @@SynonymRelationship@@ sr WHERE sr.relatedFrom_id = syn.id) " +
|
355
|
" WHERE acceptedTaxon_id IS NULL ";
|
356
|
step = SimpleSchemaUpdaterStep.NewAuditedInstance(stepName, updateSql, "TaxonBase", -99)
|
357
|
//.addDefaultAuditing("SynonymRelationship") //difficult to implement due to non-uniqueness in subquery
|
358
|
;
|
359
|
stepList.add(step);
|
360
|
|
361
|
updateSql = "UPDATE @@TaxonBase@@ " +
|
362
|
" SET partial = @FALSE@ " +
|
363
|
" WHERE DTYPE='Synonym' AND partial IS NULL ";
|
364
|
step = SimpleSchemaUpdaterStep.NewAuditedInstance(stepName, updateSql, "TaxonBase", -99);
|
365
|
stepList.add(step);
|
366
|
|
367
|
//update synonym type
|
368
|
stepName = "Update Synonym type";
|
369
|
updateSql = "UPDATE @@TaxonBase@@ syn " +
|
370
|
" SET type_id=(SELECT DISTINCT type_id FROM @@SynonymRelationship@@ sr WHERE sr.relatedFrom_id = syn.id)" +
|
371
|
" WHERE acceptedTaxon_id IS NULL ";
|
372
|
// String updateSqlAud = updateSql.replace("TaxonBase", "TaxonBase_AUD").replace("SynonymRelationship", "SynonymRelationship_AUD");
|
373
|
step = SimpleSchemaUpdaterStep.NewAuditedInstance(stepName, updateSql, "TaxonBase", -99);
|
374
|
stepList.add(step);
|
375
|
|
376
|
//update acceptedTaxon_id
|
377
|
stepName = "Update acceptedTaxon_id";
|
378
|
updateSql = "UPDATE @@TaxonBase@@ syn " +
|
379
|
" SET acceptedTaxon_id=(SELECT DISTINCT relatedTo_id FROM @@SynonymRelationship@@ sr WHERE sr.relatedFrom_id = syn.id)" +
|
380
|
" WHERE acceptedTaxon_id IS NULL ";
|
381
|
// updateSqlAud = updateSql.replace("TaxonBase", "TaxonBase_AUD").replace("SynonymRelationship", "SynonymRelationship_AUD");
|
382
|
step = SimpleSchemaUpdaterStep.NewAuditedInstance(stepName, updateSql, "TaxonBase", -99);
|
383
|
stepList.add(step);
|
384
|
|
385
|
|
386
|
|
387
|
//rename SynonymRelationshipType to SynonymType in DefinedTermBase.DTYPE
|
388
|
stepName = "Rename SynonymRelationshipType to SynonymType in DefinedTermBase.DTYPE";
|
389
|
updateSql = "UPDATE DefinedTermBase SET DTYPE='SynonymType' WHERE DTYPE='SynonymRelationshipType'";
|
390
|
String nonAuditedTableName = "DefinedTermBase";
|
391
|
step = SimpleSchemaUpdaterStep.NewAuditedInstance(stepName, updateSql, nonAuditedTableName, -99);
|
392
|
stepList.add(step);
|
393
|
|
394
|
//rename SynonymRelationshipType to SynonymType in DefinedTermBase.titleCache
|
395
|
stepName = "Rename SynonymRelationshipType to SynonymType in DefinedTermBase.titleCache";
|
396
|
updateSql = "UPDATE DefinedTermBase SET titleCache='SynonymType' WHERE titleCache='SynonymRelationshipType'";
|
397
|
nonAuditedTableName = "DefinedTermBase";
|
398
|
step = SimpleSchemaUpdaterStep.NewAuditedInstance(stepName, updateSql, nonAuditedTableName, -99);
|
399
|
stepList.add(step);
|
400
|
|
401
|
//rename SynonymRelationshipType to SynonymType in Representation labels
|
402
|
stepName = "Rename SynonymRelationshipType to SynonymType in Representation labels";
|
403
|
updateSql = "UPDATE Representation SET label='Synonym Type' WHERE label='Synonym Relationship Type'";
|
404
|
nonAuditedTableName = "Representation";
|
405
|
step = SimpleSchemaUpdaterStep.NewAuditedInstance(stepName, updateSql, nonAuditedTableName, -99);
|
406
|
stepList.add(step);
|
407
|
|
408
|
//rename SynonymRelationshipType to SynonymType in Representation text
|
409
|
stepName = "Rename SynonymRelationshipType to SynonymType in Representation text";
|
410
|
updateSql = "UPDATE Representation SET text='Synonym Type' WHERE text='Synonym Relationship Type'";
|
411
|
nonAuditedTableName = "Representation";
|
412
|
step = SimpleSchemaUpdaterStep.NewAuditedInstance(stepName, updateSql, nonAuditedTableName, -99);
|
413
|
stepList.add(step);
|
414
|
|
415
|
//remove SynonymRelationship_Annotation
|
416
|
stepName = "Remove SynonymRelationship_Annotation table";
|
417
|
tableName = "SynonymRelationship_Annotation";
|
418
|
step = TableDroper.NewInstance(stepName, tableName, INCLUDE_AUDIT);
|
419
|
stepList.add(step);
|
420
|
|
421
|
//remove SynonymRelationship_Marker
|
422
|
stepName = "Remove SynonymRelationship_Marker table";
|
423
|
tableName = "SynonymRelationship_Marker";
|
424
|
step = TableDroper.NewInstance(stepName, tableName, INCLUDE_AUDIT);
|
425
|
stepList.add(step);
|
426
|
|
427
|
//remove SynonymRelationship table
|
428
|
stepName = "Remove synonym relationship table";
|
429
|
tableName = "SynonymRelationship";
|
430
|
step = TableDroper.NewInstance(stepName, tableName, INCLUDE_AUDIT);
|
431
|
stepList.add(step);
|
432
|
}
|
433
|
|
434
|
/**
|
435
|
* @param stepList
|
436
|
*/
|
437
|
private void updatePresenceAbsenceTermSymbols(List<ISchemaUpdaterStep> stepList) {
|
438
|
String enDash = UTF8.EN_DASH.toString();
|
439
|
|
440
|
//endemic
|
441
|
updateSinglePATsymbol(stepList, "c3ee7048-15b7-4be1-b687-9ce9c1a669d6", "e", "" + UTF8.BLACK_CIRCLE);
|
442
|
//present
|
443
|
updateSinglePATsymbol(stepList, "cef81d25-501c-48d8-bbea-542ec50de2c2", "p", "");
|
444
|
//doubtfully present
|
445
|
updateSinglePATsymbol(stepList, "75a60279-a4c2-4f53-bc57-466028a4b3db", "pd", "?");
|
446
|
//native
|
447
|
updateSinglePATsymbol(stepList, "ddeac4f2-d8fa-43b8-ad7e-ca13abdd32c7", "n", "");
|
448
|
//native: doubtfully native
|
449
|
updateSinglePATsymbol(stepList, "310373bf-7df4-4d02-8cb3-bcc7448805fc", "nd", "d");
|
450
|
//introduced: naturalized
|
451
|
updateSinglePATsymbol(stepList, "e191e89a-a751-4b0c-b883-7f1de70915c9", "in", "n");
|
452
|
//introduced: adventitious (casual)
|
453
|
updateSinglePATsymbol(stepList, "42946bd6-9c22-45ad-a910-7427e8f60bfd", "ia", "a");
|
454
|
//naturalised
|
455
|
updateSinglePATsymbol(stepList, "4e04990a-66fe-4fdf-856c-f40772fbcf0a", "na", "n");
|
456
|
//native: presence questionable
|
457
|
updateSinglePATsymbol(stepList, "925662c1-bb10-459a-8c53-da5a738ac770", "nq", "?");
|
458
|
//introduced: presence questionable
|
459
|
updateSinglePATsymbol(stepList, "83eb0aa0-1a45-495a-a3ca-bf6958b74366", "iq", "?");
|
460
|
//introduced: cultivated
|
461
|
updateSinglePATsymbol(stepList, "fac8c347-8262-44a1-b0a4-db4de451c021", "ic", "c");
|
462
|
//cultivated, presence questionable
|
463
|
updateSinglePATsymbol(stepList, "4f31bfc8-3058-4d83-aea5-3a1fe9773f9f", "cq", "?c");
|
464
|
//absent
|
465
|
updateSinglePATsymbol(stepList, "59709861-f7d9-41f9-bb21-92559cedd598", "a", enDash);
|
466
|
//reported in error
|
467
|
updateSinglePATsymbol(stepList, "38604788-cf05-4607-b155-86db456f7680", "f", enDash);
|
468
|
//native: reported in error
|
469
|
updateSinglePATsymbol(stepList, "aeec2947-2700-4623-8e32-9e3a430569d1", "if", enDash);
|
470
|
//cultivated: reported in error
|
471
|
updateSinglePATsymbol(stepList, "9d4d3431-177a-4abe-8e4b-1558573169d6", "cf", enDash);
|
472
|
|
473
|
}
|
474
|
|
475
|
/**
|
476
|
* @param uuid the uuid
|
477
|
* @param oldSymbol
|
478
|
* @param newSybol
|
479
|
*/
|
480
|
private void updateSinglePATsymbol(List<ISchemaUpdaterStep> stepList,
|
481
|
String uuid, String oldSymbol, String newSymbol) {
|
482
|
String stepName = "Update single symbol for PresenceAbsenceTerm " + uuid;
|
483
|
String query = "UPDATE @@DefinedTermBase@@ dtb "
|
484
|
+ " SET symbol = '" + newSymbol + "'"
|
485
|
+ " WHERE uuid = '" + uuid + "' AND symbol = '" + oldSymbol + "'" ;
|
486
|
SimpleSchemaUpdaterStep simpleStep = SimpleSchemaUpdaterStep.NewAuditedInstance(stepName, query, "DefinedTermBase", -99);
|
487
|
stepList.add(simpleStep);
|
488
|
}
|
489
|
|
490
|
@Override
|
491
|
public ISchemaUpdater getNextUpdater() {
|
492
|
return SchemaUpdater_41_47.NewInstance();
|
493
|
}
|
494
|
|
495
|
@Override
|
496
|
public ISchemaUpdater getPreviousUpdater() {
|
497
|
return SchemaUpdater_36_40.NewInstance();
|
498
|
}
|
499
|
|
500
|
}
|