ref #9327 add first version of update script for v5.22 with update for secSource
authorAndreas Müller <a.mueller@bgbm.org>
Mon, 15 Mar 2021 21:06:32 +0000 (22:06 +0100)
committerAndreas Müller <a.mueller@bgbm.org>
Mon, 15 Mar 2021 21:10:36 +0000 (22:10 +0100)
cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/metadata/CdmMetaData.java
cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/database/update/v518_522/SchemaUpdater_5186_5220.java [new file with mode: 0644]

index 6aa13884b71172999f24b8b884c4d47aadf095ac..3173602f8648402c59174e61d384feb858bcb1e6 100644 (file)
@@ -66,7 +66,8 @@ public class CdmMetaData extends CdmBase{
         V_05_18_03("5.18.3.0.20200924"),
         V_05_18_04("5.18.4.0.20201020"),
         V_05_18_05("5.18.5.0.20201103"),
-        V_05_18_06("5.18.6.0.20201124")
+        V_05_18_06("5.18.6.0.20201124"),
+        V_05_22_00("5.22.0.0.20210315")
         ;
         private String versionString;
            private CdmVersion(String versionString){
diff --git a/cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/database/update/v518_522/SchemaUpdater_5186_5220.java b/cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/database/update/v518_522/SchemaUpdater_5186_5220.java
new file mode 100644 (file)
index 0000000..92f88ad
--- /dev/null
@@ -0,0 +1,104 @@
+/**
+ * Copyright (C) 2007 EDIT
+ * European Distributed Institute of Taxonomy
+ * http://www.e-taxonomy.eu
+ *
+ * The contents of this file are subject to the Mozilla Public License Version 1.1
+ * See LICENSE.TXT at the top of this package for the full license terms.
+ */
+package eu.etaxonomy.cdm.database.update.v518_522;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.log4j.Logger;
+
+import eu.etaxonomy.cdm.database.update.ColumnAdder;
+import eu.etaxonomy.cdm.database.update.ISchemaUpdater;
+import eu.etaxonomy.cdm.database.update.ISchemaUpdaterStep;
+import eu.etaxonomy.cdm.database.update.SchemaUpdaterBase;
+import eu.etaxonomy.cdm.database.update.SimpleSchemaUpdaterStep;
+import eu.etaxonomy.cdm.database.update.v512_515.Reference2SourceMover;
+import eu.etaxonomy.cdm.database.update.v515_518.SchemaUpdater_5185_5186;
+import eu.etaxonomy.cdm.model.metadata.CdmMetaData.CdmVersion;
+
+/**
+ * @author a.mueller
+ * @date 02.09.2020
+ */
+public class SchemaUpdater_5186_5220 extends SchemaUpdaterBase {
+
+       @SuppressWarnings("unused")
+       private static final Logger logger = Logger.getLogger(SchemaUpdater_5186_5220.class);
+
+       private static final CdmVersion startSchemaVersion = CdmVersion.V_05_18_06;
+       private static final CdmVersion endSchemaVersion = CdmVersion.V_05_22_00;
+
+// ********************** FACTORY METHOD *************************************
+
+       public static SchemaUpdater_5186_5220 NewInstance() {
+               return new SchemaUpdater_5186_5220();
+       }
+
+       protected SchemaUpdater_5186_5220() {
+               super(startSchemaVersion.versionString(), endSchemaVersion.versionString());
+       }
+
+       @Override
+       protected List<ISchemaUpdaterStep> getUpdaterList() {
+
+               String stepName;
+               String tableName;
+
+               List<ISchemaUpdaterStep> stepList = new ArrayList<>();
+
+           //9327
+        //move nomenclatural reference to nomenclatural source
+        stepName = "move secundum reference to secundum source";
+        tableName = "TaxonBase";
+        String referenceColumnName = "sec_id";
+        String microReferenceColumnName = "secMicroReference";
+        String sourceColumnName = "secSource_id";
+        String sourceType = "SEC";
+        String dtype = "SecundumSource";
+        Reference2SourceMover.NewInstance(stepList, stepName, tableName, referenceColumnName, microReferenceColumnName, sourceColumnName, dtype, sourceType);
+
+//      //9327
+        stepName = "Add sourcedTaxon column to SecundumSource";
+        tableName = "OriginalSourceBase";
+        String newColumnName = "sourcedTaxon_id";
+        String referencedTable = "TaxonBase";
+        //TODO handle NotNull
+        ColumnAdder.NewIntegerInstance(stepList, stepName, tableName, newColumnName, INCLUDE_AUDIT, !NOT_NULL, referencedTable);
+
+        String sql = "UPDATE @@OriginalSourceBase@@ "
+             + " SET sourcedTaxon_id = (SELECT tb.id "
+             + "         FROM @@TaxonBase@@ tb WHERE tb.secSource_id = @@OriginalSourceBase@@.id) "
+             + " WHERE EXISTS ( "
+             + "       SELECT * "
+             + "       FROM @@TaxonBase@@ tb "
+             + "       WHERE tb.secSource_id = @@OriginalSourceBase@@.id)";
+        String sql_aud = "UPDATE @@OriginalSourceBase_AUD@@ "
+                 + " SET sourcedTaxon_id = (SELECT tb.id "
+                 + "         FROM @@TaxonBase_AUD@@ tb WHERE tb.secSource_id = @@OriginalSourceBase_AUD@@.id) "
+                 + " WHERE EXISTS ( "
+                 + "       SELECT * "
+                 + "       FROM @@TaxonBase_AUD@@ tb "
+                 + "       WHERE tb.secSource_id = @@OriginalSourceBase_AUD@@.id)";
+        SimpleSchemaUpdaterStep.NewAuditedInstance(stepList, stepName, sql, sql_aud, -99);
+
+
+        return stepList;
+    }
+
+
+    @Override
+    public ISchemaUpdater getPreviousUpdater() {
+        return SchemaUpdater_5185_5186.NewInstance();
+    }
+
+    @Override
+       public ISchemaUpdater getNextUpdater() {
+               return null;
+       }
+}