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 660aeba314a5e833d91d715edc2228c70fb770fa..ba99c6fa3ae6697a47c44e066e501bee6e5c86ad 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 @@ -2394,7 +2394,7 @@ public class ETLService extends AbstractCommonServer<IETLLIMSService> implements if (daoFactory.getDataDAO().confirmStorage(dataSetCode)) { daoFactory.getPostRegistrationDAO().addDataSet(dataSetCode); - } else + } else if (daoFactory.getDataDAO().exists(dataSetCode) == false) { throw new UserFailureException("Storage confirmation for a dataset: " + dataSetCode + " failed because the data set has been already deleted."); diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/IDataDAO.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/IDataDAO.java index 12aa619e45e497dc515e46e9e67eb5d381f8a87c..6f44ba178c80918917be98bf21f39d93c9cf9115 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/IDataDAO.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/IDataDAO.java @@ -162,10 +162,20 @@ public interface IDataDAO extends IGenericDAO<DataPE> throws DataAccessException; /** - * Confirms storage for the specified data set. + * Confirms a storage for the specified data set. It confirms the storage even if the data set + * is in the trash. * - * @return Returns true if the storage confirmed value has been changed. + * @return Returns true if the data sets exists and the storage confirmed value has been + * changed. */ boolean confirmStorage(String dataSetCode); + /** + * Checks whether a data set with the specified code exists. It takes into consideration also + * data sets that are in the trash. + * + * @return Returns true if the data set exists. + */ + boolean exists(String dataSetCode); + } diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db/DataDAO.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db/DataDAO.java index 7d9321d8bd61573fc94acba814bb9b705042f1d3..a9b702e1a47062830a050d697fe13c48453be362 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db/DataDAO.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db/DataDAO.java @@ -1293,4 +1293,15 @@ final class DataDAO extends AbstractGenericEntityWithPropertiesDAO<DataPE> imple query.setString("code", dataSetCode); return query.executeUpdate() > 0; } + + @Override + public boolean exists(String dataSetCode) + { + SQLQuery query = + getSession().createSQLQuery("select count(*) from data_all where code = :code"); + query.setString("code", dataSetCode); + Number count = (Number) query.uniqueResult(); + return count != null && count.intValue() > 0; + } + }