include more auditing in schema update and refactor to better allow transaction suppo...
[cdmlib.git] / cdmlib-persistence / src / main / java / eu / etaxonomy / cdm / database / update / CdmUpdater.java
index f60436a8c9c9de54c1b7b2b4c8367b85c99699c8..064af565d966df7e35c43a56532e5326effdd43b 100644 (file)
@@ -11,12 +11,12 @@ package eu.etaxonomy.cdm.database.update;
 \r
 import org.apache.log4j.Logger;\r
 \r
-import eu.etaxonomy.cdm.common.DefaultProgressMonitor;\r
-import eu.etaxonomy.cdm.common.IProgressMonitor;\r
+import eu.etaxonomy.cdm.common.monitor.DefaultProgressMonitor;\r
+import eu.etaxonomy.cdm.common.monitor.IProgressMonitor;\r
 import eu.etaxonomy.cdm.database.CdmDataSource;\r
 import eu.etaxonomy.cdm.database.ICdmDataSource;\r
-import eu.etaxonomy.cdm.database.update.v30_31.SchemaUpdater_30_301;\r
-import eu.etaxonomy.cdm.database.update.v30_31.TermUpdater_312_313;\r
+import eu.etaxonomy.cdm.database.update.v30_31.TermUpdater_314_315;\r
+import eu.etaxonomy.cdm.database.update.v31_33.SchemaUpdater_31_33;\r
 \r
 /**\r
  * @author a.mueller\r
@@ -52,17 +52,29 @@ public class CdmUpdater {
                monitor.beginTask(taskName, steps);\r
                \r
                try {\r
+                       datasource.startTransaction();\r
                        result &= currentSchemaUpdater.invoke(datasource, monitor);\r
-                       // the above apparently did not work while testing. Did not want to set the version in CdmMetaData yet\r
-//                     result &= currentSchemaUpdater.invoke(currentSchemaUpdater.getTargetVersion(), datasource, monitor);\r
-                       result &= currentTermUpdater.invoke(datasource, monitor);\r
+                       if (result == true){\r
+                               result &= currentTermUpdater.invoke(datasource, monitor);\r
+                       }\r
+                       if (result == false){\r
+                               datasource.rollback();\r
+                       }else{\r
+                               datasource.commitTransaction();\r
+                       }\r
+                       \r
                } catch (Exception e) {\r
                        result = false;\r
                        monitor.warning("Stopped schema updater");\r
                } finally {\r
                        String message = "Update finished " + (result ? "successfully" : "with ERRORS");\r
                        monitor.subTask(message);\r
-                       monitor.done();\r
+                       if (!result){\r
+                               monitor.warning(message);\r
+                               monitor.setCanceled(true);\r
+                       }else{\r
+                               monitor.done();\r
+                       }\r
                        logger.info(message);\r
                }\r
                \r
@@ -70,7 +82,7 @@ public class CdmUpdater {
        }\r
        \r
        private ITermUpdater getCurrentTermUpdater() {\r
-               return TermUpdater_312_313.NewInstance();\r
+               return TermUpdater_314_315.NewInstance();\r
        }\r
 \r
        /**\r
@@ -78,7 +90,7 @@ public class CdmUpdater {
         * @return\r
         */\r
        private ISchemaUpdater getCurrentSchemaUpdater() {\r
-               return SchemaUpdater_30_301.NewInstance();\r
+               return SchemaUpdater_31_33.NewInstance();\r
        }\r
 \r
        /**\r