-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Feat : 학교 홈페이지 리뉴얼로인한 교직원 스크랩 및 스크랩간 직위 추가 (#223)
* fix : 교직원 스크랩할 페이지 base url 변경(학과 홈페이지) * remove : 리빙디자인, 커뮤니케이션 디자인 파서 삭제(미사용) * fix : 학과 교직원 페이지 파서 수정(부동산 학과 제외) * fix : 부동산 학과 파싱로직 변경 * feat : 교직원 스크랩시 필요한 정보 변경 * feat : 전체 학과 siteId, siteName 수정 * feat : 교직원 정보 지원 유무 검증을 위한 메서드 추가 * feat : siteId, siteName 필드값 추가로 인한 getter 변경 * remove : 교직원 스크랩 API Client 통합에 따른 미사용 클래스 삭제 * feat : 학과 교직원 스크랩 API Client 로직 변경 * feat : 교직원 스크랩 과정 간 직위정보 추가 * feat : StaffUpdater 스크랩 로직 수정 * feat : 수의예과, 수의학과 중복 교직원 정보 제거를 위한 distinct처리 * feat : test용 html 파일 추가(컴퓨터공학부, 부동산학과) 및 legacy 파일 이동 * test : 학과 교직원 정보 스크랩 로직 테스트코드 작성 * fix : entity position 추가 전 로직으로 수정 * remove : legacy StaffScraperTest 삭제 * remove : 불필요 주석 제거 * test : MockServerSupport 객체 생성 * remove : 불필요 DTO 제거 * test : 신규 StaffScraperTest 추가 * remove : 불필요 import문 삭제 * feat : StaffDTO identifier() 메서드 추가 * feat : 수의과대학 교직원 스크랩시 수의예과만 스크랩 하도록 변경 * feat : 전화번호 유틸 클래스 분리 * feat : 이메일 유틸 클래스 분리 * test : 이메일 유틸 클래스 테스트 추가 * teat : 전화번호 유틸 클래스 테스트 추가 * feat : Staff DB position column 추가 * feat : Staff & StaffDTO position 추가 * feat : StaffDTO position 비교 로직 추가 * feat : 이메일 valid 정책 수정(공백 허용) * feat : Staff 업데이트시 직위 추가 * feat : 교직원 스크랩 스케쥴링 월 1회 활성화 * feat : EmailSupporter & PhoneNumberSupporter 검증/변환 로직 분리 * feat : EmailSupporter & PhoneNumberSupporter 검증 메서드 테스트 추가 * feat : StaffDTO 객체 생성 간 email, phone 검증, 변환하도록 수정 * refactor : 불필요 import문 제거 * refactor : 테스트 클래스 및 메서드 public 키워드 제거 * refactor : 주석 TODO 키워드 제거 및 replaceAll() -> replace() 변경 * feat : 직위 추가에 따른 StaffUpdate 로직 변경 * refactor : 람다 함수 사용 간 불필요 괄호 제거 * feat : 전화번호 없을 경우 기본 저장 값 변경("-" -> "") * fix : StaffUpdate 로직 변경에 따른 Staff 도메인 테스트 변경(identifier(), 전화번호) * test : StaffUpdate 로직 변경에 따른 테스트 코드 변경(identifier(), 전화번호, 직위) * refactor : 소나큐브 이슈 수정(변수명 컨벤션) * remove : 불필요 출력문 제거 * feat : 교직원 스크랩 스케쥴링 시간 1분 변경.(테스트 후 30분 되돌릴 예정)
- Loading branch information
1 parent
9b605f6
commit a73c120
Showing
128 changed files
with
7,099 additions
and
14,741 deletions.
There are no files selected for viewing
68 changes: 68 additions & 0 deletions
68
src/main/java/com/kustacks/kuring/common/utils/converter/EmailSupporter.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,68 @@ | ||
package com.kustacks.kuring.common.utils.converter; | ||
|
||
import java.util.Arrays; | ||
import java.util.regex.Pattern; | ||
|
||
public class EmailSupporter { | ||
private static final Pattern AT_PATTERN = Pattern.compile("\\s+at\\s+"); | ||
private static final Pattern DOT_PATTERN = Pattern.compile("\\s+dot\\s+"); | ||
private static final Pattern EMAIL_PATTERN = Pattern.compile("^[a-zA-Z0-9_!#$%&'\\*+/=?{|}~^.-]+@[a-zA-Z0-9.-]+$"); | ||
|
||
private static final String KONKUK_DOMAIN = "@konkuk.ac.kr"; | ||
private static final String EMPTY_EMAIL = ""; | ||
|
||
public static boolean isNullOrBlank(String email) { | ||
return email == null || email.isBlank(); | ||
} | ||
|
||
public static String convertValidEmail(String email) { | ||
if (isNullOrBlank(email)) { | ||
return EMPTY_EMAIL; | ||
} | ||
|
||
String[] emailGroups = splitEmails(email); | ||
String[] normalizedEmails = normalizeEmails(emailGroups); | ||
|
||
//여러 이메일 중 konkuk을 우선 선택, 없으면 첫번째 내용 | ||
return selectPreferredEmail(normalizedEmails); | ||
} | ||
|
||
private static String[] splitEmails(String email) { | ||
return email.split("[/,]"); | ||
} | ||
|
||
private static String[] normalizeEmails(String[] emailGroups) { | ||
return Arrays.stream(emailGroups) | ||
.map(EmailSupporter::normalizeEmail) | ||
.toArray(String[]::new); | ||
} | ||
|
||
private static String normalizeEmail(String email) { | ||
if (EMAIL_PATTERN.matcher(email).matches()) { | ||
return email; | ||
} | ||
|
||
if (containsSubstitutePatterns(email)) { | ||
return replaceSubstitutePatterns(email); | ||
} | ||
|
||
return EMPTY_EMAIL; | ||
} | ||
|
||
private static String replaceSubstitutePatterns(String email) { | ||
return email.replaceAll(DOT_PATTERN.pattern(), ".") | ||
.replaceAll(AT_PATTERN.pattern(), "@"); | ||
} | ||
|
||
private static boolean containsSubstitutePatterns(String email) { | ||
return DOT_PATTERN.matcher(email).find() && AT_PATTERN.matcher(email).find(); | ||
} | ||
|
||
// Konkuk 도메인 우선 선택 | ||
private static String selectPreferredEmail(String[] emails) { | ||
return Arrays.stream(emails) | ||
.filter(email -> email.endsWith(KONKUK_DOMAIN)) | ||
.findFirst() | ||
.orElseGet(() -> emails.length > 0 ? emails[0] : EMPTY_EMAIL); | ||
} | ||
} |
42 changes: 42 additions & 0 deletions
42
src/main/java/com/kustacks/kuring/common/utils/converter/PhoneNumberSupporter.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,42 @@ | ||
package com.kustacks.kuring.common.utils.converter; | ||
|
||
import java.util.regex.Pattern; | ||
|
||
public class PhoneNumberSupporter { | ||
|
||
private static final Pattern LAST_FOUR_NUMBER_PATTERN = Pattern.compile("\\d{4}"); | ||
private static final Pattern FULL_NUMBER_PATTERN = Pattern.compile("02-\\d{3,4}-\\d{4}"); | ||
private static final Pattern FULL_NUMBER_WITH_PARENTHESES_PATTERN = Pattern.compile("02[)]\\d{3,4}-\\d{4}"); | ||
|
||
private static final String EMPTY_PHONE = ""; | ||
|
||
public static boolean isNullOrBlank(String number) { | ||
return number == null || number.isBlank(); | ||
} | ||
|
||
public static String convertFullExtensionNumber(String number) { | ||
if (isNullOrBlank(number)) { | ||
return EMPTY_PHONE; | ||
} | ||
|
||
if (FULL_NUMBER_PATTERN.matcher(number).matches()) { | ||
return number; | ||
} | ||
if (containsLastFourNumber(number)) { | ||
return "02-450-" + number; | ||
} | ||
if (containsParenthesesPattern(number)) { | ||
return number.replace(")", "-"); | ||
} | ||
|
||
return EMPTY_PHONE; | ||
} | ||
|
||
private static boolean containsLastFourNumber(String number) { | ||
return LAST_FOUR_NUMBER_PATTERN.matcher(number).matches(); | ||
} | ||
|
||
private static boolean containsParenthesesPattern(String number) { | ||
return FULL_NUMBER_WITH_PARENTHESES_PATTERN.matcher(number).matches(); | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
37 changes: 0 additions & 37 deletions
37
.../com/kustacks/kuring/worker/parser/staff/LivingAndCommunicationDesignStaffHtmlParser.java
This file was deleted.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.