diff --git a/rtd_cina/source/java/ch/systemsx/cisd/cina/dss/info/CinaDataSetInfoExtractor.java b/rtd_cina/source/java/ch/systemsx/cisd/cina/dss/info/CinaDataSetInfoExtractor.java index 753b7b8ab2eb7420cdade23d02f6882b993d7e8e..d7a7ec8ec114ee1e0f0fdd8bf652160f07c7130b 100644 --- a/rtd_cina/source/java/ch/systemsx/cisd/cina/dss/info/CinaDataSetInfoExtractor.java +++ b/rtd_cina/source/java/ch/systemsx/cisd/cina/dss/info/CinaDataSetInfoExtractor.java @@ -70,14 +70,16 @@ public class CinaDataSetInfoExtractor implements IDataSetInfoExtractor switch (folderType) { case DATA_SET: - processDataSetFolder(metadata.tryGetMetadataFile(), dataSetInformation, openbisService); + processDataSetFolder(metadata.tryGetMetadataFile(), dataSetInformation, + openbisService); break; case EXPERIMENT: processExperimentFolder(metadata.tryGetMetadataFile(), dataSetInformation, openbisService); break; case SAMPLE: - processSampleFolder(metadata.tryGetMetadataFile(), dataSetInformation, openbisService); + processSampleFolder(metadata.tryGetMetadataFile(), dataSetInformation, + openbisService); break; case UNKNOWN: break; @@ -114,7 +116,19 @@ public class CinaDataSetInfoExtractor implements IDataSetInfoExtractor private void processSampleFolder(final File metadataFile, final DataSetInformation dataSetInformation, IEncapsulatedOpenBISService openbisService) { - + try + { + HashMap<String, String> sampleMetadata = convertMetadataFileToMap(metadataFile); + SampleMetadataExtractor extractor = + new SampleMetadataExtractor(dataSetInformation, sampleMetadata, + getEntityCodeSuffix(), openbisService); + extractor.processMetadataAndFillDataSetInformation(); + } catch (IOException ex) + { + UserFailureException userFailure = + new UserFailureException("Could not register sample", ex); + throw userFailure; + } } /** diff --git a/rtd_cina/sourceTest/java/ch/systemsx/cisd/cina/dss/info/CinaDataSetInfoExtractorTest.java b/rtd_cina/sourceTest/java/ch/systemsx/cisd/cina/dss/info/CinaDataSetInfoExtractorTest.java index a223bf275e54c45d8704d5c5f130594ee8bba19f..047286c2edcc2952f5ba3910d2e9e20f33ec18df 100644 --- a/rtd_cina/sourceTest/java/ch/systemsx/cisd/cina/dss/info/CinaDataSetInfoExtractorTest.java +++ b/rtd_cina/sourceTest/java/ch/systemsx/cisd/cina/dss/info/CinaDataSetInfoExtractorTest.java @@ -29,8 +29,11 @@ import org.testng.annotations.Test; import ch.systemsx.cisd.common.exceptions.UserFailureException; import ch.systemsx.cisd.openbis.dss.generic.shared.IEncapsulatedOpenBISService; import ch.systemsx.cisd.openbis.dss.generic.shared.dto.DataSetInformation; +import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Experiment; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.NewExperiment; +import ch.systemsx.cisd.openbis.generic.shared.basic.dto.NewSample; import ch.systemsx.cisd.openbis.generic.shared.dto.identifier.ExperimentIdentifier; +import ch.systemsx.cisd.openbis.generic.shared.dto.identifier.SampleIdentifier; /** * @author Chandrasekhar Ramakrishnan @@ -79,25 +82,30 @@ public class CinaDataSetInfoExtractorTest extends AssertJUnit assertTrue("no-one@nowhere.ch".equals(dataSetInformation.tryGetUploadingUserEmail())); } - // @Test - // public void testRegisterSample() - // { - // context.checking(new Expectations() - // { - // { - // one(openbisService).tryToGetExperiment(with(any(ExperimentIdentifier.class))); - // will(returnValue(null)); - // one(openbisService).registerExperiment(with(any(NewExperiment.class))); - // } - // }); - // - // File sampleFolder = - // new File("sourceTest/java/ch/systemsx/cisd/cina/dss/info/sample-data-folder"); - // DataSetInformation dataSetInformation = - // extractor.getDataSetInformation(sampleFolder, openbisService); - // - // assertTrue("no-one@nowhere.ch".equals(dataSetInformation.tryGetUploadingUserEmail())); - // } + @Test + public void testRegisterSample() + { + final Experiment existingExperiment = new Experiment(); + context.checking(new Expectations() + { + { + one(openbisService).tryToGetExperiment(with(any(ExperimentIdentifier.class))); + will(returnValue(existingExperiment)); + one(openbisService).tryGetSampleWithExperiment( + with(any(SampleIdentifier.class))); + will(returnValue(null)); + one(openbisService).registerSample(with(any(NewSample.class)), + with(aNull(String.class))); + } + }); + + File sampleFolder = + new File("sourceTest/java/ch/systemsx/cisd/cina/dss/info/sample-data-folder"); + DataSetInformation dataSetInformation = + extractor.getDataSetInformation(sampleFolder, openbisService); + + assertTrue("no-one@nowhere.ch".equals(dataSetInformation.tryGetUploadingUserEmail())); + } @Test public void testRegisterAmbiguousFolder() diff --git a/rtd_cina/sourceTest/java/ch/systemsx/cisd/cina/dss/info/sample-data-folder/sample.properties b/rtd_cina/sourceTest/java/ch/systemsx/cisd/cina/dss/info/sample-data-folder/sample.properties index 124fde3eff73f0204d67a17457233ae8d9686afd..80ba74bf10f3350615d18dca48c74b2ff8d1dfc3 100644 --- a/rtd_cina/sourceTest/java/ch/systemsx/cisd/cina/dss/info/sample-data-folder/sample.properties +++ b/rtd_cina/sourceTest/java/ch/systemsx/cisd/cina/dss/info/sample-data-folder/sample.properties @@ -1,3 +1,3 @@ -project.code = CINA1 -experiment.code = EXP -experiment.owner-email = no-one@nowhere.ch \ No newline at end of file +experiment.identifier = /CINA/CINA1/EXP1 +experiment.owner-email = no-one@nowhere.ch +sample.code-prefix = S \ No newline at end of file