From 10e83effa95e4ceede975e49b86258be1c27b60e Mon Sep 17 00:00:00 2001
From: cramakri <cramakri>
Date: Tue, 15 Feb 2011 19:57:25 +0000
Subject: [PATCH] LMS-1988 Fixed some small bugs in the entity registration
 code. Removed not-yet-implemented method from interface.

SVN: 19990
---
 .../v1/IDataSetRegistrationTransaction.java   | 13 +++++++------
 .../registrator/api/v1/impl/DataSet.java      | 16 ++++++++++++----
 .../impl/DataSetRegistrationTransaction.java  | 10 ++++++----
 .../api/v1/impl/ExperimentImmutable.java      |  2 +-
 .../registrator/api/v1/impl/Sample.java       | 19 +++++++++----------
 .../api/v1/impl/SampleImmutable.java          | 11 ++++++++++-
 6 files changed, 45 insertions(+), 26 deletions(-)

diff --git a/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/api/v1/IDataSetRegistrationTransaction.java b/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/api/v1/IDataSetRegistrationTransaction.java
index 47ffafc5381..d2df83a95ee 100644
--- a/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/api/v1/IDataSetRegistrationTransaction.java
+++ b/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/api/v1/IDataSetRegistrationTransaction.java
@@ -39,12 +39,17 @@ public interface IDataSetRegistrationTransaction
     IDataSet createNewDataSet();
 
     /**
-     * Get a sample from the openBIS AS.
+     * Get a sample from the openBIS AS. Returns null if the sample does not exist.
+     * 
+     * @return A sample or null
      */
     ISampleImmutable getSample(String sampleIdentifierString);
 
     /**
-     * Get a sample from the openBIS AS for the purpose of modifying it.
+     * Get a sample from the openBIS AS for the purpose of modifying it. Returns null if the sample
+     * does not exist.
+     * 
+     * @return A sample or null
      */
     ISample getSampleForUpdate(String sampleIdentifierString);
 
@@ -114,8 +119,4 @@ public interface IDataSetRegistrationTransaction
      */
     String createNewFile(IDataSet dst, String dstInDataset, String fileName);
 
-    /**
-     * Delete a file a the given path.
-     */
-    void deleteFile(String src);
 }
diff --git a/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/api/v1/impl/DataSet.java b/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/api/v1/impl/DataSet.java
index 2c5449dd903..3de83b0cbab 100644
--- a/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/api/v1/impl/DataSet.java
+++ b/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/api/v1/impl/DataSet.java
@@ -26,6 +26,7 @@ import ch.systemsx.cisd.etlserver.registrator.api.v1.ISampleImmutable;
 import ch.systemsx.cisd.openbis.dss.generic.shared.dto.DataSetInformation;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DataSetType;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.FileFormatType;
+import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Space;
 import ch.systemsx.cisd.openbis.generic.shared.dto.identifier.ExperimentIdentifier;
 import ch.systemsx.cisd.openbis.generic.shared.dto.identifier.ExperimentIdentifierFactory;
 
@@ -103,15 +104,22 @@ public class DataSet<T extends DataSetInformation> implements IDataSet
     {
         this.sampleOrNull = sampleOrNull;
 
+        DataSetInformation dataSetInformation = registrationDetails.getDataSetInformation();
         if (sampleOrNull == null)
         {
-            registrationDetails.getDataSetInformation().setSample(null);
-            registrationDetails.getDataSetInformation().setSampleCode(null);
+            dataSetInformation.setSample(null);
+            dataSetInformation.setSampleCode(null);
         } else
         {
             Sample sample = (Sample) sampleOrNull;
-            registrationDetails.getDataSetInformation().setSample(sample.getSample());
-            registrationDetails.getDataSetInformation().setSampleCode(sample.getSample().getCode());
+
+            dataSetInformation.setSample(sample.getSample());
+            dataSetInformation.setSampleCode(sample.getSample().getCode());
+            Space space = sample.getSample().getSpace();
+            if (null != space)
+            {
+                dataSetInformation.setSpaceCode(space.getCode());
+            }
             setExperiment(sample.getSample().getExperiment());
         }
     }
diff --git a/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/api/v1/impl/DataSetRegistrationTransaction.java b/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/api/v1/impl/DataSetRegistrationTransaction.java
index 4ead56eec83..72d776bc074 100644
--- a/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/api/v1/impl/DataSetRegistrationTransaction.java
+++ b/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/api/v1/impl/DataSetRegistrationTransaction.java
@@ -179,7 +179,9 @@ public class DataSetRegistrationTransaction<T extends DataSetInformation> implem
     {
         SampleIdentifier sampleIdentifier =
                 new SampleIdentifierFactory(sampleIdentifierString).createIdentifier();
-        return new SampleImmutable(openBisService.tryGetSampleWithExperiment(sampleIdentifier));
+        ch.systemsx.cisd.openbis.generic.shared.basic.dto.Sample sampleOrNull =
+                openBisService.tryGetSampleWithExperiment(sampleIdentifier);
+        return (null == sampleOrNull) ? null : new SampleImmutable(sampleOrNull);
     }
 
     public ISample getSampleForUpdate(String sampleIdentifierString)
@@ -196,9 +198,9 @@ public class DataSetRegistrationTransaction<T extends DataSetInformation> implem
     {
         ExperimentIdentifier experimentIdentifier =
                 new ExperimentIdentifierFactory(experimentIdentifierString).createIdentifier();
-        ExperimentImmutable experiment =
-                new ExperimentImmutable(openBisService.tryToGetExperiment(experimentIdentifier));
-        return experiment;
+        ch.systemsx.cisd.openbis.generic.shared.basic.dto.Experiment experimentOrNull =
+                openBisService.tryToGetExperiment(experimentIdentifier);
+        return (null == experimentOrNull) ? null : new ExperimentImmutable(experimentOrNull);
     }
 
     public IExperiment createNewExperiment(String experimentIdentifierString)
diff --git a/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/api/v1/impl/ExperimentImmutable.java b/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/api/v1/impl/ExperimentImmutable.java
index 9a101208e37..e13407c4112 100644
--- a/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/api/v1/impl/ExperimentImmutable.java
+++ b/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/api/v1/impl/ExperimentImmutable.java
@@ -40,7 +40,7 @@ class ExperimentImmutable implements IExperimentImmutable
 
     public boolean isExistingExperiment()
     {
-        return null != experiment;
+        return true;
     }
 
     /**
diff --git a/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/api/v1/impl/Sample.java b/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/api/v1/impl/Sample.java
index 2f035ce2602..f7b1af97493 100644
--- a/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/api/v1/impl/Sample.java
+++ b/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/api/v1/impl/Sample.java
@@ -16,13 +16,10 @@
 
 package ch.systemsx.cisd.etlserver.registrator.api.v1.impl;
 
-import java.util.ArrayList;
-import java.util.List;
-
 import ch.systemsx.cisd.etlserver.registrator.api.v1.IExperimentImmutable;
 import ch.systemsx.cisd.etlserver.registrator.api.v1.ISample;
-import ch.systemsx.cisd.openbis.generic.shared.basic.dto.IEntityProperty;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.SampleType;
+import ch.systemsx.cisd.openbis.generic.shared.basic.dto.builders.SampleBuilder;
 import ch.systemsx.cisd.openbis.generic.shared.util.EntityHelper;
 
 /**
@@ -31,6 +28,13 @@ import ch.systemsx.cisd.openbis.generic.shared.util.EntityHelper;
 public class Sample extends SampleImmutable implements ISample
 {
 
+    private static ch.systemsx.cisd.openbis.generic.shared.basic.dto.Sample buildSampleWithIdentifier(
+            String identifier)
+    {
+        SampleBuilder builder = new SampleBuilder(identifier);
+        return builder.getSample();
+    }
+
     public Sample(ch.systemsx.cisd.openbis.generic.shared.basic.dto.Sample sample)
     {
         super(sample);
@@ -38,15 +42,10 @@ public class Sample extends SampleImmutable implements ISample
 
     public Sample(String sampleIdentifier, String permId)
     {
-        super(new ch.systemsx.cisd.openbis.generic.shared.basic.dto.Sample());
-        getSample().setIdentifier(sampleIdentifier);
+        super(buildSampleWithIdentifier(sampleIdentifier), false);
         getSample().setPermId(permId);
-
-        List<IEntityProperty> properties = new ArrayList<IEntityProperty>();
-        getSample().setProperties(properties);
     }
 
-
     public void setExperiment(IExperimentImmutable experiment)
     {
         ExperimentImmutable exp = (ExperimentImmutable) experiment;
diff --git a/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/api/v1/impl/SampleImmutable.java b/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/api/v1/impl/SampleImmutable.java
index b69116947b5..2e73374363c 100644
--- a/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/api/v1/impl/SampleImmutable.java
+++ b/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/api/v1/impl/SampleImmutable.java
@@ -28,9 +28,18 @@ public class SampleImmutable implements ISampleImmutable
 {
     private final ch.systemsx.cisd.openbis.generic.shared.basic.dto.Sample sample;
 
+    private final boolean existingSample;
+
     public SampleImmutable(ch.systemsx.cisd.openbis.generic.shared.basic.dto.Sample sample)
+    {
+        this(sample, true);
+    }
+
+    public SampleImmutable(ch.systemsx.cisd.openbis.generic.shared.basic.dto.Sample sample,
+            boolean existingSample)
     {
         this.sample = sample;
+        this.existingSample = existingSample;
     }
 
     public IExperimentImmutable getExperiment()
@@ -52,7 +61,7 @@ public class SampleImmutable implements ISampleImmutable
 
     public boolean isExistingSample()
     {
-        return null != sample;
+        return existingSample;
     }
 
     /**
-- 
GitLab