From 458b15c3420d1ad0698fbd69f9bac0c9dfad9840 Mon Sep 17 00:00:00 2001 From: Chaeruin Date: Wed, 12 Mar 2025 23:23:23 +0900 Subject: [PATCH 1/4] refactor day7 --- .../studycafe/tobe/StudyCafeApplication.java | 13 +- .../studycafe/tobe/StudyCafePassMachine.java | 114 ++++++++++-------- .../tobe/config/StudyCafeConfig.java | 31 +++++ .../tobe/io/ConsoleInputHandler.java | 33 +++++ .../tobe/io/ConsoleOutputHandler.java | 79 ++++++++++++ .../studycafe/tobe/io/InputHandler.java | 39 +----- .../studycafe/tobe/io/OutputHandler.java | 66 ++-------- .../tobe/model/StudyCafeLockerPass.java | 4 + .../tobe/model/StudyCafeLockerPasses.java | 18 +++ .../studycafe/tobe/model/StudyCafePass.java | 7 ++ .../tobe/model/StudyCafePassType.java | 19 ++- .../studycafe/tobe/model/StudyCafePasses.java | 27 +++++ 12 files changed, 306 insertions(+), 144 deletions(-) create mode 100644 src/main/java/cleancode/studycafe/tobe/config/StudyCafeConfig.java create mode 100644 src/main/java/cleancode/studycafe/tobe/io/ConsoleInputHandler.java create mode 100644 src/main/java/cleancode/studycafe/tobe/io/ConsoleOutputHandler.java create mode 100644 src/main/java/cleancode/studycafe/tobe/model/StudyCafeLockerPasses.java create mode 100644 src/main/java/cleancode/studycafe/tobe/model/StudyCafePasses.java diff --git a/src/main/java/cleancode/studycafe/tobe/StudyCafeApplication.java b/src/main/java/cleancode/studycafe/tobe/StudyCafeApplication.java index a60afb3f3..9f0d5a66c 100644 --- a/src/main/java/cleancode/studycafe/tobe/StudyCafeApplication.java +++ b/src/main/java/cleancode/studycafe/tobe/StudyCafeApplication.java @@ -1,9 +1,20 @@ package cleancode.studycafe.tobe; + +import cleancode.minesweeper.tobe.minesweeper.io.ConsoleInputHandler; +import cleancode.minesweeper.tobe.minesweeper.io.ConsoleOutputHandler; +import cleancode.studycafe.tobe.config.StudyCafeConfig; +import cleancode.studycafe.tobe.io.StudyCafeFileHandler; + public class StudyCafeApplication { public static void main(String[] args) { - StudyCafePassMachine studyCafePassMachine = new StudyCafePassMachine(); + StudyCafeConfig studyCafeConfig = new StudyCafeConfig( + new ConsoleInputHandler(), + new ConsoleOutputHandler(), + new StudyCafeFileHandler() + ); + StudyCafePassMachine studyCafePassMachine = new StudyCafePassMachine(studyCafeConfig); studyCafePassMachine.run(); } diff --git a/src/main/java/cleancode/studycafe/tobe/StudyCafePassMachine.java b/src/main/java/cleancode/studycafe/tobe/StudyCafePassMachine.java index 3d34d9eef..b8438d61c 100644 --- a/src/main/java/cleancode/studycafe/tobe/StudyCafePassMachine.java +++ b/src/main/java/cleancode/studycafe/tobe/StudyCafePassMachine.java @@ -1,19 +1,29 @@ package cleancode.studycafe.tobe; +import cleancode.studycafe.tobe.config.StudyCafeConfig; import cleancode.studycafe.tobe.exception.AppException; -import cleancode.studycafe.tobe.io.InputHandler; -import cleancode.studycafe.tobe.io.OutputHandler; +import cleancode.studycafe.tobe.io.ConsoleInputHandler; +import cleancode.studycafe.tobe.io.ConsoleOutputHandler; import cleancode.studycafe.tobe.io.StudyCafeFileHandler; import cleancode.studycafe.tobe.model.StudyCafeLockerPass; +import cleancode.studycafe.tobe.model.StudyCafeLockerPasses; import cleancode.studycafe.tobe.model.StudyCafePass; import cleancode.studycafe.tobe.model.StudyCafePassType; +import cleancode.studycafe.tobe.model.StudyCafePasses; import java.util.List; public class StudyCafePassMachine { - private final InputHandler inputHandler = new InputHandler(); - private final OutputHandler outputHandler = new OutputHandler(); + private final ConsoleInputHandler inputHandler; + private final ConsoleOutputHandler outputHandler; + private final StudyCafeFileHandler studyCafeFileHandler; + + public StudyCafePassMachine(final StudyCafeConfig studyCafeConfig) { + this.inputHandler = studyCafeConfig.getInputHandler(); + this.outputHandler = studyCafeConfig.getOutputHandler(); + this.studyCafeFileHandler = studyCafeConfig.getStudyCafeFileHandler(); + } public void run() { try { @@ -23,59 +33,59 @@ public void run() { outputHandler.askPassTypeSelection(); StudyCafePassType studyCafePassType = inputHandler.getPassTypeSelectingUserAction(); - if (studyCafePassType == StudyCafePassType.HOURLY) { - StudyCafeFileHandler studyCafeFileHandler = new StudyCafeFileHandler(); - List studyCafePasses = studyCafeFileHandler.readStudyCafePasses(); - List hourlyPasses = studyCafePasses.stream() - .filter(studyCafePass -> studyCafePass.getPassType() == StudyCafePassType.HOURLY) - .toList(); - outputHandler.showPassListForSelection(hourlyPasses); - StudyCafePass selectedPass = inputHandler.getSelectPass(hourlyPasses); - outputHandler.showPassOrderSummary(selectedPass, null); - } else if (studyCafePassType == StudyCafePassType.WEEKLY) { - StudyCafeFileHandler studyCafeFileHandler = new StudyCafeFileHandler(); - List studyCafePasses = studyCafeFileHandler.readStudyCafePasses(); - List weeklyPasses = studyCafePasses.stream() - .filter(studyCafePass -> studyCafePass.getPassType() == StudyCafePassType.WEEKLY) - .toList(); - outputHandler.showPassListForSelection(weeklyPasses); - StudyCafePass selectedPass = inputHandler.getSelectPass(weeklyPasses); - outputHandler.showPassOrderSummary(selectedPass, null); - } else if (studyCafePassType == StudyCafePassType.FIXED) { - StudyCafeFileHandler studyCafeFileHandler = new StudyCafeFileHandler(); - List studyCafePasses = studyCafeFileHandler.readStudyCafePasses(); - List fixedPasses = studyCafePasses.stream() - .filter(studyCafePass -> studyCafePass.getPassType() == StudyCafePassType.FIXED) - .toList(); - outputHandler.showPassListForSelection(fixedPasses); - StudyCafePass selectedPass = inputHandler.getSelectPass(fixedPasses); - - List lockerPasses = studyCafeFileHandler.readLockerPasses(); - StudyCafeLockerPass lockerPass = lockerPasses.stream() - .filter(option -> - option.getPassType() == selectedPass.getPassType() - && option.getDuration() == selectedPass.getDuration() - ) - .findFirst() - .orElse(null); - - boolean lockerSelection = false; - if (lockerPass != null) { - outputHandler.askLockerPass(lockerPass); - lockerSelection = inputHandler.getLockerSelection(); - } - - if (lockerSelection) { - outputHandler.showPassOrderSummary(selectedPass, lockerPass); - } else { - outputHandler.showPassOrderSummary(selectedPass, null); - } + StudyCafePasses studyCafePasses = new StudyCafePasses(studyCafeFileHandler.readStudyCafePasses()); + + if (doesUserChooseHourly(studyCafePassType)) { + permit(studyCafePasses, StudyCafePassType.HOURLY); + } + if (doesUserChooseWeekly(studyCafePassType)) { + permit(studyCafePasses, StudyCafePassType.WEEKLY); + } + if (doesUserChooseFixed(studyCafePassType)) { + permit(studyCafePasses, StudyCafePassType.FIXED); } } catch (AppException e) { - outputHandler.showSimpleMessage(e.getMessage()); + outputHandler.showExceptionMessage(e); } catch (Exception e) { outputHandler.showSimpleMessage("알 수 없는 오류가 발생했습니다."); } } + private void permit(StudyCafePasses studyCafePasses, StudyCafePassType studyCafePassType) { + StudyCafePasses passes = studyCafePasses.getStudyCafePassesByPassType(studyCafePassType); + outputHandler.showPassListSelection(passes); + StudyCafePass selectedPass = inputHandler.getSelectPass(passes); + if (studyCafePassType == StudyCafePassType.FIXED) { + checkLockerPass(selectedPass); + return; + } + outputHandler.showPassOrderSummary(selectedPass, null); + } + + private void checkLockerPass(StudyCafePass selectedPass) { + StudyCafeLockerPasses lockerPasses = new StudyCafeLockerPasses(studyCafeFileHandler.readLockerPasses()); + StudyCafeLockerPass lockerPass = lockerPasses.getLockerPassByCafePassTypeAndDuration(selectedPass); + + outputHandler.askLockerPass(lockerPass); + boolean lockerSelection = inputHandler.getLockerSelection(); + + if (lockerSelection) { + outputHandler.showPassOrderSummary(selectedPass, lockerPass); + return; + } + outputHandler.showPassOrderSummary(selectedPass, null); + } + + private boolean doesUserChooseFixed(StudyCafePassType studyCafePassType) { + return studyCafePassType == StudyCafePassType.FIXED; + } + + private boolean doesUserChooseWeekly(StudyCafePassType studyCafePassType) { + return studyCafePassType == StudyCafePassType.WEEKLY; + } + + private boolean doesUserChooseHourly(StudyCafePassType studyCafePassType) { + return studyCafePassType == StudyCafePassType.HOURLY; + } + } diff --git a/src/main/java/cleancode/studycafe/tobe/config/StudyCafeConfig.java b/src/main/java/cleancode/studycafe/tobe/config/StudyCafeConfig.java new file mode 100644 index 000000000..14f9a2753 --- /dev/null +++ b/src/main/java/cleancode/studycafe/tobe/config/StudyCafeConfig.java @@ -0,0 +1,31 @@ +package cleancode.studycafe.tobe.config; + + +import cleancode.studycafe.tobe.io.ConsoleInputHandler; +import cleancode.studycafe.tobe.io.ConsoleOutputHandler; +import cleancode.studycafe.tobe.io.StudyCafeFileHandler; + +public class StudyCafeConfig { + + private final ConsoleInputHandler inputHandler; + private final ConsoleOutputHandler outputHandler; + private final StudyCafeFileHandler studyCafeFileHandler; + + public StudyCafeConfig(final ConsoleInputHandler inputHandler, final ConsoleOutputHandler outputHandler, final StudyCafeFileHandler studyCafeFileHandler) { + this.inputHandler = inputHandler; + this.outputHandler = outputHandler; + this.studyCafeFileHandler = studyCafeFileHandler; + } + + public ConsoleInputHandler getInputHandler() { + return inputHandler; + } + + public ConsoleOutputHandler getOutputHandler() { + return outputHandler; + } + + public StudyCafeFileHandler getStudyCafeFileHandler() { + return studyCafeFileHandler; + } +} \ No newline at end of file diff --git a/src/main/java/cleancode/studycafe/tobe/io/ConsoleInputHandler.java b/src/main/java/cleancode/studycafe/tobe/io/ConsoleInputHandler.java new file mode 100644 index 000000000..eaa8a2a3b --- /dev/null +++ b/src/main/java/cleancode/studycafe/tobe/io/ConsoleInputHandler.java @@ -0,0 +1,33 @@ +package cleancode.studycafe.tobe.io; + +import cleancode.studycafe.tobe.model.StudyCafePass; +import cleancode.studycafe.tobe.model.StudyCafePassType; + +import cleancode.studycafe.tobe.model.StudyCafePasses; +import java.util.Scanner; + + +public class ConsoleInputHandler implements InputHandler { + + private static final Scanner SCANNER = new Scanner(System.in); + + @Override + public StudyCafePassType getPassTypeSelectingUserAction() { + String userInput = SCANNER.nextLine(); + return StudyCafePassType.from(userInput); + } + + @Override + public StudyCafePass getSelectPass(StudyCafePasses passes) { + String userInput = SCANNER.nextLine(); + int selectedIndex = Integer.parseInt(userInput) - 1; + return passes.getStudyCafePass(selectedIndex); + } + + @Override + public boolean getLockerSelection() { + String userInput = SCANNER.nextLine(); + return "1".equals(userInput); + } + +} diff --git a/src/main/java/cleancode/studycafe/tobe/io/ConsoleOutputHandler.java b/src/main/java/cleancode/studycafe/tobe/io/ConsoleOutputHandler.java new file mode 100644 index 000000000..476d28e5d --- /dev/null +++ b/src/main/java/cleancode/studycafe/tobe/io/ConsoleOutputHandler.java @@ -0,0 +1,79 @@ +package cleancode.studycafe.tobe.io; + +import cleancode.studycafe.tobe.exception.AppException; +import cleancode.studycafe.tobe.model.StudyCafeLockerPass; +import cleancode.studycafe.tobe.model.StudyCafePass; + +import cleancode.studycafe.tobe.model.StudyCafePasses; +import java.util.List; + +public class ConsoleOutputHandler implements OutputHandler { + + @Override + public void showWelcomeMessage() { + System.out.println("*** 프리미엄 스터디카페 ***"); + } + + @Override + public void showAnnouncement() { + System.out.println("* 사물함은 고정석 선택 시 이용 가능합니다. (추가 결제)"); + System.out.println("* !오픈 이벤트! 2주권 이상 결제 시 10% 할인, 12주권 결제 시 15% 할인! (결제 시 적용)"); + System.out.println(); + } + + @Override + public void askPassTypeSelection() { + System.out.println("사용하실 이용권을 선택해 주세요."); + System.out.println("1. 시간 이용권(자유석) | 2. 주단위 이용권(자유석) | 3. 1인 고정석"); + } + + @Override + public void showPassListSelection(StudyCafePasses passes) { + System.out.println(); + System.out.println("이용권 목록"); + for (int index = 0; index < passes.getSize(); index++) { + StudyCafePass pass = passes.getStudyCafePass(index); + System.out.println(String.format("%s. ", index + 1) + pass.display()); + } + } + + @Override + public void askLockerPass(StudyCafeLockerPass lockerPass) { + System.out.println(); + String askMessage = String.format( + "사물함을 이용하시겠습니까? (%s)", + lockerPass.display() + ); + + System.out.println(askMessage); + System.out.println("1. 예 | 2. 아니오"); + } + + public void showPassOrderSummary(StudyCafePass selectedPass, StudyCafeLockerPass lockerPass) { + System.out.println(); + System.out.println("이용 내역"); + System.out.println("이용권: " + selectedPass.display()); + if (lockerPass != null) { + System.out.println("사물함: " + lockerPass.display()); + } + + int discountPrice = selectedPass.getDiscountPrice(); + if (discountPrice > 0) { + System.out.println("이벤트 할인 금액: " + discountPrice + "원"); + } + + int totalPrice = selectedPass.getPrice() - discountPrice + (lockerPass != null ? lockerPass.getPrice() : 0); + System.out.println("총 결제 금액: " + totalPrice + "원"); + System.out.println(); + } + + public void showSimpleMessage(String message) { + System.out.println(message); + } + + @Override + public void showExceptionMessage(AppException exception) { + System.out.println(exception.getMessage()); + } + +} diff --git a/src/main/java/cleancode/studycafe/tobe/io/InputHandler.java b/src/main/java/cleancode/studycafe/tobe/io/InputHandler.java index 2f1ceb64d..ffb23f8d9 100644 --- a/src/main/java/cleancode/studycafe/tobe/io/InputHandler.java +++ b/src/main/java/cleancode/studycafe/tobe/io/InputHandler.java @@ -1,40 +1,13 @@ package cleancode.studycafe.tobe.io; -import cleancode.studycafe.tobe.exception.AppException; -import cleancode.studycafe.tobe.model.StudyCafePass; import cleancode.studycafe.tobe.model.StudyCafePassType; +import cleancode.studycafe.tobe.model.StudyCafePass; +import cleancode.studycafe.tobe.model.StudyCafePasses; -import java.util.List; -import java.util.Scanner; - -public class InputHandler { - - private static final Scanner SCANNER = new Scanner(System.in); - - public StudyCafePassType getPassTypeSelectingUserAction() { - String userInput = SCANNER.nextLine(); - - if ("1".equals(userInput)) { - return StudyCafePassType.HOURLY; - } - if ("2".equals(userInput)) { - return StudyCafePassType.WEEKLY; - } - if ("3".equals(userInput)) { - return StudyCafePassType.FIXED; - } - throw new AppException("잘못된 입력입니다."); - } - - public StudyCafePass getSelectPass(List passes) { - String userInput = SCANNER.nextLine(); - int selectedIndex = Integer.parseInt(userInput) - 1; - return passes.get(selectedIndex); - } +public interface InputHandler { + StudyCafePassType getPassTypeSelectingUserAction(); - public boolean getLockerSelection() { - String userInput = SCANNER.nextLine(); - return "1".equals(userInput); - } + StudyCafePass getSelectPass(StudyCafePasses passes); + boolean getLockerSelection(); } diff --git a/src/main/java/cleancode/studycafe/tobe/io/OutputHandler.java b/src/main/java/cleancode/studycafe/tobe/io/OutputHandler.java index d8e0181a4..5188daf9f 100644 --- a/src/main/java/cleancode/studycafe/tobe/io/OutputHandler.java +++ b/src/main/java/cleancode/studycafe/tobe/io/OutputHandler.java @@ -1,68 +1,26 @@ package cleancode.studycafe.tobe.io; +import cleancode.studycafe.tobe.exception.AppException; import cleancode.studycafe.tobe.model.StudyCafeLockerPass; import cleancode.studycafe.tobe.model.StudyCafePass; +import cleancode.studycafe.tobe.model.StudyCafePasses; -import java.util.List; +public interface OutputHandler { -public class OutputHandler { + void showWelcomeMessage(); - public void showWelcomeMessage() { - System.out.println("*** 프리미엄 스터디카페 ***"); - } + void showAnnouncement(); - public void showAnnouncement() { - System.out.println("* 사물함은 고정석 선택 시 이용 가능합니다. (추가 결제)"); - System.out.println("* !오픈 이벤트! 2주권 이상 결제 시 10% 할인, 12주권 결제 시 15% 할인! (결제 시 적용)"); - System.out.println(); - } + void askPassTypeSelection(); - public void askPassTypeSelection() { - System.out.println("사용하실 이용권을 선택해 주세요."); - System.out.println("1. 시간 이용권(자유석) | 2. 주단위 이용권(자유석) | 3. 1인 고정석"); - } + void showPassListSelection(StudyCafePasses passes); - public void showPassListForSelection(List passes) { - System.out.println(); - System.out.println("이용권 목록"); - for (int index = 0; index < passes.size(); index++) { - StudyCafePass pass = passes.get(index); - System.out.println(String.format("%s. ", index + 1) + pass.display()); - } - } + void askLockerPass(StudyCafeLockerPass lockerPass); - public void askLockerPass(StudyCafeLockerPass lockerPass) { - System.out.println(); - String askMessage = String.format( - "사물함을 이용하시겠습니까? (%s)", - lockerPass.display() - ); + void showPassOrderSummary(StudyCafePass selectedPass, StudyCafeLockerPass lockerPass); - System.out.println(askMessage); - System.out.println("1. 예 | 2. 아니오"); - } + void showSimpleMessage(String message); - public void showPassOrderSummary(StudyCafePass selectedPass, StudyCafeLockerPass lockerPass) { - System.out.println(); - System.out.println("이용 내역"); - System.out.println("이용권: " + selectedPass.display()); - if (lockerPass != null) { - System.out.println("사물함: " + lockerPass.display()); - } + void showExceptionMessage(AppException exception); - double discountRate = selectedPass.getDiscountRate(); - int discountPrice = (int) (selectedPass.getPrice() * discountRate); - if (discountPrice > 0) { - System.out.println("이벤트 할인 금액: " + discountPrice + "원"); - } - - int totalPrice = selectedPass.getPrice() - discountPrice + (lockerPass != null ? lockerPass.getPrice() : 0); - System.out.println("총 결제 금액: " + totalPrice + "원"); - System.out.println(); - } - - public void showSimpleMessage(String message) { - System.out.println(message); - } - -} +} \ No newline at end of file diff --git a/src/main/java/cleancode/studycafe/tobe/model/StudyCafeLockerPass.java b/src/main/java/cleancode/studycafe/tobe/model/StudyCafeLockerPass.java index 6512ec0a8..69ea7a781 100644 --- a/src/main/java/cleancode/studycafe/tobe/model/StudyCafeLockerPass.java +++ b/src/main/java/cleancode/studycafe/tobe/model/StudyCafeLockerPass.java @@ -41,4 +41,8 @@ public String display() { return ""; } + public boolean isSamePassTypeAndDuration(StudyCafePass selectedPass) { + return passType == selectedPass.getPassType() + && duration == selectedPass.getDuration(); + } } diff --git a/src/main/java/cleancode/studycafe/tobe/model/StudyCafeLockerPasses.java b/src/main/java/cleancode/studycafe/tobe/model/StudyCafeLockerPasses.java new file mode 100644 index 000000000..35e8a9ada --- /dev/null +++ b/src/main/java/cleancode/studycafe/tobe/model/StudyCafeLockerPasses.java @@ -0,0 +1,18 @@ +package cleancode.studycafe.tobe.model; + +import cleancode.studycafe.tobe.exception.AppException; +import java.util.List; + +public class StudyCafeLockerPasses { + private final List studyCafeLockerPasses; + public StudyCafeLockerPasses(List studyCafeLockerPasses) { + this.studyCafeLockerPasses = studyCafeLockerPasses; + } + + public StudyCafeLockerPass getLockerPassByCafePassTypeAndDuration(StudyCafePass selectedPass) { + return studyCafeLockerPasses.stream() + .filter(option -> option.isSamePassTypeAndDuration(selectedPass)) + .findFirst() + .orElseThrow(() -> new AppException("조건에 맞는 사물함이 없습니다.")); + } +} diff --git a/src/main/java/cleancode/studycafe/tobe/model/StudyCafePass.java b/src/main/java/cleancode/studycafe/tobe/model/StudyCafePass.java index 0749f41b8..83d1b30c2 100644 --- a/src/main/java/cleancode/studycafe/tobe/model/StudyCafePass.java +++ b/src/main/java/cleancode/studycafe/tobe/model/StudyCafePass.java @@ -47,4 +47,11 @@ public String display() { return ""; } + public int getDiscountPrice() { + return (int) (this.price * discountRate); + } + + public boolean isSamePassTypeWith(StudyCafePassType studyCafePassType) { + return passType == studyCafePassType; + } } diff --git a/src/main/java/cleancode/studycafe/tobe/model/StudyCafePassType.java b/src/main/java/cleancode/studycafe/tobe/model/StudyCafePassType.java index bac959b4f..27524a163 100644 --- a/src/main/java/cleancode/studycafe/tobe/model/StudyCafePassType.java +++ b/src/main/java/cleancode/studycafe/tobe/model/StudyCafePassType.java @@ -1,15 +1,26 @@ package cleancode.studycafe.tobe.model; +import cleancode.studycafe.asis.exception.AppException; +import java.util.Arrays; + public enum StudyCafePassType { - HOURLY("시간 단위 이용권"), - WEEKLY("주 단위 이용권"), - FIXED("1인 고정석"); + HOURLY("1", "시간 단위 이용권"), + WEEKLY("2", "주 단위 이용권"), + FIXED("3", "1인 고정석"); + private final String commandNumber; private final String description; - StudyCafePassType(String description) { + StudyCafePassType(String commandNumber, String description) { + this.commandNumber = commandNumber; this.description = description; } + public static StudyCafePassType from(String userInput) { + return Arrays.stream(StudyCafePassType.values()) + .filter(studyCafePassType -> studyCafePassType.commandNumber.equals(userInput)) + .findAny() + .orElseThrow(() -> new AppException("잘못된 커맨드 입력입니다.")); + } } diff --git a/src/main/java/cleancode/studycafe/tobe/model/StudyCafePasses.java b/src/main/java/cleancode/studycafe/tobe/model/StudyCafePasses.java new file mode 100644 index 000000000..0d764ff48 --- /dev/null +++ b/src/main/java/cleancode/studycafe/tobe/model/StudyCafePasses.java @@ -0,0 +1,27 @@ +package cleancode.studycafe.tobe.model; + +import java.util.List; + +public class StudyCafePasses { + + private final List studyCafePasses; + + public StudyCafePasses(List studyCafePasses) { + this.studyCafePasses = studyCafePasses; + } + + public StudyCafePass getStudyCafePass(int index) { + return studyCafePasses.get(index); + } + + public int getSize() { + return this.studyCafePasses.size(); + } + + public StudyCafePasses getStudyCafePassesByPassType(StudyCafePassType studyCafePassType) { + final List passesByPassType = studyCafePasses.stream() + .filter(studyCafePass -> studyCafePass.isSamePassTypeWith(studyCafePassType)) + .toList(); + return new StudyCafePasses(passesByPassType); + } +} From 337f0f26750e6337eb12d36f63185e0b86d5e849 Mon Sep 17 00:00:00 2001 From: Chaeruin Date: Thu, 13 Mar 2025 13:01:19 +0900 Subject: [PATCH 2/4] refactor --- .../studycafe/asis/StudyCafeApplication.java | 12 +- .../studycafe/asis/StudyCafePassMachine.java | 131 +++++++++--------- .../studycafe/asis/io/InputHandler.java | 8 +- .../studycafe/asis/io/OutputHandler.java | 52 +++++-- .../asis/io/StudyCafeFileHandler.java | 56 -------- .../studycafe/asis/io/StudyCafeIOHandler.java | 48 +++++++ .../io/provider/LockerPassFileReader.java | 38 +++++ .../asis/io/provider/SeatPassFileReader.java | 40 ++++++ .../cleancode/studycafe/asis/model/.DS_Store | Bin 0 -> 6148 bytes .../studycafe/asis/model/StudyCafePass.java | 50 ------- .../asis/model/StudyCafePassType.java | 15 -- .../asis/model/order/StudyCafePassOrder.java | 41 ++++++ .../asis/model/pass/StudyCafePass.java | 11 ++ .../asis/model/pass/StudyCafePassType.java | 27 ++++ .../asis/model/pass/StudyCafeSeatPass.java | 55 ++++++++ .../asis/model/pass/StudyCafeSeatPasses.java | 23 +++ .../locker}/StudyCafeLockerPass.java | 31 +++-- .../pass/locker/StudyCafeLockerPasses.java | 26 ++++ .../asis/provider/LockerPassProvider.java | 9 ++ .../asis/provider/SeatPassProvider.java | 9 ++ 20 files changed, 462 insertions(+), 220 deletions(-) delete mode 100644 src/main/java/cleancode/studycafe/asis/io/StudyCafeFileHandler.java create mode 100644 src/main/java/cleancode/studycafe/asis/io/StudyCafeIOHandler.java create mode 100644 src/main/java/cleancode/studycafe/asis/io/provider/LockerPassFileReader.java create mode 100644 src/main/java/cleancode/studycafe/asis/io/provider/SeatPassFileReader.java create mode 100644 src/main/java/cleancode/studycafe/asis/model/.DS_Store delete mode 100644 src/main/java/cleancode/studycafe/asis/model/StudyCafePass.java delete mode 100644 src/main/java/cleancode/studycafe/asis/model/StudyCafePassType.java create mode 100644 src/main/java/cleancode/studycafe/asis/model/order/StudyCafePassOrder.java create mode 100644 src/main/java/cleancode/studycafe/asis/model/pass/StudyCafePass.java create mode 100644 src/main/java/cleancode/studycafe/asis/model/pass/StudyCafePassType.java create mode 100644 src/main/java/cleancode/studycafe/asis/model/pass/StudyCafeSeatPass.java create mode 100644 src/main/java/cleancode/studycafe/asis/model/pass/StudyCafeSeatPasses.java rename src/main/java/cleancode/studycafe/asis/model/{ => pass/locker}/StudyCafeLockerPass.java (56%) create mode 100644 src/main/java/cleancode/studycafe/asis/model/pass/locker/StudyCafeLockerPasses.java create mode 100644 src/main/java/cleancode/studycafe/asis/provider/LockerPassProvider.java create mode 100644 src/main/java/cleancode/studycafe/asis/provider/SeatPassProvider.java diff --git a/src/main/java/cleancode/studycafe/asis/StudyCafeApplication.java b/src/main/java/cleancode/studycafe/asis/StudyCafeApplication.java index ce537a3c7..d94455b8c 100644 --- a/src/main/java/cleancode/studycafe/asis/StudyCafeApplication.java +++ b/src/main/java/cleancode/studycafe/asis/StudyCafeApplication.java @@ -1,9 +1,19 @@ package cleancode.studycafe.asis; +import cleancode.studycafe.tobe.io.provider.LockerPassFileReader; +import cleancode.studycafe.tobe.io.provider.SeatPassFileReader; +import cleancode.studycafe.tobe.provider.LockerPassProvider; +import cleancode.studycafe.tobe.provider.SeatPassProvider; + public class StudyCafeApplication { public static void main(String[] args) { - StudyCafePassMachine studyCafePassMachine = new StudyCafePassMachine(); + SeatPassProvider seatPassProvider = new SeatPassFileReader(); + LockerPassProvider lockerPassProvider = new LockerPassFileReader(); + + StudyCafePassMachine studyCafePassMachine = new StudyCafePassMachine( + seatPassProvider, lockerPassProvider + ); studyCafePassMachine.run(); } diff --git a/src/main/java/cleancode/studycafe/asis/StudyCafePassMachine.java b/src/main/java/cleancode/studycafe/asis/StudyCafePassMachine.java index 1e910a5f2..15be658a7 100644 --- a/src/main/java/cleancode/studycafe/asis/StudyCafePassMachine.java +++ b/src/main/java/cleancode/studycafe/asis/StudyCafePassMachine.java @@ -1,81 +1,82 @@ package cleancode.studycafe.asis; -import cleancode.studycafe.asis.exception.AppException; -import cleancode.studycafe.asis.io.InputHandler; -import cleancode.studycafe.asis.io.OutputHandler; -import cleancode.studycafe.asis.io.StudyCafeFileHandler; -import cleancode.studycafe.asis.model.StudyCafeLockerPass; -import cleancode.studycafe.asis.model.StudyCafePass; -import cleancode.studycafe.asis.model.StudyCafePassType; +import cleancode.studycafe.tobe.exception.AppException; +import cleancode.studycafe.tobe.io.StudyCafeIOHandler; +import cleancode.studycafe.tobe.model.order.StudyCafePassOrder; +import cleancode.studycafe.tobe.model.pass.*; +import cleancode.studycafe.tobe.model.pass.locker.StudyCafeLockerPass; +import cleancode.studycafe.tobe.model.pass.locker.StudyCafeLockerPasses; +import cleancode.studycafe.tobe.provider.LockerPassProvider; +import cleancode.studycafe.tobe.provider.SeatPassProvider; import java.util.List; +import java.util.Optional; public class StudyCafePassMachine { - private final InputHandler inputHandler = new InputHandler(); - private final OutputHandler outputHandler = new OutputHandler(); + private final StudyCafeIOHandler ioHandler = new StudyCafeIOHandler(); + private final SeatPassProvider seatPassProvider; + private final LockerPassProvider lockerPassProvider; + + public StudyCafePassMachine(SeatPassProvider seatPassProvider, LockerPassProvider lockerPassProvider) { + this.seatPassProvider = seatPassProvider; + this.lockerPassProvider = lockerPassProvider; + } public void run() { try { - outputHandler.showWelcomeMessage(); - outputHandler.showAnnouncement(); - - outputHandler.askPassTypeSelection(); - StudyCafePassType studyCafePassType = inputHandler.getPassTypeSelectingUserAction(); - - if (studyCafePassType == StudyCafePassType.HOURLY) { - StudyCafeFileHandler studyCafeFileHandler = new StudyCafeFileHandler(); - List studyCafePasses = studyCafeFileHandler.readStudyCafePasses(); - List hourlyPasses = studyCafePasses.stream() - .filter(studyCafePass -> studyCafePass.getPassType() == StudyCafePassType.HOURLY) - .toList(); - outputHandler.showPassListForSelection(hourlyPasses); - StudyCafePass selectedPass = inputHandler.getSelectPass(hourlyPasses); - outputHandler.showPassOrderSummary(selectedPass, null); - } else if (studyCafePassType == StudyCafePassType.WEEKLY) { - StudyCafeFileHandler studyCafeFileHandler = new StudyCafeFileHandler(); - List studyCafePasses = studyCafeFileHandler.readStudyCafePasses(); - List weeklyPasses = studyCafePasses.stream() - .filter(studyCafePass -> studyCafePass.getPassType() == StudyCafePassType.WEEKLY) - .toList(); - outputHandler.showPassListForSelection(weeklyPasses); - StudyCafePass selectedPass = inputHandler.getSelectPass(weeklyPasses); - outputHandler.showPassOrderSummary(selectedPass, null); - } else if (studyCafePassType == StudyCafePassType.FIXED) { - StudyCafeFileHandler studyCafeFileHandler = new StudyCafeFileHandler(); - List studyCafePasses = studyCafeFileHandler.readStudyCafePasses(); - List fixedPasses = studyCafePasses.stream() - .filter(studyCafePass -> studyCafePass.getPassType() == StudyCafePassType.FIXED) - .toList(); - outputHandler.showPassListForSelection(fixedPasses); - StudyCafePass selectedPass = inputHandler.getSelectPass(fixedPasses); - - List lockerPasses = studyCafeFileHandler.readLockerPasses(); - StudyCafeLockerPass lockerPass = lockerPasses.stream() - .filter(option -> - option.getPassType() == selectedPass.getPassType() - && option.getDuration() == selectedPass.getDuration() - ) - .findFirst() - .orElse(null); - - boolean lockerSelection = false; - if (lockerPass != null) { - outputHandler.askLockerPass(lockerPass); - lockerSelection = inputHandler.getLockerSelection(); - } - - if (lockerSelection) { - outputHandler.showPassOrderSummary(selectedPass, lockerPass); - } else { - outputHandler.showPassOrderSummary(selectedPass, null); - } - } + ioHandler.showWelcomeMessage(); + ioHandler.showAnnouncement(); + + StudyCafeSeatPass selectedPass = selectPass(); + Optional optionalLockerPass = selectLockerPass(selectedPass); + StudyCafePassOrder passOrder = StudyCafePassOrder.of( + selectedPass, + optionalLockerPass.orElse(null) + ); + + ioHandler.showPassOrderSummary(passOrder); } catch (AppException e) { - outputHandler.showSimpleMessage(e.getMessage()); + ioHandler.showSimpleMessage(e.getMessage()); } catch (Exception e) { - outputHandler.showSimpleMessage("알 수 없는 오류가 발생했습니다."); + ioHandler.showSimpleMessage("알 수 없는 오류가 발생했습니다."); } } + private StudyCafeSeatPass selectPass() { + StudyCafePassType passType = ioHandler.askPassTypeSelecting(); + List passCandidates = findPassCandidatesBy(passType); + + return ioHandler.askPassSelecting(passCandidates); + } + + private List findPassCandidatesBy(StudyCafePassType studyCafePassType) { + StudyCafeSeatPasses allPasses = seatPassProvider.getSeatPasses(); + return allPasses.findPassBy(studyCafePassType); + } + + private Optional selectLockerPass(StudyCafeSeatPass selectedPass) { + if (selectedPass.cannotUseLocker()) { + return Optional.empty(); + } + + Optional lockerPassCandidate = findLockerPassCandidateBy(selectedPass); + + if (lockerPassCandidate.isPresent()) { + StudyCafeLockerPass lockerPass = lockerPassCandidate.get(); + + boolean isLockerSelected = ioHandler.askLockerPass(lockerPass); + if (isLockerSelected) { + return Optional.of(lockerPass); + } + } + + return Optional.empty(); + } + + private Optional findLockerPassCandidateBy(StudyCafeSeatPass pass) { + StudyCafeLockerPasses allLockerPasses = lockerPassProvider.getLockerPasses(); + return allLockerPasses.findLockerPassBy(pass); + } + } diff --git a/src/main/java/cleancode/studycafe/asis/io/InputHandler.java b/src/main/java/cleancode/studycafe/asis/io/InputHandler.java index 909549b1c..b7182c6b6 100644 --- a/src/main/java/cleancode/studycafe/asis/io/InputHandler.java +++ b/src/main/java/cleancode/studycafe/asis/io/InputHandler.java @@ -1,8 +1,8 @@ package cleancode.studycafe.asis.io; -import cleancode.studycafe.asis.exception.AppException; -import cleancode.studycafe.asis.model.StudyCafePass; -import cleancode.studycafe.asis.model.StudyCafePassType; +import cleancode.studycafe.tobe.exception.AppException; +import cleancode.studycafe.tobe.model.pass.StudyCafeSeatPass; +import cleancode.studycafe.tobe.model.pass.StudyCafePassType; import java.util.List; import java.util.Scanner; @@ -26,7 +26,7 @@ public StudyCafePassType getPassTypeSelectingUserAction() { throw new AppException("잘못된 입력입니다."); } - public StudyCafePass getSelectPass(List passes) { + public StudyCafeSeatPass getSelectPass(List passes) { String userInput = SCANNER.nextLine(); int selectedIndex = Integer.parseInt(userInput) - 1; return passes.get(selectedIndex); diff --git a/src/main/java/cleancode/studycafe/asis/io/OutputHandler.java b/src/main/java/cleancode/studycafe/asis/io/OutputHandler.java index 7c00b98ba..b1d4f16f1 100644 --- a/src/main/java/cleancode/studycafe/asis/io/OutputHandler.java +++ b/src/main/java/cleancode/studycafe/asis/io/OutputHandler.java @@ -1,9 +1,13 @@ package cleancode.studycafe.asis.io; -import cleancode.studycafe.asis.model.StudyCafeLockerPass; -import cleancode.studycafe.asis.model.StudyCafePass; +import cleancode.studycafe.tobe.model.order.StudyCafePassOrder; +import cleancode.studycafe.tobe.model.pass.StudyCafePass; +import cleancode.studycafe.tobe.model.pass.StudyCafePassType; +import cleancode.studycafe.tobe.model.pass.StudyCafeSeatPass; +import cleancode.studycafe.tobe.model.pass.locker.StudyCafeLockerPass; import java.util.List; +import java.util.Optional; public class OutputHandler { @@ -22,12 +26,12 @@ public void askPassTypeSelection() { System.out.println("1. 시간 이용권(자유석) | 2. 주단위 이용권(자유석) | 3. 1인 고정석"); } - public void showPassListForSelection(List passes) { + public void showPassListForSelection(List passes) { System.out.println(); System.out.println("이용권 목록"); for (int index = 0; index < passes.size(); index++) { - StudyCafePass pass = passes.get(index); - System.out.println(String.format("%s. ", index + 1) + pass.display()); + StudyCafeSeatPass pass = passes.get(index); + System.out.println(String.format("%s. ", index + 1) + display(pass)); } } @@ -35,28 +39,31 @@ public void askLockerPass(StudyCafeLockerPass lockerPass) { System.out.println(); String askMessage = String.format( "사물함을 이용하시겠습니까? (%s)", - lockerPass.display() + display(lockerPass) ); System.out.println(askMessage); System.out.println("1. 예 | 2. 아니오"); } - public void showPassOrderSummary(StudyCafePass selectedPass, StudyCafeLockerPass lockerPass) { + public void showPassOrderSummary(StudyCafePassOrder passOrder) { + StudyCafeSeatPass selectedPass = passOrder.getSeatPass(); + Optional optionalLockerPass = passOrder.getLockerPass(); + System.out.println(); System.out.println("이용 내역"); - System.out.println("이용권: " + selectedPass.display()); - if (lockerPass != null) { - System.out.println("사물함: " + lockerPass.display()); - } + System.out.println("이용권: " + display(selectedPass)); - double discountRate = selectedPass.getDiscountRate(); - int discountPrice = (int) (selectedPass.getPrice() * discountRate); + optionalLockerPass.ifPresent(lockerPass -> + System.out.println("사물함: " + display(lockerPass)) + ); + + int discountPrice = passOrder.getDiscountPrice(); if (discountPrice > 0) { System.out.println("이벤트 할인 금액: " + discountPrice + "원"); } - int totalPrice = selectedPass.getPrice() - discountPrice + (lockerPass != null ? lockerPass.getPrice() : 0); + int totalPrice = passOrder.getTotalPrice(); System.out.println("총 결제 금액: " + totalPrice + "원"); System.out.println(); } @@ -65,4 +72,21 @@ public void showSimpleMessage(String message) { System.out.println(message); } + private String display(StudyCafePass pass) { + StudyCafePassType passType = pass.getPassType(); + int duration = pass.getDuration(); + int price = pass.getPrice(); + + if (passType == StudyCafePassType.HOURLY) { + return String.format("%s시간권 - %d원", duration, price); + } + if (passType == StudyCafePassType.WEEKLY) { + return String.format("%s주권 - %d원", duration, price); + } + if (passType == StudyCafePassType.FIXED) { + return String.format("%s주권 - %d원", duration, price); + } + return ""; + } + } diff --git a/src/main/java/cleancode/studycafe/asis/io/StudyCafeFileHandler.java b/src/main/java/cleancode/studycafe/asis/io/StudyCafeFileHandler.java deleted file mode 100644 index 1dc0328f6..000000000 --- a/src/main/java/cleancode/studycafe/asis/io/StudyCafeFileHandler.java +++ /dev/null @@ -1,56 +0,0 @@ -package cleancode.studycafe.asis.io; - -import java.io.IOException; -import java.nio.file.Files; -import java.nio.file.Paths; -import java.util.ArrayList; -import java.util.List; - -import cleancode.studycafe.asis.model.StudyCafeLockerPass; -import cleancode.studycafe.asis.model.StudyCafePass; -import cleancode.studycafe.asis.model.StudyCafePassType; - -public class StudyCafeFileHandler { - - public List readStudyCafePasses() { - try { - List lines = Files.readAllLines(Paths.get("src/main/resources/cleancode/studycafe/pass-list.csv")); - List studyCafePasses = new ArrayList<>(); - for (String line : lines) { - String[] values = line.split(","); - StudyCafePassType studyCafePassType = StudyCafePassType.valueOf(values[0]); - int duration = Integer.parseInt(values[1]); - int price = Integer.parseInt(values[2]); - double discountRate = Double.parseDouble(values[3]); - - StudyCafePass studyCafePass = StudyCafePass.of(studyCafePassType, duration, price, discountRate); - studyCafePasses.add(studyCafePass); - } - - return studyCafePasses; - } catch (IOException e) { - throw new RuntimeException("파일을 읽는데 실패했습니다.", e); - } - } - - public List readLockerPasses() { - try { - List lines = Files.readAllLines(Paths.get("src/main/resources/cleancode/studycafe/locker.csv")); - List lockerPasses = new ArrayList<>(); - for (String line : lines) { - String[] values = line.split(","); - StudyCafePassType studyCafePassType = StudyCafePassType.valueOf(values[0]); - int duration = Integer.parseInt(values[1]); - int price = Integer.parseInt(values[2]); - - StudyCafeLockerPass lockerPass = StudyCafeLockerPass.of(studyCafePassType, duration, price); - lockerPasses.add(lockerPass); - } - - return lockerPasses; - } catch (IOException e) { - throw new RuntimeException("파일을 읽는데 실패했습니다.", e); - } - } - -} diff --git a/src/main/java/cleancode/studycafe/asis/io/StudyCafeIOHandler.java b/src/main/java/cleancode/studycafe/asis/io/StudyCafeIOHandler.java new file mode 100644 index 000000000..d9e7270f0 --- /dev/null +++ b/src/main/java/cleancode/studycafe/asis/io/StudyCafeIOHandler.java @@ -0,0 +1,48 @@ +package cleancode.studycafe.asis.io; + +import cleancode.studycafe.tobe.io.InputHandler; +import cleancode.studycafe.tobe.io.OutputHandler; +import cleancode.studycafe.tobe.model.order.StudyCafePassOrder; +import cleancode.studycafe.tobe.model.pass.locker.StudyCafeLockerPass; +import cleancode.studycafe.tobe.model.pass.StudyCafeSeatPass; +import cleancode.studycafe.tobe.model.pass.StudyCafePassType; + +import java.util.List; + +public class StudyCafeIOHandler { + + private final cleancode.studycafe.tobe.io.InputHandler inputHandler = new InputHandler(); + private final cleancode.studycafe.tobe.io.OutputHandler outputHandler = new OutputHandler(); + + public void showWelcomeMessage() { + outputHandler.showWelcomeMessage(); + } + + public void showAnnouncement() { + outputHandler.showAnnouncement(); + } + + public void showPassOrderSummary(StudyCafePassOrder passOrder) { + outputHandler.showPassOrderSummary(passOrder); + } + + public void showSimpleMessage(String message) { + outputHandler.showSimpleMessage(message); + } + + public StudyCafePassType askPassTypeSelecting() { + outputHandler.askPassTypeSelection(); + return inputHandler.getPassTypeSelectingUserAction(); + } + + public StudyCafeSeatPass askPassSelecting(List passCandidates) { + outputHandler.showPassListForSelection(passCandidates); + return inputHandler.getSelectPass(passCandidates); + } + + public boolean askLockerPass(StudyCafeLockerPass lockerPassCandidate) { + outputHandler.askLockerPass(lockerPassCandidate); + return inputHandler.getLockerSelection(); + } + +} diff --git a/src/main/java/cleancode/studycafe/asis/io/provider/LockerPassFileReader.java b/src/main/java/cleancode/studycafe/asis/io/provider/LockerPassFileReader.java new file mode 100644 index 000000000..1b193316b --- /dev/null +++ b/src/main/java/cleancode/studycafe/asis/io/provider/LockerPassFileReader.java @@ -0,0 +1,38 @@ +package cleancode.studycafe.asis.io.provider; + +import cleancode.studycafe.tobe.model.pass.StudyCafePassType; +import cleancode.studycafe.tobe.model.pass.locker.StudyCafeLockerPass; +import cleancode.studycafe.tobe.model.pass.locker.StudyCafeLockerPasses; +import cleancode.studycafe.tobe.provider.LockerPassProvider; + +import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Paths; +import java.util.ArrayList; +import java.util.List; + +public class LockerPassFileReader implements LockerPassProvider { + + private static final String LOCKER_LIST_CSV_PATH = "src/main/resources/cleancode/studycafe/locker.csv"; + + @Override + public StudyCafeLockerPasses getLockerPasses() { + try { + List lines = Files.readAllLines(Paths.get(LOCKER_LIST_CSV_PATH)); + List lockerPasses = new ArrayList<>(); + for (String line : lines) { + String[] values = line.split(","); + StudyCafePassType studyCafePassType = StudyCafePassType.valueOf(values[0]); + int duration = Integer.parseInt(values[1]); + int price = Integer.parseInt(values[2]); + + StudyCafeLockerPass lockerPass = StudyCafeLockerPass.of(studyCafePassType, duration, price); + lockerPasses.add(lockerPass); + } + + return StudyCafeLockerPasses.of(lockerPasses); + } catch (IOException e) { + throw new RuntimeException("파일을 읽는데 실패했습니다.", e); + } + } +} diff --git a/src/main/java/cleancode/studycafe/asis/io/provider/SeatPassFileReader.java b/src/main/java/cleancode/studycafe/asis/io/provider/SeatPassFileReader.java new file mode 100644 index 000000000..a0cab47ad --- /dev/null +++ b/src/main/java/cleancode/studycafe/asis/io/provider/SeatPassFileReader.java @@ -0,0 +1,40 @@ +package cleancode.studycafe.asis.io.provider; + +import cleancode.studycafe.tobe.model.pass.StudyCafePassType; +import cleancode.studycafe.tobe.model.pass.StudyCafeSeatPass; +import cleancode.studycafe.tobe.model.pass.StudyCafeSeatPasses; +import cleancode.studycafe.tobe.provider.SeatPassProvider; + +import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Paths; +import java.util.ArrayList; +import java.util.List; + +public class SeatPassFileReader implements SeatPassProvider { + + private static final String PASS_LIST_CSV_PATH = "src/main/resources/cleancode/studycafe/pass-list.csv"; + + @Override + public StudyCafeSeatPasses getSeatPasses() { + try { + List lines = Files.readAllLines(Paths.get(PASS_LIST_CSV_PATH)); + List studyCafeSeatPasses = new ArrayList<>(); + for (String line : lines) { + String[] values = line.split(","); + StudyCafePassType studyCafePassType = StudyCafePassType.valueOf(values[0]); + int duration = Integer.parseInt(values[1]); + int price = Integer.parseInt(values[2]); + double discountRate = Double.parseDouble(values[3]); + + StudyCafeSeatPass studyCafeSeatPass = StudyCafeSeatPass.of(studyCafePassType, duration, price, discountRate); + studyCafeSeatPasses.add(studyCafeSeatPass); + } + + return StudyCafeSeatPasses.of(studyCafeSeatPasses); + } catch (IOException e) { + throw new RuntimeException("파일을 읽는데 실패했습니다.", e); + } + } + +} diff --git a/src/main/java/cleancode/studycafe/asis/model/.DS_Store b/src/main/java/cleancode/studycafe/asis/model/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..aa89763bd15f48e8fb4e99b6c7f2156a6be936b1 GIT binary patch literal 6148 zcmeHKOHRWu5FJC1D%e!4So#XRL8!tBdVvyxV9_X1EA}}9m+7)Q&c%B(CaOyiJA`0H zvfp?+^E+R7wVxTf1G*7zDQZSuC_t|Gy@eP7fbbK7pR z^61a&u36W`8E^)i0cYTUGJu{;^GE9Nmk9?$?n1k!1N}!p3GvAp_yGpq0a?>O<^TWy literal 0 HcmV?d00001 diff --git a/src/main/java/cleancode/studycafe/asis/model/StudyCafePass.java b/src/main/java/cleancode/studycafe/asis/model/StudyCafePass.java deleted file mode 100644 index 76ba12ecf..000000000 --- a/src/main/java/cleancode/studycafe/asis/model/StudyCafePass.java +++ /dev/null @@ -1,50 +0,0 @@ -package cleancode.studycafe.asis.model; - -public class StudyCafePass { - - private final StudyCafePassType passType; - private final int duration; - private final int price; - private final double discountRate; - - private StudyCafePass(StudyCafePassType passType, int duration, int price, double discountRate) { - this.passType = passType; - this.duration = duration; - this.price = price; - this.discountRate = discountRate; - } - - public static StudyCafePass of(StudyCafePassType passType, int duration, int price, double discountRate) { - return new StudyCafePass(passType, duration, price, discountRate); - } - - public StudyCafePassType getPassType() { - return passType; - } - - public int getDuration() { - return duration; - } - - public int getPrice() { - return price; - } - - public double getDiscountRate() { - return discountRate; - } - - public String display() { - if (passType == StudyCafePassType.HOURLY) { - return String.format("%s시간권 - %d원", duration, price); - } - if (passType == StudyCafePassType.WEEKLY) { - return String.format("%s주권 - %d원", duration, price); - } - if (passType == StudyCafePassType.FIXED) { - return String.format("%s주권 - %d원", duration, price); - } - return ""; - } - -} diff --git a/src/main/java/cleancode/studycafe/asis/model/StudyCafePassType.java b/src/main/java/cleancode/studycafe/asis/model/StudyCafePassType.java deleted file mode 100644 index 8903a51ab..000000000 --- a/src/main/java/cleancode/studycafe/asis/model/StudyCafePassType.java +++ /dev/null @@ -1,15 +0,0 @@ -package cleancode.studycafe.asis.model; - -public enum StudyCafePassType { - - HOURLY("시간 단위 이용권"), - WEEKLY("주 단위 이용권"), - FIXED("1인 고정석"); - - private final String description; - - StudyCafePassType(String description) { - this.description = description; - } - -} diff --git a/src/main/java/cleancode/studycafe/asis/model/order/StudyCafePassOrder.java b/src/main/java/cleancode/studycafe/asis/model/order/StudyCafePassOrder.java new file mode 100644 index 000000000..4d36ade2a --- /dev/null +++ b/src/main/java/cleancode/studycafe/asis/model/order/StudyCafePassOrder.java @@ -0,0 +1,41 @@ +package cleancode.studycafe.asis.model.order; + +import cleancode.studycafe.tobe.model.pass.StudyCafeSeatPass; +import cleancode.studycafe.tobe.model.pass.locker.StudyCafeLockerPass; + +import java.util.Optional; + +public class StudyCafePassOrder { + + private final StudyCafeSeatPass seatPass; + private final StudyCafeLockerPass lockerPass; + + private StudyCafePassOrder(StudyCafeSeatPass seatPass, StudyCafeLockerPass lockerPass) { + this.seatPass = seatPass; + this.lockerPass = lockerPass; + } + + public static StudyCafePassOrder of(StudyCafeSeatPass seatPass, StudyCafeLockerPass lockerPass) { + return new StudyCafePassOrder(seatPass, lockerPass); + } + + public int getDiscountPrice() { + return seatPass.getDiscountPrice(); + } + + public int getTotalPrice() { + int lockerPassPrice = lockerPass != null ? lockerPass.getPrice() : 0; + int totalPassPrice = seatPass.getPrice() + lockerPassPrice; + + return totalPassPrice - getDiscountPrice(); + } + + public StudyCafeSeatPass getSeatPass() { + return this.seatPass; + } + + public Optional getLockerPass() { + return Optional.ofNullable(lockerPass); + } + +} diff --git a/src/main/java/cleancode/studycafe/asis/model/pass/StudyCafePass.java b/src/main/java/cleancode/studycafe/asis/model/pass/StudyCafePass.java new file mode 100644 index 000000000..24fde67d0 --- /dev/null +++ b/src/main/java/cleancode/studycafe/asis/model/pass/StudyCafePass.java @@ -0,0 +1,11 @@ +package cleancode.studycafe.asis.model.pass; + +public interface StudyCafePass { + + StudyCafePassType getPassType(); + + int getDuration(); + + int getPrice(); + +} diff --git a/src/main/java/cleancode/studycafe/asis/model/pass/StudyCafePassType.java b/src/main/java/cleancode/studycafe/asis/model/pass/StudyCafePassType.java new file mode 100644 index 000000000..b735af384 --- /dev/null +++ b/src/main/java/cleancode/studycafe/asis/model/pass/StudyCafePassType.java @@ -0,0 +1,27 @@ +package cleancode.studycafe.asis.model.pass; + +import java.util.Set; + +public enum StudyCafePassType { + + HOURLY("시간 단위 이용권"), + WEEKLY("주 단위 이용권"), + FIXED("1인 고정석"); + + private static final Set LOCKER_TYPES = Set.of(StudyCafePassType.FIXED); + + private final String description; + + StudyCafePassType(String description) { + this.description = description; + } + + public boolean isLockerType() { + return LOCKER_TYPES.contains(this); + } + + public boolean isNotLockerType() { + return !isLockerType(); + } + +} diff --git a/src/main/java/cleancode/studycafe/asis/model/pass/StudyCafeSeatPass.java b/src/main/java/cleancode/studycafe/asis/model/pass/StudyCafeSeatPass.java new file mode 100644 index 000000000..5e242097c --- /dev/null +++ b/src/main/java/cleancode/studycafe/asis/model/pass/StudyCafeSeatPass.java @@ -0,0 +1,55 @@ +package cleancode.studycafe.asis.model.pass; + +import cleancode.studycafe.tobe.model.pass.locker.StudyCafeLockerPass; + +public class StudyCafeSeatPass implements StudyCafePass { + + private final StudyCafePassType passType; + private final int duration; + private final int price; + private final double discountRate; + + private StudyCafeSeatPass(StudyCafePassType passType, int duration, int price, double discountRate) { + this.passType = passType; + this.duration = duration; + this.price = price; + this.discountRate = discountRate; + } + + public static StudyCafeSeatPass of(StudyCafePassType passType, int duration, int price, double discountRate) { + return new StudyCafeSeatPass(passType, duration, price, discountRate); + } + + public boolean cannotUseLocker() { + return this.passType.isNotLockerType(); + } + + public boolean isSameDurationType(StudyCafeLockerPass lockerPass) { + return lockerPass.isSamePassType(this.passType) + && lockerPass.isSameDuration(this.duration); + } + + public boolean isSamePassType(StudyCafePassType passType) { + return this.passType == passType; + } + + @Override + public StudyCafePassType getPassType() { + return passType; + } + + @Override + public int getDuration() { + return duration; + } + + @Override + public int getPrice() { + return price; + } + + public int getDiscountPrice() { + return (int) (this.price * this.discountRate); + } + +} diff --git a/src/main/java/cleancode/studycafe/asis/model/pass/StudyCafeSeatPasses.java b/src/main/java/cleancode/studycafe/asis/model/pass/StudyCafeSeatPasses.java new file mode 100644 index 000000000..f21348a19 --- /dev/null +++ b/src/main/java/cleancode/studycafe/asis/model/pass/StudyCafeSeatPasses.java @@ -0,0 +1,23 @@ +package cleancode.studycafe.asis.model.pass; + +import java.util.List; + +public class StudyCafeSeatPasses { + + private final List passes; + + private StudyCafeSeatPasses(List passes) { + this.passes = passes; + } + + public static StudyCafeSeatPasses of(List passes) { + return new StudyCafeSeatPasses(passes); + } + + public List findPassBy(StudyCafePassType studyCafePassType) { + return passes.stream() + .filter(studyCafePass -> studyCafePass.isSamePassType(studyCafePassType)) + .toList(); + } + +} diff --git a/src/main/java/cleancode/studycafe/asis/model/StudyCafeLockerPass.java b/src/main/java/cleancode/studycafe/asis/model/pass/locker/StudyCafeLockerPass.java similarity index 56% rename from src/main/java/cleancode/studycafe/asis/model/StudyCafeLockerPass.java rename to src/main/java/cleancode/studycafe/asis/model/pass/locker/StudyCafeLockerPass.java index d6cf932ae..21e4110bf 100644 --- a/src/main/java/cleancode/studycafe/asis/model/StudyCafeLockerPass.java +++ b/src/main/java/cleancode/studycafe/asis/model/pass/locker/StudyCafeLockerPass.java @@ -1,6 +1,9 @@ -package cleancode.studycafe.asis.model; +package cleancode.studycafe.asis.model.pass.locker; -public class StudyCafeLockerPass { +import cleancode.studycafe.asis.model.pass.StudyCafePass; +import cleancode.studycafe.asis.model.pass.StudyCafePassType; + +public class StudyCafeLockerPass implements StudyCafePass { private final StudyCafePassType passType; private final int duration; @@ -16,29 +19,27 @@ public static StudyCafeLockerPass of(StudyCafePassType passType, int duration, i return new StudyCafeLockerPass(passType, duration, price); } + public boolean isSamePassType(StudyCafePassType passType) { + return this.passType == passType; + } + + public boolean isSameDuration(int duration) { + return this.duration == duration; + } + + @Override public StudyCafePassType getPassType() { return passType; } + @Override public int getDuration() { return duration; } + @Override public int getPrice() { return price; } - public String display() { - if (passType == StudyCafePassType.HOURLY) { - return String.format("%s시간권 - %d원", duration, price); - } - if (passType == StudyCafePassType.WEEKLY) { - return String.format("%s주권 - %d원", duration, price); - } - if (passType == StudyCafePassType.FIXED) { - return String.format("%s주권 - %d원", duration, price); - } - return ""; - } - } diff --git a/src/main/java/cleancode/studycafe/asis/model/pass/locker/StudyCafeLockerPasses.java b/src/main/java/cleancode/studycafe/asis/model/pass/locker/StudyCafeLockerPasses.java new file mode 100644 index 000000000..c9d4fa000 --- /dev/null +++ b/src/main/java/cleancode/studycafe/asis/model/pass/locker/StudyCafeLockerPasses.java @@ -0,0 +1,26 @@ +package cleancode.studycafe.asis.model.pass.locker; + +import cleancode.studycafe.asis.model.pass.StudyCafeSeatPass; + +import java.util.List; +import java.util.Optional; + +public class StudyCafeLockerPasses { + + private final List lockerPasses; + + private StudyCafeLockerPasses(List lockerPasses) { + this.lockerPasses = lockerPasses; + } + + public static StudyCafeLockerPasses of(List lockerPasses) { + return new StudyCafeLockerPasses(lockerPasses); + } + + public Optional findLockerPassBy(StudyCafeSeatPass pass) { + return lockerPasses.stream() + .filter(pass::isSameDurationType) + .findFirst(); + } + +} diff --git a/src/main/java/cleancode/studycafe/asis/provider/LockerPassProvider.java b/src/main/java/cleancode/studycafe/asis/provider/LockerPassProvider.java new file mode 100644 index 000000000..0aae602ef --- /dev/null +++ b/src/main/java/cleancode/studycafe/asis/provider/LockerPassProvider.java @@ -0,0 +1,9 @@ +package cleancode.studycafe.asis.provider; + +import cleancode.studycafe.tobe.model.pass.locker.StudyCafeLockerPasses; + +public interface LockerPassProvider { + + StudyCafeLockerPasses getLockerPasses(); + +} diff --git a/src/main/java/cleancode/studycafe/asis/provider/SeatPassProvider.java b/src/main/java/cleancode/studycafe/asis/provider/SeatPassProvider.java new file mode 100644 index 000000000..733791ba7 --- /dev/null +++ b/src/main/java/cleancode/studycafe/asis/provider/SeatPassProvider.java @@ -0,0 +1,9 @@ +package cleancode.studycafe.asis.provider; + +import cleancode.studycafe.tobe.model.pass.StudyCafeSeatPasses; + +public interface SeatPassProvider { + + StudyCafeSeatPasses getSeatPasses(); + +} From 90bbffc17cc10edefa0c91819a638fb6fb2b434e Mon Sep 17 00:00:00 2001 From: Chaeruin Date: Thu, 13 Mar 2025 13:05:57 +0900 Subject: [PATCH 3/4] fix --- .../java/cleancode/studycafe/tobe/StudyCafeApplication.java | 4 ++-- .../cleancode/studycafe/tobe/io/ConsoleOutputHandler.java | 1 - 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/src/main/java/cleancode/studycafe/tobe/StudyCafeApplication.java b/src/main/java/cleancode/studycafe/tobe/StudyCafeApplication.java index 9f0d5a66c..64dae4fc3 100644 --- a/src/main/java/cleancode/studycafe/tobe/StudyCafeApplication.java +++ b/src/main/java/cleancode/studycafe/tobe/StudyCafeApplication.java @@ -1,8 +1,8 @@ package cleancode.studycafe.tobe; -import cleancode.minesweeper.tobe.minesweeper.io.ConsoleInputHandler; -import cleancode.minesweeper.tobe.minesweeper.io.ConsoleOutputHandler; +import cleancode.studycafe.tobe.io.ConsoleInputHandler; +import cleancode.studycafe.tobe.io.ConsoleOutputHandler; import cleancode.studycafe.tobe.config.StudyCafeConfig; import cleancode.studycafe.tobe.io.StudyCafeFileHandler; diff --git a/src/main/java/cleancode/studycafe/tobe/io/ConsoleOutputHandler.java b/src/main/java/cleancode/studycafe/tobe/io/ConsoleOutputHandler.java index 476d28e5d..7317b5802 100644 --- a/src/main/java/cleancode/studycafe/tobe/io/ConsoleOutputHandler.java +++ b/src/main/java/cleancode/studycafe/tobe/io/ConsoleOutputHandler.java @@ -5,7 +5,6 @@ import cleancode.studycafe.tobe.model.StudyCafePass; import cleancode.studycafe.tobe.model.StudyCafePasses; -import java.util.List; public class ConsoleOutputHandler implements OutputHandler { From 14dacc3d8d4fdb25ce89245ca40dd126cbdf3aa0 Mon Sep 17 00:00:00 2001 From: Chaeruin Date: Thu, 13 Mar 2025 13:17:05 +0900 Subject: [PATCH 4/4] fix package --- .../studycafe/asis/StudyCafeApplication.java | 8 ++++---- .../studycafe/asis/StudyCafePassMachine.java | 16 ++++++++-------- .../studycafe/asis/io/InputHandler.java | 6 +++--- .../studycafe/asis/io/OutputHandler.java | 10 +++++----- .../studycafe/asis/io/StudyCafeIOHandler.java | 16 ++++++++-------- .../asis/io/provider/LockerPassFileReader.java | 8 ++++---- .../asis/io/provider/SeatPassFileReader.java | 8 ++++---- .../asis/model/order/StudyCafePassOrder.java | 4 ++-- .../asis/model/pass/StudyCafeSeatPass.java | 2 +- .../asis/provider/LockerPassProvider.java | 2 +- .../asis/provider/SeatPassProvider.java | 2 +- 11 files changed, 41 insertions(+), 41 deletions(-) diff --git a/src/main/java/cleancode/studycafe/asis/StudyCafeApplication.java b/src/main/java/cleancode/studycafe/asis/StudyCafeApplication.java index d94455b8c..2b59096e5 100644 --- a/src/main/java/cleancode/studycafe/asis/StudyCafeApplication.java +++ b/src/main/java/cleancode/studycafe/asis/StudyCafeApplication.java @@ -1,9 +1,9 @@ package cleancode.studycafe.asis; -import cleancode.studycafe.tobe.io.provider.LockerPassFileReader; -import cleancode.studycafe.tobe.io.provider.SeatPassFileReader; -import cleancode.studycafe.tobe.provider.LockerPassProvider; -import cleancode.studycafe.tobe.provider.SeatPassProvider; +import cleancode.studycafe.asis.io.provider.LockerPassFileReader; +import cleancode.studycafe.asis.io.provider.SeatPassFileReader; +import cleancode.studycafe.asis.provider.LockerPassProvider; +import cleancode.studycafe.asis.provider.SeatPassProvider; public class StudyCafeApplication { diff --git a/src/main/java/cleancode/studycafe/asis/StudyCafePassMachine.java b/src/main/java/cleancode/studycafe/asis/StudyCafePassMachine.java index 15be658a7..dee6d806e 100644 --- a/src/main/java/cleancode/studycafe/asis/StudyCafePassMachine.java +++ b/src/main/java/cleancode/studycafe/asis/StudyCafePassMachine.java @@ -1,13 +1,13 @@ package cleancode.studycafe.asis; -import cleancode.studycafe.tobe.exception.AppException; -import cleancode.studycafe.tobe.io.StudyCafeIOHandler; -import cleancode.studycafe.tobe.model.order.StudyCafePassOrder; -import cleancode.studycafe.tobe.model.pass.*; -import cleancode.studycafe.tobe.model.pass.locker.StudyCafeLockerPass; -import cleancode.studycafe.tobe.model.pass.locker.StudyCafeLockerPasses; -import cleancode.studycafe.tobe.provider.LockerPassProvider; -import cleancode.studycafe.tobe.provider.SeatPassProvider; +import cleancode.studycafe.asis.exception.AppException; +import cleancode.studycafe.asis.io.StudyCafeIOHandler; +import cleancode.studycafe.asis.model.order.StudyCafePassOrder; +import cleancode.studycafe.asis.model.pass.*; +import cleancode.studycafe.asis.model.pass.locker.StudyCafeLockerPass; +import cleancode.studycafe.asis.model.pass.locker.StudyCafeLockerPasses; +import cleancode.studycafe.asis.provider.LockerPassProvider; +import cleancode.studycafe.asis.provider.SeatPassProvider; import java.util.List; import java.util.Optional; diff --git a/src/main/java/cleancode/studycafe/asis/io/InputHandler.java b/src/main/java/cleancode/studycafe/asis/io/InputHandler.java index b7182c6b6..13a865c47 100644 --- a/src/main/java/cleancode/studycafe/asis/io/InputHandler.java +++ b/src/main/java/cleancode/studycafe/asis/io/InputHandler.java @@ -1,8 +1,8 @@ package cleancode.studycafe.asis.io; -import cleancode.studycafe.tobe.exception.AppException; -import cleancode.studycafe.tobe.model.pass.StudyCafeSeatPass; -import cleancode.studycafe.tobe.model.pass.StudyCafePassType; +import cleancode.studycafe.asis.exception.AppException; +import cleancode.studycafe.asis.model.pass.StudyCafeSeatPass; +import cleancode.studycafe.asis.model.pass.StudyCafePassType; import java.util.List; import java.util.Scanner; diff --git a/src/main/java/cleancode/studycafe/asis/io/OutputHandler.java b/src/main/java/cleancode/studycafe/asis/io/OutputHandler.java index b1d4f16f1..9e22dadd4 100644 --- a/src/main/java/cleancode/studycafe/asis/io/OutputHandler.java +++ b/src/main/java/cleancode/studycafe/asis/io/OutputHandler.java @@ -1,10 +1,10 @@ package cleancode.studycafe.asis.io; -import cleancode.studycafe.tobe.model.order.StudyCafePassOrder; -import cleancode.studycafe.tobe.model.pass.StudyCafePass; -import cleancode.studycafe.tobe.model.pass.StudyCafePassType; -import cleancode.studycafe.tobe.model.pass.StudyCafeSeatPass; -import cleancode.studycafe.tobe.model.pass.locker.StudyCafeLockerPass; +import cleancode.studycafe.asis.model.order.StudyCafePassOrder; +import cleancode.studycafe.asis.model.pass.StudyCafePass; +import cleancode.studycafe.asis.model.pass.StudyCafePassType; +import cleancode.studycafe.asis.model.pass.StudyCafeSeatPass; +import cleancode.studycafe.asis.model.pass.locker.StudyCafeLockerPass; import java.util.List; import java.util.Optional; diff --git a/src/main/java/cleancode/studycafe/asis/io/StudyCafeIOHandler.java b/src/main/java/cleancode/studycafe/asis/io/StudyCafeIOHandler.java index d9e7270f0..c182281c7 100644 --- a/src/main/java/cleancode/studycafe/asis/io/StudyCafeIOHandler.java +++ b/src/main/java/cleancode/studycafe/asis/io/StudyCafeIOHandler.java @@ -1,18 +1,18 @@ package cleancode.studycafe.asis.io; -import cleancode.studycafe.tobe.io.InputHandler; -import cleancode.studycafe.tobe.io.OutputHandler; -import cleancode.studycafe.tobe.model.order.StudyCafePassOrder; -import cleancode.studycafe.tobe.model.pass.locker.StudyCafeLockerPass; -import cleancode.studycafe.tobe.model.pass.StudyCafeSeatPass; -import cleancode.studycafe.tobe.model.pass.StudyCafePassType; +import cleancode.studycafe.asis.io.InputHandler; +import cleancode.studycafe.asis.io.OutputHandler; +import cleancode.studycafe.asis.model.order.StudyCafePassOrder; +import cleancode.studycafe.asis.model.pass.locker.StudyCafeLockerPass; +import cleancode.studycafe.asis.model.pass.StudyCafeSeatPass; +import cleancode.studycafe.asis.model.pass.StudyCafePassType; import java.util.List; public class StudyCafeIOHandler { - private final cleancode.studycafe.tobe.io.InputHandler inputHandler = new InputHandler(); - private final cleancode.studycafe.tobe.io.OutputHandler outputHandler = new OutputHandler(); + private final InputHandler inputHandler = new InputHandler(); + private final OutputHandler outputHandler = new OutputHandler(); public void showWelcomeMessage() { outputHandler.showWelcomeMessage(); diff --git a/src/main/java/cleancode/studycafe/asis/io/provider/LockerPassFileReader.java b/src/main/java/cleancode/studycafe/asis/io/provider/LockerPassFileReader.java index 1b193316b..af0d746a3 100644 --- a/src/main/java/cleancode/studycafe/asis/io/provider/LockerPassFileReader.java +++ b/src/main/java/cleancode/studycafe/asis/io/provider/LockerPassFileReader.java @@ -1,9 +1,9 @@ package cleancode.studycafe.asis.io.provider; -import cleancode.studycafe.tobe.model.pass.StudyCafePassType; -import cleancode.studycafe.tobe.model.pass.locker.StudyCafeLockerPass; -import cleancode.studycafe.tobe.model.pass.locker.StudyCafeLockerPasses; -import cleancode.studycafe.tobe.provider.LockerPassProvider; +import cleancode.studycafe.asis.model.pass.StudyCafePassType; +import cleancode.studycafe.asis.model.pass.locker.StudyCafeLockerPass; +import cleancode.studycafe.asis.model.pass.locker.StudyCafeLockerPasses; +import cleancode.studycafe.asis.provider.LockerPassProvider; import java.io.IOException; import java.nio.file.Files; diff --git a/src/main/java/cleancode/studycafe/asis/io/provider/SeatPassFileReader.java b/src/main/java/cleancode/studycafe/asis/io/provider/SeatPassFileReader.java index a0cab47ad..0f1b1a6f8 100644 --- a/src/main/java/cleancode/studycafe/asis/io/provider/SeatPassFileReader.java +++ b/src/main/java/cleancode/studycafe/asis/io/provider/SeatPassFileReader.java @@ -1,9 +1,9 @@ package cleancode.studycafe.asis.io.provider; -import cleancode.studycafe.tobe.model.pass.StudyCafePassType; -import cleancode.studycafe.tobe.model.pass.StudyCafeSeatPass; -import cleancode.studycafe.tobe.model.pass.StudyCafeSeatPasses; -import cleancode.studycafe.tobe.provider.SeatPassProvider; +import cleancode.studycafe.asis.model.pass.StudyCafePassType; +import cleancode.studycafe.asis.model.pass.StudyCafeSeatPass; +import cleancode.studycafe.asis.model.pass.StudyCafeSeatPasses; +import cleancode.studycafe.asis.provider.SeatPassProvider; import java.io.IOException; import java.nio.file.Files; diff --git a/src/main/java/cleancode/studycafe/asis/model/order/StudyCafePassOrder.java b/src/main/java/cleancode/studycafe/asis/model/order/StudyCafePassOrder.java index 4d36ade2a..10a82d3ee 100644 --- a/src/main/java/cleancode/studycafe/asis/model/order/StudyCafePassOrder.java +++ b/src/main/java/cleancode/studycafe/asis/model/order/StudyCafePassOrder.java @@ -1,7 +1,7 @@ package cleancode.studycafe.asis.model.order; -import cleancode.studycafe.tobe.model.pass.StudyCafeSeatPass; -import cleancode.studycafe.tobe.model.pass.locker.StudyCafeLockerPass; +import cleancode.studycafe.asis.model.pass.StudyCafeSeatPass; +import cleancode.studycafe.asis.model.pass.locker.StudyCafeLockerPass; import java.util.Optional; diff --git a/src/main/java/cleancode/studycafe/asis/model/pass/StudyCafeSeatPass.java b/src/main/java/cleancode/studycafe/asis/model/pass/StudyCafeSeatPass.java index 5e242097c..b44ada5ea 100644 --- a/src/main/java/cleancode/studycafe/asis/model/pass/StudyCafeSeatPass.java +++ b/src/main/java/cleancode/studycafe/asis/model/pass/StudyCafeSeatPass.java @@ -1,6 +1,6 @@ package cleancode.studycafe.asis.model.pass; -import cleancode.studycafe.tobe.model.pass.locker.StudyCafeLockerPass; +import cleancode.studycafe.asis.model.pass.locker.StudyCafeLockerPass; public class StudyCafeSeatPass implements StudyCafePass { diff --git a/src/main/java/cleancode/studycafe/asis/provider/LockerPassProvider.java b/src/main/java/cleancode/studycafe/asis/provider/LockerPassProvider.java index 0aae602ef..631813183 100644 --- a/src/main/java/cleancode/studycafe/asis/provider/LockerPassProvider.java +++ b/src/main/java/cleancode/studycafe/asis/provider/LockerPassProvider.java @@ -1,6 +1,6 @@ package cleancode.studycafe.asis.provider; -import cleancode.studycafe.tobe.model.pass.locker.StudyCafeLockerPasses; +import cleancode.studycafe.asis.model.pass.locker.StudyCafeLockerPasses; public interface LockerPassProvider { diff --git a/src/main/java/cleancode/studycafe/asis/provider/SeatPassProvider.java b/src/main/java/cleancode/studycafe/asis/provider/SeatPassProvider.java index 733791ba7..1c12795a5 100644 --- a/src/main/java/cleancode/studycafe/asis/provider/SeatPassProvider.java +++ b/src/main/java/cleancode/studycafe/asis/provider/SeatPassProvider.java @@ -1,6 +1,6 @@ package cleancode.studycafe.asis.provider; -import cleancode.studycafe.tobe.model.pass.StudyCafeSeatPasses; +import cleancode.studycafe.asis.model.pass.StudyCafeSeatPasses; public interface SeatPassProvider {