diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/IAttachmentDAO.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/IAttachmentDAO.java index b357a7fc08974f767c08d0f40fe92e859ef9d0b9..d6dbbc0b02319e2f3279e01828572537abecf399 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/IAttachmentDAO.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/IAttachmentDAO.java @@ -75,7 +75,7 @@ public interface IAttachmentDAO extends IGenericDAO<AttachmentPE> * Deletes all attachment versions with specified <var>fileName</var> and <var>owner</var>. * There will be no error if no such attachment exist. * <p> - * NOTE: Attachments are removed from DB - not from the owner object. + * NOTE: Attachments are removed from DB and from the owner object. * * @return number of attachments deleted */ diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db/AttachmentDAO.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db/AttachmentDAO.java index 121eb92f39b9de941fe2dab47b1e369bb7177cbc..6971255d58e18a15ddeadc47cb9b99bc2326cf95 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db/AttachmentDAO.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db/AttachmentDAO.java @@ -44,8 +44,8 @@ final class AttachmentDAO extends AbstractGenericEntityDAO<AttachmentPE> impleme private final static String TABLE_NAME = ATTACHMENT_CLASS.getSimpleName(); - private static final Logger operationLog = - LogFactory.getLogger(LogCategory.OPERATION, AttachmentDAO.class); + private static final Logger operationLog = LogFactory.getLogger(LogCategory.OPERATION, + AttachmentDAO.class); AttachmentDAO(final SessionFactory sessionFactory, final DatabaseInstancePE databaseInstance) { @@ -191,8 +191,9 @@ final class AttachmentDAO extends AbstractGenericEntityDAO<AttachmentPE> impleme { if (fileName.equals(att.getFileName())) { - deletedRows++; + owner.removeAttachment(att); hibernateTemplate.delete(att); + deletedRows++; } } diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/dto/AttachmentHolderPE.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/dto/AttachmentHolderPE.java index 577c8a5b9a1fde141572e6eec050b24687a5fa8a..8c7aaa3bd87121e8a7a137e3b2c4fe5f73407c13 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/dto/AttachmentHolderPE.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/dto/AttachmentHolderPE.java @@ -48,8 +48,8 @@ public abstract class AttachmentHolderPE implements Serializable, IIdentifierHol // public static final char HIDDEN_EXPERIMENT_PROPERTY_PREFIX_CHARACTER = '$'; - public static final String HIDDEN_EXPERIMENT_PROPERTY_PREFIX = - Character.toString(HIDDEN_EXPERIMENT_PROPERTY_PREFIX_CHARACTER); + public static final String HIDDEN_EXPERIMENT_PROPERTY_PREFIX = Character + .toString(HIDDEN_EXPERIMENT_PROPERTY_PREFIX_CHARACTER); public static final String HIDDEN_EXPERIMENT_PROPERTY_PREFIX2 = HIDDEN_EXPERIMENT_PROPERTY_PREFIX + HIDDEN_EXPERIMENT_PROPERTY_PREFIX; @@ -127,6 +127,13 @@ public abstract class AttachmentHolderPE implements Serializable, IIdentifierHol getInternalAttachments().add(child); } + // Should be called ONLY before deletion of the attachment. + // Doesn't clear connection with parent - it is handled by cascade delete. + public void removeAttachment(final AttachmentPE child) + { + getInternalAttachments().remove(child); + } + public final static boolean isHiddenFile(final String fileName) { return fileName.startsWith(HIDDEN_EXPERIMENT_PROPERTY_PREFIX) diff --git a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db/AttachmentDAOTest.java b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db/AttachmentDAOTest.java index 27e5c35d99c83c4bd1e8756d056f79030d6ab65d..b0d6898a87adce214c023b38e4d8effff9e79f46 100644 --- a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db/AttachmentDAOTest.java +++ b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db/AttachmentDAOTest.java @@ -41,8 +41,7 @@ public final class AttachmentDAOTest extends AbstractDAOTest private static final String ATT_CONTENTS_TABLE = "attachment_contents"; - @Test(groups = "broken") - // FIXME + @Test public final void testDeleteAttachment() { IAttachmentDAO attachmentDAO = daoFactory.getAttachmentDAO();