From 079540c71785738c7897d9815a7c0c7352ae38d5 Mon Sep 17 00:00:00 2001 From: cramakri <cramakri> Date: Tue, 2 Aug 2011 13:01:27 +0000 Subject: [PATCH] Completed implementation of IDataSetRegistrationTransaction.getDatabaseQuery() SVN: 22310 --- .../api/v1/impl/AbstractTransactionState.java | 27 +++++++++++++++++-- .../impl/DataSetRegistrationTransaction.java | 6 ++--- 2 files changed, 28 insertions(+), 5 deletions(-) diff --git a/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/api/v1/impl/AbstractTransactionState.java b/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/api/v1/impl/AbstractTransactionState.java index 75d7d23cac4..5cae0002ad7 100644 --- a/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/api/v1/impl/AbstractTransactionState.java +++ b/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/api/v1/impl/AbstractTransactionState.java @@ -22,6 +22,9 @@ import java.util.HashMap; import java.util.List; import java.util.Map; +import net.lemnik.eodsql.DynamicTransactionQuery; +import net.lemnik.eodsql.QueryTool; + import ch.systemsx.cisd.common.exceptions.NotImplementedException; import ch.systemsx.cisd.common.filesystem.FileUtilities; import ch.systemsx.cisd.etlserver.registrator.DataSetRegistrationDetails; @@ -117,6 +120,9 @@ abstract class AbstractTransactionState<T extends DataSetInformation> private final List<Material> materialsToBeRegistered = new ArrayList<Material>(); + private final List<DynamicTransactionQuery> queriesToCommit = + new ArrayList<DynamicTransactionQuery>(); + private String userIdOrNull = null; public LiveTransactionState(DataSetRegistrationTransaction<T> parent, @@ -264,7 +270,7 @@ abstract class AbstractTransactionState<T extends DataSetInformation> { return result; } - + ExternalData dataSet = openBisService.tryGetDataSet(dataSetCode); if (dataSet == null) { @@ -433,6 +439,13 @@ abstract class AbstractTransactionState<T extends DataSetInformation> return dstFile.getAbsolutePath(); } + public DynamicTransactionQuery getDatabaseQuery(String dataSourceName) + { + DynamicTransactionQuery query = QueryTool.getQuery(DynamicTransactionQuery.class); + queriesToCommit.add(query); + return query; + } + public void deleteFile(String src) { throw new NotImplementedException(); @@ -467,6 +480,12 @@ abstract class AbstractTransactionState<T extends DataSetInformation> DataSetStorageAlgorithmRunner<T> runner = new DataSetStorageAlgorithmRunner<T>(algorithms, parent, parent); List<DataSetInformation> datasets = runner.prepareAndRunStorageAlgorithms(); + for (DynamicTransactionQuery query : queriesToCommit) + { + query.commit(); + query.close(false); + } + return datasets.isEmpty() == false; } @@ -478,6 +497,11 @@ abstract class AbstractTransactionState<T extends DataSetInformation> { rollbackStack.rollbackAll(); registeredDataSets.clear(); + for (DynamicTransactionQuery query : queriesToCommit) + { + query.rollback(); + query.close(false); + } } /** @@ -611,7 +635,6 @@ abstract class AbstractTransactionState<T extends DataSetInformation> { return false; } - } private static abstract class TerminalTransactionState<T extends DataSetInformation> extends diff --git a/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/api/v1/impl/DataSetRegistrationTransaction.java b/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/api/v1/impl/DataSetRegistrationTransaction.java index 49e17f9f47e..0d2dc5f380e 100644 --- a/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/api/v1/impl/DataSetRegistrationTransaction.java +++ b/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/api/v1/impl/DataSetRegistrationTransaction.java @@ -22,7 +22,6 @@ import java.util.Date; import java.util.List; import net.lemnik.eodsql.DynamicTransactionQuery; -import net.lemnik.eodsql.QueryTool; import org.apache.commons.lang.time.DateFormatUtils; import org.apache.log4j.Logger; @@ -355,7 +354,8 @@ public class DataSetRegistrationTransaction<T extends DataSetInformation> implem private void invokeDidCommitTransaction() { - try { + try + { registrationService.didCommitTransaction(this); } catch (Throwable t) { @@ -453,6 +453,6 @@ public class DataSetRegistrationTransaction<T extends DataSetInformation> implem public DynamicTransactionQuery getDatabaseQuery(String dataSourceName) throws IllegalArgumentException { - return QueryTool.getQuery(DynamicTransactionQuery.class); + return getStateAsLiveState().getDatabaseQuery(dataSourceName); } } -- GitLab