From d517fba7a0533918120ccb624a26148f8da82e22 Mon Sep 17 00:00:00 2001 From: BETTERFUTURE4 Date: Fri, 17 Dec 2021 13:31:37 +0900 Subject: [PATCH 1/9] =?UTF-8?q?docs:=20=EA=B5=AC=ED=98=84=EC=82=AC?= =?UTF-8?q?=ED=95=AD=20=EB=AC=B8=EC=84=9C=20=EC=9E=91=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 67 ++++++++++++++++++- .../java/controller/ControllerTemplate.java | 15 +++++ .../view/InputControllerTemplate.java | 18 +++++ src/main/java/domain/EnumTemplate.java | 21 ++++++ src/main/java/domain/ModelTemplate.java | 31 +++++++++ .../domain/repository/RepositoryTemplate.java | 22 ++++++ src/main/java/utils/Constants.java | 17 +++++ src/main/java/utils/Converter.java | 21 ++++++ src/main/java/utils/UtilTemplate.java | 7 ++ .../utils/validator/TemplateValidator.java | 22 ++++++ src/test/java/mytest/MainTest.java | 34 ++++++++++ src/test/java/mytest/UnitTest.java | 40 +++++++++++ 12 files changed, 314 insertions(+), 1 deletion(-) create mode 100644 src/main/java/controller/ControllerTemplate.java create mode 100644 src/main/java/controller/view/InputControllerTemplate.java create mode 100644 src/main/java/domain/EnumTemplate.java create mode 100644 src/main/java/domain/ModelTemplate.java create mode 100644 src/main/java/domain/repository/RepositoryTemplate.java create mode 100644 src/main/java/utils/Constants.java create mode 100644 src/main/java/utils/Converter.java create mode 100644 src/main/java/utils/UtilTemplate.java create mode 100644 src/main/java/utils/validator/TemplateValidator.java create mode 100644 src/test/java/mytest/MainTest.java create mode 100644 src/test/java/mytest/UnitTest.java diff --git a/README.md b/README.md index c31ca54c..436d3f8f 100644 --- a/README.md +++ b/README.md @@ -1 +1,66 @@ -# java-chicken-2019 \ No newline at end of file +# πŸš€ λ―Έμ…˜ - μΉ˜ν‚¨μ§‘ POS + +μΉ˜ν‚¨μ§‘ 사μž₯λ‹˜μ΄ μ‚¬μš©ν•˜λŠ” κ°„λ‹¨ν•œ 포슀(POS) ν”„λ‘œκ·Έλž¨μ„ κ΅¬ν˜„ν•œλ‹€. μ£Όλ¬Έ 등둝, κ²°μ œν•˜κΈ°, ν”„λ‘œκ·Έλž¨ μ’…λ£Œ κΈ°λŠ₯을 κ°€μ§„λ‹€. + +# πŸ“ˆ κΈ°λŠ₯ λͺ©λ‘ + +## κ΅¬ν˜„ κΈ°λŠ₯ λͺ©λ‘ + +### βœ… μž…λ ₯ + +- [ ] 메인화면 μ›ν•˜λŠ” κΈ°λŠ₯을 μž…λ ₯(1 - 주문등둝 2 - κ²°μ œν•˜κΈ° 3 - ν”„λ‘œκ·Έλž¨ μ’…λ£Œ) +- [ ] ν…Œμ΄λΈ” μž…λ ₯ +- [ ] μ£Όλ¬Έν•  메뉴 μž…λ ₯ +- [ ] λ©”λ‰΄μ˜ μˆ˜λŸ‰ μž…λ ₯ +- [ ] 결제 방식 μž…λ ₯(μ‹ μš© μΉ΄λ“œλŠ” 1번, ν˜„κΈˆμ€ 2번) + +### βœ… 주문등둝 κΈ°λŠ₯ + +- [ ] ν…Œμ΄λΈ” 선택 + - [μ˜ˆμ™Έ] ν…Œμ΄λΈ” 레포 μ•ˆ μˆ«μžμ— ν•΄λ‹Ήν•˜μ§€ μ•ŠλŠ” 경우 + - [ ] μ„ νƒλœ ν…Œμ΄λΈ”μ΄ λΉ„μ—ˆμ„ 경우 μœ μ €μ •λ³΄ μ €μž₯ + - [ ] 주문메뉴 μ €μž₯ + - [ ] [μ˜ˆμ™Έ] 메뉴 레포 숫자 쀑에 μ—†λŠ” 경우 + - [ ] 메뉴 μˆ˜λŸ‰ μ €μž₯ + - [ ] [μ˜ˆμ™Έ] 0 μ΄ν•˜ 숫자인 경우 + - [ ] [μ˜ˆμ™Έ] 100 이상 숫자인 경우 + +### βœ… κ²°μ œν•˜κΈ° κΈ°λŠ₯ + +- [ ] ν…Œμ΄λΈ” 선택 + - [ ] [μ˜ˆμ™Έ] μ„ νƒλœ ν…Œμ΄λΈ”μ΄ μ°¨ μžˆμ„ 경우 + - [ ] κΈˆμ•‘κ³„μ‚° + - [ ] λ©”λ‰΄λ§ˆλ‹€ μˆ˜λŸ‰ 10개 λ‹¨μœ„λ§ˆλ‹€ λ§Œμ› 할인 + - [ ] κ²°μ œλ°©μ‹ μ €μž₯ + - [ ] [μ˜ˆμ™Έ] ν•΄λ‹Ή μˆ«μžμ€‘μ— μ—†λŠ” 경우 + - [ ] ν˜„κΈˆκ²°μ œ 5% 할인 +- [ ] μ΅œμ’… κ²°μ œκΈˆμ•‘ 좜λ ₯ + +### βœ… 좜λ ₯ + +- [ ] 메인화면 좜λ ₯ +- [ ] ν…Œμ΄λΈ”λͺ©λ‘ 좜λ ₯ +- [ ] 메뉴 좜λ ₯ +- [ ] κ²°μ œλ°©μ‹ 좜λ ₯ + +### βœ… κ³Όμ • + +- [ ] 반볡 + - [ ] 메인화면 μž…λ ₯ λ°›κΈ° + - [ ] [μ˜ˆμ™Έ] ν•΄λ‹Ή 숫자 쀑에 μ—†λŠ” 경우 + - [ ] ν”„λ‘œκ·Έλž¨ μ’…λ£Œ μž…λ ₯ μ‹œ μ’…λ£Œ + - [ ] 이외 : 주문등둝/κ²°μ œν•˜κΈ° μˆ˜ν–‰ + +--- + +## πŸ”κ΅¬ν˜„ 둜직 + +- ### Main diagram + + +- ### Util diagram + + +- ### View diagram + +--- \ No newline at end of file diff --git a/src/main/java/controller/ControllerTemplate.java b/src/main/java/controller/ControllerTemplate.java new file mode 100644 index 00000000..79ba66e0 --- /dev/null +++ b/src/main/java/controller/ControllerTemplate.java @@ -0,0 +1,15 @@ +package controller; + +public class ControllerTemplate { + public ControllerTemplate() { + initiate(); + start(); + } + private void initiate() { + // μ΄ˆκΈ°ν™”/set + } + + private void start() { + // μž‘λ™ μ‹œμž‘ + } +} diff --git a/src/main/java/controller/view/InputControllerTemplate.java b/src/main/java/controller/view/InputControllerTemplate.java new file mode 100644 index 00000000..58aad4f8 --- /dev/null +++ b/src/main/java/controller/view/InputControllerTemplate.java @@ -0,0 +1,18 @@ +package controller.view; + +import template.domain.ModelTemplate; +import template.view.InputView; +import template.view.OutputView; + +public class InputControllerTemplate { + public static ModelTemplate getModel() { + try { + return new ModelTemplate(InputView.templateInput()); + } catch (IllegalArgumentException e) { + OutputView.printError(e.getMessage()); + return getModel(); + } + } + + // ... +} diff --git a/src/main/java/domain/EnumTemplate.java b/src/main/java/domain/EnumTemplate.java new file mode 100644 index 00000000..746541a2 --- /dev/null +++ b/src/main/java/domain/EnumTemplate.java @@ -0,0 +1,21 @@ +package domain; + +public enum EnumTemplate { + NAME_1(1), + NAME_2(2); + + private final int value; + + EnumTemplate(final int value) { + this.value = value; + } + + // μΆ”κ°€ κΈ°λŠ₯ κ΅¬ν˜„ + public int getValue() { + return value; + } + + public String toString() { + return Integer.toString(value); + } +} diff --git a/src/main/java/domain/ModelTemplate.java b/src/main/java/domain/ModelTemplate.java new file mode 100644 index 00000000..0edc6a42 --- /dev/null +++ b/src/main/java/domain/ModelTemplate.java @@ -0,0 +1,31 @@ +package domain; + +import template.utils.validator.TemplateValidator; + +public class ModelTemplate { + private int model; + + public ModelTemplate(String model) { + new TemplateValidator(model); + // 컨버터 μ΄μš©ν•΄ κ°’ μ μ ˆν•˜κ²Œ λ³€κ²½ + } + + public int get() { + return model; + } + + public boolean isEmpty() { + return model == 0; + } + + public boolean equals(ModelTemplate obj) { + // λͺ¨λΈκ°’ 같은지 확인 + return this.model == obj.get(); + } + + @Override + public String toString() { + // ν”„λ¦°νŠΈ μ›ν•˜λŠ” λ°©μ‹μœΌλ‘œ κ΅¬ν˜„ + return Integer.toString(model); + } +} diff --git a/src/main/java/domain/repository/RepositoryTemplate.java b/src/main/java/domain/repository/RepositoryTemplate.java new file mode 100644 index 00000000..d793bcef --- /dev/null +++ b/src/main/java/domain/repository/RepositoryTemplate.java @@ -0,0 +1,22 @@ +package domain.repository; + +import utils.Constants; + +public class RepositoryTemplate { + public static final Object model = null; + public static final Object[] models = null; + + public static Object get() { + return model; + } + + public static Object find(String name) { + for (Object obj : models) { + if (obj.equals(name)) { + return obj; + } + } + // κ²°κ³Όκ°€ μ—†μœΌλ©΄ μ˜ˆμ™Έμ²˜λ¦¬ + throw new IllegalArgumentException(Constants.ERROR); + } +} diff --git a/src/main/java/utils/Constants.java b/src/main/java/utils/Constants.java new file mode 100644 index 00000000..277e633d --- /dev/null +++ b/src/main/java/utils/Constants.java @@ -0,0 +1,17 @@ +package utils; + +import java.util.regex.Pattern; + +public class Constants { + // λ‹¨μœ„ μƒμˆ˜ + public static final String CONSTANT = "μƒμˆ˜"; + + // μ •κ·œμ‹ + // μ‚¬μ΄νŠΈ: https://regexr.com/5mhou + public static final String REGEX = "^[κ°€-힣a-zA-Z]+$"; + public static final Pattern PATTERN = Pattern.compile(REGEX); + + // 였λ₯˜λ©”μ„Έμ§€ κ΄€λ ¨ μƒμˆ˜ + public static final String ERROR = "[ERROR] "; + public static final String ERROR_NUMBER_PATTERN = ERROR + "숫자 μž…λ ₯은 λΉ„μ§€ μ•Šμ€ 1 μ΄μƒμ˜ μ •μˆ˜ ν˜•μ‹μ΄μ–΄μ•Ό ν•œλ‹€."; +} diff --git a/src/main/java/utils/Converter.java b/src/main/java/utils/Converter.java new file mode 100644 index 00000000..050c58e9 --- /dev/null +++ b/src/main/java/utils/Converter.java @@ -0,0 +1,21 @@ +package utils; + +import java.util.ArrayList; + +public class Converter { + public static int getInt(String moneyString) { + return Integer.parseInt(moneyString); + } + + // spilt μ½”λ“œ + // public static ArrayList getBeverages(String beverageString) { + // ArrayList beverages = new ArrayList<>(); + // for (String beverage : beverageString.split(Constants.SEPARATOR)) { + // beverages.add(new Beverage( + // beverage + // .substring(1, beverage.length() - 1) + // .split(Constants.DELIMITER))); + // } + // return beverages; + // } +} diff --git a/src/main/java/utils/UtilTemplate.java b/src/main/java/utils/UtilTemplate.java new file mode 100644 index 00000000..f2e223e7 --- /dev/null +++ b/src/main/java/utils/UtilTemplate.java @@ -0,0 +1,7 @@ +package utils; + +public class UtilTemplate { + public static Object utilTemplate() { + return new Object(); + } +} diff --git a/src/main/java/utils/validator/TemplateValidator.java b/src/main/java/utils/validator/TemplateValidator.java new file mode 100644 index 00000000..b721f1e2 --- /dev/null +++ b/src/main/java/utils/validator/TemplateValidator.java @@ -0,0 +1,22 @@ +package utils.validator; + +import utils.Constants; + +public class TemplateValidator { + private final String name; + + public TemplateValidator(String name) { + this.name = name; + validate(); + } + + private void validate() { + isRightString(); + } + + private void isRightString() { + if (!Constants.PATTERN.matcher(name).matches()) { + throw new IllegalArgumentException(Constants.ERROR_NUMBER_PATTERN); + } + } +} diff --git a/src/test/java/mytest/MainTest.java b/src/test/java/mytest/MainTest.java new file mode 100644 index 00000000..85d4fb00 --- /dev/null +++ b/src/test/java/mytest/MainTest.java @@ -0,0 +1,34 @@ +package mytest; + +import org.junit.jupiter.api.Test; +import static org.assertj.core.api.Assertions.*; + +// 제곡된 ν…ŒμŠ€νŠΈμ½”λ“œ μ°Έμ‘° +// import camp.nextstep.edu.missionutils.test.NsTest; +// import static camp.nextstep.edu.missionutils.test.Assertions.assertRandomNumberInRangeTest; +// import static camp.nextstep.edu.missionutils.test.Assertions.assertSimpleTest; + +public class MainTest { + // 제곡된 ν…ŒμŠ€νŠΈμ½”λ“œ μ°Έμ‘° + private static final String ERROR_MESSAGE = "[ERROR]"; + + // @Test + // void 자판기_λ³΄μœ λ™μ „_좜λ ₯() { + // assertRandomNumberInListTest( + // () -> { + // runException("450"); + // assertThat(output()).contains( + // "μžνŒκΈ°κ°€ λ³΄μœ ν•˜κ³  μžˆλŠ” κΈˆμ•‘μ„ μž…λ ₯ν•΄ μ£Όμ„Έμš”.", + // "μžνŒκΈ°κ°€ λ³΄μœ ν•œ 동전", + // "500원 - 0개", "100원 - 4개", "50원 - 1개", "10원 - 0개" + // ); + // }, + // 100, 100, 100, 100, 50 + // ); + // } + // + // @Override + // public void runMain() { + // Application.main(new String[] {}); + // } +} \ No newline at end of file diff --git a/src/test/java/mytest/UnitTest.java b/src/test/java/mytest/UnitTest.java new file mode 100644 index 00000000..a6f3f721 --- /dev/null +++ b/src/test/java/mytest/UnitTest.java @@ -0,0 +1,40 @@ +package mytest; + +import static org.assertj.core.api.Assertions.*; + +import org.junit.jupiter.api.Test; + + +public class UnitTest { + private static final String ERROR_MESSAGE = "[ERROR]"; + + @Test + void noError() { + String hello = "HELLO WORLD!"; + assertThat(hello) + .doesNotContain( + ERROR_MESSAGE + ) + ; + } + + @Test + void error() { + String hello = "[ERROR] HELLO WORLD!"; + assertThat(hello) + .contains( + ERROR_MESSAGE + ) + ; + } + + @Test + void num() { + int num = 1; + assertThat(num) + .isEqualTo(1) + .isOdd() + .isNotSameAs(0) + ; + } +} From d6f5e444834e15bf624ecd77f8c2f47eaba94ae0 Mon Sep 17 00:00:00 2001 From: BETTERFUTURE4 Date: Fri, 17 Dec 2021 14:02:08 +0900 Subject: [PATCH 2/9] =?UTF-8?q?feat:=20=EC=9E=85=EC=B6=9C=EB=A0=A5=20?= =?UTF-8?q?=EB=B0=8F=20=EC=A3=BC=EB=AC=B8=EB=93=B1=EB=A1=9D=20=EA=B8=B0?= =?UTF-8?q?=EB=8A=A5=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 30 +++---- src/main/java/Application.java | 23 ++---- src/main/java/controller/Controller.java | 66 +++++++++++++++ .../java/controller/ControllerTemplate.java | 15 ---- .../java/controller/view/InputController.java | 56 +++++++++++++ .../view/InputControllerTemplate.java | 18 ----- src/main/java/domain/Menu.java | 32 ++++---- src/main/java/domain/MenuRepository.java | 24 ------ src/main/java/domain/MenuState.java | 24 ++++++ src/main/java/domain/ModelTemplate.java | 4 +- src/main/java/domain/Table.java | 20 +++-- src/main/java/domain/TableRepository.java | 22 ----- src/main/java/domain/User.java | 37 +++++++++ .../domain/repository/MenuRepository.java | 37 +++++++++ .../domain/repository/RepositoryTemplate.java | 22 ----- .../domain/repository/TableRepository.java | 34 ++++++++ .../repository/TableStateRepository.java | 30 +++++++ src/main/java/utils/Constants.java | 18 ++++- src/main/java/utils/Converter.java | 4 + .../utils/validator/MainNumberValidator.java | 22 +++++ .../utils/validator/MenuCountValidator.java | 28 +++++++ .../utils/validator/MenuNumberValidator.java | 26 ++++++ .../utils/validator/TableNumberValidator.java | 26 ++++++ .../utils/validator/TemplateValidator.java | 22 ----- src/main/java/view/InputView.java | 41 ++++++++-- src/main/java/view/OutputView.java | 81 ++++++++++++------- 26 files changed, 542 insertions(+), 220 deletions(-) create mode 100644 src/main/java/controller/Controller.java delete mode 100644 src/main/java/controller/ControllerTemplate.java create mode 100644 src/main/java/controller/view/InputController.java delete mode 100644 src/main/java/controller/view/InputControllerTemplate.java delete mode 100644 src/main/java/domain/MenuRepository.java create mode 100644 src/main/java/domain/MenuState.java delete mode 100644 src/main/java/domain/TableRepository.java create mode 100644 src/main/java/domain/User.java create mode 100644 src/main/java/domain/repository/MenuRepository.java delete mode 100644 src/main/java/domain/repository/RepositoryTemplate.java create mode 100644 src/main/java/domain/repository/TableRepository.java create mode 100644 src/main/java/domain/repository/TableStateRepository.java create mode 100644 src/main/java/utils/validator/MainNumberValidator.java create mode 100644 src/main/java/utils/validator/MenuCountValidator.java create mode 100644 src/main/java/utils/validator/MenuNumberValidator.java create mode 100644 src/main/java/utils/validator/TableNumberValidator.java delete mode 100644 src/main/java/utils/validator/TemplateValidator.java diff --git a/README.md b/README.md index 436d3f8f..7f66bd22 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,7 @@ # πŸš€ λ―Έμ…˜ - μΉ˜ν‚¨μ§‘ POS -μΉ˜ν‚¨μ§‘ 사μž₯λ‹˜μ΄ μ‚¬μš©ν•˜λŠ” κ°„λ‹¨ν•œ 포슀(POS) ν”„λ‘œκ·Έλž¨μ„ κ΅¬ν˜„ν•œλ‹€. μ£Όλ¬Έ 등둝, κ²°μ œν•˜κΈ°, ν”„λ‘œκ·Έλž¨ μ’…λ£Œ κΈ°λŠ₯을 κ°€μ§„λ‹€. +μΉ˜ν‚¨μ§‘ 사μž₯λ‹˜μ΄ μ‚¬μš©ν•˜λŠ” κ°„λ‹¨ν•œ 포슀(POS) ν”„λ‘œκ·Έλž¨μ„ κ΅¬ν˜„ν•œλ‹€. +μ£Όλ¬Έ 등둝, κ²°μ œν•˜κΈ°, ν”„λ‘œκ·Έλž¨ μ’…λ£Œ κΈ°λŠ₯을 κ°€μ§„λ‹€. # πŸ“ˆ κΈ°λŠ₯ λͺ©λ‘ @@ -8,22 +9,23 @@ ### βœ… μž…λ ₯ -- [ ] 메인화면 μ›ν•˜λŠ” κΈ°λŠ₯을 μž…λ ₯(1 - 주문등둝 2 - κ²°μ œν•˜κΈ° 3 - ν”„λ‘œκ·Έλž¨ μ’…λ£Œ) -- [ ] ν…Œμ΄λΈ” μž…λ ₯ -- [ ] μ£Όλ¬Έν•  메뉴 μž…λ ₯ -- [ ] λ©”λ‰΄μ˜ μˆ˜λŸ‰ μž…λ ₯ -- [ ] 결제 방식 μž…λ ₯(μ‹ μš© μΉ΄λ“œλŠ” 1번, ν˜„κΈˆμ€ 2번) +- [x] 메인화면 μ›ν•˜λŠ” κΈ°λŠ₯을 μž…λ ₯(1 - 주문등둝 2 - κ²°μ œν•˜κΈ° 3 - ν”„λ‘œκ·Έλž¨ μ’…λ£Œ) +- [x] ν…Œμ΄λΈ” μž…λ ₯ +- [x] μ£Όλ¬Έν•  메뉴 μž…λ ₯ +- [x] λ©”λ‰΄μ˜ μˆ˜λŸ‰ μž…λ ₯ +- [x] 결제 방식 μž…λ ₯(μ‹ μš© μΉ΄λ“œλŠ” 1번, ν˜„κΈˆμ€ 2번) ### βœ… 주문등둝 κΈ°λŠ₯ -- [ ] ν…Œμ΄λΈ” 선택 - - [μ˜ˆμ™Έ] ν…Œμ΄λΈ” 레포 μ•ˆ μˆ«μžμ— ν•΄λ‹Ήν•˜μ§€ μ•ŠλŠ” 경우 - - [ ] μ„ νƒλœ ν…Œμ΄λΈ”μ΄ λΉ„μ—ˆμ„ 경우 μœ μ €μ •λ³΄ μ €μž₯ - - [ ] 주문메뉴 μ €μž₯ - - [ ] [μ˜ˆμ™Έ] 메뉴 레포 숫자 쀑에 μ—†λŠ” 경우 - - [ ] 메뉴 μˆ˜λŸ‰ μ €μž₯ - - [ ] [μ˜ˆμ™Έ] 0 μ΄ν•˜ 숫자인 경우 - - [ ] [μ˜ˆμ™Έ] 100 이상 숫자인 경우 +- [x] ν…Œμ΄λΈ” 선택 + - [x] [μ˜ˆμ™Έ] ν…Œμ΄λΈ” 레포 μ•ˆ μˆ«μžμ— ν•΄λ‹Ήν•˜μ§€ μ•ŠλŠ” 경우 + - [x] 주문메뉴 λ°›κΈ° + - [x] [μ˜ˆμ™Έ] 메뉴 레포 숫자 쀑에 μ—†λŠ” 경우 + - [x] 메뉴 μˆ˜λŸ‰ λ°›κΈ° + - [x] [μ˜ˆμ™Έ] 0 μ΄ν•˜ 숫자인 경우 + - [x] [μ˜ˆμ™Έ] 100 이상 숫자인 경우 + - [x] μ„ νƒλœ ν…Œμ΄λΈ”μ΄ λΉ„μ—ˆμ„ 경우 : μœ μ € 생성, 메뉴 정보 λ„£κΈ° + - [x] μ„ νƒλœ ν…Œμ΄λΈ”μ΄ λΉ„μ§€ μ•Šμ•˜μ„ 경우 : ν•΄λ‹Ήμœ μ € 메뉴 정보 μΆ”κ°€ ### βœ… κ²°μ œν•˜κΈ° κΈ°λŠ₯ diff --git a/src/main/java/Application.java b/src/main/java/Application.java index ea0d34fd..b2479787 100644 --- a/src/main/java/Application.java +++ b/src/main/java/Application.java @@ -1,21 +1,8 @@ -import domain.Menu; -import domain.MenuRepository; -import domain.Table; -import domain.TableRepository; -import view.InputView; -import view.OutputView; - -import java.util.List; +import controller.Controller; public class Application { - // TODO κ΅¬ν˜„ μ§„ν–‰ - public static void main(String[] args) { - final List tables = TableRepository.tables(); - OutputView.printTables(tables); - - final int tableNumber = InputView.inputTableNumber(); - - final List menus = MenuRepository.menus(); - OutputView.printMenus(menus); - } + // TODO κ΅¬ν˜„ μ§„ν–‰ + public static void main(String[] args) { + new Controller(); + } } diff --git a/src/main/java/controller/Controller.java b/src/main/java/controller/Controller.java new file mode 100644 index 00000000..cae8109a --- /dev/null +++ b/src/main/java/controller/Controller.java @@ -0,0 +1,66 @@ +package controller; + +import controller.view.InputController; +import domain.User; +import domain.repository.MenuRepository; +import domain.repository.TableRepository; +import domain.repository.TableStateRepository; +import view.OutputView; + +public class Controller { + public Controller() { + start(); + } + + private void start() { + // μž‘λ™ μ‹œμž‘ + OutputView.printMainList(); + int mainNumber = InputController.getMainNumber(); + if (mainNumber == 1) { + runOrder(); + } + if (mainNumber == 2) { + runPayment(); + } + if (mainNumber == 3) { + return; + } + System.out.println(new TableStateRepository()); + start(); + } + + private void runOrder() { + try { + setTable(getTableNumber(), getMenuNumber(), getMenuCount()); + } catch (IllegalArgumentException e) { + OutputView.printError(e.getMessage()); + runOrder(); + } + } + + private void runPayment() { + + } + + private void setTable(int tableNumber, int menuNumber, int menuCount) { + if (TableStateRepository.isUserEmpty(tableNumber)) { + TableStateRepository.initiateTableUser(tableNumber, new User(tableNumber, menuNumber, menuCount)); + return; + } + TableStateRepository.getUser(tableNumber).addMenu(menuNumber, menuCount); + } + + private int getTableNumber() { + OutputView.printTables(TableRepository.tables()); + return InputController.getTableNumber(); + } + + private int getMenuNumber() { + OutputView.printMenus(MenuRepository.menus()); + return InputController.getMenuNumber(); + } + + private int getMenuCount() { + return InputController.getMenuCount(); + } +} diff --git a/src/main/java/controller/ControllerTemplate.java b/src/main/java/controller/ControllerTemplate.java deleted file mode 100644 index 79ba66e0..00000000 --- a/src/main/java/controller/ControllerTemplate.java +++ /dev/null @@ -1,15 +0,0 @@ -package controller; - -public class ControllerTemplate { - public ControllerTemplate() { - initiate(); - start(); - } - private void initiate() { - // μ΄ˆκΈ°ν™”/set - } - - private void start() { - // μž‘λ™ μ‹œμž‘ - } -} diff --git a/src/main/java/controller/view/InputController.java b/src/main/java/controller/view/InputController.java new file mode 100644 index 00000000..edcf6233 --- /dev/null +++ b/src/main/java/controller/view/InputController.java @@ -0,0 +1,56 @@ +package controller.view; + +import domain.Table; +import utils.Converter; +import utils.validator.MainNumberValidator; +import utils.validator.MenuCountValidator; +import utils.validator.MenuNumberValidator; +import utils.validator.TableNumberValidator; +import view.InputView; +import view.OutputView; + +public class InputController { + public static int getMainNumber() { + try { + String numString = InputView.inputMainNumber(); + new MainNumberValidator(numString); + return Converter.getInt(numString); + } catch (IllegalArgumentException e) { + OutputView.printError(e.getMessage()); + return getMainNumber(); + } + } + + public static int getTableNumber() { + try { + String numString = InputView.inputTableNumber(); + new TableNumberValidator(numString); + return Converter.getInt(numString); + } catch (IllegalArgumentException e) { + OutputView.printError(e.getMessage()); + return getTableNumber(); + } + } + + public static int getMenuNumber() { + try { + String numString = InputView.inputMenuNumber(); + new MenuNumberValidator(numString); + return Converter.getInt(numString); + } catch (IllegalArgumentException e) { + OutputView.printError(e.getMessage()); + return getMenuNumber(); + } + } + + public static int getMenuCount() { + try { + String numString = InputView.inputMenuCountNumber(); + new MenuCountValidator(numString); + return Converter.getInt(numString); + } catch (IllegalArgumentException e) { + OutputView.printError(e.getMessage()); + return getMenuCount(); + } + } +} diff --git a/src/main/java/controller/view/InputControllerTemplate.java b/src/main/java/controller/view/InputControllerTemplate.java deleted file mode 100644 index 58aad4f8..00000000 --- a/src/main/java/controller/view/InputControllerTemplate.java +++ /dev/null @@ -1,18 +0,0 @@ -package controller.view; - -import template.domain.ModelTemplate; -import template.view.InputView; -import template.view.OutputView; - -public class InputControllerTemplate { - public static ModelTemplate getModel() { - try { - return new ModelTemplate(InputView.templateInput()); - } catch (IllegalArgumentException e) { - OutputView.printError(e.getMessage()); - return getModel(); - } - } - - // ... -} diff --git a/src/main/java/domain/Menu.java b/src/main/java/domain/Menu.java index 9f5a078e..641742b9 100644 --- a/src/main/java/domain/Menu.java +++ b/src/main/java/domain/Menu.java @@ -1,20 +1,24 @@ package domain; public class Menu { - private final int number; - private final String name; - private final Category category; - private final int price; + private final int number; + private final String name; + private final Category category; + private final int price; - public Menu(final int number, final String name, final Category category, final int price) { - this.number = number; - this.name = name; - this.category = category; - this.price = price; - } + public Menu(final int number, final String name, final Category category, final int price) { + this.number = number; + this.name = name; + this.category = category; + this.price = price; + } - @Override - public String toString() { - return category + " " + number + " - " + name + " : " + price + "원"; - } + public int getNumber() { + return number; + } + + @Override + public String toString() { + return category + " " + number + " - " + name + " : " + price + "원"; + } } diff --git a/src/main/java/domain/MenuRepository.java b/src/main/java/domain/MenuRepository.java deleted file mode 100644 index fd3fe537..00000000 --- a/src/main/java/domain/MenuRepository.java +++ /dev/null @@ -1,24 +0,0 @@ -package domain; - -import java.util.ArrayList; -import java.util.Collections; -import java.util.List; - -public class MenuRepository { - private static final List menus = new ArrayList<>(); - - static { - menus.add(new Menu(1, "ν›„λΌμ΄λ“œ", Category.CHICKEN, 16_000)); - menus.add(new Menu(2, "μ–‘λ…μΉ˜ν‚¨", Category.CHICKEN, 16_000)); - menus.add(new Menu(3, "λ°˜λ°˜μΉ˜ν‚¨", Category.CHICKEN, 16_000)); - menus.add(new Menu(4, "톡ꡬ이", Category.CHICKEN, 16_000)); - menus.add(new Menu(5, "κ°„μž₯μΉ˜ν‚¨", Category.CHICKEN, 17_000)); - menus.add(new Menu(6, "μˆœμ‚΄μΉ˜ν‚¨", Category.CHICKEN, 17_000)); - menus.add(new Menu(21, "콜라", Category.BEVERAGE, 1_000)); - menus.add(new Menu(22, "사이닀", Category.BEVERAGE, 1_000)); - } - - public static List menus() { - return Collections.unmodifiableList(menus); - } -} diff --git a/src/main/java/domain/MenuState.java b/src/main/java/domain/MenuState.java new file mode 100644 index 00000000..e642f9e0 --- /dev/null +++ b/src/main/java/domain/MenuState.java @@ -0,0 +1,24 @@ +package domain; + +import utils.validator.MenuCountValidator; + +public class MenuState { + public Menu menu; + private int count; + + public MenuState(Menu menu, int count) { + this.menu = menu; + addCount(count); + this.count = count; + } + + @Override + public String toString() { + return "MenuState{" + "menu=" + menu + ", count=" + count + '}'; + } + + public void addCount(int count) { + new MenuCountValidator(this.count + count); + this.count += count; + } +} diff --git a/src/main/java/domain/ModelTemplate.java b/src/main/java/domain/ModelTemplate.java index 0edc6a42..ed387f8a 100644 --- a/src/main/java/domain/ModelTemplate.java +++ b/src/main/java/domain/ModelTemplate.java @@ -1,12 +1,10 @@ package domain; -import template.utils.validator.TemplateValidator; - public class ModelTemplate { private int model; public ModelTemplate(String model) { - new TemplateValidator(model); + // 컨버터 μ΄μš©ν•΄ κ°’ μ μ ˆν•˜κ²Œ λ³€κ²½ } diff --git a/src/main/java/domain/Table.java b/src/main/java/domain/Table.java index 500c517e..1fa4dfbe 100644 --- a/src/main/java/domain/Table.java +++ b/src/main/java/domain/Table.java @@ -1,14 +1,18 @@ package domain; public class Table { - private final int number; + private final int number; - public Table(final int number) { - this.number = number; - } + public Table(final int number) { + this.number = number; + } - @Override - public String toString() { - return Integer.toString(number); - } + public int getNumber() { + return number; + } + + @Override + public String toString() { + return Integer.toString(number); + } } diff --git a/src/main/java/domain/TableRepository.java b/src/main/java/domain/TableRepository.java deleted file mode 100644 index c9c791e2..00000000 --- a/src/main/java/domain/TableRepository.java +++ /dev/null @@ -1,22 +0,0 @@ -package domain; - -import java.util.ArrayList; -import java.util.Collections; -import java.util.List; - -public class TableRepository { - private static final List
tables = new ArrayList<>(); - - static { - tables.add(new Table(1)); - tables.add(new Table(2)); - tables.add(new Table(3)); - tables.add(new Table(5)); - tables.add(new Table(6)); - tables.add(new Table(8)); - } - - public static List
tables() { - return Collections.unmodifiableList(tables); - } -} diff --git a/src/main/java/domain/User.java b/src/main/java/domain/User.java new file mode 100644 index 00000000..2b40294b --- /dev/null +++ b/src/main/java/domain/User.java @@ -0,0 +1,37 @@ +package domain; + +import java.util.ArrayList; + +import domain.repository.MenuRepository; + +public class User { + private final int tableNum; + private final ArrayList menus = new ArrayList<>(); + + public User(int tableNum, int menuNum, int menuCount) { + this.tableNum = tableNum; + this.menus.add(new MenuState(MenuRepository.getMenuByNum(menuNum), menuCount)); + } + + public int getTableNum() { + return tableNum; + } + + public void addMenu(int menuNum, int menuCount) { + if (menus.stream().noneMatch(menuState -> menuState.menu.getNumber() == menuNum)) { + menus.add(new MenuState(MenuRepository.getMenuByNum(menuNum), menuCount)); + return; + } + MenuState state = menus.stream() + .filter(menuState -> menuState.menu.getNumber() == menuNum) + .findFirst() + .orElse(null); + assert state != null; + state.addCount(menuCount); + } + + @Override + public String toString() { + return "user-ν…Œμ΄λΈ”" + tableNum + " : " + menus; + } +} diff --git a/src/main/java/domain/repository/MenuRepository.java b/src/main/java/domain/repository/MenuRepository.java new file mode 100644 index 00000000..1f409d07 --- /dev/null +++ b/src/main/java/domain/repository/MenuRepository.java @@ -0,0 +1,37 @@ +package domain.repository; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collections; +import java.util.List; + +import domain.Category; +import domain.Menu; +import domain.Table; + +public class MenuRepository { + private static final List menus = new ArrayList<>(); + + static { + menus.add(new Menu(1, "ν›„λΌμ΄λ“œ", Category.CHICKEN, 16_000)); + menus.add(new Menu(2, "μ–‘λ…μΉ˜ν‚¨", Category.CHICKEN, 16_000)); + menus.add(new Menu(3, "λ°˜λ°˜μΉ˜ν‚¨", Category.CHICKEN, 16_000)); + menus.add(new Menu(4, "톡ꡬ이", Category.CHICKEN, 16_000)); + menus.add(new Menu(5, "κ°„μž₯μΉ˜ν‚¨", Category.CHICKEN, 17_000)); + menus.add(new Menu(6, "μˆœμ‚΄μΉ˜ν‚¨", Category.CHICKEN, 17_000)); + menus.add(new Menu(21, "콜라", Category.BEVERAGE, 1_000)); + menus.add(new Menu(22, "사이닀", Category.BEVERAGE, 1_000)); + } + + public static List menus() { + return Collections.unmodifiableList(menus); + } + + public static Menu getMenuByNum(int num) { + return menus.stream().filter(menu -> menu.getNumber() == num) + .findFirst() + .orElseThrow(() -> new IllegalArgumentException("ν•΄λ‹Ή 숫자의 메뉴가 μ—†μŠ΅λ‹ˆλ‹€.")); + } + + public static final int[] MENU_NUMS = menus.stream().mapToInt(Menu::getNumber).toArray(); +} diff --git a/src/main/java/domain/repository/RepositoryTemplate.java b/src/main/java/domain/repository/RepositoryTemplate.java deleted file mode 100644 index d793bcef..00000000 --- a/src/main/java/domain/repository/RepositoryTemplate.java +++ /dev/null @@ -1,22 +0,0 @@ -package domain.repository; - -import utils.Constants; - -public class RepositoryTemplate { - public static final Object model = null; - public static final Object[] models = null; - - public static Object get() { - return model; - } - - public static Object find(String name) { - for (Object obj : models) { - if (obj.equals(name)) { - return obj; - } - } - // κ²°κ³Όκ°€ μ—†μœΌλ©΄ μ˜ˆμ™Έμ²˜λ¦¬ - throw new IllegalArgumentException(Constants.ERROR); - } -} diff --git a/src/main/java/domain/repository/TableRepository.java b/src/main/java/domain/repository/TableRepository.java new file mode 100644 index 00000000..bfa39dcf --- /dev/null +++ b/src/main/java/domain/repository/TableRepository.java @@ -0,0 +1,34 @@ +package domain.repository; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; + +import domain.Menu; +import domain.Table; + +public class TableRepository { + private static final List
tables = new ArrayList<>(); + + static { + tables.add(new Table(1)); + tables.add(new Table(2)); + tables.add(new Table(3)); + tables.add(new Table(5)); + tables.add(new Table(6)); + tables.add(new Table(8)); + } + + public static List
tables() { + return Collections.unmodifiableList(tables); + } + + public static Table getTableByNum(int num) { + return tables.stream().filter(table -> table.getNumber() == num) + .findFirst() + .orElseThrow(() -> new IllegalArgumentException("ν•΄λ‹Ή 숫자의 ν…Œμ΄λΈ”μ΄ μ—†μŠ΅λ‹ˆλ‹€.")); + } + + public static final int[] TABLE_NUMS = tables.stream().mapToInt(Table::getNumber).toArray(); +} + diff --git a/src/main/java/domain/repository/TableStateRepository.java b/src/main/java/domain/repository/TableStateRepository.java new file mode 100644 index 00000000..6888a335 --- /dev/null +++ b/src/main/java/domain/repository/TableStateRepository.java @@ -0,0 +1,30 @@ +package domain.repository; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.LinkedHashMap; +import java.util.List; + +import domain.Table; +import domain.User; + +public class TableStateRepository { + private static final LinkedHashMap tableStates = new LinkedHashMap<>(); + + public static boolean isUserEmpty(int tableNum) { + return !tableStates.containsKey(tableNum); + } + + public static void initiateTableUser(int tableNum, User user) { + tableStates.put(tableNum, user); + } + + public static User getUser(int tableNum) { + return tableStates.get(tableNum); + } + + public String toString() { + return "ν…Œμ΄λΈ” λ„˜λ²„ " + TableStateRepository.tableStates.toString().substring(1, TableStateRepository.tableStates.toString().length()-1); + } +} + diff --git a/src/main/java/utils/Constants.java b/src/main/java/utils/Constants.java index 277e633d..2e6ab855 100644 --- a/src/main/java/utils/Constants.java +++ b/src/main/java/utils/Constants.java @@ -1,17 +1,27 @@ package utils; +import java.util.Arrays; import java.util.regex.Pattern; +import domain.Menu; +import domain.repository.MenuRepository; +import domain.repository.TableRepository; + public class Constants { // λ‹¨μœ„ μƒμˆ˜ public static final String CONSTANT = "μƒμˆ˜"; // μ •κ·œμ‹ // μ‚¬μ΄νŠΈ: https://regexr.com/5mhou - public static final String REGEX = "^[κ°€-힣a-zA-Z]+$"; - public static final Pattern PATTERN = Pattern.compile(REGEX); + public static final Pattern PATTERN_MAIN_NUM = Pattern.compile("^[123]$"); + public static final Pattern PATTERN_COUNT_NUM = Pattern.compile("^[1-9][0-9]?$"); // 였λ₯˜λ©”μ„Έμ§€ κ΄€λ ¨ μƒμˆ˜ - public static final String ERROR = "[ERROR] "; - public static final String ERROR_NUMBER_PATTERN = ERROR + "숫자 μž…λ ₯은 λΉ„μ§€ μ•Šμ€ 1 μ΄μƒμ˜ μ •μˆ˜ ν˜•μ‹μ΄μ–΄μ•Ό ν•œλ‹€."; + public static final String ERROR_NUMBER_PATTERN = "숫자 μž…λ ₯은 λΉ„μ§€ μ•Šμ€ 1 μ΄μƒμ˜ μ •μˆ˜ ν˜•μ‹μ΄μ–΄μ•Ό ν•œλ‹€."; + public static final String ERROR_MAIN_NUMBER_PATTERN = "123 쀑 ν•˜λ‚˜λ₯Ό μž…λ ₯ν•΄μ•Ό ν•œλ‹€."; + public static final String ERROR_TABLE_NUMBER_PATTERN = + Arrays.toString(TableRepository.TABLE_NUMS) + " 쀑 ν•˜λ‚˜λ₯Ό μž…λ ₯ν•΄μ•Ό ν•œλ‹€."; + public static final String ERROR_MENU_NUMBER_PATTERN = + Arrays.toString(MenuRepository.MENU_NUMS) + " 쀑 ν•˜λ‚˜λ₯Ό μž…λ ₯ν•΄μ•Ό ν•œλ‹€."; + public static final String ERROR_MENU_COUNT_PATTERN = "ν•œ 메뉴 λ‹Ή 99개 이상 μ£Όλ¬Έν•  수 μ—†λ‹€."; } diff --git a/src/main/java/utils/Converter.java b/src/main/java/utils/Converter.java index 050c58e9..98eab4d4 100644 --- a/src/main/java/utils/Converter.java +++ b/src/main/java/utils/Converter.java @@ -7,6 +7,10 @@ public static int getInt(String moneyString) { return Integer.parseInt(moneyString); } + public static String getString(int count) { + return Integer.toString(count); + } + // spilt μ½”λ“œ // public static ArrayList getBeverages(String beverageString) { // ArrayList beverages = new ArrayList<>(); diff --git a/src/main/java/utils/validator/MainNumberValidator.java b/src/main/java/utils/validator/MainNumberValidator.java new file mode 100644 index 00000000..bcb950cb --- /dev/null +++ b/src/main/java/utils/validator/MainNumberValidator.java @@ -0,0 +1,22 @@ +package utils.validator; + +import utils.Constants; + +public class MainNumberValidator { + private final String numberString; + + public MainNumberValidator(String numberString) { + this.numberString = numberString; + validate(); + } + + private void validate() { + isRightString(); + } + + private void isRightString() { + if (!Constants.PATTERN_MAIN_NUM.matcher(numberString).matches()) { + throw new IllegalArgumentException(Constants.ERROR_MAIN_NUMBER_PATTERN); + } + } +} diff --git a/src/main/java/utils/validator/MenuCountValidator.java b/src/main/java/utils/validator/MenuCountValidator.java new file mode 100644 index 00000000..c847c258 --- /dev/null +++ b/src/main/java/utils/validator/MenuCountValidator.java @@ -0,0 +1,28 @@ +package utils.validator; + +import utils.Constants; +import utils.Converter; + +public class MenuCountValidator { + private final String countString; + + public MenuCountValidator(String countString) { + this.countString = countString; + validate(); + } + + public MenuCountValidator(int count) { + this.countString = Converter.getString(count); + validate(); + } + + private void validate() { + isRightString(); + } + + private void isRightString() { + if (!Constants.PATTERN_COUNT_NUM.matcher(countString).matches()) { + throw new IllegalArgumentException(Constants.ERROR_MENU_COUNT_PATTERN); + } + } +} diff --git a/src/main/java/utils/validator/MenuNumberValidator.java b/src/main/java/utils/validator/MenuNumberValidator.java new file mode 100644 index 00000000..ec7a4d14 --- /dev/null +++ b/src/main/java/utils/validator/MenuNumberValidator.java @@ -0,0 +1,26 @@ +package utils.validator; + +import java.util.Arrays; + +import domain.repository.MenuRepository; +import utils.Constants; +import utils.Converter; + +public class MenuNumberValidator { + private final String menuNumber; + + public MenuNumberValidator(String menuNumber) { + this.menuNumber = menuNumber; + validate(); + } + + private void validate() { + isRightString(); + } + + private void isRightString() { + if (Arrays.stream(MenuRepository.MENU_NUMS).noneMatch(num -> num == Converter.getInt(menuNumber))) { + throw new IllegalArgumentException(Constants.ERROR_MENU_NUMBER_PATTERN); + } + } +} diff --git a/src/main/java/utils/validator/TableNumberValidator.java b/src/main/java/utils/validator/TableNumberValidator.java new file mode 100644 index 00000000..89abd17d --- /dev/null +++ b/src/main/java/utils/validator/TableNumberValidator.java @@ -0,0 +1,26 @@ +package utils.validator; + +import java.util.Arrays; + +import domain.repository.TableRepository; +import utils.Constants; +import utils.Converter; + +public class TableNumberValidator { + private final String tableNumber; + + public TableNumberValidator(String tableNumber) { + this.tableNumber = tableNumber; + validate(); + } + + private void validate() { + isRightString(); + } + + private void isRightString() { + if (Arrays.stream(TableRepository.TABLE_NUMS).noneMatch(num -> num == Converter.getInt(tableNumber))) { + throw new IllegalArgumentException(Constants.ERROR_TABLE_NUMBER_PATTERN); + } + } +} diff --git a/src/main/java/utils/validator/TemplateValidator.java b/src/main/java/utils/validator/TemplateValidator.java deleted file mode 100644 index b721f1e2..00000000 --- a/src/main/java/utils/validator/TemplateValidator.java +++ /dev/null @@ -1,22 +0,0 @@ -package utils.validator; - -import utils.Constants; - -public class TemplateValidator { - private final String name; - - public TemplateValidator(String name) { - this.name = name; - validate(); - } - - private void validate() { - isRightString(); - } - - private void isRightString() { - if (!Constants.PATTERN.matcher(name).matches()) { - throw new IllegalArgumentException(Constants.ERROR_NUMBER_PATTERN); - } - } -} diff --git a/src/main/java/view/InputView.java b/src/main/java/view/InputView.java index d5db24e2..a46c7b37 100644 --- a/src/main/java/view/InputView.java +++ b/src/main/java/view/InputView.java @@ -3,10 +3,41 @@ import java.util.Scanner; public class InputView { - private static final Scanner scanner = new Scanner(System.in); + private static final Scanner scanner = new Scanner(System.in); - public static int inputTableNumber() { - System.out.println("## μ£Όλ¬Έν•  ν…Œμ΄λΈ”μ„ μ„ νƒν•˜μ„Έμš”."); - return scanner.nextInt(); - } + public static String inputMainNumber() { + System.out.println("## μ›ν•˜λŠ” κΈ°λŠ₯을 μ„ νƒν•˜μ„Έμš”."); + String answer = scanner.nextLine(); + OutputView.printBreak(); + return answer; + } + + public static String inputTableNumber() { + System.out.println("## ν…Œμ΄λΈ”μ„ μ„ νƒν•˜μ„Έμš”."); + String answer = scanner.nextLine(); + OutputView.printBreak(); + return answer; + } + + public static String inputMenuNumber() { + System.out.println("## 등둝할 메뉴λ₯Ό μ„ νƒν•˜μ„Έμš”."); + String answer = scanner.nextLine(); + OutputView.printBreak(); + return answer; + } + + public static String inputMenuCountNumber() { + System.out.println("## λ©”λ‰΄μ˜ μˆ˜λŸ‰μ„ μž…λ ₯ν•˜μ„Έμš”."); + String answer = scanner.nextLine(); + OutputView.printBreak(); + return answer; + } + + public static String inputPayNumber() { + System.out.println("## 1번 ν…Œμ΄λΈ”μ˜ 결제λ₯Ό μ§„ν–‰ν•©λ‹ˆλ‹€.\n" + + "## μ‹ μš© μΉ΄λ“œλŠ” 1번, ν˜„κΈˆμ€ 2번"); + String answer = scanner.nextLine(); + OutputView.printBreak(); + return answer; + } } diff --git a/src/main/java/view/OutputView.java b/src/main/java/view/OutputView.java index edb25cc4..12c484bf 100644 --- a/src/main/java/view/OutputView.java +++ b/src/main/java/view/OutputView.java @@ -6,35 +6,54 @@ import java.util.List; public class OutputView { - private static final String TOP_LINE = "β”Œ ─ ┐"; - private static final String TABLE_FORMAT = "| %s |"; - private static final String BOTTOM_LINE = "β”” ─ β”˜"; - - public static void printTables(final List
tables) { - System.out.println("## ν…Œμ΄λΈ” λͺ©λ‘"); - final int size = tables.size(); - printLine(TOP_LINE, size); - printTableNumbers(tables); - printLine(BOTTOM_LINE, size); - } - - public static void printMenus(final List menus) { - for (final Menu menu : menus) { - System.out.println(menu); - } - } - - private static void printLine(final String line, final int count) { - for (int index = 0; index < count; index++) { - System.out.print(line); - } - System.out.println(); - } - - private static void printTableNumbers(final List
tables) { - for (final Table table : tables) { - System.out.printf(TABLE_FORMAT, table); - } - System.out.println(); - } + private static final String TOP_LINE = "β”Œ ─ ┐"; + private static final String TABLE_FORMAT = "| %s |"; + private static final String BOTTOM_LINE = "β”” ─ β”˜"; + public static final String ERROR = "[ERROR] "; + + public static void printMainList() { + System.out.println("## 메인화면\n" + + "1 - 주문등둝\n" + + "2 - κ²°μ œν•˜κΈ°\n" + + "3 - ν”„λ‘œκ·Έλž¨ μ’…λ£Œ\n"); + } + + public static void printTables(final List
tables) { + System.out.println("## ν…Œμ΄λΈ” λͺ©λ‘"); + final int size = tables.size(); + printLine(TOP_LINE, size); + printTableNumbers(tables); + printLine(BOTTOM_LINE, size); + printBreak(); + } + + public static void printMenus(final List menus) { + for (final Menu menu : menus) { + System.out.println(menu); + } + printBreak(); + } + + public static void printError(String message) { + System.out.println(ERROR + message); + printBreak(); + } + + private static void printLine(final String line, final int count) { + for (int index = 0; index < count; index++) { + System.out.print(line); + } + printBreak(); + } + + private static void printTableNumbers(final List
tables) { + for (final Table table : tables) { + System.out.printf(TABLE_FORMAT, table); + } + printBreak(); + } + + public static void printBreak() { + System.out.println(); + } } From 825628be2824888cc68a375afe74922817b8ce12 Mon Sep 17 00:00:00 2001 From: BETTERFUTURE4 Date: Fri, 17 Dec 2021 17:10:51 +0900 Subject: [PATCH 3/9] =?UTF-8?q?feat:=20=EA=B2=B0=EC=A0=9C=ED=95=98?= =?UTF-8?q?=EA=B8=B0=20=EB=B0=8F=20=EC=B6=9C=EB=A0=A5=20=EA=B8=B0=EB=8A=A5?= =?UTF-8?q?=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 35 ++++++------- src/main/java/controller/Controller.java | 51 +++---------------- src/main/java/controller/run/Calculate.java | 13 +++++ .../java/controller/run/OrderController.java | 46 +++++++++++++++++ .../controller/run/PaymentController.java | 29 +++++++++++ .../java/controller/view/InputController.java | 25 ++++++++- src/main/java/domain/Menu.java | 8 +++ src/main/java/domain/MenuState.java | 9 ++-- src/main/java/domain/User.java | 22 +++++--- .../repository/TableStateRepository.java | 7 ++- src/main/java/utils/Constants.java | 10 ++-- .../utils/validator/PayNumberValidator.java | 22 ++++++++ .../utils/validator/TableNumberValidator.java | 6 +-- .../validator/TablePayNumberValidator.java | 23 +++++++++ src/main/java/view/OutputView.java | 18 +++++++ 15 files changed, 243 insertions(+), 81 deletions(-) create mode 100644 src/main/java/controller/run/Calculate.java create mode 100644 src/main/java/controller/run/OrderController.java create mode 100644 src/main/java/controller/run/PaymentController.java create mode 100644 src/main/java/utils/validator/PayNumberValidator.java create mode 100644 src/main/java/utils/validator/TablePayNumberValidator.java diff --git a/README.md b/README.md index 7f66bd22..ee01d0fd 100644 --- a/README.md +++ b/README.md @@ -29,29 +29,30 @@ ### βœ… κ²°μ œν•˜κΈ° κΈ°λŠ₯ -- [ ] ν…Œμ΄λΈ” 선택 - - [ ] [μ˜ˆμ™Έ] μ„ νƒλœ ν…Œμ΄λΈ”μ΄ μ°¨ μžˆμ„ 경우 - - [ ] κΈˆμ•‘κ³„μ‚° - - [ ] λ©”λ‰΄λ§ˆλ‹€ μˆ˜λŸ‰ 10개 λ‹¨μœ„λ§ˆλ‹€ λ§Œμ› 할인 - - [ ] κ²°μ œλ°©μ‹ μ €μž₯ - - [ ] [μ˜ˆμ™Έ] ν•΄λ‹Ή μˆ«μžμ€‘μ— μ—†λŠ” 경우 - - [ ] ν˜„κΈˆκ²°μ œ 5% 할인 -- [ ] μ΅œμ’… κ²°μ œκΈˆμ•‘ 좜λ ₯ +- [x] ν…Œμ΄λΈ” 선택 + - [x] [μ˜ˆμ™Έ] μ„ νƒλœ ν…Œμ΄λΈ”μ΄ μ°¨μžˆμ§€ μ•Šμ€ 경우 + - [x] κΈˆμ•‘κ³„μ‚° + - [x] λ©”λ‰΄λ§ˆλ‹€ μˆ˜λŸ‰ 10개 λ‹¨μœ„λ§ˆλ‹€ λ§Œμ› 할인 + - [x] κ²°μ œλ°©μ‹ μ €μž₯ + - [x] [μ˜ˆμ™Έ] ν•΄λ‹Ή μˆ«μžμ€‘μ— μ—†λŠ” 경우 + - [x] ν˜„κΈˆκ²°μ œ 5% 할인 +- [x] μ΅œμ’… κ²°μ œκΈˆμ•‘ 좜λ ₯ +- [x] ν•΄λ‹Ή ν…Œμ΄λΈ” μœ μ € 제거 ### βœ… 좜λ ₯ -- [ ] 메인화면 좜λ ₯ -- [ ] ν…Œμ΄λΈ”λͺ©λ‘ 좜λ ₯ -- [ ] 메뉴 좜λ ₯ -- [ ] κ²°μ œλ°©μ‹ 좜λ ₯ +- [x] 메인화면 좜λ ₯ +- [x] ν…Œμ΄λΈ”λͺ©λ‘ 좜λ ₯ +- [x] 메뉴 좜λ ₯ +- [x] κ²°μ œλ°©μ‹ 좜λ ₯ ### βœ… κ³Όμ • -- [ ] 반볡 - - [ ] 메인화면 μž…λ ₯ λ°›κΈ° - - [ ] [μ˜ˆμ™Έ] ν•΄λ‹Ή 숫자 쀑에 μ—†λŠ” 경우 - - [ ] ν”„λ‘œκ·Έλž¨ μ’…λ£Œ μž…λ ₯ μ‹œ μ’…λ£Œ - - [ ] 이외 : 주문등둝/κ²°μ œν•˜κΈ° μˆ˜ν–‰ +- [x] 반볡 + - [x] 메인화면 μž…λ ₯ λ°›κΈ° + - [x] [μ˜ˆμ™Έ] ν•΄λ‹Ή 숫자 쀑에 μ—†λŠ” 경우 + - [x] ν”„λ‘œκ·Έλž¨ μ’…λ£Œ μž…λ ₯ μ‹œ μ’…λ£Œ + - [x] 이외 : 주문등둝/κ²°μ œν•˜κΈ° μˆ˜ν–‰ --- diff --git a/src/main/java/controller/Controller.java b/src/main/java/controller/Controller.java index cae8109a..8714c552 100644 --- a/src/main/java/controller/Controller.java +++ b/src/main/java/controller/Controller.java @@ -1,66 +1,29 @@ package controller; +import controller.run.OrderController; +import controller.run.PaymentController; import controller.view.InputController; -import domain.User; -import domain.repository.MenuRepository; -import domain.repository.TableRepository; import domain.repository.TableStateRepository; import view.OutputView; public class Controller { public Controller() { - start(); + run(); } - private void start() { - // μž‘λ™ μ‹œμž‘ + private void run() { OutputView.printMainList(); int mainNumber = InputController.getMainNumber(); if (mainNumber == 1) { - runOrder(); + new OrderController().run(); } if (mainNumber == 2) { - runPayment(); + new PaymentController().run(); } if (mainNumber == 3) { return; } System.out.println(new TableStateRepository()); - start(); - } - - private void runOrder() { - try { - setTable(getTableNumber(), getMenuNumber(), getMenuCount()); - } catch (IllegalArgumentException e) { - OutputView.printError(e.getMessage()); - runOrder(); - } - } - - private void runPayment() { - - } - - private void setTable(int tableNumber, int menuNumber, int menuCount) { - if (TableStateRepository.isUserEmpty(tableNumber)) { - TableStateRepository.initiateTableUser(tableNumber, new User(tableNumber, menuNumber, menuCount)); - return; - } - TableStateRepository.getUser(tableNumber).addMenu(menuNumber, menuCount); - } - - private int getTableNumber() { - OutputView.printTables(TableRepository.tables()); - return InputController.getTableNumber(); - } - - private int getMenuNumber() { - OutputView.printMenus(MenuRepository.menus()); - return InputController.getMenuNumber(); - } - - private int getMenuCount() { - return InputController.getMenuCount(); + run(); } } diff --git a/src/main/java/controller/run/Calculate.java b/src/main/java/controller/run/Calculate.java new file mode 100644 index 00000000..2976c839 --- /dev/null +++ b/src/main/java/controller/run/Calculate.java @@ -0,0 +1,13 @@ +package controller.run; + +import domain.repository.TableStateRepository; + +public class Calculate { + public static int getDiscountPay(int tableNum) { + return TableStateRepository.getUser(tableNum).getNoDiscountPay(); + } + + public static int getCashPay(int tableNum) { + return (int)(getDiscountPay(tableNum) * 0.95); + } +} diff --git a/src/main/java/controller/run/OrderController.java b/src/main/java/controller/run/OrderController.java new file mode 100644 index 00000000..838d4b38 --- /dev/null +++ b/src/main/java/controller/run/OrderController.java @@ -0,0 +1,46 @@ +package controller.run; + +import controller.view.InputController; +import domain.User; +import domain.repository.MenuRepository; +import domain.repository.TableRepository; +import domain.repository.TableStateRepository; +import view.OutputView; + +public class OrderController { + public void run() { + try { + setTable(getTableNumber(), getMenuNumber(), getMenuCount()); + } catch (IllegalArgumentException e) { + OutputView.printError(e.getMessage()); + run(); + } + } + + private void setTable(int tableNumber, int menuNumber, int menuCount) { + if (TableStateRepository.isUserEmpty(tableNumber)) { + TableStateRepository.initiateTableUser(tableNumber, new User(menuNumber, menuCount)); + return; + } + TableStateRepository.getUser(tableNumber).addMenu(menuNumber, menuCount); + } + + private int getTableNumber() { + OutputView.printTables(TableRepository.tables()); + return InputController.getTableNumber(); + } + + private int getPayTableNumber() { + OutputView.printTables(TableRepository.tables()); + return InputController.getPayTableNumber(); + } + + private int getMenuNumber() { + OutputView.printMenus(MenuRepository.menus()); + return InputController.getMenuNumber(); + } + + private int getMenuCount() { + return InputController.getMenuCount(); + } +} diff --git a/src/main/java/controller/run/PaymentController.java b/src/main/java/controller/run/PaymentController.java new file mode 100644 index 00000000..8bc29377 --- /dev/null +++ b/src/main/java/controller/run/PaymentController.java @@ -0,0 +1,29 @@ +package controller.run; + +import controller.view.InputController; +import domain.repository.TableRepository; +import domain.repository.TableStateRepository; +import view.OutputView; + +public class PaymentController { + public void run() { + int tableNumber = getPayTableNumber(); + OutputView.printTableMenus(tableNumber); + printPay(tableNumber, InputController.getPayNumber()); + TableStateRepository.deleteTableState(tableNumber); + } + + private void printPay(int tableNumber, int payNumber) { + if (payNumber == 1) { + OutputView.printPayMoney(Calculate.getDiscountPay(tableNumber)); + } + if (payNumber == 2) { + OutputView.printPayMoney(Calculate.getCashPay(tableNumber)); + } + } + + private int getPayTableNumber() { + OutputView.printTables(TableRepository.tables()); + return InputController.getPayTableNumber(); + } +} diff --git a/src/main/java/controller/view/InputController.java b/src/main/java/controller/view/InputController.java index edcf6233..8a5042de 100644 --- a/src/main/java/controller/view/InputController.java +++ b/src/main/java/controller/view/InputController.java @@ -1,11 +1,12 @@ package controller.view; -import domain.Table; import utils.Converter; import utils.validator.MainNumberValidator; import utils.validator.MenuCountValidator; import utils.validator.MenuNumberValidator; +import utils.validator.PayNumberValidator; import utils.validator.TableNumberValidator; +import utils.validator.TablePayNumberValidator; import view.InputView; import view.OutputView; @@ -21,6 +22,17 @@ public static int getMainNumber() { } } + public static int getPayNumber() { + try { + String numString = InputView.inputPayNumber(); + new PayNumberValidator(numString); + return Converter.getInt(numString); + } catch (IllegalArgumentException e) { + OutputView.printError(e.getMessage()); + return getPayNumber(); + } + } + public static int getTableNumber() { try { String numString = InputView.inputTableNumber(); @@ -32,6 +44,17 @@ public static int getTableNumber() { } } + public static int getPayTableNumber() { + try { + String numString = InputView.inputTableNumber(); + new TablePayNumberValidator(numString); + return Converter.getInt(numString); + } catch (IllegalArgumentException e) { + OutputView.printError(e.getMessage()); + return getPayTableNumber(); + } + } + public static int getMenuNumber() { try { String numString = InputView.inputMenuNumber(); diff --git a/src/main/java/domain/Menu.java b/src/main/java/domain/Menu.java index 641742b9..a6a9bba4 100644 --- a/src/main/java/domain/Menu.java +++ b/src/main/java/domain/Menu.java @@ -17,6 +17,14 @@ public int getNumber() { return number; } + public int getPrice() { + return price; + } + + public String getName() { + return name; + } + @Override public String toString() { return category + " " + number + " - " + name + " : " + price + "원"; diff --git a/src/main/java/domain/MenuState.java b/src/main/java/domain/MenuState.java index e642f9e0..1cd2c05a 100644 --- a/src/main/java/domain/MenuState.java +++ b/src/main/java/domain/MenuState.java @@ -12,13 +12,16 @@ public MenuState(Menu menu, int count) { this.count = count; } - @Override - public String toString() { - return "MenuState{" + "menu=" + menu + ", count=" + count + '}'; + public int getCount() { + return count; } public void addCount(int count) { new MenuCountValidator(this.count + count); this.count += count; } + @Override + public String toString() { + return menu.getName() + " " + count + " " + menu.getPrice(); + } } diff --git a/src/main/java/domain/User.java b/src/main/java/domain/User.java index 2b40294b..c09580d0 100644 --- a/src/main/java/domain/User.java +++ b/src/main/java/domain/User.java @@ -1,22 +1,17 @@ package domain; import java.util.ArrayList; +import java.util.stream.Stream; import domain.repository.MenuRepository; public class User { - private final int tableNum; private final ArrayList menus = new ArrayList<>(); - public User(int tableNum, int menuNum, int menuCount) { - this.tableNum = tableNum; + public User(int menuNum, int menuCount) { this.menus.add(new MenuState(MenuRepository.getMenuByNum(menuNum), menuCount)); } - public int getTableNum() { - return tableNum; - } - public void addMenu(int menuNum, int menuCount) { if (menus.stream().noneMatch(menuState -> menuState.menu.getNumber() == menuNum)) { menus.add(new MenuState(MenuRepository.getMenuByNum(menuNum), menuCount)); @@ -30,8 +25,19 @@ public void addMenu(int menuNum, int menuCount) { state.addCount(menuCount); } + public String[] getMenus() { + return menus.stream().map(MenuState::toString).toArray(String[]::new); + } + + public int getNoDiscountPay() { + return menus.stream() + .mapToInt(menuState -> menuState.menu.getPrice() * menuState.getCount() + - (menuState.getCount() / 10) * 10000) + .sum(); + } + @Override public String toString() { - return "user-ν…Œμ΄λΈ”" + tableNum + " : " + menus; + return "user-" + menus; } } diff --git a/src/main/java/domain/repository/TableStateRepository.java b/src/main/java/domain/repository/TableStateRepository.java index 6888a335..eed33ff2 100644 --- a/src/main/java/domain/repository/TableStateRepository.java +++ b/src/main/java/domain/repository/TableStateRepository.java @@ -23,8 +23,13 @@ public static User getUser(int tableNum) { return tableStates.get(tableNum); } + public static void deleteTableState(int tableNum) { + tableStates.remove(tableNum); + } + public String toString() { - return "ν…Œμ΄λΈ” λ„˜λ²„ " + TableStateRepository.tableStates.toString().substring(1, TableStateRepository.tableStates.toString().length()-1); + return "ν…Œμ΄λΈ” λ„˜λ²„ " + TableStateRepository.tableStates.toString() + .substring(1, TableStateRepository.tableStates.toString().length() - 1); } } diff --git a/src/main/java/utils/Constants.java b/src/main/java/utils/Constants.java index 2e6ab855..dfa87533 100644 --- a/src/main/java/utils/Constants.java +++ b/src/main/java/utils/Constants.java @@ -15,13 +15,15 @@ public class Constants { // μ‚¬μ΄νŠΈ: https://regexr.com/5mhou public static final Pattern PATTERN_MAIN_NUM = Pattern.compile("^[123]$"); public static final Pattern PATTERN_COUNT_NUM = Pattern.compile("^[1-9][0-9]?$"); + public static final Pattern PATTERN_PAY_NUM = Pattern.compile("^[12]$"); // 였λ₯˜λ©”μ„Έμ§€ κ΄€λ ¨ μƒμˆ˜ - public static final String ERROR_NUMBER_PATTERN = "숫자 μž…λ ₯은 λΉ„μ§€ μ•Šμ€ 1 μ΄μƒμ˜ μ •μˆ˜ ν˜•μ‹μ΄μ–΄μ•Ό ν•œλ‹€."; - public static final String ERROR_MAIN_NUMBER_PATTERN = "123 쀑 ν•˜λ‚˜λ₯Ό μž…λ ₯ν•΄μ•Ό ν•œλ‹€."; - public static final String ERROR_TABLE_NUMBER_PATTERN = - Arrays.toString(TableRepository.TABLE_NUMS) + " 쀑 ν•˜λ‚˜λ₯Ό μž…λ ₯ν•΄μ•Ό ν•œλ‹€."; + public static final String ERROR_MAIN_NUMBER_PATTERN = "숫자 1,2,3 쀑 ν•˜λ‚˜λ₯Ό μž…λ ₯ν•΄μ•Ό ν•œλ‹€."; + public static final String ERROR_TABLE_NUMBER_PATTERN = "숫자" + + Arrays.toString(TableRepository.TABLE_NUMS) + " 쀑 ν•˜λ‚˜λ₯Ό μž…λ ₯ν•΄μ•Ό ν•œλ‹€."; public static final String ERROR_MENU_NUMBER_PATTERN = Arrays.toString(MenuRepository.MENU_NUMS) + " 쀑 ν•˜λ‚˜λ₯Ό μž…λ ₯ν•΄μ•Ό ν•œλ‹€."; public static final String ERROR_MENU_COUNT_PATTERN = "ν•œ 메뉴 λ‹Ή 99개 이상 μ£Όλ¬Έν•  수 μ—†λ‹€."; + public static final String TABLE_IS_NOT_IN = "μœ μ €κ°€ μ—†λŠ” ν…Œμ΄λΈ”μ„ μ„ νƒν–ˆλ‹€."; + public static final String ERROR_PAY_NUMBER_PATTERN = "숫자 1,2 쀑 ν•˜λ‚˜λ₯Ό μž…λ ₯ν•΄μ•Ό ν•œλ‹€."; } diff --git a/src/main/java/utils/validator/PayNumberValidator.java b/src/main/java/utils/validator/PayNumberValidator.java new file mode 100644 index 00000000..efa09702 --- /dev/null +++ b/src/main/java/utils/validator/PayNumberValidator.java @@ -0,0 +1,22 @@ +package utils.validator; + +import utils.Constants; + +public class PayNumberValidator { + private final String numberString; + + public PayNumberValidator(String numberString) { + this.numberString = numberString; + validate(); + } + + private void validate() { + isRightString(); + } + + private void isRightString() { + if (!Constants.PATTERN_PAY_NUM.matcher(numberString).matches()) { + throw new IllegalArgumentException(Constants.ERROR_PAY_NUMBER_PATTERN); + } + } +} diff --git a/src/main/java/utils/validator/TableNumberValidator.java b/src/main/java/utils/validator/TableNumberValidator.java index 89abd17d..6756323b 100644 --- a/src/main/java/utils/validator/TableNumberValidator.java +++ b/src/main/java/utils/validator/TableNumberValidator.java @@ -7,18 +7,18 @@ import utils.Converter; public class TableNumberValidator { - private final String tableNumber; + protected final String tableNumber; public TableNumberValidator(String tableNumber) { this.tableNumber = tableNumber; validate(); } - private void validate() { + protected void validate() { isRightString(); } - private void isRightString() { + protected void isRightString() { if (Arrays.stream(TableRepository.TABLE_NUMS).noneMatch(num -> num == Converter.getInt(tableNumber))) { throw new IllegalArgumentException(Constants.ERROR_TABLE_NUMBER_PATTERN); } diff --git a/src/main/java/utils/validator/TablePayNumberValidator.java b/src/main/java/utils/validator/TablePayNumberValidator.java new file mode 100644 index 00000000..a719122f --- /dev/null +++ b/src/main/java/utils/validator/TablePayNumberValidator.java @@ -0,0 +1,23 @@ +package utils.validator; + +import domain.repository.TableStateRepository; +import utils.Constants; +import utils.Converter; + +public class TablePayNumberValidator extends TableNumberValidator { + public TablePayNumberValidator(String tableNumberString) { + super(tableNumberString); + } + + @Override + protected void validate() { + isRightString(); + isIn(); + } + + protected void isIn() { + if (TableStateRepository.isUserEmpty(Converter.getInt(tableNumber))) { + throw new IllegalArgumentException(Constants.TABLE_IS_NOT_IN); + } + } +} diff --git a/src/main/java/view/OutputView.java b/src/main/java/view/OutputView.java index 12c484bf..5ca90ed5 100644 --- a/src/main/java/view/OutputView.java +++ b/src/main/java/view/OutputView.java @@ -2,7 +2,9 @@ import domain.Menu; import domain.Table; +import domain.repository.TableStateRepository; +import java.util.Arrays; import java.util.List; public class OutputView { @@ -10,6 +12,9 @@ public class OutputView { private static final String TABLE_FORMAT = "| %s |"; private static final String BOTTOM_LINE = "β”” ─ β”˜"; public static final String ERROR = "[ERROR] "; + public static final String PAY = "## μ΅œμ’… κ²°μ œν•  κΈˆμ•‘\n%d원\n"; + public static final String TABLE_MENUS = "## μ£Όλ¬Έ λ‚΄μ—­\n" + + "메뉴 μˆ˜λŸ‰ κΈˆμ•‘"; public static void printMainList() { System.out.println("## 메인화면\n" @@ -53,7 +58,20 @@ private static void printTableNumbers(final List
tables) { printBreak(); } + public static void printPayMoney(int payMoney) { + System.out.printf(PAY, payMoney); + printBreak(); + } + public static void printBreak() { System.out.println(); } + + public static void printTableMenus(int tableNumber) { + System.out.println(TABLE_MENUS); + for (String menu : TableStateRepository.getUser(tableNumber).getMenus()) { + System.out.println(menu); + } + printBreak(); + } } From 1b1a88a6843cd6623d1b297205d51365cfc1b2d7 Mon Sep 17 00:00:00 2001 From: BETTERFUTURE4 Date: Fri, 17 Dec 2021 17:21:45 +0900 Subject: [PATCH 4/9] =?UTF-8?q?fix:=20=EC=A3=BC=EB=AC=B8=EB=82=B4=EC=97=AD?= =?UTF-8?q?=20=EA=B8=88=EC=95=A1=20=EC=98=A4=EB=A5=98=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...alculate.java => CalculateController.java} | 2 +- .../controller/run/PaymentController.java | 14 ++++----- src/main/java/domain/MenuState.java | 3 +- src/main/java/domain/ModelTemplate.java | 29 ------------------- src/main/java/domain/User.java | 4 +++ 5 files changed, 14 insertions(+), 38 deletions(-) rename src/main/java/controller/run/{Calculate.java => CalculateController.java} (89%) delete mode 100644 src/main/java/domain/ModelTemplate.java diff --git a/src/main/java/controller/run/Calculate.java b/src/main/java/controller/run/CalculateController.java similarity index 89% rename from src/main/java/controller/run/Calculate.java rename to src/main/java/controller/run/CalculateController.java index 2976c839..f648a905 100644 --- a/src/main/java/controller/run/Calculate.java +++ b/src/main/java/controller/run/CalculateController.java @@ -2,7 +2,7 @@ import domain.repository.TableStateRepository; -public class Calculate { +public class CalculateController { public static int getDiscountPay(int tableNum) { return TableStateRepository.getUser(tableNum).getNoDiscountPay(); } diff --git a/src/main/java/controller/run/PaymentController.java b/src/main/java/controller/run/PaymentController.java index 8bc29377..d6bf3497 100644 --- a/src/main/java/controller/run/PaymentController.java +++ b/src/main/java/controller/run/PaymentController.java @@ -13,17 +13,17 @@ public void run() { TableStateRepository.deleteTableState(tableNumber); } + private int getPayTableNumber() { + OutputView.printTables(TableRepository.tables()); + return InputController.getPayTableNumber(); + } + private void printPay(int tableNumber, int payNumber) { if (payNumber == 1) { - OutputView.printPayMoney(Calculate.getDiscountPay(tableNumber)); + OutputView.printPayMoney(CalculateController.getDiscountPay(tableNumber)); } if (payNumber == 2) { - OutputView.printPayMoney(Calculate.getCashPay(tableNumber)); + OutputView.printPayMoney(CalculateController.getCashPay(tableNumber)); } } - - private int getPayTableNumber() { - OutputView.printTables(TableRepository.tables()); - return InputController.getPayTableNumber(); - } } diff --git a/src/main/java/domain/MenuState.java b/src/main/java/domain/MenuState.java index 1cd2c05a..cce04fbc 100644 --- a/src/main/java/domain/MenuState.java +++ b/src/main/java/domain/MenuState.java @@ -20,8 +20,9 @@ public void addCount(int count) { new MenuCountValidator(this.count + count); this.count += count; } + @Override public String toString() { - return menu.getName() + " " + count + " " + menu.getPrice(); + return menu.getName() + " " + count + " " + menu.getPrice() * count; } } diff --git a/src/main/java/domain/ModelTemplate.java b/src/main/java/domain/ModelTemplate.java deleted file mode 100644 index ed387f8a..00000000 --- a/src/main/java/domain/ModelTemplate.java +++ /dev/null @@ -1,29 +0,0 @@ -package domain; - -public class ModelTemplate { - private int model; - - public ModelTemplate(String model) { - - // 컨버터 μ΄μš©ν•΄ κ°’ μ μ ˆν•˜κ²Œ λ³€κ²½ - } - - public int get() { - return model; - } - - public boolean isEmpty() { - return model == 0; - } - - public boolean equals(ModelTemplate obj) { - // λͺ¨λΈκ°’ 같은지 확인 - return this.model == obj.get(); - } - - @Override - public String toString() { - // ν”„λ¦°νŠΈ μ›ν•˜λŠ” λ°©μ‹μœΌλ‘œ κ΅¬ν˜„ - return Integer.toString(model); - } -} diff --git a/src/main/java/domain/User.java b/src/main/java/domain/User.java index c09580d0..55289348 100644 --- a/src/main/java/domain/User.java +++ b/src/main/java/domain/User.java @@ -31,8 +31,12 @@ public String[] getMenus() { public int getNoDiscountPay() { return menus.stream() + .filter(menuState -> menuState.menu.getNumber() < 20) .mapToInt(menuState -> menuState.menu.getPrice() * menuState.getCount() - (menuState.getCount() / 10) * 10000) + .sum() + menus.stream() + .filter(menuState -> menuState.menu.getNumber() >= 20) + .mapToInt(menuState -> menuState.menu.getPrice() * menuState.getCount()) .sum(); } From 281c11873eb6f85fc032aea5fe3ed0bacfc80541 Mon Sep 17 00:00:00 2001 From: BETTERFUTURE4 Date: Fri, 17 Dec 2021 17:37:49 +0900 Subject: [PATCH 5/9] =?UTF-8?q?fix:=20=EA=B2=B0=EC=A0=9C=20=EA=B0=80?= =?UTF-8?q?=EB=8A=A5=ED=95=9C=20=ED=85=8C=EC=9D=B4=EB=B8=94=EC=9D=B4=20?= =?UTF-8?q?=EC=97=86=EC=9D=84=20=EB=95=8C=20=EC=98=A4=EB=A5=98=20=EC=88=98?= =?UTF-8?q?=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/Application.java | 4 +-- ...{Controller.java => SystemController.java} | 8 ++--- .../controller/run/CalculateController.java | 4 +-- .../java/controller/run/OrderController.java | 7 ++-- .../controller/run/PaymentController.java | 9 +++-- .../domain/repository/TableRepository.java | 30 ++++++++++++---- .../repository/TableStateRepository.java | 35 ------------------- src/main/java/utils/Constants.java | 1 - .../validator/TablePayNumberValidator.java | 4 +-- src/main/java/view/OutputView.java | 5 ++- 10 files changed, 46 insertions(+), 61 deletions(-) rename src/main/java/controller/{Controller.java => SystemController.java} (75%) delete mode 100644 src/main/java/domain/repository/TableStateRepository.java diff --git a/src/main/java/Application.java b/src/main/java/Application.java index b2479787..8d3febc4 100644 --- a/src/main/java/Application.java +++ b/src/main/java/Application.java @@ -1,8 +1,8 @@ -import controller.Controller; +import controller.SystemController; public class Application { // TODO κ΅¬ν˜„ μ§„ν–‰ public static void main(String[] args) { - new Controller(); + new SystemController(); } } diff --git a/src/main/java/controller/Controller.java b/src/main/java/controller/SystemController.java similarity index 75% rename from src/main/java/controller/Controller.java rename to src/main/java/controller/SystemController.java index 8714c552..95f515fc 100644 --- a/src/main/java/controller/Controller.java +++ b/src/main/java/controller/SystemController.java @@ -3,11 +3,11 @@ import controller.run.OrderController; import controller.run.PaymentController; import controller.view.InputController; -import domain.repository.TableStateRepository; +import domain.repository.TableRepository; import view.OutputView; -public class Controller { - public Controller() { +public class SystemController { + public SystemController() { run(); } @@ -23,7 +23,7 @@ private void run() { if (mainNumber == 3) { return; } - System.out.println(new TableStateRepository()); + System.out.println(new TableRepository()); run(); } } diff --git a/src/main/java/controller/run/CalculateController.java b/src/main/java/controller/run/CalculateController.java index f648a905..66ed18c0 100644 --- a/src/main/java/controller/run/CalculateController.java +++ b/src/main/java/controller/run/CalculateController.java @@ -1,10 +1,10 @@ package controller.run; -import domain.repository.TableStateRepository; +import domain.repository.TableRepository; public class CalculateController { public static int getDiscountPay(int tableNum) { - return TableStateRepository.getUser(tableNum).getNoDiscountPay(); + return TableRepository.getUser(tableNum).getNoDiscountPay(); } public static int getCashPay(int tableNum) { diff --git a/src/main/java/controller/run/OrderController.java b/src/main/java/controller/run/OrderController.java index 838d4b38..2b1accaa 100644 --- a/src/main/java/controller/run/OrderController.java +++ b/src/main/java/controller/run/OrderController.java @@ -4,7 +4,6 @@ import domain.User; import domain.repository.MenuRepository; import domain.repository.TableRepository; -import domain.repository.TableStateRepository; import view.OutputView; public class OrderController { @@ -18,11 +17,11 @@ public void run() { } private void setTable(int tableNumber, int menuNumber, int menuCount) { - if (TableStateRepository.isUserEmpty(tableNumber)) { - TableStateRepository.initiateTableUser(tableNumber, new User(menuNumber, menuCount)); + if (TableRepository.isUserEmpty(tableNumber)) { + TableRepository.initiateTableUser(tableNumber, new User(menuNumber, menuCount)); return; } - TableStateRepository.getUser(tableNumber).addMenu(menuNumber, menuCount); + TableRepository.getUser(tableNumber).addMenu(menuNumber, menuCount); } private int getTableNumber() { diff --git a/src/main/java/controller/run/PaymentController.java b/src/main/java/controller/run/PaymentController.java index d6bf3497..00fd0c80 100644 --- a/src/main/java/controller/run/PaymentController.java +++ b/src/main/java/controller/run/PaymentController.java @@ -1,16 +1,21 @@ package controller.run; +import java.util.Arrays; + import controller.view.InputController; import domain.repository.TableRepository; -import domain.repository.TableStateRepository; import view.OutputView; public class PaymentController { public void run() { + if (Arrays.stream(TableRepository.TABLE_NUMS).allMatch(TableRepository::isUserEmpty)) { + OutputView.printError("결제 κ°€λŠ₯ν•œ ν…Œμ΄λΈ”μ΄ μ—†λ‹€."); + return; + } int tableNumber = getPayTableNumber(); OutputView.printTableMenus(tableNumber); printPay(tableNumber, InputController.getPayNumber()); - TableStateRepository.deleteTableState(tableNumber); + TableRepository.deleteTableState(tableNumber); } private int getPayTableNumber() { diff --git a/src/main/java/domain/repository/TableRepository.java b/src/main/java/domain/repository/TableRepository.java index bfa39dcf..bf8a4d24 100644 --- a/src/main/java/domain/repository/TableRepository.java +++ b/src/main/java/domain/repository/TableRepository.java @@ -2,13 +2,15 @@ import java.util.ArrayList; import java.util.Collections; +import java.util.LinkedHashMap; import java.util.List; -import domain.Menu; import domain.Table; +import domain.User; public class TableRepository { private static final List
tables = new ArrayList<>(); + public static final LinkedHashMap tableStates = new LinkedHashMap<>(); static { tables.add(new Table(1)); @@ -19,16 +21,32 @@ public class TableRepository { tables.add(new Table(8)); } + public static final int[] TABLE_NUMS = tables.stream().mapToInt(Table::getNumber).toArray(); + public static List
tables() { return Collections.unmodifiableList(tables); } - public static Table getTableByNum(int num) { - return tables.stream().filter(table -> table.getNumber() == num) - .findFirst() - .orElseThrow(() -> new IllegalArgumentException("ν•΄λ‹Ή 숫자의 ν…Œμ΄λΈ”μ΄ μ—†μŠ΅λ‹ˆλ‹€.")); + public static boolean isUserEmpty(int tableNum) { + return !tableStates.containsKey(tableNum); } - public static final int[] TABLE_NUMS = tables.stream().mapToInt(Table::getNumber).toArray(); + public static void initiateTableUser(int tableNum, User user) { + tableStates.put(tableNum, user); + } + + public static void deleteTableState(int tableNum) { + tableStates.remove(tableNum); + } + + public static User getUser(int tableNum) { + return tableStates.get(tableNum); + } + + @Override + public String toString() { + return "ν…Œμ΄λΈ” λ„˜λ²„ " + TableRepository.tableStates.toString() + .substring(1, TableRepository.tableStates.toString().length() - 1); + } } diff --git a/src/main/java/domain/repository/TableStateRepository.java b/src/main/java/domain/repository/TableStateRepository.java deleted file mode 100644 index eed33ff2..00000000 --- a/src/main/java/domain/repository/TableStateRepository.java +++ /dev/null @@ -1,35 +0,0 @@ -package domain.repository; - -import java.util.ArrayList; -import java.util.Collections; -import java.util.LinkedHashMap; -import java.util.List; - -import domain.Table; -import domain.User; - -public class TableStateRepository { - private static final LinkedHashMap tableStates = new LinkedHashMap<>(); - - public static boolean isUserEmpty(int tableNum) { - return !tableStates.containsKey(tableNum); - } - - public static void initiateTableUser(int tableNum, User user) { - tableStates.put(tableNum, user); - } - - public static User getUser(int tableNum) { - return tableStates.get(tableNum); - } - - public static void deleteTableState(int tableNum) { - tableStates.remove(tableNum); - } - - public String toString() { - return "ν…Œμ΄λΈ” λ„˜λ²„ " + TableStateRepository.tableStates.toString() - .substring(1, TableStateRepository.tableStates.toString().length() - 1); - } -} - diff --git a/src/main/java/utils/Constants.java b/src/main/java/utils/Constants.java index dfa87533..8aa534bf 100644 --- a/src/main/java/utils/Constants.java +++ b/src/main/java/utils/Constants.java @@ -12,7 +12,6 @@ public class Constants { public static final String CONSTANT = "μƒμˆ˜"; // μ •κ·œμ‹ - // μ‚¬μ΄νŠΈ: https://regexr.com/5mhou public static final Pattern PATTERN_MAIN_NUM = Pattern.compile("^[123]$"); public static final Pattern PATTERN_COUNT_NUM = Pattern.compile("^[1-9][0-9]?$"); public static final Pattern PATTERN_PAY_NUM = Pattern.compile("^[12]$"); diff --git a/src/main/java/utils/validator/TablePayNumberValidator.java b/src/main/java/utils/validator/TablePayNumberValidator.java index a719122f..1de95091 100644 --- a/src/main/java/utils/validator/TablePayNumberValidator.java +++ b/src/main/java/utils/validator/TablePayNumberValidator.java @@ -1,6 +1,6 @@ package utils.validator; -import domain.repository.TableStateRepository; +import domain.repository.TableRepository; import utils.Constants; import utils.Converter; @@ -16,7 +16,7 @@ protected void validate() { } protected void isIn() { - if (TableStateRepository.isUserEmpty(Converter.getInt(tableNumber))) { + if (TableRepository.isUserEmpty(Converter.getInt(tableNumber))) { throw new IllegalArgumentException(Constants.TABLE_IS_NOT_IN); } } diff --git a/src/main/java/view/OutputView.java b/src/main/java/view/OutputView.java index 5ca90ed5..b19b6ee6 100644 --- a/src/main/java/view/OutputView.java +++ b/src/main/java/view/OutputView.java @@ -2,9 +2,8 @@ import domain.Menu; import domain.Table; -import domain.repository.TableStateRepository; +import domain.repository.TableRepository; -import java.util.Arrays; import java.util.List; public class OutputView { @@ -69,7 +68,7 @@ public static void printBreak() { public static void printTableMenus(int tableNumber) { System.out.println(TABLE_MENUS); - for (String menu : TableStateRepository.getUser(tableNumber).getMenus()) { + for (String menu : TableRepository.getUser(tableNumber).getMenus()) { System.out.println(menu); } printBreak(); From f45ae5beb280f92e0939103f5cea704d76f1639e Mon Sep 17 00:00:00 2001 From: BETTERFUTURE4 Date: Fri, 17 Dec 2021 17:45:00 +0900 Subject: [PATCH 6/9] =?UTF-8?q?refactor:=20=EC=93=B0=EC=A7=80=EC=95=8A?= =?UTF-8?q?=EB=8A=94=20=EC=BD=94=EB=93=9C=20=EC=A0=9C=EA=B1=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/controller/SystemController.java | 11 +++++++---- src/main/java/controller/run/OrderController.java | 5 ----- src/main/java/domain/User.java | 3 ++- src/main/java/domain/repository/MenuRepository.java | 5 ++--- src/main/java/domain/repository/TableRepository.java | 6 ------ 5 files changed, 11 insertions(+), 19 deletions(-) diff --git a/src/main/java/controller/SystemController.java b/src/main/java/controller/SystemController.java index 95f515fc..fc31a04f 100644 --- a/src/main/java/controller/SystemController.java +++ b/src/main/java/controller/SystemController.java @@ -7,6 +7,10 @@ import view.OutputView; public class SystemController { + public static final int ORDER_NUM = 1; + public static final int PAY_NUM = 2; + public static final int QUIT_NUM = 3; + public SystemController() { run(); } @@ -14,16 +18,15 @@ public SystemController() { private void run() { OutputView.printMainList(); int mainNumber = InputController.getMainNumber(); - if (mainNumber == 1) { + if (mainNumber == ORDER_NUM) { new OrderController().run(); } - if (mainNumber == 2) { + if (mainNumber == PAY_NUM) { new PaymentController().run(); } - if (mainNumber == 3) { + if (mainNumber == QUIT_NUM) { return; } - System.out.println(new TableRepository()); run(); } } diff --git a/src/main/java/controller/run/OrderController.java b/src/main/java/controller/run/OrderController.java index 2b1accaa..fd5ced32 100644 --- a/src/main/java/controller/run/OrderController.java +++ b/src/main/java/controller/run/OrderController.java @@ -29,11 +29,6 @@ private int getTableNumber() { return InputController.getTableNumber(); } - private int getPayTableNumber() { - OutputView.printTables(TableRepository.tables()); - return InputController.getPayTableNumber(); - } - private int getMenuNumber() { OutputView.printMenus(MenuRepository.menus()); return InputController.getMenuNumber(); diff --git a/src/main/java/domain/User.java b/src/main/java/domain/User.java index 55289348..dac36016 100644 --- a/src/main/java/domain/User.java +++ b/src/main/java/domain/User.java @@ -34,7 +34,8 @@ public int getNoDiscountPay() { .filter(menuState -> menuState.menu.getNumber() < 20) .mapToInt(menuState -> menuState.menu.getPrice() * menuState.getCount() - (menuState.getCount() / 10) * 10000) - .sum() + menus.stream() + .sum() + + menus.stream() .filter(menuState -> menuState.menu.getNumber() >= 20) .mapToInt(menuState -> menuState.menu.getPrice() * menuState.getCount()) .sum(); diff --git a/src/main/java/domain/repository/MenuRepository.java b/src/main/java/domain/repository/MenuRepository.java index 1f409d07..c6cf52d2 100644 --- a/src/main/java/domain/repository/MenuRepository.java +++ b/src/main/java/domain/repository/MenuRepository.java @@ -1,16 +1,15 @@ package domain.repository; import java.util.ArrayList; -import java.util.Arrays; import java.util.Collections; import java.util.List; import domain.Category; import domain.Menu; -import domain.Table; public class MenuRepository { private static final List menus = new ArrayList<>(); + public static final String NO_THIS_MENU = "ν•΄λ‹Ή 숫자의 메뉴가 μ—†μŠ΅λ‹ˆλ‹€."; static { menus.add(new Menu(1, "ν›„λΌμ΄λ“œ", Category.CHICKEN, 16_000)); @@ -30,7 +29,7 @@ public static List menus() { public static Menu getMenuByNum(int num) { return menus.stream().filter(menu -> menu.getNumber() == num) .findFirst() - .orElseThrow(() -> new IllegalArgumentException("ν•΄λ‹Ή 숫자의 메뉴가 μ—†μŠ΅λ‹ˆλ‹€.")); + .orElseThrow(() -> new IllegalArgumentException(NO_THIS_MENU)); } public static final int[] MENU_NUMS = menus.stream().mapToInt(Menu::getNumber).toArray(); diff --git a/src/main/java/domain/repository/TableRepository.java b/src/main/java/domain/repository/TableRepository.java index bf8a4d24..53f4f5b5 100644 --- a/src/main/java/domain/repository/TableRepository.java +++ b/src/main/java/domain/repository/TableRepository.java @@ -42,11 +42,5 @@ public static void deleteTableState(int tableNum) { public static User getUser(int tableNum) { return tableStates.get(tableNum); } - - @Override - public String toString() { - return "ν…Œμ΄λΈ” λ„˜λ²„ " + TableRepository.tableStates.toString() - .substring(1, TableRepository.tableStates.toString().length() - 1); - } } From 606096ce4afb846b0f1c811a84b88176be1f595e Mon Sep 17 00:00:00 2001 From: BETTERFUTURE4 Date: Fri, 17 Dec 2021 17:54:10 +0900 Subject: [PATCH 7/9] =?UTF-8?q?fix:=20=EC=B9=98=ED=82=A8=20=EC=97=AC?= =?UTF-8?q?=EB=B6=80=20=ED=99=95=EC=9D=B8=EB=B0=A9=EB=B2=95=20=ED=95=98?= =?UTF-8?q?=EB=93=9C=EC=BD=94=EB=94=A9=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/run/PaymentController.java | 7 ++++--- src/main/java/domain/Category.java | 20 +++++++++--------- src/main/java/domain/EnumTemplate.java | 21 ------------------- src/main/java/domain/Menu.java | 4 ++++ src/main/java/domain/User.java | 13 ++++-------- src/main/java/utils/Constants.java | 6 ++++++ 6 files changed, 28 insertions(+), 43 deletions(-) delete mode 100644 src/main/java/domain/EnumTemplate.java diff --git a/src/main/java/controller/run/PaymentController.java b/src/main/java/controller/run/PaymentController.java index 00fd0c80..4dd75b2b 100644 --- a/src/main/java/controller/run/PaymentController.java +++ b/src/main/java/controller/run/PaymentController.java @@ -4,12 +4,13 @@ import controller.view.InputController; import domain.repository.TableRepository; +import utils.Constants; import view.OutputView; public class PaymentController { public void run() { if (Arrays.stream(TableRepository.TABLE_NUMS).allMatch(TableRepository::isUserEmpty)) { - OutputView.printError("결제 κ°€λŠ₯ν•œ ν…Œμ΄λΈ”μ΄ μ—†λ‹€."); + OutputView.printError(Constants.ERROR_NO_USER); return; } int tableNumber = getPayTableNumber(); @@ -24,10 +25,10 @@ private int getPayTableNumber() { } private void printPay(int tableNumber, int payNumber) { - if (payNumber == 1) { + if (payNumber == Constants.PAY_CARD) { OutputView.printPayMoney(CalculateController.getDiscountPay(tableNumber)); } - if (payNumber == 2) { + if (payNumber == Constants.PAY_CASH) { OutputView.printPayMoney(CalculateController.getCashPay(tableNumber)); } } diff --git a/src/main/java/domain/Category.java b/src/main/java/domain/Category.java index 2e2c07ae..7327472b 100644 --- a/src/main/java/domain/Category.java +++ b/src/main/java/domain/Category.java @@ -1,17 +1,17 @@ package domain; public enum Category { - CHICKEN("μΉ˜ν‚¨"), - BEVERAGE("음료"); + CHICKEN("μΉ˜ν‚¨"), + BEVERAGE("음료"); - private final String name; + private final String name; - Category(final String name) { - this.name = name; - } + Category(final String name) { + this.name = name; + } - @Override - public String toString() { - return "[" + name + "]"; - } + @Override + public String toString() { + return "[" + name + "]"; + } } diff --git a/src/main/java/domain/EnumTemplate.java b/src/main/java/domain/EnumTemplate.java deleted file mode 100644 index 746541a2..00000000 --- a/src/main/java/domain/EnumTemplate.java +++ /dev/null @@ -1,21 +0,0 @@ -package domain; - -public enum EnumTemplate { - NAME_1(1), - NAME_2(2); - - private final int value; - - EnumTemplate(final int value) { - this.value = value; - } - - // μΆ”κ°€ κΈ°λŠ₯ κ΅¬ν˜„ - public int getValue() { - return value; - } - - public String toString() { - return Integer.toString(value); - } -} diff --git a/src/main/java/domain/Menu.java b/src/main/java/domain/Menu.java index a6a9bba4..2146507a 100644 --- a/src/main/java/domain/Menu.java +++ b/src/main/java/domain/Menu.java @@ -25,6 +25,10 @@ public String getName() { return name; } + public Category getCategory() { + return category; + } + @Override public String toString() { return category + " " + number + " - " + name + " : " + price + "원"; diff --git a/src/main/java/domain/User.java b/src/main/java/domain/User.java index dac36016..1bc62f1c 100644 --- a/src/main/java/domain/User.java +++ b/src/main/java/domain/User.java @@ -1,9 +1,9 @@ package domain; import java.util.ArrayList; -import java.util.stream.Stream; import domain.repository.MenuRepository; +import utils.Constants; public class User { private final ArrayList menus = new ArrayList<>(); @@ -31,18 +31,13 @@ public String[] getMenus() { public int getNoDiscountPay() { return menus.stream() - .filter(menuState -> menuState.menu.getNumber() < 20) + .filter(menuState -> menuState.menu.getCategory().equals(Category.CHICKEN)) .mapToInt(menuState -> menuState.menu.getPrice() * menuState.getCount() - - (menuState.getCount() / 10) * 10000) + - (menuState.getCount() / Constants.DIVIDER) * Constants.DISCOUNT_MONEY_UNIT) .sum() + menus.stream() - .filter(menuState -> menuState.menu.getNumber() >= 20) + .filter(menuState -> menuState.menu.getCategory().equals(Category.BEVERAGE)) .mapToInt(menuState -> menuState.menu.getPrice() * menuState.getCount()) .sum(); } - - @Override - public String toString() { - return "user-" + menus; - } } diff --git a/src/main/java/utils/Constants.java b/src/main/java/utils/Constants.java index 8aa534bf..825f9da5 100644 --- a/src/main/java/utils/Constants.java +++ b/src/main/java/utils/Constants.java @@ -25,4 +25,10 @@ public class Constants { public static final String ERROR_MENU_COUNT_PATTERN = "ν•œ 메뉴 λ‹Ή 99개 이상 μ£Όλ¬Έν•  수 μ—†λ‹€."; public static final String TABLE_IS_NOT_IN = "μœ μ €κ°€ μ—†λŠ” ν…Œμ΄λΈ”μ„ μ„ νƒν–ˆλ‹€."; public static final String ERROR_PAY_NUMBER_PATTERN = "숫자 1,2 쀑 ν•˜λ‚˜λ₯Ό μž…λ ₯ν•΄μ•Ό ν•œλ‹€."; + + public static final int DIVIDER = 10; + public static final int DISCOUNT_MONEY_UNIT = 10000; + public static final int PAY_CARD = 1; + public static final int PAY_CASH = 2; + public static final String ERROR_NO_USER = "결제 κ°€λŠ₯ν•œ ν…Œμ΄λΈ”μ΄ μ—†λ‹€."; } From dfb3776773f24427b7033d1f26a7e718d5d09355 Mon Sep 17 00:00:00 2001 From: BETTERFUTURE4 Date: Fri, 17 Dec 2021 17:58:25 +0900 Subject: [PATCH 8/9] =?UTF-8?q?refactor:=20=ED=95=98=EB=93=9C=EC=BD=94?= =?UTF-8?q?=EB=94=A9=20=EC=83=81=EC=88=98=ED=99=94?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/Application.java | 1 - .../controller/run/CalculateController.java | 5 ++++- src/main/java/utils/Constants.java | 4 ---- src/main/java/utils/Converter.java | 12 ------------ src/main/java/utils/UtilTemplate.java | 7 ------- src/main/java/view/InputView.java | 17 +++++++++++------ src/main/java/view/OutputView.java | 12 +++++++----- 7 files changed, 22 insertions(+), 36 deletions(-) delete mode 100644 src/main/java/utils/UtilTemplate.java diff --git a/src/main/java/Application.java b/src/main/java/Application.java index 8d3febc4..60d648a2 100644 --- a/src/main/java/Application.java +++ b/src/main/java/Application.java @@ -1,7 +1,6 @@ import controller.SystemController; public class Application { - // TODO κ΅¬ν˜„ μ§„ν–‰ public static void main(String[] args) { new SystemController(); } diff --git a/src/main/java/controller/run/CalculateController.java b/src/main/java/controller/run/CalculateController.java index 66ed18c0..a397b742 100644 --- a/src/main/java/controller/run/CalculateController.java +++ b/src/main/java/controller/run/CalculateController.java @@ -3,11 +3,14 @@ import domain.repository.TableRepository; public class CalculateController { + + public static final double DISCOUNT_RATE = 0.95; + public static int getDiscountPay(int tableNum) { return TableRepository.getUser(tableNum).getNoDiscountPay(); } public static int getCashPay(int tableNum) { - return (int)(getDiscountPay(tableNum) * 0.95); + return (int)(getDiscountPay(tableNum) * DISCOUNT_RATE); } } diff --git a/src/main/java/utils/Constants.java b/src/main/java/utils/Constants.java index 825f9da5..5e49b910 100644 --- a/src/main/java/utils/Constants.java +++ b/src/main/java/utils/Constants.java @@ -3,14 +3,10 @@ import java.util.Arrays; import java.util.regex.Pattern; -import domain.Menu; import domain.repository.MenuRepository; import domain.repository.TableRepository; public class Constants { - // λ‹¨μœ„ μƒμˆ˜ - public static final String CONSTANT = "μƒμˆ˜"; - // μ •κ·œμ‹ public static final Pattern PATTERN_MAIN_NUM = Pattern.compile("^[123]$"); public static final Pattern PATTERN_COUNT_NUM = Pattern.compile("^[1-9][0-9]?$"); diff --git a/src/main/java/utils/Converter.java b/src/main/java/utils/Converter.java index 98eab4d4..dab7ce26 100644 --- a/src/main/java/utils/Converter.java +++ b/src/main/java/utils/Converter.java @@ -10,16 +10,4 @@ public static int getInt(String moneyString) { public static String getString(int count) { return Integer.toString(count); } - - // spilt μ½”λ“œ - // public static ArrayList getBeverages(String beverageString) { - // ArrayList beverages = new ArrayList<>(); - // for (String beverage : beverageString.split(Constants.SEPARATOR)) { - // beverages.add(new Beverage( - // beverage - // .substring(1, beverage.length() - 1) - // .split(Constants.DELIMITER))); - // } - // return beverages; - // } } diff --git a/src/main/java/utils/UtilTemplate.java b/src/main/java/utils/UtilTemplate.java deleted file mode 100644 index f2e223e7..00000000 --- a/src/main/java/utils/UtilTemplate.java +++ /dev/null @@ -1,7 +0,0 @@ -package utils; - -public class UtilTemplate { - public static Object utilTemplate() { - return new Object(); - } -} diff --git a/src/main/java/view/InputView.java b/src/main/java/view/InputView.java index a46c7b37..2001f9df 100644 --- a/src/main/java/view/InputView.java +++ b/src/main/java/view/InputView.java @@ -4,38 +4,43 @@ public class InputView { private static final Scanner scanner = new Scanner(System.in); + public static final String PRINT_MAIN = "## μ›ν•˜λŠ” κΈ°λŠ₯을 μ„ νƒν•˜μ„Έμš”."; + public static final String PRINT_TABLE = "## ν…Œμ΄λΈ”μ„ μ„ νƒν•˜μ„Έμš”."; + public static final String PRINT_MENU = "## 등둝할 메뉴λ₯Ό μ„ νƒν•˜μ„Έμš”."; + public static final String PRINT_MENU_COUNT = "## λ©”λ‰΄μ˜ μˆ˜λŸ‰μ„ μž…λ ₯ν•˜μ„Έμš”."; + public static final String PRINT_PAY = "## 1번 ν…Œμ΄λΈ”μ˜ 결제λ₯Ό μ§„ν–‰ν•©λ‹ˆλ‹€.\n" + + "## μ‹ μš© μΉ΄λ“œλŠ” 1번, ν˜„κΈˆμ€ 2번"; public static String inputMainNumber() { - System.out.println("## μ›ν•˜λŠ” κΈ°λŠ₯을 μ„ νƒν•˜μ„Έμš”."); + System.out.println(PRINT_MAIN); String answer = scanner.nextLine(); OutputView.printBreak(); return answer; } public static String inputTableNumber() { - System.out.println("## ν…Œμ΄λΈ”μ„ μ„ νƒν•˜μ„Έμš”."); + System.out.println(PRINT_TABLE); String answer = scanner.nextLine(); OutputView.printBreak(); return answer; } public static String inputMenuNumber() { - System.out.println("## 등둝할 메뉴λ₯Ό μ„ νƒν•˜μ„Έμš”."); + System.out.println(PRINT_MENU); String answer = scanner.nextLine(); OutputView.printBreak(); return answer; } public static String inputMenuCountNumber() { - System.out.println("## λ©”λ‰΄μ˜ μˆ˜λŸ‰μ„ μž…λ ₯ν•˜μ„Έμš”."); + System.out.println(PRINT_MENU_COUNT); String answer = scanner.nextLine(); OutputView.printBreak(); return answer; } public static String inputPayNumber() { - System.out.println("## 1번 ν…Œμ΄λΈ”μ˜ 결제λ₯Ό μ§„ν–‰ν•©λ‹ˆλ‹€.\n" - + "## μ‹ μš© μΉ΄λ“œλŠ” 1번, ν˜„κΈˆμ€ 2번"); + System.out.println(PRINT_PAY); String answer = scanner.nextLine(); OutputView.printBreak(); return answer; diff --git a/src/main/java/view/OutputView.java b/src/main/java/view/OutputView.java index b19b6ee6..cbe32f0c 100644 --- a/src/main/java/view/OutputView.java +++ b/src/main/java/view/OutputView.java @@ -14,16 +14,18 @@ public class OutputView { public static final String PAY = "## μ΅œμ’… κ²°μ œν•  κΈˆμ•‘\n%d원\n"; public static final String TABLE_MENUS = "## μ£Όλ¬Έ λ‚΄μ—­\n" + "메뉴 μˆ˜λŸ‰ κΈˆμ•‘"; + public static final String MAIN_LIST = "## 메인화면\n" + + "1 - 주문등둝\n" + + "2 - κ²°μ œν•˜κΈ°\n" + + "3 - ν”„λ‘œκ·Έλž¨ μ’…λ£Œ\n"; + public static final String TABLE_LIST = "## ν…Œμ΄λΈ” λͺ©λ‘"; public static void printMainList() { - System.out.println("## 메인화면\n" - + "1 - 주문등둝\n" - + "2 - κ²°μ œν•˜κΈ°\n" - + "3 - ν”„λ‘œκ·Έλž¨ μ’…λ£Œ\n"); + System.out.println(MAIN_LIST); } public static void printTables(final List
tables) { - System.out.println("## ν…Œμ΄λΈ” λͺ©λ‘"); + System.out.println(TABLE_LIST); final int size = tables.size(); printLine(TOP_LINE, size); printTableNumbers(tables); From f7f0fd16d535dd4d080bae4f5835acafaa429a2a Mon Sep 17 00:00:00 2001 From: BETTERFUTURE4 Date: Fri, 17 Dec 2021 17:58:25 +0900 Subject: [PATCH 9/9] =?UTF-8?q?refactor:=20=ED=95=98=EB=93=9C=EC=BD=94?= =?UTF-8?q?=EB=94=A9=20=EC=83=81=EC=88=98=ED=99=94?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/Application.java | 1 - .../controller/run/CalculateController.java | 4 +++- src/main/java/utils/Constants.java | 4 ---- src/main/java/utils/Converter.java | 12 ------------ src/main/java/utils/UtilTemplate.java | 7 ------- src/main/java/view/InputView.java | 17 +++++++++++------ src/main/java/view/OutputView.java | 12 +++++++----- 7 files changed, 21 insertions(+), 36 deletions(-) delete mode 100644 src/main/java/utils/UtilTemplate.java diff --git a/src/main/java/Application.java b/src/main/java/Application.java index 8d3febc4..60d648a2 100644 --- a/src/main/java/Application.java +++ b/src/main/java/Application.java @@ -1,7 +1,6 @@ import controller.SystemController; public class Application { - // TODO κ΅¬ν˜„ μ§„ν–‰ public static void main(String[] args) { new SystemController(); } diff --git a/src/main/java/controller/run/CalculateController.java b/src/main/java/controller/run/CalculateController.java index 66ed18c0..7f0ec738 100644 --- a/src/main/java/controller/run/CalculateController.java +++ b/src/main/java/controller/run/CalculateController.java @@ -3,11 +3,13 @@ import domain.repository.TableRepository; public class CalculateController { + public static final double DISCOUNT_RATE = 0.95; + public static int getDiscountPay(int tableNum) { return TableRepository.getUser(tableNum).getNoDiscountPay(); } public static int getCashPay(int tableNum) { - return (int)(getDiscountPay(tableNum) * 0.95); + return (int)(getDiscountPay(tableNum) * DISCOUNT_RATE); } } diff --git a/src/main/java/utils/Constants.java b/src/main/java/utils/Constants.java index 825f9da5..5e49b910 100644 --- a/src/main/java/utils/Constants.java +++ b/src/main/java/utils/Constants.java @@ -3,14 +3,10 @@ import java.util.Arrays; import java.util.regex.Pattern; -import domain.Menu; import domain.repository.MenuRepository; import domain.repository.TableRepository; public class Constants { - // λ‹¨μœ„ μƒμˆ˜ - public static final String CONSTANT = "μƒμˆ˜"; - // μ •κ·œμ‹ public static final Pattern PATTERN_MAIN_NUM = Pattern.compile("^[123]$"); public static final Pattern PATTERN_COUNT_NUM = Pattern.compile("^[1-9][0-9]?$"); diff --git a/src/main/java/utils/Converter.java b/src/main/java/utils/Converter.java index 98eab4d4..dab7ce26 100644 --- a/src/main/java/utils/Converter.java +++ b/src/main/java/utils/Converter.java @@ -10,16 +10,4 @@ public static int getInt(String moneyString) { public static String getString(int count) { return Integer.toString(count); } - - // spilt μ½”λ“œ - // public static ArrayList getBeverages(String beverageString) { - // ArrayList beverages = new ArrayList<>(); - // for (String beverage : beverageString.split(Constants.SEPARATOR)) { - // beverages.add(new Beverage( - // beverage - // .substring(1, beverage.length() - 1) - // .split(Constants.DELIMITER))); - // } - // return beverages; - // } } diff --git a/src/main/java/utils/UtilTemplate.java b/src/main/java/utils/UtilTemplate.java deleted file mode 100644 index f2e223e7..00000000 --- a/src/main/java/utils/UtilTemplate.java +++ /dev/null @@ -1,7 +0,0 @@ -package utils; - -public class UtilTemplate { - public static Object utilTemplate() { - return new Object(); - } -} diff --git a/src/main/java/view/InputView.java b/src/main/java/view/InputView.java index a46c7b37..2001f9df 100644 --- a/src/main/java/view/InputView.java +++ b/src/main/java/view/InputView.java @@ -4,38 +4,43 @@ public class InputView { private static final Scanner scanner = new Scanner(System.in); + public static final String PRINT_MAIN = "## μ›ν•˜λŠ” κΈ°λŠ₯을 μ„ νƒν•˜μ„Έμš”."; + public static final String PRINT_TABLE = "## ν…Œμ΄λΈ”μ„ μ„ νƒν•˜μ„Έμš”."; + public static final String PRINT_MENU = "## 등둝할 메뉴λ₯Ό μ„ νƒν•˜μ„Έμš”."; + public static final String PRINT_MENU_COUNT = "## λ©”λ‰΄μ˜ μˆ˜λŸ‰μ„ μž…λ ₯ν•˜μ„Έμš”."; + public static final String PRINT_PAY = "## 1번 ν…Œμ΄λΈ”μ˜ 결제λ₯Ό μ§„ν–‰ν•©λ‹ˆλ‹€.\n" + + "## μ‹ μš© μΉ΄λ“œλŠ” 1번, ν˜„κΈˆμ€ 2번"; public static String inputMainNumber() { - System.out.println("## μ›ν•˜λŠ” κΈ°λŠ₯을 μ„ νƒν•˜μ„Έμš”."); + System.out.println(PRINT_MAIN); String answer = scanner.nextLine(); OutputView.printBreak(); return answer; } public static String inputTableNumber() { - System.out.println("## ν…Œμ΄λΈ”μ„ μ„ νƒν•˜μ„Έμš”."); + System.out.println(PRINT_TABLE); String answer = scanner.nextLine(); OutputView.printBreak(); return answer; } public static String inputMenuNumber() { - System.out.println("## 등둝할 메뉴λ₯Ό μ„ νƒν•˜μ„Έμš”."); + System.out.println(PRINT_MENU); String answer = scanner.nextLine(); OutputView.printBreak(); return answer; } public static String inputMenuCountNumber() { - System.out.println("## λ©”λ‰΄μ˜ μˆ˜λŸ‰μ„ μž…λ ₯ν•˜μ„Έμš”."); + System.out.println(PRINT_MENU_COUNT); String answer = scanner.nextLine(); OutputView.printBreak(); return answer; } public static String inputPayNumber() { - System.out.println("## 1번 ν…Œμ΄λΈ”μ˜ 결제λ₯Ό μ§„ν–‰ν•©λ‹ˆλ‹€.\n" - + "## μ‹ μš© μΉ΄λ“œλŠ” 1번, ν˜„κΈˆμ€ 2번"); + System.out.println(PRINT_PAY); String answer = scanner.nextLine(); OutputView.printBreak(); return answer; diff --git a/src/main/java/view/OutputView.java b/src/main/java/view/OutputView.java index b19b6ee6..cbe32f0c 100644 --- a/src/main/java/view/OutputView.java +++ b/src/main/java/view/OutputView.java @@ -14,16 +14,18 @@ public class OutputView { public static final String PAY = "## μ΅œμ’… κ²°μ œν•  κΈˆμ•‘\n%d원\n"; public static final String TABLE_MENUS = "## μ£Όλ¬Έ λ‚΄μ—­\n" + "메뉴 μˆ˜λŸ‰ κΈˆμ•‘"; + public static final String MAIN_LIST = "## 메인화면\n" + + "1 - 주문등둝\n" + + "2 - κ²°μ œν•˜κΈ°\n" + + "3 - ν”„λ‘œκ·Έλž¨ μ’…λ£Œ\n"; + public static final String TABLE_LIST = "## ν…Œμ΄λΈ” λͺ©λ‘"; public static void printMainList() { - System.out.println("## 메인화면\n" - + "1 - 주문등둝\n" - + "2 - κ²°μ œν•˜κΈ°\n" - + "3 - ν”„λ‘œκ·Έλž¨ μ’…λ£Œ\n"); + System.out.println(MAIN_LIST); } public static void printTables(final List
tables) { - System.out.println("## ν…Œμ΄λΈ” λͺ©λ‘"); + System.out.println(TABLE_LIST); final int size = tables.size(); printLine(TOP_LINE, size); printTableNumbers(tables);