From 653fbf698297835fc968c1383afdcc6e1cf2f4bd Mon Sep 17 00:00:00 2001
From: Daniel Gerhardt <code@dgerhardt.net>
Date: Tue, 13 Nov 2018 13:54:18 +0100
Subject: [PATCH] Add equals implementations for inner classes of Entities

---
 .../arsnova/model/ChoiceQuestionContent.java  | 20 ++++
 .../java/de/thm/arsnova/model/Content.java    | 23 +++++
 src/main/java/de/thm/arsnova/model/Room.java  | 92 +++++++++++++++++++
 .../de/thm/arsnova/model/UserProfile.java     | 31 ++++++-
 4 files changed, 161 insertions(+), 5 deletions(-)

diff --git a/src/main/java/de/thm/arsnova/model/ChoiceQuestionContent.java b/src/main/java/de/thm/arsnova/model/ChoiceQuestionContent.java
index 400a4c00d..b470d8e95 100644
--- a/src/main/java/de/thm/arsnova/model/ChoiceQuestionContent.java
+++ b/src/main/java/de/thm/arsnova/model/ChoiceQuestionContent.java
@@ -6,6 +6,7 @@ import org.springframework.core.style.ToStringCreator;
 
 import java.util.ArrayList;
 import java.util.List;
+import java.util.Objects;
 
 public class ChoiceQuestionContent extends Content {
 	public static class AnswerOption {
@@ -32,6 +33,25 @@ public class ChoiceQuestionContent extends Content {
 			this.points = points;
 		}
 
+		@Override
+		public int hashCode() {
+			return Objects.hash(label, points);
+		}
+
+		@Override
+		public boolean equals(final Object o) {
+			if (this == o) {
+				return true;
+			}
+			if (!super.equals(o)) {
+				return false;
+			}
+			final AnswerOption that = (AnswerOption) o;
+
+			return points == that.points &&
+					Objects.equals(label, that.label);
+		}
+
 		@Override
 		public String toString() {
 			return new ToStringCreator(this)
diff --git a/src/main/java/de/thm/arsnova/model/Content.java b/src/main/java/de/thm/arsnova/model/Content.java
index 471c98a2c..64c3ba607 100644
--- a/src/main/java/de/thm/arsnova/model/Content.java
+++ b/src/main/java/de/thm/arsnova/model/Content.java
@@ -98,6 +98,29 @@ public class Content extends Entity {
 			this.responsesVisible = responsesVisible;
 		}
 
+		@Override
+		public int hashCode() {
+			return Objects.hash(round, roundEndTimestamp, visible, solutionVisible, responsesEnabled, responsesVisible);
+		}
+
+		@Override
+		public boolean equals(final Object o) {
+			if (this == o) {
+				return true;
+			}
+			if (!super.equals(o)) {
+				return false;
+			}
+			final State state = (State) o;
+
+			return round == state.round &&
+					visible == state.visible &&
+					solutionVisible == state.solutionVisible &&
+					responsesEnabled == state.responsesEnabled &&
+					responsesVisible == state.responsesVisible &&
+					Objects.equals(roundEndTimestamp, state.roundEndTimestamp);
+		}
+
 		@Override
 		public String toString() {
 			return new ToStringCreator(this)
diff --git a/src/main/java/de/thm/arsnova/model/Room.java b/src/main/java/de/thm/arsnova/model/Room.java
index 676b335dd..652cf181c 100644
--- a/src/main/java/de/thm/arsnova/model/Room.java
+++ b/src/main/java/de/thm/arsnova/model/Room.java
@@ -49,6 +49,26 @@ public class Room extends Entity {
 			this.autoSort = autoSort;
 		}
 
+		@Override
+		public int hashCode() {
+			return Objects.hash(name, contentIds, autoSort);
+		}
+
+		@Override
+		public boolean equals(final Object o) {
+			if (this == o) {
+				return true;
+			}
+			if (o == null || getClass() != o.getClass()) {
+				return false;
+			}
+			final ContentGroup that = (ContentGroup) o;
+
+			return autoSort == that.autoSort &&
+					Objects.equals(name, that.name) &&
+					Objects.equals(contentIds, that.contentIds);
+		}
+
 		@Override
 		public String toString() {
 			return new ToStringCreator(this)
@@ -171,6 +191,36 @@ public class Room extends Entity {
 			this.feedbackLocked = feedbackLocked;
 		}
 
+		@Override
+		public int hashCode() {
+			return Objects.hash(
+					questionsEnabled, slidesEnabled, commentsEnabled, flashcardsEnabled,
+					quickSurveyEnabled, quickFeedbackEnabled, scoreEnabled, multipleRoundsEnabled,
+					timerEnabled, feedbackLocked);
+		}
+
+		@Override
+		public boolean equals(final Object o) {
+			if (this == o) {
+				return true;
+			}
+			if (o == null || getClass() != o.getClass()) {
+				return false;
+			}
+			final Settings settings = (Settings) o;
+
+			return questionsEnabled == settings.questionsEnabled &&
+					slidesEnabled == settings.slidesEnabled &&
+					commentsEnabled == settings.commentsEnabled &&
+					flashcardsEnabled == settings.flashcardsEnabled &&
+					quickSurveyEnabled == settings.quickSurveyEnabled &&
+					quickFeedbackEnabled == settings.quickFeedbackEnabled &&
+					scoreEnabled == settings.scoreEnabled &&
+					multipleRoundsEnabled == settings.multipleRoundsEnabled &&
+					timerEnabled == settings.timerEnabled &&
+					feedbackLocked == settings.feedbackLocked;
+		}
+
 		@Override
 		public String toString() {
 			return new ToStringCreator(this)
@@ -245,6 +295,28 @@ public class Room extends Entity {
 			this.organizationUnit = organizationUnit;
 		}
 
+		@Override
+		public int hashCode() {
+			return Objects.hash(name, mail, organizationName, organizationLogo, organizationUnit);
+		}
+
+		@Override
+		public boolean equals(final Object o) {
+			if (this == o) {
+				return true;
+			}
+			if (o == null || getClass() != o.getClass()) {
+				return false;
+			}
+			final Author author = (Author) o;
+
+			return Objects.equals(name, author.name) &&
+					Objects.equals(mail, author.mail) &&
+					Objects.equals(organizationName, author.organizationName) &&
+					Objects.equals(organizationLogo, author.organizationLogo) &&
+					Objects.equals(organizationUnit, author.organizationUnit);
+		}
+
 		@Override
 		public String toString() {
 			return new ToStringCreator(this)
@@ -292,6 +364,26 @@ public class Room extends Entity {
 			this.license = license;
 		}
 
+		@Override
+		public int hashCode() {
+			return Objects.hash(category, level, license);
+		}
+
+		@Override
+		public boolean equals(final Object o) {
+			if (this == o) {
+				return true;
+			}
+			if (o == null || getClass() != o.getClass()) {
+				return false;
+			}
+			final PoolProperties that = (PoolProperties) o;
+
+			return Objects.equals(category, that.category) &&
+					Objects.equals(level, that.level) &&
+					Objects.equals(license, that.license);
+		}
+
 		@Override
 		public String toString() {
 			return new ToStringCreator(this)
diff --git a/src/main/java/de/thm/arsnova/model/UserProfile.java b/src/main/java/de/thm/arsnova/model/UserProfile.java
index 0fc793273..84926b24e 100644
--- a/src/main/java/de/thm/arsnova/model/UserProfile.java
+++ b/src/main/java/de/thm/arsnova/model/UserProfile.java
@@ -69,6 +69,27 @@ public class UserProfile extends Entity {
 			this.passwordResetTime = passwordResetTime;
 		}
 
+		@Override
+		public int hashCode() {
+			return Objects.hash(password, activationKey, passwordResetKey, passwordResetTime);
+		}
+
+		@Override
+		public boolean equals(final Object o) {
+			if (this == o) {
+				return true;
+			}
+			if (!super.equals(o)) {
+				return false;
+			}
+			final Account account = (Account) o;
+
+			return Objects.equals(password, account.password) &&
+					Objects.equals(activationKey, account.activationKey) &&
+					Objects.equals(passwordResetKey, account.passwordResetKey) &&
+					Objects.equals(passwordResetTime, account.passwordResetTime);
+		}
+
 		@Override
 		public String toString() {
 			return new ToStringCreator(this)
@@ -113,6 +134,11 @@ public class UserProfile extends Entity {
 			this.lastVisit = lastVisit;
 		}
 
+		@Override
+		public int hashCode() {
+			return Objects.hash(roomId);
+		}
+
 		@Override
 		public boolean equals(final Object o) {
 			if (this == o) {
@@ -126,11 +152,6 @@ public class UserProfile extends Entity {
 			return Objects.equals(roomId, that.roomId);
 		}
 
-		@Override
-		public int hashCode() {
-			return Objects.hash(roomId);
-		}
-
 		@Override
 		public String toString() {
 			return new ToStringCreator(this)
-- 
GitLab