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