From a77e17fea11bc455af23201260a727c76e919b37 Mon Sep 17 00:00:00 2001
From: Lars Johansson <lars.johansson@ess.eu>
Date: Wed, 23 Nov 2022 18:23:29 +0100
Subject: [PATCH] Fix issues as noted by SonarLint

"equals(Object obj)" and "hashCode()" should be overridden in pairs
---
 .../names/repository/model/DeviceGroup.java          | 12 ++++++++++++
 .../openepics/names/repository/model/DeviceType.java | 12 ++++++++++++
 .../openepics/names/repository/model/Discipline.java |  5 +++++
 .../org/openepics/names/repository/model/Name.java   | 12 ++++++++++++
 .../names/repository/model/NameStructure.java        |  6 +++++-
 .../names/repository/model/Persistable.java          |  6 ++++++
 .../openepics/names/repository/model/Structure.java  | 11 +++++++++++
 .../openepics/names/repository/model/Subsystem.java  | 12 ++++++++++++
 .../org/openepics/names/repository/model/System.java | 12 ++++++++++++
 .../names/repository/model/SystemGroup.java          |  5 +++++
 .../names/rest/beans/element/NameElement.java        | 11 +++++++++++
 .../names/rest/beans/element/NameElementCommand.java |  8 ++++++++
 .../names/rest/beans/element/StructureElement.java   | 10 ++++++++++
 .../rest/beans/element/StructureElementCommand.java  |  8 ++++++++
 14 files changed, 129 insertions(+), 1 deletion(-)

diff --git a/src/main/java/org/openepics/names/repository/model/DeviceGroup.java b/src/main/java/org/openepics/names/repository/model/DeviceGroup.java
index f1828215..0fb5feb9 100644
--- a/src/main/java/org/openepics/names/repository/model/DeviceGroup.java
+++ b/src/main/java/org/openepics/names/repository/model/DeviceGroup.java
@@ -19,6 +19,7 @@
 package org.openepics.names.repository.model;
 
 import java.util.Date;
+import java.util.Objects;
 import java.util.UUID;
 
 import javax.persistence.Column;
@@ -124,6 +125,17 @@ public class DeviceGroup extends Structure {
         return false;
     }
 
+    @Override
+    public int hashCode() {
+        return Objects.hash(
+                getId(), getVersion(),
+                getUuid(), getDescription(), getStatus(), isLatest(), isDeleted(),
+                getRequested(), getRequestedBy(), getRequestedComment(),
+                getProcessed(), getProcessedBy(), getProcessedComment(),
+                getName(), getMnemonic(), getMnemonicEquivalence(),
+                getParentUuid());
+    }
+
     @Override
     public String toString() {
         StringBuilder sb = new StringBuilder();
diff --git a/src/main/java/org/openepics/names/repository/model/DeviceType.java b/src/main/java/org/openepics/names/repository/model/DeviceType.java
index ece1a8a8..8c58a263 100644
--- a/src/main/java/org/openepics/names/repository/model/DeviceType.java
+++ b/src/main/java/org/openepics/names/repository/model/DeviceType.java
@@ -19,6 +19,7 @@
 package org.openepics.names.repository.model;
 
 import java.util.Date;
+import java.util.Objects;
 import java.util.UUID;
 
 import javax.persistence.Column;
@@ -124,6 +125,17 @@ public class DeviceType extends Structure {
         return false;
     }
 
+    @Override
+    public int hashCode() {
+        return Objects.hash(
+                getId(), getVersion(),
+                getUuid(), getDescription(), getStatus(), isLatest(), isDeleted(),
+                getRequested(), getRequestedBy(), getRequestedComment(),
+                getProcessed(), getProcessedBy(), getProcessedComment(),
+                getName(), getMnemonic(), getMnemonicEquivalence(),
+                getParentUuid());
+    }
+
     @Override
     public String toString() {
         StringBuilder sb = new StringBuilder();
diff --git a/src/main/java/org/openepics/names/repository/model/Discipline.java b/src/main/java/org/openepics/names/repository/model/Discipline.java
index be9ff32d..10601435 100644
--- a/src/main/java/org/openepics/names/repository/model/Discipline.java
+++ b/src/main/java/org/openepics/names/repository/model/Discipline.java
@@ -101,6 +101,11 @@ public class Discipline extends Structure {
         return false;
     }
 
+    @Override
+    public int hashCode() {
+        return super.hashCode();
+    }
+
     @Override
     public String toString() {
         StringBuilder sb = new StringBuilder();
diff --git a/src/main/java/org/openepics/names/repository/model/Name.java b/src/main/java/org/openepics/names/repository/model/Name.java
index 09be7a46..32ed6c29 100644
--- a/src/main/java/org/openepics/names/repository/model/Name.java
+++ b/src/main/java/org/openepics/names/repository/model/Name.java
@@ -20,6 +20,7 @@ package org.openepics.names.repository.model;
 
 import java.io.Serializable;
 import java.util.Date;
+import java.util.Objects;
 import java.util.UUID;
 
 import javax.persistence.Column;
@@ -221,6 +222,17 @@ public class Name extends NameStructure implements Serializable {
         return false;
     }
 
+    @Override
+    public int hashCode() {
+        return Objects.hash(
+                getId(), getVersion(),
+                getUuid(), getDescription(), getStatus(), isLatest(), isDeleted(),
+                getRequested(), getRequestedBy(), getRequestedComment(),
+                getProcessed(), getProcessedBy(), getProcessedComment(),
+                getSystemgroupUuid(), getSystemUuid(), getSubsystemUuid(), getDevicetypeUuid(), getInstanceIndex(),
+                getConventionName(), getConventionNameEquivalence());
+    }
+
     @Override
     public String toString() {
         StringBuilder sb = new StringBuilder();
diff --git a/src/main/java/org/openepics/names/repository/model/NameStructure.java b/src/main/java/org/openepics/names/repository/model/NameStructure.java
index 1e143c33..c1c6a391 100644
--- a/src/main/java/org/openepics/names/repository/model/NameStructure.java
+++ b/src/main/java/org/openepics/names/repository/model/NameStructure.java
@@ -232,7 +232,11 @@ public class NameStructure extends Persistable implements Serializable {
 
     @Override
     public int hashCode() {
-        return Objects.hash(getUuid());
+        return Objects.hash(
+                getId(), getVersion(),
+                getUuid(), getDescription(), getStatus(), isLatest(), isDeleted(),
+                getRequested(), getRequestedBy(), getRequestedComment(),
+                getProcessed(), getProcessedBy(), getProcessedComment());
     }
 
 }
diff --git a/src/main/java/org/openepics/names/repository/model/Persistable.java b/src/main/java/org/openepics/names/repository/model/Persistable.java
index 99f23e63..d10763ed 100644
--- a/src/main/java/org/openepics/names/repository/model/Persistable.java
+++ b/src/main/java/org/openepics/names/repository/model/Persistable.java
@@ -21,6 +21,7 @@ package org.openepics.names.repository.model;
 import javax.annotation.Nullable;
 import javax.persistence.*;
 import java.io.Serializable;
+import java.util.Objects;
 
 /**
  * A superclass implementing the properties required by JPA. It that should be extended by all classes that need to be
@@ -85,4 +86,9 @@ public class Persistable implements Serializable {
         return true;
     }
 
+    @Override
+    public int hashCode() {
+        return Objects.hash(getId(), getVersion());
+    }
+
 }
diff --git a/src/main/java/org/openepics/names/repository/model/Structure.java b/src/main/java/org/openepics/names/repository/model/Structure.java
index 86003f23..1d63b6b6 100644
--- a/src/main/java/org/openepics/names/repository/model/Structure.java
+++ b/src/main/java/org/openepics/names/repository/model/Structure.java
@@ -20,6 +20,7 @@ package org.openepics.names.repository.model;
 
 import java.io.Serializable;
 import java.util.Date;
+import java.util.Objects;
 import java.util.UUID;
 
 import javax.persistence.Column;
@@ -168,4 +169,14 @@ public class Structure extends NameStructure implements Serializable {
         return false;
     }
 
+    @Override
+    public int hashCode() {
+        return Objects.hash(
+                getId(), getVersion(),
+                getUuid(), getDescription(), getStatus(), isLatest(), isDeleted(),
+                getRequested(), getRequestedBy(), getRequestedComment(),
+                getProcessed(), getProcessedBy(), getProcessedComment(),
+                getName(), getMnemonic(), getMnemonicEquivalence());
+    }
+
 }
diff --git a/src/main/java/org/openepics/names/repository/model/Subsystem.java b/src/main/java/org/openepics/names/repository/model/Subsystem.java
index d34ac382..f0d526a7 100644
--- a/src/main/java/org/openepics/names/repository/model/Subsystem.java
+++ b/src/main/java/org/openepics/names/repository/model/Subsystem.java
@@ -19,6 +19,7 @@
 package org.openepics.names.repository.model;
 
 import java.util.Date;
+import java.util.Objects;
 import java.util.UUID;
 
 import javax.persistence.Column;
@@ -124,6 +125,17 @@ public class Subsystem extends Structure {
         return false;
     }
 
+    @Override
+    public int hashCode() {
+        return Objects.hash(
+                getId(), getVersion(),
+                getUuid(), getDescription(), getStatus(), isLatest(), isDeleted(),
+                getRequested(), getRequestedBy(), getRequestedComment(),
+                getProcessed(), getProcessedBy(), getProcessedComment(),
+                getName(), getMnemonic(), getMnemonicEquivalence(),
+                getParentUuid());
+    }
+
     @Override
     public String toString() {
         StringBuilder sb = new StringBuilder();
diff --git a/src/main/java/org/openepics/names/repository/model/System.java b/src/main/java/org/openepics/names/repository/model/System.java
index deb24e73..b2296ac5 100644
--- a/src/main/java/org/openepics/names/repository/model/System.java
+++ b/src/main/java/org/openepics/names/repository/model/System.java
@@ -19,6 +19,7 @@
 package org.openepics.names.repository.model;
 
 import java.util.Date;
+import java.util.Objects;
 import java.util.UUID;
 
 import javax.persistence.Column;
@@ -124,6 +125,17 @@ public class System extends Structure {
         return false;
     }
 
+    @Override
+    public int hashCode() {
+        return Objects.hash(
+                getId(), getVersion(),
+                getUuid(), getDescription(), getStatus(), isLatest(), isDeleted(),
+                getRequested(), getRequestedBy(), getRequestedComment(),
+                getProcessed(), getProcessedBy(), getProcessedComment(),
+                getName(), getMnemonic(), getMnemonicEquivalence(),
+                getParentUuid());
+    }
+
     @Override
     public String toString() {
         StringBuilder sb = new StringBuilder();
diff --git a/src/main/java/org/openepics/names/repository/model/SystemGroup.java b/src/main/java/org/openepics/names/repository/model/SystemGroup.java
index 3428d644..4109cc03 100644
--- a/src/main/java/org/openepics/names/repository/model/SystemGroup.java
+++ b/src/main/java/org/openepics/names/repository/model/SystemGroup.java
@@ -101,6 +101,11 @@ public class SystemGroup extends Structure {
         return false;
     }
 
+    @Override
+    public int hashCode() {
+        return super.hashCode();
+    }
+
     @Override
     public String toString() {
         StringBuilder sb = new StringBuilder();
diff --git a/src/main/java/org/openepics/names/rest/beans/element/NameElement.java b/src/main/java/org/openepics/names/rest/beans/element/NameElement.java
index ce04ff51..b8fe7347 100644
--- a/src/main/java/org/openepics/names/rest/beans/element/NameElement.java
+++ b/src/main/java/org/openepics/names/rest/beans/element/NameElement.java
@@ -20,6 +20,7 @@ package org.openepics.names.rest.beans.element;
 
 import java.io.Serializable;
 import java.util.Date;
+import java.util.Objects;
 import java.util.UUID;
 
 import org.openepics.names.rest.beans.Status;
@@ -231,6 +232,16 @@ public class NameElement extends NameElementCommand implements Serializable {
         return true;
     }
 
+    @Override
+    public int hashCode() {
+        return Objects.hash(
+                getUuid(), getParentsystemstructure(), getParentdevicestructure(), getIndex(),
+                getDescription(), getComment(),
+                getSystemstructure(), getDevicestructure(),
+                getName(), getStatus(), isLatest(), isDeleted(),
+                getWhen(), getWho());
+    }
+
     @Override
     public String toString() {
         StringBuilder sb = new StringBuilder();
diff --git a/src/main/java/org/openepics/names/rest/beans/element/NameElementCommand.java b/src/main/java/org/openepics/names/rest/beans/element/NameElementCommand.java
index ece8e29f..25f24abc 100644
--- a/src/main/java/org/openepics/names/rest/beans/element/NameElementCommand.java
+++ b/src/main/java/org/openepics/names/rest/beans/element/NameElementCommand.java
@@ -19,6 +19,7 @@
 package org.openepics.names.rest.beans.element;
 
 import java.io.Serializable;
+import java.util.Objects;
 import java.util.UUID;
 
 import io.swagger.v3.oas.annotations.media.Schema;
@@ -172,6 +173,13 @@ public class NameElementCommand implements Serializable {
         return true;
     }
 
+    @Override
+    public int hashCode() {
+        return Objects.hash(
+                getUuid(), getParentsystemstructure(), getParentdevicestructure(), getIndex(),
+                getDescription(), getComment());
+    }
+
     @Override
     public String toString() {
         StringBuilder sb = new StringBuilder();
diff --git a/src/main/java/org/openepics/names/rest/beans/element/StructureElement.java b/src/main/java/org/openepics/names/rest/beans/element/StructureElement.java
index 06e084c3..5f2dc7c1 100644
--- a/src/main/java/org/openepics/names/rest/beans/element/StructureElement.java
+++ b/src/main/java/org/openepics/names/rest/beans/element/StructureElement.java
@@ -20,6 +20,7 @@ package org.openepics.names.rest.beans.element;
 
 import java.io.Serializable;
 import java.util.Date;
+import java.util.Objects;
 import java.util.UUID;
 
 import org.openepics.names.rest.beans.Status;
@@ -220,6 +221,15 @@ public class StructureElement extends StructureElementCommand implements Seriali
         return true;
     }
 
+    @Override
+    public int hashCode() {
+        return Objects.hash(
+                getUuid(), getType(), getParent(),
+                getName(), getMnemonic(), getDescription(), getComment(),
+                getMnemonicpath(), getLevel(), getStatus(), isLatest(), isDeleted(),
+                getWhen(), getWho());
+    }
+
     @Override
     public String toString() {
         StringBuilder sb = new StringBuilder();
diff --git a/src/main/java/org/openepics/names/rest/beans/element/StructureElementCommand.java b/src/main/java/org/openepics/names/rest/beans/element/StructureElementCommand.java
index 18a087af..67a9cb31 100644
--- a/src/main/java/org/openepics/names/rest/beans/element/StructureElementCommand.java
+++ b/src/main/java/org/openepics/names/rest/beans/element/StructureElementCommand.java
@@ -19,6 +19,7 @@
 package org.openepics.names.rest.beans.element;
 
 import java.io.Serializable;
+import java.util.Objects;
 import java.util.UUID;
 
 import org.openepics.names.rest.beans.Type;
@@ -186,6 +187,13 @@ public class StructureElementCommand implements Serializable {
         return true;
     }
 
+    @Override
+    public int hashCode() {
+        return Objects.hash(
+                getUuid(), getType(), getParent(),
+                getName(), getMnemonic(), getDescription(), getComment());
+    }
+
     @Override
     public String toString() {
         StringBuilder sb = new StringBuilder();
-- 
GitLab