From cf2f43b387806855cd09f31ecf4537678165b770 Mon Sep 17 00:00:00 2001
From: OZGCloud <ozgcloud@mgm-tp.com>
Date: Mon, 19 Feb 2024 13:15:25 +0100
Subject: [PATCH] OZG-4713 OZG-4926 Move retrieveRelevantCommands to superclass

---
 .../AktenzeichenChangeHistoryBuilder.java     |  7 +---
 .../AssignedUserChangeHistoryBuilder.java     |  7 +---
 .../alfa/historie/ChangeHistoryBuilder.java   | 11 ++++---
 .../historie/StatusChangeHistoryBuilder.java  |  7 +---
 .../AktenzeichenChangeHistoryBuilderTest.java | 32 +++----------------
 .../AssignedUserChangeHistoryBuilderTest.java | 32 +++----------------
 .../historie/ChangeHistoryBuilderTest.java    | 27 +++++++++++++++-
 .../StatusChangeHistoryBuilderTest.java       | 28 ++--------------
 8 files changed, 48 insertions(+), 103 deletions(-)

diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/historie/AktenzeichenChangeHistoryBuilder.java b/alfa-service/src/main/java/de/ozgcloud/alfa/historie/AktenzeichenChangeHistoryBuilder.java
index 4be70bf034..9af4e5c41d 100644
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/historie/AktenzeichenChangeHistoryBuilder.java
+++ b/alfa-service/src/main/java/de/ozgcloud/alfa/historie/AktenzeichenChangeHistoryBuilder.java
@@ -1,7 +1,6 @@
 package de.ozgcloud.alfa.historie;
 
 import java.util.Optional;
-import java.util.stream.Stream;
 
 import org.apache.commons.lang3.StringUtils;
 
@@ -20,11 +19,7 @@ class AktenzeichenChangeHistoryBuilder extends ChangeHistoryBuilder<Aktenzeichen
 	}
 
 	@Override
-	Stream<Command> retrieveRelevantCommands() {
-		return commands.stream().filter(this::isSetAktenzeichenCommand);
-	}
-
-	boolean isSetAktenzeichenCommand(Command command) {
+	boolean isRelevant(Command command) {
 		return command.getOrder().equals(CommandOrder.SET_AKTENZEICHEN);
 	}
 
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/historie/AssignedUserChangeHistoryBuilder.java b/alfa-service/src/main/java/de/ozgcloud/alfa/historie/AssignedUserChangeHistoryBuilder.java
index aa55e4317f..b48b74cc1c 100644
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/historie/AssignedUserChangeHistoryBuilder.java
+++ b/alfa-service/src/main/java/de/ozgcloud/alfa/historie/AssignedUserChangeHistoryBuilder.java
@@ -1,7 +1,6 @@
 package de.ozgcloud.alfa.historie;
 
 import java.util.Optional;
-import java.util.stream.Stream;
 
 import org.apache.commons.lang3.StringUtils;
 
@@ -28,11 +27,7 @@ class AssignedUserChangeHistoryBuilder extends ChangeHistoryBuilder<AssignedUser
 	}
 
 	@Override
-	Stream<Command> retrieveRelevantCommands() {
-		return commands.stream().filter(this::isAssignUserCommand);
-	}
-
-	boolean isAssignUserCommand(Command command) {
+	boolean isRelevant(Command command) {
 		return command.getOrder().equals(CommandOrder.ASSIGN_USER);
 	}
 
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/historie/ChangeHistoryBuilder.java b/alfa-service/src/main/java/de/ozgcloud/alfa/historie/ChangeHistoryBuilder.java
index 9465e188f6..886ceafa10 100644
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/historie/ChangeHistoryBuilder.java
+++ b/alfa-service/src/main/java/de/ozgcloud/alfa/historie/ChangeHistoryBuilder.java
@@ -3,7 +3,6 @@ package de.ozgcloud.alfa.historie;
 import java.util.ArrayList;
 import java.util.Comparator;
 import java.util.List;
-import java.util.Map;
 import java.util.Optional;
 import java.util.stream.Stream;
 
@@ -37,7 +36,11 @@ abstract class ChangeHistoryBuilder<T extends ChangeHistoryBuilder<T>> {
 				.flatMap(this::toVorgangChanges);
 	}
 
-	abstract Stream<Command> retrieveRelevantCommands();
+	Stream<Command> retrieveRelevantCommands() {
+		return commands.stream().filter(this::isRelevant);
+	}
+
+	abstract boolean isRelevant(Command command);
 
 	Stream<Command> inChronologicalOrder(Stream<Command> commands) {
 		return commands.sorted(Comparator.comparing(Command::getFinishedAt));
@@ -78,9 +81,7 @@ abstract class ChangeHistoryBuilder<T extends ChangeHistoryBuilder<T>> {
 	}
 
 	String getValueFromCommandBody(String propertyName, Command command) {
-		var body = Optional.ofNullable(command.getBody()).orElse(Map.of());
-		var propertyValue = body.get(propertyName);
-		return propertyValue != null ? propertyValue.toString() : StringUtils.EMPTY;
+		return Optional.ofNullable(command.getBody()).map(body -> body.get(propertyName)).map(Object::toString).orElse(StringUtils.EMPTY);
 	}
 
 	record CommandWithChangeValues(Command command, String valueBeforeChange, String valueAfterChange) {
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/historie/StatusChangeHistoryBuilder.java b/alfa-service/src/main/java/de/ozgcloud/alfa/historie/StatusChangeHistoryBuilder.java
index d4f6bb0e01..db75ab13a8 100644
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/historie/StatusChangeHistoryBuilder.java
+++ b/alfa-service/src/main/java/de/ozgcloud/alfa/historie/StatusChangeHistoryBuilder.java
@@ -3,7 +3,6 @@ package de.ozgcloud.alfa.historie;
 import java.util.Map;
 import java.util.Optional;
 import java.util.Set;
-import java.util.stream.Stream;
 
 import de.ozgcloud.alfa.common.command.Command;
 import de.ozgcloud.alfa.common.command.CommandOrder;
@@ -41,11 +40,7 @@ public class StatusChangeHistoryBuilder extends ChangeHistoryBuilder<StatusChang
 	}
 
 	@Override
-	Stream<Command> retrieveRelevantCommands() {
-		return commands.stream().filter(this::isStatusChangeCommand);
-	}
-
-	boolean isStatusChangeCommand(Command command) {
+	boolean isRelevant(Command command) {
 		return STATUS_CHANGE_COMMAND_ORDER.contains(command.getOrder());
 	}
 
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/historie/AktenzeichenChangeHistoryBuilderTest.java b/alfa-service/src/test/java/de/ozgcloud/alfa/historie/AktenzeichenChangeHistoryBuilderTest.java
index b53c71a74f..578007c995 100644
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/historie/AktenzeichenChangeHistoryBuilderTest.java
+++ b/alfa-service/src/test/java/de/ozgcloud/alfa/historie/AktenzeichenChangeHistoryBuilderTest.java
@@ -34,48 +34,26 @@ public class AktenzeichenChangeHistoryBuilderTest {
 			.withOrganisationseinheitenID(ORGANISATIONSEINHEITEN_ID);
 
 	@Nested
-	class TestRetrieveRelevantCommands {
+	class TestIsRelevant {
 
 		@Test
-		void shouldCallIsSetAktenzeichenCommand() {
-			builder.retrieveRelevantCommands().toList();
-
-			verify(builder).isSetAktenzeichenCommand(previousCommand);
-			verify(builder).isSetAktenzeichenCommand(command);
-		}
-
-		@Test
-		void shouldFilterOutIrrelevantCommands() {
-			doReturn(false).when(builder).isSetAktenzeichenCommand(previousCommand);
-			doReturn(true).when(builder).isSetAktenzeichenCommand(command);
-
-			var result = builder.retrieveRelevantCommands().toList();
-
-			assertThat(result).containsExactly(command);
-		}
-	}
-
-	@Nested
-	class TestIsSetAktenzeichenCommand {
-
-		@Test
-		void shouldReturnTrueForSetAktenzeichenCommand() {
+		void shouldReturnTrue() {
 			var command = CommandTestFactory.createBuilder()
 					.order(CommandOrder.SET_AKTENZEICHEN)
 					.build();
 
-			var result = builder.isSetAktenzeichenCommand(command);
+			var result = builder.isRelevant(command);
 
 			assertThat(result).isTrue();
 		}
 
 		@Test
-		void shouldReturnFalseForCommandWithIrrelevantOrder() {
+		void shouldReturnFalse() {
 			var command = CommandTestFactory.createBuilder()
 					.order(CommandOrder.VORGANG_WIEDEREROEFFNEN)
 					.build();
 
-			var result = builder.isSetAktenzeichenCommand(command);
+			var result = builder.isRelevant(command);
 
 			assertThat(result).isFalse();
 		}
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/historie/AssignedUserChangeHistoryBuilderTest.java b/alfa-service/src/test/java/de/ozgcloud/alfa/historie/AssignedUserChangeHistoryBuilderTest.java
index 7bda2c2adc..fe8e03ecd2 100644
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/historie/AssignedUserChangeHistoryBuilderTest.java
+++ b/alfa-service/src/test/java/de/ozgcloud/alfa/historie/AssignedUserChangeHistoryBuilderTest.java
@@ -43,48 +43,26 @@ public class AssignedUserChangeHistoryBuilderTest {
 			.withOrganisationseinheitenID(ORGANISATIONSEINHEITEN_ID);
 
 	@Nested
-	class TestRetrieveRelevantCommands {
+	class TestIsRelevant {
 
 		@Test
-		void shouldCallIsAssignUserCommand() {
-			builder.retrieveRelevantCommands().toList();
-
-			verify(builder).isAssignUserCommand(previousCommand);
-			verify(builder).isAssignUserCommand(command);
-		}
-
-		@Test
-		void shouldFilterOutIrrelevantCommands() {
-			doReturn(false).when(builder).isAssignUserCommand(previousCommand);
-			doReturn(true).when(builder).isAssignUserCommand(command);
-
-			var result = builder.retrieveRelevantCommands().toList();
-
-			assertThat(result).containsExactly(command);
-		}
-	}
-
-	@Nested
-	class TestIsAssignUserCommand {
-
-		@Test
-		void shouldReturnTrueForAssignUserCommand() {
+		void shouldReturnTrue() {
 			var command = CommandTestFactory.createBuilder()
 					.order(CommandOrder.ASSIGN_USER)
 					.build();
 
-			var result = builder.isAssignUserCommand(command);
+			var result = builder.isRelevant(command);
 
 			assertThat(result).isTrue();
 		}
 
 		@Test
-		void shouldReturnFalseForCommandWithIrrelevantOrder() {
+		void shouldReturnFalse() {
 			var command = CommandTestFactory.createBuilder()
 					.order(CommandOrder.VORGANG_WIEDEREROEFFNEN)
 					.build();
 
-			var result = builder.isAssignUserCommand(command);
+			var result = builder.isRelevant(command);
 
 			assertThat(result).isFalse();
 		}
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/historie/ChangeHistoryBuilderTest.java b/alfa-service/src/test/java/de/ozgcloud/alfa/historie/ChangeHistoryBuilderTest.java
index b74e3731d5..823baf3713 100644
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/historie/ChangeHistoryBuilderTest.java
+++ b/alfa-service/src/test/java/de/ozgcloud/alfa/historie/ChangeHistoryBuilderTest.java
@@ -66,6 +66,31 @@ public class ChangeHistoryBuilderTest {
 		}
 	}
 
+	@Nested
+	class TestRetrieveRelevantCommands {
+
+		@BeforeEach
+		void init() {
+			doReturn(false).when(builder).isRelevant(previousCommand);
+			doReturn(true).when(builder).isRelevant(command);
+		}
+
+		@Test
+		void shouldCallIsRelevant() {
+			builder.retrieveRelevantCommands().toList();
+
+			verify(builder).isRelevant(previousCommand);
+			verify(builder).isRelevant(command);
+		}
+
+		@Test
+		void shouldFilterOutIrrelevantCommands() {
+			var result = builder.retrieveRelevantCommands().toList();
+
+			assertThat(result).containsExactly(command);
+		}
+	}
+
 	@Nested
 	class TestInChronologicalOrder {
 
@@ -239,7 +264,7 @@ public class ChangeHistoryBuilderTest {
 	private static class TestChangeHistoryBuilder extends ChangeHistoryBuilder<TestChangeHistoryBuilder> {
 
 		@Override
-		Stream<Command> retrieveRelevantCommands() {
+		boolean isRelevant(Command command) {
 			throw new NotImplementedException();
 		}
 
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/historie/StatusChangeHistoryBuilderTest.java b/alfa-service/src/test/java/de/ozgcloud/alfa/historie/StatusChangeHistoryBuilderTest.java
index 824bce9b0c..a1616f1a22 100644
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/historie/StatusChangeHistoryBuilderTest.java
+++ b/alfa-service/src/test/java/de/ozgcloud/alfa/historie/StatusChangeHistoryBuilderTest.java
@@ -37,35 +37,13 @@ public class StatusChangeHistoryBuilderTest {
 			.withOrganisationseinheitenID(ORGANISATIONSEINHEITEN_ID);
 
 	@Nested
-	class TestRetrieveRelevantCommands {
-
-		@Test
-		void shouldCallIsStatusChangeCommand() {
-			builder.retrieveRelevantCommands().toList();
-
-			verify(builder).isStatusChangeCommand(previousCommand);
-			verify(builder).isStatusChangeCommand(command);
-		}
-
-		@Test
-		void shouldFilterOutIrrelevantCommands() {
-			doReturn(false).when(builder).isStatusChangeCommand(previousCommand);
-			doReturn(true).when(builder).isStatusChangeCommand(command);
-
-			var result = builder.retrieveRelevantCommands().toList();
-
-			assertThat(result).containsExactly(command);
-		}
-	}
-
-	@Nested
-	class TestIsStatusChangeCommand {
+	class TestIsRelevant {
 
 		@EnumSource(mode = Mode.INCLUDE, names = { "VORGANG_ANNEHMEN", "VORGANG_VERWERFEN", "VORGANG_ZURUECKHOLEN", "VORGANG_BEARBEITEN",
 				"VORGANG_BESCHEIDEN", "VORGANG_ABSCHLIESSEN", "VORGANG_ZUM_LOESCHEN_MARKIEREN", "VORGANG_LOESCHEN", "VORGANG_ZURUECKSTELLEN" })
 		@ParameterizedTest
 		void shouldReturnTrue(CommandOrder order) {
-			var isStatusChangeCommand = builder.isStatusChangeCommand(CommandTestFactory.createBuilder().order(order).build());
+			var isStatusChangeCommand = builder.isRelevant(CommandTestFactory.createBuilder().order(order).build());
 
 			assertThat(isStatusChangeCommand).isTrue();
 		}
@@ -74,7 +52,7 @@ public class StatusChangeHistoryBuilderTest {
 				"VORGANG_BESCHEIDEN", "VORGANG_ABSCHLIESSEN", "VORGANG_ZUM_LOESCHEN_MARKIEREN", "VORGANG_LOESCHEN", "VORGANG_ZURUECKSTELLEN" })
 		@ParameterizedTest
 		void shouldReturnFalse(CommandOrder order) {
-			var isStatusChangeCommand = builder.isStatusChangeCommand(CommandTestFactory.createBuilder().order(order).build());
+			var isStatusChangeCommand = builder.isRelevant(CommandTestFactory.createBuilder().order(order).build());
 
 			assertThat(isStatusChangeCommand).isFalse();
 		}
-- 
GitLab