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 1085a2fe73c9f93f6dd2c5ea681c4da69e84ac63..3e097579e7a7ed70f4e471202af1ab2fe3d9f88a 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 2bec7fdd5e077069378dd25b86449cce06f49fe5..76c9d83cf0b7383f7586f3646f06d34b4be67c12 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 22d4236cc83cfd8d6c887bd3bd2a81d44644ad8f..ce06b80ce704d1d7b22d018fa7f9d4c22d9d3bf9 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()