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