浏览代码

Document Images

apg 2 周之前
父节点
当前提交
0b7c8290b5

+ 18 - 0
src/main/java/scot/carricksoftware/grants/controllers/images/documentImages/DocumentImageFormController.java

@@ -0,0 +1,18 @@
+/*
+ * Copyright (c) Andrew Grant of Carrick Software 29/03/2025, 13:08. All rights reserved.
+ *
+ */
+
+package scot.carricksoftware.grants.controllers.images.documentImages;
+
+import org.springframework.ui.Model;
+import org.springframework.validation.BindingResult;
+import org.springframework.web.bind.annotation.ModelAttribute;
+import scot.carricksoftware.grants.commands.images.DocumentImageCommand;
+
+@SuppressWarnings("unused")
+
+public interface DocumentImageFormController {
+
+    String saveOrUpdate(@ModelAttribute DocumentImageCommand documentImageCommand, BindingResult bindingResult, Model model);
+}

+ 96 - 0
src/main/java/scot/carricksoftware/grants/controllers/images/documentImages/DocumentImageFormControllerImpl.java

@@ -0,0 +1,96 @@
+/*
+ * Copyright (c) Andrew Grant of Carrick Software 29/03/2025, 13:08. All rights reserved.
+ *
+ */
+
+package scot.carricksoftware.grants.controllers.images.documentImages;
+
+import jakarta.validation.Valid;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+import org.springframework.stereotype.Controller;
+import org.springframework.ui.Model;
+import org.springframework.validation.BindingResult;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.ModelAttribute;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.PostMapping;
+import scot.carricksoftware.grants.commands.images.DocumentImageCommand;
+import scot.carricksoftware.grants.commands.images.DocumentImageCommandImpl;
+import scot.carricksoftware.grants.constants.*;
+import scot.carricksoftware.grants.converters.images.documentimage.DocumentImageCommandConverter;
+import scot.carricksoftware.grants.converters.images.documentimage.DocumentImageConverter;
+import scot.carricksoftware.grants.services.images.documentimage.DocumentImageService;
+import scot.carricksoftware.grants.services.images.image.ImageService;
+
+
+@Controller
+public class DocumentImageFormControllerImpl implements DocumentImageFormController {
+
+    private static final Logger logger = LogManager.getLogger(DocumentImageFormControllerImpl.class);
+    private final DocumentImageService documentImageService;
+    @SuppressWarnings("unused")
+    private final DocumentImageCommandConverter documentImageCommandConverter;
+    private final DocumentImageConverter documentImageConverter;
+    private final ImageService imageService;
+
+
+    public DocumentImageFormControllerImpl(DocumentImageService documentImageService,
+                                           DocumentImageCommandConverter documentImageCommandConverter,
+                                           DocumentImageConverter documentImageConverter,
+                                           ImageService imageService) {
+
+        this.documentImageService = documentImageService;
+        this.documentImageCommandConverter = documentImageCommandConverter;
+        this.documentImageConverter = documentImageConverter;
+        this.imageService = imageService;
+    }
+
+    @SuppressWarnings("SameReturnValue")
+    @GetMapping(ImageMappingConstants.DOCUMENT_IMAGE_NEW)
+    public final String getNewDocumentImage(final Model model) {
+        logger.debug("DocumentImageFormControllerImpl::getNewDocumentImage");
+        model.addAttribute(ImageAttributeConstants.DOCUMENT_IMAGE_COMMAND, new DocumentImageCommandImpl());
+        model.addAttribute(AttributeConstants.IMAGES, imageService.findAll());
+        return ViewConstants.DOCUMENT_IMAGE_FORM;
+    }
+
+    @SuppressWarnings("SameReturnValue")
+    @GetMapping(ImageMappingConstants.DOCUMENT_IMAGE_EDIT)
+    public final String documentImageEdit(@Valid @PathVariable final String id, Model model) {
+        logger.debug("DocumentImageFormControllerImpl::documentImageEdit");
+        model.addAttribute(ImageAttributeConstants.DOCUMENT_IMAGE_COMMAND, documentImageService.findById(Long.valueOf(id)));
+        model.addAttribute(AttributeConstants.IMAGES, imageService.findAll());
+        return ViewConstants.DOCUMENT_IMAGE_FORM;
+    }
+
+    @Override
+    @PostMapping(ImageMappingConstants.DOCUMENT_IMAGE)
+    public String saveOrUpdate(@Valid @ModelAttribute DocumentImageCommand documentImageCommand, BindingResult bindingResult, Model model) {
+        logger.debug("DocumentImageFormControllerImpl::saveOrUpdate");
+
+
+        if (bindingResult.hasErrors()) {
+            bindingResult.getAllErrors().forEach(error -> logger.debug(error.getDefaultMessage()));
+            model.addAttribute(AttributeConstants.IMAGES, imageService.findAll());
+            return ViewConstants.DOCUMENT_IMAGE_FORM;
+        }
+
+        DocumentImageCommand savedCommand = documentImageService.saveDocumentImageCommand(documentImageCommand);
+        model.addAttribute(ImageAttributeConstants.DOCUMENT_IMAGE_COMMAND, savedCommand);
+        model.addAttribute(AttributeConstants.IMAGES, imageService.findAll());
+        return MappingConstants.REDIRECT + ImageMappingConstants.DOCUMENT_IMAGE_SHOW.replace("{id}", "" + savedCommand.getId());
+    }
+
+    @SuppressWarnings("SameReturnValue")
+    @GetMapping(ImageMappingConstants.DOCUMENT_IMAGE_SHOW)
+    public String showById(@PathVariable String id, Model model) {
+        logger.debug("DocumentImageFormControllerImpl::showById");
+        DocumentImageCommand savedCommand = documentImageConverter.convert(documentImageService.findById(Long.valueOf(id)));
+        model.addAttribute(ImageAttributeConstants.DOCUMENT_IMAGE_COMMAND, savedCommand);
+        model.addAttribute(AttributeConstants.IMAGES, imageService.findAll());
+        return ViewConstants.DOCUMENT_IMAGE_FORM;
+    }
+
+
+}

+ 1 - 1
src/main/java/scot/carricksoftware/grants/controllers/images/documentImages/DocumentImageListControllerImpl.java

@@ -37,7 +37,7 @@ public class DocumentImageListControllerImpl implements DocumentImageListControl
     @GetMapping(ImageMappingConstants.DOCUMENT_IMAGE_LIST)
     @Override
     public final String getListPage(final Model model) {
-        logger.debug("PersonListControllerImpl::getPersonImagePage");
+        logger.debug("DocumentImageListControllerImpl::getListPage");
         currentPage = 0;
         return sendAttributesAndReturn(model);
     }

+ 4 - 4
src/main/resources/templates/images/documentImage/form.html

@@ -14,7 +14,7 @@
     <!--suppress SpellCheckingInspection -->
     <script src="https://code.jquery.com/jquery-3.6.0.min.js"
             integrity="sha256-/xUj+3OJU5yExlq6GSYGSHk7tPXikynS7ogEvDej/m4=" crossorigin="anonymous"></script>
-    <title>Grants - appendix images</title>
+    <title>Grants - document images</title>
 
 </head>
 <body>
@@ -22,8 +22,8 @@
 <div th:insert="~{fragments/layout::banner}"></div>
 
 <div class="container border border-info rounded-3 text-center p-4">
-    <h3>Appendix Image Details</h3>
-    <form th:object="${appendixImageCommand}" th:action="@{/appendixImage}" method="post">
+    <h3>Document Image Details</h3>
+    <form th:object="${documentImageCommand}" th:action="@{/documentImage}" method="post">
         <div th:if="${#fields.hasErrors('*')}" class="alert alert-danger">
             <p>Please Correct The Errors Below</p>
         </div>
@@ -130,7 +130,7 @@
             </tr>
         </table>
         <button type="submit" class="btn btn-primary">Commit</button>
-        <a class="btn btn-secondary" th:href="@{/appendixImages}" th:text="${'List all'}">List all</a>
+        <a class="btn btn-secondary" th:href="@{/documentImages}" th:text="${'List all'}">List all</a>
         <a class="btn btn-success" th:href="@{/}" th:text="${'Home'}">Home</a>
         <h6><span style="color: rgb(255,0,0);">*</span><span> Cannot be edited</span></h6>
     </form>

+ 2 - 2
src/main/resources/templates/index.html

@@ -66,8 +66,8 @@
             </td>
             <td>
                 <a class="btn btn-outline-secondary btn-sm btn-block" href="documentTexts">Document Texts</a>
-            <td>
-            <a class="btn btn-outline-secondary btn-sm btn-block" href="/documentImages">Document Images</a>
+             <td>
+            <a class="btn btn-outline-secondary btn-sm btn-block" href="documentImages">Document Images</a>
             </td>
         </tr>
         <tr>