From 740fd736feb3c08fa3f43f653923f26795a465fb Mon Sep 17 00:00:00 2001
From: felmer <franz-josef.elmer@id.ethz.ch>
Date: Thu, 31 Jan 2019 08:43:20 +0100
Subject: [PATCH] SSDM-7158: harvester: update modification timestamps

---
 .../AbstractRegistrationHolder.java            |  2 +-
 .../synchronizer/EntitySynchronizer.java       |  1 +
 .../synchronizer/IHarvesterQuery.java          | 18 ++++++++----------
 .../synchronizer/RegistrationDTO.java          | 14 +++++++++++++-
 4 files changed, 23 insertions(+), 12 deletions(-)

diff --git a/datastore_server/source/java/ch/ethz/sis/openbis/generic/server/dss/plugins/sync/harvester/synchronizer/AbstractRegistrationHolder.java b/datastore_server/source/java/ch/ethz/sis/openbis/generic/server/dss/plugins/sync/harvester/synchronizer/AbstractRegistrationHolder.java
index 8cf1c1de3c5..f43b03ae53d 100644
--- a/datastore_server/source/java/ch/ethz/sis/openbis/generic/server/dss/plugins/sync/harvester/synchronizer/AbstractRegistrationHolder.java
+++ b/datastore_server/source/java/ch/ethz/sis/openbis/generic/server/dss/plugins/sync/harvester/synchronizer/AbstractRegistrationHolder.java
@@ -48,5 +48,5 @@ public abstract class AbstractRegistrationHolder
         this.registrationTimestamp = registrationTimestamp;
     }
 
-
+    public abstract Date getLastModificationDate();
 }
diff --git a/datastore_server/source/java/ch/ethz/sis/openbis/generic/server/dss/plugins/sync/harvester/synchronizer/EntitySynchronizer.java b/datastore_server/source/java/ch/ethz/sis/openbis/generic/server/dss/plugins/sync/harvester/synchronizer/EntitySynchronizer.java
index 960fbaf0005..0a009236a6c 100644
--- a/datastore_server/source/java/ch/ethz/sis/openbis/generic/server/dss/plugins/sync/harvester/synchronizer/EntitySynchronizer.java
+++ b/datastore_server/source/java/ch/ethz/sis/openbis/generic/server/dss/plugins/sync/harvester/synchronizer/EntitySynchronizer.java
@@ -402,6 +402,7 @@ public class EntitySynchronizer
             RegistrationDTO registration = new RegistrationDTO();
             registration.setPermId(permID);
             registration.setTypeId(typeId);
+            registration.setModificationTimestamp(entity.getLastModificationDate());
             registration.setRegistrationTimestamp(entity.getRegistrationTimestamp());
             registration.setRegistratorId(registratorId);
             registrations.add(registration);
diff --git a/datastore_server/source/java/ch/ethz/sis/openbis/generic/server/dss/plugins/sync/harvester/synchronizer/IHarvesterQuery.java b/datastore_server/source/java/ch/ethz/sis/openbis/generic/server/dss/plugins/sync/harvester/synchronizer/IHarvesterQuery.java
index f6c790f9e84..3875622beb8 100644
--- a/datastore_server/source/java/ch/ethz/sis/openbis/generic/server/dss/plugins/sync/harvester/synchronizer/IHarvesterQuery.java
+++ b/datastore_server/source/java/ch/ethz/sis/openbis/generic/server/dss/plugins/sync/harvester/synchronizer/IHarvesterQuery.java
@@ -27,9 +27,9 @@ import net.lemnik.eodsql.Update;
  */
 public interface IHarvesterQuery extends BaseQuery
 {
-    public static final String UPDATE2 =
-            "set registration_timestamp = ?{1.registrationTimestamp}, pers_id_registerer = ?{1.registratorId} "
-                    + "where perm_id = ?{1.permId}";
+    public static final String SETTERS = "set modification_timestamp = ?{1.modificationTimestamp}, "
+            + "registration_timestamp = ?{1.registrationTimestamp}, "
+            + "pers_id_registerer = ?{1.registratorId} ";
 
     @Select("select id,user_id as userId from persons")
     public List<PersonRecord> listAllUsers();
@@ -37,20 +37,18 @@ public interface IHarvesterQuery extends BaseQuery
     @Select("select id,code from material_types")
     public List<MaterialTypeRecord> listAllMaterialTypes();
 
-    @Update(sql = "update materials set registration_timestamp = ?{1.registrationTimestamp}, pers_id_registerer = ?{1.registratorId} "
-            + "where code = ?{1.permId} and maty_id = ?{1.typeId}", batchUpdate = true)
+    @Update(sql = "update materials " + SETTERS + " where code = ?{1.permId} and maty_id = ?{1.typeId}", batchUpdate = true)
     public void updateMaterialRegistrations(List<RegistrationDTO> registrations);
 
-    @Update(sql = "update projects " + UPDATE2, batchUpdate = true)
+    @Update(sql = "update projects " + SETTERS + "where perm_id = ?{1.permId}", batchUpdate = true)
     public void updateProjectRegistrations(List<RegistrationDTO> registrations);
 
-    @Update(sql = "update experiments_all " + UPDATE2, batchUpdate = true)
+    @Update(sql = "update experiments_all " + SETTERS + "where perm_id = ?{1.permId}", batchUpdate = true)
     public void updateExperimentRegistrations(List<RegistrationDTO> registrations);
 
-    @Update(sql = "update samples_all " + UPDATE2, batchUpdate = true)
+    @Update(sql = "update samples_all " + SETTERS + "where perm_id = ?{1.permId}", batchUpdate = true)
     public void updateSampleRegistrations(List<RegistrationDTO> registrations);
 
-    @Update(sql = "update data_all set registration_timestamp = ?{1.registrationTimestamp}, pers_id_registerer = ?{1.registratorId} "
-            + "where code = ?{1.permId}", batchUpdate = true)
+    @Update(sql = "update data_all " + SETTERS + "where code = ?{1.permId}", batchUpdate = true)
     public void updateDataSetRegistrations(List<RegistrationDTO> registrations);
 }
diff --git a/datastore_server/source/java/ch/ethz/sis/openbis/generic/server/dss/plugins/sync/harvester/synchronizer/RegistrationDTO.java b/datastore_server/source/java/ch/ethz/sis/openbis/generic/server/dss/plugins/sync/harvester/synchronizer/RegistrationDTO.java
index de5777cfe3e..ab1083230e7 100644
--- a/datastore_server/source/java/ch/ethz/sis/openbis/generic/server/dss/plugins/sync/harvester/synchronizer/RegistrationDTO.java
+++ b/datastore_server/source/java/ch/ethz/sis/openbis/generic/server/dss/plugins/sync/harvester/synchronizer/RegistrationDTO.java
@@ -24,9 +24,11 @@ import java.util.Date;
 public class RegistrationDTO
 {
     private String permId;
-    
+
     private Long typeId;
 
+    private Date modificationTimestamp;
+
     private Date registrationTimestamp;
 
     private long registratorId;
@@ -51,6 +53,16 @@ public class RegistrationDTO
         this.typeId = typeId;
     }
 
+    public Date getModificationTimestamp()
+    {
+        return modificationTimestamp;
+    }
+
+    public void setModificationTimestamp(Date modificationTimestamp)
+    {
+        this.modificationTimestamp = modificationTimestamp;
+    }
+
     public Date getRegistrationTimestamp()
     {
         return registrationTimestamp;
-- 
GitLab