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.v31_33;
|
11
|
|
12
|
import java.util.ArrayList;
|
13
|
import java.util.List;
|
14
|
import java.util.UUID;
|
15
|
|
16
|
import org.apache.log4j.Logger;
|
17
|
|
18
|
import eu.etaxonomy.cdm.database.update.ClassChanger;
|
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.SingleTermRemover;
|
29
|
import eu.etaxonomy.cdm.database.update.SortIndexUpdater;
|
30
|
import eu.etaxonomy.cdm.database.update.TableCreator;
|
31
|
import eu.etaxonomy.cdm.database.update.TableDroper;
|
32
|
import eu.etaxonomy.cdm.database.update.TableNameChanger;
|
33
|
import eu.etaxonomy.cdm.database.update.TermMover;
|
34
|
import eu.etaxonomy.cdm.database.update.TreeIndexUpdater;
|
35
|
import eu.etaxonomy.cdm.database.update.VocabularyCreator;
|
36
|
import eu.etaxonomy.cdm.database.update.v30_31.SchemaUpdater_30_301;
|
37
|
import eu.etaxonomy.cdm.model.common.AnnotationType;
|
38
|
import eu.etaxonomy.cdm.model.common.ExtensionType;
|
39
|
import eu.etaxonomy.cdm.model.common.Language;
|
40
|
import eu.etaxonomy.cdm.model.common.MarkerType;
|
41
|
import eu.etaxonomy.cdm.model.description.Feature;
|
42
|
import eu.etaxonomy.cdm.model.description.MeasurementUnit;
|
43
|
import eu.etaxonomy.cdm.model.description.NaturalLanguageTerm;
|
44
|
import eu.etaxonomy.cdm.model.description.State;
|
45
|
import eu.etaxonomy.cdm.model.description.StatisticalMeasure;
|
46
|
import eu.etaxonomy.cdm.model.description.TextFormat;
|
47
|
import eu.etaxonomy.cdm.model.location.Country;
|
48
|
import eu.etaxonomy.cdm.model.location.NamedArea;
|
49
|
import eu.etaxonomy.cdm.model.location.NamedAreaLevel;
|
50
|
import eu.etaxonomy.cdm.model.location.NamedAreaType;
|
51
|
import eu.etaxonomy.cdm.model.location.ReferenceSystem;
|
52
|
import eu.etaxonomy.cdm.model.molecular.Sequence;
|
53
|
import eu.etaxonomy.cdm.model.name.HybridRelationshipType;
|
54
|
import eu.etaxonomy.cdm.model.name.NameRelationshipType;
|
55
|
import eu.etaxonomy.cdm.model.name.NameTypeDesignationStatus;
|
56
|
import eu.etaxonomy.cdm.model.name.NomenclaturalStatusType;
|
57
|
import eu.etaxonomy.cdm.model.name.Rank;
|
58
|
import eu.etaxonomy.cdm.model.name.SpecimenTypeDesignationStatus;
|
59
|
import eu.etaxonomy.cdm.model.occurrence.DerivationEventType;
|
60
|
import eu.etaxonomy.cdm.model.occurrence.DerivedUnit;
|
61
|
import eu.etaxonomy.cdm.model.occurrence.MaterialOrMethodEvent;
|
62
|
import eu.etaxonomy.cdm.model.occurrence.PreservationMethod;
|
63
|
import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationType;
|
64
|
import eu.etaxonomy.cdm.model.reference.OriginalSourceType;
|
65
|
import eu.etaxonomy.cdm.model.reference.Reference;
|
66
|
import eu.etaxonomy.cdm.model.reference.ReferenceType;
|
67
|
import eu.etaxonomy.cdm.model.taxon.SynonymType;
|
68
|
import eu.etaxonomy.cdm.model.taxon.TaxonRelationshipType;
|
69
|
import eu.etaxonomy.cdm.model.term.TermType;
|
70
|
|
71
|
/**
|
72
|
* @author a.mueller
|
73
|
* @since Jun 06, 2013
|
74
|
*/
|
75
|
public class SchemaUpdater_31_33 extends SchemaUpdaterBase {
|
76
|
|
77
|
private static final Logger logger = Logger
|
78
|
.getLogger(SchemaUpdater_31_33.class);
|
79
|
private static final String startSchemaVersion = "3.0.1.0.201104190000";
|
80
|
private static final String endSchemaVersion = "3.3.0.0.201309240000";
|
81
|
|
82
|
// ********************** FACTORY METHOD*************************************
|
83
|
|
84
|
public static SchemaUpdater_31_33 NewInstance() {
|
85
|
return new SchemaUpdater_31_33();
|
86
|
}
|
87
|
|
88
|
/**
|
89
|
* @param startSchemaVersion
|
90
|
* @param endSchemaVersion
|
91
|
*/
|
92
|
protected SchemaUpdater_31_33() {
|
93
|
super(startSchemaVersion, endSchemaVersion);
|
94
|
}
|
95
|
|
96
|
@Override
|
97
|
protected List<ISchemaUpdaterStep> getUpdaterList() {
|
98
|
|
99
|
String stepName;
|
100
|
String tableName;
|
101
|
ISchemaUpdaterStep step;
|
102
|
String columnName;
|
103
|
|
104
|
// CHECKS
|
105
|
|
106
|
// remove SpecimenOrObservationBase_Media #3597
|
107
|
// TODO check if Description -Specimen Relation has M:M data
|
108
|
if (false) {
|
109
|
throw new RuntimeException(
|
110
|
"Required check for SpecimenOrObservationBase_Media");
|
111
|
} else {
|
112
|
logger.warn("CHECKS for inconsistent data not running !!!!");
|
113
|
}
|
114
|
|
115
|
List<ISchemaUpdaterStep> stepList = new ArrayList<ISchemaUpdaterStep>();
|
116
|
|
117
|
// Was in Schemaupdater_301_31 which was never used and later deleted
|
118
|
// (r18331).
|
119
|
// drop TypeDesignationBase_TaxonNameBase //from schemaUpdater 301_31
|
120
|
stepName = "Drop duplicate TypeDesignation-TaxonName table";
|
121
|
tableName = "TypeDesignationBase_TaxonNameBase";
|
122
|
step = TableDroper.NewInstance(stepName, tableName, INCLUDE_AUDIT);
|
123
|
stepList.add(step);
|
124
|
|
125
|
// create original source type column
|
126
|
stepName = "Create original source type column";
|
127
|
tableName = "OriginalSourceBase";
|
128
|
columnName = "sourceType";
|
129
|
step = ColumnAdder.NewStringInstance(stepName, tableName, columnName,
|
130
|
4, INCLUDE_AUDIT);
|
131
|
((ColumnAdder) step).setNotNull(true);
|
132
|
stepList.add(step);
|
133
|
|
134
|
// update original source type
|
135
|
updateOriginalSourceType(stepList);
|
136
|
|
137
|
// create and update elevenation max, remove error column
|
138
|
updateElevationMax(stepList);
|
139
|
|
140
|
// create TaxonNode tree index
|
141
|
stepName = "Create taxon node tree index";
|
142
|
tableName = "TaxonNode";
|
143
|
columnName = "treeIndex";
|
144
|
// TODO NOT NULL unclear //see also columnTypeChanger
|
145
|
step = ColumnAdder.NewStringInstance(stepName, tableName, columnName,
|
146
|
255, INCLUDE_AUDIT);
|
147
|
stepList.add(step);
|
148
|
|
149
|
// update treeindex for taxon nodes
|
150
|
stepName = "Update TaxonNode treeindex";
|
151
|
tableName = "TaxonNode";
|
152
|
String treeIdColumnName = "classification_id";
|
153
|
step = TreeIndexUpdater.NewInstance(stepName, tableName,
|
154
|
treeIdColumnName, columnName, ! INCLUDE_AUDIT); //update does no yet wok for ANSI SQL (e.g. PosGres / H2 with multiple entries for same id in AUD table)
|
155
|
stepList.add(step);
|
156
|
|
157
|
// create TaxonNode sort index column
|
158
|
stepName = "Create taxon node sort index column";
|
159
|
tableName = "TaxonNode";
|
160
|
columnName = "sortIndex";
|
161
|
step = ColumnAdder.NewIntegerInstance(stepName, tableName, columnName,
|
162
|
INCLUDE_AUDIT, false, null);
|
163
|
stepList.add(step);
|
164
|
|
165
|
// update sortindex
|
166
|
stepName = "Update sort index on TaxonNode children";
|
167
|
tableName = "TaxonNode";
|
168
|
String parentIdColumn = "parent_id";
|
169
|
String sortIndexColumn = "sortIndex";
|
170
|
SortIndexUpdater updateSortIndex = SortIndexUpdater.NewInstance(
|
171
|
stepName, tableName, parentIdColumn, sortIndexColumn,
|
172
|
INCLUDE_AUDIT);
|
173
|
stepList.add(updateSortIndex);
|
174
|
|
175
|
// Classification root nodes sort index
|
176
|
stepName = "Create classification root node sort index column";
|
177
|
tableName = "Classification_TaxonNode";
|
178
|
step = ColumnAdder.NewIntegerInstance(stepName, tableName, columnName,
|
179
|
INCLUDE_AUDIT, false, null);
|
180
|
stepList.add(step);
|
181
|
|
182
|
stepName = "Update sort index on classification child nodes";
|
183
|
parentIdColumn = "Classification_id";
|
184
|
String idColumn = "rootnodes_id";
|
185
|
updateSortIndex = SortIndexUpdater.NewInstance(stepName, tableName,
|
186
|
parentIdColumn, sortIndexColumn, idColumn, INCLUDE_AUDIT);
|
187
|
stepList.add(updateSortIndex);
|
188
|
|
189
|
// create feature node tree index
|
190
|
stepName = "Create feature node tree index";
|
191
|
tableName = "FeatureNode";
|
192
|
columnName = "treeIndex";
|
193
|
// TODO NOT NULL unclear
|
194
|
step = ColumnAdder.NewStringInstance(stepName, tableName, columnName,
|
195
|
255, INCLUDE_AUDIT);
|
196
|
stepList.add(step);
|
197
|
|
198
|
// update tree index for feature node
|
199
|
stepName = "Update FeatureNode treeindex";
|
200
|
tableName = "FeatureNode";
|
201
|
treeIdColumnName = "featuretree_id";
|
202
|
step = TreeIndexUpdater.NewInstance(stepName, tableName,
|
203
|
treeIdColumnName, columnName, ! INCLUDE_AUDIT); // see comment for TaxonTree
|
204
|
stepList.add(step);
|
205
|
|
206
|
// update introduced: adventitious (casual) label
|
207
|
// #3540
|
208
|
stepName = "Update introduced: adventitious (casual) label";
|
209
|
String query = " UPDATE @@Representation@@ "
|
210
|
+ " SET abbreviatedlabel = 'ia' "
|
211
|
+ " WHERE abbreviatedlabel = 'id' AND label = 'introduced: adventitious (casual)' ";
|
212
|
step = SimpleSchemaUpdaterStep.NewNonAuditedInstance(stepName, query, 99)
|
213
|
.setDefaultAuditing("Representation");
|
214
|
stepList.add(step);
|
215
|
|
216
|
// termType for DefinedTerms and TermVocabulary, no type must be null
|
217
|
stepName = "Create termType column in DefinedTermBase";
|
218
|
tableName = "DefinedTermBase";
|
219
|
columnName = "termType";
|
220
|
// TODO NOT NULL unclear
|
221
|
step = ColumnAdder.NewStringInstance(stepName, tableName, columnName,
|
222
|
255, INCLUDE_AUDIT);
|
223
|
stepList.add(step);
|
224
|
|
225
|
stepName = "Create termType column in TermVocabulary";
|
226
|
tableName = "TermVocabulary";
|
227
|
columnName = "termType";
|
228
|
// TODO NOT NULL unclear
|
229
|
step = ColumnAdder.NewStringInstance(stepName, tableName, columnName,
|
230
|
4, INCLUDE_AUDIT);
|
231
|
stepList.add(step);
|
232
|
|
233
|
// update termType for DefinedTerms, no type must be null
|
234
|
updateTermTypesForTerms(stepList);
|
235
|
|
236
|
// update termType for TermVocabulary, no type must be null
|
237
|
updateTermTypesForVocabularies(stepList);
|
238
|
|
239
|
// update DTYPE of DefinedTerms
|
240
|
updateDtypeOfDefinedTerms(stepList);
|
241
|
|
242
|
// idInVocabulary for DefinedTerms
|
243
|
stepName = "Create idInVocabulary column in DefinedTermBase";
|
244
|
tableName = "DefinedTermBase";
|
245
|
columnName = "idInVocabulary";
|
246
|
step = ColumnAdder.NewStringInstance(stepName, tableName, columnName,
|
247
|
255, INCLUDE_AUDIT);
|
248
|
stepList.add(step);
|
249
|
|
250
|
// update idInVocabulary
|
251
|
updateIdInVocabulary(stepList);
|
252
|
|
253
|
// rankClass (#3521)
|
254
|
stepName = "Create rankClass column in DefinedTermBase";
|
255
|
tableName = "DefinedTermBase";
|
256
|
columnName = "rankClass";
|
257
|
// TODO NOT NULL unclear
|
258
|
step = ColumnAdder.NewStringInstance(stepName, tableName, columnName,
|
259
|
255, INCLUDE_AUDIT);
|
260
|
stepList.add(step);
|
261
|
|
262
|
// update rankClass (#3521)
|
263
|
step = RankClassUpdater.NewInstance();
|
264
|
stepList.add(step);
|
265
|
|
266
|
// update datatype->CLOB for URIs. (DefinedTerms, TermVocabulary,
|
267
|
// Reference, Rights, MediaRepresentationPart )
|
268
|
// #3345, TODO2 adapt type to <65k -> see #3954
|
269
|
// sequence.sequence has been changed #3360
|
270
|
changeUriType(stepList);
|
271
|
|
272
|
// Annotation.linkbackUri change name #3374
|
273
|
stepName = "Update url to uri (->clob) for Annotation.linkbackUri";
|
274
|
columnName = "linkbackUrl";
|
275
|
String newColumnName = "linkbackUri";
|
276
|
tableName = "Annotation";
|
277
|
// TODO check non MySQL and with existing data (probably does not exist)
|
278
|
step = ColumnNameChanger.NewClobInstance(stepName, tableName,
|
279
|
columnName, newColumnName, INCLUDE_AUDIT);
|
280
|
stepList.add(step);
|
281
|
|
282
|
// update Sicilia -> Sicily
|
283
|
// #3540
|
284
|
stepName = "Update Sicilia -> Sicily";
|
285
|
query = " UPDATE @@Representation@@ "
|
286
|
+ " SET label = 'Sicily', text = 'Sicily' "
|
287
|
+ " WHERE (abbreviatedlabel = 'SIC-SI' OR abbreviatedlabel = 'SIC') AND label = 'Sicilia' ";
|
288
|
step = SimpleSchemaUpdaterStep.NewNonAuditedInstance(stepName, query, 99)
|
289
|
.setDefaultAuditing("Representation");
|
290
|
stepList.add(step);
|
291
|
|
292
|
// remove homotypical group form type designation base
|
293
|
stepName = "Remove column homotypical group in type designation base";
|
294
|
tableName = "TypeDesignationBase";
|
295
|
String oldColumnName = "homotypicalgroup_id";
|
296
|
step = ColumnRemover.NewInstance(stepName, tableName, oldColumnName,
|
297
|
INCLUDE_AUDIT);
|
298
|
stepList.add(step);
|
299
|
|
300
|
// add publish flag #1780
|
301
|
addPublishFlag(stepList);
|
302
|
|
303
|
// add columns abbrevTitle, abbrevTitleCache and
|
304
|
// protectedAbbrevTitleCache to Reference
|
305
|
stepName = "Add abbrevTitle to Reference";
|
306
|
tableName = "Reference";
|
307
|
columnName = "abbrevTitle";
|
308
|
int length = 255;
|
309
|
step = ColumnAdder.NewStringInstance(stepName, tableName, columnName,
|
310
|
length, INCLUDE_AUDIT);
|
311
|
stepList.add(step);
|
312
|
|
313
|
stepName = "Add abbrevTitleCache to Reference";
|
314
|
tableName = "Reference";
|
315
|
columnName = "abbrevTitleCache";
|
316
|
length = 1023;
|
317
|
step = ColumnAdder.NewStringInstance(stepName, tableName, columnName,
|
318
|
length, INCLUDE_AUDIT);
|
319
|
stepList.add(step);
|
320
|
|
321
|
stepName = "Add protectedAbbrevTitleCache to Reference";
|
322
|
tableName = "Reference";
|
323
|
columnName = "protectedAbbrevTitleCache";
|
324
|
step = ColumnAdder.NewBooleanInstance(stepName, tableName, columnName,
|
325
|
INCLUDE_AUDIT, false);
|
326
|
stepList.add(step);
|
327
|
|
328
|
// update abbrevTitle, protectedAbbrevTitle and abbrevTitleCache in
|
329
|
// Reference
|
330
|
updateAbbrevTitle(stepList);
|
331
|
|
332
|
//remove figure #2539
|
333
|
stepName = "Remove Figure class";
|
334
|
query = "UPDATE @@Media@@ SET DTYPE = 'Media' WHERE DTYPE = 'Figure'";
|
335
|
step = SimpleSchemaUpdaterStep.NewAuditedInstance(stepName, query, "Media", 99);
|
336
|
stepList .add(step);
|
337
|
|
338
|
// add doi to reference
|
339
|
stepName = "Add doi to Reference";
|
340
|
tableName = "Reference";
|
341
|
columnName = "doi";
|
342
|
length = 255;
|
343
|
step = ColumnAdder.NewStringInstance(stepName, tableName, columnName,
|
344
|
length, INCLUDE_AUDIT);
|
345
|
stepList.add(step);
|
346
|
|
347
|
// add start number to PolytomousKey
|
348
|
stepName = "Add start number column to PolytomousKey";
|
349
|
tableName = "PolytomousKey";
|
350
|
columnName = "startNumber";
|
351
|
Integer defaultValue = 1;
|
352
|
step = ColumnAdder.NewIntegerInstance(stepName, tableName, columnName,
|
353
|
INCLUDE_AUDIT, defaultValue, true);
|
354
|
stepList.add(step);
|
355
|
|
356
|
// add recordBasis to specimenOrObservationBase
|
357
|
stepName = "Add recordBasis to SpecimenOrObservationBase";
|
358
|
tableName = "SpecimenOrObservationBase";
|
359
|
columnName = "recordBasis";
|
360
|
length = 4; // TODO needed?
|
361
|
// TODO NOT NULL
|
362
|
step = ColumnAdder.NewStringInstance(stepName, tableName, columnName,
|
363
|
length, INCLUDE_AUDIT);
|
364
|
stepList.add(step);
|
365
|
|
366
|
// update recordBasis
|
367
|
updateRecordBasis(stepList);
|
368
|
|
369
|
// update specimenOrObservationBase DTYPE with DerivedUnit where
|
370
|
// necessary
|
371
|
stepName = "Update Specimen -> DerivedUnit";
|
372
|
query = " UPDATE @@SpecimenOrObservationBase@@ "
|
373
|
+ " SET DTYPE = 'DerivedUnit' "
|
374
|
+ " WHERE DTYPE = 'Specimen' OR DTYPE = 'Fossil' OR DTYPE = 'LivingBeing' OR DTYPE = 'Observation' ";
|
375
|
step = SimpleSchemaUpdaterStep.NewNonAuditedInstance(stepName, query, 99)
|
376
|
.setDefaultAuditing("SpecimenOrObservationBase");
|
377
|
stepList.add(step);
|
378
|
|
379
|
stepName = "Update Specimen -> DerivedUnit";
|
380
|
String newClass = "eu.etaxonomy.cdm.model.occurrence.DerivedUnit";
|
381
|
String[] oldClassPaths = new String[] {
|
382
|
"eu.etaxonomy.cdm.model.occurrence.Specimen",
|
383
|
"eu.etaxonomy.cdm.model.occurrence.Fossil",
|
384
|
"eu.etaxonomy.cdm.model.occurrence.LivingBeing",
|
385
|
"eu.etaxonomy.cdm.model.occurrence.Observation" };
|
386
|
step = ClassChanger.NewIdentifiableInstance(stepName, tableName,
|
387
|
newClass, oldClassPaths, INCLUDE_AUDIT);
|
388
|
stepList.add(step);
|
389
|
|
390
|
// update DTYPE FieldObservation -> FieldUnit #3351
|
391
|
stepName = "Update FieldObservation -> FieldUnit";
|
392
|
query = " UPDATE @@SpecimenOrObservationBase@@ "
|
393
|
+ " SET DTYPE = 'FieldUnit' "
|
394
|
+ " WHERE DTYPE = 'FieldObservation' ";
|
395
|
step = SimpleSchemaUpdaterStep.NewNonAuditedInstance(stepName, query, 99)
|
396
|
.setDefaultAuditing("SpecimenOrObservationBase");
|
397
|
stepList.add(step);
|
398
|
|
399
|
stepName = "Update Specimen -> DerivedUnit";
|
400
|
newClass = "eu.etaxonomy.cdm.model.occurrence.FieldUnit";
|
401
|
oldClassPaths = new String[] { "eu.etaxonomy.cdm.model.occurrence.FieldObservation" };
|
402
|
step = ClassChanger.NewIdentifiableInstance(stepName, tableName,
|
403
|
newClass, oldClassPaths, INCLUDE_AUDIT);
|
404
|
stepList.add(step);
|
405
|
|
406
|
// add kindOfUnit to SpecimenOrObservationBase
|
407
|
stepName = "Add kindOfUnit column to SpecimenOrObservationBase";
|
408
|
tableName = "SpecimenOrObservationBase";
|
409
|
columnName = "kindOfUnit_id";
|
410
|
String relatedTable = "DefinedTermBase";
|
411
|
step = ColumnAdder.NewIntegerInstance(stepName, tableName, columnName,
|
412
|
INCLUDE_AUDIT, false, relatedTable);
|
413
|
stepList.add(step);
|
414
|
|
415
|
// remove citation_id and citation micro-reference columns from Media
|
416
|
// table #2541
|
417
|
// FIXME first check if columns are always empty
|
418
|
stepName = "Remove citation column from Media";
|
419
|
tableName = "Media";
|
420
|
columnName = "citation_id";
|
421
|
step = ColumnRemover.NewInstance(stepName, tableName, columnName,
|
422
|
INCLUDE_AUDIT);
|
423
|
stepList.add(step);
|
424
|
|
425
|
stepName = "Remove citation microreference column from Media";
|
426
|
tableName = "Media";
|
427
|
columnName = "citationMicroReference";
|
428
|
step = ColumnRemover.NewInstance(stepName, tableName, columnName,
|
429
|
INCLUDE_AUDIT);
|
430
|
stepList.add(step);
|
431
|
|
432
|
// update length of all title caches and full title cache in names #1592
|
433
|
updateTitleCacheLength(stepList);
|
434
|
|
435
|
// rename FK column states_id -> stateData_id in
|
436
|
// DescriptionElementBase_StateData(+AUD) #2923
|
437
|
stepName = "Update states_id to stateData_id in DescriptionElementBase_StateData";
|
438
|
tableName = "DescriptionElementBase_StateData";
|
439
|
oldColumnName = "states_id";
|
440
|
newColumnName = "stateData_id";
|
441
|
step = ColumnNameChanger.NewIntegerInstance(stepName, tableName,
|
442
|
oldColumnName, newColumnName, INCLUDE_AUDIT);
|
443
|
stepList.add(step);
|
444
|
|
445
|
// specimen descriptions #3571
|
446
|
// add column DescriptionBase.Specimen_ID #3571
|
447
|
stepName = "Add specimen_id column to DescriptionBase";
|
448
|
tableName = "DescriptionBase";
|
449
|
columnName = "specimen_id";
|
450
|
boolean notNull = false;
|
451
|
String referencedTable = "SpecimenOrObservationBase";
|
452
|
step = ColumnAdder.NewIntegerInstance(stepName, tableName, columnName,
|
453
|
INCLUDE_AUDIT, notNull, referencedTable);
|
454
|
stepList.add(step);
|
455
|
|
456
|
// update DescriptionBase.Specimen_ID data #3571
|
457
|
updateDescriptionSpecimenRelation(stepList);
|
458
|
|
459
|
// remove tables DescriptionBase_SpecimenOrObservationBase(_AUD) #3571
|
460
|
stepName = "Remove table DescriptionBase_SpecimenOrObservationBase";
|
461
|
tableName = "DescriptionBase_SpecimenOrObservationBase";
|
462
|
step = TableDroper.NewInstance(stepName, tableName, INCLUDE_AUDIT);
|
463
|
stepList.add(step);
|
464
|
|
465
|
// change column type for reference type
|
466
|
stepName = "Change column type for Reference.type";
|
467
|
tableName = "Reference";
|
468
|
columnName = "refType";
|
469
|
Integer defaultValueStr = -1;
|
470
|
notNull = true;
|
471
|
int size = 3;
|
472
|
step = ColumnTypeChanger.NewInt2StringInstance(stepName, tableName,
|
473
|
columnName, size, true, defaultValueStr, notNull);
|
474
|
stepList.add(step);
|
475
|
|
476
|
// update reference type
|
477
|
updateReferenceType(stepList);
|
478
|
|
479
|
// create table CdmPreference #3555
|
480
|
stepName = "Create table 'CdmPreference'";
|
481
|
tableName = "CdmPreference";
|
482
|
TableCreator stepPref = TableCreator.NewInstance(stepName, tableName,
|
483
|
new String[] { "key_subject", "key_predicate", "value" }, // colNames
|
484
|
new String[] { "string_100", "string_100", "string_1023", }, // columnTypes
|
485
|
new String[] { null, "DefinedTermBase", null }, // referencedTables
|
486
|
!INCLUDE_AUDIT, false);
|
487
|
stepPref.setPrimaryKeyParams("key_subject, key_predicate", null);
|
488
|
stepList.add(stepPref);
|
489
|
|
490
|
// update RightsTerm to RightsType #1306
|
491
|
stepName = "Update RightsTerm -> RightsType";
|
492
|
String updateSql = "UPDATE @@DefinedTermBase@@ SET DTYPE = 'RightsType' WHERE DTYPE = 'RightsTerm'";
|
493
|
step = SimpleSchemaUpdaterStep.NewNonAuditedInstance(stepName, updateSql, 99)
|
494
|
.setDefaultAuditing("DefinedTermBase");
|
495
|
stepList.add(step);
|
496
|
|
497
|
// update Rights table to RightsInfo
|
498
|
updateRights2RightsInfo(stepList);
|
499
|
|
500
|
// Remove column isDescriptionSeparated from FeatureTree #3678
|
501
|
stepName = "Remove column isDescriptionSeparated from FeatureTree";
|
502
|
tableName = "FeatureTree";
|
503
|
columnName = "descriptionSeparated";
|
504
|
step = ColumnRemover.NewInstance(stepName, tableName, columnName,
|
505
|
INCLUDE_AUDIT);
|
506
|
stepList.add(step);
|
507
|
|
508
|
// remove table Sequence_GenBankAccession #3552
|
509
|
stepName = "Remove table Sequence_GenBankAccession";
|
510
|
tableName = "Sequence_GenBankAccession";
|
511
|
step = TableDroper.NewInstance(stepName, tableName, INCLUDE_AUDIT);
|
512
|
stepList.add(step);
|
513
|
|
514
|
// remove table GenBankAccession #3552
|
515
|
stepName = "Remove table GenBankAccession";
|
516
|
tableName = "GenBankAccession";
|
517
|
step = TableDroper.NewInstance(stepName, tableName, INCLUDE_AUDIT);
|
518
|
stepList.add(step);
|
519
|
|
520
|
// remove table Sequence_Credit #3360
|
521
|
stepName = "Remove table Sequence_Credit";
|
522
|
tableName = "Sequence_Credit";
|
523
|
step = TableDroper.NewInstance(stepName, tableName, INCLUDE_AUDIT);
|
524
|
stepList.add(step);
|
525
|
|
526
|
// remove table Sequence_Extension #3360
|
527
|
stepName = "Remove table Sequence_Extension";
|
528
|
tableName = "Sequence_Extension";
|
529
|
step = TableDroper.NewInstance(stepName, tableName, INCLUDE_AUDIT);
|
530
|
stepList.add(step);
|
531
|
|
532
|
//remove table Sequence_Media #3360
|
533
|
stepName = "Remove table Sequence_Media";
|
534
|
tableName = "Sequence_Media";
|
535
|
step = TableDroper.NewInstance(stepName, tableName, INCLUDE_AUDIT);
|
536
|
stepList.add(step);
|
537
|
|
538
|
// remove table Sequence_OriginalSourceBase #3360
|
539
|
stepName = "Remove table Sequence_OriginalSourceBase";
|
540
|
tableName = "Sequence_OriginalSourceBase";
|
541
|
step = TableDroper.NewInstance(stepName, tableName, INCLUDE_AUDIT);
|
542
|
stepList.add(step);
|
543
|
|
544
|
// remove table Sequence_OriginalSourceBase #3360
|
545
|
stepName = "Remove table Sequence_Rights";
|
546
|
tableName = "Sequence_Rights";
|
547
|
step = TableDroper.NewInstance(stepName, tableName, INCLUDE_AUDIT);
|
548
|
stepList.add(step);
|
549
|
|
550
|
// remove old sequence columns
|
551
|
removeOldSequenceColumns(stepList);
|
552
|
|
553
|
// add MediaSpecimen column #3614
|
554
|
stepName = "Add mediaSpecimen column to SpecimenOrObservationBase";
|
555
|
tableName = "SpecimenOrObservationBase";
|
556
|
columnName = "mediaSpecimen_id";
|
557
|
notNull = false;
|
558
|
referencedTable = "Media";
|
559
|
step = ColumnAdder.NewIntegerInstance(stepName, tableName, columnName,
|
560
|
INCLUDE_AUDIT, notNull, referencedTable);
|
561
|
stepList.add(step);
|
562
|
|
563
|
// remove DescriptionBase_Feature #2202
|
564
|
stepName = "Remove table DescriptionBase_Feature";
|
565
|
tableName = "DescriptionBase_Feature";
|
566
|
step = TableDroper.NewInstance(stepName, tableName, INCLUDE_AUDIT);
|
567
|
stepList.add(step);
|
568
|
|
569
|
// add timeperiod to columns to description element base #3312
|
570
|
addTimeperiodToDescriptionElement(stepList);
|
571
|
|
572
|
// move specimen images
|
573
|
stepName = "Move images from SpecimenOrObservationBase_Media to image gallery";
|
574
|
step = SpecimenMediaMoverUpdater.NewInstance();
|
575
|
stepList.add(step);
|
576
|
|
577
|
// SpecimenOrObservationBase_Media #3597
|
578
|
stepName = "Remove table SpecimenOrObservationBase_Media";
|
579
|
tableName = "SpecimenOrObservationBase_Media";
|
580
|
step = TableDroper.NewInstance(stepName, tableName, INCLUDE_AUDIT);
|
581
|
stepList.add(step);
|
582
|
|
583
|
// all molecular (#3360) and related updates
|
584
|
updateMolecularAndRelated(stepList);
|
585
|
|
586
|
// update vocabulary representaitons
|
587
|
step = TermVocabularyRepresentationUpdater.NewInstance();
|
588
|
stepList.add(step);
|
589
|
|
590
|
return stepList;
|
591
|
}
|
592
|
|
593
|
private void updateMolecularAndRelated(List<ISchemaUpdaterStep> stepList) {
|
594
|
String stepName;
|
595
|
String tableName;
|
596
|
ISchemaUpdaterStep step;
|
597
|
String columnName;
|
598
|
int length;
|
599
|
Integer defaultValue;
|
600
|
String referencedTable;
|
601
|
|
602
|
// Primer #3360
|
603
|
stepName = "Create table 'Primer'";
|
604
|
tableName = "Primer";
|
605
|
step = TableCreator.NewAnnotatableInstance(stepName, tableName,
|
606
|
new String[] { "label", "sequence_id", "publishedIn_id" }, // colNames
|
607
|
new String[] { "string_255", "int", "int" }, // columnTypes
|
608
|
new String[] { null, Sequence.class.getSimpleName(),
|
609
|
Reference.class.getSimpleName() }, // referencedTables
|
610
|
INCLUDE_AUDIT);
|
611
|
stepList.add(step);
|
612
|
|
613
|
// MaterialOrMethod #3360
|
614
|
stepName = "Create table 'MaterialOrMethodEvent'";
|
615
|
tableName = MaterialOrMethodEvent.class.getSimpleName();
|
616
|
step = TableCreator.NewEventInstance(stepName, tableName, new String[] {
|
617
|
"DTYPE", "strain", "temperature", "definedMaterialOrMethod_id",
|
618
|
"forwardPrimer_id", "reversePrimer_id", "medium_id" }, // colNames
|
619
|
new String[] { "string_255", "string_255", "double", "int",
|
620
|
"int", "int", "int" }, // columnTypes
|
621
|
new String[] { null, null, null, "DefinedTermBase", "Primer",
|
622
|
"Primer", "DefinedTermBase" }, // referencedTables
|
623
|
INCLUDE_AUDIT);
|
624
|
stepList.add(step);
|
625
|
|
626
|
stepName = "Remove preservation column from SpecimenOrObservationBase";
|
627
|
// to fully remove all foreign keys, maybe there is a better way to do so
|
628
|
// we don't expect any preservation information to exist in any CDM
|
629
|
// database
|
630
|
tableName = "SpecimenOrObservationBase";
|
631
|
String oldColumnName = "preservation_id";
|
632
|
step = ColumnRemover.NewInstance(stepName, tableName, oldColumnName,
|
633
|
INCLUDE_AUDIT);
|
634
|
stepList.add(step);
|
635
|
|
636
|
stepName = "Add new preservation column to SpecimenOrObservationBase";
|
637
|
tableName = "SpecimenOrObservationBase";
|
638
|
String newColumnName = "preservation_id";
|
639
|
boolean notNull = false;
|
640
|
step = ColumnAdder.NewIntegerInstance(stepName, tableName,
|
641
|
newColumnName, INCLUDE_AUDIT, notNull, "MaterialOrMethodEvent");
|
642
|
stepList.add(step);
|
643
|
|
644
|
// Amplification #3360
|
645
|
stepName = "Create table 'Amplification'";
|
646
|
tableName = "Amplification";
|
647
|
step = TableCreator.NewEventInstance(stepName, tableName,
|
648
|
new String[] { "dnaSample_id", "dnaMarker_id",
|
649
|
"forwardPrimer_id", "reversePrimer_id",
|
650
|
"purification_id", "cloning_id", "gelPhoto_id",
|
651
|
"successful", "successText", "ladderUsed",
|
652
|
"electrophoresisVoltage", "gelRunningTime",
|
653
|
"gelConcentration" }, // colNames
|
654
|
new String[] { "int", "int", "int", "int", "int", "int", "int",
|
655
|
"bit", "string_255", "string_255", "double", "double",
|
656
|
"double" }, // columnTypes
|
657
|
new String[] { "SpecimenOrObservationBase", "DefinedTermBase",
|
658
|
"Primer", "Primer", "MaterialOrMethodEvent",
|
659
|
"MaterialOrMethodEvent", "Media", null, null, null,
|
660
|
null, null, null }, // referencedTables
|
661
|
INCLUDE_AUDIT);
|
662
|
stepList.add(step);
|
663
|
|
664
|
// SingleRead #3360
|
665
|
stepName = "Create table 'SingleRead'";
|
666
|
tableName = "SingleRead";
|
667
|
step = TableCreator.NewEventInstance(stepName, tableName, new String[] {
|
668
|
"amplification_id", "materialOrMethod_id", "primer_id",
|
669
|
"pherogram_id", "direction", "sequence_length" }, // colNames
|
670
|
new String[] { "int", "int", "int", "int", "string_3", "int" }, // columnTypes
|
671
|
new String[] { "Amplification", "MaterialOrMethodEvent",
|
672
|
"Primer", "Media", null, null }, // referencedTables
|
673
|
INCLUDE_AUDIT);
|
674
|
stepList.add(step);
|
675
|
|
676
|
// sequence - consensussequence_string #3360
|
677
|
stepName = "Add sequence_string to single read";
|
678
|
columnName = "sequence_string";
|
679
|
step = ColumnAdder.NewClobInstance(stepName, tableName, columnName,
|
680
|
INCLUDE_AUDIT);
|
681
|
stepList.add(step);
|
682
|
|
683
|
// amplification - single reads #3360
|
684
|
stepName = "Add single reads to amplification";
|
685
|
String firstTable = "Amplification";
|
686
|
String secondTable = "SingleRead";
|
687
|
step = MnTableCreator
|
688
|
.NewMnInstance(stepName, firstTable, null, secondTable, null, null,
|
689
|
SchemaUpdaterBase.INCLUDE_AUDIT, !IS_LIST, IS_1_TO_M);
|
690
|
stepList.add(step);
|
691
|
|
692
|
// sequence - single reads #3360
|
693
|
stepName = "Add single reads to sequence";
|
694
|
firstTable = "Sequence";
|
695
|
secondTable = "SingleRead";
|
696
|
step = MnTableCreator
|
697
|
.NewMnInstance(stepName, firstTable, null, secondTable, null, null,
|
698
|
SchemaUpdaterBase.INCLUDE_AUDIT, !IS_LIST, IS_1_TO_M);
|
699
|
stepList.add(step);
|
700
|
|
701
|
// sequence - barcode #3360
|
702
|
stepName = "Add barcodesequencepart_length to sequence";
|
703
|
tableName = "Sequence";
|
704
|
columnName = "barcodeSequencePart_length";
|
705
|
defaultValue = null;
|
706
|
step = ColumnAdder.NewIntegerInstance(stepName, tableName, columnName,
|
707
|
INCLUDE_AUDIT, defaultValue, false);
|
708
|
stepList.add(step);
|
709
|
|
710
|
// sequence - barcode #3360
|
711
|
stepName = "Add barcodesequencepart_string to sequence";
|
712
|
tableName = "Sequence";
|
713
|
columnName = "barcodeSequencePart_string";
|
714
|
step = ColumnAdder.NewClobInstance(stepName, tableName, columnName,
|
715
|
INCLUDE_AUDIT);
|
716
|
stepList.add(step);
|
717
|
|
718
|
// sequence - consensussequence_length #3360
|
719
|
stepName = "Add consensusSequence_length to sequence";
|
720
|
tableName = "Sequence";
|
721
|
columnName = "consensusSequence_length";
|
722
|
defaultValue = null;
|
723
|
step = ColumnAdder.NewIntegerInstance(stepName, tableName, columnName,
|
724
|
INCLUDE_AUDIT, defaultValue, false);
|
725
|
stepList.add(step);
|
726
|
|
727
|
// sequence - consensussequence_string #3360
|
728
|
stepName = "Add consensusSequence_string to sequence";
|
729
|
tableName = "Sequence";
|
730
|
columnName = "consensusSequence_string";
|
731
|
step = ColumnAdder.NewClobInstance(stepName, tableName, columnName,
|
732
|
INCLUDE_AUDIT);
|
733
|
stepList.add(step);
|
734
|
|
735
|
// sequence - contigFile #3360
|
736
|
stepName = "Add contigFile to sequence";
|
737
|
tableName = "Sequence";
|
738
|
columnName = "contigFile_id";
|
739
|
referencedTable = "Media";
|
740
|
step = ColumnAdder.NewIntegerInstance(stepName, tableName, columnName,
|
741
|
INCLUDE_AUDIT, false, referencedTable);
|
742
|
stepList.add(step);
|
743
|
|
744
|
// sequence - boldprocessid #3360
|
745
|
stepName = "Add boldprocessId to sequence";
|
746
|
tableName = "Sequence";
|
747
|
columnName = "boldProcessId";
|
748
|
length = 20;
|
749
|
step = ColumnAdder.NewStringInstance(stepName, tableName, columnName,
|
750
|
length, INCLUDE_AUDIT);
|
751
|
stepList.add(step);
|
752
|
|
753
|
// sequence - boldprocessid #3360
|
754
|
stepName = "Add geneticAccessionNumber to sequence";
|
755
|
tableName = "Sequence";
|
756
|
columnName = "geneticAccessionNumber";
|
757
|
length = 20;
|
758
|
step = ColumnAdder.NewStringInstance(stepName, tableName, columnName,
|
759
|
length, INCLUDE_AUDIT);
|
760
|
stepList.add(step);
|
761
|
|
762
|
// sequence - haplotype #3360
|
763
|
stepName = "Add haplotype to sequence";
|
764
|
tableName = "Sequence";
|
765
|
columnName = "haplotype";
|
766
|
length = 100;
|
767
|
step = ColumnAdder.NewStringInstance(stepName, tableName, columnName,
|
768
|
length, INCLUDE_AUDIT);
|
769
|
stepList.add(step);
|
770
|
|
771
|
// sequence - isBarcode #3360
|
772
|
stepName = "Add isBarcode to sequence";
|
773
|
tableName = "Sequence";
|
774
|
columnName = "isBarcode";
|
775
|
step = ColumnAdder.NewBooleanInstance(stepName, tableName, columnName,
|
776
|
INCLUDE_AUDIT, false);
|
777
|
stepList.add(step);
|
778
|
|
779
|
// sequence - dnaMarker #3360
|
780
|
stepName = "Add dnaMarker to sequence";
|
781
|
tableName = "Sequence";
|
782
|
columnName = "dnaMarker_id";
|
783
|
referencedTable = "DefinedTermBase";
|
784
|
step = ColumnAdder.NewIntegerInstance(stepName, tableName, columnName,
|
785
|
INCLUDE_AUDIT, false, referencedTable);
|
786
|
stepList.add(step);
|
787
|
|
788
|
// sequence - dnaSample #3360
|
789
|
stepName = "Add dnaSample to sequence";
|
790
|
tableName = "Sequence";
|
791
|
columnName = "dnaSample_id";
|
792
|
referencedTable = "SpecimenOrObservationBase";
|
793
|
step = ColumnAdder.NewIntegerInstance(stepName, tableName, columnName,
|
794
|
INCLUDE_AUDIT, false, referencedTable);
|
795
|
stepList.add(step);
|
796
|
}
|
797
|
|
798
|
private void addPublishFlag(List<ISchemaUpdaterStep> stepList) {
|
799
|
String stepName;
|
800
|
String tableName;
|
801
|
ISchemaUpdaterStep step;
|
802
|
String columnName;
|
803
|
String query;
|
804
|
|
805
|
// TaxonBase
|
806
|
|
807
|
// add publish flag to taxon
|
808
|
stepName = "Add publish flag column to taxon base";
|
809
|
tableName = "TaxonBase";
|
810
|
columnName = "publish";
|
811
|
step = ColumnAdder.NewBooleanInstance(stepName, tableName, columnName,
|
812
|
INCLUDE_AUDIT, true);
|
813
|
stepList.add(step);
|
814
|
|
815
|
// update publish with existing publish false markers
|
816
|
stepName = "update TaxonBase publish if publish false markers exist";
|
817
|
query = " UPDATE @@TaxonBase@@ "
|
818
|
+ " SET publish = @FALSE@ "
|
819
|
+ " WHERE id IN ( "
|
820
|
+ " SELECT DISTINCT MN.TaxonBase_id "
|
821
|
+ " FROM @@Marker@@ m INNER JOIN @@TaxonBase_Marker@@ MN ON MN.markers_id = m.id "
|
822
|
+ " INNER JOIN @@DefinedTermBase@@ markerType ON m.markertype_id = markerType.id "
|
823
|
+ " WHERE m.flag = @FALSE@ AND markerType.uuid = '0522c2b3-b21c-400c-80fc-a251c3501dbc' "
|
824
|
+ ")";
|
825
|
step = SimpleSchemaUpdaterStep.NewAuditedInstance(stepName, query, "TaxonBase", 99);
|
826
|
stepList.add(step);
|
827
|
|
828
|
// remove publish marker MN table
|
829
|
stepName = "Remove existing TaxonBase publish markers MN";
|
830
|
query = " DELETE "
|
831
|
+ " FROM @@TaxonBase_Marker@@ "
|
832
|
+ " WHERE markers_id IN ( "
|
833
|
+ " SELECT m.id "
|
834
|
+ " FROM @@Marker@@ m INNER JOIN @@DefinedTermBase@@ mType ON m.markertype_id = mType.id "
|
835
|
+ " WHERE mType.uuid = '0522c2b3-b21c-400c-80fc-a251c3501dbc' "
|
836
|
+ ")";
|
837
|
step = SimpleSchemaUpdaterStep.NewAuditedInstance(stepName, query, "TaxonBase_Marker", 99);
|
838
|
stepList.add(step);
|
839
|
|
840
|
// update publish with existing publish false markers
|
841
|
stepName = "Remove existing TaxonBase publish markers";
|
842
|
query = " DELETE "
|
843
|
+ " FROM @@Marker@@ "
|
844
|
+ " WHERE id NOT IN "
|
845
|
+ " (SELECT MN.markers_id FROM @@TaxonBase_Marker@@ MN) "
|
846
|
+ " AND (markedObj_type = 'eu.etaxonomy.cdm.model.taxon.Synonym' OR markedObj_type = 'eu.etaxonomy.cdm.model.taxon.Taxon') "
|
847
|
+ " AND markertype_id IN ( "
|
848
|
+ "SELECT id FROM @@DefinedTermBase@@ WHERE uuid = '0522c2b3-b21c-400c-80fc-a251c3501dbc' "
|
849
|
+ ")";
|
850
|
step = SimpleSchemaUpdaterStep.NewNonAuditedInstance(stepName, query, 99); // AUD does not have markedObj_type
|
851
|
stepList.add(step);
|
852
|
|
853
|
// SpecimenOrObservationBase
|
854
|
|
855
|
// add publish flag to specimen
|
856
|
stepName = "Add publish flag column to SpecimenOrObservationBase";
|
857
|
tableName = "SpecimenOrObservationBase";
|
858
|
columnName = "publish";
|
859
|
step = ColumnAdder.NewBooleanInstance(stepName, tableName, columnName,
|
860
|
INCLUDE_AUDIT, true);
|
861
|
stepList.add(step);
|
862
|
|
863
|
// update publish with existing publish false markers
|
864
|
stepName = "update SpecimenOrObservationBase publish if publish false markers exist";
|
865
|
query = " UPDATE @@SpecimenOrObservationBase@@ "
|
866
|
+ " SET publish = @FALSE@ "
|
867
|
+ " WHERE id IN ( "
|
868
|
+ " SELECT DISTINCT MN.SpecimenOrObservationBase_id "
|
869
|
+ " FROM @@Marker@@ m INNER JOIN @@SpecimenOrObservationBase_Marker@@ MN ON MN.markers_id = m.id "
|
870
|
+ " INNER JOIN @@DefinedTermBase@@ markerType ON m.markertype_id = markerType.id "
|
871
|
+ " WHERE m.flag = @FALSE@ AND markerType.uuid = '0522c2b3-b21c-400c-80fc-a251c3501dbc' "
|
872
|
+ ")";
|
873
|
step = SimpleSchemaUpdaterStep.NewAuditedInstance(stepName, query, "SpecimenOrObservationBase", 99);
|
874
|
stepList.add(step);
|
875
|
|
876
|
// remove publish marker MN table
|
877
|
stepName = "Remove existing SpecimenOrObservationBase publish markers MN";
|
878
|
query = " DELETE "
|
879
|
+ " FROM @@SpecimenOrObservationBase_Marker@@ "
|
880
|
+ " WHERE markers_id IN ( "
|
881
|
+ " SELECT m.id "
|
882
|
+ " FROM @@Marker@@ m INNER JOIN @@DefinedTermBase@@ mType ON m.markertype_id = mType.id "
|
883
|
+ " WHERE mType.uuid = '0522c2b3-b21c-400c-80fc-a251c3501dbc' "
|
884
|
+ ")";
|
885
|
step = SimpleSchemaUpdaterStep.NewAuditedInstance(stepName, query, "SpecimenOrObservationBase_Marker", 99);
|
886
|
stepList.add(step);
|
887
|
|
888
|
// update publish with existing publish false markers
|
889
|
stepName = "Remove existing SpecimenOrObservationBase publish markers";
|
890
|
query = " DELETE "
|
891
|
+ " FROM @@Marker@@ "
|
892
|
+ " WHERE id NOT IN "
|
893
|
+ " (SELECT MN.markers_id FROM @@SpecimenOrObservationBase_Marker@@ MN) "
|
894
|
+ " AND (markedObj_type = 'eu.etaxonomy.cdm.model.occurrence.DerivedUnit' "
|
895
|
+ "OR markedObj_type = 'eu.etaxonomy.cdm.model.occurrence.FieldObservation' "
|
896
|
+ "OR markedObj_type = 'eu.etaxonomy.cdm.model.occurrence.FieldUnit' "
|
897
|
+ "OR markedObj_type = 'eu.etaxonomy.cdm.model.occurrence.Specimen' "
|
898
|
+ "OR markedObj_type = 'eu.etaxonomy.cdm.model.occurrence.Fossil' "
|
899
|
+ "OR markedObj_type = 'eu.etaxonomy.cdm.model.occurrence.LivingBeing' "
|
900
|
+ "OR markedObj_type = 'eu.etaxonomy.cdm.model.occurrence.Observation' "
|
901
|
+ "OR markedObj_type = 'eu.etaxonomy.cdm.model.occurrence.MediaSpecimen' "
|
902
|
+ "OR markedObj_type = 'eu.etaxonomy.cdm.model.occurrence.TissueSample' "
|
903
|
+ "OR markedObj_type = 'eu.etaxonomy.cdm.model.molecular.DnaSample') "
|
904
|
+ " AND markertype_id IN ( "
|
905
|
+ "SELECT id FROM @@DefinedTermBase@@ WHERE uuid = '0522c2b3-b21c-400c-80fc-a251c3501dbc' "
|
906
|
+ ")";
|
907
|
step = SimpleSchemaUpdaterStep.NewNonAuditedInstance(stepName, query, 99);
|
908
|
stepList.add(step);
|
909
|
|
910
|
// remove all audited markers if no current markers exist
|
911
|
// this may remove more audited markers then expected but we do accept
|
912
|
// this here
|
913
|
stepName = "Remove all audited markers if no current markers exist";
|
914
|
query = " DELETE "
|
915
|
+ " FROM @@Marker_AUD@@ "
|
916
|
+ " WHERE id NOT IN (SELECT id FROM @@Marker@@ ) "
|
917
|
+ " AND markertype_id IN ( "
|
918
|
+ "SELECT id FROM @@DefinedTermBase@@ WHERE uuid = '0522c2b3-b21c-400c-80fc-a251c3501dbc' "
|
919
|
+ ")";
|
920
|
step = SimpleSchemaUpdaterStep.NewNonAuditedInstance(stepName, query, 99);
|
921
|
stepList.add(step);
|
922
|
|
923
|
}
|
924
|
|
925
|
private void updateRights2RightsInfo(List<ISchemaUpdaterStep> stepList) {
|
926
|
// #2945
|
927
|
String stepName = "Update Rights to RightsInfo";
|
928
|
String tableName = "Rights";
|
929
|
String newTableName = "RightsInfo";
|
930
|
ISchemaUpdaterStep step = TableNameChanger.NewInstance(stepName,
|
931
|
tableName, newTableName, INCLUDE_AUDIT);
|
932
|
stepList.add(step);
|
933
|
|
934
|
stepName = "Update AgentBase_Rights to RightsInfo";
|
935
|
tableName = "AgentBase_Rights";
|
936
|
newTableName = "AgentBase_RightsInfo";
|
937
|
step = TableNameChanger.NewInstance(stepName, tableName, newTableName,
|
938
|
INCLUDE_AUDIT);
|
939
|
stepList.add(step);
|
940
|
|
941
|
stepName = "Update Rights_Annotation to RightsInfo";
|
942
|
tableName = "Rights_Annotation";
|
943
|
newTableName = "RightsInfo_Annotation";
|
944
|
step = TableNameChanger.NewInstance(stepName, tableName, newTableName,
|
945
|
INCLUDE_AUDIT);
|
946
|
stepList.add(step);
|
947
|
|
948
|
stepName = "Update Rights_id column in RightsInfo_Annotation";
|
949
|
tableName = "RightsInfo_Annotation";
|
950
|
String columnName = "Rights_Id";
|
951
|
String newColumnName = "RightsInfo_id";
|
952
|
step = ColumnNameChanger.NewIntegerInstance(stepName, tableName,
|
953
|
columnName, newColumnName, INCLUDE_AUDIT);
|
954
|
stepList.add(step);
|
955
|
|
956
|
stepName = "Update Rights_Marker to RightsInfo";
|
957
|
tableName = "Rights_Marker";
|
958
|
newTableName = "RightsInfo_Marker";
|
959
|
step = TableNameChanger.NewInstance(stepName, tableName, newTableName,
|
960
|
INCLUDE_AUDIT);
|
961
|
stepList.add(step);
|
962
|
|
963
|
stepName = "Update Rights_id column in RightsInfo_Marker";
|
964
|
tableName = "RightsInfo_Marker";
|
965
|
columnName = "Rights_Id";
|
966
|
newColumnName = "RightsInfo_id";
|
967
|
step = ColumnNameChanger.NewIntegerInstance(stepName, tableName,
|
968
|
columnName, newColumnName, INCLUDE_AUDIT);
|
969
|
stepList.add(step);
|
970
|
|
971
|
stepName = "Update Classification_Rights to RightsInfo";
|
972
|
tableName = "Classification_Rights";
|
973
|
newTableName = "Classification_RightsInfo";
|
974
|
step = TableNameChanger.NewInstance(stepName, tableName, newTableName,
|
975
|
INCLUDE_AUDIT);
|
976
|
stepList.add(step);
|
977
|
|
978
|
stepName = "Update Collection_Rights to RightsInfo";
|
979
|
tableName = "Collection_Rights";
|
980
|
newTableName = "Collection_RightsInfo";
|
981
|
step = TableNameChanger.NewInstance(stepName, tableName, newTableName,
|
982
|
INCLUDE_AUDIT);
|
983
|
stepList.add(step);
|
984
|
|
985
|
stepName = "Update DefinedTermBase_Rights to RightsInfo";
|
986
|
tableName = "DefinedTermBase_Rights";
|
987
|
newTableName = "DefinedTermBase_RightsInfo";
|
988
|
step = TableNameChanger.NewInstance(stepName, tableName, newTableName,
|
989
|
INCLUDE_AUDIT);
|
990
|
stepList.add(step);
|
991
|
|
992
|
stepName = "Update DescriptionBase_Rights to RightsInfo";
|
993
|
tableName = "DescriptionBase_Rights";
|
994
|
newTableName = "DescriptionBase_RightsInfo";
|
995
|
step = TableNameChanger.NewInstance(stepName, tableName, newTableName,
|
996
|
INCLUDE_AUDIT);
|
997
|
stepList.add(step);
|
998
|
|
999
|
stepName = "Update FeatureTree_Rights to RightsInfo";
|
1000
|
tableName = "FeatureTree_Rights";
|
1001
|
newTableName = "FeatureTree_RightsInfo";
|
1002
|
step = TableNameChanger.NewInstance(stepName, tableName, newTableName,
|
1003
|
INCLUDE_AUDIT);
|
1004
|
stepList.add(step);
|
1005
|
|
1006
|
stepName = "Update Media_Rights to RightsInfo";
|
1007
|
tableName = "Media_Rights";
|
1008
|
newTableName = "Media_RightsInfo";
|
1009
|
step = TableNameChanger.NewInstance(stepName, tableName, newTableName,
|
1010
|
INCLUDE_AUDIT);
|
1011
|
stepList.add(step);
|
1012
|
|
1013
|
stepName = "Update PolytomousKey_Rights to RightsInfo";
|
1014
|
tableName = "PolytomousKey_Rights";
|
1015
|
newTableName = "PolytomousKey_RightsInfo";
|
1016
|
step = TableNameChanger.NewInstance(stepName, tableName, newTableName,
|
1017
|
INCLUDE_AUDIT);
|
1018
|
stepList.add(step);
|
1019
|
|
1020
|
stepName = "Update Reference_Rights to RightsInfo";
|
1021
|
tableName = "Reference_Rights";
|
1022
|
newTableName = "Reference_RightsInfo";
|
1023
|
step = TableNameChanger.NewInstance(stepName, tableName, newTableName,
|
1024
|
INCLUDE_AUDIT);
|
1025
|
stepList.add(step);
|
1026
|
|
1027
|
stepName = "Update SpecimenOrObservationBase_Rights to RightsInfo";
|
1028
|
tableName = "SpecimenOrObservationBase_Rights";
|
1029
|
newTableName = "SpecimenOrObservationBase_RightsInfo";
|
1030
|
step = TableNameChanger.NewInstance(stepName, tableName, newTableName,
|
1031
|
INCLUDE_AUDIT);
|
1032
|
stepList.add(step);
|
1033
|
|
1034
|
stepName = "Update TaxonBase_Rights to RightsInfo";
|
1035
|
tableName = "TaxonBase_Rights";
|
1036
|
newTableName = "TaxonBase_RightsInfo";
|
1037
|
step = TableNameChanger.NewInstance(stepName, tableName, newTableName,
|
1038
|
INCLUDE_AUDIT);
|
1039
|
stepList.add(step);
|
1040
|
|
1041
|
stepName = "Update TaxonNameBase_Rights to RightsInfo";
|
1042
|
tableName = "TaxonNameBase_Rights";
|
1043
|
newTableName = "TaxonNameBase_RightsInfo";
|
1044
|
step = TableNameChanger.NewInstance(stepName, tableName, newTableName,
|
1045
|
INCLUDE_AUDIT);
|
1046
|
stepList.add(step);
|
1047
|
|
1048
|
stepName = "Update TermVocabulary_Rights to RightsInfo";
|
1049
|
tableName = "TermVocabulary_Rights";
|
1050
|
newTableName = "TermVocabulary_RightsInfo";
|
1051
|
step = TableNameChanger.NewInstance(stepName, tableName, newTableName,
|
1052
|
INCLUDE_AUDIT);
|
1053
|
stepList.add(step);
|
1054
|
}
|
1055
|
|
1056
|
private void updateReferenceType(List<ISchemaUpdaterStep> stepList) {
|
1057
|
|
1058
|
String baseQuery = " UPDATE @@Reference@@ " + " SET refType = '%s' "
|
1059
|
+ " WHERE refType = '%s' ";
|
1060
|
Integer index = 0;
|
1061
|
String tableName = "Reference";
|
1062
|
|
1063
|
// 0-Article
|
1064
|
String stepName = "Update reference refType for Article";
|
1065
|
String query = String.format(baseQuery, ReferenceType.Article.getKey(),
|
1066
|
String.valueOf(index++));
|
1067
|
ISchemaUpdaterStep step = SimpleSchemaUpdaterStep
|
1068
|
.NewNonAuditedInstance(stepName, query, 99).setDefaultAuditing(tableName);
|
1069
|
stepList.add(step);
|
1070
|
|
1071
|
// 1-Book
|
1072
|
stepName = "Update reference refType for Book";
|
1073
|
query = String.format(baseQuery, ReferenceType.Book.getKey(),
|
1074
|
String.valueOf(index++));
|
1075
|
step = SimpleSchemaUpdaterStep.NewNonAuditedInstance(stepName, query, 99)
|
1076
|
.setDefaultAuditing(tableName);
|
1077
|
stepList.add(step);
|
1078
|
|
1079
|
// 2-Book Section
|
1080
|
stepName = "Update reference refType for Book Section";
|
1081
|
query = String.format(baseQuery, ReferenceType.BookSection.getKey(),
|
1082
|
String.valueOf(index++));
|
1083
|
step = SimpleSchemaUpdaterStep.NewNonAuditedInstance(stepName, query, 99)
|
1084
|
.setDefaultAuditing(tableName);
|
1085
|
stepList.add(step);
|
1086
|
|
1087
|
// 3-CD / DVD
|
1088
|
stepName = "Update reference refType for CD";
|
1089
|
query = String.format(baseQuery, ReferenceType.CdDvd.getKey(),
|
1090
|
String.valueOf(index++));
|
1091
|
step = SimpleSchemaUpdaterStep.NewNonAuditedInstance(stepName, query, 99)
|
1092
|
.setDefaultAuditing(tableName);
|
1093
|
stepList.add(step);
|
1094
|
|
1095
|
// 4-Database
|
1096
|
stepName = "Update reference refType for Database";
|
1097
|
query = String.format(baseQuery, ReferenceType.Database.getKey(),
|
1098
|
String.valueOf(index++));
|
1099
|
step = SimpleSchemaUpdaterStep.NewNonAuditedInstance(stepName, query, 99)
|
1100
|
.setDefaultAuditing(tableName);
|
1101
|
stepList.add(step);
|
1102
|
|
1103
|
// 5-Generic
|
1104
|
stepName = "Update reference refType for Generic";
|
1105
|
query = String.format(baseQuery, ReferenceType.Generic.getKey(),
|
1106
|
String.valueOf(index++));
|
1107
|
step = SimpleSchemaUpdaterStep.NewNonAuditedInstance(stepName, query, 99)
|
1108
|
.setDefaultAuditing(tableName);
|
1109
|
stepList.add(step);
|
1110
|
|
1111
|
// 6-InProceedings
|
1112
|
stepName = "Update reference refType for InProceedings";
|
1113
|
query = String.format(baseQuery, ReferenceType.InProceedings.getKey(),
|
1114
|
String.valueOf(index++));
|
1115
|
step = SimpleSchemaUpdaterStep.NewNonAuditedInstance(stepName, query, 99)
|
1116
|
.setDefaultAuditing(tableName);
|
1117
|
stepList.add(step);
|
1118
|
|
1119
|
// 7-Journal
|
1120
|
stepName = "Update reference refType for Journal";
|
1121
|
query = String.format(baseQuery, ReferenceType.Journal.getKey(),
|
1122
|
String.valueOf(index++));
|
1123
|
step = SimpleSchemaUpdaterStep.NewNonAuditedInstance(stepName, query, 99)
|
1124
|
.setDefaultAuditing(tableName);
|
1125
|
stepList.add(step);
|
1126
|
|
1127
|
// 8-Map
|
1128
|
stepName = "Update reference refType for Map";
|
1129
|
query = String.format(baseQuery, ReferenceType.Map.getKey(),
|
1130
|
String.valueOf(index++));
|
1131
|
step = SimpleSchemaUpdaterStep.NewNonAuditedInstance(stepName, query, 99)
|
1132
|
.setDefaultAuditing(tableName);
|
1133
|
stepList.add(step);
|
1134
|
|
1135
|
// 9-Patent
|
1136
|
stepName = "Update reference refType for Patent";
|
1137
|
query = String.format(baseQuery, ReferenceType.Patent.getKey(),
|
1138
|
String.valueOf(index++));
|
1139
|
step = SimpleSchemaUpdaterStep.NewNonAuditedInstance(stepName, query, 99)
|
1140
|
.setDefaultAuditing(tableName);
|
1141
|
stepList.add(step);
|
1142
|
|
1143
|
// 10-Personal Communication
|
1144
|
stepName = "Update reference refType for Personal Communication";
|
1145
|
query = String.format(baseQuery,
|
1146
|
ReferenceType.PersonalCommunication.getKey(),
|
1147
|
String.valueOf(index++));
|
1148
|
step = SimpleSchemaUpdaterStep.NewNonAuditedInstance(stepName, query, 99)
|
1149
|
.setDefaultAuditing(tableName);
|
1150
|
stepList.add(step);
|
1151
|
|
1152
|
// 11-PrintSeries
|
1153
|
stepName = "Update reference refType for PrintSeries";
|
1154
|
query = String.format(baseQuery, ReferenceType.PrintSeries.getKey(),
|
1155
|
String.valueOf(index++));
|
1156
|
step = SimpleSchemaUpdaterStep.NewNonAuditedInstance(stepName, query, 99)
|
1157
|
.setDefaultAuditing(tableName);
|
1158
|
stepList.add(step);
|
1159
|
|
1160
|
// 12-Proceedings
|
1161
|
stepName = "Update reference refType for Proceedings";
|
1162
|
query = String.format(baseQuery, ReferenceType.Proceedings.getKey(),
|
1163
|
String.valueOf(index++));
|
1164
|
step = SimpleSchemaUpdaterStep.NewNonAuditedInstance(stepName, query, 99)
|
1165
|
.setDefaultAuditing(tableName);
|
1166
|
;
|
1167
|
stepList.add(step);
|
1168
|
|
1169
|
// 13-Report
|
1170
|
stepName = "Update reference refType for Report";
|
1171
|
query = String.format(baseQuery, ReferenceType.Report.getKey(),
|
1172
|
String.valueOf(index++));
|
1173
|
step = SimpleSchemaUpdaterStep.NewNonAuditedInstance(stepName, query, 99)
|
1174
|
.setDefaultAuditing(tableName);
|
1175
|
;
|
1176
|
stepList.add(step);
|
1177
|
|
1178
|
// 14-Thesis
|
1179
|
stepName = "Update reference refType for Thesis";
|
1180
|
query = String.format(baseQuery, ReferenceType.Thesis.getKey(),
|
1181
|
String.valueOf(index++));
|
1182
|
step = SimpleSchemaUpdaterStep.NewNonAuditedInstance(stepName, query, 99)
|
1183
|
.setDefaultAuditing(tableName);
|
1184
|
;
|
1185
|
stepList.add(step);
|
1186
|
|
1187
|
// 15-WebPage
|
1188
|
stepName = "Update reference refType for WebPage";
|
1189
|
query = String.format(baseQuery, ReferenceType.WebPage.getKey(),
|
1190
|
String.valueOf(index++));
|
1191
|
step = SimpleSchemaUpdaterStep.NewNonAuditedInstance(stepName, query, 99)
|
1192
|
.setDefaultAuditing(tableName);
|
1193
|
;
|
1194
|
stepList.add(step);
|
1195
|
}
|
1196
|
|
1197
|
private void updateRecordBasis(List<ISchemaUpdaterStep> stepList) {
|
1198
|
String stepName = "Update recordBasis for SpecimenOrObservationBase";
|
1199
|
String tableName = "@@SpecimenOrObservationBase@@";
|
1200
|
|
1201
|
// Field Unit
|
1202
|
String query = " UPDATE " + tableName + " SET recordBasis = '"
|
1203
|
+ SpecimenOrObservationType.FieldUnit.getKey() + "' "
|
1204
|
+ " WHERE DTYPE = 'FieldUnit' OR DTYPE = 'FieldObservation'";
|
1205
|
ISchemaUpdaterStep step = SimpleSchemaUpdaterStep
|
1206
|
.NewNonAuditedInstance(stepName, query, 99)
|
1207
|
.setDefaultAuditing(tableName);
|
1208
|
stepList.add(step);
|
1209
|
|
1210
|
// DerivedUnit
|
1211
|
query = " UPDATE " + tableName + " SET recordBasis = '"
|
1212
|
+ SpecimenOrObservationType.DerivedUnit.getKey() + "' "
|
1213
|
+ " WHERE DTYPE = '" + DerivedUnit.class.getSimpleName() + "'";
|
1214
|
step = SimpleSchemaUpdaterStep.NewNonAuditedInstance(stepName, query, 99)
|
1215
|
.setDefaultAuditing(tableName);
|
1216
|
stepList.add(step);
|
1217
|
|
1218
|
// Living Being
|
1219
|
query = " UPDATE " + tableName + " SET recordBasis = '"
|
1220
|
+ SpecimenOrObservationType.LivingSpecimen.getKey() + "' "
|
1221
|
+ " WHERE DTYPE = 'LivingBeing'";
|
1222
|
step = SimpleSchemaUpdaterStep.NewNonAuditedInstance(stepName, query, 99)
|
1223
|
.setDefaultAuditing(tableName);
|
1224
|
stepList.add(step);
|
1225
|
|
1226
|
// Observation
|
1227
|
query = " UPDATE " + tableName + " SET recordBasis = '"
|
1228
|
+ SpecimenOrObservationType.Observation.getKey() + "' "
|
1229
|
+ " WHERE DTYPE = 'Observation'";
|
1230
|
step = SimpleSchemaUpdaterStep.NewNonAuditedInstance(stepName, query, 99)
|
1231
|
.setDefaultAuditing(tableName);
|
1232
|
stepList.add(step);
|
1233
|
|
1234
|
// Preserved Specimen
|
1235
|
query = " UPDATE " + tableName + " SET recordBasis = '"
|
1236
|
+ SpecimenOrObservationType.PreservedSpecimen.getKey() + "' "
|
1237
|
+ " WHERE DTYPE = 'Specimen'";
|
1238
|
step = SimpleSchemaUpdaterStep.NewNonAuditedInstance(stepName, query, 99)
|
1239
|
.setDefaultAuditing(tableName);
|
1240
|
stepList.add(step);
|
1241
|
|
1242
|
// Fossil
|
1243
|
query = " UPDATE " + tableName + " SET recordBasis = '"
|
1244
|
+ SpecimenOrObservationType.Fossil.getKey() + "' "
|
1245
|
+ " WHERE DTYPE = 'Fossil'";
|
1246
|
step = SimpleSchemaUpdaterStep.NewNonAuditedInstance(stepName, query, 99)
|
1247
|
.setDefaultAuditing(tableName);
|
1248
|
stepList.add(step);
|
1249
|
|
1250
|
// DnaSample
|
1251
|
query = " UPDATE " + tableName + " SET recordBasis = '"
|
1252
|
+ SpecimenOrObservationType.DnaSample.getKey() + "' "
|
1253
|
+ " WHERE DTYPE = 'DnaSample'";
|
1254
|
step = SimpleSchemaUpdaterStep.NewNonAuditedInstance(stepName, query, 99)
|
1255
|
.setDefaultAuditing(tableName);
|
1256
|
stepList.add(step);
|
1257
|
|
1258
|
// Unknown as default (if not yet handled before)
|
1259
|
query = " UPDATE " + tableName + " SET recordBasis = '"
|
1260
|
+ SpecimenOrObservationType.Unknown.getKey() + "' "
|
1261
|
+ " WHERE recordBasis IS NULL ";
|
1262
|
step = SimpleSchemaUpdaterStep.NewNonAuditedInstance(stepName, query, 99)
|
1263
|
.setDefaultAuditing(tableName);
|
1264
|
stepList.add(step);
|
1265
|
}
|
1266
|
|
1267
|
// update length of all title caches and full title cache in names
|
1268
|
// TODO test for H2, Postgres, SqlServer
|
1269
|
// https://dev.e-taxonomy.eu/trac/ticket/1592
|
1270
|
private void updateTitleCacheLength(List<ISchemaUpdaterStep> stepList) {
|
1271
|
String stepName;
|
1272
|
String tableName;
|
1273
|
ISchemaUpdaterStep step;
|
1274
|
String columnName;
|
1275
|
int size = 800;
|
1276
|
|
1277
|
stepName = "Change length of TaxonName fullTitleCache";
|
1278
|
tableName = "TaxonNameBase";
|
1279
|
columnName = "fullTitleCache";
|
1280
|
step = ColumnTypeChanger.NewStringSizeInstance(stepName, tableName,
|
1281
|
columnName, size, INCLUDE_AUDIT);
|
1282
|
stepList.add(step);
|
1283
|
|
1284
|
stepName = "Change length of TaxonName title cache";
|
1285
|
tableName = "TaxonNameBase";
|
1286
|
columnName = "titleCache";
|
1287
|
step = ColumnTypeChanger.NewStringSizeInstance(stepName, tableName,
|
1288
|
columnName, size, INCLUDE_AUDIT);
|
1289
|
stepList.add(step);
|
1290
|
|
1291
|
stepName = "Change length of TaxonBase title cache";
|
1292
|
tableName = "TaxonBase";
|
1293
|
columnName = "titleCache";
|
1294
|
step = ColumnTypeChanger.NewStringSizeInstance(stepName, tableName,
|
1295
|
columnName, size, INCLUDE_AUDIT);
|
1296
|
stepList.add(step);
|
1297
|
|
1298
|
stepName = "Change length of Classification title cache";
|
1299
|
tableName = "Classification";
|
1300
|
columnName = "titleCache";
|
1301
|
step = ColumnTypeChanger.NewStringSizeInstance(stepName, tableName,
|
1302
|
columnName, size, INCLUDE_AUDIT);
|
1303
|
stepList.add(step);
|
1304
|
|
1305
|
stepName = "Change length of DescriptionBase title cache";
|
1306
|
tableName = "DescriptionBase";
|
1307
|
columnName = "titleCache";
|
1308
|
step = ColumnTypeChanger.NewStringSizeInstance(stepName, tableName,
|
1309
|
columnName, size, INCLUDE_AUDIT);
|
1310
|
stepList.add(step);
|
1311
|
|
1312
|
stepName = "Change length of FeatureTree title cache";
|
1313
|
tableName = "FeatureTree";
|
1314
|
columnName = "titleCache";
|
1315
|
step = ColumnTypeChanger.NewStringSizeInstance(stepName, tableName,
|
1316
|
columnName, size, INCLUDE_AUDIT);
|
1317
|
stepList.add(step);
|
1318
|
|
1319
|
stepName = "Change length of Collection title cache";
|
1320
|
tableName = "Collection";
|
1321
|
columnName = "titleCache";
|
1322
|
step = ColumnTypeChanger.NewStringSizeInstance(stepName, tableName,
|
1323
|
columnName, size, INCLUDE_AUDIT);
|
1324
|
stepList.add(step);
|
1325
|
|
1326
|
stepName = "Change length of Reference title cache";
|
1327
|
tableName = "Reference";
|
1328
|
columnName = "titleCache";
|
1329
|
step = ColumnTypeChanger.NewStringSizeInstance(stepName, tableName,
|
1330
|
columnName, size, INCLUDE_AUDIT);
|
1331
|
stepList.add(step);
|
1332
|
|
1333
|
stepName = "Change length of Media title cache";
|
1334
|
tableName = "Media";
|
1335
|
columnName = "titleCache";
|
1336
|
step = ColumnTypeChanger.NewStringSizeInstance(stepName, tableName,
|
1337
|
columnName, size, INCLUDE_AUDIT);
|
1338
|
stepList.add(step);
|
1339
|
|
1340
|
stepName = "Change length of PolytomousKey title cache";
|
1341
|
tableName = "PolytomousKey";
|
1342
|
columnName = "titleCache";
|
1343
|
step = ColumnTypeChanger.NewStringSizeInstance(stepName, tableName,
|
1344
|
columnName, size, INCLUDE_AUDIT);
|
1345
|
stepList.add(step);
|
1346
|
|
1347
|
stepName = "Change length of SpecimenOrObservationBase title cache";
|
1348
|
tableName = "SpecimenOrObservationBase";
|
1349
|
columnName = "titleCache";
|
1350
|
step = ColumnTypeChanger.NewStringSizeInstance(stepName, tableName,
|
1351
|
columnName, size, INCLUDE_AUDIT);
|
1352
|
stepList.add(step);
|
1353
|
|
1354
|
stepName = "Change length of DefinedTermBase title cache";
|
1355
|
tableName = "DefinedTermBase";
|
1356
|
columnName = "titleCache";
|
1357
|
step = ColumnTypeChanger.NewStringSizeInstance(stepName, tableName,
|
1358
|
columnName, size, INCLUDE_AUDIT);
|
1359
|
stepList.add(step);
|
1360
|
|
1361
|
stepName = "Change length of TermVocabulary title cache";
|
1362
|
tableName = "TermVocabulary";
|
1363
|
columnName = "titleCache";
|
1364
|
step = ColumnTypeChanger.NewStringSizeInstance(stepName, tableName,
|
1365
|
columnName, size, INCLUDE_AUDIT);
|
1366
|
stepList.add(step);
|
1367
|
|
1368
|
}
|
1369
|
|
1370
|
private void updateDescriptionSpecimenRelation(
|
1371
|
List<ISchemaUpdaterStep> stepList) {
|
1372
|
// TODO warn if multiple entries for 1 description exists -> won't do, as this is currently not expected
|
1373
|
String sqlCount = " SELECT count(*) as n "
|
1374
|
+ " FROM DescriptionBase_SpecimenOrObservationBase MN "
|
1375
|
+ " GROUP BY MN.descriptions_id "
|
1376
|
+ " HAVING count(*) > 1 "
|
1377
|
+ " ORDER BY MN.descriptions_id, MN.describedspecimenorobservations_id ";
|
1378
|
|
1379
|
// TODO ... and log the concrete records
|
1380
|
// FROM DescriptionBase_SpecimenOrObservationBase ds
|
1381
|
// WHERE ds.descriptions_id IN (
|
1382
|
// SELECT MN.descriptions_id
|
1383
|
// FROM DescriptionBase_SpecimenOrObservationBase MN
|
1384
|
// GROUP BY MN.descriptions_id
|
1385
|
// HAVING count(*) > 1
|
1386
|
// )
|
1387
|
// ORDER BY descriptions_id, describedspecimenorobservations_id
|
1388
|
|
1389
|
// TODO test for H2, Postgresql AND SQLServer (later will need TOP 1)
|
1390
|
String stepName = "UPDATE Description - Specimen relation data ";
|
1391
|
String sql = " UPDATE @@DescriptionBase@@ " + " SET specimen_id = "
|
1392
|
+ " (SELECT MN.describedspecimenorobservations_id "
|
1393
|
+ " FROM @@DescriptionBase_SpecimenOrObservationBase@@ MN "
|
1394
|
+ " WHERE MN.descriptions_id = @@DescriptionBase@@.id " + " LIMIT 1 " + ")";
|
1395
|
ISchemaUpdaterStep step = SimpleSchemaUpdaterStep
|
1396
|
.NewNonAuditedInstance(stepName, sql, 99);
|
1397
|
stepList.add(step);
|
1398
|
|
1399
|
}
|
1400
|
|
1401
|
private void updateAbbrevTitle(List<ISchemaUpdaterStep> stepList) {
|
1402
|
String tableName = "Reference";
|
1403
|
|
1404
|
String stepName = "Update abbrevTitleCache for protected title caches with title";
|
1405
|
String query = " UPDATE @@Reference@@ "
|
1406
|
+ " SET abbrevTitle = left(title, 255), abbrevTitleCache = titleCache, protectedAbbrevTitleCache = protectedTitleCache";
|
1407
|
// + " WHERE r.title IS NOT NULL AND r.protectedTitleCache = 1 ";
|
1408
|
ISchemaUpdaterStep step = SimpleSchemaUpdaterStep
|
1409
|
.NewNonAuditedInstance(stepName, query, 99)
|
1410
|
.setDefaultAuditing(tableName);
|
1411
|
stepList.add(step);
|
1412
|
|
1413
|
// stepName =
|
1414
|
// "Update abbrevTitleCache for protected title caches with no title";
|
1415
|
// query = " UPDATE Reference r " +
|
1416
|
// " SET r.abbrevTitleCache = r.titleCache, r.protectedAbbrevTitleCache = r.protectedTitleCache"
|
1417
|
// +
|
1418
|
// " WHERE r.title IS NULL AND r.protectedTitleCache = 1 ";
|
1419
|
// step = SimpleSchemaUpdaterStep.NewNonAuditedInstance(stepName,
|
1420
|
// query).setAuditing("Reference");
|
1421
|
// stepList.add(step);
|
1422
|
|
1423
|
// stepName =
|
1424
|
// "Update abbrevTitleCache for protected title caches with title";
|
1425
|
// query = " UPDATE Reference r " +
|
1426
|
// " SET r.abbrevTitle = r.title, r.abbrevTitleCache = r.titleCache, r.protectedAbbrevTitleCache = r.protectedTitleCache"
|
1427
|
// +
|
1428
|
// " WHERE r.title IS NOT NULL AND r.protectedTitleCache = 0 ";
|
1429
|
// step = SimpleSchemaUpdaterStep.NewNonAuditedInstance(stepName,
|
1430
|
// query).setAuditing("Reference");
|
1431
|
// stepList.add(step);
|
1432
|
|
1433
|
stepName = "Update reference title, set null where abbrev title very likely";
|
1434
|
query = " UPDATE @@Reference@@ "
|
1435
|
+ " SET title = NULL "
|
1436
|
+ " WHERE title IS NOT NULL AND protectedTitleCache = @FALSE@ AND "
|
1437
|
+ " ( LENGTH(title) <= 15 AND title like '%.%.%' OR LENGTH(title) < 30 AND title like '%.%.%.%' OR LENGTH(title) < 45 AND title like '%.%.%.%.%' OR LENGTH(title) < 60 AND title like '%.%.%.%.%.%' "
|
1438
|
+ ")";
|
1439
|
step = SimpleSchemaUpdaterStep.NewNonAuditedInstance(stepName, query, 99)
|
1440
|
.setDefaultAuditing(tableName);
|
1441
|
stepList.add(step);
|
1442
|
|
1443
|
stepName = "Update reference abbrevTitle, set null where abbrev title very unlikely";
|
1444
|
query = " UPDATE @@Reference@@ "
|
1445
|
+ " SET abbrevTitle = NULL "
|
1446
|
+ " WHERE title IS NOT NULL AND protectedTitleCache = @FALSE@ AND "
|
1447
|
+ " ( title NOT like '%.%' OR LENGTH(title) > 30 AND title NOT like '%.%.%' "
|
1448
|
+ ")";
|
1449
|
step = SimpleSchemaUpdaterStep.NewNonAuditedInstance(stepName, query, 99)
|
1450
|
.setDefaultAuditing(tableName);
|
1451
|
stepList.add(step);
|
1452
|
|
1453
|
}
|
1454
|
|
1455
|
private void removeOldSequenceColumns(List<ISchemaUpdaterStep> stepList) {
|
1456
|
|
1457
|
// remove citation microreference
|
1458
|
String stepName = "Remove citationmicroreference column";
|
1459
|
String tableName = "Sequence";
|
1460
|
String columnName = "citationMicroReference";
|
1461
|
ISchemaUpdaterStep step = ColumnRemover.NewInstance(stepName,
|
1462
|
tableName, columnName, INCLUDE_AUDIT);
|
1463
|
stepList.add(step);
|
1464
|
|
1465
|
// remove datesequenced
|
1466
|
stepName = "Remove datesequenced column";
|
1467
|
columnName = "datesequenced";
|
1468
|
step = ColumnRemover.NewInstance(stepName, tableName, columnName,
|
1469
|
INCLUDE_AUDIT);
|
1470
|
stepList.add(step);
|
1471
|
|
1472
|
// remove length
|
1473
|
stepName = "Remove length column";
|
1474
|
columnName = "length";
|
1475
|
step = ColumnRemover.NewInstance(stepName, tableName, columnName,
|
1476
|
INCLUDE_AUDIT);
|
1477
|
stepList.add(step);
|
1478
|
|
1479
|
// remove sequence
|
1480
|
stepName = "Remove sequence column";
|
1481
|
columnName = "sequence";
|
1482
|
step = ColumnRemover.NewInstance(stepName, tableName, columnName,
|
1483
|
INCLUDE_AUDIT);
|
1484
|
stepList.add(step);
|
1485
|
|
1486
|
// remove locus_id
|
1487
|
stepName = "Remove locus_id column";
|
1488
|
columnName = "locus_id";
|
1489
|
step = ColumnRemover.NewInstance(stepName, tableName, columnName,
|
1490
|
INCLUDE_AUDIT);
|
1491
|
stepList.add(step);
|
1492
|
|
1493
|
// remove publishedin_id
|
1494
|
stepName = "Remove publishedin_id column";
|
1495
|
columnName = "publishedin_id";
|
1496
|
step = ColumnRemover.NewInstance(stepName, tableName, columnName,
|
1497
|
INCLUDE_AUDIT);
|
1498
|
stepList.add(step);
|
1499
|
|
1500
|
// remove barcode
|
1501
|
stepName = "Remove barcode column";
|
1502
|
columnName = "barcode";
|
1503
|
step = ColumnRemover.NewInstance(stepName, tableName, columnName,
|
1504
|
INCLUDE_AUDIT);
|
1505
|
stepList.add(step);
|
1506
|
|
1507
|
// identifiable columns
|
1508
|
// remove lsid_authority
|
1509
|
stepName = "Remove lsid_authority";
|
1510
|
columnName = "lsid_authority";
|
1511
|
step = ColumnRemover.NewInstance(stepName, tableName, columnName,
|
1512
|
INCLUDE_AUDIT);
|
1513
|
stepList.add(step);
|
1514
|
|
1515
|
// remove lsid_lsid
|
1516
|
stepName = "Remove lsid_lsid";
|
1517
|
columnName = "lsid_lsid";
|
1518
|
step = ColumnRemover.NewInstance(stepName, tableName, columnName,
|
1519
|
INCLUDE_AUDIT);
|
1520
|
stepList.add(step);
|
1521
|
|
1522
|
// remove lsid_namespace
|
1523
|
stepName = "Remove lsid_namespace";
|
1524
|
columnName = "lsid_namespace";
|
1525
|
step = ColumnRemover.NewInstance(stepName, tableName, columnName,
|
1526
|
INCLUDE_AUDIT);
|
1527
|
stepList.add(step);
|
1528
|
|
1529
|
// remove lsid_object
|
1530
|
stepName = "Remove lsid_object";
|
1531
|
columnName = "lsid_object";
|
1532
|
step = ColumnRemover.NewInstance(stepName, tableName, columnName,
|
1533
|
INCLUDE_AUDIT);
|
1534
|
stepList.add(step);
|
1535
|
|
1536
|
// remove lsid_revision
|
1537
|
stepName = "Remove lsid_revision";
|
1538
|
columnName = "lsid_revision";
|
1539
|
step = ColumnRemover.NewInstance(stepName, tableName, columnName,
|
1540
|
INCLUDE_AUDIT);
|
1541
|
stepList.add(step);
|
1542
|
|
1543
|
// remove protectedTitleCache
|
1544
|
stepName = "Remove protectedTitleCache";
|
1545
|
columnName = "protectedTitleCache";
|
1546
|
step = ColumnRemover.NewInstance(stepName, tableName, columnName,
|
1547
|
INCLUDE_AUDIT);
|
1548
|
stepList.add(step);
|
1549
|
|
1550
|
// remove titleCache
|
1551
|
stepName = "Remove titleCache";
|
1552
|
columnName = "titleCache";
|
1553
|
step = ColumnRemover.NewInstance(stepName, tableName, columnName,
|
1554
|
INCLUDE_AUDIT);
|
1555
|
stepList.add(step);
|
1556
|
|
1557
|
}
|
1558
|
|
1559
|
private void updateIdInVocabulary(List<ISchemaUpdaterStep> stepList) {
|
1560
|
String tableName = "DefinedTermBase";
|
1561
|
|
1562
|
//NOT ANSI - works with MySQL http://stackoverflow.com/questions/1293330/how-can-i-do-an-update-statement-with-join-in-sql
|
1563
|
// String queryVocUuid = " UPDATE @@DefinedTermBase@@ dtb INNER JOIN @@TermVocabulary@@ voc ON voc.id = dtb.vocabulary_id"
|
1564
|
// + " SET dtb.idInVocabulary = (SELECT abbreviatedlabel "
|
1565
|
// + " FROM @@DefinedTermBase_Representation@@ MN "
|
1566
|
// + " INNER JOIN @@Representation@@ r ON r.id = MN.representations_id "
|
1567
|
// + " WHERE MN.DefinedTermBase_id = dtb.id) "
|
1568
|
// + " WHERE voc.uuid = '%s'";
|
1569
|
|
1570
|
//ANSI - SQL
|
1571
|
String queryVocUuid = " UPDATE @@DefinedTermBase@@ "
|
1572
|
+ " SET idInVocabulary = " +
|
1573
|
" (SELECT abbreviatedlabel "
|
1574
|
+ " FROM @@DefinedTermBase_Representation@@ MN "
|
1575
|
+ " INNER JOIN @@Representation@@ r ON r.id = MN.representations_id "
|
1576
|
+ " WHERE MN.DefinedTermBase_id = @@DefinedTermBase@@.id) "
|
1577
|
+ " WHERE EXISTS (SELECT * FROM @@TermVocabulary@@ voc WHERE voc.id = @@DefinedTermBase@@.vocabulary_id " +
|
1578
|
" AND voc.uuid = '%s') ";
|
1579
|
|
1580
|
|
1581
|
// Languages (ISO)
|
1582
|
String stepName = "Update idInVocabulary for Languages ";
|
1583
|
// String query = "UPDATE @@DefinedTermBase@@ dtb INNER JOIN @@TermVocabulary@@ voc ON voc.id = dtb.vocabulary_id "
|
1584
|
// + " SET dtb.idInVocabulary = dtb.iso639_2 "
|
1585
|
// + " WHERE voc.uuid = '45ac7043-7f5e-4f37-92f2-3874aaaef2de' ";
|
1586
|
String query = "UPDATE @@DefinedTermBase@@ "
|
1587
|
+ " SET idInVocabulary = iso639_2 "
|
1588
|
+ " WHERE EXISTS (SELECT * FROM @@TermVocabulary@@ voc WHERE voc.id = @@DefinedTermBase@@.vocabulary_id " +
|
1589
|
" AND voc.uuid = '45ac7043-7f5e-4f37-92f2-3874aaaef2de') ";
|
1590
|
ISchemaUpdaterStep step = SimpleSchemaUpdaterStep
|
1591
|
.NewNonAuditedInstance(stepName, query, 99).setDefaultAuditing(
|
1592
|
tableName); // not fully correct as we should join with
|
1593
|
// TermVoc_AUD but good enough for this usecase
|
1594
|
stepList.add(step);
|
1595
|
|
1596
|
// Undefined Languages => all
|
1597
|
stepName = "Update idInVocabulary for undefined languages";
|
1598
|
String uuid = "7fd1e6d0-2e76-4dfa-bad9-2673dd042c28";
|
1599
|
step = SimpleSchemaUpdaterStep.NewNonAuditedInstance(stepName,
|
1600
|
String.format(queryVocUuid, uuid), 99)
|
1601
|
.setDefaultAuditing(tableName);
|
1602
|
stepList.add(step);
|
1603
|
|
1604
|
// Waterbody & Country => all
|
1605
|
stepName = "Update idInVocabulary for WaterbodyOrCountries";
|
1606
|
uuid = "006b1870-7347-4624-990f-e5ed78484a1a";
|
1607
|
step = SimpleSchemaUpdaterStep.NewNonAuditedInstance(stepName,
|
1608
|
String.format(queryVocUuid, uuid), 99)
|
1609
|
.setDefaultAuditing(tableName);
|
1610
|
stepList.add(step);
|
1611
|
|
1612
|
// TdwgAreas => all
|
1613
|
stepName = "Update idInVocabulary for TDWG areas";
|
1614
|
uuid = NamedArea.uuidTdwgAreaVocabulary.toString();
|
1615
|
step = SimpleSchemaUpdaterStep.NewNonAuditedInstance(stepName,
|
1616
|
String.format(queryVocUuid, uuid), 99)
|
1617
|
.setDefaultAuditing(tableName);
|
1618
|
stepList.add(step);
|
1619
|
|
1620
|
// Rank => some
|
1621
|
stepName = "Update idInVocabulary for ranks";
|
1622
|
uuid = "ef0d1ce1-26e3-4e83-b47b-ca74eed40b1b";
|
1623
|
step = SimpleSchemaUpdaterStep.NewNonAuditedInstance(stepName,
|
1624
|
String.format(queryVocUuid, uuid), 99)
|
1625
|
.setDefaultAuditing(tableName);
|
1626
|
stepList.add(step);
|
1627
|
|
1628
|
// avoid duplicate for section (bot.)
|
1629
|
stepName = "Update idInVoc for section (bot.)";
|
1630
|
String sql = " UPDATE @@DefinedTermBase@@ " +
|
1631
|
" SET idInVocabulary = 'sect.(bot.)' " +
|
1632
|
" WHERE uuid = '3edff68f-8527-49b5-bf91-7e4398bb975c'";
|
1633
|
step = SimpleSchemaUpdaterStep.NewAuditedInstance(stepName, sql,
|
1634
|
"DefinedTermBase", 99);
|
1635
|
stepList.add(step);
|
1636
|
|
1637
|
// avoid duplicate for subsection (bot.)
|
1638
|
stepName = "Update idInVoc for subsection (bot.)";
|
1639
|
sql = " UPDATE @@DefinedTermBase@@ " +
|
1640
|
" SET idInVocabulary = 'subsect.(bot.)' " +
|
1641
|
" WHERE uuid = 'd20f5b61-d463-4448-8f8a-c1ff1f262f59'";
|
1642
|
step = SimpleSchemaUpdaterStep.NewAuditedInstance(stepName, sql,
|
1643
|
"DefinedTermBase", 99);
|
1644
|
stepList.add(step);
|
1645
|
|
1646
|
// avoid duplicate for section (zool.)
|
1647
|
stepName = "Update idInVoc for section (zool.)";
|
1648
|
sql = " UPDATE @@DefinedTermBase@@ SET idInVocabulary = 'sect.(zool.)' WHERE uuid = '691d371e-10d7-43f0-93db-3d7fa1a62c54'";
|
1649
|
step = SimpleSchemaUpdaterStep.NewAuditedInstance(stepName, sql,
|
1650
|
"DefinedTermBase", 99);
|
1651
|
stepList.add(step);
|
1652
|
|
1653
|
// avoid duplicate for subsection (zool.)
|
1654
|
stepName = "Update idInVoc for subsection (zool.)";
|
1655
|
sql = " UPDATE @@DefinedTermBase@@ SET idInVocabulary = 'subsect.(zool.)' WHERE uuid = '0ed32d28-adc4-4303-a9ca-68e2acd67e33'";
|
1656
|
step = SimpleSchemaUpdaterStep.NewAuditedInstance(stepName, sql,
|
1657
|
"DefinedTermBase", 99);
|
1658
|
stepList.add(step);
|
1659
|
|
1660
|
// SpecimenTypeDesignationStatus => all
|
1661
|
stepName = "Update idInVocabulary for SpecimenTypeDesignationStatus";
|
1662
|
uuid = "ab177bd7-d3c8-4e58-a388-226fff6ba3c2";
|
1663
|
step = SimpleSchemaUpdaterStep.NewNonAuditedInstance(stepName,
|
1664
|
String.format(queryVocUuid, uuid), 99)
|
1665
|
.setDefaultAuditing(tableName);
|
1666
|
stepList.add(step);
|
1667
|
|
1668
|
// avoid duplicate for PT
|
1669
|
stepName = "Update idInVoc for Phototype (PhT) to avoid duplicate for PT";
|
1670
|
sql = " UPDATE @@DefinedTermBase@@ SET idInVocabulary = 'PhT' WHERE uuid = 'b7807acc-f559-474e-ad4a-e7a41e085e34'";
|
1671
|
step = SimpleSchemaUpdaterStep.NewAuditedInstance(stepName, sql,
|
1672
|
"DefinedTermBase", 99);
|
1673
|
stepList.add(step);
|
1674
|
|
1675
|
// NameTypeDesignationStatus => all
|
1676
|
stepName = "Update idInVocabulary for NameTypeDesignationStatus";
|
1677
|
uuid = "ab60e738-4d09-4c24-a1b3-9466b01f9f55";
|
1678
|
step = SimpleSchemaUpdaterStep.NewNonAuditedInstance(stepName,
|
1679
|
String.format(queryVocUuid, uuid), 99)
|
1680
|
.setDefaultAuditing(tableName);
|
1681
|
stepList.add(step);
|
1682
|
|
1683
|
// NomenclaturalStatusType => all, abbrevs.
|
1684
|
stepName = "Update idInVocabulary for NomenclaturalStatusType";
|
1685
|
uuid = "bb28cdca-2f8a-4f11-9c21-517e9ae87f1f";
|
1686
|
step = SimpleSchemaUpdaterStep.NewNonAuditedInstance(stepName,
|
1687
|
String.format(queryVocUuid, uuid), 99)
|
1688
|
.setDefaultAuditing(tableName);
|
1689
|
stepList.add(step);
|
1690
|
|
1691
|
// TaxonRelationshipType, all but 2 (Invalid Designation for, Misapplied
|
1692
|
// Name for)
|
1693
|
stepName = "Update idInVocabulary for TaxonRelationshipType";
|
1694
|
uuid = "15db0cf7-7afc-4a86-a7d4-221c73b0c9ac";
|
1695
|
step = SimpleSchemaUpdaterStep.NewNonAuditedInstance(stepName,
|
1696
|
String.format(queryVocUuid, uuid), 99)
|
1697
|
.setDefaultAuditing(tableName);
|
1698
|
stepList.add(step);
|
1699
|
|
1700
|
// avoid duplicate for Misapplied Name (remove '-')
|
1701
|
stepName = "Update idInVoc for Misapplied Name Relationship";
|
1702
|
sql = " UPDATE @@DefinedTermBase@@ SET idInVocabulary = NULL WHERE uuid = '1ed87175-59dd-437e-959e-0d71583d8417'";
|
1703
|
step = SimpleSchemaUpdaterStep.NewAuditedInstance(stepName, sql,
|
1704
|
"DefinedTermBase", 99);
|
1705
|
stepList.add(step);
|
1706
|
|
1707
|
// avoid duplicate for Invalid designation (remove '-')
|
1708
|
stepName = "Update idInVoc for Invalid Designation";
|
1709
|
sql = " UPDATE @@DefinedTermBase@@ SET idInVocabulary = NULL WHERE uuid = '605b1d01-f2b1-4544-b2e0-6f08def3d6ed'";
|
1710
|
step = SimpleSchemaUpdaterStep.NewAuditedInstance(stepName, sql,
|
1711
|
"DefinedTermBase", 99);
|
1712
|
stepList.add(step);
|
1713
|
|
1714
|
// PresenceTerm => all
|
1715
|
stepName = "Update idInVocabulary for PresenceTerm";
|
1716
|
uuid = "adbbbe15-c4d3-47b7-80a8-c7d104e53a05";
|
1717
|
step = SimpleSchemaUpdaterStep.NewNonAuditedInstance(stepName,
|
1718
|
String.format(queryVocUuid, uuid), 99)
|
1719
|
.setDefaultAuditing(tableName);
|
1720
|
stepList.add(step);
|
1721
|
|
1722
|
// AbsenceTerm => all
|
1723
|
stepName = "Update idInVocabulary for AbsenceTerm";
|
1724
|
uuid = "5cd438c8-a8a1-4958-842e-169e83e2ceee";
|
1725
|
step = SimpleSchemaUpdaterStep.NewNonAuditedInstance(stepName,
|
1726
|
String.format(queryVocUuid, uuid), 99)
|
1727
|
.setDefaultAuditing(tableName);
|
1728
|
stepList.add(step);
|
1729
|
|
1730
|
// Sex => all
|
1731
|
stepName = "Update idInVocabulary for Sex";
|
1732
|
uuid = "9718b7dd-8bc0-4cad-be57-3c54d4d432fe";
|
1733
|
step = SimpleSchemaUpdaterStep.NewNonAuditedInstance(stepName,
|
1734
|
String.format(queryVocUuid, uuid), 99)
|
1735
|
.setDefaultAuditing(tableName);
|
1736
|
stepList.add(step);
|
1737
|
|
1738
|
// ExtensionType => all
|
1739
|
stepName = "Update idInVocabulary for ExtensionType";
|
1740
|
uuid = "117cc307-5bd4-4b10-9b2f-2e14051b3b20";
|
1741
|
step = SimpleSchemaUpdaterStep.NewNonAuditedInstance(stepName,
|
1742
|
String.format(queryVocUuid, uuid), 99)
|
1743
|
.setDefaultAuditing(tableName);
|
1744
|
stepList.add(step);
|
1745
|
|
1746
|
// ReferenceSystem => all
|
1747
|
stepName = "Update idInVocabulary for ReferenceSystem";
|
1748
|
uuid = "ec6376e5-0c9c-4f5c-848b-b288e6c17a86";
|
1749
|
step = SimpleSchemaUpdaterStep.NewNonAuditedInstance(stepName,
|
1750
|
String.format(queryVocUuid, uuid), 99)
|
1751
|
.setDefaultAuditing(tableName);
|
1752
|
stepList.add(step);
|
1753
|
|
1754
|
// DeterminationModifier => all
|
1755
|
stepName = "Update idInVocabulary for DeterminationModifier";
|
1756
|
uuid = "fe87ea8d-6e0a-4e5d-b0da-0ab8ea67ca77";
|
1757
|
step = SimpleSchemaUpdaterStep.NewNonAuditedInstance(stepName,
|
1758
|
String.format(queryVocUuid, uuid), 99)
|
1759
|
.setDefaultAuditing(tableName);
|
1760
|
stepList.add(step);
|
1761
|
|
1762
|
// InstitutionType, MeasurementUnit, Scope, Stage, State, TextFormat,
|
1763
|
// Modifier, PreservationMethod => dummies
|
1764
|
stepName = "Update idInVocabulary for dummy terms in several vocabularies";
|
1765
|
query = " UPDATE @@DefinedTermBase@@ "
|
1766
|
+ " SET idInVocabulary = (SELECT abbreviatedlabel "
|
1767
|
+ " FROM @@DefinedTermBase_Representation@@ MN "
|
1768
|
+ " INNER JOIN @@Representation@@ r ON r.id = MN.representations_id "
|
1769
|
+ " WHERE MN.DefinedTermBase_id = @@DefinedTermBase@@.id) "
|
1770
|
+ " WHERE termType IN ('%s','%s','%s','%s','%s','%s','%s','%s')";
|
1771
|
step = SimpleSchemaUpdaterStep.NewNonAuditedInstance(
|
1772
|
stepName,
|
1773
|
String.format(query, TermType.InstitutionType.getKey(),
|
1774
|
TermType.MeasurementUnit.getKey(),
|
1775
|
TermType.Scope.getKey(), TermType.Stage.getKey(),
|
1776
|
TermType.State.getKey(), TermType.TextFormat.getKey(),
|
1777
|
TermType.Modifier.getKey(), TermType.Method.getKey()), 99)
|
1778
|
.setDefaultAuditing(tableName);
|
1779
|
stepList.add(step);
|
1780
|
|
1781
|
stepName = "Update idInVocabulary for dummy state";
|
1782
|
query = " UPDATE @@DefinedTermBase@@ "
|
1783
|
+ " SET idinvocabulary = 'std' "
|
1784
|
+ " WHERE uuid = '881b9c80-626d-47a6-b308-a63ee5f4178f' ";
|
1785
|
step = SimpleSchemaUpdaterStep.NewNonAuditedInstance(stepName, query, 99);
|
1786
|
stepList.add(step);
|
1787
|
|
1788
|
stepName = "Update idInVocabulary for dummy stage";
|
1789
|
query = " UPDATE @@DefinedTermBase@@ "
|
1790
|
+ " SET idinvocabulary = 'sgd' "
|
1791
|
+ " WHERE uuid = '48f8e8a7-a2ac-4974-9ce8-6944afc5095e' ";
|
1792
|
step = SimpleSchemaUpdaterStep.NewNonAuditedInstance(stepName, query, 99);
|
1793
|
stepList.add(step);
|
1794
|
|
1795
|
stepName = "Update idInVocabulary for dummy modifier";
|
1796
|
query = " UPDATE @@DefinedTermBase@@ "
|
1797
|
+ " SET idinvocabulary = 'md' "
|
1798
|
+ " WHERE uuid = 'efc38dad-205c-4028-ad9d-ae509a14b37a' ";
|
1799
|
step = SimpleSchemaUpdaterStep.NewNonAuditedInstance(stepName, query, 99);
|
1800
|
stepList.add(step);
|
1801
|
|
1802
|
// Remove state dummy
|
1803
|
stepName = "Remove state dummy if possible";
|
1804
|
uuid = "881b9c80-626d-47a6-b308-a63ee5f4178f";
|
1805
|
String checkUsed = " SELECT count(*) as n FROM @@StateData@@ sd "
|
1806
|
+ " WHERE sd.state_id = %d ";
|
1807
|
step = SingleTermRemover.NewInstance(stepName, uuid, checkUsed, 99);
|
1808
|
stepList.add(step);
|
1809
|
|
1810
|
// Remove institution type dummy
|
1811
|
stepName = "Remove institution type dummy term";
|
1812
|
uuid = "bea94a6c-472b-421c-abc1-52f797c51dbf";
|
1813
|
checkUsed = " SELECT count(*) as n FROM @@AgentBase_DefinedTermBase@@ MN "
|
1814
|
+ " WHERE MN.types_id = %d ";
|
1815
|
step = SingleTermRemover.NewInstance(stepName, uuid, checkUsed, 99);
|
1816
|
stepList.add(step);
|
1817
|
|
1818
|
// Remove measurement unit dummy
|
1819
|
stepName = "Remove measurement unit dummy term";
|
1820
|
uuid = "e19dd590-5be8-4c93-978f-b78554116289";
|
1821
|
checkUsed = " SELECT count(*) as n FROM @@DescriptionElementBase@@ deb "
|
1822
|
+ " WHERE deb.unit_id = %d ";
|
1823
|
step = SingleTermRemover.NewInstance(stepName, uuid, checkUsed, 99);
|
1824
|
stepList.add(step);
|
1825
|
|
1826
|
// Remove scope dummy
|
1827
|
stepName = "Remove scope dummy term";
|
1828
|
uuid = "2ace7f1f-4ce6-47e1-8a65-e3f6b724876c";
|
1829
|
checkUsed = " SELECT count(*) as n FROM @@DescriptionBase_Scope@@ MN "
|
1830
|
+ " WHERE MN.scopes_id = %d ";
|
1831
|
step = SingleTermRemover.NewInstance(stepName, uuid, checkUsed, 99);
|
1832
|
stepList.add(step);
|
1833
|
|
1834
|
// Remove stage dummy
|
1835
|
stepName = "Remove stage dummy term";
|
1836
|
uuid = "48f8e8a7-a2ac-4974-9ce8-6944afc5095e";
|
1837
|
checkUsed = " SELECT count(*) as n FROM @@DescriptionBase_Scope@@ MN "
|
1838
|
+ " WHERE MN.scopes_id = %d ";
|
1839
|
String checkUsed2 = " SELECT count(*) as n FROM @@SpecimenOrObservationBase@@ osb "
|
1840
|
+ " WHERE osb.lifestage_id = %d ";
|
1841
|
step = SingleTermRemover.NewInstance(stepName, uuid, checkUsed, 99)
|
1842
|
.addCheckUsedQuery(checkUsed2, 99);
|
1843
|
stepList.add(step);
|
1844
|
|
1845
|
// Remove text format dummy
|
1846
|
stepName = "Remove text format dummy if possible";
|
1847
|
uuid = "5d095782-d99c-46bc-a158-edb2e47c9b63";
|
1848
|
checkUsed = " SELECT count(*) as n FROM @@DescriptionElementBase@@ deb "
|
1849
|
+ " WHERE deb.format_id = %d ";
|
1850
|
step = SingleTermRemover.NewInstance(stepName, uuid, checkUsed, 99);
|
1851
|
stepList.add(step);
|
1852
|
|
1853
|
// Remove modifier dummy
|
1854
|
stepName = "Remove modifier dummy if possible";
|
1855
|
uuid = "efc38dad-205c-4028-ad9d-ae509a14b37a";
|
1856
|
checkUsed = " SELECT count(*) as n FROM @@DescriptionElementBase_Modifier@@ MN "
|
1857
|
+ " WHERE MN.modifiers_id = %d ";
|
1858
|
checkUsed2 = " SELECT count(*) as n FROM @@StateData_DefinedTermBase@@ MN "
|
1859
|
+ " WHERE MN.modifiers_id = %d ";
|
1860
|
String checkUsed3 = " SELECT count(*) as n FROM @@StatisticalMeasurementValue_DefinedTermBase@@ MN "
|
1861
|
+ " WHERE MN.modifiers_id = %d ";
|
1862
|
step = SingleTermRemover.NewInstance(stepName, uuid, checkUsed, 99)
|
1863
|
.addCheckUsedQuery(checkUsed2, 99).addCheckUsedQuery(checkUsed3, 99);
|
1864
|
stepList.add(step);
|
1865
|
|
1866
|
// Remove text preservation method dummy
|
1867
|
stepName = "Remove preservation method dummy if possible";
|
1868
|
uuid = "3edc2633-365b-4a9b-bc3a-f3f85f59dbdf";
|
1869
|
checkUsed = " SELECT count(*) as n FROM @@SpecimenOrObservationBase@@ osb "
|
1870
|
+ " WHERE osb.preservation_id = %d ";
|
1871
|
step = SingleTermRemover.NewInstance(stepName, uuid, checkUsed, 99);
|
1872
|
stepList.add(step);
|
1873
|
|
1874
|
// Split Country Vocabulary #3700
|
1875
|
stepName = "Create Waterbody vocabulary";
|
1876
|
UUID uuidVocabulary = UUID
|
1877
|
.fromString("35a62b25-f541-4f12-a7c7-17d90dec3e03");
|
1878
|
String description = "Major Waterbodies of the World";
|
1879
|
String label = "Waterbody";
|
1880
|
String abbrev = null;
|
1881
|
boolean isOrdered = false;
|
1882
|
TermType termType = TermType.NamedArea;
|
1883
|
Class<?> termClass = NamedArea.class;
|
1884
|
step = VocabularyCreator.NewVocabularyInstance(uuidVocabulary,
|
1885
|
description, label, abbrev, isOrdered, termClass, termType);
|
1886
|
stepList.add(step);
|
1887
|
|
1888
|
stepName = "Move waterbodies to new vocabulary";
|
1889
|
UUID newVocabulary = UUID.fromString("35a62b25-f541-4f12-a7c7-17d90dec3e03");
|
1890
|
step = TermMover
|
1891
|
.NewInstance(stepName, newVocabulary,
|
1892
|
"aa96ca19-46ab-6365-af29-e4842f13eb4c")
|
1893
|
.addTermUuid(UUID.fromString("36aea55c-46ab-6365-af29-e4842f13eb4c"))
|
1894
|
.addTermUuid(UUID.fromString("36aea55c-892c-6365-af29-e4842f13eb4c"))
|
1895
|
.addTermUuid(UUID.fromString("36aea55c-892c-4114-af29-d4b287f76fab"))
|
1896
|
.addTermUuid(UUID.fromString("aa96ca19-892c-4114-af29-d4b287f76fab"))
|
1897
|
.addTermUuid(UUID.fromString("aa96ca19-892c-4114-a494-d4b287f76fab"))
|
1898
|
.addTermUuid(UUID.fromString("d4cf6c57-892c-4114-bf57-96886eb7108a"))
|
1899
|
.addTermUuid(UUID.fromString("d4cf6c57-892c-c953-a494-96886eb7108a"))
|
1900
|
.addTermUuid(UUID.fromString("aa96ca19-46ab-c953-a494-96886eb7108a"))
|
1901
|
.addTermUuid(UUID.fromString("aa96ca19-46ab-4114-a494-96886eb7108a"));
|
1902
|
stepList.add(step);
|
1903
|
|
1904
|
// update waterbody uuids #3705 AND waterbody DTYPE to NamedArea and
|
1905
|
// sortindex new #3700
|
1906
|
stepName = "Update waterbody uuids";
|
1907
|
sql = " UPDATE @@DefinedTermBase@@ SET DTYPE = 'NamedArea', orderindex = 1, uuid = 'af4271e5-8897-4e6f-9db7-54ea4f28cfc0' WHERE uuid = 'aa96ca19-46ab-6365-af29-e4842f13eb4c' ";
|
1908
|
step = SimpleSchemaUpdaterStep.NewAuditedInstance(stepName, sql, "DefinedTermBase", 99);
|
1909
|
stepList.add(step);
|
1910
|
sql = " UPDATE @@DefinedTermBase@@ SET DTYPE = 'NamedArea', orderindex = 2, uuid = '77e79804-1b17-4c99-873b-933fe216e3da' WHERE uuid = '36aea55c-46ab-6365-af29-e4842f13eb4c' ";
|
1911
|
step = SimpleSchemaUpdaterStep.NewAuditedInstance(stepName, sql,
|
1912
|
"DefinedTermBase", 99);
|
1913
|
stepList.add(step);
|
1914
|
sql = " UPDATE @@DefinedTermBase@@ SET DTYPE = 'NamedArea', orderindex = 3, uuid = '3d68a327-104c-49d5-a2d8-c71c6600181b' WHERE uuid = '36aea55c-892c-6365-af29-e4842f13eb4c' ";
|
1915
|
step = SimpleSchemaUpdaterStep.NewAuditedInstance(stepName, sql,
|
1916
|
"DefinedTermBase", 99);
|
1917
|
stepList.add(step);
|
1918
|
sql = " UPDATE @@DefinedTermBase@@ SET DTYPE = 'NamedArea', orderindex = 4, uuid = 'ff744a37-5990-462c-9c20-1e85a9943851' WHERE uuid = '36aea55c-892c-4114-af29-d4b287f76fab' ";
|
1919
|
step = SimpleSchemaUpdaterStep.NewAuditedInstance(stepName, sql,
|
1920
|
"DefinedTermBase", 99);
|
1921
|
stepList.add(step);
|
1922
|
sql = " UPDATE @@DefinedTermBase@@ SET DTYPE = 'NamedArea', orderindex = 5, uuid = 'ef04f363-f67f-4a2c-8d98-110de4c5f654' WHERE uuid = 'aa96ca19-892c-4114-af29-d4b287f76fab' ";
|
1923
|
step = SimpleSchemaUpdaterStep.NewAuditedInstance(stepName, sql,
|
1924
|
"DefinedTermBase", 99);
|
1925
|
stepList.add(step);
|
1926
|
sql = " UPDATE @@DefinedTermBase@@ SET DTYPE = 'NamedArea', orderindex = 6, uuid = '8811a47e-29d6-4455-8f83-8916b78a692f' WHERE uuid = 'aa96ca19-892c-4114-a494-d4b287f76fab' ";
|
1927
|
step = SimpleSchemaUpdaterStep.NewAuditedInstance(stepName, sql,
|
1928
|
"DefinedTermBase", 99);
|
1929
|
stepList.add(step);
|
1930
|
sql = " UPDATE @@DefinedTermBase@@ SET DTYPE = 'NamedArea', orderindex = 7, uuid = '4cb4bbae-9aab-426c-9025-e34f809165af' WHERE uuid = 'd4cf6c57-892c-4114-bf57-96886eb7108a' ";
|
1931
|
step = SimpleSchemaUpdaterStep.NewAuditedInstance(stepName, sql,
|
1932
|
"DefinedTermBase", 99);
|
1933
|
stepList.add(step);
|
1934
|
sql = " UPDATE @@DefinedTermBase@@ SET DTYPE = 'NamedArea', orderindex = 8, uuid = '598fec0e-b93a-4947-a1f3-601e380797f7' WHERE uuid = 'd4cf6c57-892c-c953-a494-96886eb7108a' ";
|
1935
|
step = SimpleSchemaUpdaterStep.NewAuditedInstance(stepName, sql,
|
1936
|
"DefinedTermBase", 99);
|
1937
|
stepList.add(step);
|
1938
|
sql = " UPDATE @@DefinedTermBase@@ SET DTYPE = 'NamedArea', orderindex = 9, uuid = 'ee69385e-6c80-405c-be6e-974e9fd1e297' WHERE uuid = 'aa96ca19-46ab-c953-a494-96886eb7108a' ";
|
1939
|
step = SimpleSchemaUpdaterStep.NewAuditedInstance(stepName, sql,
|
1940
|
"DefinedTermBase", 99);
|
1941
|
stepList.add(step);
|
1942
|
sql = " UPDATE @@DefinedTermBase@@ SET DTYPE = 'NamedArea', orderindex = 10, uuid = '8dc16e70-74b8-4143-95cf-a659a319a854' WHERE uuid = 'aa96ca19-46ab-4114-a494-96886eb7108a' ";
|
1943
|
step = SimpleSchemaUpdaterStep.NewAuditedInstance(stepName, sql,
|
1944
|
"DefinedTermBase", 99);
|
1945
|
stepList.add(step);
|
1946
|
|
1947
|
// update DTYPE for country
|
1948
|
stepName = "Update DTYPE for Countries";
|
1949
|
sql = " UPDATE @@DefinedTermBase@@ SET DTYPE = 'Country' WHERE DTYPE = 'WaterbodyOrCountry' ";
|
1950
|
step = SimpleSchemaUpdaterStep.NewAuditedInstance(stepName, sql,
|
1951
|
"DefinedTermBase", 99);
|
1952
|
stepList.add(step);
|
1953
|
|
1954
|
// Rename tables
|
1955
|
stepName = "Rename DefinedTermBase_WaterbodyOrCountry";
|
1956
|
String oldName = "DefinedTermBase_WaterbodyOrCountry";
|
1957
|
String newName = "DefinedTermBase_Country";
|
1958
|
step = TableNameChanger.NewInstance(stepName, oldName, newName,
|
1959
|
INCLUDE_AUDIT);
|
1960
|
stepList.add(step);
|
1961
|
|
1962
|
// rename column
|
1963
|
stepName = "Rename DefinedTermBase_Country.waterbodiesorcountries_id";
|
1964
|
tableName = "DefinedTermBase_Country";
|
1965
|
String oldColumnName = "waterbodiesorcountries_id";
|
1966
|
String newColumnName = "countries_id";
|
1967
|
step = ColumnNameChanger.NewIntegerInstance(stepName, tableName,
|
1968
|
oldColumnName, newColumnName, INCLUDE_AUDIT);
|
1969
|
stepList.add(step);
|
1970
|
|
1971
|
// NULL for empty strings
|
1972
|
stepName = "Update idInVocabulary, replace empty strings by null";
|
1973
|
query = "Update @@DefinedTermBase@@ dtb SET idInVocabulary = NULL WHERE idInVocabulary = ''";
|
1974
|
step = SimpleSchemaUpdaterStep.NewNonAuditedInstance(stepName, query, 99)
|
1975
|
.setDefaultAuditing(tableName);
|
1976
|
stepList.add(step);
|
1977
|
|
1978
|
// MarkerType, AnnotationType, NamedAreaType, NamedAreaLevel, Feature,
|
1979
|
// Continent, DerivationEventType, StatisticalMeasure,
|
1980
|
// RightsType,SynonymType & HybridRelationshipType &
|
1981
|
// NameRelationshipType
|
1982
|
// => none
|
1983
|
|
1984
|
// DnaMarker => yes but no entries
|
1985
|
|
1986
|
// Clean up empty abbreviated labels in representations
|
1987
|
stepName = "Update abbreviated label, replace empty strings by null";
|
1988
|
query = "UPDATE @@Representation@@ SET abbreviatedLabel = NULL WHERE abbreviatedLabel = ''";
|
1989
|
step = SimpleSchemaUpdaterStep.NewNonAuditedInstance(stepName, query, 99)
|
1990
|
.setDefaultAuditing("Representation"); // AUD not needed
|
1991
|
stepList.add(step);
|
1992
|
|
1993
|
}
|
1994
|
|
1995
|
private void updateTermTypesForVocabularies(
|
1996
|
List<ISchemaUpdaterStep> stepList) {
|
1997
|
// vocabularies with terms
|
1998
|
for (TermType termType : TermType.values()) {
|
1999
|
updateTermTypeForVocabularies(stepList, termType);
|
2000
|
}
|
2001
|
|
2002
|
String tableName = "TermVocabulary";
|
2003
|
// Natural Language Terms
|
2004
|
String stepName = "Updater termType for NaturalLanguageTerms";
|
2005
|
String query = "UPDATE @@TermVocabulary@@ " + " SET termType = '"
|
2006
|
+ TermType.NaturalLanguageTerm.getKey() + "' "
|
2007
|
+ " WHERE uuid = 'fdaba4b0-5c14-11df-a08a-0800200c9a66'";
|
2008
|
ISchemaUpdaterStep step = SimpleSchemaUpdaterStep
|
2009
|
.NewNonAuditedInstance(stepName, query, 99).setDefaultAuditing(
|
2010
|
tableName);
|
2011
|
stepList.add(step);
|
2012
|
|
2013
|
// remaining vocabularies
|
2014
|
stepName = "Updater termType for remaining vocabularies";
|
2015
|
query = "UPDATE @@TermVocabulary@@ " + " SET termType = '"
|
2016
|
+ TermType.Unknown.getKey() + "' "
|
2017
|
+ " WHERE termType IS NULL";
|
2018
|
step = SimpleSchemaUpdaterStep.NewNonAuditedInstance(stepName, query, 99)
|
2019
|
.setDefaultAuditing(tableName);
|
2020
|
stepList.add(step);
|
2021
|
|
2022
|
}
|
2023
|
|
2024
|
private void updateTermTypeForVocabularies(
|
2025
|
List<ISchemaUpdaterStep> stepList, TermType termType) {
|
2026
|
String stepName = "Updater vocabulary termType for "
|
2027
|
+ termType.toString();
|
2028
|
String query = "UPDATE @@TermVocabulary@@ "
|
2029
|
+ " SET termType = '"
|
2030
|
+ termType.getKey()
|
2031
|
+ "' "
|
2032
|
+ " WHERE Exists (SELECT * FROM @@DefinedTermBase@@ dtb WHERE dtb.termType = '"
|
2033
|
+ termType.getKey() + "' AND dtb.vocabulary_id = @@TermVocabulary@@.id)";
|
2034
|
ISchemaUpdaterStep step = SimpleSchemaUpdaterStep
|
2035
|
.NewNonAuditedInstance(stepName, query, 99).setDefaultAuditing(
|
2036
|
"TermVocabulary"); // AUD not fully correct as subselect
|
2037
|
// should also work on AUD, good enough for our purposes
|
2038
|
stepList.add(step);
|
2039
|
}
|
2040
|
|
2041
|
/**
|
2042
|
* @param stepList
|
2043
|
* @param stepName
|
2044
|
*/
|
2045
|
private void updateTermTypesForTerms(List<ISchemaUpdaterStep> stepList) {
|
2046
|
String stepName = "Update termType for NamedAreas";
|
2047
|
String tableName = "DefinedTermBase";
|
2048
|
|
2049
|
//NamedArea
|
2050
|
String query = " UPDATE @@DefinedTermBase@@ " +
|
2051
|
" SET termType = '" + TermType.NamedArea.getKey() + "' " +
|
2052
|
" WHERE DTYPE = '" + NamedArea.class.getSimpleName() + "' OR DTYPE = 'TdwgArea' " +
|
2053
|
"OR DTYPE = 'WaterbodyOrCountry' OR DTYPE = '"+ Country.class.getSimpleName() + "' OR DTYPE = 'Continent' ";
|
2054
|
ISchemaUpdaterStep step = SimpleSchemaUpdaterStep.NewNonAuditedInstance(stepName, query, 99).setDefaultAuditing(tableName);
|
2055
|
stepList.add(step);
|
2056
|
|
2057
|
// Lanugage
|
2058
|
stepName = "Update termType for Language";
|
2059
|
query = " UPDATE @@DefinedTermBase@@ " + " SET termType = '"
|
2060
|
+ TermType.Language.getKey() + "' " + " WHERE DTYPE = '"
|
2061
|
+ Language.class.getSimpleName() + "' ";
|
2062
|
step = SimpleSchemaUpdaterStep.NewNonAuditedInstance(stepName, query, 99)
|
2063
|
.setDefaultAuditing(tableName);
|
2064
|
stepList.add(step);
|
2065
|
|
2066
|
// RANK
|
2067
|
stepName = "Update termType for Rank";
|
2068
|
query = " UPDATE @@DefinedTermBase@@ " + " SET termType = '"
|
2069
|
+ TermType.Rank.getKey() + "' " + " WHERE DTYPE = '"
|
2070
|
+ Rank.class.getSimpleName() + "' ";
|
2071
|
step = SimpleSchemaUpdaterStep.NewNonAuditedInstance(stepName, query, 99)
|
2072
|
.setDefaultAuditing(tableName);
|
2073
|
stepList.add(step);
|
2074
|
|
2075
|
// Feature
|
2076
|
stepName = "Update termType for Feature";
|
2077
|
query = " UPDATE @@DefinedTermBase@@ " + " SET termType = '"
|
2078
|
+ TermType.Feature.getKey() + "' " + " WHERE DTYPE = '"
|
2079
|
+ Feature.class.getSimpleName() + "' ";
|
2080
|
step = SimpleSchemaUpdaterStep.NewNonAuditedInstance(stepName, query, 99)
|
2081
|
.setDefaultAuditing(tableName);
|
2082
|
stepList.add(step);
|
2083
|
|
2084
|
// AnnotationType
|
2085
|
stepName = "Update termType for Annotation Type";
|
2086
|
query = " UPDATE @@DefinedTermBase@@ " + " SET termType = '"
|
2087
|
+ TermType.AnnotationType.getKey() + "' " + " WHERE DTYPE = '"
|
2088
|
+ AnnotationType.class.getSimpleName() + "' ";
|
2089
|
step = SimpleSchemaUpdaterStep.NewNonAuditedInstance(stepName, query, 99)
|
2090
|
.setDefaultAuditing(tableName);
|
2091
|
stepList.add(step);
|
2092
|
|
2093
|
// MarkerType
|
2094
|
stepName = "Update termType for Marker Type";
|
2095
|
query = " UPDATE @@DefinedTermBase@@ " + " SET termType = '"
|
2096
|
+ TermType.MarkerType.getKey() + "' " + " WHERE DTYPE = '"
|
2097
|
+ MarkerType.class.getSimpleName() + "' ";
|
2098
|
step = SimpleSchemaUpdaterStep.NewNonAuditedInstance(stepName, query, 99)
|
2099
|
.setDefaultAuditing(tableName);
|
2100
|
stepList.add(step);
|
2101
|
|
2102
|
// ExtensionType
|
2103
|
stepName = "Update termType for Extension Type";
|
2104
|
query = " UPDATE @@DefinedTermBase@@ " + " SET termType = '"
|
2105
|
+ TermType.ExtensionType.getKey() + "' " + " WHERE DTYPE = '"
|
2106
|
+ ExtensionType.class.getSimpleName() + "' ";
|
2107
|
step = SimpleSchemaUpdaterStep.NewNonAuditedInstance(stepName, query, 99)
|
2108
|
.setDefaultAuditing(tableName);
|
2109
|
stepList.add(step);
|
2110
|
|
2111
|
// DerivationEventType
|
2112
|
stepName = "Update termType for DerivationEvent Type";
|
2113
|
query = " UPDATE @@DefinedTermBase@@ " + " SET termType = '"
|
2114
|
+ TermType.DerivationEventType.getKey() + "' "
|
2115
|
+ " WHERE DTYPE = '"
|
2116
|
+ DerivationEventType.class.getSimpleName() + "' ";
|
2117
|
step = SimpleSchemaUpdaterStep.NewNonAuditedInstance(stepName, query, 99)
|
2118
|
.setDefaultAuditing(tableName);
|
2119
|
stepList.add(step);
|
2120
|
|
2121
|
// PresenceAbsenceTerm
|
2122
|
stepName = "Update termType for PresenceAbsence Term";
|
2123
|
query = " UPDATE @@DefinedTermBase@@ " + " SET termType = '"
|
2124
|
+ TermType.PresenceAbsenceTerm.getKey() + "' "
|
2125
|
+ " WHERE DTYPE = 'PresenceTerm' OR DTYPE = 'AbsenceTerm'";
|
2126
|
step = SimpleSchemaUpdaterStep.NewNonAuditedInstance(stepName, query, 99)
|
2127
|
.setDefaultAuditing(tableName);
|
2128
|
stepList.add(step);
|
2129
|
|
2130
|
// NomenclaturalStatusType
|
2131
|
stepName = "Update termType for NomenclaturalStatusType";
|
2132
|
query = " UPDATE @@DefinedTermBase@@ " + " SET termType = '"
|
2133
|
+ TermType.NomenclaturalStatusType.getKey() + "' "
|
2134
|
+ " WHERE DTYPE = '"
|
2135
|
+ NomenclaturalStatusType.class.getSimpleName() + "' ";
|
2136
|
step = SimpleSchemaUpdaterStep.NewNonAuditedInstance(stepName, query, 99)
|
2137
|
.setDefaultAuditing(tableName);
|
2138
|
stepList.add(step);
|
2139
|
|
2140
|
// NameRelationshipType
|
2141
|
stepName = "Update termType for NameRelationship Type";
|
2142
|
query = " UPDATE @@DefinedTermBase@@ " + " SET termType = '"
|
2143
|
+ TermType.NameRelationshipType.getKey() + "' "
|
2144
|
+ " WHERE DTYPE = '"
|
2145
|
+ NameRelationshipType.class.getSimpleName() + "' ";
|
2146
|
step = SimpleSchemaUpdaterStep.NewNonAuditedInstance(stepName, query, 99)
|
2147
|
.setDefaultAuditing(tableName);
|
2148
|
stepList.add(step);
|
2149
|
|
2150
|
// HybridRelationshipType
|
2151
|
stepName = "Update termType for HybridRelationship Type";
|
2152
|
query = " UPDATE @@DefinedTermBase@@ " + " SET termType = '"
|
2153
|
+ TermType.HybridRelationshipType.getKey() + "' "
|
2154
|
+ " WHERE DTYPE = '"
|
2155
|
+ HybridRelationshipType.class.getSimpleName() + "' ";
|
2156
|
step = SimpleSchemaUpdaterStep.NewNonAuditedInstance(stepName, query, 99)
|
2157
|
.setDefaultAuditing(tableName);
|
2158
|
stepList.add(step);
|
2159
|
|
2160
|
// SynonymType
|
2161
|
stepName = "Update termType for SynonymRelationship Type";
|
2162
|
query = " UPDATE @@DefinedTermBase@@ " + " SET termType = '"
|
2163
|
+ TermType.SynonymType.getKey() + "' "
|
2164
|
+ " WHERE DTYPE = '"
|
2165
|
+ SynonymType.class.getSimpleName() + "' ";
|
2166
|
step = SimpleSchemaUpdaterStep.NewNonAuditedInstance(stepName, query, 99)
|
2167
|
.setDefaultAuditing(tableName);
|
2168
|
stepList.add(step);
|
2169
|
|
2170
|
// TaxonRelationshipType
|
2171
|
stepName = "Update termType for TaxonRelationship Type";
|
2172
|
query = " UPDATE @@DefinedTermBase@@ " + " SET termType = '"
|
2173
|
+ TermType.TaxonRelationshipType.getKey() + "' "
|
2174
|
+ " WHERE DTYPE = '"
|
2175
|
+ TaxonRelationshipType.class.getSimpleName() + "' ";
|
2176
|
step = SimpleSchemaUpdaterStep.NewNonAuditedInstance(stepName, query, 99)
|
2177
|
.setDefaultAuditing(tableName);
|
2178
|
stepList.add(step);
|
2179
|
|
2180
|
// NameTypeDesignationStatus
|
2181
|
stepName = "Update termType for NameTypeDesignationStatus";
|
2182
|
query = " UPDATE @@DefinedTermBase@@ " + " SET termType = '"
|
2183
|
+ TermType.NameTypeDesignationStatus.getKey() + "' "
|
2184
|
+ " WHERE DTYPE = '"
|
2185
|
+ NameTypeDesignationStatus.class.getSimpleName() + "' ";
|
2186
|
step = SimpleSchemaUpdaterStep.NewNonAuditedInstance(stepName, query, 99)
|
2187
|
.setDefaultAuditing(tableName);
|
2188
|
stepList.add(step);
|
2189
|
|
2190
|
// SpecimenTypeDesignationStatus
|
2191
|
stepName = "Update termType for SpecimenTypeDesignationStatus";
|
2192
|
query = " UPDATE @@DefinedTermBase@@ " + " SET termType = '"
|
2193
|
+ TermType.SpecimenTypeDesignationStatus.getKey() + "' "
|
2194
|
+ " WHERE DTYPE = '"
|
2195
|
+ SpecimenTypeDesignationStatus.class.getSimpleName() + "' ";
|
2196
|
step = SimpleSchemaUpdaterStep.NewNonAuditedInstance(stepName, query, 99)
|
2197
|
.setDefaultAuditing(tableName);
|
2198
|
stepList.add(step);
|
2199
|
|
2200
|
// InstitutionType
|
2201
|
stepName = "Update termType for Institution Type";
|
2202
|
query = " UPDATE @@DefinedTermBase@@ " + " SET termType = '"
|
2203
|
+ TermType.InstitutionType.getKey() + "' "
|
2204
|
+ " WHERE DTYPE = 'InstitutionType' ";
|
2205
|
step = SimpleSchemaUpdaterStep.NewNonAuditedInstance(stepName, query, 99)
|
2206
|
.setDefaultAuditing(tableName);
|
2207
|
stepList.add(step);
|
2208
|
|
2209
|
// NamedAreaType
|
2210
|
stepName = "Update termType for NamedArea Type";
|
2211
|
query = " UPDATE @@DefinedTermBase@@ " + " SET termType = '"
|
2212
|
+ TermType.NamedAreaType.getKey() + "' " + " WHERE DTYPE = '"
|
2213
|
+ NamedAreaType.class.getSimpleName() + "' ";
|
2214
|
step = SimpleSchemaUpdaterStep.NewNonAuditedInstance(stepName, query, 99)
|
2215
|
.setDefaultAuditing(tableName);
|
2216
|
stepList.add(step);
|
2217
|
|
2218
|
// NamedAreaLevel
|
2219
|
stepName = "Update termType for NamedArea Level";
|
2220
|
query = " UPDATE @@DefinedTermBase@@ " + " SET termType = '"
|
2221
|
+ TermType.NamedAreaLevel.getKey() + "' " + " WHERE DTYPE = '"
|
2222
|
+ NamedAreaLevel.class.getSimpleName() + "' ";
|
2223
|
step = SimpleSchemaUpdaterStep.NewNonAuditedInstance(stepName, query, 99)
|
2224
|
.setDefaultAuditing(tableName);
|
2225
|
stepList.add(step);
|
2226
|
|
2227
|
// RightsType
|
2228
|
stepName = "Update termType for Rights Type";
|
2229
|
query = " UPDATE @@DefinedTermBase@@ " + " SET termType = '"
|
2230
|
+ TermType.RightsType.getKey() + "' "
|
2231
|
+ " WHERE DTYPE = 'RightsType' OR DTYPE = 'RightsTerm' ";
|
2232
|
step = SimpleSchemaUpdaterStep.NewNonAuditedInstance(stepName, query, 99)
|
2233
|
.setDefaultAuditing(tableName);
|
2234
|
stepList.add(step);
|
2235
|
|
2236
|
// MeasurementUnit
|
2237
|
stepName = "Update termType for MeasurementUnit";
|
2238
|
query = " UPDATE @@DefinedTermBase@@ " + " SET termType = '"
|
2239
|
+ TermType.MeasurementUnit.getKey() + "' " + " WHERE DTYPE = '"
|
2240
|
+ MeasurementUnit.class.getSimpleName() + "' ";
|
2241
|
step = SimpleSchemaUpdaterStep.NewNonAuditedInstance(stepName, query, 99)
|
2242
|
.setDefaultAuditing(tableName);
|
2243
|
stepList.add(step);
|
2244
|
|
2245
|
// StatisticalMeasure
|
2246
|
stepName = "Update termType for Statistical Measure";
|
2247
|
query = " UPDATE @@DefinedTermBase@@ " + " SET termType = '"
|
2248
|
+ TermType.StatisticalMeasure.getKey() + "' "
|
2249
|
+ " WHERE DTYPE = '" + StatisticalMeasure.class.getSimpleName()
|
2250
|
+ "' ";
|
2251
|
step = SimpleSchemaUpdaterStep.NewNonAuditedInstance(stepName, query, 99)
|
2252
|
.setDefaultAuditing(tableName);
|
2253
|
stepList.add(step);
|
2254
|
|
2255
|
// PreservationMethod
|
2256
|
stepName = "Update termType for Preservation Method";
|
2257
|
query = " UPDATE @@DefinedTermBase@@ " + " SET termType = '"
|
2258
|
+ TermType.Method.getKey() + "' " + " WHERE DTYPE = '"
|
2259
|
+ PreservationMethod.class.getSimpleName() + "' ";
|
2260
|
step = SimpleSchemaUpdaterStep.NewNonAuditedInstance(stepName, query, 99)
|
2261
|
.setDefaultAuditing(tableName);
|
2262
|
stepList.add(step);
|
2263
|
|
2264
|
// Modifier
|
2265
|
stepName = "Update termType for Modifier";
|
2266
|
query = " UPDATE @@DefinedTermBase@@ " + " SET termType = '"
|
2267
|
+ TermType.Modifier.getKey() + "' "
|
2268
|
+ " WHERE DTYPE = 'Modifier' ";
|
2269
|
step = SimpleSchemaUpdaterStep.NewNonAuditedInstance(stepName, query, 99)
|
2270
|
.setDefaultAuditing(tableName);
|
2271
|
stepList.add(step);
|
2272
|
|
2273
|
// Scope
|
2274
|
stepName = "Update termType for Scope";
|
2275
|
query = " UPDATE @@DefinedTermBase@@ " + " SET termType = '"
|
2276
|
+ TermType.Scope.getKey() + "' " + " WHERE DTYPE = 'Scope' ";
|
2277
|
step = SimpleSchemaUpdaterStep.NewNonAuditedInstance(stepName, query, 99)
|
2278
|
.setDefaultAuditing(tableName);
|
2279
|
stepList.add(step);
|
2280
|
|
2281
|
// Stage
|
2282
|
stepName = "Update termType for Stage";
|
2283
|
query = " UPDATE @@DefinedTermBase@@ " + " SET termType = '"
|
2284
|
+ TermType.Stage.getKey() + "' " + " WHERE DTYPE = 'Stage' ";
|
2285
|
step = SimpleSchemaUpdaterStep.NewNonAuditedInstance(stepName, query, 99)
|
2286
|
.setDefaultAuditing(tableName);
|
2287
|
stepList.add(step);
|
2288
|
|
2289
|
// Sex
|
2290
|
stepName = "Update termType for Sex";
|
2291
|
query = " UPDATE @@DefinedTermBase@@ " + " SET termType = '"
|
2292
|
+ TermType.Sex.getKey() + "' " + " WHERE DTYPE = 'Sex' ";
|
2293
|
step = SimpleSchemaUpdaterStep.NewNonAuditedInstance(stepName, query, 99)
|
2294
|
.setDefaultAuditing(tableName);
|
2295
|
stepList.add(step);
|
2296
|
|
2297
|
// ReferenceSystem
|
2298
|
stepName = "Update termType for ReferenceSystem";
|
2299
|
query = " UPDATE @@DefinedTermBase@@ " + " SET termType = '"
|
2300
|
+ TermType.ReferenceSystem.getKey() + "' " + " WHERE DTYPE = '"
|
2301
|
+ ReferenceSystem.class.getSimpleName() + "' ";
|
2302
|
step = SimpleSchemaUpdaterStep.NewNonAuditedInstance(stepName, query, 99)
|
2303
|
.setDefaultAuditing(tableName);
|
2304
|
stepList.add(step);
|
2305
|
|
2306
|
// State
|
2307
|
stepName = "Update termType for State";
|
2308
|
query = " UPDATE @@DefinedTermBase@@ " + " SET termType = '"
|
2309
|
+ TermType.State.getKey() + "' " + " WHERE DTYPE = '"
|
2310
|
+ State.class.getSimpleName() + "' ";
|
2311
|
step = SimpleSchemaUpdaterStep.NewNonAuditedInstance(stepName, query, 99)
|
2312
|
.setDefaultAuditing(tableName);
|
2313
|
stepList.add(step);
|
2314
|
|
2315
|
// NaturalLanguageTerm
|
2316
|
stepName = "Update termType for NaturalLanguageTerm";
|
2317
|
query = " UPDATE @@DefinedTermBase@@ " + " SET termType = '"
|
2318
|
+ TermType.NaturalLanguageTerm.getKey() + "' "
|
2319
|
+ " WHERE DTYPE = '"
|
2320
|
+ NaturalLanguageTerm.class.getSimpleName() + "' ";
|
2321
|
step = SimpleSchemaUpdaterStep.NewNonAuditedInstance(stepName, query, 99)
|
2322
|
.setDefaultAuditing(tableName);
|
2323
|
stepList.add(step);
|
2324
|
|
2325
|
// TextFormat
|
2326
|
stepName = "Update termType for TextFormat";
|
2327
|
query = " UPDATE @@DefinedTermBase@@ " + " SET termType = '"
|
2328
|
+ TermType.TextFormat.getKey() + "' " + " WHERE DTYPE = '"
|
2329
|
+ TextFormat.class.getSimpleName() + "' ";
|
2330
|
step = SimpleSchemaUpdaterStep.NewNonAuditedInstance(stepName, query, 99)
|
2331
|
.setDefaultAuditing(tableName);
|
2332
|
stepList.add(step);
|
2333
|
|
2334
|
// DeterminationModifier
|
2335
|
stepName = "Update termType for DeterminationModifier";
|
2336
|
query = " UPDATE @@DefinedTermBase@@ " + " SET termType = '"
|
2337
|
+ TermType.DeterminationModifier.getKey() + "' "
|
2338
|
+ " WHERE DTYPE = 'DeterminationModifier' ";
|
2339
|
step = SimpleSchemaUpdaterStep.NewNonAuditedInstance(stepName, query, 99)
|
2340
|
.setDefaultAuditing(tableName);
|
2341
|
stepList.add(step);
|
2342
|
|
2343
|
}
|
2344
|
|
2345
|
/**
|
2346
|
* @param stepList
|
2347
|
*/
|
2348
|
private void updateDtypeOfDefinedTerms(List<ISchemaUpdaterStep> stepList) {
|
2349
|
String tableName = "DefinedTermBase";
|
2350
|
|
2351
|
// update DTYPE for institution type and modifiers (Stage, Scope, Sex,
|
2352
|
// DeterminationModifier, Modifier) -> DefinedTerm
|
2353
|
String stepName = "Update DTYPE for TDWG Areas";
|
2354
|
String query = " UPDATE @@DefinedTermBase@@ "
|
2355
|
+ " SET DTYPE = 'DefinedTerm' "
|
2356
|
+ " WHERE DTYPE = 'Stage' OR DTYPE = 'Scope' OR DTYPE = 'Sex' OR DTYPE = 'DeterminationModifier' "
|
2357
|
+ " OR DTYPE = 'Modifier' OR DTYPE = 'InstitutionType' ";
|
2358
|
ISchemaUpdaterStep step = SimpleSchemaUpdaterStep.NewNonAuditedInstance(stepName, query, 99)
|
2359
|
.setDefaultAuditing(tableName);
|
2360
|
stepList.add(step);
|
2361
|
|
2362
|
// update DTYPE for TDWG Areas and Continents -> NamedArea
|
2363
|
stepName = "Update DTYPE for TDWG Areas and Continents";
|
2364
|
query = " UPDATE @@DefinedTermBase@@ " + " SET DTYPE = 'NamedArea' "
|
2365
|
+ " WHERE DTYPE = 'TdwgArea' OR DTYPE = 'Continent' ";
|
2366
|
step = SimpleSchemaUpdaterStep.NewNonAuditedInstance(stepName, query, 99)
|
2367
|
.setDefaultAuditing(tableName);
|
2368
|
stepList.add(step);
|
2369
|
|
2370
|
}
|
2371
|
|
2372
|
/**
|
2373
|
* @param stepList
|
2374
|
*/
|
2375
|
private void changeUriType(List<ISchemaUpdaterStep> stepList) {
|
2376
|
// #3345
|
2377
|
String stepName;
|
2378
|
String tableName;
|
2379
|
ISchemaUpdaterStep step;
|
2380
|
String columnName;
|
2381
|
|
2382
|
stepName = "Update uri to clob for DefinedTermBase";
|
2383
|
tableName = "DefinedTermBase";
|
2384
|
columnName = "uri";
|
2385
|
step = ColumnTypeChanger.NewClobInstance(stepName, tableName,
|
2386
|
columnName, INCLUDE_AUDIT);
|
2387
|
stepList.add(step);
|
2388
|
|
2389
|
stepName = "Update uri to clob for TermVocabulary";
|
2390
|
tableName = "TermVocabulary";
|
2391
|
columnName = "uri";
|
2392
|
step = ColumnTypeChanger.NewClobInstance(stepName, tableName,
|
2393
|
columnName, INCLUDE_AUDIT);
|
2394
|
stepList.add(step);
|
2395
|
|
2396
|
// are uri and termsourceuri needed -> see #3955
|
2397
|
stepName = "Update termsourceuri to clob for TermVocabulary";
|
2398
|
tableName = "TermVocabulary";
|
2399
|
columnName = "termsourceuri";
|
2400
|
step = ColumnTypeChanger.NewClobInstance(stepName, tableName,
|
2401
|
columnName, INCLUDE_AUDIT);
|
2402
|
stepList.add(step);
|
2403
|
|
2404
|
stepName = "Update uri to clob for Reference";
|
2405
|
tableName = "Reference";
|
2406
|
columnName = "uri";
|
2407
|
step = ColumnTypeChanger.NewClobInstance(stepName, tableName,
|
2408
|
columnName, INCLUDE_AUDIT);
|
2409
|
stepList.add(step);
|
2410
|
|
2411
|
stepName = "Update uri to clob for Rights";
|
2412
|
tableName = "Rights";
|
2413
|
columnName = "uri";
|
2414
|
step = ColumnTypeChanger.NewClobInstance(stepName, tableName,
|
2415
|
columnName, INCLUDE_AUDIT);
|
2416
|
stepList.add(step);
|
2417
|
|
2418
|
stepName = "Update uri to clob for MediaRepresentationPart";
|
2419
|
tableName = "MediaRepresentationPart";
|
2420
|
columnName = "uri";
|
2421
|
step = ColumnTypeChanger.NewClobInstance(stepName, tableName,
|
2422
|
columnName, INCLUDE_AUDIT);
|
2423
|
stepList.add(step);
|
2424
|
|
2425
|
// still needed??
|
2426
|
stepName = "Update uri to clob for FeatureTree";
|
2427
|
tableName = "FeatureTree";
|
2428
|
columnName = "uri";
|
2429
|
step = ColumnTypeChanger.NewClobInstance(stepName, tableName,
|
2430
|
columnName, INCLUDE_AUDIT);
|
2431
|
stepList.add(step);
|
2432
|
|
2433
|
// Annotation.linkbackUri (change from URL to URI)
|
2434
|
stepName = "Update url to uri (->clob) for Annotation.linkbackUri";
|
2435
|
tableName = "Annotation";
|
2436
|
columnName = "linkbackUrl";
|
2437
|
step = ColumnTypeChanger.NewClobInstance(stepName, tableName,
|
2438
|
columnName, INCLUDE_AUDIT);
|
2439
|
stepList.add(step);
|
2440
|
|
2441
|
}
|
2442
|
|
2443
|
/**
|
2444
|
* @param stepList
|
2445
|
* @return
|
2446
|
*/
|
2447
|
private void addTimeperiodToDescriptionElement(
|
2448
|
List<ISchemaUpdaterStep> stepList) {
|
2449
|
String stepName;
|
2450
|
String tableName;
|
2451
|
ISchemaUpdaterStep step;
|
2452
|
String columnName;
|
2453
|
// start #3312
|
2454
|
stepName = "Create time period start column in description element base";
|
2455
|
tableName = "DescriptionElementBase";
|
2456
|
columnName = "timeperiod_start";
|
2457
|
step = ColumnAdder.NewStringInstance(stepName, tableName, columnName,
|
2458
|
INCLUDE_AUDIT);
|
2459
|
stepList.add(step);
|
2460
|
|
2461
|
// end #3312
|
2462
|
stepName = "Create time period end column in description element base";
|
2463
|
tableName = "DescriptionElementBase";
|
2464
|
columnName = "timeperiod_end";
|
2465
|
step = ColumnAdder.NewStringInstance(stepName, tableName, columnName,
|
2466
|
INCLUDE_AUDIT);
|
2467
|
stepList.add(step);
|
2468
|
|
2469
|
// freetext #3312
|
2470
|
stepName = "Create time period freetext column in description element base";
|
2471
|
tableName = "DescriptionElementBase";
|
2472
|
columnName = "timeperiod_freetext";
|
2473
|
step = ColumnAdder.NewStringInstance(stepName, tableName, columnName,
|
2474
|
INCLUDE_AUDIT);
|
2475
|
stepList.add(step);
|
2476
|
|
2477
|
return;
|
2478
|
}
|
2479
|
|
2480
|
private void updateElevationMax(List<ISchemaUpdaterStep> stepList) {
|
2481
|
// create column
|
2482
|
String stepName = "Create absoluteElevationMax column";
|
2483
|
String tableName = "GatheringEvent";
|
2484
|
String columnName = "absoluteElevationMax";
|
2485
|
ISchemaUpdaterStep step = ColumnAdder.NewIntegerInstance(stepName,
|
2486
|
tableName, columnName, INCLUDE_AUDIT, false, null);
|
2487
|
stepList.add(step);
|
2488
|
|
2489
|
String audTableName = "GatheringEvent";
|
2490
|
// update max
|
2491
|
stepName = "Update gathering elevation max";
|
2492
|
// all audits to unknown type
|
2493
|
String query = " UPDATE @@GatheringEvent@@ "
|
2494
|
+ " SET absoluteElevationMax = absoluteElevation + absoluteElevationError, "
|
2495
|
+ " absoluteElevation = absoluteElevation - absoluteElevationError"
|
2496
|
+ " WHERE absoluteElevationError is not null ";
|
2497
|
step = SimpleSchemaUpdaterStep.NewNonAuditedInstance(stepName, query, 99)
|
2498
|
.setDefaultAuditing(audTableName);
|
2499
|
stepList.add(step);
|
2500
|
// TODO same for AUD
|
2501
|
|
2502
|
// remove error column
|
2503
|
stepName = "Remove elevationErrorRadius column";
|
2504
|
tableName = "GatheringEvent";
|
2505
|
columnName = "absoluteElevationError";
|
2506
|
step = ColumnRemover.NewInstance(stepName, tableName, columnName,
|
2507
|
INCLUDE_AUDIT);
|
2508
|
stepList.add(step);
|
2509
|
|
2510
|
// create column absoluteElevationText
|
2511
|
stepName = "Create absoluteElevationText column";
|
2512
|
tableName = "GatheringEvent";
|
2513
|
columnName = "absoluteElevationText";
|
2514
|
int size = 30;
|
2515
|
step = ColumnAdder.NewStringInstance(stepName, tableName, columnName,
|
2516
|
size, INCLUDE_AUDIT);
|
2517
|
stepList.add(step);
|
2518
|
|
2519
|
// retype distanceToGround
|
2520
|
stepName = "Rname distanceToGround column";
|
2521
|
tableName = "GatheringEvent";
|
2522
|
String strOldColumnName = "distanceToGround";
|
2523
|
step = ColumnTypeChanger.NewInt2DoubleInstance(stepName, tableName,
|
2524
|
strOldColumnName, INCLUDE_AUDIT);
|
2525
|
stepList.add(step);
|
2526
|
|
2527
|
// create column distanceToGroundMax
|
2528
|
stepName = "Create distanceToGroundMax column";
|
2529
|
tableName = "GatheringEvent";
|
2530
|
columnName = "distanceToGroundMax";
|
2531
|
step = ColumnAdder.NewDoubleInstance(stepName, tableName, columnName,
|
2532
|
INCLUDE_AUDIT, false);
|
2533
|
stepList.add(step);
|
2534
|
|
2535
|
// create column distanceToGroundText
|
2536
|
stepName = "Create distanceToGroundText column";
|
2537
|
tableName = "GatheringEvent";
|
2538
|
columnName = "distanceToGroundText";
|
2539
|
size = 30;
|
2540
|
step = ColumnAdder.NewStringInstance(stepName, tableName, columnName,
|
2541
|
size, INCLUDE_AUDIT);
|
2542
|
stepList.add(step);
|
2543
|
|
2544
|
// retype distanceToGround
|
2545
|
stepName = "Rname distanceToWaterSurface column";
|
2546
|
tableName = "GatheringEvent";
|
2547
|
strOldColumnName = "distanceToWaterSurface";
|
2548
|
step = ColumnTypeChanger.NewInt2DoubleInstance(stepName, tableName,
|
2549
|
strOldColumnName, INCLUDE_AUDIT);
|
2550
|
stepList.add(step);
|
2551
|
|
2552
|
// create column distanceToWaterSurface
|
2553
|
stepName = "Create distanceToWaterSurfaceMax column";
|
2554
|
tableName = "GatheringEvent";
|
2555
|
columnName = "distanceToWaterSurfaceMax";
|
2556
|
step = ColumnAdder.NewDoubleInstance(stepName, tableName, columnName,
|
2557
|
INCLUDE_AUDIT, false);
|
2558
|
stepList.add(step);
|
2559
|
|
2560
|
// create column distanceToGroundText
|
2561
|
stepName = "Create distanceToWaterSurfaceText column";
|
2562
|
tableName = "GatheringEvent";
|
2563
|
columnName = "distanceToWaterSurfaceText";
|
2564
|
size = 30;
|
2565
|
step = ColumnAdder.NewStringInstance(stepName, tableName, columnName,
|
2566
|
size, INCLUDE_AUDIT);
|
2567
|
stepList.add(step);
|
2568
|
|
2569
|
}
|
2570
|
|
2571
|
/**
|
2572
|
* @param stepList
|
2573
|
*/
|
2574
|
private void updateOriginalSourceType(List<ISchemaUpdaterStep> stepList) {
|
2575
|
String stepName;
|
2576
|
String typeAttrName = "sourceType";
|
2577
|
ISchemaUpdaterStep step;
|
2578
|
String tableName = "OriginalSourceBase";
|
2579
|
|
2580
|
// all data to unknown
|
2581
|
stepName = "Update original source type column: set all to unknown";
|
2582
|
String query = String.format("UPDATE @@OriginalSourceBase@@ "
|
2583
|
+ " SET %s = '%s' ", typeAttrName,
|
2584
|
OriginalSourceType.Unknown.getKey());
|
2585
|
step = SimpleSchemaUpdaterStep.NewNonAuditedInstance(stepName, query, 99)
|
2586
|
.setDefaultAuditing(tableName);
|
2587
|
stepList.add(step);
|
2588
|
|
2589
|
// all IMPORTS recognized by idInSOurce and by missing nameInSource
|
2590
|
stepName = "Update original source type column: set to 'import' where possible";
|
2591
|
query = String
|
2592
|
.format("UPDATE @@OriginalSourceBase@@ "
|
2593
|
+ " SET %s = '%s' "
|
2594
|
+ " WHERE "
|
2595
|
+ "((idInSource IS NOT NULL) OR (idNamespace IS NOT NULL)) AND "
|
2596
|
+ "( nameUsedInSource_id IS NULL AND originalNameString IS NULL ) ",
|
2597
|
typeAttrName, OriginalSourceType.Import.getKey());
|
2598
|
step = SimpleSchemaUpdaterStep.NewNonAuditedInstance(stepName, query, 99)
|
2599
|
.setDefaultAuditing(tableName);
|
2600
|
stepList.add(step);
|
2601
|
|
2602
|
// all PRIMARY TAXONOMIC SOURCES recognized by missing idInSource and
|
2603
|
// namespace and by existing citation
|
2604
|
stepName = "Update original source type column: set to 'primary taxonomic source' where possible";
|
2605
|
query = String.format("UPDATE @@OriginalSourceBase@@ SET %s = '%s' WHERE "
|
2606
|
+ "(idInSource IS NULL AND idNamespace IS NULL) AND "
|
2607
|
+ "( citation_id IS NOT NULL ) ", typeAttrName,
|
2608
|
OriginalSourceType.PrimaryTaxonomicSource.getKey());
|
2609
|
step = SimpleSchemaUpdaterStep.NewNonAuditedInstance(stepName, query, 99)
|
2610
|
.setDefaultAuditing(tableName);
|
2611
|
stepList.add(step);
|
2612
|
}
|
2613
|
|
2614
|
@Override
|
2615
|
public ISchemaUpdater getNextUpdater() {
|
2616
|
return SchemaUpdater_33_331.NewInstance();
|
2617
|
}
|
2618
|
|
2619
|
@Override
|
2620
|
public ISchemaUpdater getPreviousUpdater() {
|
2621
|
return SchemaUpdater_30_301.NewInstance();
|
2622
|
}
|
2623
|
|
2624
|
}
|