From 21792f208f8d8d2d7c94e4a35335c8db15062977 Mon Sep 17 00:00:00 2001
From: Michal Badin <xbadin@fi.muni.cz>
Date: Wed, 3 May 2023 08:56:28 +0200
Subject: [PATCH] refactoring(DomainObject): Generalized DomainObject

---
 core/src/main/java/cz/muni/pa165/data/model/Car.java   |  2 +-
 .../java/cz/muni/pa165/data/model/CarComponent.java    |  2 +-
 .../main/java/cz/muni/pa165/data/model/Department.java |  2 +-
 .../java/cz/muni/pa165/data/model/DomainObject.java    | 10 ++++++----
 .../src/main/java/cz/muni/pa165/data/model/Driver.java |  2 +-
 .../main/java/cz/muni/pa165/data/model/Engineer.java   |  2 +-
 6 files changed, 11 insertions(+), 9 deletions(-)

diff --git a/core/src/main/java/cz/muni/pa165/data/model/Car.java b/core/src/main/java/cz/muni/pa165/data/model/Car.java
index cfd36d0..26bd28b 100644
--- a/core/src/main/java/cz/muni/pa165/data/model/Car.java
+++ b/core/src/main/java/cz/muni/pa165/data/model/Car.java
@@ -11,7 +11,7 @@ import java.util.Set;
 
 @Entity
 @Table(name = "car")
-public class Car extends DomainObject implements Serializable {
+public class Car extends DomainObject<Long> implements Serializable {
     @OneToOne(fetch = FetchType.LAZY)
     @JoinColumn(name = "driver_id")
     @Nullable
diff --git a/core/src/main/java/cz/muni/pa165/data/model/CarComponent.java b/core/src/main/java/cz/muni/pa165/data/model/CarComponent.java
index f5641c0..866127d 100644
--- a/core/src/main/java/cz/muni/pa165/data/model/CarComponent.java
+++ b/core/src/main/java/cz/muni/pa165/data/model/CarComponent.java
@@ -12,7 +12,7 @@ import java.util.Objects;
 
 @Entity
 @Table(name = "car_component")
-public class CarComponent extends DomainObject implements Serializable {
+public class CarComponent extends DomainObject<Long> implements Serializable {
 
     @Column(name = "component_type")
     @Enumerated(EnumType.STRING)
diff --git a/core/src/main/java/cz/muni/pa165/data/model/Department.java b/core/src/main/java/cz/muni/pa165/data/model/Department.java
index ca27780..8d4ce31 100644
--- a/core/src/main/java/cz/muni/pa165/data/model/Department.java
+++ b/core/src/main/java/cz/muni/pa165/data/model/Department.java
@@ -10,7 +10,7 @@ import java.util.Set;
 
 @Entity
 @Table(name = "department")
-public class Department extends DomainObject implements Serializable {
+public class Department extends DomainObject<Long> implements Serializable {
 
     @NotEmpty
     private String specialization;
diff --git a/core/src/main/java/cz/muni/pa165/data/model/DomainObject.java b/core/src/main/java/cz/muni/pa165/data/model/DomainObject.java
index 1fa1259..7071f57 100644
--- a/core/src/main/java/cz/muni/pa165/data/model/DomainObject.java
+++ b/core/src/main/java/cz/muni/pa165/data/model/DomainObject.java
@@ -6,20 +6,22 @@ import jakarta.persistence.GenerationType;
 import jakarta.persistence.Id;
 import jakarta.persistence.MappedSuperclass;
 
+import java.io.Serializable;
+
 /**
  * @author Michal Badin
  */
 @MappedSuperclass
-public abstract class DomainObject {
+public abstract class DomainObject<PK extends Serializable> implements Serializable {
     @Id
     @GeneratedValue(strategy = GenerationType.IDENTITY)
-    private Long id;
+    private PK id;
 
-    public Long getId() {
+    public PK getId() {
         return id;
     }
 
-    public void setId(Long id) {
+    public void setId(PK id) {
         this.id = id;
     }
 }
diff --git a/core/src/main/java/cz/muni/pa165/data/model/Driver.java b/core/src/main/java/cz/muni/pa165/data/model/Driver.java
index efa7bad..6d401bf 100644
--- a/core/src/main/java/cz/muni/pa165/data/model/Driver.java
+++ b/core/src/main/java/cz/muni/pa165/data/model/Driver.java
@@ -16,7 +16,7 @@ import java.util.Set;
 
 @Entity
 @Table(name = "driver")
-public class Driver extends DomainObject implements Serializable {
+public class Driver extends DomainObject<Long> implements Serializable {
 
     @NotEmpty
     private String name;
diff --git a/core/src/main/java/cz/muni/pa165/data/model/Engineer.java b/core/src/main/java/cz/muni/pa165/data/model/Engineer.java
index 7fa3623..ca2551e 100644
--- a/core/src/main/java/cz/muni/pa165/data/model/Engineer.java
+++ b/core/src/main/java/cz/muni/pa165/data/model/Engineer.java
@@ -9,7 +9,7 @@ import java.util.Objects;
 
 @Entity
 @Table(name = "engineer")
-public class Engineer extends DomainObject implements Serializable {
+public class Engineer extends DomainObject<Long> implements Serializable {
 
     @NotEmpty
     private String name;
-- 
GitLab