X-Git-Url: https://dev.e-taxonomy.eu/gitweb/cdmlib.git/blobdiff_plain/e6c0f08e8ac0f8fd301802c05cabc00a307f02b0..9692864e721ed0fd395039f394893d72f8cf30ed:/cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/database/update/CdmUpdater.java diff --git a/cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/database/update/CdmUpdater.java b/cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/database/update/CdmUpdater.java index 0ffd7466d2..064af565d9 100644 --- a/cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/database/update/CdmUpdater.java +++ b/cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/database/update/CdmUpdater.java @@ -11,10 +11,12 @@ package eu.etaxonomy.cdm.database.update; import org.apache.log4j.Logger; -import eu.etaxonomy.cdm.common.DefaultProgressMonitor; -import eu.etaxonomy.cdm.common.IProgressMonitor; +import eu.etaxonomy.cdm.common.monitor.DefaultProgressMonitor; +import eu.etaxonomy.cdm.common.monitor.IProgressMonitor; import eu.etaxonomy.cdm.database.CdmDataSource; import eu.etaxonomy.cdm.database.ICdmDataSource; +import eu.etaxonomy.cdm.database.update.v30_31.TermUpdater_314_315; +import eu.etaxonomy.cdm.database.update.v31_33.SchemaUpdater_31_33; /** * @author a.mueller @@ -24,7 +26,10 @@ import eu.etaxonomy.cdm.database.ICdmDataSource; public class CdmUpdater { private static final Logger logger = Logger.getLogger(CdmUpdater.class); - + public static CdmUpdater NewInstance(){ + return new CdmUpdater(); + } + /** * @param datasource * @param monitor may be null @@ -40,24 +45,36 @@ public class CdmUpdater { // TODO do we really always update the terms?? ITermUpdater currentTermUpdater = getCurrentTermUpdater(); - int steps = currentSchemaUpdater.countSteps(datasource); - steps += currentTermUpdater.countSteps(datasource); + int steps = currentSchemaUpdater.countSteps(datasource, monitor); + steps += currentTermUpdater.countSteps(datasource, monitor); String taskName = "Update to schema version " + currentSchemaUpdater.getTargetVersion() + " and to term version " + currentTermUpdater.getTargetVersion(); //+ currentSchemaUpdater.getVersion(); monitor.beginTask(taskName, steps); try { + datasource.startTransaction(); result &= currentSchemaUpdater.invoke(datasource, monitor); - // the above apparently did not work while testing. Did not want to set the version in CdmMetaData yet -// result &= currentSchemaUpdater.invoke(currentSchemaUpdater.getTargetVersion(), datasource, monitor); - result &= currentTermUpdater.invoke(datasource, monitor); + if (result == true){ + result &= currentTermUpdater.invoke(datasource, monitor); + } + if (result == false){ + datasource.rollback(); + }else{ + datasource.commitTransaction(); + } + } catch (Exception e) { result = false; monitor.warning("Stopped schema updater"); } finally { String message = "Update finished " + (result ? "successfully" : "with ERRORS"); monitor.subTask(message); - monitor.done(); + if (!result){ + monitor.warning(message); + monitor.setCanceled(true); + }else{ + monitor.done(); + } logger.info(message); } @@ -65,7 +82,7 @@ public class CdmUpdater { } private ITermUpdater getCurrentTermUpdater() { - return TermUpdater_24_25.NewInstance(); + return TermUpdater_314_315.NewInstance(); } /** @@ -73,8 +90,7 @@ public class CdmUpdater { * @return */ private ISchemaUpdater getCurrentSchemaUpdater() { - return SchemaUpdater_24_25.NewInstance(); -// return SchemaUpdater_25_26.NewInstance(); + return SchemaUpdater_31_33.NewInstance(); } /**