From 6373d46f21c4b564124d2aeaedbb8a80c77a4580 Mon Sep 17 00:00:00 2001 From: cramakri <cramakri> Date: Tue, 19 Jul 2011 11:18:46 +0000 Subject: [PATCH] LMS-2392 Support returning registration details in the experiment. SVN: 22208 --- .../generic/server/api/v1/Translator.java | 20 ++ .../api/v1/dto/EntityRegistrationDetails.java | 186 ++++++++++++++++++ .../generic/shared/api/v1/dto/Experiment.java | 34 +++- .../api/v1/GeneralInformationServiceTest.java | 11 +- 4 files changed, 249 insertions(+), 2 deletions(-) create mode 100644 openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/api/v1/dto/EntityRegistrationDetails.java diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/api/v1/Translator.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/api/v1/Translator.java index 1254f103109..63d2e26f038 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/api/v1/Translator.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/api/v1/Translator.java @@ -34,6 +34,7 @@ import ch.systemsx.cisd.openbis.generic.shared.api.v1.dto.DataSet.Connections; import ch.systemsx.cisd.openbis.generic.shared.api.v1.dto.DataSet.DataSetInitializer; import ch.systemsx.cisd.openbis.generic.shared.api.v1.dto.DataSetType; import ch.systemsx.cisd.openbis.generic.shared.api.v1.dto.DataSetType.DataSetTypeInitializer; +import ch.systemsx.cisd.openbis.generic.shared.api.v1.dto.EntityRegistrationDetails; import ch.systemsx.cisd.openbis.generic.shared.api.v1.dto.Experiment; import ch.systemsx.cisd.openbis.generic.shared.api.v1.dto.Experiment.ExperimentInitializer; import ch.systemsx.cisd.openbis.generic.shared.api.v1.dto.Project; @@ -47,6 +48,7 @@ import ch.systemsx.cisd.openbis.generic.shared.api.v1.dto.Sample.SampleInitializ import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DataTypeCode; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.ExternalData; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.IEntityProperty; +import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Person; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.RoleWithHierarchy.RoleCode; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.RoleWithHierarchy.RoleLevel; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.VocabularyTerm; @@ -147,6 +149,10 @@ public class Translator initializer.putProperty(prop.getPropertyType().getCode(), prop.tryGetAsString()); } + EntityRegistrationDetails registrationDetails = + translateRegistrationDetails(privateExperiment); + initializer.setRegistrationDetails(registrationDetails); + return new Experiment(initializer); } @@ -297,6 +303,20 @@ public class Translator return new DataSet(initializer); } + private static EntityRegistrationDetails translateRegistrationDetails( + ch.systemsx.cisd.openbis.generic.shared.basic.dto.CodeWithRegistration<?> thingWithRegistrationDetails) + { + Person registrator = thingWithRegistrationDetails.getRegistrator(); + EntityRegistrationDetails.EntityRegistrationDetailsInitializer initializer = + new EntityRegistrationDetails.EntityRegistrationDetailsInitializer(); + initializer.setEmail(registrator.getEmail()); + initializer.setFirstName(registrator.getFirstName()); + initializer.setLastName(registrator.getLastName()); + initializer.setUserId(registrator.getUserId()); + initializer.setRegistrationDate(thingWithRegistrationDetails.getRegistrationDate()); + return new EntityRegistrationDetails(initializer); + } + private Translator() { } diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/api/v1/dto/EntityRegistrationDetails.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/api/v1/dto/EntityRegistrationDetails.java new file mode 100644 index 00000000000..fade38d0056 --- /dev/null +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/api/v1/dto/EntityRegistrationDetails.java @@ -0,0 +1,186 @@ +/* + * Copyright 2011 ETH Zuerich, CISD + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package ch.systemsx.cisd.openbis.generic.shared.api.v1.dto; + +import java.io.Serializable; +import java.util.Date; + +import org.apache.commons.lang.builder.EqualsBuilder; +import org.apache.commons.lang.builder.HashCodeBuilder; +import org.apache.commons.lang.builder.ToStringBuilder; +import org.apache.commons.lang.builder.ToStringStyle; + +/** + * A class that encapsulates the details about entity registration. + * + * @author Chandrasekhar Ramakrishnan + */ +public class EntityRegistrationDetails implements Serializable +{ + private static final long serialVersionUID = 1L; + + /** + * Class used to initialize an EntityRegistrationDetails object. + * + * @author Chandrasekhar Ramakrishnan + */ + public static class EntityRegistrationDetailsInitializer + { + private String firstName; + + private String lastName; + + private String email; + + private String userId; + + private Date registrationDate; + + public String getFirstName() + { + return firstName; + } + + public void setFirstName(String firstName) + { + this.firstName = firstName; + } + + public String getLastName() + { + return lastName; + } + + public void setLastName(String lastName) + { + this.lastName = lastName; + } + + public String getEmail() + { + return email; + } + + public void setEmail(String email) + { + this.email = email; + } + + public String getUserId() + { + return userId; + } + + public void setUserId(String userId) + { + this.userId = userId; + } + + public Date getRegistrationDate() + { + return registrationDate; + } + + public void setRegistrationDate(Date registrationDate) + { + this.registrationDate = registrationDate; + } + + } + + private final String userFirstName; + + private final String userLastName; + + private final String userEmail; + + private final String userId; + + private final Date registrationDate; + + public EntityRegistrationDetails(EntityRegistrationDetailsInitializer initializer) + { + this.userFirstName = initializer.getFirstName(); + this.userLastName = initializer.getLastName(); + this.userEmail = initializer.getEmail(); + this.userId = initializer.getUserId(); + this.registrationDate = initializer.getRegistrationDate(); + } + + public String getUserFirstName() + { + return userFirstName; + } + + public String getUserLastName() + { + return userLastName; + } + + public String getUserEmail() + { + return userEmail; + } + + public String getUserId() + { + return userId; + } + + public Date getRegistrationDate() + { + return registrationDate; + } + + @Override + public boolean equals(Object obj) + { + if (obj == this) + { + return true; + } + if (obj instanceof EntityRegistrationDetails == false) + { + return false; + } + + EqualsBuilder builder = new EqualsBuilder(); + EntityRegistrationDetails other = (EntityRegistrationDetails) obj; + builder.append(getUserId(), other.getUserId()); + builder.append(getRegistrationDate(), other.getRegistrationDate()); + return builder.isEquals(); + } + + @Override + public int hashCode() + { + HashCodeBuilder builder = new HashCodeBuilder(); + builder.append(getUserId()); + builder.append(getRegistrationDate()); + return builder.toHashCode(); + } + + @Override + public String toString() + { + ToStringBuilder builder = new ToStringBuilder(this, ToStringStyle.SHORT_PREFIX_STYLE); + builder.append(getUserId()); + builder.append(getRegistrationDate()); + return builder.toString(); + } + +} diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/api/v1/dto/Experiment.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/api/v1/dto/Experiment.java index ac09770b102..7ca76ad3aa5 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/api/v1/dto/Experiment.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/api/v1/dto/Experiment.java @@ -56,6 +56,8 @@ public final class Experiment implements Serializable private String experimentTypeCode; + private EntityRegistrationDetails registrationDetails; + private HashMap<String, String> properties = new HashMap<String, String>(); public void setId(Long id) @@ -117,6 +119,16 @@ public final class Experiment implements Serializable { properties.put(propCode, value); } + + public void setRegistrationDetails(EntityRegistrationDetails registrationDetails) + { + this.registrationDetails = registrationDetails; + } + + public EntityRegistrationDetails getRegistrationDetails() + { + return registrationDetails; + } } private final Long id; @@ -129,6 +141,8 @@ public final class Experiment implements Serializable private final String experimentTypeCode; + private final EntityRegistrationDetails registrationDetails; + private final HashMap<String, String> properties; /** @@ -150,9 +164,13 @@ public final class Experiment implements Serializable checkValidString(initializer.getIdentifier(), "Unspecified identifier."); this.identifier = initializer.getIdentifier(); - checkValidString(initializer.getExperimentTypeCode(), "Unspecified eperiment type code."); + checkValidString(initializer.getExperimentTypeCode(), "Unspecified experiment type code."); this.experimentTypeCode = initializer.getExperimentTypeCode(); + checkValidRegistrationDetails(initializer.getRegistrationDetails(), + "Unspecified entity registration details."); + this.registrationDetails = initializer.getRegistrationDetails(); + this.properties = initializer.getProperties(); } @@ -172,6 +190,15 @@ public final class Experiment implements Serializable } } + private void checkValidRegistrationDetails(EntityRegistrationDetails details, String message) + throws IllegalArgumentException + { + if (details == null) + { + throw new IllegalArgumentException(message); + } + } + /** * Returns the experiment id. */ @@ -212,6 +239,11 @@ public final class Experiment implements Serializable return experimentTypeCode; } + public EntityRegistrationDetails getRegistrationDetails() + { + return registrationDetails; + } + public Map<String, String> getProperties() { return Collections.unmodifiableMap(properties); diff --git a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/server/api/v1/GeneralInformationServiceTest.java b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/server/api/v1/GeneralInformationServiceTest.java index 544ed7949b6..30a0c4139ce 100644 --- a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/server/api/v1/GeneralInformationServiceTest.java +++ b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/server/api/v1/GeneralInformationServiceTest.java @@ -20,6 +20,7 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; import java.util.Comparator; +import java.util.Date; import java.util.List; import java.util.Map; import java.util.Map.Entry; @@ -48,6 +49,7 @@ import ch.systemsx.cisd.openbis.generic.shared.basic.TechId; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DataSetRelatedEntities; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DetailedSearchCriteria; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.ExperimentType; +import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Person; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.RoleWithHierarchy.RoleCode; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.SampleType; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.builders.DataSetBuilder; @@ -446,10 +448,17 @@ public class GeneralInformationServiceTest extends AbstractServerTestCase one(commonServer).listExperiments(SESSION_TOKEN, returnExperimentType, projectIdentifier); + Person registrator = new Person(); + registrator.setEmail("mail@mail.com"); + registrator.setFirstName("First"); + registrator.setLastName("Last"); + registrator.setUserId("personId"); + ExperimentBuilder experiment = new ExperimentBuilder().id(1L).code("EXP-CODE").permID("EXP-PERMID") .identifier("/SPACE-1/PROJECT-1/EXP-CODE") - .type(returnExperimentType.getCode()); + .type(returnExperimentType.getCode()).registrator(registrator) + .date(new Date()); will(returnValue(Collections.singletonList(experiment.getExperiment()))); } }); -- GitLab