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 0000000000000000000000000000000000000000..25f31f9e7825821372fb0485f70cb4388221fd66 --- /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 0000000000000000000000000000000000000000..42c681bb743ce71bf35155a85e8df8dbb49b200f --- /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 0000000000000000000000000000000000000000..dfefce30e170a8c61f312b076b36507ffc95fae0 --- /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 0000000000000000000000000000000000000000..4c8f999c145514e0f26da64c25021f018555b0cf --- /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 0000000000000000000000000000000000000000..637254578c6b9e1dfa4ae9bb9b18f921990ac20d --- /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; + } +}