From ae22b55130354fc5c4400fb3fa3d2217ff050d97 Mon Sep 17 00:00:00 2001 From: agoer <alexander.goerlitz@student.reutlingen-university.de> Date: Sat, 15 Jun 2024 12:33:43 +0200 Subject: [PATCH] implemented update for OPStaff. --- opp/core/src/main/java/OPStaff.java | 9 ++++++- .../src/main/java/OPStaffServiceImpl.java | 17 ++++++++++++- .../src/main/java/JDBCRepository.java | 24 +++++++++++++++---- opp/jdbc-repo-impl/src/test/java/Tests.java | 15 +++++++++++- 4 files changed, 57 insertions(+), 8 deletions(-) diff --git a/opp/core/src/main/java/OPStaff.java b/opp/core/src/main/java/OPStaff.java index 352781c..c7d0851 100644 --- a/opp/core/src/main/java/OPStaff.java +++ b/opp/core/src/main/java/OPStaff.java @@ -1,6 +1,7 @@ import java.time.Instant; import java.time.LocalDate; import java.time.LocalTime; +import java.util.Optional; public record OPStaff( Id<OPStaff> id, @@ -12,7 +13,7 @@ public record OPStaff( /** * OPStaff commands */ - public static sealed interface Command permits OPStaff.CreateOPStaff { } //, OPStaff.UpdateOPStaff, OPStaff.DeleteOPStaff + public static sealed interface Command permits OPStaff.CreateOPStaff, OPStaff.UpdateOPStaff { } //OPStaff.DeleteOPStaff /** * Create command to create a new Operation @@ -24,5 +25,11 @@ public record OPStaff( Specialty specialty ) implements Command {} + public static record UpdateOPStaff( + Id<OPStaff> id, + Optional<Role> role, + Optional<Specialty> specialty + ) implements Command {} + } diff --git a/opp/core/src/main/java/OPStaffServiceImpl.java b/opp/core/src/main/java/OPStaffServiceImpl.java index b204542..51d90a5 100644 --- a/opp/core/src/main/java/OPStaffServiceImpl.java +++ b/opp/core/src/main/java/OPStaffServiceImpl.java @@ -14,7 +14,7 @@ public class OPStaffServiceImpl implements OPStaffService{ public OPStaff process(OPStaff.Command cmd) throws Exception { return switch (cmd){ case OPStaff.CreateOPStaff cr -> createOPStaffimpl(cr); - //case OPStaff.Update up -> update(up); + case OPStaff.UpdateOPStaff up -> updateOPStaffimpl(up); //case OPStaff.Delete del -> delete(del); }; } @@ -32,6 +32,21 @@ public class OPStaffServiceImpl implements OPStaffService{ return opStaff; } + public OPStaff updateOPStaffimpl(OPStaff.UpdateOPStaff up) throws Exception{ + OPStaff currentOPStaff = repo.findOPStaff(up.id()).get(); + + OPStaff opStaff = + new OPStaff( + currentOPStaff.id(), + up.role().orElse(currentOPStaff.role()), + up.specialty().orElse((currentOPStaff.specialty())), + Instant.now() + ); + repo.saveOPStaff(opStaff); + + return opStaff; + } + public Optional<OPStaff> getOPStaff(Id<OPStaff> id) { return repo.findOPStaff(id); diff --git a/opp/jdbc-repo-impl/src/main/java/JDBCRepository.java b/opp/jdbc-repo-impl/src/main/java/JDBCRepository.java index c567680..0253e0f 100644 --- a/opp/jdbc-repo-impl/src/main/java/JDBCRepository.java +++ b/opp/jdbc-repo-impl/src/main/java/JDBCRepository.java @@ -431,11 +431,11 @@ class JDBCRepository implements Repository var stmt = conn.createStatement() ){ //TODO - /*var sql = - findOperation(operation.id()).isPresent() ? - updateSQL(operation) : - insertSQL(operation);*/ - var sql = insertOPStaffSQL(opStaff); + var sql = + findOPStaff(opStaff.id()).isPresent() ? + updateOPStaffSQL(opStaff) : + insertOPStaffSQL(opStaff); + //var sql = insertOPStaffSQL(opStaff); stmt.executeUpdate(sql); @@ -522,6 +522,20 @@ class JDBCRepository implements Repository ); } + /** + * Creates the update statement of the given OPStaff for SQL. + * @param opStaff the opStaff to turn into an update SQL statement + * @return the SQL statement + */ + private static String updateOPStaffSQL(OPStaff opStaff){ + return + "UPDATE opstaff SET " + + "role = " + sqlValue(opStaff.role()) + "," + + "specialty = " + sqlValue(opStaff.specialty()) + "," + + "lastUpdate = " + sqlValue(opStaff.lastUpdate()) + " " + + "WHERE id = " + sqlValue(opStaff.id().value()) + ";"; + } + } diff --git a/opp/jdbc-repo-impl/src/test/java/Tests.java b/opp/jdbc-repo-impl/src/test/java/Tests.java index 48b190b..651a2a8 100644 --- a/opp/jdbc-repo-impl/src/test/java/Tests.java +++ b/opp/jdbc-repo-impl/src/test/java/Tests.java @@ -226,7 +226,7 @@ public final class Tests //assertEquals(operation.date(), testDate); } - @Test + //@Test public void testGetOPStaffs() { try{ @@ -241,6 +241,19 @@ public final class Tests } //assertEquals(operation.date(), testDate); } + + @Test + public void testUpdateOPStaff() throws Exception{ + + OPStaff.UpdateOPStaff updateCommand = new OPStaff.UpdateOPStaff( + testOPStaff.id(), + Optional.empty(), + Optional.of(Specialty.Orthopedics) + ); + + OPStaff updateOPStaff = opStaffService.process(updateCommand); + + } } -- GitLab