Browse Source

CapitaliseString

Andrew Grant 5 months ago
parent
commit
2fbbfc8f69

+ 14 - 0
src/main/java/scot/carricksoftware/grants/capitalisation/Capitalise.java

@@ -0,0 +1,14 @@
+/*
+ * Copyright (c) 2025.  Andrew Grant Carrick Software. All rights reserved
+ *
+ */
+
+package scot.carricksoftware.grants.capitalisation;
+
+import scot.carricksoftware.grants.commands.certificates.birthcertificates.BirthCertificateCommand;
+
+public interface Capitalise {
+
+    @SuppressWarnings({"unused", "EmptyMethod"})
+    void capitalise(BirthCertificateCommand command);
+}

+ 22 - 0
src/main/java/scot/carricksoftware/grants/capitalisation/CapitaliseImpl.java

@@ -0,0 +1,22 @@
+/*
+ * Copyright (c) 2025.  Andrew Grant Carrick Software. All rights reserved
+ *
+ */
+
+package scot.carricksoftware.grants.capitalisation;
+
+import scot.carricksoftware.grants.commands.certificates.birthcertificates.BirthCertificateCommand;
+
+public class CapitaliseImpl implements Capitalise {
+
+   @SuppressWarnings("unused")
+   private  CapitaliseString capitaliseString;
+
+    @Override
+    public void capitalise(BirthCertificateCommand command) {
+
+    }
+
+
+
+}

+ 11 - 0
src/main/java/scot/carricksoftware/grants/capitalisation/CapitaliseString.java

@@ -0,0 +1,11 @@
+/*
+ * Copyright (c) 2025.  Andrew Grant Carrick Software. All rights reserved
+ *
+ */
+
+package scot.carricksoftware.grants.capitalisation;
+
+public interface CapitaliseString {
+
+    String capitalise(String input);
+}

+ 67 - 0
src/main/java/scot/carricksoftware/grants/capitalisation/CapitaliseStringImpl.java

@@ -0,0 +1,67 @@
+/*
+ * Copyright (c) 2025.  Andrew Grant Carrick Software. All rights reserved
+ *
+ */
+
+package scot.carricksoftware.grants.capitalisation;
+
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+
+import java.util.Locale;
+
+public class CapitaliseStringImpl implements CapitaliseString {
+
+    private static final Logger logger = LogManager.getLogger(CapitaliseStringImpl.class);
+
+    @SuppressWarnings("DuplicatedCode")
+    @Override
+    public String capitalise(String input) {
+        logger.info("CapitaliseStringImpl::capitalise");
+        if (input == null) {
+            return "";
+        } else if (input.length() < 3) {
+            return input;
+        } else {
+            logger.debug("CapitalisationImpl::getCapitalisation");
+            String[] parts = input.split(" ");
+            StringBuilder result = new StringBuilder();
+            for (String part : parts) {
+                result.append(doPart(part)).append(" ");
+            }
+            result = new StringBuilder(result.toString().trim());
+            parts = result.toString().split("-");
+            if (parts.length > 1) {
+                result = new StringBuilder();
+                for (String part : parts) {
+                    if (!result.isEmpty()) {
+                        result = new StringBuilder(result.append("-"));
+                    }
+                    result.append(doPart(part));
+                }
+            }
+
+            return result.toString();
+        }
+    }
+
+    @SuppressWarnings("DuplicatedCode")
+    private String doPart(String input) {
+        String result = input;
+        if (input.length() >= 3) {
+            String work = input.toLowerCase(Locale.ENGLISH);
+            result = work.substring(0, 1).toUpperCase(Locale.ENGLISH) + work.substring(1);
+            String prefix = result.substring(0, 2);
+            String name = result.substring(2);
+            if (prefix.equals("Mc")) {
+                result = prefix + doPart(name);
+            } else {
+                prefix = result.substring(0, 3);
+                if (prefix.equals("Mac")) {
+                    result = prefix + input.charAt(3) + result.substring(4);
+                }
+            }
+        }
+        return result;
+    }
+}

+ 2 - 1
src/main/java/scot/carricksoftware/grants/converters/CapitalisationImpl.java

@@ -11,6 +11,7 @@ import org.springframework.stereotype.Component;
 
 
 import java.util.Locale;
 import java.util.Locale;
 
 
+@SuppressWarnings("DuplicatedCode")
 @Component
 @Component
 public class CapitalisationImpl implements Capitalisation {
 public class CapitalisationImpl implements Capitalisation {
 
 
@@ -23,7 +24,7 @@ public class CapitalisationImpl implements Capitalisation {
         } else if (input.length() < 3) {
         } else if (input.length() < 3) {
             return input;
             return input;
         } else {
         } else {
-            logger.debug("CapitalisationImpl.getCapitalisation");
+            logger.debug("CapitalisationImpl::getCapitalisation");
             String[] parts = input.split(" ");
             String[] parts = input.split(" ");
             StringBuilder result = new StringBuilder();
             StringBuilder result = new StringBuilder();
             for (String part : parts) {
             for (String part : parts) {

+ 42 - 0
src/test/java/scot/carricksoftware/grants/capitalisation/CapitaliseLengthTest.java

@@ -0,0 +1,42 @@
+/*
+ * Copyright (c) Andrew Grant of Carrick Software 11/03/2025, 23:58. All rights reserved.
+ *
+ */
+
+package scot.carricksoftware.grants.capitalisation;
+
+
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.ExtendWith;
+import org.mockito.junit.jupiter.MockitoExtension;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+
+@ExtendWith(MockitoExtension.class)
+public class CapitaliseLengthTest {
+
+    private CapitaliseString capitaliseString;
+
+    @BeforeEach
+    public void setUp() {
+        capitaliseString = new CapitaliseStringImpl();
+    }
+
+    @Test
+    public void lowLengthTest() {
+        assertEquals("ab", capitaliseString.capitalise("ab"));
+    }
+
+    @Test
+    public void topLengthTest() {
+        assertEquals("Abc", capitaliseString.capitalise("abc"));
+    }
+
+    @Test
+    public void highLengthTest() {
+        //noinspection SpellCheckingInspection
+        assertEquals("Abcd", capitaliseString.capitalise("abcd"));
+    }
+
+}

+ 79 - 0
src/test/java/scot/carricksoftware/grants/capitalisation/CapitaliseStringTest.java

@@ -0,0 +1,79 @@
+/*
+ * Copyright (c) 2025.  Andrew Grant Carrick Software. All rights reserved
+ *
+ */
+
+package scot.carricksoftware.grants.capitalisation;
+
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+
+class CapitaliseStringTest {
+
+    private CapitaliseString capitaliseString;
+
+    @BeforeEach
+    void setUp() {
+        capitaliseString = new CapitaliseStringImpl();
+    }
+
+    @Test
+    void constructorTest() {
+        assertNotNull(capitaliseString);
+    }
+
+    @Test
+    public void firstTest() {
+        assertEquals("Smith", capitaliseString.capitalise("Smith"));
+    }
+
+    @Test
+    public void secondTest() {
+        assertEquals("Smith", capitaliseString.capitalise("smith"));
+    }
+
+    @Test
+    public void thirdTest() {
+        assertEquals("Smith", capitaliseString.capitalise("SMITH"));
+    }
+
+    @Test
+    public void fourthTest() {
+        assertEquals("Smith Jones", capitaliseString.capitalise("smith jones"));
+    }
+
+    @Test
+    public void fifthTest() {
+        assertEquals("Smith-Jones", capitaliseString.capitalise("smith-jones"));
+    }
+
+    @Test
+    public void sixthTest() {
+        assertEquals("McSmith", capitaliseString.capitalise("mcSmith"));
+    }
+
+    @Test
+    public void seventhTest() {
+        //noinspection SpellCheckingInspection
+        assertEquals("Macsmith", capitaliseString.capitalise("macsmith"));
+    }
+
+    @Test
+    public void eighthTest() {
+        assertEquals("MacSmith", capitaliseString.capitalise("macSmith"));
+    }
+
+    @Test
+    public void ninthTest() {
+        //noinspection SpellCheckingInspection
+        assertEquals("McSmith", capitaliseString.capitalise("mcsmith"));
+    }
+
+    @Test
+    public void nullTest() {
+        assertEquals("", capitaliseString.capitalise(null));
+    }
+}

+ 23 - 0
src/test/java/scot/carricksoftware/grants/capitalisation/CapitaliseTest.java

@@ -0,0 +1,23 @@
+/*
+ * Copyright (c) 2025.  Andrew Grant Carrick Software. All rights reserved
+ *
+ */
+
+package scot.carricksoftware.grants.capitalisation;
+
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.extension.ExtendWith;
+import org.mockito.junit.jupiter.MockitoExtension;
+
+@ExtendWith(MockitoExtension.class)
+class CapitaliseTest {
+
+    @SuppressWarnings("unused")
+    private Capitalise capitalise;
+
+
+    @SuppressWarnings("EmptyMethod")
+    @BeforeEach
+    void setUp() {
+    }
+}

+ 1 - 1
src/test/java/scot/carricksoftware/grants/commands/certificates/BirthCertificateCommandInformantTest.java

@@ -60,5 +60,5 @@ class BirthCertificateCommandInformantTest {
         command.setInformantQualification(informantQualification);
         command.setInformantQualification(informantQualification);
         assertEquals(informantQualification, command.getInformantQualification());
         assertEquals(informantQualification, command.getInformantQualification());
     }
     }
-   
+
 }
 }