diff --git a/rtd_cina/source/java/ch/systemsx/cisd/cina/dss/bundle/registrators/GridPreparationRegistrator.java b/rtd_cina/source/java/ch/systemsx/cisd/cina/dss/bundle/registrators/GridPreparationRegistrator.java index 7942d64b87347cb5d0e1df068f5fe9d47ac0993f..8f777a9a583a8c313a4adae3c5d3e5a0dd42fe31 100644 --- a/rtd_cina/source/java/ch/systemsx/cisd/cina/dss/bundle/registrators/GridPreparationRegistrator.java +++ b/rtd_cina/source/java/ch/systemsx/cisd/cina/dss/bundle/registrators/GridPreparationRegistrator.java @@ -69,20 +69,23 @@ public class GridPreparationRegistrator extends BundleDataSetHelper public void register() { retrieveOrCreateGridPrepSample(); + + // Register the bundle metadata data set + DataSetInformation metadataDataSetInfo = createDataSetInformation(); + File metadataFile = new File(dataSet, BundleStructureConstants.BUNDLE_METADATA_FILE_NAME); + List<DataSetInformation> registeredBundleMetadataDataSets = + registerDataSet(metadataFile, metadataDataSetInfo); + DataSetInformation registeredBundleMetadataDataSet = + registeredBundleMetadataDataSets.get(0); + for (ReplicaMetadataExtractor replicaMetadataExtractor : bundleMetadataExtractor .getReplicaMetadataExtractors()) { List<DataSetInformation> childRegisteredDataSets = new ReplicaRegistrator(globalState, replicaMetadataExtractor, gridPrepSample, - gridPrepSampleId, dataSet).register(); + gridPrepSampleId, registeredBundleMetadataDataSet, dataSet).register(); getDataSetInformation().addAll(childRegisteredDataSets); } - - // Create a DataSetInformation - DataSetInformation metadataDataSetInfo = createDataSetInformation(); - - File metadataFile = new File(dataSet, BundleStructureConstants.BUNDLE_METADATA_FILE_NAME); - registerDataSet(metadataFile, metadataDataSetInfo); } private void retrieveOrCreateGridPrepSample() diff --git a/rtd_cina/source/java/ch/systemsx/cisd/cina/dss/bundle/registrators/ReplicaAnnotatedImagesRegistrator.java b/rtd_cina/source/java/ch/systemsx/cisd/cina/dss/bundle/registrators/ReplicaAnnotatedImagesRegistrator.java index adc6e7829d52cb5c5eeb96b140bf8b896be80549..ff196585bec5de3f27d36534e66d4b1b10387291 100644 --- a/rtd_cina/source/java/ch/systemsx/cisd/cina/dss/bundle/registrators/ReplicaAnnotatedImagesRegistrator.java +++ b/rtd_cina/source/java/ch/systemsx/cisd/cina/dss/bundle/registrators/ReplicaAnnotatedImagesRegistrator.java @@ -17,6 +17,7 @@ package ch.systemsx.cisd.cina.dss.bundle.registrators; import java.util.ArrayList; +import java.util.Collections; import java.util.List; import ch.systemsx.cisd.cina.shared.metadata.ImageMetadataExtractor; @@ -37,6 +38,8 @@ public class ReplicaAnnotatedImagesRegistrator extends BundleDataSetHelper private final SampleIdentifier replicaSampleId; + private final DataSetInformation bundleMetadataDataSetInformation; + /** * Constructor. * @@ -45,14 +48,16 @@ public class ReplicaAnnotatedImagesRegistrator extends BundleDataSetHelper * in the store * @param replicaSample The owning sample of the data set * @param replicaSampleId The owning sample id + * @param bundleMetadataDataSetInformation */ ReplicaAnnotatedImagesRegistrator(BundleRegistrationState globalState, ImageMetadataExtractor imageMetadataExtractor, Sample replicaSample, - SampleIdentifier replicaSampleId) + SampleIdentifier replicaSampleId, DataSetInformation bundleMetadataDataSetInformation) { super(globalState, imageMetadataExtractor.getFolder()); this.imageMetadataExtractor = imageMetadataExtractor; this.replicaSampleId = replicaSampleId; + this.bundleMetadataDataSetInformation = bundleMetadataDataSetInformation; } public List<DataSetInformation> register() @@ -76,6 +81,9 @@ public class ReplicaAnnotatedImagesRegistrator extends BundleDataSetHelper metadataDataSetInfo.setInstanceCode(replicaSampleId.getSpaceLevel() .getDatabaseInstanceCode()); metadataDataSetInfo.setDataSetType(globalState.getImageDataSetType().getDataSetType()); + List<String> parentDataSetCodes = + Collections.singletonList(bundleMetadataDataSetInformation.getDataSetCode()); + metadataDataSetInfo.setParentDataSetCodes(parentDataSetCodes); return metadataDataSetInfo; } } diff --git a/rtd_cina/source/java/ch/systemsx/cisd/cina/dss/bundle/registrators/ReplicaMetadataRegistrator.java b/rtd_cina/source/java/ch/systemsx/cisd/cina/dss/bundle/registrators/ReplicaMetadataRegistrator.java index f3120000b60cb62c015f821debf68d40d18e9a29..dbf31d885d114fdbd75f4550c445df93c53c05bd 100644 --- a/rtd_cina/source/java/ch/systemsx/cisd/cina/dss/bundle/registrators/ReplicaMetadataRegistrator.java +++ b/rtd_cina/source/java/ch/systemsx/cisd/cina/dss/bundle/registrators/ReplicaMetadataRegistrator.java @@ -18,6 +18,7 @@ package ch.systemsx.cisd.cina.dss.bundle.registrators; import java.io.File; import java.util.ArrayList; +import java.util.Collections; import java.util.List; import ch.systemsx.cisd.cina.shared.metadata.ReplicaMetadataExtractor; @@ -38,15 +39,18 @@ public class ReplicaMetadataRegistrator extends BundleDataSetHelper private final SampleIdentifier replicaSampleId; + private final DataSetInformation bundleMetadataDataSetInformation; + private File metadataDataSetFile = null; ReplicaMetadataRegistrator(BundleRegistrationState globalState, ReplicaMetadataExtractor replicaMetadataExtractor, Sample replicaSample, - SampleIdentifier replicaSampleId) + SampleIdentifier replicaSampleId, DataSetInformation bundleMetadataDataSetInformation) { super(globalState, replicaMetadataExtractor.getFolder()); this.replicaMetadataExtractor = replicaMetadataExtractor; this.replicaSampleId = replicaSampleId; + this.bundleMetadataDataSetInformation = bundleMetadataDataSetInformation; } /** @@ -85,6 +89,9 @@ public class ReplicaMetadataRegistrator extends BundleDataSetHelper metadataDataSetInfo.setInstanceCode(replicaSampleId.getSpaceLevel() .getDatabaseInstanceCode()); metadataDataSetInfo.setDataSetType(globalState.getMetadataDataSetType().getDataSetType()); + List<String> parentDataSetCodes = + Collections.singletonList(bundleMetadataDataSetInformation.getDataSetCode()); + metadataDataSetInfo.setParentDataSetCodes(parentDataSetCodes); return metadataDataSetInfo; } diff --git a/rtd_cina/source/java/ch/systemsx/cisd/cina/dss/bundle/registrators/ReplicaRegistrator.java b/rtd_cina/source/java/ch/systemsx/cisd/cina/dss/bundle/registrators/ReplicaRegistrator.java index c4a97e890d47abdc0a7465839bbf54908dee417c..c3aa29a4cb0cd50ae606bfa3b5a9b8278d9ff861 100644 --- a/rtd_cina/source/java/ch/systemsx/cisd/cina/dss/bundle/registrators/ReplicaRegistrator.java +++ b/rtd_cina/source/java/ch/systemsx/cisd/cina/dss/bundle/registrators/ReplicaRegistrator.java @@ -43,6 +43,8 @@ public class ReplicaRegistrator extends BundleDataSetHelper private final SampleIdentifier gridPrepSampleId; + private final DataSetInformation bundleMetadataDataSetInformation; + // Processing State (gets set during the execution of registration) private SampleIdentifier replicaSampleId; @@ -52,13 +54,15 @@ public class ReplicaRegistrator extends BundleDataSetHelper ReplicaRegistrator(BundleRegistrationState globalState, ReplicaMetadataExtractor replicaMetadataExtractor, Sample gridPrepSample, - SampleIdentifier gridPrepSampleId, File dataSet) + SampleIdentifier gridPrepSampleId, DataSetInformation bundleMetadataDataSetInformation, + File dataSet) { super(globalState, dataSet); this.replicaMetadataExtractor = replicaMetadataExtractor; this.gridPrepSample = gridPrepSample; this.gridPrepSampleId = gridPrepSampleId; + this.bundleMetadataDataSetInformation = bundleMetadataDataSetInformation; } /** @@ -126,7 +130,7 @@ public class ReplicaRegistrator extends BundleDataSetHelper { ReplicaMetadataRegistrator registrator = new ReplicaMetadataRegistrator(globalState, replicaMetadataExtractor, - replicaSample, replicaSampleId); + replicaSample, replicaSampleId, bundleMetadataDataSetInformation); List<DataSetInformation> registeredDataSetInfos = registrator.register(); getDataSetInformation().addAll(registeredDataSetInfos); return registrator.getMetadataDataSetFile(); @@ -145,7 +149,7 @@ public class ReplicaRegistrator extends BundleDataSetHelper { ReplicaAnnotatedImagesRegistrator registrator = new ReplicaAnnotatedImagesRegistrator(globalState, imageMetadataExtractor, - replicaSample, replicaSampleId); + replicaSample, replicaSampleId, bundleMetadataDataSetInformation); List<DataSetInformation> registeredDataSetInfos = registrator.register(); getDataSetInformation().addAll(registeredDataSetInfos); } diff --git a/rtd_cina/sourceTest/java/ch/systemsx/cisd/cina/dss/bundle/registrators/CinaBundleRegistrationTest.java b/rtd_cina/sourceTest/java/ch/systemsx/cisd/cina/dss/bundle/registrators/CinaBundleRegistrationTest.java index 7b2f0d325e449aaa6a87c4b1fe42fb0e7f6d4a7c..4ca8165ea204763552ca4c0e797aca6eb73c10ab 100644 --- a/rtd_cina/sourceTest/java/ch/systemsx/cisd/cina/dss/bundle/registrators/CinaBundleRegistrationTest.java +++ b/rtd_cina/sourceTest/java/ch/systemsx/cisd/cina/dss/bundle/registrators/CinaBundleRegistrationTest.java @@ -74,7 +74,7 @@ public abstract class CinaBundleRegistrationTest extends AbstractFileSystemTestC protected static final String REPLICA_SAMPLE_IDENTIFIER = DB_CODE + ":/" + SPACE_CODE + "/" + REPLICA_SAMPLE_CODE; - private static final String BUNDLE_METADATA_DATA_SET_CODE = null; + private static final String BUNDLE_METADATA_DATA_SET_CODE = "BUNDLE_METADATA"; public static abstract class MatcherNoDesc<T> extends BaseMatcher<T> { @@ -292,6 +292,8 @@ public abstract class CinaBundleRegistrationTest extends AbstractFileSystemTestC dataSetInfo.getDataSetType()); assertEquals(REPLICA_SAMPLE_CODE, dataSetInfo.getSampleCode()); + assertEquals(BUNDLE_METADATA_DATA_SET_CODE, dataSetInfo + .getParentDataSetCodes().get(0)); return true; } return false; @@ -321,6 +323,8 @@ public abstract class CinaBundleRegistrationTest extends AbstractFileSystemTestC dataSetInfo.getDataSetType()); assertEquals(REPLICA_SAMPLE_CODE, dataSetInfo.getSampleCode()); + assertEquals(BUNDLE_METADATA_DATA_SET_CODE, dataSetInfo + .getParentDataSetCodes().get(0)); return true; } return false; @@ -418,7 +422,7 @@ public abstract class CinaBundleRegistrationTest extends AbstractFileSystemTestC with(new SampleIdentifierFactory(GRID_SAMPLE_IDENTIFIER) .createIdentifier())); will(returnValue(null)); - + // Create the Grid Prep one(openbisService).registerSample(with(new BaseMatcher<NewSample>() { @@ -435,19 +439,19 @@ public abstract class CinaBundleRegistrationTest extends AbstractFileSystemTestC } return false; } - + public void describeTo(Description description) { } }), with(TEST_USER_NAME)); will(returnValue(new Long(1))); - + // The Replica does not yet exist one(openbisService).tryGetSampleWithExperiment( with(new SampleIdentifierFactory(REPLICA_SAMPLE_IDENTIFIER) .createIdentifier())); will(returnValue(null)); - + // Create the Replica one(openbisService).registerSample(with(new MatcherNoDesc<NewSample>() {