From 512f88b54aaed2e1f8d337a7ed7986475544ca71 Mon Sep 17 00:00:00 2001
From: jakubs <jakubs>
Date: Fri, 4 Apr 2014 13:59:18 +0000
Subject: [PATCH] SSDM-13 set access timestamp at creation of an entity

SVN: 31289
---
 .../generic/server/business/bo/DataBO.java       |  1 +
 .../cisd/openbis/generic/shared/dto/DataPE.java  | 16 ++++++++++++++++
 .../dto/hibernate/SearchFieldConstants.java      |  2 ++
 3 files changed, 19 insertions(+)

diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/DataBO.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/DataBO.java
index 5fa4905d6a7..7ce2858d9b7 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/DataBO.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/DataBO.java
@@ -525,6 +525,7 @@ public class DataBO extends AbstractDataSetBusinessObject implements IDataBO
             data.setPlaceholder(false);
             data.setId(HibernateUtils.getId(placeholder));
             data.setRegistrationDate(new Date());
+            data.setAccessDate(new Date());
             RelationshipUtils.updateModificationDateAndModifier(data, findPerson());
 
             dataDAO.updateDataSet(data, findPerson());
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/dto/DataPE.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/dto/DataPE.java
index fad910bfb1a..a956fd9d674 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/dto/DataPE.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/dto/DataPE.java
@@ -114,6 +114,8 @@ public class DataPE extends AbstractIdAndCodeHolder<DataPE> implements
 
     private Date modificationDate;
 
+    private Date accessDate;
+
     private int version;
 
     private String dataProducerCode;
@@ -529,6 +531,20 @@ public class DataPE extends AbstractIdAndCodeHolder<DataPE> implements
         this.modificationDate = versionDate;
     }
 
+    @OptimisticLock(excluded = true)
+    @Column(name = ColumnNames.ACCESS_TIMESTAMP, nullable = false)
+    @Field(name = SearchFieldConstants.ACCESS_DATE, index = Index.UN_TOKENIZED, store = Store.NO)
+    @DateBridge(resolution = Resolution.SECOND)
+    public Date getAccessDate()
+    {
+        return accessDate;
+    }
+
+    public void setAccessDate(Date versionDate)
+    {
+        this.accessDate = versionDate;
+    }
+
     public void setId(final Long id)
     {
         this.id = id;
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/dto/hibernate/SearchFieldConstants.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/dto/hibernate/SearchFieldConstants.java
index f29bd40a473..c734d6ebe19 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/dto/hibernate/SearchFieldConstants.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/dto/hibernate/SearchFieldConstants.java
@@ -97,4 +97,6 @@ public final class SearchFieldConstants
     public static final String REGISTRATION_DATE = "registration_date";
 
     public static final String MODIFICATION_DATE = "modification_date";
+
+    public static final String ACCESS_DATE = "access_date";
 }
-- 
GitLab