diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/etlserver/phosphonetx/DataSetInfoExtractorForMSInjection.java b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/etlserver/phosphonetx/DataSetInfoExtractorForMSInjection.java index 4b870bf28f4497f55eac4b100d2bc3328f7db5cc..93660860d5be94133b100ef1f08ebd4c10eb77bc 100644 --- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/etlserver/phosphonetx/DataSetInfoExtractorForMSInjection.java +++ b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/etlserver/phosphonetx/DataSetInfoExtractorForMSInjection.java @@ -142,13 +142,13 @@ public class DataSetInfoExtractorForMSInjection extends AbstractDataSetInfoExtra { SampleType sampleType = service.getSampleType(SAMPLE_TYPE_CODE); Sample sample = service.tryGetSampleWithExperiment(sampleIdentifier); + String biologicalSampleIdentifier = properties.getProperty(BIOLOGICAL_SAMPLE_IDENTIFIER_KEY); if (sample == null) { NewSample newSample = new NewSample(); newSample.setSampleType(sampleType); newSample.setExperimentIdentifier(experimentIdentifier.toString()); newSample.setIdentifier(sampleIdentifier.toString()); - String biologicalSampleIdentifier = properties.getProperty(BIOLOGICAL_SAMPLE_IDENTIFIER_KEY); if (biologicalSampleIdentifier != null) { newSample.setParents(biologicalSampleIdentifier); @@ -164,7 +164,9 @@ public class DataSetInfoExtractorForMSInjection extends AbstractDataSetInfoExtra Set<NewAttachment> emptySet = Collections.<NewAttachment> emptySet(); Date version = sample.getModificationDate(); service.updateSample(new SampleUpdatesDTO(sampleID, propertiesList, - experimentIdentifier, emptySet, version, sampleIdentifier, null, null)); + experimentIdentifier, emptySet, version, sampleIdentifier, null, + biologicalSampleIdentifier == null ? null : new String[] + { biologicalSampleIdentifier })); return sample.getId(); } } diff --git a/rtd_phosphonetx/sourceTest/java/ch/systemsx/cisd/openbis/etlserver/phosphonetx/DataSetInfoExtractorForMSInjectionTest.java b/rtd_phosphonetx/sourceTest/java/ch/systemsx/cisd/openbis/etlserver/phosphonetx/DataSetInfoExtractorForMSInjectionTest.java index a03c2c0222a40e395d0cedaf7b87a8ccfa47f9e0..7aed4b784d2093f679e0128e6f0aac738d8960cd 100644 --- a/rtd_phosphonetx/sourceTest/java/ch/systemsx/cisd/openbis/etlserver/phosphonetx/DataSetInfoExtractorForMSInjectionTest.java +++ b/rtd_phosphonetx/sourceTest/java/ch/systemsx/cisd/openbis/etlserver/phosphonetx/DataSetInfoExtractorForMSInjectionTest.java @@ -43,6 +43,7 @@ import org.hamcrest.BaseMatcher; import org.hamcrest.Description; import org.jmock.Expectations; import org.jmock.Mockery; +import org.testng.Assert; import org.testng.annotations.AfterMethod; import org.testng.annotations.BeforeMethod; import org.testng.annotations.Test; @@ -358,7 +359,7 @@ public class DataSetInfoExtractorForMSInjectionTest extends AbstractFileSystemTe dataSetProperties.setProperty("BLABLA", "blub"); save(dataSetProperties, DATA_SET_PROPERTIES_FILE); prepareGetExperimentAndGetSampleType(false, createPropertyType(SAMPLE_PROPERTY, true)); - prepareUpdateSample("Isaac"); + prepareUpdateSample("Isaac", null); prepareGetDataSetType("RAW_DATA", createDataSetPropertyType("CENTROID", false)); DataSetInformation info = extractor.getDataSetInformation(dataSet, service); @@ -373,6 +374,39 @@ public class DataSetInfoExtractorForMSInjectionTest extends AbstractFileSystemTe context.assertIsSatisfied(); } + + @Test + public void testRegisterSupersedingRawDataWhichUpdatesSampleParent() + { + Properties sampleProperties = new Properties(); + sampleProperties.setProperty(BIOLOGICAL_SAMPLE_IDENTIFIER_KEY, "bio-sample"); + sampleProperties.setProperty(PROJECT_CODE_KEY, PROJECT_CODE); + sampleProperties.setProperty(SAMPLE_CODE_KEY, SAMPLE_CODE); + sampleProperties.setProperty(EXPERIMENT_CODE_KEY, EXPERIMENT_CODE); + sampleProperties.setProperty(SAMPLE_PROPERTY, "Isaac"); + sampleProperties.setProperty("TEMPERATURE", "47.11"); + save(sampleProperties, MS_INJECTION_PROPERTIES_FILE); + Properties dataSetProperties = new Properties(); + dataSetProperties.setProperty(DATA_SET_TYPE_KEY, "RAW_DATA"); + dataSetProperties.setProperty("CENTROID", "true"); + dataSetProperties.setProperty("BLABLA", "blub"); + save(dataSetProperties, DATA_SET_PROPERTIES_FILE); + prepareGetExperimentAndGetSampleType(false, createPropertyType(SAMPLE_PROPERTY, true)); + prepareUpdateSample("Isaac", new String[] {"bio-sample"}); + prepareGetDataSetType("RAW_DATA", createDataSetPropertyType("CENTROID", false)); + + DataSetInformation info = extractor.getDataSetInformation(dataSet, service); + + assertEquals(Constants.MS_DATA_SPACE, info.getSpaceCode()); + assertEquals(SAMPLE_CODE, info.getSampleCode()); + assertEquals(EXPERIMENT_IDENTIFIER, info.getExperimentIdentifier().toString()); + List<NewProperty> dProps = info.getDataSetProperties(); + assertEquals(1, dProps.size()); + assertEquals("CENTROID", dProps.get(0).getPropertyCode()); + assertEquals("true", dProps.get(0).getValue()); + + context.assertIsSatisfied(); + } @Test public void testRegisterParentDataSet() @@ -387,7 +421,7 @@ public class DataSetInfoExtractorForMSInjectionTest extends AbstractFileSystemTe dataSetProperties.setProperty(PARENT_TYPE_KEY, "RAW_DATA"); save(dataSetProperties, DATA_SET_PROPERTIES_FILE); prepareGetExperimentAndGetSampleType(true); - prepareUpdateSample(null); + prepareUpdateSample(null, null); prepareGetDataSetType("MZXML_DATA"); context.checking(new Expectations() { @@ -548,7 +582,7 @@ public class DataSetInfoExtractorForMSInjectionTest extends AbstractFileSystemTe }); } - private void prepareUpdateSample(final String newName) + private void prepareUpdateSample(final String newName, final String[] expectedModifiedParentCodesOrNull) { context.checking(new Expectations() { @@ -577,7 +611,9 @@ public class DataSetInfoExtractorForMSInjectionTest extends AbstractFileSystemTe .getId().longValue()); assertEquals(0, sampleUpdate.getAttachments().size()); assertEquals(null, sampleUpdate.getContainerIdentifierOrNull()); - assertEquals(null, sampleUpdate.getModifiedParentCodesOrNull()); + Assert.assertEquals( + sampleUpdate.getModifiedParentCodesOrNull(), + expectedModifiedParentCodesOrNull); assertEquals(EXPERIMENT_IDENTIFIER, sampleUpdate .getExperimentIdentifierOrNull().toString()); assertEquals(SAMPLE_IDENTIFIER, sampleUpdate