ref #9322 remove invalid designation relationship from cdmlib
[cdmlib.git] / cdmlib-persistence / src / main / java / eu / etaxonomy / cdm / database / update / v515_518 / SchemaUpdater_5185_5186.java
1 /**
2 * Copyright (C) 2007 EDIT
3 * European Distributed Institute of Taxonomy
4 * http://www.e-taxonomy.eu
5 *
6 * The contents of this file are subject to the Mozilla Public License Version 1.1
7 * See LICENSE.TXT at the top of this package for the full license terms.
8 */
9 package eu.etaxonomy.cdm.database.update.v515_518;
10
11 import java.util.ArrayList;
12 import java.util.List;
13
14 import org.apache.log4j.Logger;
15
16 import eu.etaxonomy.cdm.database.update.ISchemaUpdater;
17 import eu.etaxonomy.cdm.database.update.ISchemaUpdaterStep;
18 import eu.etaxonomy.cdm.database.update.SchemaUpdaterBase;
19 import eu.etaxonomy.cdm.database.update.SimpleSchemaUpdaterStep;
20 import eu.etaxonomy.cdm.database.update.SingleTermRemover;
21 import eu.etaxonomy.cdm.model.metadata.CdmMetaData.CdmVersion;
22
23 /**
24 * @author a.mueller
25 * @date 24.11.2020
26 */
27 public class SchemaUpdater_5185_5186 extends SchemaUpdaterBase {
28
29 @SuppressWarnings("unused")
30 private static final Logger logger = Logger.getLogger(SchemaUpdater_5185_5186.class);
31
32 private static final CdmVersion startSchemaVersion = CdmVersion.V_05_18_05;
33 //FIXME
34 private static final CdmVersion endSchemaVersion = CdmVersion.V_05_18_05;
35
36 // ********************** FACTORY METHOD *************************************
37
38 public static SchemaUpdater_5185_5186 NewInstance() {
39 return new SchemaUpdater_5185_5186();
40 }
41
42 protected SchemaUpdater_5185_5186() {
43 super(startSchemaVersion.versionString(), endSchemaVersion.versionString());
44 }
45
46 @Override
47 protected List<ISchemaUpdaterStep> getUpdaterList() {
48
49 List<ISchemaUpdaterStep> stepList = new ArrayList<>();
50
51 adaptNomenclaturalStanding(stepList);
52
53 //#9322 remove Invalid Designation taxon relationship
54 String stepName = "remove invalid designation taxon relationship type";
55 String uuidTerm = "605b1d01-f2b1-4544-b2e0-6f08def3d6ed";
56 String checkUsedQueries = "SELECT count(*) FROM @@TaxonRelationship@@ tr "
57 + " INNER JOIN @@DefinedTermBase@@ trType ON trType.id = tr.type_id "
58 + " WHERE trType.uuid = '605b1d01-f2b1-4544-b2e0-6f08def3d6ed'";
59 SingleTermRemover.NewInstance(stepList, stepName, uuidTerm, checkUsedQueries, -99);
60
61 return stepList;
62 }
63
64 private void adaptNomenclaturalStanding(List<ISchemaUpdaterStep> stepList) {
65
66 //OTHER DESIGNATIONS
67 String stepName = "Set nom status and name relationship types to OTHER DESIGNATIONS where appropriate";
68 String nonAuditedTableName = "DefinedTermBase";
69 String defaultQuery = "UPDATE @@DefinedTermBase@@ "
70 + " SET nomenclaturalStanding = 'NO' "
71 + " WHERE uuid IN ( "
72 + " '24955174-aa5c-4e71-a2fd-3efc79e885db'" //status nom. confus.
73 + " ,'90f5012b-705b-4488-b4c6-002d2bc5198e'" //status nom. ambig.
74 + " ) ";
75 SimpleSchemaUpdaterStep.NewAuditedInstance(stepList, stepName, defaultQuery, nonAuditedTableName, -99);
76 }
77
78 @Override
79 public ISchemaUpdater getPreviousUpdater() {
80 return SchemaUpdater_5184_5185.NewInstance();
81 }
82
83 @Override
84 public ISchemaUpdater getNextUpdater() {
85 return null;
86 }
87 }