From 97df9ce0bd5bae6189f8d2debf3192ca7fc94c93 Mon Sep 17 00:00:00 2001 From: felmer <felmer> Date: Wed, 14 Nov 2012 11:57:26 +0000 Subject: [PATCH] SP-367, BIS-242: Setting modification date and modifier when attachment added to a project. SVN: 27614 --- .../generic/server/business/bo/ProjectBO.java | 5 ++- .../ProjectOptimisticLockingTest.java | 33 ++++++++++++++++++- 2 files changed, 36 insertions(+), 2 deletions(-) diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/ProjectBO.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/ProjectBO.java index 7882235d9ce..714be707637 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/ProjectBO.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/ProjectBO.java @@ -27,6 +27,7 @@ import org.springframework.orm.ObjectRetrievalFailureException; import ch.systemsx.cisd.common.collection.CollectionUtils; import ch.systemsx.cisd.common.exceptions.UserFailureException; import ch.systemsx.cisd.openbis.generic.server.business.IRelationshipService; +import ch.systemsx.cisd.openbis.generic.server.business.bo.util.RelationshipUtils; import ch.systemsx.cisd.openbis.generic.server.dataaccess.IAttachmentDAO; import ch.systemsx.cisd.openbis.generic.server.dataaccess.IDAOFactory; import ch.systemsx.cisd.openbis.generic.server.dataaccess.IDeletionDAO; @@ -199,9 +200,11 @@ public final class ProjectBO extends AbstractBusinessObject implements IProjectB public final void addAttachment(final AttachmentPE attachment) { assert project != null : "no project has been loaded"; - attachment.setRegistrator(findPerson()); + PersonPE user = findPerson(); + attachment.setRegistrator(user); escapeFileName(attachment); attachments.add(attachment); + RelationshipUtils.updateModificationDateAndModifier(project, user); } private void escapeFileName(final AttachmentPE attachment) diff --git a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/systemtest/optimistic_locking/ProjectOptimisticLockingTest.java b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/systemtest/optimistic_locking/ProjectOptimisticLockingTest.java index d1d75fc9f9d..c27e8519adb 100644 --- a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/systemtest/optimistic_locking/ProjectOptimisticLockingTest.java +++ b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/systemtest/optimistic_locking/ProjectOptimisticLockingTest.java @@ -19,6 +19,7 @@ package ch.systemsx.cisd.openbis.systemtest.optimistic_locking; import static org.testng.AssertJUnit.assertEquals; import static org.testng.AssertJUnit.fail; +import java.util.Arrays; import java.util.Collections; import java.util.List; @@ -27,6 +28,7 @@ import org.testng.annotations.Test; import ch.systemsx.cisd.openbis.generic.client.web.client.exception.UserFailureException; import ch.systemsx.cisd.openbis.generic.server.util.TimeIntervalChecker; import ch.systemsx.cisd.openbis.generic.shared.basic.TechId; +import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Attachment; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Experiment; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.IEntityProperty; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.NewAttachment; @@ -35,6 +37,7 @@ import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Project; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.ProjectUpdates; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.builders.ExperimentTypeBuilder; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.builders.PropertyBuilder; +import ch.systemsx.cisd.openbis.generic.shared.dto.ProjectUpdatesDTO; import ch.systemsx.cisd.openbis.generic.shared.dto.builders.AtomicEntityOperationDetailsBuilder; import ch.systemsx.cisd.openbis.generic.shared.dto.identifier.ProjectIdentifier; @@ -89,7 +92,6 @@ public class ProjectOptimisticLockingTest extends OptimisticLockingTestCase assertEquals("system", p.getRegistrator().getUserId()); assertEquals("test", p.getModifier().getUserId()); timeIntervalChecker.assertDateInInterval(p.getModificationDate()); - } @Test @@ -156,4 +158,33 @@ public class ProjectOptimisticLockingTest extends OptimisticLockingTestCase assertEquals("[OLT-E1, OLT-E2]", toolBox.extractCodes(experiments).toString()); toolBox.checkModifierAndModificationDateOfProject1(timeIntervalChecker, ToolBox.USER_ID); } + + @Test + public void testAddAttachment() + { + ProjectIdentifier projectIdentifier = + toolBox.createProjectIdentifier(toolBox.project1.getIdentifier()); + Project p = commonServer.getProjectInfo(systemSessionToken, projectIdentifier); + ProjectUpdatesDTO updates = new ProjectUpdatesDTO(); + updates.setVersion(p.getVersion()); + updates.setTechId(new TechId(p)); + updates.setDescription(p.getDescription()); + NewAttachment attachment = new NewAttachment(); + attachment.setFilePath("greetings.txt"); + attachment.setTitle("greetings"); + attachment.setContent("hello world".getBytes()); + updates.setAttachments(Arrays.asList(attachment)); + String sessionToken = logIntoCommonClientService().getSessionID(); + TimeIntervalChecker timeIntervalChecker = new TimeIntervalChecker(); + + commonServer.updateProject(sessionToken, updates); + + p = commonServer.getProjectInfo(systemSessionToken, projectIdentifier); + assertEquals("system", p.getRegistrator().getUserId()); + toolBox.checkModifierAndModificationDateOfBean(timeIntervalChecker, p, "test"); + List<Attachment> attachments = + commonServer.listProjectAttachments(systemSessionToken, new TechId(p)); + assertEquals("greetings.txt", attachments.get(0).getFileName()); + assertEquals(1, attachments.size()); + } } -- GitLab