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 2711f11320c55cfabd34634bcaaa3d248e43fb48..064af565d966df7e35c43a56532e5326effdd43b 100644 (file)
@@ -52,18 +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
+                       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
-                       result &= currentTermUpdater.invoke(datasource, monitor);\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