diff --git a/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/api/v2/DataSetRegistrationTransactionV2Delegate.java b/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/api/v2/DataSetRegistrationTransactionV2Delegate.java index 3fb1f4e46e8825c01c6c60981375f38b8e031acf..e2839af531f096d6947ac919a70d5fc0f16741be 100644 --- a/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/api/v2/DataSetRegistrationTransactionV2Delegate.java +++ b/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/api/v2/DataSetRegistrationTransactionV2Delegate.java @@ -123,6 +123,12 @@ public class DataSetRegistrationTransactionV2Delegate implements IDataSetRegistr return transaction.createNewSampleWithGeneratedCode(spaceCode, sampleTypeCode); } + @Override + public ISample createNewProjectSampleWithGeneratedCode(String projectIdentifier, String sampleTypeCode) + { + return transaction.createNewProjectSampleWithGeneratedCode(projectIdentifier, sampleTypeCode); + } + @Override public IExperimentImmutable getExperiment(String experimentIdentifierString) { diff --git a/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/api/v2/IDataSetRegistrationTransactionV2.java b/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/api/v2/IDataSetRegistrationTransactionV2.java index f75287037a2a85e06b1b517a340f6e163dd01fa5..ff06e7c0559139ffa65c87a8399e2c3524023cd6 100644 --- a/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/api/v2/IDataSetRegistrationTransactionV2.java +++ b/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/api/v2/IDataSetRegistrationTransactionV2.java @@ -123,6 +123,14 @@ public interface IDataSetRegistrationTransactionV2 */ ISample createNewSampleWithGeneratedCode(String spaceCode, String sampleTypeCode); + /** + * Create a new project sample to register with the openBIS AS. The sample will have a permId and automatically created identifier. + * + * @param projectIdentifier The project in which to create the sample identifier for the new sample + * @param sampleTypeCode The code of the type for the new sample + */ + ISample createNewProjectSampleWithGeneratedCode(String projectIdentifier, String sampleTypeCode); + /** * Get an experiment from the openBIS AS. * diff --git a/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/api/v2/impl/AbstractTransactionState.java b/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/api/v2/impl/AbstractTransactionState.java index 9dc41318633f751bc7645f9d50163289fb11febf..3b2e1dcaa58e6cee7fc427c8a7e3456a67a9f2e8 100644 --- a/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/api/v2/impl/AbstractTransactionState.java +++ b/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/api/v2/impl/AbstractTransactionState.java @@ -602,39 +602,38 @@ public abstract class AbstractTransactionState<T extends DataSetInformation> public ISample createNewSampleWithGeneratedCode(String spaceCode, String sampleTypeCode) { - String permId = generatePermId(); SampleType sampleType = getSampleType(sampleTypeCode); - String sampleIdentifierString; - if (spaceCode == null || spaceCode.length() == 0) - { - sampleIdentifierString = - "/" - + openBisService.generateCodes(sampleType.getGeneratedCodePrefix(), - EntityKind.SAMPLE, 1).get(0); - } else + String sampleIdentifierString = "/" + createSampleCode(sampleType); + if (spaceCode != null && spaceCode.length() > 0) { - sampleIdentifierString = - "/" - + spaceCode - + "/" - + openBisService.generateCodes(sampleType.getGeneratedCodePrefix(), - EntityKind.SAMPLE, 1).get(0); + sampleIdentifierString = "/" + spaceCode + sampleIdentifierString; } - Sample sample = new Sample(sampleIdentifierString, permId); - sample.setSampleType(sampleTypeCode); - samplesToBeRegistered.add(sample); - addIdentifier(sampleIdentifierString, "Sample"); - return sample; + return createNewSample(sampleIdentifierString, sampleTypeCode); } + public ISample createNewProjectSampleWithGeneratedCode(String projectIdentifier, String sampleTypeCode) + { + SampleType sampleType = getSampleType(sampleTypeCode); + String sampleIdentifierString = projectIdentifier + "/" + createSampleCode(sampleType); + return createNewSample(sampleIdentifierString, sampleTypeCode); + } + + private String createSampleCode(SampleType sampleType) + { + return openBisService.generateCodes(sampleType.getGeneratedCodePrefix(), EntityKind.SAMPLE, 1).get(0); + } + /// Asserts that given entity hasn't been yet created within this transaction private void addIdentifier(String identifier, String entityKind) { String updatedId = entityKind + identifier.trim().toUpperCase(); if (registeredIdentifiers.contains(updatedId)) - throw new IllegalArgumentException(entityKind + " with identifier " + identifier + " has already been created in this transaction"); + { + throw new IllegalArgumentException(entityKind + " with identifier " + identifier + + " has already been created in this transaction"); + } registeredIdentifiers.add(updatedId); } diff --git a/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/api/v2/impl/DataSetRegistrationTransaction.java b/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/api/v2/impl/DataSetRegistrationTransaction.java index c778d0dd37cd390331e29a43a1ab89081c697e99..8a3822776d21d3342893d4b82bd366cda49a58ab 100644 --- a/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/api/v2/impl/DataSetRegistrationTransaction.java +++ b/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/api/v2/impl/DataSetRegistrationTransaction.java @@ -354,6 +354,12 @@ public class DataSetRegistrationTransaction<T extends DataSetInformation> implem return getStateAsLiveState().createNewSampleWithGeneratedCode(spaceCode, sampleTypeCode); } + @Override + public ISample createNewProjectSampleWithGeneratedCode(String projectIdentifier, String sampleTypeCode) + { + return getStateAsLiveState().createNewProjectSampleWithGeneratedCode(projectIdentifier, sampleTypeCode); + } + @Override public IExperimentImmutable getExperiment(String experimentIdentifierString) {