Selaa lähdekoodia

Status Controller and files

Andrew Grant 2 kuukautta sitten
vanhempi
commit
8565e9b0ee

+ 2 - 0
src/main/java/scot/carricksoftware/grantswriter/constants/AttributeConstants.java

@@ -16,4 +16,6 @@ public class AttributeConstants {
 
     public static final String WRITER_FILES = "writerFiles";
 
+    public static final String STATUS_FILE = "statusFile";
+
 }

+ 2 - 0
src/main/java/scot/carricksoftware/grantswriter/constants/ViewConstants.java

@@ -21,4 +21,6 @@ public class ViewConstants {
     public static final String TEX = "tex";
     public static final String HOME = "index";
 
+    public static final String STATUS = "status";
+
 }

+ 17 - 0
src/main/java/scot/carricksoftware/grantswriter/controllers/StatusController.java

@@ -0,0 +1,17 @@
+/*
+ * Copyright (c) Andrew Grant of Carrick Software 21/03/2025, 00:08. All rights reserved.
+ *
+ */
+
+package scot.carricksoftware.grantswriter.controllers;
+
+
+import org.springframework.ui.Model;
+import org.springframework.web.bind.annotation.GetMapping;
+import scot.carricksoftware.grantswriter.constants.MappingConstants;
+
+public interface StatusController {
+
+    @GetMapping(MappingConstants.FILES)
+    String getStatus(Model model);
+}

+ 39 - 0
src/main/java/scot/carricksoftware/grantswriter/controllers/StatusControllerImpl.java

@@ -0,0 +1,39 @@
+/*
+ * Copyright (c) 2025.  Andrew Grant Carrick Software. All rights reserved
+ *
+ */
+
+package scot.carricksoftware.grantswriter.controllers;
+
+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.web.bind.annotation.GetMapping;
+import scot.carricksoftware.grantswriter.constants.AttributeConstants;
+import scot.carricksoftware.grantswriter.constants.MappingConstants;
+import scot.carricksoftware.grantswriter.constants.ViewConstants;
+import scot.carricksoftware.grantswriter.services.status.StatusService;
+
+
+@Controller
+public class StatusControllerImpl implements StatusController {
+
+    private static final Logger logger = LogManager.getLogger(FilesControllerImpl.class);
+
+    private final StatusService statusService;
+
+    public StatusControllerImpl(StatusService statusService) {
+        this.statusService = statusService;
+    }
+
+    @GetMapping(MappingConstants.FILES)
+    @Override
+    public String getStatus(Model model) {
+        logger.info("StatusControllerImp::getStatus");
+        model.addAttribute(AttributeConstants.STATUS_FILE,statusService.getStatus());
+        return ViewConstants.STATUS;
+    }
+
+
+}

+ 15 - 0
src/main/java/scot/carricksoftware/grantswriter/services/status/StatusService.java

@@ -0,0 +1,15 @@
+/*
+ * Copyright (c) 2025.  Andrew Grant Carrick Software. All rights reserved
+ *
+ */
+
+package scot.carricksoftware.grantswriter.services.status;
+
+
+import java.util.SortedMap;
+
+
+public interface StatusService {
+
+     SortedMap<String, String> getStatus();
+}

+ 26 - 0
src/main/java/scot/carricksoftware/grantswriter/services/status/StatusServiceImpl.java

@@ -0,0 +1,26 @@
+/*
+ * Copyright (c) 2025.  Andrew Grant Carrick Software. All rights reserved
+ *
+ */
+
+package scot.carricksoftware.grantswriter.services.status;
+
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+import org.springframework.stereotype.Service;
+
+import java.util.SortedMap;
+import java.util.TreeMap;
+
+@Service
+public class StatusServiceImpl implements StatusService {
+
+    private static final Logger logger = LogManager.getLogger(StatusServiceImpl.class);
+
+
+    @Override
+    public SortedMap<String, String> getStatus() {
+        logger.info("StatusServiceImpl::getStatus");
+        return new TreeMap<>();
+    }
+}

+ 48 - 0
src/main/resources/templates/fragments/status.html

@@ -0,0 +1,48 @@
+<!doctype html>
+<!--suppress HtmlUnknownTarget -->
+<html lang="en">
+<head>
+    <!-- Required meta tags -->
+    <meta charset="utf-8">
+    <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
+
+    <!-- Bootstrap CSS -->
+    <!--suppress SpellCheckingInspection -->
+    <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css"
+          integrity="sha384-MCw98/SFnGE8fJT3GXwEOngsV7Zt27NXFoaoApmYm81iuXoPkFOJwJ8ERdknLPMO" crossorigin="anonymous">
+
+    <title>Grants Application - writer home</title>
+</head>
+<body>
+
+<div th:insert="~{fragments/layout::banner}"></div>
+
+<div class="mx-auto" style="width:50%;text-align:center;">
+    <h1 id="pageHeader">System Status Page</h1>
+    <table class="table table-bordered">
+
+        <tbody>
+        <tr>
+            <td>
+                <a class="btn btn-primary btn-lg btn-block" href="status">System Status</a>
+            </td>
+            <td>
+                <a class="btn btn-primary btn-lg btn-block" href="files">Specify Files</a>
+            </td>
+            <td>
+                <a class="btn btn-primary btn-lg btn-block" href="tex">Create Tex</a>
+            </td>
+            <td>
+                <a class="btn btn-primary btn-lg btn-block" href="pdf">Build Pdf</a>
+            </td>
+            <td>
+                <a class="btn btn-primary btn-lg btn-block" href="print">Print</a>
+            </td>
+        </tr>
+
+        </tbody>
+    </table>
+
+</div>
+</body>
+</html>