diff --git a/.idea/misc.xml b/.idea/misc.xml
index 0abcc97..f0f8287 100644
--- a/.idea/misc.xml
+++ b/.idea/misc.xml
@@ -8,5 +8,5 @@
-
+
\ No newline at end of file
diff --git a/src/main/java/com/example/midterm/ConcreteEmailService.java b/src/main/java/com/example/midterm/ConcreteEmailService.java
new file mode 100644
index 0000000..23538da
--- /dev/null
+++ b/src/main/java/com/example/midterm/ConcreteEmailService.java
@@ -0,0 +1,20 @@
+package com.example.midterm;
+
+import org.springframework.stereotype.Component;
+import dto.Email;
+import service.EmailService;
+
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+@Component
+public class ConcreteEmailService implements EmailService {
+ @Override
+ public Email process(String email) throws Exception {
+ final String EMAIL_REGEX = "^[A-Za-z0-9+_.-]+@[A-Za-z0-9.-]+$";
+ Pattern pattern = Pattern.compile(EMAIL_REGEX);
+ Matcher matcher = pattern.matcher(email);
+ email = matcher.replaceAll(email);
+ return new Email(email);
+ }
+}
diff --git a/src/main/java/com/example/midterm/ConcreteNameService.java b/src/main/java/com/example/midterm/ConcreteNameService.java
index 2008297..e0246e6 100644
--- a/src/main/java/com/example/midterm/ConcreteNameService.java
+++ b/src/main/java/com/example/midterm/ConcreteNameService.java
@@ -1,13 +1,84 @@
package com.example.midterm;
import dto.Name;
+
import org.springframework.stereotype.Component;
import service.NameService;
+// Import Regular Expression libraries
+import java.util.regex.Pattern;
+import java.util.regex.Matcher;
+
@Component
public class ConcreteNameService implements NameService {
@Override
public Name process(String name) throws Exception {
- return null;
+
+ // Remove the following:
+ // "Csar", "Dr", "D. R.", "Rev.", "a.k.a. (and all the characters after it)", "M.B.A.", "J. R.",
+ // "M.BA", "Certified Professional", "II.", "Jr.", "Dip Ed", "DipEd", "MSc", "MPH", "DRes/PhD", "MacA", "assoc prof"
+ // anything enclosed in parentheses, quotation marks, single quotes,
+ // numbers, extra whitespaces, special characters
+ String cleanName = name
+ .replaceAll("(?i)(Csar|Dr|D\\.R\\.|Rev\\.|a\\.k\\.a.*|M\\.B\\.A\\.|J\\.|R\\.|, Bsc|Bsc|M\\.BA|Certified|Professional|\\(.*?\\)|\\\".*?\\\"|'[^']*'|\\s*\\d+|II\\.|Jr\\.|Dip|Ed|DipEd|MSc|MPH|es|PhD|MacA|assoc|prof|J)", "")
+ .replaceAll("[^a-zA-Z,]", " ")
+ .replaceAll("\\s{2,}", " ")
+ .trim();
+ // Convert cleaned name to title case if it's in all upper or lower case
+ cleanName = toTitleCaseIfNecessary(cleanName);
+
+ String[] parts;
+ String fname = "", lname = "";
+ // Handles the format "Last, First"
+ if (cleanName.contains(",")) {
+ parts = cleanName.split(",");
+ lname = parts[0];
+ fname = parts[1];
+ //if (cleanName.contains(" ")) {
+ // parts = lname.split(" ");
+ // fname = parts[0];
+ // lname = parts[1];
+ //}
+ return new Name(fname.trim(), lname.trim());
+ }
+
+ parts = cleanName.split(" ");
+ if (parts.length == 2) {
+ fname = parts[0];
+ lname = parts[1];
+ return new Name(fname, lname);
+ }else if (parts.length > 2) {
+ if (parts[1].length() == 1) {
+ parts[1] = parts[2];
+ parts[2] = "";
+ }
+ fname = parts[0];
+ lname = parts[parts.length - 2] + " " + parts[parts.length - 1];
+ return new Name(fname.trim(), lname.trim());
+ }
+
+ System.out.println("fname: " + parts[0]);
+ System.out.println("lname: " + parts[1]);
+
+ return new Name(fname, lname);
+
+
+ }
+ // Utility function to handle capitalization
+ private String toTitleCaseIfNecessary(String name) {
+ if (name.equals(name.toUpperCase()) || name.equals(name.toLowerCase())) {
+ String[] words = name.split(" ");
+ StringBuilder titleCaseName = new StringBuilder();
+ for (String word : words) {
+ if (word.length() > 1) {
+ titleCaseName.append(word.substring(0, 1).toUpperCase())
+ .append(word.substring(1).toLowerCase()).append(" ");
+ } else {
+ titleCaseName.append(word.toUpperCase()).append(" ");
+ }
+ }
+ return titleCaseName.toString().trim();
+ }
+ return name; // Return the original name if no changes needed
}
}
diff --git a/src/main/java/dto/Email.java b/src/main/java/dto/Email.java
new file mode 100644
index 0000000..ab1dccc
--- /dev/null
+++ b/src/main/java/dto/Email.java
@@ -0,0 +1,17 @@
+package dto;
+
+import lombok.Data;
+
+@Data
+public class Email {
+ private String email;
+
+ public Email(String email) {
+ this.email = email;
+ }
+
+ public Email()
+ {
+
+ }
+}
diff --git a/src/main/java/dto/Name.java b/src/main/java/dto/Name.java
index 48983d6..e5489a3 100644
--- a/src/main/java/dto/Name.java
+++ b/src/main/java/dto/Name.java
@@ -2,16 +2,19 @@
import lombok.Data;
+import java.util.Objects;
+
@Data
public class Name {
private String first;
private String last;
+
public Name(String first, String last) {
this.first = first;
this.last = last;
}
-
+
public Name() {
-
+
}
}
diff --git a/src/main/java/service/EmailService.java b/src/main/java/service/EmailService.java
new file mode 100644
index 0000000..2b88a9e
--- /dev/null
+++ b/src/main/java/service/EmailService.java
@@ -0,0 +1,9 @@
+package service;
+
+import dto.Email;
+
+
+public interface EmailService {
+
+ Email process(String email) throws Exception;
+}
diff --git a/src/test/java/com/example/midterm/EmailValidationControllerTests.java b/src/test/java/com/example/midterm/EmailValidationControllerTests.java
new file mode 100644
index 0000000..9a79039
--- /dev/null
+++ b/src/test/java/com/example/midterm/EmailValidationControllerTests.java
@@ -0,0 +1,23 @@
+package com.example.midterm;
+import dto.Email;
+import org.junit.jupiter.api.Test;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.context.SpringBootTest;
+
+import service.EmailService;
+
+import static org.springframework.test.util.AssertionErrors.assertEquals;
+
+@SpringBootTest
+public class EmailValidationControllerTests {
+
+ @Autowired
+ private EmailService emailService;
+
+ @Test
+ public void emailTest() throws Exception {
+ assertEquals("chancellor.galiza@upd.edu.ph", new Email("chancellor.galiza@upd.edu.ph"), emailService.process("chancellor.galiza@upd.edu.ph"));
+ }
+
+
+}
diff --git a/target/classes/com/example/midterm/ConcreteEmailService.class b/target/classes/com/example/midterm/ConcreteEmailService.class
new file mode 100644
index 0000000..a06406d
Binary files /dev/null and b/target/classes/com/example/midterm/ConcreteEmailService.class differ
diff --git a/target/classes/com/example/midterm/ConcreteNameService.class b/target/classes/com/example/midterm/ConcreteNameService.class
index fd057f3..8fa1125 100644
Binary files a/target/classes/com/example/midterm/ConcreteNameService.class and b/target/classes/com/example/midterm/ConcreteNameService.class differ
diff --git a/target/classes/dto/Email.class b/target/classes/dto/Email.class
new file mode 100644
index 0000000..b63a439
Binary files /dev/null and b/target/classes/dto/Email.class differ
diff --git a/target/classes/dto/Name.class b/target/classes/dto/Name.class
index d361cf4..91caf6a 100644
Binary files a/target/classes/dto/Name.class and b/target/classes/dto/Name.class differ
diff --git a/target/classes/service/EmailService.class b/target/classes/service/EmailService.class
new file mode 100644
index 0000000..2fbce11
Binary files /dev/null and b/target/classes/service/EmailService.class differ
diff --git a/target/classes/utility/NameBuilder.class b/target/classes/utility/NameBuilder.class
index 00c9bdd..ba51c28 100644
Binary files a/target/classes/utility/NameBuilder.class and b/target/classes/utility/NameBuilder.class differ
diff --git a/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst b/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst
new file mode 100644
index 0000000..bf43fe3
--- /dev/null
+++ b/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst
@@ -0,0 +1,8 @@
+dto\Name.class
+service\NameService.class
+service\EmailService.class
+com\example\midterm\MidtermApplication.class
+utility\NameBuilder.class
+com\example\midterm\ConcreteEmailService.class
+dto\Email.class
+com\example\midterm\ConcreteNameService.class
diff --git a/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst b/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst
new file mode 100644
index 0000000..3187f64
--- /dev/null
+++ b/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst
@@ -0,0 +1,9 @@
+C:\Users\joren\Desktop\ENTJAVA\ENTJAVAMidterms\src\main\java\com\example\midterm\ConcreteEmailService.java
+C:\Users\joren\Desktop\ENTJAVA\ENTJAVAMidterms\src\main\java\com\example\midterm\ConcreteNameService.java
+C:\Users\joren\Desktop\ENTJAVA\ENTJAVAMidterms\src\main\java\com\example\midterm\MidtermApplication.java
+C:\Users\joren\Desktop\ENTJAVA\ENTJAVAMidterms\src\main\java\com\example\midterm\MyController.java
+C:\Users\joren\Desktop\ENTJAVA\ENTJAVAMidterms\src\main\java\dto\Email.java
+C:\Users\joren\Desktop\ENTJAVA\ENTJAVAMidterms\src\main\java\dto\Name.java
+C:\Users\joren\Desktop\ENTJAVA\ENTJAVAMidterms\src\main\java\service\EmailService.java
+C:\Users\joren\Desktop\ENTJAVA\ENTJAVAMidterms\src\main\java\service\NameService.java
+C:\Users\joren\Desktop\ENTJAVA\ENTJAVAMidterms\src\main\java\utility\NameBuilder.java
diff --git a/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/createdFiles.lst b/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/createdFiles.lst
new file mode 100644
index 0000000..f5af487
--- /dev/null
+++ b/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/createdFiles.lst
@@ -0,0 +1,2 @@
+com\example\midterm\MidtermApplicationTests.class
+com\example\midterm\EmailValidationControllerTests.class
diff --git a/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst b/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst
new file mode 100644
index 0000000..e9ccbd2
--- /dev/null
+++ b/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst
@@ -0,0 +1,2 @@
+C:\Users\joren\Desktop\ENTJAVA\ENTJAVAMidterms\src\test\java\com\example\midterm\EmailValidationControllerTests.java
+C:\Users\joren\Desktop\ENTJAVA\ENTJAVAMidterms\src\test\java\com\example\midterm\MidtermApplicationTests.java
diff --git a/target/surefire-reports/TEST-com.example.midterm.EmailValidationControllerTests.xml b/target/surefire-reports/TEST-com.example.midterm.EmailValidationControllerTests.xml
new file mode 100644
index 0000000..1f398ed
--- /dev/null
+++ b/target/surefire-reports/TEST-com.example.midterm.EmailValidationControllerTests.xml
@@ -0,0 +1,92 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/target/surefire-reports/TEST-com.example.midterm.MidtermApplicationTests.xml b/target/surefire-reports/TEST-com.example.midterm.MidtermApplicationTests.xml
new file mode 100644
index 0000000..90f233c
--- /dev/null
+++ b/target/surefire-reports/TEST-com.example.midterm.MidtermApplicationTests.xml
@@ -0,0 +1,78 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/target/surefire-reports/com.example.midterm.EmailValidationControllerTests.txt b/target/surefire-reports/com.example.midterm.EmailValidationControllerTests.txt
new file mode 100644
index 0000000..3290536
--- /dev/null
+++ b/target/surefire-reports/com.example.midterm.EmailValidationControllerTests.txt
@@ -0,0 +1,4 @@
+-------------------------------------------------------------------------------
+Test set: com.example.midterm.EmailValidationControllerTests
+-------------------------------------------------------------------------------
+Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 1.880 s -- in com.example.midterm.EmailValidationControllerTests
diff --git a/target/surefire-reports/com.example.midterm.MidtermApplicationTests.txt b/target/surefire-reports/com.example.midterm.MidtermApplicationTests.txt
new file mode 100644
index 0000000..09e446c
--- /dev/null
+++ b/target/surefire-reports/com.example.midterm.MidtermApplicationTests.txt
@@ -0,0 +1,4 @@
+-------------------------------------------------------------------------------
+Test set: com.example.midterm.MidtermApplicationTests
+-------------------------------------------------------------------------------
+Tests run: 7, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.032 s -- in com.example.midterm.MidtermApplicationTests
diff --git a/target/test-classes/com/example/midterm/EmailValidationControllerTests.class b/target/test-classes/com/example/midterm/EmailValidationControllerTests.class
new file mode 100644
index 0000000..8d0d213
Binary files /dev/null and b/target/test-classes/com/example/midterm/EmailValidationControllerTests.class differ