Przeglądaj źródła

AppendixText working

Andrew Grant 1 tydzień temu
rodzic
commit
5d2a2d655c

+ 35 - 2
src/main/java/scot/carricksoftware/grantswriter/writer/latex/parts/appendix/AppendixPartWriterImpl.java

@@ -8,7 +8,14 @@ package scot.carricksoftware.grantswriter.writer.latex.parts.appendix;
 import org.apache.logging.log4j.LogManager;
 import org.apache.logging.log4j.Logger;
 import org.springframework.stereotype.Component;
+import scot.carricksoftware.grantswriter.domains.text.AppendixText;
+import scot.carricksoftware.grantswriter.services.text.AppendixTextService;
+import scot.carricksoftware.grantswriter.writer.FileWriter;
+import scot.carricksoftware.grantswriter.writer.latex.LatexDivisionHeader;
 import scot.carricksoftware.grantswriter.writer.latex.parts.appendix.headers.AppendixPartHeader;
+import scot.carricksoftware.grantswriter.writer.latex.parts.appendix.helpers.AppendixListSortByOrder;
+
+import java.util.List;
 
 @Component
 public class AppendixPartWriterImpl implements AppendixPartWriter {
@@ -16,14 +23,40 @@ public class AppendixPartWriterImpl implements AppendixPartWriter {
     private static final Logger logger = LogManager.getLogger(AppendixPartWriterImpl.class);
 
     private final AppendixPartHeader appendixPartHeader;
+    private final AppendixTextService appendixTextService;
+    private final FileWriter fileWriter;
+    private final LatexDivisionHeader latexDivisionHeader;
+    private final AppendixListSortByOrder appendixListSortByOrder;
 
-    public AppendixPartWriterImpl(AppendixPartHeader appendixPartHeader) {
+    public AppendixPartWriterImpl(AppendixPartHeader appendixPartHeader,
+                                  AppendixTextService appendixTextService,
+                                  FileWriter fileWriter,
+                                  LatexDivisionHeader latexDivisionHeader,
+                                  AppendixListSortByOrder appendixListSortByOrder) {
         this.appendixPartHeader = appendixPartHeader;
+        this.appendixTextService = appendixTextService;
+        this.fileWriter = fileWriter;
+        this.latexDivisionHeader = latexDivisionHeader;
+        this.appendixListSortByOrder = appendixListSortByOrder;
     }
 
     @Override
     public void write() {
-        logger.info("AppendixPartsImpl::write()");
+        logger.debug("AppendixPartsImpl::write()");
         appendixPartHeader.write();
+
+        List<AppendixText> appendixTextList = appendixTextService.findAll();
+        appendixListSortByOrder.sort(appendixTextList);
+        for (AppendixText appendixText : appendixTextList) {
+                if (appendixText.getHeading() != null) {
+                    latexDivisionHeader.write(Integer.parseInt(appendixText.getLevel()), appendixText.getHeading());
+                }
+                writeContent (appendixText);
+        }
+    }
+
+    private void writeContent(AppendixText appendixText) {
+        logger.debug("AppendixPartWriterImpl::writeContent()");
+        fileWriter.writeLine(appendixText.getContent());
     }
 }

+ 14 - 0
src/main/java/scot/carricksoftware/grantswriter/writer/latex/parts/appendix/helpers/AppendixListSortByOrder.java

@@ -0,0 +1,14 @@
+/*
+ * Copyright (c) 2025.  Andrew Grant Carrick Software. All rights reserved
+ *
+ */
+
+package scot.carricksoftware.grantswriter.writer.latex.parts.appendix.helpers;
+
+import scot.carricksoftware.grantswriter.domains.text.AppendixText;
+
+import java.util.List;
+
+public interface AppendixListSortByOrder {
+    void sort(List<AppendixText> appendixTextList);
+}

+ 21 - 0
src/main/java/scot/carricksoftware/grantswriter/writer/latex/parts/appendix/helpers/AppendixListSortByOrderImpl.java

@@ -0,0 +1,21 @@
+/*
+ * Copyright (c) 2025.  Andrew Grant Carrick Software. All rights reserved
+ *
+ */
+
+package scot.carricksoftware.grantswriter.writer.latex.parts.appendix.helpers;
+
+import org.springframework.stereotype.Component;
+import scot.carricksoftware.grantswriter.domains.text.AppendixText;
+
+import java.util.Comparator;
+import java.util.List;
+
+@Component
+public class AppendixListSortByOrderImpl implements AppendixListSortByOrder {
+
+    @Override
+    public void sort(List<AppendixText> appendixTextList) {
+        appendixTextList.sort(Comparator.comparing(AppendixText::getOrder));
+    }
+}

+ 14 - 3
src/test/java/scot/carricksoftware/grantswriter/writer/latex/parts/appendix/AppendixPartWriterTest.java

@@ -10,7 +10,11 @@ import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.extension.ExtendWith;
 import org.mockito.Mock;
 import org.mockito.junit.jupiter.MockitoExtension;
+import scot.carricksoftware.grantswriter.services.text.AppendixTextService;
+import scot.carricksoftware.grantswriter.writer.FileWriter;
+import scot.carricksoftware.grantswriter.writer.latex.LatexDivisionHeader;
 import scot.carricksoftware.grantswriter.writer.latex.parts.appendix.headers.AppendixPartHeader;
+import scot.carricksoftware.grantswriter.writer.latex.parts.appendix.helpers.AppendixListSortByOrder;
 
 import static org.mockito.Mockito.verify;
 
@@ -19,12 +23,19 @@ class AppendixPartWriterTest {
 
     private AppendixPartWriter writer;
 
-    @Mock
-    private AppendixPartHeader appendixPartHeaderMock;
+    @Mock private AppendixPartHeader appendixPartHeaderMock;
+    @Mock private AppendixTextService appendixTextServiceMock;
+    @Mock private FileWriter fileWriterMock;
+    @Mock private LatexDivisionHeader latexDivisionHeaderMock;
+    @Mock private AppendixListSortByOrder appendixListSortByOrderMock;
 
     @BeforeEach
     void setUp() {
-        writer = new AppendixPartWriterImpl(appendixPartHeaderMock);
+        writer = new AppendixPartWriterImpl(appendixPartHeaderMock,
+                appendixTextServiceMock,
+                fileWriterMock,
+                latexDivisionHeaderMock,
+                appendixListSortByOrderMock);
     }
 
     @Test