diff --git a/datastore_server/source/java/ch/systemsx/cisd/etlserver/entityregistration/SampleAndDataSetControlFileProcessor.java b/datastore_server/source/java/ch/systemsx/cisd/etlserver/entityregistration/SampleAndDataSetControlFileProcessor.java index f641a2f71a340560de53bc4510818e48fcb353b8..5066a24b08900235a9e899a55854bc9ac6ea412a 100644 --- a/datastore_server/source/java/ch/systemsx/cisd/etlserver/entityregistration/SampleAndDataSetControlFileProcessor.java +++ b/datastore_server/source/java/ch/systemsx/cisd/etlserver/entityregistration/SampleAndDataSetControlFileProcessor.java @@ -103,7 +103,7 @@ class SampleAndDataSetControlFileProcessor extends AbstractSampleAndDataSetProce { String sampleTypeCode = properties - .get(SampleAndDataSetRegistrationHandler.SAMPLE_TYPE_CONTROL_FILE_KEY); + .tryGet(SampleAndDataSetRegistrationHandler.SAMPLE_TYPE_CONTROL_FILE_KEY); if (null == sampleTypeCode) { return null; @@ -117,7 +117,7 @@ class SampleAndDataSetControlFileProcessor extends AbstractSampleAndDataSetProce { String dataSetTypeCode = properties - .get(SampleAndDataSetRegistrationHandler.DATA_SET_TYPE_CONTROL_FILE_KEY); + .tryGet(SampleAndDataSetRegistrationHandler.DATA_SET_TYPE_CONTROL_FILE_KEY); if (null == dataSetTypeCode) { return null; @@ -129,7 +129,7 @@ class SampleAndDataSetControlFileProcessor extends AbstractSampleAndDataSetProce public String tryUserString() { - return properties.get(SampleAndDataSetRegistrationHandler.USER_CONTROL_FILE_KEY); + return properties.tryGet(SampleAndDataSetRegistrationHandler.USER_CONTROL_FILE_KEY); } } diff --git a/datastore_server/sourceTest/java/ch/systemsx/cisd/etlserver/entityregistration/SampleAndDatasetRegistrationHandlerTest.java b/datastore_server/sourceTest/java/ch/systemsx/cisd/etlserver/entityregistration/SampleAndDatasetRegistrationHandlerTest.java index 563e416bb370c8bcbc6640ad10ee96282935d8f5..651354882bc2384eb578e6ce00db350fa3f641b6 100644 --- a/datastore_server/sourceTest/java/ch/systemsx/cisd/etlserver/entityregistration/SampleAndDatasetRegistrationHandlerTest.java +++ b/datastore_server/sourceTest/java/ch/systemsx/cisd/etlserver/entityregistration/SampleAndDatasetRegistrationHandlerTest.java @@ -17,6 +17,9 @@ package ch.systemsx.cisd.etlserver.entityregistration; import static ch.systemsx.cisd.common.Constants.IS_FINISHED_PREFIX; +import static ch.systemsx.cisd.etlserver.entityregistration.SampleAndDataSetRegistrationHandler.DATA_SET_TYPE_PROPERTIES_KEY; +import static ch.systemsx.cisd.etlserver.entityregistration.SampleAndDataSetRegistrationHandler.SAMPLE_TYPE_PROPERTIES_KEY; + import java.io.File; import java.io.IOException; import java.util.Collections; @@ -43,6 +46,7 @@ import ch.systemsx.cisd.common.mail.EMailAddress; import ch.systemsx.cisd.common.mail.IMailClient; import ch.systemsx.cisd.common.test.RecordingMatcher; import ch.systemsx.cisd.etlserver.DataSetRegistrationAlgorithm; +import ch.systemsx.cisd.etlserver.IDataSetHandler; import ch.systemsx.cisd.etlserver.IExtensibleDataSetHandler; import ch.systemsx.cisd.openbis.dss.generic.shared.IEncapsulatedOpenBISService; import ch.systemsx.cisd.openbis.dss.generic.shared.dto.DataSetInformation; @@ -64,6 +68,8 @@ public class SampleAndDatasetRegistrationHandlerTest extends AbstractFileSystemT { private static final String SPACE_CODE = "MYSPACE"; + private static final String HANDLER_PROP_PREFIX = IDataSetHandler.DATASET_HANDLER_KEY + "."; + protected Mockery context; protected IEncapsulatedOpenBISService openbisService; @@ -217,6 +223,44 @@ public class SampleAndDatasetRegistrationHandlerTest extends AbstractFileSystemT context.assertIsSatisfied(); } + @Test + public void testDefaultSampleAndDataSetTypes() + { + final RecordingMatcher<DataSetInformation> dataSetInfoMatcher = + new RecordingMatcher<DataSetInformation>(); + final RecordingMatcher<NewSample> newSampleMatcher = new RecordingMatcher<NewSample>(); + + setupOpenBisExpectations(); + NewExternalData externalData = setupDataSetHandlerExpectations(dataSetInfoMatcher, 3); + setupUpdateSampleExistsExpectations("S1", false); + setupUpdateSampleExistsExpectations("S2", false); + setupUpdateSampleExistsExpectations("S3", false); + setupRegisterSampleAndDataSetExpectations(externalData, newSampleMatcher, 3); + + final String folderName = "no-global-config"; + final RecordingMatcher<DataHandler> attachmentMatcher = new RecordingMatcher<DataHandler>(); + final RecordingMatcher<EMailAddress[]> addressesMatcher = + new RecordingMatcher<EMailAddress[]>(); + setupSuccessEmailExpectations(attachmentMatcher, addressesMatcher, folderName); + + createWorkingCopyOfTestFolder(folderName); + + Properties props = createDefaultHandlerProps(); + props.put(HANDLER_PROP_PREFIX + SAMPLE_TYPE_PROPERTIES_KEY, "DEF_SAMPLE_TYPE"); + props.put(HANDLER_PROP_PREFIX + DATA_SET_TYPE_PROPERTIES_KEY, "DEF_DS_TYPE"); + initializeDataSetHandler(props); + handler.handleDataSet(markerFile); + + String logText = + "Global properties extracted from file 'control.tsv': SAMPLE_TYPE(null) DATA_SET_TYPE(null) USER(test@test.test)\n" + + "Registered sample/data set pair SampleDataSetPair[sampleIdentifier=/MYSPACE/S1,sampleProperties={prop1: VAL10,prop2: VAL20,prop3: VAL30},dataSetInformation=User::test;Data Set Type::DEF_DS_TYPE;Experiment Identifier::/MYSPACE/MYPROJ/EXP1;Production Date::;Is complete::U]\n" + + "Registered sample/data set pair SampleDataSetPair[sampleIdentifier=/MYSPACE/S2,sampleProperties={prop1: VAL11,prop2: VAL21,prop3: VAL31},dataSetInformation=User::test;Data Set Type::DEF_DS_TYPE;Experiment Identifier::/MYSPACE/MYPROJ/EXP2;Production Date::;Is complete::U]\n" + + "Registered sample/data set pair SampleDataSetPair[sampleIdentifier=/MYSPACE/S3,sampleProperties={prop1: VAL12,prop2: VAL22,prop3: VAL32},dataSetInformation=User::test;Data Set Type::DEF_DS_TYPE;Experiment Identifier::/MYSPACE/MYPROJ/EXP3;Production Date::;Is complete::U]"; + checkAppenderContent(logText, folderName); + + context.assertIsSatisfied(); + } + @Test public void testRegisteringWithEmptyLinesInControlFile() { @@ -393,10 +437,16 @@ public class SampleAndDatasetRegistrationHandlerTest extends AbstractFileSystemT context.assertIsSatisfied(); } - private void initializeDefaultDataSetHandler() + private Properties createDefaultHandlerProps() { final Properties props = new Properties(); props.setProperty("dataset-handler.data-space", "store"); + return props; + } + + private void initializeDefaultDataSetHandler() + { + Properties props = createDefaultHandlerProps(); initializeDataSetHandler(props); } @@ -415,7 +465,11 @@ public class SampleAndDatasetRegistrationHandlerTest extends AbstractFileSystemT workingCopy = new File(workingDirectory, folderName); FileOperations.getInstance().copy(dataSetFile, workingCopy); - FileOperations.getInstance().deleteRecursively(new File(workingCopy, ".svn")); + final File svnFolder = new File(workingCopy, ".svn"); + if (svnFolder.exists()) + { + FileOperations.getInstance().deleteRecursively(svnFolder); + } markerFile = new File(workingDirectory, IS_FINISHED_PREFIX + folderName); FileUtilities.writeToFile(markerFile, ""); diff --git a/datastore_server/sourceTest/java/ch/systemsx/cisd/etlserver/entityregistration/test-data/no-global-config/control.tsv b/datastore_server/sourceTest/java/ch/systemsx/cisd/etlserver/entityregistration/test-data/no-global-config/control.tsv new file mode 100644 index 0000000000000000000000000000000000000000..9aa40df1f2c800b06da6f57f68b9c2560e3dfc3a --- /dev/null +++ b/datastore_server/sourceTest/java/ch/systemsx/cisd/etlserver/entityregistration/test-data/no-global-config/control.tsv @@ -0,0 +1,9 @@ +# Control Parameters +#! GLOBAL_PROPERTIES_START +#! USERID = test@test.test +#! GLOBAL_PROPERTIES_END +# Data +S_identifier S_experiment S_PROP1 S_PROP2 S_PROP3 D_file_type D_PROP1 D_PROP2 FOLDER +/MYSPACE/S1 /MYSPACE/MYPROJ/EXP1 VAL10 VAL20 VAL30 FILE_TYPE VAL40 VAL50 ds1/ +/MYSPACE/S2 /MYSPACE/MYPROJ/EXP2 VAL11 VAL21 VAL31 FILE_TYPE VAL41 VAL51 ds2/ +/MYSPACE/S3 /MYSPACE/MYPROJ/EXP3 VAL12 VAL22 VAL32 FILE_TYPE VAL42 VAL52 ds3/ diff --git a/datastore_server/sourceTest/java/ch/systemsx/cisd/etlserver/entityregistration/test-data/no-global-config/ds1/dataset.txt b/datastore_server/sourceTest/java/ch/systemsx/cisd/etlserver/entityregistration/test-data/no-global-config/ds1/dataset.txt new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/datastore_server/sourceTest/java/ch/systemsx/cisd/etlserver/entityregistration/test-data/no-global-config/ds2/dataset.txt b/datastore_server/sourceTest/java/ch/systemsx/cisd/etlserver/entityregistration/test-data/no-global-config/ds2/dataset.txt new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/datastore_server/sourceTest/java/ch/systemsx/cisd/etlserver/entityregistration/test-data/no-global-config/ds3/dataset.txt b/datastore_server/sourceTest/java/ch/systemsx/cisd/etlserver/entityregistration/test-data/no-global-config/ds3/dataset.txt new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391