diff --git a/deep_sequencing_unit/source/java/ch/ethz/bsse/cisd/dsu/tracking/email/EntityTrackingEmailGenerator.java b/deep_sequencing_unit/source/java/ch/ethz/bsse/cisd/dsu/tracking/email/EntityTrackingEmailGenerator.java index e0cf1d25a0320fd51480b81cb46596e774817f83..bc3fa32da017ab0e594035803fbbfd82a8967d48 100644 --- a/deep_sequencing_unit/source/java/ch/ethz/bsse/cisd/dsu/tracking/email/EntityTrackingEmailGenerator.java +++ b/deep_sequencing_unit/source/java/ch/ethz/bsse/cisd/dsu/tracking/email/EntityTrackingEmailGenerator.java @@ -168,6 +168,8 @@ public class EntityTrackingEmailGenerator implements IEntityTrackingEmailGenerat createSeparatorLine(SUBSECTION_SEPARATOR_CHAR); private final static String EXTERNAL_SAMPLE_NAME_PROPERTY_CODE = "EXTERNAL_SAMPLE_NAME"; + + private final static String CONTACT_PERSON_NAME_PROPERTY_CODE = "CONTACT_PERSON_NAME"; private final static String INDEX1_PROPERTY_CODE = "BARCODE"; @@ -285,7 +287,12 @@ public class EntityTrackingEmailGenerator implements IEntityTrackingEmailGenerat String Index1 = getIndex1(dataSet); String Index2 = getIndex2(dataSet); - String externalSampleName = externalSampleNameFromDataSet(dataSet); + + HashMap<String, String> parentProperties = propertiesFromParentSample(dataSet, sequencingSamples, Index1, Index2); + + String externalSampleName = parentProperties.get(EXTERNAL_SAMPLE_NAME_PROPERTY_CODE); + String contactPersonName = parentProperties.get(CONTACT_PERSON_NAME_PROPERTY_CODE); + String Index = null; if (Index1 != null) { @@ -298,10 +305,12 @@ public class EntityTrackingEmailGenerator implements IEntityTrackingEmailGenerat if (Index != null && externalSampleName != null) { appendln(sb, "Data Set Type: " + dataSet.getDataSetType().toString() + - " Index: " + Index + ", External Sample Name: " + externalSampleName); + " Index: " + Index + ", External Sample Name: " + externalSampleName + + ", Contact Person: " + contactPersonName + ); } else { - appendln(sb, "Data Set Type: " + dataSet.getDataSetType().toString()); + appendln(sb, "Data Set Type: " + dataSet.getDataSetType().toString() + ", No Meta Data"); } appendln(sb, dataSet.getPermlink()); } @@ -314,6 +323,13 @@ public class EntityTrackingEmailGenerator implements IEntityTrackingEmailGenerat return externalSampleName; } + private static String getContactPersonName(Sample sequencingSample) + { + String contactPersonName = tryGetSamplePropertyValue(sequencingSample, CONTACT_PERSON_NAME_PROPERTY_CODE); + assert contactPersonName != null; + return contactPersonName; + } + private static String getIndex1(AbstractExternalData dataSet) { List<IEntityProperty> properties = dataSet.getProperties(); @@ -344,23 +360,61 @@ public class EntityTrackingEmailGenerator implements IEntityTrackingEmailGenerat return null; } - private static String externalSampleNameFromDataSet(AbstractExternalData dataSet) + private static HashMap<String, String> propertiesFromParentSample(AbstractExternalData dataSet, + Collection<Sample> sequencingSamples, String dsIndex1, String dsIndex2) { - List<IEntityProperty> properties = dataSet.getProperties(); + HashMap<String, String> parentPropertiesMap = new HashMap<String, String>(); + if (dsIndex1 == null) { + return parentPropertiesMap; + } + if (dsIndex2 == null) { + dsIndex2 = ""; + } - String externalSampleName = null; - for (IEntityProperty p : properties) + for (Sample parent : sequencingSamples) { - if (p.getPropertyType().getCode().equals(EXTERNAL_SAMPLE_NAME_PROPERTY_CODE)) - { - externalSampleName = p.getValue(); - if (!externalSampleName.equals(null)) - { - return externalSampleName; + String parentIndex1 = ""; + String parentIndex2 = ""; + String externalSampleName = ""; + String contactPersonName = ""; + + List<IEntityProperty> parentSampleProperties = parent.getProperties(); + for (IEntityProperty pp : parentSampleProperties) { + if (pp.getPropertyType().getCode().equals(INDEX1_PROPERTY_CODE)) { + parentIndex1 = pp.getVocabularyTerm().getCode(); + } + + if (pp.getPropertyType().getCode().equals(INDEX2_PROPERTY_CODE)) { + parentIndex2 = pp.getVocabularyTerm().getCode(); + if (parentIndex2.equals(null)) { + parentIndex2 = ""; + } } + + if (pp.getPropertyType().getCode().equals(EXTERNAL_SAMPLE_NAME_PROPERTY_CODE)) { + externalSampleName = pp.getValue(); + } + + if (pp.getPropertyType().getCode().equals(CONTACT_PERSON_NAME_PROPERTY_CODE)) { + contactPersonName = pp.getValue(); + } + +// //if(index1 == parentIndex1 && (!index2 || !parentIndex2 || index2 == parentIndex2)){ + if (parentIndex1.equals(dsIndex1) && (!(dsIndex2.isEmpty()) || !(parentIndex2.isEmpty()) || parentIndex2.equals(dsIndex2))) { + + parentIndex1 = ""; + parentIndex2 = ""; + + System.out.println("Found matching meta data for: " + dataSet.getCode() + " from " + parent.getCode()); + + parentPropertiesMap.put(EXTERNAL_SAMPLE_NAME_PROPERTY_CODE, externalSampleName); + parentPropertiesMap.put(CONTACT_PERSON_NAME_PROPERTY_CODE, contactPersonName); + } + } + } - return null; + return parentPropertiesMap; } private static String tryGetSamplePropertyValue(Sample sequencingSample, String propertyCode)