From 6510995761e68eff6216a69ebfecee4c8ca02535 Mon Sep 17 00:00:00 2001
From: pkupczyk <pkupczyk>
Date: Fri, 17 Apr 2015 12:11:10 +0000
Subject: [PATCH] SSDM-1706 : V3 AS API - make it possible to fetch a history
 of properties of an entity - bug fixes

SVN: 33881
---
 .../entity/history/HistoryTranslator.java     |  2 +
 .../systemtest/api/v3/MapSampleTest.java      | 41 ++++++++++++++++++-
 2 files changed, 42 insertions(+), 1 deletion(-)

diff --git a/openbis/source/java/ch/ethz/sis/openbis/generic/server/api/v3/translator/entity/history/HistoryTranslator.java b/openbis/source/java/ch/ethz/sis/openbis/generic/server/api/v3/translator/entity/history/HistoryTranslator.java
index f7fd6774100..539b5f92eb8 100644
--- a/openbis/source/java/ch/ethz/sis/openbis/generic/server/api/v3/translator/entity/history/HistoryTranslator.java
+++ b/openbis/source/java/ch/ethz/sis/openbis/generic/server/api/v3/translator/entity/history/HistoryTranslator.java
@@ -94,12 +94,14 @@ public class HistoryTranslator extends AbstractCachingTranslator<IEntityInformat
 
             if (entry != null)
             {
+                entry.setFetchOptions(new HistoryEntryFetchOptions());
                 entry.setValidFrom(peEntry.getValidFromDate());
                 entry.setValidTo(peEntry.getValidUntilDate());
 
                 if (fetchOptions.hasAuthor())
                 {
                     entry.setAuthor(personTranslator.translate(context, peEntry.getAuthor(), fetchOptions.withAuthor()));
+                    entry.getFetchOptions().withAuthorUsing(fetchOptions.withAuthor());
                 }
 
                 entries.add(entry);
diff --git a/openbis/sourceTest/java/ch/ethz/sis/openbis/systemtest/api/v3/MapSampleTest.java b/openbis/sourceTest/java/ch/ethz/sis/openbis/systemtest/api/v3/MapSampleTest.java
index 7bfb6089ea7..11725cfc7d0 100644
--- a/openbis/sourceTest/java/ch/ethz/sis/openbis/systemtest/api/v3/MapSampleTest.java
+++ b/openbis/sourceTest/java/ch/ethz/sis/openbis/systemtest/api/v3/MapSampleTest.java
@@ -24,6 +24,7 @@ import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collection;
 import java.util.Collections;
+import java.util.Date;
 import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
@@ -1034,6 +1035,41 @@ public class MapSampleTest extends AbstractSampleTest
         assertEquals(history, Collections.emptyList());
     }
 
+    @Test(enabled = false)
+    public void testMapWithHistoryDates()
+    {
+        String sessionToken = v3api.login(TEST_USER, PASSWORD);
+
+        Date start = new Date();
+
+        SampleUpdate update = new SampleUpdate();
+        update.setSampleId(new SamplePermId("200902091219327-1025"));
+        update.setProperty("SIZE", "12");
+
+        v3api.updateSamples(sessionToken, Arrays.asList(update));
+
+        SampleFetchOptions fetchOptions = new SampleFetchOptions();
+        fetchOptions.withHistory();
+
+        Map<ISampleId, Sample> map = v3api.mapSamples(sessionToken, Arrays.asList(update.getSampleId()), fetchOptions);
+
+        Date end = new Date();
+
+        Sample sample = map.get(update.getSampleId());
+
+        List<HistoryEntry> history = sample.getHistory();
+        assertEquals(history.size(), 1);
+
+        PropertyHistoryEntry entry = (PropertyHistoryEntry) history.get(0);
+        assertEquals(entry.getPropertyName(), "SIZE");
+        assertEquals(entry.getPropertyValue(), "123");
+
+        assertTrue(entry.getValidFrom().after(start));
+        assertTrue(entry.getValidFrom().before(end));
+        assertTrue(entry.getValidTo().after(entry.getValidFrom()));
+        assertTrue(entry.getValidTo().before(end));
+    }
+
     @Test
     public void testMapWithHistoryProperty()
     {
@@ -1053,6 +1089,9 @@ public class MapSampleTest extends AbstractSampleTest
         PropertyHistoryEntry entry = (PropertyHistoryEntry) history.get(0);
         assertEquals(entry.getPropertyName(), "COMMENT");
         assertEquals(entry.getPropertyValue(), "comment1");
+        assertTrue(entry.getValidFrom() != null);
+        assertTrue(entry.getValidTo() != null);
+        assertEquals(entry.getAuthor().getUserId(), TEST_USER);
     }
 
     @Test
@@ -1234,7 +1273,7 @@ public class MapSampleTest extends AbstractSampleTest
         }
 
         SampleFetchOptions fetchOptions = new SampleFetchOptions();
-        fetchOptions.withHistory();
+        fetchOptions.withHistory().withAuthor();
 
         Map<ISampleId, Sample> map = v3api.mapSamples(sessionToken, permIds, fetchOptions);
 
-- 
GitLab