diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db/ExternalDataDAO.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db/ExternalDataDAO.java index 1022053cb890fbbf7550d70e35cacdfdc102c545..ae11cac8775513978fa6e547a98d76ccb007392c 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db/ExternalDataDAO.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db/ExternalDataDAO.java @@ -363,12 +363,23 @@ final class ExternalDataDAO extends AbstractGenericEntityWithPropertiesDAO<Exter Long fileFormatTypeID = externalData.getFileFormatType().getId(); char complete = externalData.getComplete().name().charAt(0); Long storageFormatTermID = externalData.getStorageFormatVocabularyTerm().getId(); - executeUpdate( - "insert into " - + TableNames.EXTERNAL_DATA_TABLE - + " (data_id, share_id, location, size, loty_id, ffty_id, is_complete, cvte_id_stor_fmt) " - + "values (?, ?, ?, ?, ?, ?, ?, ?)", id, shareId, location, size, - locatorTypeID, fileFormatTypeID, complete, storageFormatTermID); + if (size == null) + { + executeUpdate( + "insert into " + + TableNames.EXTERNAL_DATA_TABLE + + " (data_id, share_id, location, loty_id, ffty_id, is_complete, cvte_id_stor_fmt) " + + "values (?, ?, ?, ?, ?, ?, ?)", id, shareId, location, + locatorTypeID, fileFormatTypeID, complete, storageFormatTermID); + } else + { + executeUpdate( + "insert into " + + TableNames.EXTERNAL_DATA_TABLE + + " (data_id, share_id, location, size, loty_id, ffty_id, is_complete, cvte_id_stor_fmt) " + + "values (?, ?, ?, ?, ?, ?, ?, ?)", id, shareId, location, size, + locatorTypeID, fileFormatTypeID, complete, storageFormatTermID); + } hibernateTemplate.evict(loaded); } hibernateTemplate.update(externalData); diff --git a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db/ExternalDataDAOTest.java b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db/ExternalDataDAOTest.java index 9760c4fae7c4479b1f1c636360ab6d8105a57ddd..fbc94392c1bbed0e39de70f0ee170411c020a71a 100644 --- a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db/ExternalDataDAOTest.java +++ b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db/ExternalDataDAOTest.java @@ -155,7 +155,18 @@ public final class ExternalDataDAOTest extends AbstractDAOTest } @Test - public void testUpdateDataSetAquiredFromSample() + public void testUpdateDataSetAquiredFromSampleWithoutDataSetSize() + { + checkUpdate(null); + } + + @Test + public void testUpdateDataSetAquiredFromSampleWithDataSetSize() + { + checkUpdate(4711L); + } + + private void checkUpdate(Long size) { IExternalDataDAO externalDataDAO = daoFactory.getExternalDataDAO(); DataPE data = new DataPE(); @@ -180,7 +191,7 @@ public final class ExternalDataDAOTest extends AbstractDAOTest externalData.setLocatorType(pickALocatorType()); externalData.setLocation("abcd"); externalData.setShareId("share-42"); - externalData.setSize(4711L); + externalData.setSize(size); externalData.setComplete(BooleanOrUnknown.U); externalData.setStorageFormatVocabularyTerm(pickAStorageFormatVocabularyTerm()); externalData.setPlaceholder(true);