diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/ICommonClientServiceAsync.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/ICommonClientServiceAsync.java index 6ed10c2de27e307398ba643eb283e122556f44f7..1ec39f567665bbb4df6a9ab510bcb51db3d915cc 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/ICommonClientServiceAsync.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/ICommonClientServiceAsync.java @@ -712,7 +712,7 @@ public interface ICommonClientServiceAsync extends IClientServiceAsync /** * @see ICommonClientService#removePersonsFromAuthorizationGroup(TechId, List) */ - public void removePersonsFromAuthorizationGroup(TechId create, List<String> extractCodes, + public void removePersonsFromAuthorizationGroup(TechId create, List<String> personsCodes, AsyncCallback<Void> callback); // -- custom grid filters diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/CodesArea.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/CodesArea.java index ad41660b43c04c7b95b7bdf39f17bbe2aaa29c7f..5b6826116b8767164efe119722f8dba8688a45cb 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/CodesArea.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/CodesArea.java @@ -39,17 +39,17 @@ abstract public class CodesArea<T extends ICodeHolder> extends MultilineVarcharF public final void setCodeProviders(List<T> codeProviders) { List<String> codes = Code.extractCodes(codeProviders); - setCodes(codes.toArray(new String[0])); + setCodes(codes); } - public final void setCodes(String[] codes) + public final void setCodes(List<String> codes) { String textValue = createTextValue(codes); setValue(textValue); setOriginalValue(textValue); } - private static String createTextValue(String[] codes) + private static String createTextValue(List<String> codes) { StringBuffer sb = new StringBuffer(); for (String code : codes) diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/data/DataSetParentsArea.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/data/DataSetParentsArea.java index e384547dd749cfef25d046877574ae0312f0bfa5..0026f969a8240e775fd18f67ba2fb7fdf7ce1383 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/data/DataSetParentsArea.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/data/DataSetParentsArea.java @@ -37,7 +37,7 @@ public final class DataSetParentsArea extends CodesArea<ExternalData> public DataSetParentsArea(IMessageProvider messageProvider, String idPrefix) { super(messageProvider.getMessage(Dict.PARENTS_EMPTY)); - this.setFieldLabel(messageProvider.getMessage(Dict.PARENTS)); + this.setFieldLabel(messageProvider.getMessage(Dict.PARENTS)); setId(createId(idPrefix)); } @@ -60,7 +60,7 @@ public final class DataSetParentsArea extends CodesArea<ExternalData> setCodeProviders(parents); } - public final void setParentCodes(String[] parentCodes) + public final void setParentCodes(List<String> parentCodes) { setCodes(parentCodes); } diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/Code.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/Code.java index 964f1f39467c60659163b0c1c2cdc7aa8d0f4bca..db5d97ccdf697ec7df539dcbe20ead4ff700aef8 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/Code.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/Code.java @@ -18,6 +18,7 @@ package ch.systemsx.cisd.openbis.generic.shared.basic.dto; import java.io.Serializable; import java.util.ArrayList; +import java.util.Collection; import java.util.Comparator; import java.util.List; @@ -102,7 +103,7 @@ public class Code<T extends Code<T>> implements IsSerializable, ICodeHolder, Com // Helper classes // - public final static List<String> extractCodes(List<? extends ICodeHolder> codeProviders) + public final static List<String> extractCodes(Collection<? extends ICodeHolder> codeProviders) { List<String> codes = new ArrayList<String>(); for (ICodeHolder codeProvider : codeProviders) diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/DataSetUpdateResult.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/DataSetUpdateResult.java index f9747e870392a9d4814929d5966fa4f76a4bb0c9..93383b060dcd5cfa3411491f3ec22270eba14b3d 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/DataSetUpdateResult.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/DataSetUpdateResult.java @@ -18,6 +18,7 @@ package ch.systemsx.cisd.openbis.generic.shared.basic.dto; import java.io.Serializable; import java.util.Date; +import java.util.List; import com.google.gwt.user.client.rpc.IsSerializable; @@ -32,7 +33,7 @@ public class DataSetUpdateResult implements IsSerializable, Serializable Date modificationDate; - String[] parentCodes; + List<String> parentCodes; public DataSetUpdateResult() { @@ -48,12 +49,12 @@ public class DataSetUpdateResult implements IsSerializable, Serializable this.modificationDate = modificationDate; } - public String[] getParentCodes() + public List<String> getParentCodes() { return parentCodes; } - public void setParentCodes(String[] parentCodes) + public void setParentCodes(List<String> parentCodes) { this.parentCodes = parentCodes; } diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/ExperimentUpdateResult.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/ExperimentUpdateResult.java index 9e46768454df687005e079f95df89676611bc753..ad70b021221a9b2a86a1ae062df471f8848eeca2 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/ExperimentUpdateResult.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/ExperimentUpdateResult.java @@ -18,6 +18,7 @@ package ch.systemsx.cisd.openbis.generic.shared.basic.dto; import java.io.Serializable; import java.util.Date; +import java.util.List; import com.google.gwt.user.client.rpc.IsSerializable; @@ -32,7 +33,7 @@ public class ExperimentUpdateResult implements IsSerializable, Serializable private Date modificationDate; - private String[] samples; + private List<String> samples; public ExperimentUpdateResult() { @@ -48,12 +49,12 @@ public class ExperimentUpdateResult implements IsSerializable, Serializable this.modificationDate = modificationDate; } - public String[] getSamples() + public List<String> getSamples() { return samples; } - public void setSamples(String[] samples) + public void setSamples(List<String> samples) { this.samples = samples; } diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/SampleUpdateResult.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/SampleUpdateResult.java new file mode 100644 index 0000000000000000000000000000000000000000..11e9b3773a291778bf2b2d1017a915d7f64cd97f --- /dev/null +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/SampleUpdateResult.java @@ -0,0 +1,68 @@ +/* + * Copyright 2009 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.basic.dto; + +import java.io.Serializable; +import java.util.Date; +import java.util.List; + +import com.google.gwt.user.client.rpc.IsSerializable; + +/** + * Stores result of sample update. + * + * @author Piotr Buczek + */ +public class SampleUpdateResult implements IsSerializable, Serializable +{ + private static final long serialVersionUID = ServiceVersionHolder.VERSION; + + private Date modificationDate; + + private List<String> parents; + + public SampleUpdateResult() + { + } + + public Date getModificationDate() + { + return modificationDate; + } + + public void setModificationDate(Date modificationDate) + { + this.modificationDate = modificationDate; + } + + public List<String> getParents() + { + return parents; + } + + public void setParents(List<String> parents) + { + this.parents = parents; + } + + public void copyFrom(SampleUpdateResult result) + { + setParents(result.getParents()); + setModificationDate(result.getModificationDate()); + } + +} diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/dto/DataPE.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/dto/DataPE.java index f8cca9d9b23d7a5d4427f24cd06b788db4b514ca..56f70c98432c95f6588f622901a759972af65437 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/dto/DataPE.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/dto/DataPE.java @@ -59,6 +59,7 @@ import org.hibernate.validator.Pattern; import ch.rinn.restrictions.Friend; import ch.systemsx.cisd.common.collections.UnmodifiableSetDecorator; import ch.systemsx.cisd.openbis.generic.shared.IServer; +import ch.systemsx.cisd.openbis.generic.shared.basic.ICodeHolder; import ch.systemsx.cisd.openbis.generic.shared.basic.IIdentifierHolder; import ch.systemsx.cisd.openbis.generic.shared.dto.hibernate.SearchFieldConstants; import ch.systemsx.cisd.openbis.generic.shared.dto.properties.EntityKind; @@ -78,7 +79,7 @@ import ch.systemsx.cisd.openbis.generic.shared.util.HibernateUtils; @Inheritance(strategy = InheritanceType.JOINED) @Friend(toClasses = EventPE.class) public class DataPE extends AbstractIdAndCodeHolder<DataPE> implements IEntityPropertiesHolder, - IEntityInformationHolderDTO, IIdentifierHolder + IEntityInformationHolderDTO, IIdentifierHolder, ICodeHolder { private static final long serialVersionUID = IServer.VERSION; @@ -494,4 +495,4 @@ public class DataPE extends AbstractIdAndCodeHolder<DataPE> implements IEntityPr { return getCode(); } -} +} \ No newline at end of file diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/IGenericClientService.java b/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/IGenericClientService.java index 95e694112aa411a4f1041bf2a8f78601934b8b9d..dc74bd66471c812db994d88bfdc60af78ffb4fc0 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/IGenericClientService.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/IGenericClientService.java @@ -38,6 +38,7 @@ import ch.systemsx.cisd.openbis.generic.shared.basic.dto.NewSample; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Sample; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.SampleParentWithDerived; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.SampleType; +import ch.systemsx.cisd.openbis.generic.shared.basic.dto.SampleUpdateResult; /** * Service interface for the generic GWT client. @@ -128,7 +129,7 @@ public interface IGenericClientService extends IClientService /** * Updates sample. */ - public Date updateSample(SampleUpdates updates) throws UserFailureException; + public SampleUpdateResult updateSample(SampleUpdates updates) throws UserFailureException; /** * Updates data set. diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/IGenericClientServiceAsync.java b/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/IGenericClientServiceAsync.java index 4331819ee73e9926038ad0f36daaec2f0ade5ac3..2826303cacd3b31ce5f152694a1b6d1bf37fe28b 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/IGenericClientServiceAsync.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/IGenericClientServiceAsync.java @@ -40,6 +40,7 @@ import ch.systemsx.cisd.openbis.generic.shared.basic.dto.NewSample; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Sample; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.SampleParentWithDerived; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.SampleType; +import ch.systemsx.cisd.openbis.generic.shared.basic.dto.SampleUpdateResult; /** * Asynchronous version of {@link IGenericClientService}. @@ -120,8 +121,8 @@ public interface IGenericClientServiceAsync extends IClientServiceAsync /** * @see IGenericClientService#updateSample(SampleUpdates) */ - public void updateSample(SampleUpdates updates, final AsyncCallback<Date> asyncCallback) - throws UserFailureException; + public void updateSample(SampleUpdates updates, + final AsyncCallback<SampleUpdateResult> asyncCallback) throws UserFailureException; /** * @see IGenericClientService#updateDataSet(DataSetUpdates) diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/application/dataset/GenericDataSetEditForm.java b/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/application/dataset/GenericDataSetEditForm.java index 1a6b8e240af4583b7b2727383cb5dac2c28c1d60..86e9d315a157ddcbdf83e925b87c6812ff6188e4 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/application/dataset/GenericDataSetEditForm.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/application/dataset/GenericDataSetEditForm.java @@ -184,7 +184,7 @@ public final class GenericDataSetEditForm extends } } - private void updateOriginalValues(String[] parentCodes) + private void updateOriginalValues(List<String> parentCodes) { updatePropertyFieldsOriginalValues(); sampleChooser.updateOriginalValue(); 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 6ceae1d005e9adf774a5fc2229339094ebacc7e1..cf74efb6458c051e849dfb98e7a4799726c9e9aa 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 @@ -16,6 +16,8 @@ package ch.systemsx.cisd.openbis.plugin.generic.client.web.client.application.experiment; +import java.util.List; + import ch.systemsx.cisd.openbis.generic.client.web.client.application.AbstractAsyncCallback; import ch.systemsx.cisd.openbis.generic.client.web.client.application.ActionContext; import ch.systemsx.cisd.openbis.generic.client.web.client.application.Dict; @@ -123,7 +125,7 @@ public final class GenericExperimentEditForm extends AbstractGenericExperimentRe } - public void updateOriginalValues(String[] samples) + public void updateOriginalValues(List<String> samples) { updatePropertyFieldsOriginalValues(); updateFieldOriginalValue(projectChooser); diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/application/sample/GenericSampleEditForm.java b/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/application/sample/GenericSampleEditForm.java index e39feb2386ff93f23e5259b5edf8e9451f27db2f..dc62f5740f3649dd426ff70aaf80d0e9044fc62a 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/application/sample/GenericSampleEditForm.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/application/sample/GenericSampleEditForm.java @@ -16,7 +16,6 @@ package ch.systemsx.cisd.openbis.plugin.generic.client.web.client.application.sample; -import java.util.Date; import java.util.List; import ch.systemsx.cisd.common.shared.basic.utils.StringUtils; @@ -33,6 +32,7 @@ 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; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Sample; +import ch.systemsx.cisd.openbis.generic.shared.basic.dto.SampleUpdateResult; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Space; import ch.systemsx.cisd.openbis.plugin.generic.client.web.client.IGenericClientServiceAsync; @@ -75,7 +75,7 @@ public final class GenericSampleEditForm extends AbstractGenericSampleRegisterEd } private final class UpdateSampleCallback extends - AbstractRegistrationForm.AbstractRegistrationCallback<Date> + AbstractRegistrationForm.AbstractRegistrationCallback<SampleUpdateResult> { UpdateSampleCallback(final IViewContext<?> viewContext) @@ -84,28 +84,28 @@ public final class GenericSampleEditForm extends AbstractGenericSampleRegisterEd } @Override - protected void process(final Date result) + protected void process(final SampleUpdateResult result) { - originalSample.setModificationDate(result); - updateOriginalValues(); + originalSample.setModificationDate(result.getModificationDate()); + updateOriginalValues(result.getParents()); super.process(result); } @Override - protected String createSuccessfullRegistrationInfo(Date result) + protected String createSuccessfullRegistrationInfo(SampleUpdateResult result) { return "Sample successfully updated"; } } - public void updateOriginalValues() + public void updateOriginalValues(List<String> parents) { updatePropertyFieldsOriginalValues(); experimentField.updateOriginalValue(); updateFieldOriginalValue(groupSelectionWidget); container.updateOriginalValue(); parent.updateOriginalValue(); - updateFieldOriginalValue(parentsArea); + parentsArea.setSampleCodes(parents); } private void setOriginalSample(Sample sample) diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/application/sample/SamplesArea.java b/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/application/sample/SamplesArea.java index 49f6d4405bf6a5588d0badf0ad5dad8779dda4b8..2354cbaa0bb2f0c25dff1c04bcfc187800f7e983 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/application/sample/SamplesArea.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/application/sample/SamplesArea.java @@ -47,7 +47,7 @@ abstract public class SamplesArea extends CodesArea<Sample> setCodeProviders(samples); } - public final void setSampleCodes(String[] codes) + public final void setSampleCodes(List<String> codes) { setCodes(codes); } diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/server/GenericClientService.java b/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/server/GenericClientService.java index d94c67b5d2045a1e6a331267849cd9d15c1dd8dc..7ccdaa4edc324044bb06e776e2e1f004c47533a3 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/server/GenericClientService.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/server/GenericClientService.java @@ -58,6 +58,7 @@ import ch.systemsx.cisd.openbis.generic.shared.basic.dto.NewSample; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Sample; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.SampleParentWithDerived; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.SampleType; +import ch.systemsx.cisd.openbis.generic.shared.basic.dto.SampleUpdateResult; import ch.systemsx.cisd.openbis.generic.shared.dto.DataSetUpdatesDTO; import ch.systemsx.cisd.openbis.generic.shared.dto.ExperimentUpdatesDTO; import ch.systemsx.cisd.openbis.generic.shared.dto.SampleUpdatesDTO; @@ -319,11 +320,11 @@ public class GenericClientService extends AbstractClientService implements IGene } } - public Date updateSample(final SampleUpdates updates) + public SampleUpdateResult updateSample(final SampleUpdates updates) throws ch.systemsx.cisd.openbis.generic.client.web.client.exception.UserFailureException { final String sessionToken = getSessionToken(); - final Date modificationDate = new Date(); + final SampleUpdateResult result = new SampleUpdateResult(); new AttachmentRegistrationHelper() { @Override @@ -344,17 +345,17 @@ public class GenericClientService extends AbstractClientService implements IGene new SampleIdentifierFactory(updates.getSampleIdentifier()) .createIdentifier(); } - Date date = + SampleUpdateResult updateResult = genericServer.updateSample(sessionToken, new SampleUpdatesDTO(updates .getSampleIdOrNull(), updates.getProperties(), convExperimentIdentifierOrNull, attachments, updates .getVersion(), sampleOwner, updates .getParentIdentifierOrNull(), updates .getContainerIdentifierOrNull())); - modificationDate.setTime(date.getTime()); + result.copyFrom(updateResult); } }.process(updates.getSessionKey(), getHttpSession(), updates.getAttachments()); - return modificationDate; + return result; } public Date updateMaterial(TechId materialId, List<IEntityProperty> properties, Date version) diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/server/GenericServer.java b/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/server/GenericServer.java index 4663d99cf6f6c9952d65d464f56abee1b34127fc..105979dc8b67521b312f28c5705aa8fa69d4ddf6 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/server/GenericServer.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/server/GenericServer.java @@ -55,6 +55,7 @@ import ch.systemsx.cisd.openbis.generic.server.plugin.ISampleTypeSlaveServerPlug import ch.systemsx.cisd.openbis.generic.shared.ICommonServer; import ch.systemsx.cisd.openbis.generic.shared.basic.TechId; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.AttachmentWithContent; +import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Code; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DataSetUpdateResult; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Experiment; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.ExperimentUpdateResult; @@ -74,9 +75,9 @@ import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Sample; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.SampleBatchUpdateDetails; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.SampleParentWithDerived; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.SampleType; +import ch.systemsx.cisd.openbis.generic.shared.basic.dto.SampleUpdateResult; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.UpdatedSample; import ch.systemsx.cisd.openbis.generic.shared.dto.CodeConverter; -import ch.systemsx.cisd.openbis.generic.shared.dto.DataPE; import ch.systemsx.cisd.openbis.generic.shared.dto.DataSetTypePE; import ch.systemsx.cisd.openbis.generic.shared.dto.DataSetUpdatesDTO; import ch.systemsx.cisd.openbis.generic.shared.dto.EntityTypePE; @@ -304,12 +305,12 @@ public final class GenericServer extends AbstractServer<IGenericServer> implemen public void execute(List<NewSample> newSamples) { List<Sample> existingSamples = new ArrayList<Sample>(); - List<String> extractCodes = SampleRegisterOrUpdateUtil.extractCodes(newSamples, false); + List<String> codes = SampleRegisterOrUpdateUtil.extractCodes(newSamples, false); List<Sample> list = sampleLister.list(SampleRegisterOrUpdateUtil - .createListSamplesByCodeCriteria(extractCodes)); + .createListSamplesByCodeCriteria(codes)); existingSamples.addAll(list); - List<String> codes = SampleRegisterOrUpdateUtil.extractCodes(newSamples, true); + codes = SampleRegisterOrUpdateUtil.extractCodes(newSamples, true); ListOrSearchSampleCriteria criteria = SampleRegisterOrUpdateUtil.createListSamplesByCodeCriteria(codes); List<Sample> existingContainers = sampleLister.list(criteria); @@ -657,23 +658,10 @@ public final class GenericServer extends AbstractServer<IGenericServer> implemen ExperimentUpdateResult result = new ExperimentUpdateResult(); ExperimentPE experiment = experimentBO.getExperiment(); result.setModificationDate(experiment.getModificationDate()); - result.setSamples(extractSampleCodes(experiment.getSamples())); + result.setSamples(Code.extractCodes(experiment.getSamples())); return result; } - @Private - static final String[] extractSampleCodes(List<SamplePE> samples) - { - String[] codes = new String[samples.size()]; - int i = 0; - for (SamplePE samplePE : samples) - { - codes[i] = IdentifierHelper.extractCode(samplePE); - i++; - } - return codes; - } - public Date updateMaterial(String sessionToken, TechId materialId, List<IEntityProperty> properties, Date version) { @@ -684,13 +672,17 @@ public final class GenericServer extends AbstractServer<IGenericServer> implemen return materialBO.getMaterial().getModificationDate(); } - public Date updateSample(String sessionToken, SampleUpdatesDTO updates) + public SampleUpdateResult updateSample(String sessionToken, SampleUpdatesDTO updates) { final Session session = getSession(sessionToken); final ISampleBO sampleBO = businessObjectFactory.createSampleBO(session); sampleBO.update(updates); sampleBO.save(); - return sampleBO.getSample().getModificationDate(); + SampleUpdateResult result = new SampleUpdateResult(); + SamplePE sample = sampleBO.getSample(); + result.setModificationDate(sample.getModificationDate()); + result.setParents(Code.extractCodes(sample.getParents())); + return result; } public DataSetUpdateResult updateDataSet(String sessionToken, DataSetUpdatesDTO updates) @@ -701,23 +693,10 @@ public final class GenericServer extends AbstractServer<IGenericServer> implemen DataSetUpdateResult result = new DataSetUpdateResult(); ExternalDataPE externalData = dataSetBO.getExternalData(); result.setModificationDate(externalData.getModificationDate()); - result.setParentCodes(extractDataSetCodes(externalData.getParents())); + result.setParentCodes(Code.extractCodes(externalData.getParents())); return result; } - @Private - static final String[] extractDataSetCodes(Collection<DataPE> dataSets) - { - String[] codes = new String[dataSets.size()]; - int i = 0; - for (DataPE dataPE : dataSets) - { - codes[i] = dataPE.getCode(); - i++; - } - return codes; - } - public void registerOrUpdateMaterials(String sessionToken, String materialTypeCode, List<NewMaterial> materials) { diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/server/GenericServerLogger.java b/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/server/GenericServerLogger.java index 9e9dfb7580c0aec1c6d5a534410bfb18f50f1018..10e0c04ced8cc0643b6404947dad286d6678f4db 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/server/GenericServerLogger.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/server/GenericServerLogger.java @@ -41,6 +41,7 @@ import ch.systemsx.cisd.openbis.generic.shared.basic.dto.NewMaterial; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.NewSample; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.NewSamplesWithTypes; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.SampleParentWithDerived; +import ch.systemsx.cisd.openbis.generic.shared.basic.dto.SampleUpdateResult; import ch.systemsx.cisd.openbis.generic.shared.dto.DataSetUpdatesDTO; import ch.systemsx.cisd.openbis.generic.shared.dto.ExperimentUpdatesDTO; import ch.systemsx.cisd.openbis.generic.shared.dto.SampleUpdatesDTO; @@ -164,7 +165,7 @@ final class GenericServerLogger extends AbstractServerLogger implements IGeneric return null; } - public Date updateSample(String sessionToken, SampleUpdatesDTO updates) + public SampleUpdateResult updateSample(String sessionToken, SampleUpdatesDTO updates) { logTracking(sessionToken, "edit_sample", "SAMPLE(%s), CHANGE_TO_EXPERIMENT(%s) ATTACHMENTS(%s)", diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/shared/IGenericServer.java b/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/shared/IGenericServer.java index edd520597c0605d6d166d61a4bc9ca0482d7146f..262c53d20f20625db744157f217a0390f507fc5e 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/shared/IGenericServer.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/shared/IGenericServer.java @@ -55,6 +55,7 @@ import ch.systemsx.cisd.openbis.generic.shared.basic.dto.NewSamplesWithTypes; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.RoleWithHierarchy; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Sample; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.SampleParentWithDerived; +import ch.systemsx.cisd.openbis.generic.shared.basic.dto.SampleUpdateResult; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DatabaseModificationKind.ObjectKind; import ch.systemsx.cisd.openbis.generic.shared.dto.DataSetUpdatesDTO; import ch.systemsx.cisd.openbis.generic.shared.dto.ExperimentUpdatesDTO; @@ -230,7 +231,7 @@ public interface IGenericServer extends IServer @Transactional @RolesAllowed(RoleWithHierarchy.SPACE_USER) @DatabaseUpdateModification(value = ObjectKind.SAMPLE) - public Date updateSample(String sessionToken, + public SampleUpdateResult updateSample(String sessionToken, @AuthorizationGuard(guardClass = SampleUpdatesPredicate.class) SampleUpdatesDTO updates); /** diff --git a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/plugin/generic/server/GenericServerTest.java b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/plugin/generic/server/GenericServerTest.java index 33f870878bea9ed3f7389a09de329eb95ddebb40..5af5293e5b9da5466af85d32f6daeb17fbd4c65e 100644 --- a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/plugin/generic/server/GenericServerTest.java +++ b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/plugin/generic/server/GenericServerTest.java @@ -477,8 +477,7 @@ public final class GenericServerTest extends AbstractServerTestCase }); ExperimentUpdateResult result = createServer().updateExperiment(SESSION_TOKEN, updates); assertEquals(newModificationDate, result.getModificationDate()); - assertEquals(GenericServer.extractSampleCodes(newSamples).length, - result.getSamples().length); + assertEquals(newSamples.size(), result.getSamples().size()); context.assertIsSatisfied(); } diff --git a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/plugin/generic/shared/IGenericServer.java.expected b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/plugin/generic/shared/IGenericServer.java.expected index edd520597c0605d6d166d61a4bc9ca0482d7146f..262c53d20f20625db744157f217a0390f507fc5e 100644 --- a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/plugin/generic/shared/IGenericServer.java.expected +++ b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/plugin/generic/shared/IGenericServer.java.expected @@ -55,6 +55,7 @@ import ch.systemsx.cisd.openbis.generic.shared.basic.dto.NewSamplesWithTypes; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.RoleWithHierarchy; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Sample; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.SampleParentWithDerived; +import ch.systemsx.cisd.openbis.generic.shared.basic.dto.SampleUpdateResult; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DatabaseModificationKind.ObjectKind; import ch.systemsx.cisd.openbis.generic.shared.dto.DataSetUpdatesDTO; import ch.systemsx.cisd.openbis.generic.shared.dto.ExperimentUpdatesDTO; @@ -230,7 +231,7 @@ public interface IGenericServer extends IServer @Transactional @RolesAllowed(RoleWithHierarchy.SPACE_USER) @DatabaseUpdateModification(value = ObjectKind.SAMPLE) - public Date updateSample(String sessionToken, + public SampleUpdateResult updateSample(String sessionToken, @AuthorizationGuard(guardClass = SampleUpdatesPredicate.class) SampleUpdatesDTO updates); /**