From f2ad3c1a97a763c6593b9f37ffc2f1e1d5c86ed0 Mon Sep 17 00:00:00 2001 From: izabel <izabel> Date: Tue, 17 Mar 2009 19:02:33 +0000 Subject: [PATCH] [LMS-780] allow to change project (2) SVN: 10269 --- .../web/client/ICommonClientService.java | 2 +- .../ui/experiment/ExperimentBrowserGrid.java | 3 ++- .../web/server/CommonClientService.java | 3 +-- .../openbis/generic/server/CommonServer.java | 15 ++++++++++-- .../server/business/bo/ExperimentBO.java | 24 +++++++------------ .../openbis/generic/shared/ICommonServer.java | 2 +- .../predicate/GroupIdentifierPredicate.java | 4 ++-- .../shared/basic/dto/EditableEntity.java | 2 +- .../shared/basic/dto/EditableExperiment.java | 15 +++++++++++- .../experiment/GenericExperimentEditForm.java | 18 +++++--------- .../shared/ICommonServer.java.expected | 2 +- 11 files changed, 51 insertions(+), 39 deletions(-) diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/ICommonClientService.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/ICommonClientService.java index e8e8fb81878..4c1724d67c8 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/ICommonClientService.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/ICommonClientService.java @@ -349,7 +349,7 @@ public interface ICommonClientService extends IClientService * Updates experiment. */ public void updateExperiment(String attachmentSessionKey, final String experimentIdentifier, - List<ExperimentProperty> properties, String newProjectIdentifierOrNull) + List<ExperimentProperty> properties, String newProjectIdentifier) throws UserFailureException; /** diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/experiment/ExperimentBrowserGrid.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/experiment/ExperimentBrowserGrid.java index 6b8d03f0331..54872c1bbad 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/experiment/ExperimentBrowserGrid.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/experiment/ExperimentBrowserGrid.java @@ -134,7 +134,8 @@ public final class ExperimentBrowserGrid extends AbstractBrowserGrid<Experiment, { return new EditableExperiment(selectedType.getExperimentTypePropertyTypes(), experiment .getProperties(), selectedType, experiment.getIdentifier(), experiment.getId(), - experiment.getModificationDate(), experiment.getProject().getIdentifier()); + experiment.getModificationDate(), experiment.getProject().getIdentifier(), + experiment.getCode()); } @Override diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/CommonClientService.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/CommonClientService.java index 55d9da4cddb..cd36cec780f 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/CommonClientService.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/CommonClientService.java @@ -998,8 +998,7 @@ public final class CommonClientService extends AbstractClientService implements final ExperimentIdentifier identifier = new ExperimentIdentifierFactory(experimentIdentifier).createIdentifier(); final ProjectIdentifier project = - newProjectIdentifier == null ? null : new ProjectIdentifierFactory( - newProjectIdentifier).createIdentifier(); + new ProjectIdentifierFactory(newProjectIdentifier).createIdentifier(); commonServer.editExperiment(sessionToken, identifier, properties, attachments, project); } catch (final UserFailureException e) { diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/CommonServer.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/CommonServer.java index 520b9e258a2..8fbfc5f9d77 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/CommonServer.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/CommonServer.java @@ -643,11 +643,22 @@ public final class CommonServer extends AbstractServer<ICommonServer> implements public void editExperiment(String sessionToken, ExperimentIdentifier identifier, List<ExperimentProperty> properties, List<AttachmentPE> attachments, - ProjectIdentifier newProjectIdentifierOrNull) + ProjectIdentifier newProjectIdentifier) { final Session session = getSessionManager().getSession(sessionToken); + if (newProjectIdentifier.equals(identifier) == false) + { + final IExternalDataTable externalDataTable = + businessObjectFactory.createExternalDataTable(session); + externalDataTable.loadByExperimentIdentifier(identifier); + if (externalDataTable.getExternalData().size() > 0) + { + throw new UserFailureException( + "Changing the project of experiment containing data sets is not allowed."); + } + } final IExperimentBO experimentBO = businessObjectFactory.createExperimentBO(session); - experimentBO.edit(identifier, properties, attachments, newProjectIdentifierOrNull); + experimentBO.edit(identifier, properties, attachments, newProjectIdentifier); experimentBO.save(); } diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/ExperimentBO.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/ExperimentBO.java index e61ff86b096..6a131248e6d 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/ExperimentBO.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/ExperimentBO.java @@ -292,11 +292,11 @@ public final class ExperimentBO extends AbstractBusinessObject implements IExper } public void edit(ExperimentIdentifier identifier, List<ExperimentProperty> properties, - List<AttachmentPE> newAttachments, ProjectIdentifier newProjectIdentifierOrNull) + List<AttachmentPE> newAttachments, ProjectIdentifier newProjectIdentifier) { loadByExperimentIdentifier(identifier); updateProperties(properties); - updateProject(newProjectIdentifierOrNull); + updateProject(newProjectIdentifier); for (AttachmentPE a : newAttachments) { addAttachment(a); @@ -304,22 +304,16 @@ public final class ExperimentBO extends AbstractBusinessObject implements IExper dataChanged = true; } - private void updateProject(ProjectIdentifier newProjectIdentifierOrNull) + private void updateProject(ProjectIdentifier newProjectIdentifier) { - if (newProjectIdentifierOrNull != null) + ProjectPE project = + getProjectDAO().tryFindProject(newProjectIdentifier.getDatabaseInstanceCode(), + newProjectIdentifier.getGroupCode(), newProjectIdentifier.getProjectCode()); + if (project == null) { - ProjectPE project = - getProjectDAO().tryFindProject( - newProjectIdentifierOrNull.getDatabaseInstanceCode(), - newProjectIdentifierOrNull.getGroupCode(), - newProjectIdentifierOrNull.getProjectCode()); - if (project == null) - { - throw UserFailureException.fromTemplate(ERR_PROJECT_NOT_FOUND, - newProjectIdentifierOrNull); - } - experiment.setProject(project); + throw UserFailureException.fromTemplate(ERR_PROJECT_NOT_FOUND, newProjectIdentifier); } + experiment.setProject(project); } private void updateProperties(List<ExperimentProperty> properties) diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/ICommonServer.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/ICommonServer.java index f98a3546fee..ed44d92b581 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/ICommonServer.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/ICommonServer.java @@ -357,7 +357,7 @@ public interface ICommonServer extends IServer ExperimentIdentifier experimentIdentifier, List<ExperimentProperty> properties, List<AttachmentPE> attachments, @AuthorizationGuard(guardClass = GroupIdentifierPredicate.class) - ProjectIdentifier newProjectIdentifierOrNull); + ProjectIdentifier newProjectIdentifier); /** * Saves changed material. diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/authorization/predicate/GroupIdentifierPredicate.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/authorization/predicate/GroupIdentifierPredicate.java index 6ac21c6c110..89b88646fd6 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/authorization/predicate/GroupIdentifierPredicate.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/authorization/predicate/GroupIdentifierPredicate.java @@ -30,7 +30,7 @@ import ch.systemsx.cisd.openbis.generic.shared.util.GroupCodeHelper; * * @author Christian Ribeaud */ -public final class GroupIdentifierPredicate extends AbstractGroupPredicate<GroupIdentifier> +public class GroupIdentifierPredicate extends AbstractGroupPredicate<GroupIdentifier> { public GroupIdentifierPredicate() { @@ -47,7 +47,7 @@ public final class GroupIdentifierPredicate extends AbstractGroupPredicate<Group } @Override - final Status doEvaluation(final PersonPE person, final List<RoleWithIdentifier> allowedRoles, + Status doEvaluation(final PersonPE person, final List<RoleWithIdentifier> allowedRoles, final GroupIdentifier groupIdentifier) { assert inited : "Predicate has not been initialized"; diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/EditableEntity.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/EditableEntity.java index 64b1bf6a329..c72b1ad356e 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/EditableEntity.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/EditableEntity.java @@ -34,7 +34,7 @@ public class EditableEntity<T extends EntityType, S extends EntityTypePropertyTy private final T type; - private final String identifier; + protected String identifier; private final Long id; diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/EditableExperiment.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/EditableExperiment.java index 64232ca2861..5e258c5ae43 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/EditableExperiment.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/EditableExperiment.java @@ -28,12 +28,15 @@ public class EditableExperiment extends private final String project; + private String code; + public EditableExperiment(List<ExperimentTypePropertyType> etpts, List<ExperimentProperty> properties, ExperimentType type, String identifier, Long id, - Date modificationDate, String project) + Date modificationDate, String project, String code) { super(EntityKind.EXPERIMENT, etpts, properties, type, identifier, id, modificationDate); this.project = project; + this.code = code; } public String getProjectIdentifier() @@ -41,4 +44,14 @@ public class EditableExperiment extends return project; } + public void setIdentifier(String identifier) + { + this.identifier = identifier; + } + + public String getCode() + { + return code; + } + } diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/application/experiment/GenericExperimentEditForm.java b/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/application/experiment/GenericExperimentEditForm.java index 1ac2ea4d5e4..e97ddcbef32 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/application/experiment/GenericExperimentEditForm.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/application/experiment/GenericExperimentEditForm.java @@ -125,22 +125,14 @@ public final class GenericExperimentEditForm private void save() { final List<ExperimentProperty> properties = extractProperties(); - final String newProjectIdentifierOrNull = extractIdentifier(); - viewContext.getCommonService() - .updateExperiment(sessionKey, entity.getIdentifier(), properties, - newProjectIdentifierOrNull, new RegisterExperimentCallback(viewContext)); + final String newProjectIdentifier = extractIdentifier(); + viewContext.getCommonService().updateExperiment(sessionKey, entity.getIdentifier(), + properties, newProjectIdentifier, new RegisterExperimentCallback(viewContext)); } private String extractIdentifier() { - final String newIdentifier = projectChooser.tryGetSelectedProject().getIdentifier(); - if (originalProjectIdentifier.equals(newIdentifier)) - { - return null; - } else - { - return newIdentifier; - } + return projectChooser.tryGetSelectedProject().getIdentifier(); } @Override @@ -202,6 +194,8 @@ public final class GenericExperimentEditForm protected void updateCheckPageWidgets() { projectChooser.updateOriginalValue(); + originalProjectIdentifier = projectChooser.tryGetSelectedProject().getIdentifier(); + entity.setIdentifier(originalProjectIdentifier + "/" + entity.getCode()); attachmentsInfo.setHtml(getAttachmentInfoText(attachmentManager.attachmentsDefined())); } diff --git a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/shared/ICommonServer.java.expected b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/shared/ICommonServer.java.expected index 674440954b1..01ec154a004 100644 --- a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/shared/ICommonServer.java.expected +++ b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/shared/ICommonServer.java.expected @@ -357,7 +357,7 @@ public interface ICommonServer extends IServer ExperimentIdentifier experimentIdentifier, List<ExperimentProperty> properties, List<AttachmentPE> attachments, @AuthorizationGuard(guardClass = GroupIdentifierPredicate.class) - ProjectIdentifier newProjectIdentifierOrNull); + ProjectIdentifier newProjectIdentifier); /** * Saves changed material. -- GitLab