Add base structure for model update to 4.0
authorAndreas Müller <a.mueller@bgbm.org>
Sat, 16 Apr 2016 00:04:52 +0000 (02:04 +0200)
committerAndreas Müller <a.mueller@bgbm.org>
Thu, 28 Apr 2016 13:47:03 +0000 (15:47 +0200)
cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/metadata/CdmMetaData.java
cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/database/update/CdmUpdater.java
cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/database/update/v35_36/SchemaUpdater_35_36.java
cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/database/update/v35_36/TermUpdater_35_36.java
cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/database/update/v36_40/SchemaUpdater_36_40.java [new file with mode: 0644]
cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/database/update/v36_40/TermUpdater_36_40.java [new file with mode: 0644]

index 9a399c67e6f7feac54e2896142d7be5d6868ad0e..4223b6e32d2af526e7998bcf1b68d0f21bd59a89 100644 (file)
-// $Id$\r
-/**\r
-* Copyright (C) 2007 EDIT\r
-* European Distributed Institute of Taxonomy \r
-* http://www.e-taxonomy.eu\r
-* \r
-* The contents of this file are subject to the Mozilla Public License Version 1.1\r
-* See LICENSE.TXT at the top of this package for the full license terms.\r
-*/\r
-\r
-package eu.etaxonomy.cdm.model.metadata;\r
-\r
-import java.util.ArrayList;\r
-import java.util.Comparator;\r
-import java.util.List;\r
-\r
-import javax.persistence.Entity;\r
-\r
-import org.apache.log4j.Logger;\r
-import org.joda.time.DateTime;\r
-\r
-import eu.etaxonomy.cdm.common.monitor.IProgressMonitor;\r
-import eu.etaxonomy.cdm.model.common.CdmBase;\r
-\r
-/**\r
- * @author a.mueller\r
- * @created 07.09.2009\r
- */\r
-@Entity\r
-public class CdmMetaData extends CdmBase{\r
-       private static final long serialVersionUID = -3033376680593279078L;\r
-       @SuppressWarnings("unused")\r
-       private static final Logger logger = Logger.getLogger(CdmMetaData.class);\r
-\r
-       /* It is a little bit confusing that this specific information is located in\r
-        * a generic class for metadata. Think about moving the schema version \r
-        *  \r
-        */\r
-       /**\r
-        * The database schema version number.\r
-        * It is recommended to have the first two numbers equal to the CDM Library version number.\r
-        * But it is not obligatory as there may be cases when the library number changes but the\r
-        * schema version is not changing.\r
-        * The third should be incremented if the schema changes in a way that SCHEMA_VALIDATION.UPDATE\r
-        * will probably not work or will not be enough to transform old data into new data.\r
-        * The fourth number should be incremented when minor schema changes take place that can\r
-        * be handled by SCHEMA_VALIDATION.UPDATE\r
-        * The last number represents the date of change.\r
-        */\r
-       private static final String dbSchemaVersion = "3.6.0.0.201527040000";\r
-//     private static final String dbSchemaVersion = "3.4.1.0.201411210000";\r
-//     private static final String dbSchemaVersion = "3.5.0.0.201531030000";\r
-       \r
-\r
-       \r
-       \r
-\r
-       /**\r
-        * @return a list of default metadata objects \r
-        */\r
-       public static final List<CdmMetaData> defaultMetaData(){\r
-               List<CdmMetaData> result = new ArrayList<CdmMetaData>();\r
-               // schema version\r
-               result.add(new CdmMetaData(MetaDataPropertyName.DB_SCHEMA_VERSION, dbSchemaVersion));\r
-               //term version\r
-               result.add(new CdmMetaData(MetaDataPropertyName.TERMS_VERSION, termsVersion));\r
-               // database create time\r
-               result.add(new CdmMetaData(MetaDataPropertyName.DB_CREATE_DATE, new DateTime().toString()));\r
-               return result;  \r
-       }\r
-       \r
-       /**\r
-        * The version number for the terms loaded by the termloader (csv-files)\r
-        * It is recommended to have the first two numbers equal to the CDM Library version number.\r
-        * \r
-        * But it is not obligatory as there may be cases when the library number changes but the\r
-        * schema version is not changing.\r
-        * \r
-        * The third should be incremented if the terms change in a way that is not compatible\r
-        * to the previous version (e.g. by changing the type of a term)\r
-        * \r
-        * The fourth number should be incremented when compatible term changes take place\r
-        * (e.g. when new terms were added)\r
-        * \r
-        * The last number represents the date of change.\r
-        */\r
-       private static final String termsVersion = "3.6.0.0.201527040000";\r
-//     private static final String termsVersion = "3.5.0.0.201531030000";\r
-       \r
-       \r
-       public enum MetaDataPropertyName{\r
-               DB_SCHEMA_VERSION,\r
-               TERMS_VERSION,\r
-               DB_CREATE_DATE,\r
-               DB_CREATE_NOTE;\r
-               \r
-               public String getSqlQuery(){\r
-                       return "SELECT value FROM CdmMetaData WHERE propertyname=" + this.ordinal();\r
-               }\r
-       }\r
-       \r
-       /* END OF CONFUSION */\r
-       private MetaDataPropertyName propertyName;\r
-       private String value;\r
-\r
-       \r
-       /**\r
-        * Method to retrieve a CDM Libraries meta data\r
-        * @return\r
-        */\r
-       public static final List<CdmMetaData> propertyList(){\r
-               List<CdmMetaData> result = new ArrayList<CdmMetaData>();\r
-               result.add(new CdmMetaData(MetaDataPropertyName.DB_SCHEMA_VERSION, dbSchemaVersion));\r
-               result.add(new CdmMetaData(MetaDataPropertyName.TERMS_VERSION, termsVersion));\r
-               result.add(new CdmMetaData(MetaDataPropertyName.DB_CREATE_DATE, new DateTime().toString()));\r
-               return result;\r
-       }\r
-\r
-//********************* Constructor *********************************************/     \r
-\r
-       /**\r
-        * Simple constructor to be used by Spring\r
-        */\r
-       protected CdmMetaData(){\r
-               super();\r
-       }\r
-\r
-       public CdmMetaData(MetaDataPropertyName propertyName, String value) {\r
-               super();\r
-               this.propertyName = propertyName;\r
-               this.value = value;\r
-       }\r
-\r
-//****************** instance methods ****************************************/        \r
-       \r
-       /**\r
-        * @return the propertyName\r
-        */\r
-       public MetaDataPropertyName getPropertyName() {\r
-               return propertyName;\r
-       }\r
-\r
-       /**\r
-        * @param propertyName the propertyName to set\r
-        */\r
-       public void setPropertyName(MetaDataPropertyName propertyName) {\r
-               this.propertyName = propertyName;\r
-       }\r
-\r
-       /**\r
-        * @return the value\r
-        */\r
-       public String getValue() {\r
-               return value;\r
-       }\r
-\r
-       /**\r
-        * @param value the value to set\r
-        */\r
-       public void setValue(String value) {\r
-               this.value = value;\r
-       }\r
-\r
-//******************** Version comparator **********************************/\r
-       \r
-       public static class VersionComparator implements Comparator<String>{\r
-               Integer depth;\r
-               IProgressMonitor monitor;\r
-               \r
-               public VersionComparator(Integer depth, IProgressMonitor monitor){\r
-                       this.depth = depth;\r
-                       this.monitor = monitor;\r
-               }\r
-               \r
-               /* (non-Javadoc)\r
-                * @see java.util.Comparator#compare(java.lang.Object, java.lang.Object)\r
-                */\r
-               public int compare(String version1, String version2) {\r
-                       int result = 0;\r
-                       String[] version1Split = version1.split("\\.");\r
-                       String[] version2Split = version2.split("\\.");\r
-                       \r
-                       if(version1Split.length == 1 || version2Split.length == 1){\r
-                               throwException("Tried to compare version but given Strings don't seem to " +\r
-                                               "contain version numbers. version1: " + version1 + ", version2:" + version2); \r
-                       }\r
-                       \r
-                       if(depth != null && (version1Split.length < depth || version2Split.length < depth )){\r
-                               throwException("Desired depth can not be achieved with the given strings. depth: " + depth  + ", version1: " + version1 + ", version2:" + version2); \r
-                       }                       \r
-                       \r
-                       int length = (depth == null ||version1Split.length < depth) ? version1Split.length : depth;\r
-                       for (int i = 0; i < length; i++){\r
-                               Long version1Part = Long.valueOf(version1Split[i]);\r
-                               Long version2Part = Long.valueOf(version2Split[i]);\r
-                               int partCompare = version1Part.compareTo(version2Part);\r
-                               if (partCompare != 0){\r
-                                       return partCompare;\r
-                               }\r
-                       }\r
-                       return result;\r
-               }\r
-               \r
-               private Throwable throwException(String message){\r
-                       RuntimeException exception =  new RuntimeException(message);\r
-                       if (monitor != null){\r
-                               monitor.warning(message, exception);\r
-                       }\r
-                       throw exception;\r
-               }\r
-               \r
-       }\r
-\r
-       /**\r
-        * Compares two version string. If version1 is higher than version2 a positive result is returned.\r
-        * If both are equal 0 is returned, otherwise -1 is returned.\r
-        * @see Comparator#compare(Object, Object)\r
-        * @param version1\r
-        * @param version2\r
-        * @param depth\r
-        * @param monitor\r
-        * @return\r
-        */\r
-       public static int compareVersion(String version1, String version2, Integer depth, IProgressMonitor monitor){\r
-               VersionComparator versionComparator = new VersionComparator(depth, monitor);\r
-               return versionComparator.compare(version1, version2);\r
-       }\r
-       \r
-       public static boolean isDbSchemaVersionCompatible(String version){\r
-               return compareVersion(dbSchemaVersion, version, 3, null) == 0;\r
-       }\r
-\r
-       public static String getDbSchemaVersion() {\r
-               return dbSchemaVersion;\r
-       }\r
-       \r
-       public static String getTermsVersion() {\r
-               return termsVersion;\r
-       }\r
-\r
-       public static boolean isTermsVersionCompatible(String version){\r
-               return compareVersion(termsVersion, version, 3, null) == 0;\r
-       }\r
-       \r
-}\r
+// $Id$
+/**
+* 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.model.metadata;
+
+import java.util.ArrayList;
+import java.util.Comparator;
+import java.util.List;
+
+import javax.persistence.Entity;
+
+import org.apache.log4j.Logger;
+import org.joda.time.DateTime;
+
+import eu.etaxonomy.cdm.common.monitor.IProgressMonitor;
+import eu.etaxonomy.cdm.model.common.CdmBase;
+
+/**
+ * @author a.mueller
+ * @created 07.09.2009
+ */
+@Entity
+public class CdmMetaData extends CdmBase{
+       private static final long serialVersionUID = -3033376680593279078L;
+       @SuppressWarnings("unused")
+       private static final Logger logger = Logger.getLogger(CdmMetaData.class);
+
+       /* It is a little bit confusing that this specific information is located in
+        * a generic class for metadata. Think about moving the schema version
+        *
+        */
+       /**
+        * The database schema version number.
+        * It is recommended to have the first two numbers equal to the CDM Library version number.
+        * But it is not obligatory as there may be cases when the library number changes but the
+        * schema version is not changing.
+        * The third should be incremented if the schema changes in a way that SCHEMA_VALIDATION.UPDATE
+        * will probably not work or will not be enough to transform old data into new data.
+        * The fourth number should be incremented when minor schema changes take place that can
+        * be handled by SCHEMA_VALIDATION.UPDATE
+        * The last number represents the date of change.
+        */
+//     private static final String dbSchemaVersion = "3.6.0.0.201527040000";
+       private static final String dbSchemaVersion = "4.0.0.0.201604200000";
+//     private static final String dbSchemaVersion = "3.5.0.0.201531030000";
+
+
+
+
+
+       /**
+        * @return a list of default metadata objects
+        */
+       public static final List<CdmMetaData> defaultMetaData(){
+               List<CdmMetaData> result = new ArrayList<CdmMetaData>();
+               // schema version
+               result.add(new CdmMetaData(MetaDataPropertyName.DB_SCHEMA_VERSION, dbSchemaVersion));
+               //term version
+               result.add(new CdmMetaData(MetaDataPropertyName.TERMS_VERSION, termsVersion));
+               // database create time
+               result.add(new CdmMetaData(MetaDataPropertyName.DB_CREATE_DATE, new DateTime().toString()));
+               return result;
+       }
+
+       /**
+        * The version number for the terms loaded by the termloader (csv-files)
+        * It is recommended to have the first two numbers equal to the CDM Library version number.
+        *
+        * But it is not obligatory as there may be cases when the library number changes but the
+        * schema version is not changing.
+        *
+        * The third should be incremented if the terms change in a way that is not compatible
+        * to the previous version (e.g. by changing the type of a term)
+        *
+        * The fourth number should be incremented when compatible term changes take place
+        * (e.g. when new terms were added)
+        *
+        * The last number represents the date of change.
+        */
+//     private static final String termsVersion = "3.6.0.0.201527040000";
+       private static final String termsVersion = "4.0.0.0.201604200000";
+
+
+       public enum MetaDataPropertyName{
+               DB_SCHEMA_VERSION,
+               TERMS_VERSION,
+               DB_CREATE_DATE,
+               DB_CREATE_NOTE;
+
+               public String getSqlQuery(){
+                       return "SELECT value FROM CdmMetaData WHERE propertyname=" + this.ordinal();
+               }
+       }
+
+       /* END OF CONFUSION */
+       private MetaDataPropertyName propertyName;
+       private String value;
+
+
+       /**
+        * Method to retrieve a CDM Libraries meta data
+        * @return
+        */
+       public static final List<CdmMetaData> propertyList(){
+               List<CdmMetaData> result = new ArrayList<CdmMetaData>();
+               result.add(new CdmMetaData(MetaDataPropertyName.DB_SCHEMA_VERSION, dbSchemaVersion));
+               result.add(new CdmMetaData(MetaDataPropertyName.TERMS_VERSION, termsVersion));
+               result.add(new CdmMetaData(MetaDataPropertyName.DB_CREATE_DATE, new DateTime().toString()));
+               return result;
+       }
+
+//********************* Constructor *********************************************/
+
+       /**
+        * Simple constructor to be used by Spring
+        */
+       protected CdmMetaData(){
+               super();
+       }
+
+       public CdmMetaData(MetaDataPropertyName propertyName, String value) {
+               super();
+               this.propertyName = propertyName;
+               this.value = value;
+       }
+
+//****************** instance methods ****************************************/
+
+       /**
+        * @return the propertyName
+        */
+       public MetaDataPropertyName getPropertyName() {
+               return propertyName;
+       }
+
+       /**
+        * @param propertyName the propertyName to set
+        */
+       public void setPropertyName(MetaDataPropertyName propertyName) {
+               this.propertyName = propertyName;
+       }
+
+       /**
+        * @return the value
+        */
+       public String getValue() {
+               return value;
+       }
+
+       /**
+        * @param value the value to set
+        */
+       public void setValue(String value) {
+               this.value = value;
+       }
+
+//******************** Version comparator **********************************/
+
+       public static class VersionComparator implements Comparator<String>{
+               Integer depth;
+               IProgressMonitor monitor;
+
+               public VersionComparator(Integer depth, IProgressMonitor monitor){
+                       this.depth = depth;
+                       this.monitor = monitor;
+               }
+
+               /* (non-Javadoc)
+                * @see java.util.Comparator#compare(java.lang.Object, java.lang.Object)
+                */
+               @Override
+        public int compare(String version1, String version2) {
+                       int result = 0;
+                       String[] version1Split = version1.split("\\.");
+                       String[] version2Split = version2.split("\\.");
+
+                       if(version1Split.length == 1 || version2Split.length == 1){
+                               throwException("Tried to compare version but given Strings don't seem to " +
+                                               "contain version numbers. version1: " + version1 + ", version2:" + version2);
+                       }
+
+                       if(depth != null && (version1Split.length < depth || version2Split.length < depth )){
+                               throwException("Desired depth can not be achieved with the given strings. depth: " + depth  + ", version1: " + version1 + ", version2:" + version2);
+                       }
+
+                       int length = (depth == null ||version1Split.length < depth) ? version1Split.length : depth;
+                       for (int i = 0; i < length; i++){
+                               Long version1Part = Long.valueOf(version1Split[i]);
+                               Long version2Part = Long.valueOf(version2Split[i]);
+                               int partCompare = version1Part.compareTo(version2Part);
+                               if (partCompare != 0){
+                                       return partCompare;
+                               }
+                       }
+                       return result;
+               }
+
+               private Throwable throwException(String message){
+                       RuntimeException exception =  new RuntimeException(message);
+                       if (monitor != null){
+                               monitor.warning(message, exception);
+                       }
+                       throw exception;
+               }
+
+       }
+
+       /**
+        * Compares two version string. If version1 is higher than version2 a positive result is returned.
+        * If both are equal 0 is returned, otherwise -1 is returned.
+        * @see Comparator#compare(Object, Object)
+        * @param version1
+        * @param version2
+        * @param depth
+        * @param monitor
+        * @return
+        */
+       public static int compareVersion(String version1, String version2, Integer depth, IProgressMonitor monitor){
+               VersionComparator versionComparator = new VersionComparator(depth, monitor);
+               return versionComparator.compare(version1, version2);
+       }
+
+       public static boolean isDbSchemaVersionCompatible(String version){
+               return compareVersion(dbSchemaVersion, version, 3, null) == 0;
+       }
+
+       public static String getDbSchemaVersion() {
+               return dbSchemaVersion;
+       }
+
+       public static String getTermsVersion() {
+               return termsVersion;
+       }
+
+       public static boolean isTermsVersionCompatible(String version){
+               return compareVersion(termsVersion, version, 3, null) == 0;
+       }
+
+}
index 78f545347d22d06f2b51e45a4a9de6142a7df528..fce75366e583d7f9bfdc3596fc134d5820275188 100644 (file)
@@ -18,8 +18,8 @@ import eu.etaxonomy.cdm.common.monitor.DefaultProgressMonitor;
 import eu.etaxonomy.cdm.common.monitor.IProgressMonitor;
 import eu.etaxonomy.cdm.database.CdmDataSource;
 import eu.etaxonomy.cdm.database.ICdmDataSource;
-import eu.etaxonomy.cdm.database.update.v35_36.SchemaUpdater_35_36;
-import eu.etaxonomy.cdm.database.update.v35_36.TermUpdater_35_36;
+import eu.etaxonomy.cdm.database.update.v36_40.SchemaUpdater_36_40;
+import eu.etaxonomy.cdm.database.update.v36_40.TermUpdater_36_40;
 import eu.etaxonomy.cdm.model.metadata.CdmMetaData;
 
 /**
@@ -77,7 +77,7 @@ public class CdmUpdater {
 
 
     private ITermUpdater getCurrentTermUpdater() {
-        return TermUpdater_35_36.NewInstance();
+        return TermUpdater_36_40.NewInstance();
     }
 
     /**
@@ -85,7 +85,7 @@ public class CdmUpdater {
      * @return
      */
     private ISchemaUpdater getCurrentSchemaUpdater() {
-        return SchemaUpdater_35_36.NewInstance();
+        return SchemaUpdater_36_40.NewInstance();
     }
 
     /**
index 0bc9278148adffdb5c0fe622abc8f2c731291d6c..59dfaf98c144965dec8de9b673f2150f45192639 100644 (file)
@@ -24,6 +24,7 @@ import eu.etaxonomy.cdm.database.update.SchemaUpdaterBase;
 import eu.etaxonomy.cdm.database.update.TableCreator;
 import eu.etaxonomy.cdm.database.update.UniqueIndexDropper;
 import eu.etaxonomy.cdm.database.update.v34_35.SchemaUpdater_341_35;
+import eu.etaxonomy.cdm.database.update.v36_40.SchemaUpdater_36_40;
 
 /**
  * @author a.mueller
@@ -190,7 +191,7 @@ public class SchemaUpdater_35_36 extends SchemaUpdaterBase {
 
        @Override
        public ISchemaUpdater getNextUpdater() {
-               return null;
+               return SchemaUpdater_36_40.NewInstance();
        }
 
        @Override
index 8b2b0a2a89ab2f12e4c14daca72897cf1b26f96d..ef7b68b8dd37fa14a591dc587a9e08fc20b16d35 100644 (file)
@@ -1,82 +1,83 @@
-// $Id$\r
-/**\r
-* Copyright (C) 2009 EDIT\r
-* European Distributed Institute of Taxonomy \r
-* http://www.e-taxonomy.eu\r
-* \r
-* The contents of this file are subject to the Mozilla Public License Version 1.1\r
-* See LICENSE.TXT at the top of this package for the full license terms.\r
-*/\r
-package eu.etaxonomy.cdm.database.update.v35_36;\r
-\r
-import java.util.ArrayList;\r
-import java.util.List;\r
-\r
-import org.apache.log4j.Logger;\r
-\r
-import eu.etaxonomy.cdm.database.update.ITermUpdater;\r
-import eu.etaxonomy.cdm.database.update.ITermUpdaterStep;\r
-import eu.etaxonomy.cdm.database.update.TermUpdaterBase;\r
-import eu.etaxonomy.cdm.database.update.v34_35.TermUpdater_34_35;\r
-\r
-/**\r
- * @author a.mueller\r
- * @date 10.09.2010\r
- *\r
- */\r
-public class TermUpdater_35_36 extends TermUpdaterBase implements ITermUpdater {\r
-       @SuppressWarnings("unused")\r
-       private static final Logger logger = Logger.getLogger(TermUpdater_35_36.class);\r
-       \r
-       public static final String endTermVersion = "3.6.0.0.201527040000";\r
-       private static final String startTermVersion = "3.5.0.0.201531030000";\r
-       \r
-// *************************** FACTORY **************************************/\r
-       \r
-       public static TermUpdater_35_36 NewInstance(){\r
-               return new TermUpdater_35_36(startTermVersion, endTermVersion);\r
-       }\r
-       \r
-// *************************** CONSTRUCTOR ***********************************/        \r
-\r
-       protected TermUpdater_35_36(String startTermVersion, String endTermVersion) {\r
-               super(startTermVersion, endTermVersion);\r
-       }\r
-       \r
-       \r
-       @Override\r
-       protected List<ITermUpdaterStep> getUpdaterList() {\r
-               List<ITermUpdaterStep> list = new ArrayList<ITermUpdaterStep>();\r
-\r
-//             // proles, #2793\r
-//             UUID uuidTerm = UUID.fromString("8810d1ba-6a34-4ae3-a355-919ccd1cd1a5");\r
-//             String description = "Rank ''Proles''. Note: This rank is not compliant with the current nomenclatural codes";\r
-//             String label = "Proles";\r
-//             String abbrev = "prol.";\r
-//             String dtype = Rank.class.getSimpleName();\r
-//             boolean isOrdered = true;\r
-//             UUID uuidVocabulary = UUID.fromString("ef0d1ce1-26e3-4e83-b47b-ca74eed40b1b");\r
-//             UUID uuidAfterTerm = UUID.fromString("bff22f84-553a-4429-a4e7-c4b3796c3a18");\r
-//             UUID uuidLang = Language.uuidEnglish;\r
-//             RankClass rankClass = RankClass.Infraspecific;\r
-//             String stepName = "Add 'proles' rank to ranks";\r
-//             TermType termType = TermType.Rank;\r
-//             list.add( SingleTermUpdater.NewInstance(stepName, termType, uuidTerm, abbrev, description, label, abbrev, dtype, uuidVocabulary, uuidLang, isOrdered, uuidAfterTerm).setRankClass(rankClass));\r
-\r
-               //there are some more new vocabularies, but we trust that the term initializer will \r
-               //initialize and persist them correctly\r
-               \r
-               return list;\r
-       }\r
-       \r
-       @Override\r
-       public ITermUpdater getNextUpdater() {\r
-               return null;\r
-       }\r
-\r
-       @Override\r
-       public ITermUpdater getPreviousUpdater() {\r
-               return TermUpdater_34_35.NewInstance();\r
-       }\r
-\r
-}\r
+// $Id$
+/**
+* Copyright (C) 2009 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.v35_36;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.log4j.Logger;
+
+import eu.etaxonomy.cdm.database.update.ITermUpdater;
+import eu.etaxonomy.cdm.database.update.ITermUpdaterStep;
+import eu.etaxonomy.cdm.database.update.TermUpdaterBase;
+import eu.etaxonomy.cdm.database.update.v34_35.TermUpdater_34_35;
+import eu.etaxonomy.cdm.database.update.v36_40.TermUpdater_36_40;
+
+/**
+ * @author a.mueller
+ * @date 10.09.2010
+ *
+ */
+public class TermUpdater_35_36 extends TermUpdaterBase {
+       @SuppressWarnings("unused")
+       private static final Logger logger = Logger.getLogger(TermUpdater_35_36.class);
+
+       public static final String endTermVersion = "3.6.0.0.201527040000";
+       private static final String startTermVersion = "3.5.0.0.201531030000";
+
+// *************************** FACTORY **************************************/
+
+       public static TermUpdater_35_36 NewInstance(){
+               return new TermUpdater_35_36(startTermVersion, endTermVersion);
+       }
+
+// *************************** CONSTRUCTOR ***********************************/
+
+       protected TermUpdater_35_36(String startTermVersion, String endTermVersion) {
+               super(startTermVersion, endTermVersion);
+       }
+
+
+       @Override
+       protected List<ITermUpdaterStep> getUpdaterList() {
+               List<ITermUpdaterStep> list = new ArrayList<ITermUpdaterStep>();
+
+//             // proles, #2793
+//             UUID uuidTerm = UUID.fromString("8810d1ba-6a34-4ae3-a355-919ccd1cd1a5");
+//             String description = "Rank ''Proles''. Note: This rank is not compliant with the current nomenclatural codes";
+//             String label = "Proles";
+//             String abbrev = "prol.";
+//             String dtype = Rank.class.getSimpleName();
+//             boolean isOrdered = true;
+//             UUID uuidVocabulary = UUID.fromString("ef0d1ce1-26e3-4e83-b47b-ca74eed40b1b");
+//             UUID uuidAfterTerm = UUID.fromString("bff22f84-553a-4429-a4e7-c4b3796c3a18");
+//             UUID uuidLang = Language.uuidEnglish;
+//             RankClass rankClass = RankClass.Infraspecific;
+//             String stepName = "Add 'proles' rank to ranks";
+//             TermType termType = TermType.Rank;
+//             list.add( SingleTermUpdater.NewInstance(stepName, termType, uuidTerm, abbrev, description, label, abbrev, dtype, uuidVocabulary, uuidLang, isOrdered, uuidAfterTerm).setRankClass(rankClass));
+
+               //there are some more new vocabularies, but we trust that the term initializer will
+               //initialize and persist them correctly
+
+               return list;
+       }
+
+       @Override
+       public ITermUpdater getNextUpdater() {
+               return TermUpdater_36_40.NewInstance();
+       }
+
+       @Override
+       public ITermUpdater getPreviousUpdater() {
+               return TermUpdater_34_35.NewInstance();
+       }
+
+}
diff --git a/cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/database/update/v36_40/SchemaUpdater_36_40.java b/cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/database/update/v36_40/SchemaUpdater_36_40.java
new file mode 100644 (file)
index 0000000..9cac8c2
--- /dev/null
@@ -0,0 +1,80 @@
+// $Id$
+/**
+ * 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.v36_40;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.log4j.Logger;
+
+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.v35_36.SchemaUpdater_35_36;
+
+/**
+ * @author a.mueller
+ * @created 16.04.2016
+ */
+public class SchemaUpdater_36_40 extends SchemaUpdaterBase {
+
+       @SuppressWarnings("unused")
+       private static final Logger logger = Logger.getLogger(SchemaUpdater_36_40.class);
+       private static final String endSchemaVersion = "4.0.0.0.201604200000";
+       private static final String startSchemaVersion = "3.6.0.0.201527040000";
+
+       // ********************** FACTORY METHOD *************************************
+
+       public static SchemaUpdater_36_40 NewInstance() {
+               return new SchemaUpdater_36_40();
+       }
+
+       /**
+        * @param startSchemaVersion
+        * @param endSchemaVersion
+        */
+       protected SchemaUpdater_36_40() {
+               super(startSchemaVersion, endSchemaVersion);
+       }
+
+       @Override
+       protected List<ISchemaUpdaterStep> getUpdaterList() {
+
+               String stepName;
+               String tableName;
+               ISchemaUpdaterStep step;
+//             String columnName;
+               String newColumnName;
+               String oldColumnName;
+               String columnNames[];
+               String referencedTables[];
+               String columnTypes[];
+//             boolean includeCdmBaseAttributes = false;
+
+               List<ISchemaUpdaterStep> stepList = new ArrayList<ISchemaUpdaterStep>();
+
+
+
+               return stepList;
+       }
+
+
+       @Override
+       public ISchemaUpdater getNextUpdater() {
+               return null;
+       }
+
+       @Override
+       public ISchemaUpdater getPreviousUpdater() {
+               return SchemaUpdater_35_36.NewInstance();
+       }
+
+}
diff --git a/cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/database/update/v36_40/TermUpdater_36_40.java b/cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/database/update/v36_40/TermUpdater_36_40.java
new file mode 100644 (file)
index 0000000..ee8e69a
--- /dev/null
@@ -0,0 +1,82 @@
+// $Id$
+/**
+* Copyright (C) 2009 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.v36_40;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.log4j.Logger;
+
+import eu.etaxonomy.cdm.database.update.ITermUpdater;
+import eu.etaxonomy.cdm.database.update.ITermUpdaterStep;
+import eu.etaxonomy.cdm.database.update.TermUpdaterBase;
+import eu.etaxonomy.cdm.database.update.v35_36.TermUpdater_35_36;
+
+/**
+ * @author a.mueller
+ * @date 16.04.2016
+ *
+ */
+public class TermUpdater_36_40 extends TermUpdaterBase {
+       @SuppressWarnings("unused")
+       private static final Logger logger = Logger.getLogger(TermUpdater_36_40.class);
+
+       public static final String startTermVersion = "3.6.0.0.201527040000";
+       private static final String endTermVersion = "4.0.0.0.201604200000";
+
+// *************************** FACTORY **************************************/
+
+       public static TermUpdater_36_40 NewInstance(){
+               return new TermUpdater_36_40(startTermVersion, endTermVersion);
+       }
+
+// *************************** CONSTRUCTOR ***********************************/
+
+       protected TermUpdater_36_40(String startTermVersion, String endTermVersion) {
+               super(startTermVersion, endTermVersion);
+       }
+
+
+       @Override
+       protected List<ITermUpdaterStep> getUpdaterList() {
+               List<ITermUpdaterStep> list = new ArrayList<ITermUpdaterStep>();
+
+//             // proles, #2793
+//             UUID uuidTerm = UUID.fromString("8810d1ba-6a34-4ae3-a355-919ccd1cd1a5");
+//             String description = "Rank ''Proles''. Note: This rank is not compliant with the current nomenclatural codes";
+//             String label = "Proles";
+//             String abbrev = "prol.";
+//             String dtype = Rank.class.getSimpleName();
+//             boolean isOrdered = true;
+//             UUID uuidVocabulary = UUID.fromString("ef0d1ce1-26e3-4e83-b47b-ca74eed40b1b");
+//             UUID uuidAfterTerm = UUID.fromString("bff22f84-553a-4429-a4e7-c4b3796c3a18");
+//             UUID uuidLang = Language.uuidEnglish;
+//             RankClass rankClass = RankClass.Infraspecific;
+//             String stepName = "Add 'proles' rank to ranks";
+//             TermType termType = TermType.Rank;
+//             list.add( SingleTermUpdater.NewInstance(stepName, termType, uuidTerm, abbrev, description, label, abbrev, dtype, uuidVocabulary, uuidLang, isOrdered, uuidAfterTerm).setRankClass(rankClass));
+
+               //there are some more new vocabularies, but we trust that the term initializer will
+               //initialize and persist them correctly
+
+               return list;
+       }
+
+       @Override
+       public ITermUpdater getNextUpdater() {
+               return null;
+       }
+
+       @Override
+       public ITermUpdater getPreviousUpdater() {
+               return TermUpdater_35_36.NewInstance();
+       }
+
+}