Skip to content
Snippets Groups Projects
Commit 97df9ce0 authored by felmer's avatar felmer
Browse files

SP-367, BIS-242: Setting modification date and modifier when attachment added to a project.

SVN: 27614
parent c6bb3272
No related branches found
No related tags found
No related merge requests found
...@@ -27,6 +27,7 @@ import org.springframework.orm.ObjectRetrievalFailureException; ...@@ -27,6 +27,7 @@ import org.springframework.orm.ObjectRetrievalFailureException;
import ch.systemsx.cisd.common.collection.CollectionUtils; import ch.systemsx.cisd.common.collection.CollectionUtils;
import ch.systemsx.cisd.common.exceptions.UserFailureException; import ch.systemsx.cisd.common.exceptions.UserFailureException;
import ch.systemsx.cisd.openbis.generic.server.business.IRelationshipService; 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.IAttachmentDAO;
import ch.systemsx.cisd.openbis.generic.server.dataaccess.IDAOFactory; import ch.systemsx.cisd.openbis.generic.server.dataaccess.IDAOFactory;
import ch.systemsx.cisd.openbis.generic.server.dataaccess.IDeletionDAO; import ch.systemsx.cisd.openbis.generic.server.dataaccess.IDeletionDAO;
...@@ -199,9 +200,11 @@ public final class ProjectBO extends AbstractBusinessObject implements IProjectB ...@@ -199,9 +200,11 @@ public final class ProjectBO extends AbstractBusinessObject implements IProjectB
public final void addAttachment(final AttachmentPE attachment) public final void addAttachment(final AttachmentPE attachment)
{ {
assert project != null : "no project has been loaded"; assert project != null : "no project has been loaded";
attachment.setRegistrator(findPerson()); PersonPE user = findPerson();
attachment.setRegistrator(user);
escapeFileName(attachment); escapeFileName(attachment);
attachments.add(attachment); attachments.add(attachment);
RelationshipUtils.updateModificationDateAndModifier(project, user);
} }
private void escapeFileName(final AttachmentPE attachment) private void escapeFileName(final AttachmentPE attachment)
......
...@@ -19,6 +19,7 @@ package ch.systemsx.cisd.openbis.systemtest.optimistic_locking; ...@@ -19,6 +19,7 @@ package ch.systemsx.cisd.openbis.systemtest.optimistic_locking;
import static org.testng.AssertJUnit.assertEquals; import static org.testng.AssertJUnit.assertEquals;
import static org.testng.AssertJUnit.fail; import static org.testng.AssertJUnit.fail;
import java.util.Arrays;
import java.util.Collections; import java.util.Collections;
import java.util.List; import java.util.List;
...@@ -27,6 +28,7 @@ import org.testng.annotations.Test; ...@@ -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.client.web.client.exception.UserFailureException;
import ch.systemsx.cisd.openbis.generic.server.util.TimeIntervalChecker; 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.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.Experiment;
import ch.systemsx.cisd.openbis.generic.shared.basic.dto.IEntityProperty; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.IEntityProperty;
import ch.systemsx.cisd.openbis.generic.shared.basic.dto.NewAttachment; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.NewAttachment;
...@@ -35,6 +37,7 @@ import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Project; ...@@ -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.ProjectUpdates;
import ch.systemsx.cisd.openbis.generic.shared.basic.dto.builders.ExperimentTypeBuilder; 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.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.builders.AtomicEntityOperationDetailsBuilder;
import ch.systemsx.cisd.openbis.generic.shared.dto.identifier.ProjectIdentifier; import ch.systemsx.cisd.openbis.generic.shared.dto.identifier.ProjectIdentifier;
...@@ -89,7 +92,6 @@ public class ProjectOptimisticLockingTest extends OptimisticLockingTestCase ...@@ -89,7 +92,6 @@ public class ProjectOptimisticLockingTest extends OptimisticLockingTestCase
assertEquals("system", p.getRegistrator().getUserId()); assertEquals("system", p.getRegistrator().getUserId());
assertEquals("test", p.getModifier().getUserId()); assertEquals("test", p.getModifier().getUserId());
timeIntervalChecker.assertDateInInterval(p.getModificationDate()); timeIntervalChecker.assertDateInInterval(p.getModificationDate());
} }
@Test @Test
...@@ -156,4 +158,33 @@ public class ProjectOptimisticLockingTest extends OptimisticLockingTestCase ...@@ -156,4 +158,33 @@ public class ProjectOptimisticLockingTest extends OptimisticLockingTestCase
assertEquals("[OLT-E1, OLT-E2]", toolBox.extractCodes(experiments).toString()); assertEquals("[OLT-E1, OLT-E2]", toolBox.extractCodes(experiments).toString());
toolBox.checkModifierAndModificationDateOfProject1(timeIntervalChecker, ToolBox.USER_ID); 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());
}
} }
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment