minor
[cdmlib.git] / cdmlib-persistence / src / main / java / eu / etaxonomy / cdm / database / update / v31_33 / SchemaUpdater_33_331.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.v31_33;
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.ISchemaUpdater;
20 import eu.etaxonomy.cdm.database.update.ISchemaUpdaterStep;
21 import eu.etaxonomy.cdm.database.update.SchemaUpdaterBase;
22 import eu.etaxonomy.cdm.database.update.SimpleSchemaUpdaterStep;
23 import eu.etaxonomy.cdm.database.update.TableDroper;
24 import eu.etaxonomy.cdm.database.update.TreeIndexUpdater;
25
26 /**
27 * @author a.mueller
28 * @created Jan 14, 2014
29 */
30 public class SchemaUpdater_33_331 extends SchemaUpdaterBase {
31
32 @SuppressWarnings("unused")
33 private static final Logger logger = Logger.getLogger(SchemaUpdater_33_331.class);
34 private static final String startSchemaVersion = "3.3.0.0.201309240000";
35 private static final String endSchemaVersion = "3.3.1.0.201401140000";
36
37 // ********************** FACTORY METHOD
38 // *******************************************
39
40 public static SchemaUpdater_33_331 NewInstance() {
41 return new SchemaUpdater_33_331();
42 }
43
44 /**
45 * @param startSchemaVersion
46 * @param endSchemaVersion
47 */
48 protected SchemaUpdater_33_331() {
49 super(startSchemaVersion, endSchemaVersion);
50 }
51
52 @Override
53 protected List<ISchemaUpdaterStep> getUpdaterList() {
54
55 String stepName;
56 String tableName;
57 ISchemaUpdaterStep step;
58 String columnName;
59
60 List<ISchemaUpdaterStep> stepList = new ArrayList<ISchemaUpdaterStep>();
61
62 //add rootnode column for classification
63 stepName = "Add root node foreign key column to classification";
64 tableName = "Classification";
65 columnName = "rootnode_id";
66 String referencedTable = "TaxonNode";
67 step = ColumnAdder.NewIntegerInstance(stepName, tableName, columnName, INCLUDE_AUDIT, false, referencedTable);
68 stepList.add(step);
69
70 //update rootnode data for classification
71 step = ClassificationRootNodeUpdater.NewInstance();
72 stepList.add(step);
73
74 // update treeindex for taxon nodes
75 stepName = "Update TaxonNode treeindex";
76 tableName = "TaxonNode";
77 String treeIdColumnName = "classification_id";
78 columnName = "treeIndex";
79 step = TreeIndexUpdater.NewInstance(stepName, tableName,
80 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)
81 stepList.add(step);
82
83 // Drop Classification_TaxonNode table
84 stepName = "Drop Classification_TaxonNode table";
85 tableName = "Classification_TaxonNode";
86 step = TableDroper.NewInstance(stepName, tableName, INCLUDE_AUDIT);
87 stepList.add(step);
88
89 //add rootnode column for classification
90 stepName = "Add unknownData column to DescriptionElementBase";
91 tableName = "DescriptionElementBase";
92 columnName = "unknownData";
93 Boolean defaultValue = null;
94 step = ColumnAdder.NewBooleanInstance(stepName, tableName, columnName, INCLUDE_AUDIT, defaultValue);
95 stepList.add(step);
96
97 //set default value to false where adaquate
98 stepName = "Set unknownData to default value (false)";
99 String query = " UPDATE @@DescriptionElementBase@@ " +
100 " SET unknownData = @FALSE@ " +
101 " WHERE DTYPE IN ('CategoricalData', 'QuantitativeData') ";
102 step = SimpleSchemaUpdaterStep.NewAuditedInstance(stepName, query, "DescriptionElementBase", 99);
103 stepList.add(step);
104
105
106 return stepList;
107
108 }
109
110 @Override
111 public ISchemaUpdater getNextUpdater() {
112 return null;
113 }
114
115 @Override
116 public ISchemaUpdater getPreviousUpdater() {
117 return SchemaUpdater_31_33.NewInstance();
118 }
119
120 }