From fb783bf9a2b32c22f86f8266539d80d36b0c7f89 Mon Sep 17 00:00:00 2001 From: cramakri <cramakri> Date: Wed, 23 Jun 2010 14:07:54 +0000 Subject: [PATCH] LMS-1584 Added code to find out which sample a data set is associated with, even if this association is indirect. SVN: 16699 --- .../business/bo/SimpleDataSetHelper.java | 11 +++++++ .../dto/SimpleDataSetInformationDTO.java | 29 ++++++++++++++----- .../AbstractFeatureVectorMigrator.java | 13 +++++---- 3 files changed, 39 insertions(+), 14 deletions(-) diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/SimpleDataSetHelper.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/SimpleDataSetHelper.java index 1085a2fe73c..3e097579e7a 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/SimpleDataSetHelper.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/SimpleDataSetHelper.java @@ -17,8 +17,10 @@ package ch.systemsx.cisd.openbis.generic.server.business.bo; import java.util.ArrayList; +import java.util.HashSet; import java.util.List; +import ch.systemsx.cisd.openbis.generic.shared.dto.DataPE; import ch.systemsx.cisd.openbis.generic.shared.dto.ExternalDataPE; import ch.systemsx.cisd.openbis.generic.shared.dto.SamplePE; import ch.systemsx.cisd.openbis.generic.shared.dto.SimpleDataSetInformationDTO; @@ -58,6 +60,15 @@ public class SimpleDataSetHelper SamplePE sampleOrNull = data.tryGetSample(); result.setSampleCode(sampleOrNull == null ? null : sampleOrNull.getCode()); result.setDataSetType(data.getDataSetType().getCode()); + + HashSet<String> parentCodes = new HashSet<String>(); + for (DataPE parent : data.getParents()) + { + parentCodes.add(parent.getCode()); + } + + result.setParentDataSetCodes(parentCodes); + return result; } } diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/dto/SimpleDataSetInformationDTO.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/dto/SimpleDataSetInformationDTO.java index 2bec7fdd5e0..76c9d83cf0b 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/dto/SimpleDataSetInformationDTO.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/dto/SimpleDataSetInformationDTO.java @@ -17,6 +17,7 @@ package ch.systemsx.cisd.openbis.generic.shared.dto; import java.io.Serializable; +import java.util.Collection; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.ServiceVersionHolder; @@ -29,21 +30,23 @@ public class SimpleDataSetInformationDTO implements Serializable { private static final long serialVersionUID = ServiceVersionHolder.VERSION; - String dataSetCode; + private String dataSetCode; - String dataSetLocation; + private String dataSetLocation; - String dataSetType; + private String dataSetType; - String sampleCode; + private String sampleCode; - String groupCode; + private String groupCode; - String experimentCode; + private String experimentCode; - String projectCode; + private String projectCode; - String databaseInstanceCode; + private String databaseInstanceCode; + + private Collection<String> parentDataSetCodes; public String getDataSetType() { @@ -126,4 +129,14 @@ public class SimpleDataSetInformationDTO implements Serializable this.databaseInstanceCode = dbInstanceCode; } + public Collection<String> getParentDataSetCodes() + { + return parentDataSetCodes; + } + + public void setParentDataSetCodes(Collection<String> parentDataSetCodes) + { + this.parentDataSetCodes = parentDataSetCodes; + } + } diff --git a/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/featurevector/AbstractFeatureVectorMigrator.java b/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/featurevector/AbstractFeatureVectorMigrator.java index 22d4236cc83..ce06b80ce70 100644 --- a/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/featurevector/AbstractFeatureVectorMigrator.java +++ b/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/featurevector/AbstractFeatureVectorMigrator.java @@ -37,6 +37,7 @@ import ch.systemsx.cisd.openbis.generic.shared.basic.dto.ExternalData; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Sample; import ch.systemsx.cisd.openbis.generic.shared.dto.SimpleDataSetInformationDTO; import ch.systemsx.cisd.openbis.generic.shared.dto.identifier.SampleIdentifier; +import ch.systemsx.cisd.openbis.generic.shared.dto.identifier.SampleIdentifierFactory; import ch.systemsx.cisd.openbis.generic.shared.dto.identifier.SpaceIdentifier; import ch.systemsx.cisd.openbis.plugin.screening.shared.basic.dto.ScreeningConstants; @@ -134,7 +135,7 @@ public abstract class AbstractFeatureVectorMigrator implements IMigrator private Sample findSampleCodeForDataSet(SimpleDataSetInformationDTO dataSetInfo) { String sampleCodeOrNull = dataSetInfo.getSampleCode(); - Sample sample = null; + SampleIdentifier sampleId = null; if (null == sampleCodeOrNull) { // check the parent data sets for a sample @@ -142,20 +143,20 @@ public abstract class AbstractFeatureVectorMigrator implements IMigrator for (String dataSetCode : parentDataSetCodes) { ExternalData externalData = openBisService.tryGetDataSetForServer(dataSetCode); - if (externalData.getSample() != null) + if (externalData != null && externalData.getSample() != null) { - sample = externalData.getSample(); + sampleId = SampleIdentifierFactory.parse(externalData.getSampleIdentifier()); break; } } } else { - SampleIdentifier sampleId = + sampleId = new SampleIdentifier(new SpaceIdentifier(dataSetInfo.getDatabaseInstanceCode(), dataSetInfo.getGroupCode()), dataSetInfo.getSampleCode()); - sample = openBisService.tryGetSampleWithExperiment(sampleId); } - return sample; + + return openBisService.tryGetSampleWithExperiment(sampleId); } public void close() -- GitLab