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