From 552da99c0df49f68a936dbce8763bbf8c4cc2ede Mon Sep 17 00:00:00 2001
From: Andre Hartig <andre.hartig@student.reutlingen-university.de>
Date: Mon, 3 Jun 2024 19:49:39 +0200
Subject: [PATCH] Reworked timestamps for classes.

---
 opp/core/src/main/java/OPStaff.java               |  4 +++-
 opp/core/src/main/java/ObjectTimestamp.java       |  7 -------
 opp/core/src/main/java/Operation.java             |  3 ++-
 opp/core/src/main/java/OperationTeam.java         |  3 ++-
 opp/core/src/main/java/PreparationNote.java       |  3 ++-
 opp/core/src/main/java/Room.java                  |  4 +++-
 .../src/main/java/JDBCRepository.java             | 15 ++++++++++-----
 .../src/main/java/OperationServiceImpl.java       |  4 +++-
 opp/jdbc-repo-impl/src/test/java/Tests.java       |  4 +++-
 9 files changed, 28 insertions(+), 19 deletions(-)
 delete mode 100644 opp/core/src/main/java/ObjectTimestamp.java

diff --git a/opp/core/src/main/java/OPStaff.java b/opp/core/src/main/java/OPStaff.java
index 4e94207..d92a5af 100644
--- a/opp/core/src/main/java/OPStaff.java
+++ b/opp/core/src/main/java/OPStaff.java
@@ -1,7 +1,9 @@
+import java.time.Instant;
+
 public record OPStaff(
         Id<OPStaff> opStaffId,
         Role role,
         String specialty,
-        ObjectTimestamp lastUpdate
+        Instant lastUpdate
 ) {
 }
diff --git a/opp/core/src/main/java/ObjectTimestamp.java b/opp/core/src/main/java/ObjectTimestamp.java
deleted file mode 100644
index d57a873..0000000
--- a/opp/core/src/main/java/ObjectTimestamp.java
+++ /dev/null
@@ -1,7 +0,0 @@
-import java.time.LocalDateTime;
-
-public record ObjectTimestamp(
-        LocalDateTime timestamp,
-        ObjectModification objectModification
-) {
-}
diff --git a/opp/core/src/main/java/Operation.java b/opp/core/src/main/java/Operation.java
index 20d548f..b0d376b 100644
--- a/opp/core/src/main/java/Operation.java
+++ b/opp/core/src/main/java/Operation.java
@@ -1,3 +1,4 @@
+import java.time.Instant;
 import java.time.LocalDate;
 import java.time.LocalTime;
 import java.util.Optional;
@@ -14,7 +15,7 @@ public record Operation(
         LocalDate date,
         LocalTime startTime,
         LocalTime endTime,
-        ObjectTimestamp lastUpdate
+        Instant lastUpdate
 ) {
 
     /**
diff --git a/opp/core/src/main/java/OperationTeam.java b/opp/core/src/main/java/OperationTeam.java
index 95da2c0..ce149f7 100644
--- a/opp/core/src/main/java/OperationTeam.java
+++ b/opp/core/src/main/java/OperationTeam.java
@@ -1,8 +1,9 @@
+import java.time.Instant;
 import java.util.List;
 
 public record OperationTeam(
         Id<OperationTeam> operationTeamId,
         List<OPStaff> opStaffList,
-        ObjectTimestamp lastUpdate
+        Instant lastUpdate
 ) {
 }
diff --git a/opp/core/src/main/java/PreparationNote.java b/opp/core/src/main/java/PreparationNote.java
index 9c368d1..876f903 100644
--- a/opp/core/src/main/java/PreparationNote.java
+++ b/opp/core/src/main/java/PreparationNote.java
@@ -1,9 +1,10 @@
+import java.time.Instant;
 import java.time.LocalDateTime;
 
 public record PreparationNote(
         Id<PreparationNote> preparationNoteId,
         String text,
         Operation operationId,
-        ObjectTimestamp lastUpdate
+        Instant lastUpdate
 ) {
 }
diff --git a/opp/core/src/main/java/Room.java b/opp/core/src/main/java/Room.java
index 856b8f0..a221942 100644
--- a/opp/core/src/main/java/Room.java
+++ b/opp/core/src/main/java/Room.java
@@ -1,6 +1,8 @@
+import java.time.Instant;
+
 public record Room(
         Id<Room> roomId,
         String roomName,
-        ObjectTimestamp lastUpdate
+        Instant lastUpdate
 ) {
 }
diff --git a/opp/jdbc-repo-impl/src/main/java/JDBCRepository.java b/opp/jdbc-repo-impl/src/main/java/JDBCRepository.java
index 02fb60f..553d367 100644
--- a/opp/jdbc-repo-impl/src/main/java/JDBCRepository.java
+++ b/opp/jdbc-repo-impl/src/main/java/JDBCRepository.java
@@ -226,7 +226,8 @@ class JDBCRepository implements Repository
       id VARCHAR(50) PRIMARY KEY,
       date DATE NOT NULL,
       startTime TIME NOT NULL,
-      endTime TIME NOT NULL
+      endTime TIME NOT NULL,
+      lastUpdate TIMESTAMP NOT NULL
     );
   """;
 
@@ -238,12 +239,13 @@ class JDBCRepository implements Repository
   private static String insertSQL(Operation operation){
     return
             "INSERT INTO operations(" +
-                    "id,date,startTime,endTime" +
+                    "id,date,startTime,endTime,lastUpdate" +
                     ") VALUES (" +
                     sqlValue(operation.id().value()) + "," +
                     sqlValue(operation.date()) + "," +
                     sqlValue(operation.startTime()) + "," +
-                    sqlValue(operation.endTime()) +
+                    sqlValue(operation.endTime()) + "," +
+                    sqlValue(operation.lastUpdate()) +
                     ");";
   }
 
@@ -258,6 +260,7 @@ class JDBCRepository implements Repository
                     "date = " + sqlValue(operation.date()) + "," +
                     "startTime = " + sqlValue(operation.startTime()) + "," +
                     "endTime = " + sqlValue(operation.endTime()) + " " +
+                    "lastUpdate = " + sqlValue(operation.lastUpdate()) + " " +
                     "WHERE id = " + sqlValue(operation.id().value()) + ";";
   }
 
@@ -369,11 +372,13 @@ class JDBCRepository implements Repository
    * @throws SQLException Error while reading the SQL-Row
    */
   private static Operation readOperationFromRow(ResultSet rs) throws SQLException {
-      return new Operation(
+
+    return new Operation(
           new Id<>(rs.getString("id")),
           rs.getDate("date").toLocalDate(),
           rs.getTime("startTime").toLocalTime(),
-          rs.getTime("endTime").toLocalTime()
+          rs.getTime("endTime").toLocalTime(),
+          rs.getTimestamp("lastUpdate").toInstant()
     );
   }
 }
diff --git a/opp/jdbc-repo-impl/src/main/java/OperationServiceImpl.java b/opp/jdbc-repo-impl/src/main/java/OperationServiceImpl.java
index a47b502..4e0f04d 100644
--- a/opp/jdbc-repo-impl/src/main/java/OperationServiceImpl.java
+++ b/opp/jdbc-repo-impl/src/main/java/OperationServiceImpl.java
@@ -1,3 +1,4 @@
+import java.time.Instant;
 import java.util.List;
 import java.util.Optional;
 
@@ -36,7 +37,8 @@ public class OperationServiceImpl implements OperationService {
                         repo.operationId(),
                         cr.date(),
                         cr.startTime(),
-                        cr.endTime());
+                        cr.endTime(),
+                        Instant.now());
 
         repo.save(operation);
 
diff --git a/opp/jdbc-repo-impl/src/test/java/Tests.java b/opp/jdbc-repo-impl/src/test/java/Tests.java
index 1a7a662..4643f70 100644
--- a/opp/jdbc-repo-impl/src/test/java/Tests.java
+++ b/opp/jdbc-repo-impl/src/test/java/Tests.java
@@ -1,6 +1,7 @@
 import org.junit.BeforeClass;
 import org.junit.Test;
 
+import java.time.Instant;
 import java.time.LocalDate;
 import java.time.LocalTime;
 import java.util.List;
@@ -45,7 +46,8 @@ public final class Tests
             new Id<>("1111"),
             LocalDate.of(2024, 05, 24),
             LocalTime.of(13, 35, 00),
-            LocalTime.of(14, 00, 00));
+            LocalTime.of(14, 00, 00),
+            Instant.now());
 
     opService = new OperationServiceImpl(repo);
   }
-- 
GitLab