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.v24_30;
|
11
|
|
12
|
import java.util.ArrayList;
|
13
|
import java.util.List;
|
14
|
|
15
|
import org.apache.logging.log4j.LogManager;import org.apache.logging.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.TableDropper;
|
27
|
import eu.etaxonomy.cdm.database.update.TableNameChanger;
|
28
|
|
29
|
|
30
|
/**
|
31
|
* @author a.mueller
|
32
|
* @since Nov 08, 2010
|
33
|
*/
|
34
|
public class SchemaUpdater_25_30 extends SchemaUpdaterBase {
|
35
|
|
36
|
|
37
|
@SuppressWarnings("unused")
|
38
|
private static final Logger logger = LogManager.getLogger(SchemaUpdater_25_30.class);
|
39
|
private static final String startSchemaVersion = "2.5.0.0.201009211255";
|
40
|
private static final String endSchemaVersion = "3.0.0.0.201011090000";
|
41
|
|
42
|
// ********************** FACTORY METHOD *******************************************
|
43
|
|
44
|
public static SchemaUpdater_25_30 NewInstance(){
|
45
|
return new SchemaUpdater_25_30();
|
46
|
}
|
47
|
|
48
|
/**
|
49
|
* @param startSchemaVersion
|
50
|
* @param endSchemaVersion
|
51
|
*/
|
52
|
protected SchemaUpdater_25_30() {
|
53
|
super(startSchemaVersion, endSchemaVersion);
|
54
|
}
|
55
|
|
56
|
@Override
|
57
|
protected List<ISchemaUpdaterStep> getUpdaterList() {
|
58
|
|
59
|
List<ISchemaUpdaterStep> stepList = new ArrayList<>();
|
60
|
String stepName;
|
61
|
|
62
|
//add feature tree attribute to feature node table
|
63
|
stepName = "Add feature tree addtribue to feature node";
|
64
|
//TODO defaultValue & not null
|
65
|
ColumnAdder.NewIntegerInstance(stepList, stepName, "FeatureNode", "FeatureTree_id", INCLUDE_AUDIT, false, "FeatureTree");
|
66
|
|
67
|
//compute feature tree column
|
68
|
stepName = "Update feature node tree column";
|
69
|
FeatureNodeTreeColumnUpdater fntcu = FeatureNodeTreeColumnUpdater.NewInstance(stepList, stepName, INCLUDE_AUDIT);
|
70
|
|
71
|
//Key statement
|
72
|
stepName = "Create KeyStatement tables";
|
73
|
TableCreator.NewInstance(stepList, stepName, "KeyStatement", new String[]{}, new String[]{}, new String[]{}, INCLUDE_AUDIT, INCLUDE_CDM_BASE);
|
74
|
|
75
|
//KeyStatement_LanguageString
|
76
|
stepName = "Create KeyStatement label";
|
77
|
MapTableCreator.NewMapTableInstance(stepList, stepName, "KeyStatement", null, "LanguageString", "label", "DefinedTermBase", SchemaUpdaterBase.INCLUDE_AUDIT);
|
78
|
|
79
|
|
80
|
//PolytomousKey
|
81
|
stepName = "Create PolytomousKey tables";
|
82
|
TableCreator.NewIdentifiableInstance(stepList, stepName, "PolytomousKey", new String[]{"root_id"}, new String[]{"int"}, new String[]{"PolytomousKeyNode"}, INCLUDE_AUDIT);
|
83
|
|
84
|
//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
|
85
|
TableCreator.NewInstance(stepList, 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)
|
86
|
.setPrimaryKeyParams("REV, parent_id, id, sortIndex", null)
|
87
|
.setUniqueParams(null, null);
|
88
|
|
89
|
//covered taxa
|
90
|
stepName= "Add polytomous key covered taxa";
|
91
|
MnTableCreator.NewMnInstance(stepList, stepName, "PolytomousKey", null, "TaxonBase", null, "coveredtaxa", SchemaUpdaterBase.INCLUDE_AUDIT, false, false);
|
92
|
|
93
|
//Polytomous key node
|
94
|
stepName = "Create PolytomousKeyNode tables";
|
95
|
TableCreator.NewInstance(stepList, 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);
|
96
|
|
97
|
//modifying text
|
98
|
stepName = "Create PolytomousKeyNode modifying text";
|
99
|
MapTableCreator.NewMapTableInstance(stepList, stepName, "PolytomousKeyNode", null, "LanguageString", "modifyingtext", "DefinedTermBase", SchemaUpdaterBase.INCLUDE_AUDIT);
|
100
|
|
101
|
//rename named area featureTree_id
|
102
|
stepName = "Rename polytomouskey_namedarea.featureTree_id -> polytomouskey_id";
|
103
|
ColumnNameChanger.NewIntegerInstance(stepList, stepName, "PolytomousKey_NamedArea", "FeatureTree_id", "PolytomousKey_id", INCLUDE_AUDIT);
|
104
|
|
105
|
//rename polytomouskey_scope featureTree_id
|
106
|
stepName = "Rename polytomouskey_scope.featureTree_id -> polytomouskey_id";
|
107
|
ColumnNameChanger.NewIntegerInstance(stepList, stepName, "PolytomousKey_Scope", "FeatureTree_id", "PolytomousKey_id", INCLUDE_AUDIT);
|
108
|
|
109
|
//move PolytomousKey data to new tables
|
110
|
stepName = "Move polytomous key data from feature tree to polytomous key";
|
111
|
PolytomousKeyDataMover dataMover = PolytomousKeyDataMover.NewInstance(stepList, stepName, INCLUDE_AUDIT);
|
112
|
|
113
|
//remove DTYPE from feature node
|
114
|
stepName = "Remove feature tree DTYPE column";
|
115
|
ColumnRemover.NewInstance(stepList, stepName, "FeatureTree", "DTYPE", INCLUDE_AUDIT);
|
116
|
|
117
|
//remove feature node taxon column
|
118
|
stepName = "Remove feature node taxon column";
|
119
|
ColumnRemover.NewInstance(stepList, stepName, "FeatureNode", "taxon_id", INCLUDE_AUDIT);
|
120
|
|
121
|
//Remove featureNode_representation
|
122
|
stepName = "Remove FeatureNode_Representation MN";
|
123
|
TableDropper.NewInstance(stepList, stepName, "FeatureNode_Representation", INCLUDE_AUDIT);
|
124
|
|
125
|
//add exsiccatum
|
126
|
stepName = "Add exsiccatum to specimen";
|
127
|
ColumnAdder.NewStringInstance(stepList, stepName, "SpecimenOrObservationBase", "exsiccatum", INCLUDE_AUDIT);
|
128
|
|
129
|
//add primary collector
|
130
|
stepName = "Add primary collector to field unit";
|
131
|
ColumnAdder.NewIntegerInstance(stepList, stepName, "SpecimenOrObservationBase", "primaryCollector_id", INCLUDE_AUDIT, false, "AgentBase");
|
132
|
|
133
|
//taxonomic tree -> classification
|
134
|
stepName = "Rename taxonomic tree to classification";
|
135
|
TableNameChanger.NewInstance(stepList, stepName, "TaxonomicTree", "Classification", INCLUDE_AUDIT);
|
136
|
|
137
|
//TaxonomicTree_Annotation -> classification_Annotation
|
138
|
stepName = "Rename TaxonomicTree_Annotation to Classification_Annotation";
|
139
|
TableNameChanger.NewInstance(stepList, stepName, "TaxonomicTree_Annotation", "Classification_Annotation", INCLUDE_AUDIT);
|
140
|
|
141
|
stepName = "Rename taxonomicTree_id column in Classification_Annotation";
|
142
|
ColumnNameChanger.NewIntegerInstance(stepList, stepName, "Classification_Annotation", "taxonomicTree_id", "classification_id", INCLUDE_AUDIT);
|
143
|
|
144
|
|
145
|
//TaxonomicTree_Credit -> classification_Credit
|
146
|
stepName = "Rename TaxonomicTree_Credit to Classification_Credit";
|
147
|
TableNameChanger.NewInstance(stepList, stepName, "TaxonomicTree_Credit", "Classification_Credit", INCLUDE_AUDIT);
|
148
|
|
149
|
stepName = "Rename taxonomicTree_id column in Classification_Credit";
|
150
|
ColumnNameChanger.NewIntegerInstance(stepList, stepName, "Classification_Credit", "taxonomicTree_id", "classification_id", INCLUDE_AUDIT);
|
151
|
|
152
|
//TaxonomicTree_Extension -> classification_Extension
|
153
|
stepName = "Rename TaxonomicTree_Extension to Classification_Extension";
|
154
|
TableNameChanger.NewInstance(stepList, stepName, "TaxonomicTree_Extension", "Classification_Extension", INCLUDE_AUDIT);
|
155
|
|
156
|
stepName = "Rename taxonomicTree_id column in Classification_Extension";
|
157
|
ColumnNameChanger.NewIntegerInstance(stepList, stepName, "Classification_Extension", "taxonomicTree_id", "classification_id", INCLUDE_AUDIT);
|
158
|
|
159
|
|
160
|
//TaxonomicTree_Marker -> classification_Marker
|
161
|
stepName = "Rename TaxonomicTree_Marker to Classification_Marker";
|
162
|
TableNameChanger.NewInstance(stepList, stepName, "TaxonomicTree_Marker", "Classification_Marker", INCLUDE_AUDIT);
|
163
|
|
164
|
stepName = "Rename taxonomicTree_id column in Classification_Marker";
|
165
|
ColumnNameChanger.NewIntegerInstance(stepList, stepName, "Classification_Marker", "taxonomicTree_id", "classification_id", INCLUDE_AUDIT);
|
166
|
|
167
|
|
168
|
//TaxonomicTree_OriginalSourceBase -> classification_OriginalSourceBase
|
169
|
stepName = "Rename TaxonomicTree_OriginalSourceBase to Classification_OriginalSourceBase";
|
170
|
TableNameChanger.NewInstance(stepList, stepName, "TaxonomicTree_OriginalSourceBase", "Classification_OriginalSourceBase", INCLUDE_AUDIT);
|
171
|
|
172
|
stepName = "Rename taxonomicTree_id column in Classification_OriginalSourceBase";
|
173
|
ColumnNameChanger.NewIntegerInstance(stepList, stepName, "Classification_OriginalSourceBase", "taxonomicTree_id", "classification_id", INCLUDE_AUDIT);
|
174
|
|
175
|
|
176
|
//TaxonomicTree_Rights -> classification_Rights
|
177
|
stepName = "Rename TaxonomicTree_Rights to Classification_Rights";
|
178
|
TableNameChanger.NewInstance(stepList, stepName, "TaxonomicTree_Rights", "Classification_Rights", INCLUDE_AUDIT);
|
179
|
|
180
|
stepName = "Rename taxonomicTree_id column in Classification_Rights";
|
181
|
ColumnNameChanger.NewIntegerInstance(stepList, stepName, "Classification_Rights", "taxonomicTree_id", "classification_id", INCLUDE_AUDIT);
|
182
|
|
183
|
|
184
|
//TaxonomicTree_TaxonNode -> classification_TaxonNode
|
185
|
stepName = "Rename TaxonomicTree_TaxonNode to Classification_TaxonNode";
|
186
|
TableNameChanger.NewInstance(stepList, stepName, "TaxonomicTree_TaxonNode", "Classification_TaxonNode", INCLUDE_AUDIT);
|
187
|
|
188
|
stepName = "Rename taxonomicTree_id column in Classification_TaxonNode";
|
189
|
ColumnNameChanger.NewIntegerInstance(stepList, stepName, "Classification_TaxonNode", "taxonomicTree_id", "classification_id", INCLUDE_AUDIT);
|
190
|
|
191
|
//Rename taxonomictree column in TaxonNode
|
192
|
stepName = "Rename taxonomicTree_id column in TaxonNode";
|
193
|
ColumnNameChanger.NewIntegerInstance(stepList, stepName, "TaxonNode", "taxonomicTree_id", "classification_id", INCLUDE_AUDIT);
|
194
|
|
195
|
//Rename description_id column in SpecimenOrObservationBase_LanguageString
|
196
|
stepName = "Rename description column in SpecimenOrObservationBase_LanguageString";
|
197
|
ColumnNameChanger.NewIntegerInstance(stepList, stepName, "SpecimenOrObservationBase_LanguageString", "description_id", "definition_id", INCLUDE_AUDIT);
|
198
|
|
199
|
//Rename description_mapkey_id column in SpecimenOrObservationBase_LanguageString
|
200
|
stepName = "Rename description column in SpecimenOrObservationBase_LanguageString";
|
201
|
ColumnNameChanger.NewIntegerInstance(stepList, stepName, "SpecimenOrObservationBase_LanguageString", "description_mapkey_id", "definition_mapkey_id", INCLUDE_AUDIT);
|
202
|
|
203
|
//Rename derivationevent_id column in SpecimenOrObservationBase
|
204
|
stepName = "Rename derivationevent_id column in SpecimenOrObservationBase";
|
205
|
ColumnNameChanger.NewIntegerInstance(stepList, stepName, "SpecimenOrObservationBase", "derivationevent_id", "derivedfrom_id", INCLUDE_AUDIT);
|
206
|
|
207
|
//Rename taxonName_fk column in TaxonBase
|
208
|
stepName = "Rename taxonName_fk column in TaxonBase";
|
209
|
ColumnNameChanger.NewIntegerInstance(stepList, stepName, "TaxonBase", "taxonName_fk", "name_id", INCLUDE_AUDIT);
|
210
|
|
211
|
//Rename taxonName_fk column in DescriptionBase
|
212
|
stepName = "Rename taxonName_fk column in DescriptionBase";
|
213
|
ColumnNameChanger.NewIntegerInstance(stepList, stepName, "DescriptionBase", "taxonName_fk", "taxonName_id", INCLUDE_AUDIT);
|
214
|
|
215
|
//Rename taxon_fk column in DescriptionBase
|
216
|
stepName = "Rename taxon_fk column in DescriptionBase";
|
217
|
ColumnNameChanger.NewIntegerInstance(stepList, stepName, "DescriptionBase", "taxon_fk", "taxon_id", INCLUDE_AUDIT);
|
218
|
|
219
|
//Rename parent_fk column in FeatureNode
|
220
|
stepName = "Rename parent_fk column in FeatureNode";
|
221
|
ColumnNameChanger.NewIntegerInstance(stepList, stepName, "FeatureNode", "parent_fk", "parent_id", INCLUDE_AUDIT);
|
222
|
|
223
|
//Rename polytomousKey_fk column in PolytomousKey_Taxon
|
224
|
stepName = "Rename polytomousKey_fk column in PolytomousKey_Taxon";
|
225
|
ColumnNameChanger.NewIntegerInstance(stepList, stepName, "PolytomousKey_Taxon", "polytomousKey_fk", "polytomousKey_id", INCLUDE_AUDIT);
|
226
|
|
227
|
//Rename taxon_fk column in PolytomousKey_Taxon
|
228
|
stepName = "Rename taxon_fk column in PolytomousKey_Taxon";
|
229
|
ColumnNameChanger.NewIntegerInstance(stepList, stepName, "PolytomousKey_Taxon", "taxon_fk", "taxon_id", INCLUDE_AUDIT);
|
230
|
|
231
|
|
232
|
//Rename mediaKey_fk column in MediaKey_Taxon
|
233
|
stepName = "Rename mediaKey_fk column in MediaKey_Taxon";
|
234
|
ColumnNameChanger.NewIntegerInstance(stepList, stepName, "MediaKey_Taxon", "mediaKey_fk", "mediaKey_id", INCLUDE_AUDIT);
|
235
|
|
236
|
//Rename taxon_fk column in MediaKey_Taxon
|
237
|
stepName = "Rename taxon_fk column in MediaKey_Taxon";
|
238
|
ColumnNameChanger.NewIntegerInstance(stepList, stepName, "MediaKey_Taxon", "taxon_fk", "taxon_id", INCLUDE_AUDIT);
|
239
|
|
240
|
|
241
|
//Rename multiAccessKey_fk column in MultiAccessKey_Taxon
|
242
|
stepName = "Rename multiAccessKey_fk column in MultiAccessKey_Taxon";
|
243
|
ColumnNameChanger.NewIntegerInstance(stepList, stepName, "MultiAccessKey_Taxon", "multiAccessKey_fk", "multiAccessKey_id", INCLUDE_AUDIT);
|
244
|
|
245
|
//Rename taxon_fk column in MultiAccessKey_Taxon
|
246
|
stepName = "Rename taxon_fk column in MultiAccessKey_Taxon";
|
247
|
ColumnNameChanger.NewIntegerInstance(stepList, stepName, "MultiAccessKey_Taxon", "taxon_fk", "taxon_id", INCLUDE_AUDIT);
|
248
|
|
249
|
//add the table hibernate_sequences
|
250
|
stepName = "Add the table hibernate_sequences to store the table specific sequences in";
|
251
|
SequenceTableCreator.NewInstance(stepList, stepName);
|
252
|
|
253
|
return stepList;
|
254
|
}
|
255
|
|
256
|
@Override
|
257
|
public ISchemaUpdater getPreviousUpdater() {
|
258
|
return SchemaUpdater_24_25.NewInstance();
|
259
|
}
|
260
|
|
261
|
}
|