Skip to content

Commit

Permalink
refactor: MajorExceptionHandler -> MandatoryMajorSpecialCaseHandler 변경
Browse files Browse the repository at this point in the history
  • Loading branch information
stophwan committed Jun 11, 2024
1 parent 2291e43 commit 7b5a1a7
Show file tree
Hide file tree
Showing 8 changed files with 22 additions and 27 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,6 @@
import com.plzgraduate.myongjigraduatebe.graduation.domain.model.DetailCategoryResult;
import com.plzgraduate.myongjigraduatebe.graduation.domain.model.DetailGraduationResult;
import com.plzgraduate.myongjigraduatebe.graduation.domain.service.GraduationManager;
import com.plzgraduate.myongjigraduatebe.graduation.domain.service.major.exception.MajorExceptionHandler;
import com.plzgraduate.myongjigraduatebe.graduation.domain.service.major.exception.OptionalMandatoryHandler;
import com.plzgraduate.myongjigraduatebe.graduation.domain.service.major.exception.ReplaceMandatoryMajorHandler;
import com.plzgraduate.myongjigraduatebe.lecture.domain.model.Lecture;
import com.plzgraduate.myongjigraduatebe.lecture.domain.model.MajorLecture;
import com.plzgraduate.myongjigraduatebe.takenlecture.domain.model.TakenLecture;
Expand Down Expand Up @@ -41,10 +38,10 @@ public DetailGraduationResult createDetailGraduationResult(User user,
Set<Lecture> mandatoryLectures = filterMandatoryLectures(majorLectures);
Set<Lecture> electiveLectures = filterElectiveLectures(majorLectures);

List<MajorExceptionHandler> majorExceptionHandlers = List.of(
new OptionalMandatoryHandler(),
new ReplaceMandatoryMajorHandler());
MandatoryMajorManager mandatoryMajorManager = new MandatoryMajorManager(majorExceptionHandlers);
List<MandatoryMajorSpecialCaseHandler> mandatoryMajorSpecialCaseHandlers = List.of(
new OptionalMandatoryMandatoryMajorHandler(),
new ReplaceMandatoryMandatoryMajorHandler());
MandatoryMajorManager mandatoryMajorManager = new MandatoryMajorManager(mandatoryMajorSpecialCaseHandlers);
ElectiveMajorManager electiveMajorManager = new ElectiveMajorManager();

DetailCategoryResult mandantoryDetailCategoryResult = mandatoryMajorManager.createDetailCategoryResult(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,6 @@
import java.util.Set;

import com.plzgraduate.myongjigraduatebe.graduation.domain.model.DetailCategoryResult;
import com.plzgraduate.myongjigraduatebe.graduation.domain.service.major.exception.MajorExceptionHandler;
import com.plzgraduate.myongjigraduatebe.graduation.domain.service.major.exception.MandatorySpecialCaseInformation;
import com.plzgraduate.myongjigraduatebe.lecture.domain.model.Lecture;
import com.plzgraduate.myongjigraduatebe.takenlecture.domain.model.TakenLecture;
import com.plzgraduate.myongjigraduatebe.user.domain.model.User;
Expand All @@ -19,7 +17,7 @@ public class MandatoryMajorManager {

private static final String detailCategoryName = "전공필수";

private final List<MajorExceptionHandler> majorExceptionHandlers;
private final List<MandatoryMajorSpecialCaseHandler> mandatoryMajorSpecialCaseHandlers;

public DetailCategoryResult createDetailCategoryResult(User user, TakenLectureInventory takenLectureInventory,
Set<Lecture> mandatoryLectures, Set<Lecture> electiveLectures,
Expand All @@ -29,9 +27,9 @@ public DetailCategoryResult createDetailCategoryResult(User user, TakenLectureIn
boolean isSatisfiedMandatory = true;
int removeMandatoryTotalCredit = 0;

for (MajorExceptionHandler majorExceptionHandler : majorExceptionHandlers) {
if (majorExceptionHandler.isSupport(user, majorGraduationCategory)) {
MandatorySpecialCaseInformation mandatorySpecialCaseInformation = majorExceptionHandler.getMandatorySpecialCaseInformation(
for (MandatoryMajorSpecialCaseHandler mandatoryMajorSpecialCaseHandler : mandatoryMajorSpecialCaseHandlers) {
if (mandatoryMajorSpecialCaseHandler.isSupport(user, majorGraduationCategory)) {
MandatorySpecialCaseInformation mandatorySpecialCaseInformation = mandatoryMajorSpecialCaseHandler.getMandatorySpecialCaseInformation(
takenLectureInventory, mandatoryLectures, electiveLectures);
isSatisfiedMandatory = mandatorySpecialCaseInformation.isCompleteMandatorySpecialCase();
removeMandatoryTotalCredit = mandatorySpecialCaseInformation.getRemovedMandatoryTotalCredit();
Expand Down
Original file line number Diff line number Diff line change
@@ -1,13 +1,12 @@
package com.plzgraduate.myongjigraduatebe.graduation.domain.service.major.exception;
package com.plzgraduate.myongjigraduatebe.graduation.domain.service.major;

import java.util.Set;

import com.plzgraduate.myongjigraduatebe.graduation.domain.service.major.MajorGraduationCategory;
import com.plzgraduate.myongjigraduatebe.lecture.domain.model.Lecture;
import com.plzgraduate.myongjigraduatebe.user.domain.model.User;
import com.plzgraduate.myongjigraduatebe.takenlecture.domain.model.TakenLectureInventory;

public interface MajorExceptionHandler {
public interface MandatoryMajorSpecialCaseHandler {
boolean isSupport(User user, MajorGraduationCategory majorGraduationCategory);

MandatorySpecialCaseInformation getMandatorySpecialCaseInformation(TakenLectureInventory takenLectureInventory,
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.plzgraduate.myongjigraduatebe.graduation.domain.service.major.exception;
package com.plzgraduate.myongjigraduatebe.graduation.domain.service.major;

import lombok.Builder;
import lombok.Getter;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.plzgraduate.myongjigraduatebe.graduation.domain.service.major.exception;
package com.plzgraduate.myongjigraduatebe.graduation.domain.service.major;

import java.util.Arrays;
import java.util.Objects;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.plzgraduate.myongjigraduatebe.graduation.domain.service.major.exception;
package com.plzgraduate.myongjigraduatebe.graduation.domain.service.major;

import static com.plzgraduate.myongjigraduatebe.graduation.domain.service.major.MajorGraduationCategory.DUAL;
import static com.plzgraduate.myongjigraduatebe.graduation.domain.service.major.MajorGraduationCategory.PRIMARY;
Expand All @@ -8,7 +8,6 @@
import java.util.Set;
import java.util.stream.Collectors;

import com.plzgraduate.myongjigraduatebe.graduation.domain.service.major.MajorGraduationCategory;
import com.plzgraduate.myongjigraduatebe.lecture.domain.model.Lecture;
import com.plzgraduate.myongjigraduatebe.takenlecture.domain.model.TakenLecture;
import com.plzgraduate.myongjigraduatebe.takenlecture.domain.model.TakenLectureInventory;
Expand All @@ -21,7 +20,7 @@
* 경영의 경우 국제통상원론, 국제경양, 경영정보 중 택1
* 행정의
*/
public class OptionalMandatoryHandler implements MajorExceptionHandler {
public class OptionalMandatoryMandatoryMajorHandler implements MandatoryMajorSpecialCaseHandler {

private static final String MANAGEMENT_INFORMATION = "경영정보학과";
private static final String BUSINESS = "경영학과";
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.plzgraduate.myongjigraduatebe.graduation.domain.service.major.exception;
package com.plzgraduate.myongjigraduatebe.graduation.domain.service.major;

import static com.plzgraduate.myongjigraduatebe.graduation.domain.service.major.MajorGraduationCategory.*;

Expand All @@ -7,7 +7,6 @@
import java.util.Set;
import java.util.stream.Collectors;

import com.plzgraduate.myongjigraduatebe.graduation.domain.service.major.MajorGraduationCategory;
import com.plzgraduate.myongjigraduatebe.lecture.domain.model.Lecture;
import com.plzgraduate.myongjigraduatebe.takenlecture.domain.model.TakenLecture;
import com.plzgraduate.myongjigraduatebe.user.domain.model.User;
Expand All @@ -17,7 +16,7 @@
* 철학과의 경우 답사1, 답사2는 폐지 되었지만 2021번 이전까지 전공필수
* '신유학의 이해' '유학사상의이해' 중 택1 이수 시 대체 인정
*/
public class ReplaceMandatoryMajorHandler implements MajorExceptionHandler {
public class ReplaceMandatoryMandatoryMajorHandler implements MandatoryMajorSpecialCaseHandler {
//private int removedMandatoryTotalCredit = 0;
private static final List<Lecture> REPLACED_LECTURES = List.of(
Lecture.of("HAI01110", "답사1", 1, 1, null),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,9 @@

import com.plzgraduate.myongjigraduatebe.fixture.LectureFixture;
import com.plzgraduate.myongjigraduatebe.fixture.UserFixture;
import com.plzgraduate.myongjigraduatebe.graduation.domain.service.major.MandatoryMajorSpecialCaseHandler;
import com.plzgraduate.myongjigraduatebe.graduation.domain.service.major.MandatorySpecialCaseInformation;
import com.plzgraduate.myongjigraduatebe.graduation.domain.service.major.ReplaceMandatoryMandatoryMajorHandler;
import com.plzgraduate.myongjigraduatebe.lecture.domain.model.Lecture;
import com.plzgraduate.myongjigraduatebe.takenlecture.domain.model.Semester;
import com.plzgraduate.myongjigraduatebe.takenlecture.domain.model.TakenLecture;
Expand Down Expand Up @@ -45,7 +48,7 @@ class ReplaceMandatoryMajorHandlerTest {
TakenLectureInventory takenLectureInventory = TakenLectureInventory.from(takenLectures);

//when
MajorExceptionHandler exceptionHandler = new ReplaceMandatoryMajorHandler();
MandatoryMajorSpecialCaseHandler exceptionHandler = new ReplaceMandatoryMandatoryMajorHandler();
MandatorySpecialCaseInformation mandatorySpecialCaseInformation = exceptionHandler.getMandatorySpecialCaseInformation(
takenLectureInventory,
mandatoryLectures, electiveLectures);
Expand Down Expand Up @@ -81,7 +84,7 @@ class ReplaceMandatoryMajorHandlerTest {
TakenLectureInventory takenLectureInventory = TakenLectureInventory.from(takenLectures);

//when
MajorExceptionHandler exceptionHandler = new ReplaceMandatoryMajorHandler();
MandatoryMajorSpecialCaseHandler exceptionHandler = new ReplaceMandatoryMandatoryMajorHandler();
MandatorySpecialCaseInformation mandatorySpecialCaseInformation = exceptionHandler.getMandatorySpecialCaseInformation(
takenLectureInventory,
mandatoryLectures, electiveLectures);
Expand Down Expand Up @@ -113,7 +116,7 @@ class ReplaceMandatoryMajorHandlerTest {
TakenLectureInventory takenLectureInventory = TakenLectureInventory.from(new HashSet<>());

//when
MajorExceptionHandler exceptionHandler = new ReplaceMandatoryMajorHandler();
MandatoryMajorSpecialCaseHandler exceptionHandler = new ReplaceMandatoryMandatoryMajorHandler();
MandatorySpecialCaseInformation mandatorySpecialCaseInformation = exceptionHandler.getMandatorySpecialCaseInformation(
takenLectureInventory,
mandatoryLectures, electiveLectures);
Expand Down

0 comments on commit 7b5a1a7

Please sign in to comment.