updates to schema updater
authorAndreas Müller <a.mueller@bgbm.org>
Mon, 20 Sep 2010 21:39:53 +0000 (21:39 +0000)
committerAndreas Müller <a.mueller@bgbm.org>
Mon, 20 Sep 2010 21:39:53 +0000 (21:39 +0000)
cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/database/update/ColumnAdder.java
cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/database/update/SchemaUpdaterStepBase.java
cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/database/update/SchemaUpdater_3_0.java
cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/database/update/SingleTermUpdater.java

index f7778d54f6cb3de0c5876f219c36c62d2c4eebbe..2a1f6cbca24261c558348e625fbc57a7792f2e1d 100644 (file)
@@ -30,17 +30,23 @@ public class ColumnAdder extends SchemaUpdaterStepBase implements ISchemaUpdater
        private String newColumnName;\r
        private String columnType;\r
        private boolean includeAudTable;\r
+       private Object defaultValue;\r
        \r
        public static final ColumnAdder NewIntegerInstance(String stepName, String tableName, String newColumnName, boolean includeAudTable){\r
-               return new ColumnAdder(stepName, tableName, newColumnName, "int", includeAudTable);\r
+               return new ColumnAdder(stepName, tableName, newColumnName, "int", includeAudTable, null);\r
+       }\r
+\r
+       public static final ColumnAdder NewBooleanInstance(String stepName, String tableName, String newColumnName, boolean includeAudTable, Boolean defaultValue){\r
+               return new ColumnAdder(stepName, tableName, newColumnName, "bit", includeAudTable, defaultValue);\r
        }\r
        \r
-       protected ColumnAdder(String stepName, String tableName, String newColumnName, String columnType, boolean includeAudTable) {\r
+       protected ColumnAdder(String stepName, String tableName, String newColumnName, String columnType, boolean includeAudTable, Object defaultValue) {\r
                super(stepName);\r
                this.tableName = tableName;\r
                this.newColumnName = newColumnName;\r
                this.columnType = columnType;\r
                this.includeAudTable = includeAudTable;\r
+               this.defaultValue = defaultValue;\r
        }\r
 \r
        /* (non-Javadoc)\r
@@ -74,6 +80,11 @@ public class ColumnAdder extends SchemaUpdaterStepBase implements ISchemaUpdater
                updateQuery = updateQuery.replace("@columnName", newColumnName);\r
                updateQuery = updateQuery.replace("@columnType", columnType);\r
                datasource.executeUpdate(updateQuery);\r
+               \r
+               if (defaultValue instanceof Boolean){\r
+                       updateQuery = "UPADTE @tableName SET @columnName = " + defaultValue == null ? "null" : getBoolean((Boolean) defaultValue, datasource);\r
+                       datasource.executeUpdate(updateQuery);\r
+               }\r
                return true;\r
        }\r
 \r
index 37fd08c2c177287d9d3d42a2d7cce943eb16e0e7..cd459a76108359d18b5e05dfa266a2261720ce7f 100644 (file)
@@ -14,6 +14,7 @@ import java.sql.SQLException;
 import org.apache.log4j.Logger;\r
 \r
 import eu.etaxonomy.cdm.common.IProgressMonitor;\r
+import eu.etaxonomy.cdm.database.DatabaseTypeEnum;\r
 import eu.etaxonomy.cdm.database.ICdmDataSource;\r
 \r
 /**\r
@@ -53,5 +54,28 @@ public abstract class SchemaUpdaterStepBase implements ISchemaUpdaterStep {
                return stepName;\r
        }\r
        \r
+\r
+\r
+       protected String getBoolean(boolean value, ICdmDataSource datasource) {\r
+               String result;\r
+               DatabaseTypeEnum type = datasource.getDatabaseType();\r
+               int intValue = value == true? 1 : 0;\r
+               if (type.equals(DatabaseTypeEnum.MySQL)){\r
+                       result = "b'"+intValue+"'";\r
+               }else if (type.equals(DatabaseTypeEnum.PostgreSQL)){\r
+                       result = "'"+intValue+"'";\r
+               }else if (type.equals(DatabaseTypeEnum.H2)){\r
+                       logger.warn("H2 boolean not tested yet");\r
+                       result = "b'"+intValue+"'";\r
+               }else if (type.equals(DatabaseTypeEnum.SqlServer2005)){\r
+                       logger.warn("SQLServer boolean not tested yet");\r
+                       result = "b'"+intValue+"'";\r
+               }else{\r
+                       throw new RuntimeException("Database type not supported for boolean" + type.getName());\r
+               }\r
+               return result;\r
+       }\r
+\r
+       \r
        \r
 }\r
index 59265abc13054e407e3d16f4f26ab6f5073db483..997ce2dc70eb0e092c5ea95630dec09bd8478695 100644 (file)
@@ -14,8 +14,6 @@ import java.util.List;
 \r
 import org.apache.log4j.Logger;\r
 \r
-import eu.etaxonomy.cdm.database.DatabaseTypeEnum;\r
-\r
 /**\r
  * @author a.mueller\r
  * @date 10.09.2010\r
@@ -92,10 +90,22 @@ public class SchemaUpdater_3_0 extends SchemaUpdaterBase implements ISchemaUpdat
 //             TableNameChanger tableChanger = TableNameChanger.NewInstance(stepName, "TaxonomicTree", "Classification", INCLUDE_AUDIT);\r
 //             stepList.add(tableChanger);\r
                \r
-               //update sortindex on FeatureNode children\r
+               //add country to gathering event\r
                stepName = "Add country column to gathering event";\r
                step = ColumnAdder.NewIntegerInstance(stepName, "GatheringEvent", "country_id", INCLUDE_AUDIT);\r
                stepList.add(step);\r
+\r
+               //add unplaced and excluded to taxon\r
+               stepName = "Add unplaced to taxon";\r
+               Boolean defaultValue = false;\r
+               step = ColumnAdder.NewBooleanInstance(stepName, "TaxonBase", "unplaced", INCLUDE_AUDIT, defaultValue);\r
+               stepList.add(step);\r
+               \r
+               //add excluded to taxon\r
+               stepName = "Add unplaced and excluded to taxon";\r
+               defaultValue = false;\r
+               step = ColumnAdder.NewBooleanInstance(stepName, "TaxonBase", "excluded", INCLUDE_AUDIT, defaultValue);\r
+               stepList.add(step);\r
                \r
                return stepList;\r
        }\r
index 80ae8152e6040ed6c03540069c5a5fd19e2044e0..e34d79614afc4d2db3ebf82af243448e20cbd3b9 100644 (file)
@@ -16,7 +16,6 @@ import java.util.UUID;
 import org.apache.log4j.Logger;\r
 \r
 import eu.etaxonomy.cdm.common.IProgressMonitor;\r
-import eu.etaxonomy.cdm.database.DatabaseTypeEnum;\r
 import eu.etaxonomy.cdm.database.ICdmDataSource;\r
 import eu.etaxonomy.cdm.model.description.Feature;\r
 \r
@@ -170,27 +169,6 @@ public class SingleTermUpdater extends SchemaUpdaterStepBase {
 \r
 \r
 \r
-       private String getBoolean(boolean value, ICdmDataSource datasource) {\r
-               String result;\r
-               DatabaseTypeEnum type = datasource.getDatabaseType();\r
-               int intValue = value == true? 1 : 0;\r
-               if (type.equals(DatabaseTypeEnum.MySQL)){\r
-                       result = "b'"+intValue+"'";\r
-               }else if (type.equals(DatabaseTypeEnum.PostgreSQL)){\r
-                       result = "'"+intValue+"'";\r
-               }else if (type.equals(DatabaseTypeEnum.H2)){\r
-                       logger.warn("H2 boolean not tested yet");\r
-                       result = "b'"+intValue+"'";\r
-               }else if (type.equals(DatabaseTypeEnum.SqlServer2005)){\r
-                       logger.warn("SQLServer boolean not tested yet");\r
-                       result = "b'"+intValue+"'";\r
-               }else{\r
-                       throw new RuntimeException("Database type not supported for boolean" + type.getName());\r
-               }\r
-               return result;\r
-       }\r
-\r
-\r
 \r
        /**\r
         * @param datasource\r