Skip to content
Snippets Groups Projects
Commit 0a3bd6d8 authored by cramakri's avatar cramakri
Browse files

LMS-2264 Support for specifying data set code

SVN: 21506
parent d7a00ffc
No related branches found
No related tags found
No related merge requests found
......@@ -39,10 +39,15 @@ public interface IDataSetRegistrationTransaction
IDataSet createNewDataSet();
/**
* Create a new data set with the specified code.
* Create a new data set with the specified type.
*/
IDataSet createNewDataSet(String dataSetType);
/**
* Create a new data set with the specified type and code.
*/
IDataSet createNewDataSet(String dataSetType, String dataSetCode);
/**
* Get a sample from the openBIS AS. Returns null if the sample does not exist.
*
......
......@@ -151,15 +151,36 @@ abstract class AbstractTransactionState<T extends DataSetInformation>
return createNewDataSet(registrationDetails);
}
public IDataSet createNewDataSet(String dataSetType, String dataSetCode)
{
// Create registration details for the new data set
DataSetRegistrationDetails<T> registrationDetails =
registrationDetailsFactory.createDataSetRegistrationDetails();
registrationDetails.setDataSetType(dataSetType);
return createNewDataSet(registrationDetails, dataSetCode);
}
public IDataSet createNewDataSet(DataSetRegistrationDetails<T> registrationDetails)
{
// Request a code, so we can keep the staging file name and the data set code in sync
String dataSetCode = registrationDetails.getDataSetInformation().getDataSetCode();
if (null == dataSetCode)
return createNewDataSet(registrationDetails, registrationDetails
.getDataSetInformation().getDataSetCode());
}
public IDataSet createNewDataSet(DataSetRegistrationDetails<T> registrationDetails,
String specifiedCode)
{
final String dataSetCode;
if (null == specifiedCode)
{
dataSetCode = generateDataSetCode(registrationDetails);
registrationDetails.getDataSetInformation().setDataSetCode(dataSetCode);
} else
{
dataSetCode = specifiedCode.toUpperCase();
}
registrationDetails.getDataSetInformation().setDataSetCode(dataSetCode);
// Create a directory for the data set
File stagingFolder = new File(stagingDirectory, dataSetCode);
......
......@@ -192,6 +192,11 @@ public class DataSetRegistrationTransaction<T extends DataSetInformation> implem
return getStateAsLiveState().createNewDataSet(dataSetType);
}
public IDataSet createNewDataSet(String dataSetType, String dataSetCode)
{
return getStateAsLiveState().createNewDataSet(dataSetType, dataSetCode);
}
public IDataSet createNewDataSet(DataSetRegistrationDetails<T> registrationDetails)
{
return getStateAsLiveState().createNewDataSet(registrationDetails);
......
......@@ -69,7 +69,7 @@ public class DataSetRegistrationTransactionTest extends AbstractFileSystemTestCa
{
private static final String EXPERIMENT_IDENTIFIER = "/SPACE/PROJECT/EXP-CODE";
private static final String DATA_SET_CODE = "data-set-code";
private static final String DATA_SET_CODE = "data-set-code".toUpperCase();
private static final String DATABASE_INSTANCE_UUID = "db-uuid";
......@@ -164,6 +164,42 @@ public class DataSetRegistrationTransactionTest extends AbstractFileSystemTestCa
context.assertIsSatisfied();
}
@Test
public void testCommitSpecifyingDataSetCode()
{
setUpOpenBisExpectations(true, false);
setUpDataSetValidatorExpectations("my-data-set-code");
createTransaction();
IDataSet newDataSet = tr.createNewDataSet("UNKNOWN", "my-data-set-code");
String dst = tr.moveFile(srcFile.getAbsolutePath(), newDataSet);
IExperimentImmutable experiment = tr.getExperiment(EXPERIMENT_IDENTIFIER);
newDataSet.setExperiment(experiment);
newDataSet.setDataSetType(DATA_SET_TYPE.getCode());
checkContentsOfFile(new File(dst));
File[] rollbackQueueFiles = listRollbackQueueFiles();
assertEquals(2, rollbackQueueFiles.length);
tr.commit();
System.out.println(logAppender.getLogContent());
assertTrue(logAppender.getLogContent().length() > 0);
// Skip this for the moment
// new LogMatcher(logAppender,
// "Identified that database knows experiment '/SPACE/PROJECT/EXP-CODE'.*",
// "Start storing data set for experiment '/SPACE/PROJECT/EXP-CODE'.*",
// "Finished storing data set for experiment '/SPACE/PROJECT/EXP-CODE', took .*",
// "Successfully registered data set: .+").assertMatches();
rollbackQueueFiles = listRollbackQueueFiles();
assertEquals(0, rollbackQueueFiles.length);
context.assertIsSatisfied();
}
@Test
public void testCommitContainerDataSet()
{
......@@ -404,13 +440,22 @@ public class DataSetRegistrationTransactionTest extends AbstractFileSystemTestCa
}
private void setUpOpenBisExpectations(final boolean willRegister)
{
setUpOpenBisExpectations(willRegister, true);
}
private void setUpOpenBisExpectations(final boolean willRegister,
final boolean createDataSetCode)
{
setUpHomeDataBaseExpectations();
context.checking(new Expectations()
{
{
oneOf(openBisService).createDataSetCode();
will(returnValue(DATA_SET_CODE + 1));
if (createDataSetCode)
{
oneOf(openBisService).createDataSetCode();
will(returnValue(DATA_SET_CODE + 1));
}
if (willRegister)
{
......@@ -446,7 +491,13 @@ public class DataSetRegistrationTransactionTest extends AbstractFileSystemTestCa
private void setUpDataSetValidatorExpectations()
{
File dataSetDir = new File(stagingDirectory, DATA_SET_CODE + "1");
setUpDataSetValidatorExpectations(DATA_SET_CODE + "1");
}
private void setUpDataSetValidatorExpectations(String dataSetCode)
{
File dataSetDir = new File(stagingDirectory, dataSetCode.toUpperCase());
final File dataSetFile = new File(dataSetDir, srcFile.getName());
context.checking(new Expectations()
{
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment