* @date 13.09.2010\r
*\r
*/\r
-public class SimpleSchemaUpdaterStep extends SchemaUpdaterStepBase<SimpleSchemaUpdaterStep> implements ISchemaUpdaterStep, ITermUpdaterStep{\r
+public class SimpleSchemaUpdaterStep extends SchemaUpdaterStepBase<SimpleSchemaUpdaterStep>\r
+ implements ISchemaUpdaterStep, ITermUpdaterStep{\r
private static final Logger logger = Logger.getLogger(SimpleSchemaUpdaterStep.class);\r
\r
private final Map<DatabaseTypeEnum, String> queryMap = new HashMap<DatabaseTypeEnum, String>();\r
\r
/**\r
* For certain database types one may define special queries.<BR>\r
- * Don't forget to put case-mask (@@) for table names\r
+ * Don't forget to put case-mask (@@) for table names and also\r
+ * add AUD query if required.\r
* @param dbType database type\r
* @param query query to use for the given database type.\r
* @return this schema updater step\r
+ * @see #putAudited(DatabaseTypeEnum, String)\r
*/\r
public SimpleSchemaUpdaterStep put(DatabaseTypeEnum dbType, String query) {\r
queryMap.put(dbType, query);\r
return this;\r
}\r
\r
+ /**\r
+ * For certain database types one may define special queries.\r
+ * This is for the AUD query.<BR>\r
+ * Don't forget to put case-mask (@@) for table names\r
+ * @param dbType database type\r
+ * @param query query to use for the given database type.\r
+ * @return this schema updater step\r
+ * @see #put(DatabaseTypeEnum, String)\r
+ */\r
+ public SimpleSchemaUpdaterStep putAudited(DatabaseTypeEnum dbType, String query) {\r
+ auditQueryMap.put(dbType, query);\r
+ return this;\r
+ }\r
+\r
/**\r
* Defines the non audited table name for computing the audited query.\r
* @param nonAuditedTableName uncased table name that is to be audited\r
import org.apache.log4j.Logger;
import eu.etaxonomy.cdm.common.UTF8;
+import eu.etaxonomy.cdm.database.DatabaseTypeEnum;
import eu.etaxonomy.cdm.database.update.ColumnAdder;
import eu.etaxonomy.cdm.database.update.ColumnRemover;
import eu.etaxonomy.cdm.database.update.ISchemaUpdater;
//#3925
//Move excluded from Taxon to TaxonNode
stepName = "Move excluded from Taxon to TaxonNode";
- query = "UPDATE @@TaxonNode@@ " +
- " SET excluded = 1 " +
- " WHERE id IN (SELECT id FROM "
- + "(SELECT tn.id FROM @@TaxonBase@@ tb INNER JOIN @@TaxonNode@@ tn ON tn.taxon_id = tb.id WHERE tb.excluded = 1)"
- + " as drvTbl)";
query = "UPDATE @@TaxonNode@@ tn " +
" SET excluded = (SELECT excluded FROM @@TaxonBase@@ tb WHERE tb.id = tn.taxon_id)";
-
simpleStep = SimpleSchemaUpdaterStep.NewAuditedInstance(stepName, query, "TaxonNode", -99)
.addDefaultAuditing("TaxonBase");
stepList.add(simpleStep);
+ stepName = "Move excluded from Taxon to TaxonNode/set null to false";
+ query = "UPDATE @@TaxonNode@@ SET excluded = 0 WHERE excluded IS NULL";
+ simpleStep = SimpleSchemaUpdaterStep.NewAuditedInstance(stepName, query, "TaxonNode", -99);
+ simpleStep.put(DatabaseTypeEnum.PostgreSQL, query.replace("0", "false"));
+ simpleStep.putAudited(DatabaseTypeEnum.PostgreSQL, query.replace("TaxonNode","TaxonNode_AUD").replace("0", "false"));
+ stepList.add(simpleStep);
+
+
//#3925
//remove excluded from TaxonNode
stepName = "Remove excluded from TaxonBase";
//#3925
//Move unplaced from Taxon to TaxonNode
+
stepName = "Move unplaced from Taxon to TaxonNode";
- query = "UPDATE @@TaxonNode@@ " +
- " SET unplaced = 1 " +
- " WHERE id IN (SELECT id FROM "
- + "(SELECT tn.id FROM @@TaxonBase@@ tb INNER JOIN @@TaxonNode@@ tn ON tn.taxon_id = tb.id WHERE tb.unplaced = 1)"
- + " as drvTbl)";
query = "UPDATE @@TaxonNode@@ tn " +
" SET unplaced = (SELECT unplaced FROM @@TaxonBase@@ tb WHERE tb.id = tn.taxon_id)";
-
simpleStep = SimpleSchemaUpdaterStep.NewAuditedInstance(stepName, query, "TaxonNode", -99)
.addDefaultAuditing("TaxonBase");
stepList.add(simpleStep);
+ stepName = "Move unplaced from Taxon to TaxonNode/set null to false";
+ query = "UPDATE @@TaxonNode@@ SET unplaced = 0 WHERE unplaced IS NULL";
+ simpleStep = SimpleSchemaUpdaterStep.NewAuditedInstance(stepName, query, "TaxonNode", -99);
+ simpleStep.put(DatabaseTypeEnum.PostgreSQL, query.replace("0", "false"));
+ simpleStep.putAudited(DatabaseTypeEnum.PostgreSQL, query.replace("TaxonNode","TaxonNode_AUD").replace("0", "false"));
+ stepList.add(simpleStep);
+
+
//#3925
//remove unplaced from TaxonNode
stepName = "Remove unplaced from TaxonBase";