From 9a833160a78213e47d491a1ec914ea013d418a82 Mon Sep 17 00:00:00 2001
From: OZGCloud <ozgcloud@mgm-tp.com>
Date: Mon, 19 Apr 2021 19:00:43 +0200
Subject: [PATCH] OZG-496 Create Kommentar; work in progress

---
 .../de/itvsh/goofy/kommentar/Kommentar.java   | 41 +++++++++++++++++++
 .../goofy/kommentar/KommentarCommand.java     | 33 +++++++++++++++
 .../kommentar/KommentarCommandController.java | 38 +++++++++++++++++
 .../goofy/kommentar/KommentarController.java  | 15 +++++++
 .../goofy/kommentar/KommentarService.java     |  9 ++++
 5 files changed, 136 insertions(+)
 create mode 100644 goofy-server/src/main/java/de/itvsh/goofy/kommentar/Kommentar.java
 create mode 100644 goofy-server/src/main/java/de/itvsh/goofy/kommentar/KommentarCommand.java
 create mode 100644 goofy-server/src/main/java/de/itvsh/goofy/kommentar/KommentarCommandController.java
 create mode 100644 goofy-server/src/main/java/de/itvsh/goofy/kommentar/KommentarController.java
 create mode 100644 goofy-server/src/main/java/de/itvsh/goofy/kommentar/KommentarService.java

diff --git a/goofy-server/src/main/java/de/itvsh/goofy/kommentar/Kommentar.java b/goofy-server/src/main/java/de/itvsh/goofy/kommentar/Kommentar.java
new file mode 100644
index 0000000000..25f31f9e78
--- /dev/null
+++ b/goofy-server/src/main/java/de/itvsh/goofy/kommentar/Kommentar.java
@@ -0,0 +1,41 @@
+package de.itvsh.goofy.kommentar;
+
+import static de.itvsh.goofy.common.ValidationMessageCodes.*;
+
+import java.time.ZonedDateTime;
+
+import javax.validation.constraints.NotNull;
+import javax.validation.constraints.Size;
+
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.fasterxml.jackson.annotation.JsonProperty.Access;
+
+import lombok.AccessLevel;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+import lombok.ToString;
+
+@Getter
+@Builder(toBuilder = true)
+@NoArgsConstructor(access = AccessLevel.PRIVATE)
+@AllArgsConstructor(access = AccessLevel.PACKAGE)
+@ToString
+public class Kommentar {
+
+	@JsonIgnore
+	private String id;
+
+	@JsonIgnore
+	private String createdBy;
+	@JsonProperty(access = Access.READ_ONLY)
+	private String createdByName;
+	@JsonProperty(access = Access.READ_ONLY)
+	private ZonedDateTime createdAt;
+
+	@NotNull(message = FIELD_IS_NULL)
+	@Size(min = 1, message = FIELD_SIZE)
+	private String text;
+}
diff --git a/goofy-server/src/main/java/de/itvsh/goofy/kommentar/KommentarCommand.java b/goofy-server/src/main/java/de/itvsh/goofy/kommentar/KommentarCommand.java
new file mode 100644
index 0000000000..42c681bb74
--- /dev/null
+++ b/goofy-server/src/main/java/de/itvsh/goofy/kommentar/KommentarCommand.java
@@ -0,0 +1,33 @@
+package de.itvsh.goofy.kommentar;
+
+import javax.validation.Valid;
+
+import com.fasterxml.jackson.annotation.JsonIgnore;
+
+import de.itvsh.goofy.common.command.CommandOrder;
+import de.itvsh.goofy.common.command.CommandStatus;
+import lombok.AccessLevel;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.EqualsAndHashCode;
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+
+@Builder(toBuilder = true)
+@Getter
+@NoArgsConstructor(access = AccessLevel.PRIVATE)
+@AllArgsConstructor(access = AccessLevel.PACKAGE)
+@EqualsAndHashCode
+class KommentarCommand {
+
+	@JsonIgnore
+	private String id;
+
+	private CommandOrder order;
+
+	@JsonIgnore
+	private CommandStatus status;
+
+	@Valid
+	private Kommentar kommentar;
+}
diff --git a/goofy-server/src/main/java/de/itvsh/goofy/kommentar/KommentarCommandController.java b/goofy-server/src/main/java/de/itvsh/goofy/kommentar/KommentarCommandController.java
new file mode 100644
index 0000000000..dfefce30e1
--- /dev/null
+++ b/goofy-server/src/main/java/de/itvsh/goofy/kommentar/KommentarCommandController.java
@@ -0,0 +1,38 @@
+package de.itvsh.goofy.kommentar;
+
+import static org.springframework.hateoas.server.mvc.WebMvcLinkBuilder.*;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.ResponseEntity;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import de.itvsh.goofy.common.command.CommandController;
+
+@RestController
+@RequestMapping(KommentarCommandController.KOMMENTAR_COMMANDS)
+public class KommentarCommandController {
+
+	static final String KOMMENTAR_COMMANDS = "/api/kommentars/{kommentarId}/commands";
+
+	@RestController
+	@RequestMapping(KommentarCommandByVorgangController.KOMMENTAR_COMMANDS_BY_VORGANG)
+	public static class KommentarCommandByVorgangController {
+
+		static final String KOMMENTAR_COMMANDS_BY_VORGANG = "/api/vorgangs/{vorgangId}/kommentarCommands";
+
+		@Autowired
+		private KommentarService service;
+
+		@PostMapping()
+		public ResponseEntity<Void> createCommand(@RequestBody KommentarCommand command, @PathVariable String vorgangId) {
+			var created = service.createCreateCommand(vorgangId, command);
+
+			return ResponseEntity.created(linkTo(CommandController.class).slash(created.getId()).toUri()).build();
+		}
+
+	}
+}
diff --git a/goofy-server/src/main/java/de/itvsh/goofy/kommentar/KommentarController.java b/goofy-server/src/main/java/de/itvsh/goofy/kommentar/KommentarController.java
new file mode 100644
index 0000000000..4c8f999c14
--- /dev/null
+++ b/goofy-server/src/main/java/de/itvsh/goofy/kommentar/KommentarController.java
@@ -0,0 +1,15 @@
+package de.itvsh.goofy.kommentar;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+@RestController
+@RequestMapping(KommentarController.KOMMENTAR_PATH)
+public class KommentarController {
+
+	static final String KOMMENTAR_PATH = "/api/kommentars"; // NOSONAR
+
+	@Autowired
+	private KommentarService service;
+}
diff --git a/goofy-server/src/main/java/de/itvsh/goofy/kommentar/KommentarService.java b/goofy-server/src/main/java/de/itvsh/goofy/kommentar/KommentarService.java
new file mode 100644
index 0000000000..637254578c
--- /dev/null
+++ b/goofy-server/src/main/java/de/itvsh/goofy/kommentar/KommentarService.java
@@ -0,0 +1,9 @@
+package de.itvsh.goofy.kommentar;
+
+public class KommentarService {
+
+	public KommentarCommand createCreateCommand(String vorgangId, KommentarCommand command) {
+		// TODO Auto-generated method stub
+		return null;
+	}
+}
-- 
GitLab