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
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
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
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
\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
// 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
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
\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