From 166b5afd0625ace5d17b0d4af4b1d20f782c2730 Mon Sep 17 00:00:00 2001
From: ribeaudc <ribeaudc>
Date: Tue, 12 Aug 2008 12:58:23 +0000
Subject: [PATCH] [LMS-531] change: - Complete 'DataStructureV1_1Test'.

SVN: 7823
---
 .../systemsx/cisd/bds/DataStructureV1_1.java  |  7 ++-
 .../cisd/bds/DataStructureV1_0Test.java       |  9 ++--
 .../cisd/bds/DataStructureV1_1Test.java       | 54 +++++++++++++++++++
 .../cisd/bds/SampleWithOwnerTest.java         |  4 +-
 .../bds/hcs/HCSDataStructureTestV1_0.java     |  5 +-
 5 files changed, 69 insertions(+), 10 deletions(-)

diff --git a/bds/source/java/ch/systemsx/cisd/bds/DataStructureV1_1.java b/bds/source/java/ch/systemsx/cisd/bds/DataStructureV1_1.java
index 2c55cacc25b..97944863da5 100644
--- a/bds/source/java/ch/systemsx/cisd/bds/DataStructureV1_1.java
+++ b/bds/source/java/ch/systemsx/cisd/bds/DataStructureV1_1.java
@@ -48,7 +48,7 @@ public final class DataStructureV1_1 extends DataStructureV1_0
      * Returns the sample.
      * <p>
      * For backward compatibility, loads a {@link Sample} when no
-     * <code>SampleWithOwner.GROUP_CODE</code> node could be found in meta data directory.
+     * <code>SampleWithOwner.GROUP_CODE</code> node could be found in sample directory.
      * </p>
      * 
      * @throws DataStructureException if the sample hasn't be loaded nor hasn't be set by
@@ -59,7 +59,8 @@ public final class DataStructureV1_1 extends DataStructureV1_0
     {
         assertOpenOrCreated();
         final IDirectory metaDataDirectory = getMetaDataDirectory();
-        if (metaDataDirectory.tryGetNode(SampleWithOwner.GROUP_CODE) == null)
+        final IDirectory sampleDir = metaDataDirectory.tryGetNode(Sample.FOLDER).tryAsDirectory();
+        if (sampleDir.tryGetNode(SampleWithOwner.GROUP_CODE) == null)
         {
             return Sample.loadFrom(metaDataDirectory);
         }
@@ -68,6 +69,8 @@ public final class DataStructureV1_1 extends DataStructureV1_0
 
     /**
      * Sets the sample. Overwrites an already set or loaded value.
+     * 
+     * @param sample Must be an instance of {@link SampleWithOwner}.
      */
     @Override
     public final void setSample(final Sample sample)
diff --git a/bds/sourceTest/java/ch/systemsx/cisd/bds/DataStructureV1_0Test.java b/bds/sourceTest/java/ch/systemsx/cisd/bds/DataStructureV1_0Test.java
index 2536d71c10e..243514abb9e 100644
--- a/bds/sourceTest/java/ch/systemsx/cisd/bds/DataStructureV1_0Test.java
+++ b/bds/sourceTest/java/ch/systemsx/cisd/bds/DataStructureV1_0Test.java
@@ -482,14 +482,15 @@ public final class DataStructureV1_0Test extends AbstractFileSystemTestCase
 
     private final void createExampleDataStructure()
     {
-        createExampleDataStructure(storage);
+        createExampleDataStructure(storage, new Version(1, 0));
     }
 
-    public final static void createExampleDataStructure(final IStorage storage)
+    public final static void createExampleDataStructure(final IStorage storage,
+            final Version version)
     {
         storage.mount();
         final IDirectory root = storage.getRoot();
-        new Version(1, 0).saveTo(root);
+        version.saveTo(root);
         final IDirectory data = root.makeDirectory(DataStructureV1_0.DIR_DATA);
         final IDirectory originalDataDir = data.makeDirectory(DataStructureV1_0.DIR_ORIGINAL);
         originalDataDir.addKeyValuePair("file1", "This is my first file.");
@@ -506,7 +507,7 @@ public final class DataStructureV1_0Test extends AbstractFileSystemTestCase
         storage.unmount();
     }
 
-    private final static void createExampleChecksum(final IDirectory metaData)
+    final static void createExampleChecksum(final IDirectory metaData)
     {
         final IDirectory checksumDir = metaData.makeDirectory(ChecksumHandler.CHECKSUM_DIRECTORY);
         checksumDir.addKeyValuePair(DataStructureV1_0.DIR_ORIGINAL,
diff --git a/bds/sourceTest/java/ch/systemsx/cisd/bds/DataStructureV1_1Test.java b/bds/sourceTest/java/ch/systemsx/cisd/bds/DataStructureV1_1Test.java
index 990d87867f8..b56bf8b4fa9 100644
--- a/bds/sourceTest/java/ch/systemsx/cisd/bds/DataStructureV1_1Test.java
+++ b/bds/sourceTest/java/ch/systemsx/cisd/bds/DataStructureV1_1Test.java
@@ -16,9 +16,14 @@
 
 package ch.systemsx.cisd.bds;
 
+import static org.testng.AssertJUnit.assertEquals;
+import static org.testng.AssertJUnit.assertFalse;
+import static org.testng.AssertJUnit.assertTrue;
+
 import java.io.IOException;
 
 import org.testng.annotations.BeforeMethod;
+import org.testng.annotations.Test;
 
 import ch.systemsx.cisd.bds.storage.filesystem.FileStorage;
 import ch.systemsx.cisd.common.utilities.AbstractFileSystemTestCase;
@@ -30,6 +35,8 @@ import ch.systemsx.cisd.common.utilities.AbstractFileSystemTestCase;
  */
 public final class DataStructureV1_1Test extends AbstractFileSystemTestCase
 {
+    private static final Sample SAMPLE = new Sample("a", "CELL_PLATE", "b");
+
     private FileStorage storage;
 
     private DataStructureV1_1 dataStructure;
@@ -47,4 +54,51 @@ public final class DataStructureV1_1Test extends AbstractFileSystemTestCase
         dataStructure = new DataStructureV1_1(storage);
     }
 
+    @Test
+    public void testGetVersion()
+    {
+        dataStructure.create();
+        assertEquals(new Version(1, 1), dataStructure.getVersion());
+    }
+
+    @Test
+    public void testSetSample()
+    {
+        dataStructure.create();
+        boolean fail = true;
+        try
+        {
+            dataStructure.setSample(SAMPLE);
+        } catch (final AssertionError ex)
+        {
+            fail = false;
+        }
+        assertFalse(fail);
+        dataStructure.setSample(new SampleWithOwner(SAMPLE, "",
+                SampleWithOwnerTest.DATABASE_INSTANCE_CODE));
+    }
+
+    @Test
+    public final void testGetSample()
+    {
+        dataStructure.create();
+        final SampleWithOwner sampleWithOwner =
+                new SampleWithOwner(SAMPLE, "", SampleWithOwnerTest.DATABASE_INSTANCE_CODE);
+        dataStructure.setSample(sampleWithOwner);
+        final Sample sample = dataStructure.getSample();
+        assertTrue(sample instanceof SampleWithOwner);
+        final String databaseInstanceCode = sampleWithOwner.getDatabaseInstanceCode();
+        assertTrue(databaseInstanceCode.length() > 0);
+        assertEquals(databaseInstanceCode, ((SampleWithOwner) sample).getDatabaseInstanceCode());
+    }
+
+    @Test
+    public final void testBackwardCompatible()
+    {
+        DataStructureV1_0Test.createExampleDataStructure(storage, new Version(1, 1));
+        dataStructure.open();
+        final Sample sample = dataStructure.getSample();
+        assertFalse(sample instanceof SampleWithOwner);
+        dataStructure.close();
+    }
 }
diff --git a/bds/sourceTest/java/ch/systemsx/cisd/bds/SampleWithOwnerTest.java b/bds/sourceTest/java/ch/systemsx/cisd/bds/SampleWithOwnerTest.java
index b25608185bd..086b59dd8d4 100644
--- a/bds/sourceTest/java/ch/systemsx/cisd/bds/SampleWithOwnerTest.java
+++ b/bds/sourceTest/java/ch/systemsx/cisd/bds/SampleWithOwnerTest.java
@@ -40,9 +40,9 @@ public final class SampleWithOwnerTest extends AbstractFileSystemTestCase
 
     private static final String CODE = "code";
 
-    private static final String DATABASE_INSTANCE_CODE = "DB1";
+    static final String DATABASE_INSTANCE_CODE = "DB1";
 
-    private static final String GROUP_CODE = "G1";
+    static final String GROUP_CODE = "G1";
 
     @Test
     public final void testConstructor()
diff --git a/bds/sourceTest/java/ch/systemsx/cisd/bds/hcs/HCSDataStructureTestV1_0.java b/bds/sourceTest/java/ch/systemsx/cisd/bds/hcs/HCSDataStructureTestV1_0.java
index edc1f4e28fb..9d3de5dc12f 100644
--- a/bds/sourceTest/java/ch/systemsx/cisd/bds/hcs/HCSDataStructureTestV1_0.java
+++ b/bds/sourceTest/java/ch/systemsx/cisd/bds/hcs/HCSDataStructureTestV1_0.java
@@ -27,13 +27,14 @@ import org.testng.annotations.BeforeMethod;
 import org.testng.annotations.Test;
 
 import ch.systemsx.cisd.bds.DataStructureLoader;
-import ch.systemsx.cisd.bds.DataStructureV1_0Test;
 import ch.systemsx.cisd.bds.DataStructureV1_0;
+import ch.systemsx.cisd.bds.DataStructureV1_0Test;
 import ch.systemsx.cisd.bds.Format;
 import ch.systemsx.cisd.bds.FormatParameter;
 import ch.systemsx.cisd.bds.IDataStructure;
 import ch.systemsx.cisd.bds.IFormattedData;
 import ch.systemsx.cisd.bds.Utilities;
+import ch.systemsx.cisd.bds.Version;
 import ch.systemsx.cisd.bds.exception.DataStructureException;
 import ch.systemsx.cisd.bds.storage.filesystem.FileStorage;
 import ch.systemsx.cisd.common.utilities.AbstractFileSystemTestCase;
@@ -100,7 +101,7 @@ public final class HCSDataStructureTestV1_0 extends AbstractFileSystemTestCase
     {
         // Creating...
         dataStructure.create();
-        DataStructureV1_0Test.createExampleDataStructure(storage);
+        DataStructureV1_0Test.createExampleDataStructure(storage, new Version(1, 0));
         setFormatAndFormatParameters();
         dataStructure.close();
         // And loading...
-- 
GitLab