3 * Copyright (C) 2007 EDIT
4 * European Distributed Institute of Taxonomy
5 * http://www.e-taxonomy.eu
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.
11 package eu
.etaxonomy
.cdm
.database
.update
.v25_30
;
13 import java
.util
.ArrayList
;
14 import java
.util
.List
;
16 import org
.apache
.log4j
.Logger
;
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
;
34 * @created Nov 08, 2010
37 public class SchemaUpdater_25_30
extends SchemaUpdaterBase
{
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";
45 // ********************** FACTORY METHOD *******************************************
47 public static SchemaUpdater_25_30
NewInstance(){
48 return new SchemaUpdater_25_30();
52 * @param startSchemaVersion
53 * @param endSchemaVersion
55 protected SchemaUpdater_25_30() {
56 super(startSchemaVersion
, endSchemaVersion
);
60 * @see eu.etaxonomy.cdm.database.update.SchemaUpdaterBase#getUpdaterList()
63 protected List
<ISchemaUpdaterStep
> getUpdaterList() {
65 List
<ISchemaUpdaterStep
> stepList
= new ArrayList
<ISchemaUpdaterStep
>();
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
);
74 //compute feature tree column
75 stepName
= "Update feature node tree column";
76 FeatureNodeTreeColumnUpdater fntcu
= FeatureNodeTreeColumnUpdater
.NewInstance(stepName
, INCLUDE_AUDIT
);
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
);
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
);
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
);
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
);
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
);
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
);
112 stepName
= "Create PolytomousKeyNode modifying text";
113 tableCreator
= MapTableCreator
.NewMapTableInstance(stepName
, "PolytomousKeyNode", null, "LanguageString", "modifyingtext", "DefinedTermBase", SchemaUpdaterBase
.INCLUDE_AUDIT
);
114 stepList
.add(tableCreator
);
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
);
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
);
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
);
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
);
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
);
141 //Remove featureNode_representation
142 stepName
= "Remove FeatureNode_Representation MN";
143 TableDroper tableDropper
= TableDroper
.NewInstance(stepName
, "FeatureNode_Representation", INCLUDE_AUDIT
);
144 stepList
.add(tableDropper
);
148 stepName
= "Add exsiccatum to specimen";
149 ColumnAdder exsiccatumAdder
= ColumnAdder
.NewStringInstance(stepName
, "SpecimenOrObservationBase", "exsiccatum", INCLUDE_AUDIT
);
150 stepList
.add(exsiccatumAdder
);
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
);
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
);
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
);
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
);
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
);
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
);
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
);
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
);
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
);
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
);
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
);
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
);
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
);
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
);
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
);
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
);
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
);
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
);
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
);
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
);
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
);
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
);
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
);
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
);
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
);
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
);
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
);
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
);
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
);
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
);
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
);
313 * @see eu.etaxonomy.cdm.database.update.SchemaUpdaterBase#getNextUpdater()
316 public ISchemaUpdater
getNextUpdater() {
321 * @see eu.etaxonomy.cdm.database.update.SchemaUpdaterBase#getPreviousUpdater()
324 public ISchemaUpdater
getPreviousUpdater() {
325 return SchemaUpdater_24_25
.NewInstance();