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.v25_30;
|
11
|
|
12
|
import java.util.ArrayList;
|
13
|
import java.util.List;
|
14
|
|
15
|
import org.apache.log4j.Logger;
|
16
|
|
17
|
import eu.etaxonomy.cdm.database.update.ColumnAdder;
|
18
|
import eu.etaxonomy.cdm.database.update.ColumnNameChanger;
|
19
|
import eu.etaxonomy.cdm.database.update.ColumnRemover;
|
20
|
import eu.etaxonomy.cdm.database.update.ISchemaUpdater;
|
21
|
import eu.etaxonomy.cdm.database.update.ISchemaUpdaterStep;
|
22
|
import eu.etaxonomy.cdm.database.update.MapTableCreator;
|
23
|
import eu.etaxonomy.cdm.database.update.MnTableCreator;
|
24
|
import eu.etaxonomy.cdm.database.update.SchemaUpdaterBase;
|
25
|
import eu.etaxonomy.cdm.database.update.TableCreator;
|
26
|
import eu.etaxonomy.cdm.database.update.TableDroper;
|
27
|
import eu.etaxonomy.cdm.database.update.TableNameChanger;
|
28
|
import eu.etaxonomy.cdm.database.update.v24_25.SchemaUpdater_24_25;
|
29
|
import eu.etaxonomy.cdm.database.update.v30_31.SchemaUpdater_30_301;
|
30
|
|
31
|
|
32
|
/**
|
33
|
* @author a.mueller
|
34
|
* @since Nov 08, 2010
|
35
|
*/
|
36
|
public class SchemaUpdater_25_30 extends SchemaUpdaterBase {
|
37
|
|
38
|
|
39
|
@SuppressWarnings("unused")
|
40
|
private static final Logger logger = Logger.getLogger(SchemaUpdater_25_30.class);
|
41
|
private static final String startSchemaVersion = "2.5.0.0.201009211255";
|
42
|
private static final String endSchemaVersion = "3.0.0.0.201011090000";
|
43
|
|
44
|
// ********************** FACTORY METHOD *******************************************
|
45
|
|
46
|
public static SchemaUpdater_25_30 NewInstance(){
|
47
|
return new SchemaUpdater_25_30();
|
48
|
}
|
49
|
|
50
|
/**
|
51
|
* @param startSchemaVersion
|
52
|
* @param endSchemaVersion
|
53
|
*/
|
54
|
protected SchemaUpdater_25_30() {
|
55
|
super(startSchemaVersion, endSchemaVersion);
|
56
|
}
|
57
|
|
58
|
/* (non-Javadoc)
|
59
|
* @see eu.etaxonomy.cdm.database.update.SchemaUpdaterBase#getUpdaterList()
|
60
|
*/
|
61
|
@Override
|
62
|
protected List<ISchemaUpdaterStep> getUpdaterList() {
|
63
|
|
64
|
List<ISchemaUpdaterStep> stepList = new ArrayList<ISchemaUpdaterStep>();
|
65
|
String stepName;
|
66
|
|
67
|
//add feature tree attribute to feature node table
|
68
|
stepName = "Add feature tree addtribue to feature node";
|
69
|
//TODO defaultValue & not null
|
70
|
ColumnAdder featureTreeColAdder = ColumnAdder.NewIntegerInstance(stepName, "FeatureNode", "FeatureTree_id", INCLUDE_AUDIT, false, "FeatureTree");
|
71
|
stepList.add(featureTreeColAdder);
|
72
|
|
73
|
//compute feature tree column
|
74
|
stepName = "Update feature node tree column";
|
75
|
FeatureNodeTreeColumnUpdater fntcu = FeatureNodeTreeColumnUpdater.NewInstance(stepName, INCLUDE_AUDIT);
|
76
|
stepList.add(fntcu);
|
77
|
|
78
|
//Key statement
|
79
|
stepName = "Create KeyStatement tables";
|
80
|
TableCreator tableCreator = TableCreator.NewInstance(stepName, "KeyStatement", new String[]{}, new String[]{}, new String[]{}, INCLUDE_AUDIT, INCLUDE_CDM_BASE);
|
81
|
stepList.add(tableCreator);
|
82
|
|
83
|
//KeyStatement_LanguageString
|
84
|
stepName = "Create KeyStatement label";
|
85
|
tableCreator = MapTableCreator.NewMapTableInstance(stepName, "KeyStatement", null, "LanguageString", "label", "DefinedTermBase", SchemaUpdaterBase.INCLUDE_AUDIT);
|
86
|
stepList.add(tableCreator);
|
87
|
|
88
|
|
89
|
//PolytomousKey
|
90
|
stepName = "Create PolytomousKey tables";
|
91
|
tableCreator = TableCreator.NewIdentifiableInstance(stepName, "PolytomousKey", new String[]{"root_id"}, new String[]{"int"}, new String[]{"PolytomousKeyNode"}, INCLUDE_AUDIT);
|
92
|
stepList.add(tableCreator);
|
93
|
|
94
|
//create table PolytomousKeyNode_PolytomousKeyNode_AUD (REV integer not null, parent_id integer not null, id integer not null, sortIndex integer not null, revtype tinyint, primary key (REV, parent_id, id, sortIndex)) ENGINE=MYISAM DEFAULT CHARSET=utf8
|
95
|
tableCreator = TableCreator.NewInstance(stepName, "PolytomousKeyNode_PolytomousKeyNode_AUD", new String[]{"REV", "parent_id", "id", "sortIndex", "revtype"}, new String[]{"int","int","int","int","tinyint"}, new String[]{null, "PolytomousKeyNode", null, null, null},! INCLUDE_AUDIT, ! INCLUDE_CDM_BASE);
|
96
|
tableCreator.setPrimaryKeyParams("REV, parent_id, id, sortIndex", null);
|
97
|
tableCreator.setUniqueParams(null, null);
|
98
|
stepList.add(tableCreator);
|
99
|
|
100
|
//covered taxa
|
101
|
stepName= "Add polytomous key covered taxa";
|
102
|
tableCreator = MnTableCreator.NewMnInstance(stepName, "PolytomousKey", null, "TaxonBase", null, "coveredtaxa", SchemaUpdaterBase.INCLUDE_AUDIT, false, false);
|
103
|
stepList.add(tableCreator);
|
104
|
|
105
|
//Polytomous key node
|
106
|
stepName = "Create PolytomousKeyNode tables";
|
107
|
tableCreator = TableCreator.NewInstance(stepName, "PolytomousKeyNode", new String[]{"nodeNumber", "sortindex", "key_id", "othernode_id", "question_id", "statement_id", "feature_id", "subkey_id" , "taxon_id", "parent_id"}, new String[]{"int", "int", "int", "int", "int","int", "int", "int", "int", "int"}, new String[]{null, null, "PolytomousKey", "PolytomousKeyNode", "KeyStatement", "KeyStatement", "DefinedTermBase", "PolytomousKey" , "TaxonBase", "PolytomousKeyNode"}, INCLUDE_AUDIT, INCLUDE_CDM_BASE);
|
108
|
stepList.add(tableCreator);
|
109
|
|
110
|
//modifying text
|
111
|
stepName = "Create PolytomousKeyNode modifying text";
|
112
|
tableCreator = MapTableCreator.NewMapTableInstance(stepName, "PolytomousKeyNode", null, "LanguageString", "modifyingtext", "DefinedTermBase", SchemaUpdaterBase.INCLUDE_AUDIT);
|
113
|
stepList.add(tableCreator);
|
114
|
|
115
|
//rename named area featureTree_id
|
116
|
stepName = "Rename polytomouskey_namedarea.featureTree_id -> polytomouskey_id";
|
117
|
ColumnNameChanger colChanger = ColumnNameChanger.NewIntegerInstance(stepName, "PolytomousKey_NamedArea", "FeatureTree_id", "PolytomousKey_id", INCLUDE_AUDIT);
|
118
|
stepList.add(colChanger);
|
119
|
|
120
|
//rename polytomouskey_scope featureTree_id
|
121
|
stepName = "Rename polytomouskey_scope.featureTree_id -> polytomouskey_id";
|
122
|
colChanger = ColumnNameChanger.NewIntegerInstance(stepName, "PolytomousKey_Scope", "FeatureTree_id", "PolytomousKey_id", INCLUDE_AUDIT);
|
123
|
stepList.add(colChanger);
|
124
|
|
125
|
//move PolytomousKey data to new tables
|
126
|
stepName = "Move polytomous key data from feature tree to polytomous key";
|
127
|
PolytomousKeyDataMover dataMover = PolytomousKeyDataMover.NewInstance(stepName, INCLUDE_AUDIT);
|
128
|
stepList.add(dataMover);
|
129
|
|
130
|
//remove DTYPE from feature node
|
131
|
stepName = "Remove feature tree DTYPE column";
|
132
|
ColumnRemover colRemover = ColumnRemover.NewInstance(stepName, "FeatureTree", "DTYPE", INCLUDE_AUDIT);
|
133
|
stepList.add(colRemover);
|
134
|
|
135
|
//remove feature node taxon column
|
136
|
stepName = "Remove feature node taxon column";
|
137
|
colRemover = ColumnRemover.NewInstance(stepName, "FeatureNode", "taxon_id", INCLUDE_AUDIT);
|
138
|
stepList.add(colRemover);
|
139
|
|
140
|
//Remove featureNode_representation
|
141
|
stepName = "Remove FeatureNode_Representation MN";
|
142
|
TableDroper tableDropper = TableDroper.NewInstance(stepName, "FeatureNode_Representation", INCLUDE_AUDIT);
|
143
|
stepList.add(tableDropper);
|
144
|
|
145
|
|
146
|
//add exsiccatum
|
147
|
stepName = "Add exsiccatum to specimen";
|
148
|
ColumnAdder exsiccatumAdder = ColumnAdder.NewStringInstance(stepName, "SpecimenOrObservationBase", "exsiccatum", INCLUDE_AUDIT);
|
149
|
stepList.add(exsiccatumAdder);
|
150
|
|
151
|
//add primary collector
|
152
|
stepName = "Add primary collector to field unit";
|
153
|
ColumnAdder primaryCollectorAdder = ColumnAdder.NewIntegerInstance(stepName, "SpecimenOrObservationBase", "primaryCollector_id", INCLUDE_AUDIT, false, "AgentBase");
|
154
|
stepList.add(primaryCollectorAdder);
|
155
|
|
156
|
|
157
|
//taxonomic tree -> classification
|
158
|
stepName = "Rename taxonomic tree to classification";
|
159
|
TableNameChanger tableNameChanger = TableNameChanger.NewInstance(stepName, "TaxonomicTree", "Classification", INCLUDE_AUDIT);
|
160
|
stepList.add(tableNameChanger);
|
161
|
|
162
|
//TaxonomicTree_Annotation -> classification_Annotation
|
163
|
stepName = "Rename TaxonomicTree_Annotation to Classification_Annotation";
|
164
|
tableNameChanger = TableNameChanger.NewInstance(stepName, "TaxonomicTree_Annotation", "Classification_Annotation", INCLUDE_AUDIT);
|
165
|
stepList.add(tableNameChanger);
|
166
|
|
167
|
stepName = "Rename taxonomicTree_id column in Classification_Annotation";
|
168
|
ColumnNameChanger columnNameChanger = ColumnNameChanger.NewIntegerInstance(stepName, "Classification_Annotation", "taxonomicTree_id", "classification_id", INCLUDE_AUDIT);
|
169
|
stepList.add(columnNameChanger);
|
170
|
|
171
|
|
172
|
//TaxonomicTree_Credit -> classification_Credit
|
173
|
stepName = "Rename TaxonomicTree_Credit to Classification_Credit";
|
174
|
tableNameChanger = TableNameChanger.NewInstance(stepName, "TaxonomicTree_Credit", "Classification_Credit", INCLUDE_AUDIT);
|
175
|
stepList.add(tableNameChanger);
|
176
|
|
177
|
stepName = "Rename taxonomicTree_id column in Classification_Credit";
|
178
|
columnNameChanger = ColumnNameChanger.NewIntegerInstance(stepName, "Classification_Credit", "taxonomicTree_id", "classification_id", INCLUDE_AUDIT);
|
179
|
stepList.add(columnNameChanger);
|
180
|
|
181
|
|
182
|
//TaxonomicTree_Extension -> classification_Extension
|
183
|
stepName = "Rename TaxonomicTree_Extension to Classification_Extension";
|
184
|
tableNameChanger = TableNameChanger.NewInstance(stepName, "TaxonomicTree_Extension", "Classification_Extension", INCLUDE_AUDIT);
|
185
|
stepList.add(tableNameChanger);
|
186
|
|
187
|
stepName = "Rename taxonomicTree_id column in Classification_Extension";
|
188
|
columnNameChanger = ColumnNameChanger.NewIntegerInstance(stepName, "Classification_Extension", "taxonomicTree_id", "classification_id", INCLUDE_AUDIT);
|
189
|
stepList.add(columnNameChanger);
|
190
|
|
191
|
|
192
|
//TaxonomicTree_Marker -> classification_Marker
|
193
|
stepName = "Rename TaxonomicTree_Marker to Classification_Marker";
|
194
|
tableNameChanger = TableNameChanger.NewInstance(stepName, "TaxonomicTree_Marker", "Classification_Marker", INCLUDE_AUDIT);
|
195
|
stepList.add(tableNameChanger);
|
196
|
|
197
|
stepName = "Rename taxonomicTree_id column in Classification_Marker";
|
198
|
columnNameChanger = ColumnNameChanger.NewIntegerInstance(stepName, "Classification_Marker", "taxonomicTree_id", "classification_id", INCLUDE_AUDIT);
|
199
|
stepList.add(columnNameChanger);
|
200
|
|
201
|
|
202
|
//TaxonomicTree_OriginalSourceBase -> classification_OriginalSourceBase
|
203
|
stepName = "Rename TaxonomicTree_OriginalSourceBase to Classification_OriginalSourceBase";
|
204
|
tableNameChanger = TableNameChanger.NewInstance(stepName, "TaxonomicTree_OriginalSourceBase", "Classification_OriginalSourceBase", INCLUDE_AUDIT);
|
205
|
stepList.add(tableNameChanger);
|
206
|
|
207
|
stepName = "Rename taxonomicTree_id column in Classification_OriginalSourceBase";
|
208
|
columnNameChanger = ColumnNameChanger.NewIntegerInstance(stepName, "Classification_OriginalSourceBase", "taxonomicTree_id", "classification_id", INCLUDE_AUDIT);
|
209
|
stepList.add(columnNameChanger);
|
210
|
|
211
|
|
212
|
//TaxonomicTree_Rights -> classification_Rights
|
213
|
stepName = "Rename TaxonomicTree_Rights to Classification_Rights";
|
214
|
tableNameChanger = TableNameChanger.NewInstance(stepName, "TaxonomicTree_Rights", "Classification_Rights", INCLUDE_AUDIT);
|
215
|
stepList.add(tableNameChanger);
|
216
|
|
217
|
stepName = "Rename taxonomicTree_id column in Classification_Rights";
|
218
|
columnNameChanger = ColumnNameChanger.NewIntegerInstance(stepName, "Classification_Rights", "taxonomicTree_id", "classification_id", INCLUDE_AUDIT);
|
219
|
stepList.add(columnNameChanger);
|
220
|
|
221
|
|
222
|
//TaxonomicTree_TaxonNode -> classification_TaxonNode
|
223
|
stepName = "Rename TaxonomicTree_TaxonNode to Classification_TaxonNode";
|
224
|
tableNameChanger = TableNameChanger.NewInstance(stepName, "TaxonomicTree_TaxonNode", "Classification_TaxonNode", INCLUDE_AUDIT);
|
225
|
stepList.add(tableNameChanger);
|
226
|
|
227
|
stepName = "Rename taxonomicTree_id column in Classification_TaxonNode";
|
228
|
columnNameChanger = ColumnNameChanger.NewIntegerInstance(stepName, "Classification_TaxonNode", "taxonomicTree_id", "classification_id", INCLUDE_AUDIT);
|
229
|
stepList.add(columnNameChanger);
|
230
|
|
231
|
//Rename taxonomictree column in TaxonNode
|
232
|
stepName = "Rename taxonomicTree_id column in TaxonNode";
|
233
|
columnNameChanger = ColumnNameChanger.NewIntegerInstance(stepName, "TaxonNode", "taxonomicTree_id", "classification_id", INCLUDE_AUDIT);
|
234
|
stepList.add(columnNameChanger);
|
235
|
|
236
|
//Rename description_id column in SpecimenOrObservationBase_LanguageString
|
237
|
stepName = "Rename description column in SpecimenOrObservationBase_LanguageString";
|
238
|
columnNameChanger = ColumnNameChanger.NewIntegerInstance(stepName, "SpecimenOrObservationBase_LanguageString", "description_id", "definition_id", INCLUDE_AUDIT);
|
239
|
stepList.add(columnNameChanger);
|
240
|
|
241
|
//Rename description_mapkey_id column in SpecimenOrObservationBase_LanguageString
|
242
|
stepName = "Rename description column in SpecimenOrObservationBase_LanguageString";
|
243
|
columnNameChanger = ColumnNameChanger.NewIntegerInstance(stepName, "SpecimenOrObservationBase_LanguageString", "description_mapkey_id", "definition_mapkey_id", INCLUDE_AUDIT);
|
244
|
stepList.add(columnNameChanger);
|
245
|
|
246
|
//Rename derivationevent_id column in SpecimenOrObservationBase
|
247
|
stepName = "Rename derivationevent_id column in SpecimenOrObservationBase";
|
248
|
columnNameChanger = ColumnNameChanger.NewIntegerInstance(stepName, "SpecimenOrObservationBase", "derivationevent_id", "derivedfrom_id", INCLUDE_AUDIT);
|
249
|
stepList.add(columnNameChanger);
|
250
|
|
251
|
//Rename taxonName_fk column in TaxonBase
|
252
|
stepName = "Rename taxonName_fk column in TaxonBase";
|
253
|
columnNameChanger = ColumnNameChanger.NewIntegerInstance(stepName, "TaxonBase", "taxonName_fk", "name_id", INCLUDE_AUDIT);
|
254
|
stepList.add(columnNameChanger);
|
255
|
|
256
|
//Rename taxonName_fk column in DescriptionBase
|
257
|
stepName = "Rename taxonName_fk column in DescriptionBase";
|
258
|
columnNameChanger = ColumnNameChanger.NewIntegerInstance(stepName, "DescriptionBase", "taxonName_fk", "taxonName_id", INCLUDE_AUDIT);
|
259
|
stepList.add(columnNameChanger);
|
260
|
|
261
|
//Rename taxon_fk column in DescriptionBase
|
262
|
stepName = "Rename taxon_fk column in DescriptionBase";
|
263
|
columnNameChanger = ColumnNameChanger.NewIntegerInstance(stepName, "DescriptionBase", "taxon_fk", "taxon_id", INCLUDE_AUDIT);
|
264
|
stepList.add(columnNameChanger);
|
265
|
|
266
|
//Rename parent_fk column in FeatureNode
|
267
|
stepName = "Rename parent_fk column in FeatureNode";
|
268
|
columnNameChanger = ColumnNameChanger.NewIntegerInstance(stepName, "FeatureNode", "parent_fk", "parent_id", INCLUDE_AUDIT);
|
269
|
stepList.add(columnNameChanger);
|
270
|
|
271
|
//Rename polytomousKey_fk column in PolytomousKey_Taxon
|
272
|
stepName = "Rename polytomousKey_fk column in PolytomousKey_Taxon";
|
273
|
columnNameChanger = ColumnNameChanger.NewIntegerInstance(stepName, "PolytomousKey_Taxon", "polytomousKey_fk", "polytomousKey_id", INCLUDE_AUDIT);
|
274
|
stepList.add(columnNameChanger);
|
275
|
|
276
|
//Rename taxon_fk column in PolytomousKey_Taxon
|
277
|
stepName = "Rename taxon_fk column in PolytomousKey_Taxon";
|
278
|
columnNameChanger = ColumnNameChanger.NewIntegerInstance(stepName, "PolytomousKey_Taxon", "taxon_fk", "taxon_id", INCLUDE_AUDIT);
|
279
|
stepList.add(columnNameChanger);
|
280
|
|
281
|
|
282
|
//Rename mediaKey_fk column in MediaKey_Taxon
|
283
|
stepName = "Rename mediaKey_fk column in MediaKey_Taxon";
|
284
|
columnNameChanger = ColumnNameChanger.NewIntegerInstance(stepName, "MediaKey_Taxon", "mediaKey_fk", "mediaKey_id", INCLUDE_AUDIT);
|
285
|
stepList.add(columnNameChanger);
|
286
|
|
287
|
//Rename taxon_fk column in MediaKey_Taxon
|
288
|
stepName = "Rename taxon_fk column in MediaKey_Taxon";
|
289
|
columnNameChanger = ColumnNameChanger.NewIntegerInstance(stepName, "MediaKey_Taxon", "taxon_fk", "taxon_id", INCLUDE_AUDIT);
|
290
|
stepList.add(columnNameChanger);
|
291
|
|
292
|
|
293
|
//Rename multiAccessKey_fk column in MultiAccessKey_Taxon
|
294
|
stepName = "Rename multiAccessKey_fk column in MultiAccessKey_Taxon";
|
295
|
columnNameChanger = ColumnNameChanger.NewIntegerInstance(stepName, "MultiAccessKey_Taxon", "multiAccessKey_fk", "multiAccessKey_id", INCLUDE_AUDIT);
|
296
|
stepList.add(columnNameChanger);
|
297
|
|
298
|
//Rename taxon_fk column in MultiAccessKey_Taxon
|
299
|
stepName = "Rename taxon_fk column in MultiAccessKey_Taxon";
|
300
|
columnNameChanger = ColumnNameChanger.NewIntegerInstance(stepName, "MultiAccessKey_Taxon", "taxon_fk", "taxon_id", INCLUDE_AUDIT);
|
301
|
stepList.add(columnNameChanger);
|
302
|
|
303
|
//add the table hibernate_sequences
|
304
|
stepName = "Add the table hibernate_sequences to store the table specific sequences in";
|
305
|
SequenceTableCreator step = SequenceTableCreator.NewInstance(stepName);
|
306
|
stepList.add(step);
|
307
|
|
308
|
return stepList;
|
309
|
}
|
310
|
|
311
|
/* (non-Javadoc)
|
312
|
* @see eu.etaxonomy.cdm.database.update.SchemaUpdaterBase#getNextUpdater()
|
313
|
*/
|
314
|
@Override
|
315
|
public ISchemaUpdater getNextUpdater() {
|
316
|
return SchemaUpdater_30_301.NewInstance();
|
317
|
}
|
318
|
|
319
|
/* (non-Javadoc)
|
320
|
* @see eu.etaxonomy.cdm.database.update.SchemaUpdaterBase#getPreviousUpdater()
|
321
|
*/
|
322
|
@Override
|
323
|
public ISchemaUpdater getPreviousUpdater() {
|
324
|
return SchemaUpdater_24_25.NewInstance();
|
325
|
}
|
326
|
|
327
|
}
|