From 59b38547b65766be927839f5976eb43e7f7665d3 Mon Sep 17 00:00:00 2001 From: jakubs <jakubs> Date: Wed, 6 Jun 2012 10:50:44 +0000 Subject: [PATCH] SP-73, BIS-21 make setStorageConfirm idempotent operation SVN: 25577 --- .../cisd/openbis/generic/server/ETLService.java | 10 +++++++--- .../openbis/generic/server/business/bo/DataBO.java | 11 +++++++++++ .../openbis/generic/server/business/bo/IDataBO.java | 8 +++++--- 3 files changed, 23 insertions(+), 6 deletions(-) diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/ETLService.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/ETLService.java index 1713b8e9667..c8948caff9e 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/ETLService.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/ETLService.java @@ -1748,9 +1748,13 @@ public class ETLService extends AbstractCommonServer<IETLLIMSService> implements final IDataBO dataBO = businessObjectFactory.createDataBO(session); - dataBO.loadByCode(dataSetCode); - dataBO.setStorageConfirmed(); - daoFactory.getPostRegistrationDAO().addDataSet(dataBO.getData()); + if (false == dataBO.isStorageConfirmed()) + { + dataBO.loadByCode(dataSetCode); + + dataBO.setStorageConfirmed(); + daoFactory.getPostRegistrationDAO().addDataSet(dataBO.getData()); + } } @Override diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/DataBO.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/DataBO.java index 75b76c3a155..959b4731c2b 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/DataBO.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/DataBO.java @@ -691,4 +691,15 @@ public class DataBO extends AbstractDataSetBusinessObject implements IDataBO externalData.setStorageConfirmation(true); } } + + @Override + public boolean isStorageConfirmed() + { + ExternalDataPE externalData = data.tryAsExternalData(); + if (null != externalData) + { + return externalData.isStorageConfirmation(); + } + return true; + } } diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/IDataBO.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/IDataBO.java index 88b13381402..acd909a81f9 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/IDataBO.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/IDataBO.java @@ -130,10 +130,12 @@ public interface IDataBO extends IEntityBusinessObject /** * Indicate that the storage of the external data has been confirmed. - * - * @throws UserFailureException - * if the this is not external data */ public void setStorageConfirmed(); + /** + * @return true if the storage of this dataset has been confirmed or this is not external data + */ + public boolean isStorageConfirmed(); + } -- GitLab