Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .idea/misc.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

20 changes: 20 additions & 0 deletions src/main/java/com/example/midterm/ConcreteEmailService.java
Original file line number Diff line number Diff line change
@@ -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);
}
}
73 changes: 72 additions & 1 deletion src/main/java/com/example/midterm/ConcreteNameService.java
Original file line number Diff line number Diff line change
@@ -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
}
}
17 changes: 17 additions & 0 deletions src/main/java/dto/Email.java
Original file line number Diff line number Diff line change
@@ -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()
{

}
}
7 changes: 5 additions & 2 deletions src/main/java/dto/Name.java
Original file line number Diff line number Diff line change
Expand Up @@ -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() {

}
}
9 changes: 9 additions & 0 deletions src/main/java/service/EmailService.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
package service;

import dto.Email;


public interface EmailService {

Email process(String email) throws Exception;
}
Original file line number Diff line number Diff line change
@@ -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"));
}


}
Binary file not shown.
Binary file modified target/classes/com/example/midterm/ConcreteNameService.class
Binary file not shown.
Binary file added target/classes/dto/Email.class
Binary file not shown.
Binary file modified target/classes/dto/Name.class
Binary file not shown.
Binary file added target/classes/service/EmailService.class
Binary file not shown.
Binary file modified target/classes/utility/NameBuilder.class
Binary file not shown.
Original file line number Diff line number Diff line change
@@ -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
Original file line number Diff line number Diff line change
@@ -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
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
com\example\midterm\MidtermApplicationTests.class
com\example\midterm\EmailValidationControllerTests.class
Original file line number Diff line number Diff line change
@@ -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

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
@@ -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
Original file line number Diff line number Diff line change
@@ -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
Binary file not shown.