From eef183acf3426a2c3502fe37e358443a2b02b10a Mon Sep 17 00:00:00 2001 From: junyong Date: Sun, 27 Nov 2022 13:54:06 +0900 Subject: [PATCH 01/43] =?UTF-8?q?docs:(README.md):=20=EA=B5=AC=ED=98=84?= =?UTF-8?q?=ED=95=B4=EC=95=BC=ED=95=A0=20=EA=B8=B0=EB=8A=A5=20=EB=AA=A9?= =?UTF-8?q?=EB=A1=9D=20=EC=9E=91=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/README.md | 66 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 66 insertions(+) create mode 100644 docs/README.md diff --git a/docs/README.md b/docs/README.md new file mode 100644 index 000000000..738d50daa --- /dev/null +++ b/docs/README.md @@ -0,0 +1,66 @@ +# ๐Ÿš€๋ฏธ์…˜ - ํŽ˜์–ด๋งค์นญ๊ด€๋ฆฌ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ + +## ์ง„ํ–‰๋ฐฉ์‹ + +- ๋ฏธ์…˜์€ ๊ธฐ๋Šฅ ์š”๊ตฌ ์‚ฌํ•ญ, ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์š”๊ตฌ ์‚ฌํ•ญ, ๊ณผ์ œ ์š”๊ตฌ ์‚ฌํ•ญ ์„ธ๊ฐ€์ง€๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ๋‹ค. +- ์„ธ ๊ฐœ์˜ ์š”๊ตฌ ์‚ฌํ•ญ์„ ๋งŒ์กฑํ•˜๊ธฐ ์œ„ํ•ด ๋…ธ๋ ฅํ•œ๋‹ค. + +--- + +### ๐Ÿ’™๊ตฌํ˜„ ๋ชฉํ‘œ + +- ์œ„์•„๋ž˜ ๋‘˜ ์ค‘ ํ•˜๋‚˜์˜ ์นธ๋งŒ ๊ฑด๋„ ์ˆ˜ ์žˆ๋Š” ๋‹ค๋ฆฌ๋ฅผ ๋๊นŒ์ง€ ๊ฑด๋„ˆ๊ฐ€๋Š” ๊ฒŒ์ž„์ด๋‹ค. + +### ๐Ÿ“œ๊ตฌํ˜„ ๋™์ž‘ + +1. ๋ณด๊ธฐ ์ค‘์—์„œ ์›ํ•˜๋Š” ๊ธฐ๋Šฅ์„ ์„ ํƒํ•œ๋‹ค.(์ˆซ์ž๋กœ ์ž…๋ ฅ) +2. ๊ณผ์ •, ๋ ˆ๋ฒจ, ๋ฏธ์…˜์„ ์ถœ๋ ฅํ•œ๋‹ค. +3. ๊ณผ์ •, ๋ ˆ๋ฒจ, ๋ฏธ์…˜์„ ์ž…๋ ฅํ•œ๋‹ค.(ex. ๋ฐฑ์—”๋“œ, ๋ ˆ๋ฒจ1, ์ž๋™์ฐจ๊ฒฝ์ฃผ) +4. ํŽ˜์–ด ๋งค์นญ ๊ฒฐ๊ณผ๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค. +5. Q(์ข…๋ฃŒ)๋ฅผ ์ž…๋ ฅํ•˜๋ฉด ๋ฏธ์…˜์ด ์ข…๋ฃŒ๋œ๋‹ค. + +--- + +## ๐Ÿ”๊ตฌํ˜„ ๋กœ์ง + +- ### Main diagram + + + +- ### Util diagram + + + +- ### View diagram + +--- + +## โœ…๊ธฐ๋Šฅ ๋ชฉ๋ก checkList + +- [ ] 1.๊ธฐ๋Šฅ ์„ ํƒ + - [ ] ํ”„๋กœ๊ทธ๋žจ์ด ์‹œ์ž‘ํ•˜๋ฉด ๊ธฐ๋Šฅ์˜ ์ข…๋ฃŒ๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค. + - [ ] ๊ธฐ๋Šฅ์˜ ์ข…๋ฃŒ๋ฅผ ์ถœ๋ ฅํ•˜๊ณ , ๊ทธ ์ค‘ ํ•˜๋‚˜๋ฅผ ์ž…๋ ฅ ๋ฐ›๋Š”๋‹ค. +- [ ] 2.ํŽ˜์–ด ๋งค์นญ ๊ธฐ๋Šฅ ๊ตฌํ˜„ + - [ ] ๊ณผ์ •๊ณผ ๋ฏธ์…˜์— ๋Œ€ํ•œ ๋‚ด์šฉ์„ ์ถœ๋ ฅํ•œ๋‹ค. + - [ ] ๋งค์นญํ•˜๊ณ ์ž ํ•˜๋Š” ๊ณผ์ •, ๋ ˆ๋ฒจ, ๋ฏธ์…˜์„ ์ž…๋ ฅ ๋ฐ›๋Š”๋‹ค. + - [ ] ๋งค์นญ์ด ์ •์ƒ์ ์œผ๋กœ ์ˆ˜ํ–‰๋˜๋ฉด ๊ฒฐ๊ณผ๊ฐ€ ์ถœ๋ ฅ๋œ๋‹ค. +- [ ] 3.ํŽ˜์–ด ์กฐํšŒ ๊ธฐ๋Šฅ ๊ตฌํ˜„ + - [ ] ๋งค์นญ ์ด๋ ฅ์ด ์žˆ์œผ๋ฉด ํ•ด๋‹น ๋ฏธ์…˜์˜ ํŽ˜์–ด ์ •๋ณด๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค. + - [ ] ๋งค์นญ ์ด๋ ฅ์ด ์—†์œผ๋ฉด ๋งค์นญ ์ด๋ ฅ์ด ์—†๋‹ค๋Š” ์—๋Ÿฌ ๋ฉ”์„ธ์ง€๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค. +- [ ] 4.ํŽ˜์–ด ์ดˆ๊ธฐํ™” ๊ธฐ๋Šฅ ๊ตฌํ˜„ + - [ ] ํŽ˜์–ด ์ดˆ๊ธฐํ™” ์ˆซ์ž๋ฅผ ์ž…๋ ฅํ•˜๋ฉด ํŽ˜์–ด ๋ฏธ์…˜์— ๋Œ€ํ•œ ์ •๋ณด๊ฐ€ ์ดˆ๊ธฐํ™” ๋œ๋‹ค. + - [ ] ์ดˆ๊ธฐํ™” ๋˜์—ˆ๋‹ค๋Š” ๋‚ด์šฉ์„ ์ถœ๋ ฅํ•œ๋‹ค. +- [ ] ์ข…๋ฃŒ(Q)๋ฅผ ์ž…๋ ฅํ•˜๋ฉด ๊ฒŒ์ž„์ด ์ข…๋ฃŒ๋œ๋‹ค. + +## โœ…์ถ”๊ฐ€ํ•  ๊ฐ์ฒด + +1. + +## โœ…์˜ˆ์™ธ ์ฒ˜๋ฆฌ + +- ์‚ฌ์šฉ์ž๊ฐ€ ์ž˜๋ชป๋œ ๊ฐ’์„ ์ž…๋ ฅํ•  ๊ฒฝ์šฐ IllegalArgumentException๋ฅผ ๋ฐœ์ƒ์‹œํ‚ค๊ณ , + - [ERROR]๋กœ ์‹œ์ž‘ํ•˜๋Š” ์—๋Ÿฌ ๋ฉ”์‹œ์ง€๋ฅผ ์ถœ๋ ฅ ํ›„ ํ•ด๋‹น ๋ถ€๋ถ„๋ถ€ํ„ฐ ๋‹ค์‹œ ์ž…๋ ฅ์„ ๋ฐ›๋Š”๋‹ค. +- [ ] 1.๊ธฐ๋Šฅ์„ ์„ ํƒํ•˜๋Š” ์ˆซ์ž๋ฅผ ์ž…๋ ฅํ•  ๋•Œ, 1~3 ์ด์™ธ์— ๋‹ค๋ฅธ ์ˆซ์ž๋ฅผ ์ž…๋ ฅํ•˜๋Š” ๊ฒฝ์šฐ + - [ ] Q ์ด์™ธ์— ๋‹ค๋ฅธ ๋ฌธ์ž๋ฅผ ์ž…๋ ฅํ•˜๋Š” ๊ฒฝ์šฐ +- [ ] 2.๊ณผ์ •, ๋ ˆ๋ฒจ, ๋ฏธ์…˜์— ์žˆ๋Š” ๋‹จ์–ด ์ด์™ธ์— ๋‹ค๋ฅธ ๋‹จ์–ด๋ฅผ ์ž…๋ ฅํ•˜๋Š” ๊ฒฝ์šฐ +- [ ] 3.ํŽ˜์–ด ์กฐํšŒ ๊ธฐ๋Šฅ์—์„œ "๋„ค | ์•„๋‹ˆ์˜ค" ๋ฅผ ์ œ์™ธํ•œ ๋‹ค๋ฅธ ๋‹จ์–ด๋ฅผ ์ž…๋ ฅํ•˜๋Š” ๊ฒฝ์šฐ \ No newline at end of file From 1edfe7ea4f3bac99aee37bab7fc93d99648d18e0 Mon Sep 17 00:00:00 2001 From: junyong Date: Sun, 27 Nov 2022 14:00:27 +0900 Subject: [PATCH 02/43] =?UTF-8?q?feat=20:=20=ED=8C=A8=ED=82=A4=EC=B9=98=20?= =?UTF-8?q?=EA=B5=AC=EC=A1=B0=20=EC=83=9D=EC=84=B1=20=EB=B0=8F=20=EA=B8=B0?= =?UTF-8?q?=EB=8A=A5=EC=9D=98=20=EC=A2=85=EB=A3=8C=EB=A5=BC=20=EC=B6=9C?= =?UTF-8?q?=EB=A0=A5=ED=95=98=EB=8A=94=20=EA=B8=B0=EB=8A=A5=20=EA=B5=AC?= =?UTF-8?q?=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/README.md | 2 +- src/main/java/controller/MainController.java | 4 ++++ src/main/java/pairmatching/Application.java | 1 + src/main/java/view/InputView.java | 14 ++++++++++++++ 4 files changed, 20 insertions(+), 1 deletion(-) create mode 100644 src/main/java/controller/MainController.java create mode 100644 src/main/java/view/InputView.java diff --git a/docs/README.md b/docs/README.md index 738d50daa..6d5fe7f0b 100644 --- a/docs/README.md +++ b/docs/README.md @@ -9,7 +9,7 @@ ### ๐Ÿ’™๊ตฌํ˜„ ๋ชฉํ‘œ -- ์œ„์•„๋ž˜ ๋‘˜ ์ค‘ ํ•˜๋‚˜์˜ ์นธ๋งŒ ๊ฑด๋„ ์ˆ˜ ์žˆ๋Š” ๋‹ค๋ฆฌ๋ฅผ ๋๊นŒ์ง€ ๊ฑด๋„ˆ๊ฐ€๋Š” ๊ฒŒ์ž„์ด๋‹ค. +- ๊ณผ์ •๊ณผ ๋ฏธ์…˜์— ํ•ด๋‹นํ•˜๋Š” ํŽ˜์–ด ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ๊ตฌํ˜„ํ•œ๋‹ค. ### ๐Ÿ“œ๊ตฌํ˜„ ๋™์ž‘ diff --git a/src/main/java/controller/MainController.java b/src/main/java/controller/MainController.java new file mode 100644 index 000000000..72cffba42 --- /dev/null +++ b/src/main/java/controller/MainController.java @@ -0,0 +1,4 @@ +package controller; + +public class MainController { +} diff --git a/src/main/java/pairmatching/Application.java b/src/main/java/pairmatching/Application.java index 6f56e741c..c619a21c4 100644 --- a/src/main/java/pairmatching/Application.java +++ b/src/main/java/pairmatching/Application.java @@ -3,5 +3,6 @@ public class Application { public static void main(String[] args) { // TODO ๊ตฌํ˜„ ์ง„ํ–‰ + } } diff --git a/src/main/java/view/InputView.java b/src/main/java/view/InputView.java new file mode 100644 index 000000000..a9bae46db --- /dev/null +++ b/src/main/java/view/InputView.java @@ -0,0 +1,14 @@ +package view; + +import camp.nextstep.edu.missionutils.Console; + +public class InputView { + public static String getMainSelect() { + System.out.println("๊ธฐ๋Šฅ์„ ์„ ํƒํ•˜์„ธ์š”. \n" + + "1. ํŽ˜์–ด ๋งค์นญ\n" + + "2. ํŽ˜์–ด ์กฐํšŒ\n" + + "3. ํŽ˜์–ด ์ดˆ๊ธฐํ™”\n" + + "Q. ์ข…๋ฃŒ"); + return Console.readLine(); + } +} From 7197b4e232933255baa3ec64eb02cae5cd55e432 Mon Sep 17 00:00:00 2001 From: junyong Date: Sun, 27 Nov 2022 14:06:20 +0900 Subject: [PATCH 03/43] =?UTF-8?q?feat(MainController):=20=EA=B8=B0?= =?UTF-8?q?=EB=8A=A5=20=EC=84=A0=ED=83=9D=ED=95=98=EB=8A=94=20=EC=9E=85?= =?UTF-8?q?=EB=A0=A5=20=EA=B8=B0=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 --- src/main/java/controller/MainController.java | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/src/main/java/controller/MainController.java b/src/main/java/controller/MainController.java index 72cffba42..9274df4b6 100644 --- a/src/main/java/controller/MainController.java +++ b/src/main/java/controller/MainController.java @@ -1,4 +1,18 @@ package controller; +import static view.InputView.getMainSelect; + public class MainController { + private boolean flag = false; + private void mainSelect() { + while(!flag) { + try { + String input = getMainSelect(); + flag = true; + } catch (IllegalArgumentException e) { + System.out.println(e.getMessage()); + } + + } + } } From 45de4b2cfa0abb6347757096a4d5c8422ea6e785 Mon Sep 17 00:00:00 2001 From: junyong Date: Sun, 27 Nov 2022 14:08:51 +0900 Subject: [PATCH 04/43] =?UTF-8?q?feat(Application):=20Main=EC=97=90?= =?UTF-8?q?=EC=84=9C=20=EA=B8=B0=EB=8A=A5=20=EC=84=A0=ED=83=9D=ED=95=98?= =?UTF-8?q?=EB=8A=94=20=EC=9E=85=EB=A0=A5=20=EA=B8=B0=EB=8A=A5=20=EA=B5=AC?= =?UTF-8?q?=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/controller/MainController.java | 4 ++++ src/main/java/pairmatching/Application.java | 5 ++++- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/src/main/java/controller/MainController.java b/src/main/java/controller/MainController.java index 9274df4b6..5f3f3f1a5 100644 --- a/src/main/java/controller/MainController.java +++ b/src/main/java/controller/MainController.java @@ -4,6 +4,10 @@ public class MainController { private boolean flag = false; + + public void run() { + mainSelect(); + } private void mainSelect() { while(!flag) { try { diff --git a/src/main/java/pairmatching/Application.java b/src/main/java/pairmatching/Application.java index c619a21c4..c7f033d0a 100644 --- a/src/main/java/pairmatching/Application.java +++ b/src/main/java/pairmatching/Application.java @@ -1,8 +1,11 @@ package pairmatching; +import controller.MainController; + public class Application { public static void main(String[] args) { // TODO ๊ตฌํ˜„ ์ง„ํ–‰ - + MainController mainController = new MainController(); + mainController.run(); } } From b45c25c7aeeb88ef1ef0c30db57e0cf0849f0fb7 Mon Sep 17 00:00:00 2001 From: junyong Date: Sun, 27 Nov 2022 14:09:41 +0900 Subject: [PATCH 05/43] =?UTF-8?q?docs=20:=20=ED=98=84=EC=9E=AC=20=EC=8B=9C?= =?UTF-8?q?=EC=A0=90=20=EA=B8=B0=EB=8A=A5=20=EA=B5=AC=ED=98=84=20=EC=99=84?= =?UTF-8?q?=EB=A3=8C=20=EC=97=85=EB=8D=B0=EC=9D=B4=ED=8A=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/README.md b/docs/README.md index 6d5fe7f0b..44c4acdcb 100644 --- a/docs/README.md +++ b/docs/README.md @@ -37,9 +37,9 @@ ## โœ…๊ธฐ๋Šฅ ๋ชฉ๋ก checkList -- [ ] 1.๊ธฐ๋Šฅ ์„ ํƒ - - [ ] ํ”„๋กœ๊ทธ๋žจ์ด ์‹œ์ž‘ํ•˜๋ฉด ๊ธฐ๋Šฅ์˜ ์ข…๋ฃŒ๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค. - - [ ] ๊ธฐ๋Šฅ์˜ ์ข…๋ฃŒ๋ฅผ ์ถœ๋ ฅํ•˜๊ณ , ๊ทธ ์ค‘ ํ•˜๋‚˜๋ฅผ ์ž…๋ ฅ ๋ฐ›๋Š”๋‹ค. +- [x] 1.๊ธฐ๋Šฅ ์„ ํƒ + - [x] ํ”„๋กœ๊ทธ๋žจ์ด ์‹œ์ž‘ํ•˜๋ฉด ๊ธฐ๋Šฅ์˜ ์ข…๋ฃŒ๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค. + - [x] ๊ธฐ๋Šฅ์˜ ์ข…๋ฃŒ๋ฅผ ์ถœ๋ ฅํ•˜๊ณ , ๊ทธ ์ค‘ ํ•˜๋‚˜๋ฅผ ์ž…๋ ฅ ๋ฐ›๋Š”๋‹ค. - [ ] 2.ํŽ˜์–ด ๋งค์นญ ๊ธฐ๋Šฅ ๊ตฌํ˜„ - [ ] ๊ณผ์ •๊ณผ ๋ฏธ์…˜์— ๋Œ€ํ•œ ๋‚ด์šฉ์„ ์ถœ๋ ฅํ•œ๋‹ค. - [ ] ๋งค์นญํ•˜๊ณ ์ž ํ•˜๋Š” ๊ณผ์ •, ๋ ˆ๋ฒจ, ๋ฏธ์…˜์„ ์ž…๋ ฅ ๋ฐ›๋Š”๋‹ค. From 6b6526f2364a4d7db5c69bc6e6ee0cea70fe0ad5 Mon Sep 17 00:00:00 2001 From: junyong Date: Sun, 27 Nov 2022 14:20:50 +0900 Subject: [PATCH 06/43] =?UTF-8?q?feat(Outputview):=20=EA=B3=BC=EC=A0=95?= =?UTF-8?q?=EA=B3=BC=20=EB=AF=B8=EC=85=98=EC=97=90=20=EB=8C=80=ED=95=9C=20?= =?UTF-8?q?=EB=82=B4=EC=9A=A9=EC=9D=84=20=EC=B6=9C=EB=A0=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/pairmatching/Application.java | 3 +++ src/main/java/view/OutputView.java | 18 ++++++++++++++++++ 2 files changed, 21 insertions(+) create mode 100644 src/main/java/view/OutputView.java diff --git a/src/main/java/pairmatching/Application.java b/src/main/java/pairmatching/Application.java index c7f033d0a..7f73c59d7 100644 --- a/src/main/java/pairmatching/Application.java +++ b/src/main/java/pairmatching/Application.java @@ -1,11 +1,14 @@ package pairmatching; import controller.MainController; +import view.OutputView; public class Application { + private static final OutputView outputview = new OutputView(); public static void main(String[] args) { // TODO ๊ตฌํ˜„ ์ง„ํ–‰ MainController mainController = new MainController(); mainController.run(); + outputview.printCourseAndMission(); } } diff --git a/src/main/java/view/OutputView.java b/src/main/java/view/OutputView.java new file mode 100644 index 000000000..587767cd2 --- /dev/null +++ b/src/main/java/view/OutputView.java @@ -0,0 +1,18 @@ +package view; + +import camp.nextstep.edu.missionutils.Console; + +public class OutputView { + public void printCourseAndMission() { + System.out.println("#############################################\n" + + "๊ณผ์ •: ๋ฐฑ์—”๋“œ | ํ”„๋ก ํŠธ์—”๋“œ\n" + + "๋ฏธ์…˜:\n" + + " - ๋ ˆ๋ฒจ1: ์ž๋™์ฐจ๊ฒฝ์ฃผ | ๋กœ๋˜ | ์ˆซ์ž์•ผ๊ตฌ๊ฒŒ์ž„\n" + + " - ๋ ˆ๋ฒจ2: ์žฅ๋ฐ”๊ตฌ๋‹ˆ | ๊ฒฐ์ œ | ์ง€ํ•˜์ฒ ๋…ธ์„ ๋„\n" + + " - ๋ ˆ๋ฒจ3: \n" + + " - ๋ ˆ๋ฒจ4: ์„ฑ๋Šฅ๊ฐœ์„  | ๋ฐฐํฌ \n" + + " - ๋ ˆ๋ฒจ5: \n" + + "#############################################\n" + + "๊ณผ์ •, ๋ ˆ๋ฒจ, ๋ฏธ์…˜์„ ์„ ํƒํ•˜์„ธ์š”."); + } +} From 1d1718ed0997f061b5bb9b8ebe10f3fc48b2578e Mon Sep 17 00:00:00 2001 From: junyong Date: Sun, 27 Nov 2022 14:34:02 +0900 Subject: [PATCH 07/43] =?UTF-8?q?refactor:=201.=EA=B8=B0=EB=8A=A5=20?= =?UTF-8?q?=EC=84=A0=ED=83=9D=20=EA=B5=AC=ED=98=84=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/controller/MainController.java | 19 ++----------------- src/main/java/pairmatching/Application.java | 15 +++++++++++++-- src/main/java/view/InputView.java | 10 +++------- src/main/java/view/OutputView.java | 7 +++++++ 4 files changed, 25 insertions(+), 26 deletions(-) diff --git a/src/main/java/controller/MainController.java b/src/main/java/controller/MainController.java index 5f3f3f1a5..34500be67 100644 --- a/src/main/java/controller/MainController.java +++ b/src/main/java/controller/MainController.java @@ -1,22 +1,7 @@ package controller; -import static view.InputView.getMainSelect; - public class MainController { - private boolean flag = false; - - public void run() { - mainSelect(); - } - private void mainSelect() { - while(!flag) { - try { - String input = getMainSelect(); - flag = true; - } catch (IllegalArgumentException e) { - System.out.println(e.getMessage()); - } - - } + public void mainSelect(String input ) { + int selectNum = Integer.parseInt(input); } } diff --git a/src/main/java/pairmatching/Application.java b/src/main/java/pairmatching/Application.java index 7f73c59d7..a454907ed 100644 --- a/src/main/java/pairmatching/Application.java +++ b/src/main/java/pairmatching/Application.java @@ -1,14 +1,25 @@ package pairmatching; import controller.MainController; +import view.InputView; import view.OutputView; public class Application { + private static final InputView inputview = new InputView(); private static final OutputView outputview = new OutputView(); + private static final MainController mainController = new MainController(); public static void main(String[] args) { // TODO ๊ตฌํ˜„ ์ง„ํ–‰ - MainController mainController = new MainController(); - mainController.run(); + try { + init(); + } catch (IllegalArgumentException e) { + System.out.println(e.getMessage()); + } outputview.printCourseAndMission(); } + private static void init() { + outputview.printSelectFunction(); + String input = inputview.readSelect(); + mainController.mainSelect(input); + } } diff --git a/src/main/java/view/InputView.java b/src/main/java/view/InputView.java index a9bae46db..c7c6bf842 100644 --- a/src/main/java/view/InputView.java +++ b/src/main/java/view/InputView.java @@ -3,12 +3,8 @@ import camp.nextstep.edu.missionutils.Console; public class InputView { - public static String getMainSelect() { - System.out.println("๊ธฐ๋Šฅ์„ ์„ ํƒํ•˜์„ธ์š”. \n" + - "1. ํŽ˜์–ด ๋งค์นญ\n" + - "2. ํŽ˜์–ด ์กฐํšŒ\n" + - "3. ํŽ˜์–ด ์ดˆ๊ธฐํ™”\n" + - "Q. ์ข…๋ฃŒ"); - return Console.readLine(); + public String readSelect() { + String selectNumber = Console.readLine(); + return selectNumber; } } diff --git a/src/main/java/view/OutputView.java b/src/main/java/view/OutputView.java index 587767cd2..c804e61cf 100644 --- a/src/main/java/view/OutputView.java +++ b/src/main/java/view/OutputView.java @@ -3,6 +3,13 @@ import camp.nextstep.edu.missionutils.Console; public class OutputView { + public void printSelectFunction() { + System.out.println("๊ธฐ๋Šฅ์„ ์„ ํƒํ•˜์„ธ์š”. \n" + + "1. ํŽ˜์–ด ๋งค์นญ\n" + + "2. ํŽ˜์–ด ์กฐํšŒ\n" + + "3. ํŽ˜์–ด ์ดˆ๊ธฐํ™”\n" + + "Q. ์ข…๋ฃŒ"); + } public void printCourseAndMission() { System.out.println("#############################################\n" + "๊ณผ์ •: ๋ฐฑ์—”๋“œ | ํ”„๋ก ํŠธ์—”๋“œ\n" + From eff21d85c2ae84dc8cadd294c12336ed96ec2e74 Mon Sep 17 00:00:00 2001 From: junyong Date: Sun, 27 Nov 2022 14:37:58 +0900 Subject: [PATCH 08/43] =?UTF-8?q?feat(InputView):=20=EA=B3=BC=EC=A0=95,=20?= =?UTF-8?q?=EB=A0=88=EB=B2=A8,=20=EB=AF=B8=EC=85=98=EC=9D=84=20=EC=9E=85?= =?UTF-8?q?=EB=A0=A5=EB=B0=9B=EB=8A=94=20=EA=B8=B0=EB=8A=A5=20=EA=B5=AC?= =?UTF-8?q?=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/view/InputView.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/main/java/view/InputView.java b/src/main/java/view/InputView.java index c7c6bf842..98ff34085 100644 --- a/src/main/java/view/InputView.java +++ b/src/main/java/view/InputView.java @@ -7,4 +7,8 @@ public String readSelect() { String selectNumber = Console.readLine(); return selectNumber; } + public String readSelectCourseAndMission() { + String selectCourAndMis = Console.readLine(); + return selectCourAndMis; + } } From 415c758d41594be1339b81bfd6d6deb3a989fbd6 Mon Sep 17 00:00:00 2001 From: junyong Date: Sun, 27 Nov 2022 14:56:12 +0900 Subject: [PATCH 09/43] =?UTF-8?q?feat=20:=20=EA=B3=BC=EC=A0=95,=20?= =?UTF-8?q?=EB=A0=88=EB=B2=A8,=20=EB=AF=B8=EC=85=98=20=EC=A0=95=EB=B3=B4?= =?UTF-8?q?=EC=97=90=20=EA=B4=80=ED=95=9C=20=EB=82=B4=EC=9A=A9=20=EC=B6=94?= =?UTF-8?q?=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/pairmatching/Course.java | 28 +++++++++++++++++++ src/main/java/pairmatching/Level.java | 30 ++++++++++++++++++++ src/main/java/pairmatching/Missions.java | 35 ++++++++++++++++++++++++ 3 files changed, 93 insertions(+) create mode 100644 src/main/java/pairmatching/Course.java create mode 100644 src/main/java/pairmatching/Level.java create mode 100644 src/main/java/pairmatching/Missions.java diff --git a/src/main/java/pairmatching/Course.java b/src/main/java/pairmatching/Course.java new file mode 100644 index 000000000..691abcb66 --- /dev/null +++ b/src/main/java/pairmatching/Course.java @@ -0,0 +1,28 @@ +package pairmatching; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import java.util.stream.Collectors; + +public enum Course { + BACKEND("๋ฐฑ์—”๋“œ"), + FRONTEND("ํ”„๋ก ํŠธ์—”๋“œ"); + + private String name; + + Course(String name) { + this.name = name; + } + + // ์ถ”๊ฐ€ ๊ธฐ๋Šฅ ๊ตฌํ˜„ + public String getName() { + return name; + } + public List getList() { + return Arrays.stream(Course.values()) + .map(Course::getName) + .sequential() + .collect(Collectors.toList()); + } +} \ No newline at end of file diff --git a/src/main/java/pairmatching/Level.java b/src/main/java/pairmatching/Level.java new file mode 100644 index 000000000..61424a5d5 --- /dev/null +++ b/src/main/java/pairmatching/Level.java @@ -0,0 +1,30 @@ +package pairmatching; + +import java.util.Arrays; +import java.util.List; +import java.util.stream.Collectors; + +public enum Level { + LEVEL1("๋ ˆ๋ฒจ1"), + LEVEL2("๋ ˆ๋ฒจ2"), + LEVEL3("๋ ˆ๋ฒจ3"), + LEVEL4("๋ ˆ๋ฒจ4"), + LEVEL5("๋ ˆ๋ฒจ5"); + + private String name; + + Level(String name) { + this.name = name; + } + + // ์ถ”๊ฐ€ ๊ธฐ๋Šฅ ๊ตฌํ˜„ + public String getName() { + return name; + } + + public static List getList() { + return Arrays.stream(Level.values()) + .sequential() + .collect(Collectors.toList()); + } +} \ No newline at end of file diff --git a/src/main/java/pairmatching/Missions.java b/src/main/java/pairmatching/Missions.java new file mode 100644 index 000000000..1574c32ce --- /dev/null +++ b/src/main/java/pairmatching/Missions.java @@ -0,0 +1,35 @@ +package pairmatching; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import java.util.TreeMap; + +public class Missions { + private static Map> missionMap; + + public Missions() { + missionMap = new TreeMap<>(); + init(); + } + private void init() { + Level.getList().stream() + .forEach(level -> missionMap.put(level, new ArrayList<>())); + + addInfo(); + } + private void addInfo() { + missionMap.get(Level.LEVEL1).add("์ž๋™์ฐจ๊ฒฝ์ฃผ"); + missionMap.get(Level.LEVEL1).add("๋กœ๋˜"); + missionMap.get(Level.LEVEL1).add("์ˆซ์ž์•ผ๊ตฌ๊ฒŒ์ž„"); + + missionMap.get(Level.LEVEL2).add("์žฅ๋ฐ”๊ตฌ๋‹ˆ"); + missionMap.get(Level.LEVEL2).add("๋กœ๋˜"); + missionMap.get(Level.LEVEL2).add("์ˆซ์ž์•ผ๊ตฌ๊ฒŒ"); + + missionMap.get(Level.LEVEL4).add("์„ฑ๋Šฅ๊ฐœ์„ "); + missionMap.get(Level.LEVEL4).add("๋ฐฐํฌ"); + + + } +} From 68084a11cb9f94161f39ac842c1357855580bb1a Mon Sep 17 00:00:00 2001 From: junyong Date: Sun, 27 Nov 2022 15:18:21 +0900 Subject: [PATCH 10/43] =?UTF-8?q?feat:=202.=ED=8E=98=EC=96=B4=20=EB=A7=A4?= =?UTF-8?q?=EC=B9=AD=20=EA=B8=B0=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 --- src/main/java/pairmatching/Course.java | 2 +- src/main/java/pairmatching/Missions.java | 10 +++---- .../controller/MainController.java | 13 ++++++++++ .../controller/MatchingController.java | 12 +++++++++ .../{ => pairmatching}/view/InputView.java | 2 +- .../java/pairmatching/view/OutputView.java | 26 +++++++++++++++++++ 6 files changed, 57 insertions(+), 8 deletions(-) create mode 100644 src/main/java/pairmatching/controller/MainController.java create mode 100644 src/main/java/pairmatching/controller/MatchingController.java rename src/main/java/{ => pairmatching}/view/InputView.java (92%) create mode 100644 src/main/java/pairmatching/view/OutputView.java diff --git a/src/main/java/pairmatching/Course.java b/src/main/java/pairmatching/Course.java index 691abcb66..d9273344d 100644 --- a/src/main/java/pairmatching/Course.java +++ b/src/main/java/pairmatching/Course.java @@ -19,7 +19,7 @@ public enum Course { public String getName() { return name; } - public List getList() { + public static List getList() { return Arrays.stream(Course.values()) .map(Course::getName) .sequential() diff --git a/src/main/java/pairmatching/Missions.java b/src/main/java/pairmatching/Missions.java index 1574c32ce..07b4545a8 100644 --- a/src/main/java/pairmatching/Missions.java +++ b/src/main/java/pairmatching/Missions.java @@ -1,9 +1,6 @@ package pairmatching; -import java.util.ArrayList; -import java.util.List; -import java.util.Map; -import java.util.TreeMap; +import java.util.*; public class Missions { private static Map> missionMap; @@ -29,7 +26,8 @@ private void addInfo() { missionMap.get(Level.LEVEL4).add("์„ฑ๋Šฅ๊ฐœ์„ "); missionMap.get(Level.LEVEL4).add("๋ฐฐํฌ"); - - + } + public List getValue(Level level) { + return Collections.unmodifiableList(missionMap.get(level)); } } diff --git a/src/main/java/pairmatching/controller/MainController.java b/src/main/java/pairmatching/controller/MainController.java new file mode 100644 index 000000000..616e5e1a0 --- /dev/null +++ b/src/main/java/pairmatching/controller/MainController.java @@ -0,0 +1,13 @@ +package pairmatching.controller; + +public class MainController { + public static final MatchingController matchingController = new MatchingController(); + public void runSelectFunction(String input ) { + int selectNum = Integer.parseInt(input); + + if(input.equals(selectNum == 1) { + matchingController.run(); + } + } + +} diff --git a/src/main/java/pairmatching/controller/MatchingController.java b/src/main/java/pairmatching/controller/MatchingController.java new file mode 100644 index 000000000..a76d445c3 --- /dev/null +++ b/src/main/java/pairmatching/controller/MatchingController.java @@ -0,0 +1,12 @@ +package pairmatching.controller; + +import pairmatching.Missions; + +import static pairmatching.view.OutputView.printCourseAndMission; +public class MatchingController { + public static final Missions missions = new Missions(); + + public void run() { + printCourseAndMission(missions); + } +} diff --git a/src/main/java/view/InputView.java b/src/main/java/pairmatching/view/InputView.java similarity index 92% rename from src/main/java/view/InputView.java rename to src/main/java/pairmatching/view/InputView.java index 98ff34085..124f0eccd 100644 --- a/src/main/java/view/InputView.java +++ b/src/main/java/pairmatching/view/InputView.java @@ -1,4 +1,4 @@ -package view; +package pairmatching.view; import camp.nextstep.edu.missionutils.Console; diff --git a/src/main/java/pairmatching/view/OutputView.java b/src/main/java/pairmatching/view/OutputView.java new file mode 100644 index 000000000..cf47d5407 --- /dev/null +++ b/src/main/java/pairmatching/view/OutputView.java @@ -0,0 +1,26 @@ +package pairmatching.view; + +import camp.nextstep.edu.missionutils.Console; +import pairmatching.Course; +import pairmatching.Level; +import pairmatching.Missions; + +public class OutputView { + public void printSelectFunction() { + System.out.println("๊ธฐ๋Šฅ์„ ์„ ํƒํ•˜์„ธ์š”. \n" + + "1. ํŽ˜์–ด ๋งค์นญ\n" + + "2. ํŽ˜์–ด ์กฐํšŒ\n" + + "3. ํŽ˜์–ด ์ดˆ๊ธฐํ™”\n" + + "Q. ์ข…๋ฃŒ"); + } + public static void printCourseAndMission(Missions missions) { + System.out.println("#############################################" + + "๊ณผ์ •: \n"); + System.out.println(String.join(" | ", Course.getList())); + for (Level level : Level.getList()) { + System.out.print(" -" + level.getName() + ":"); + System.out.println(String.join(" | ", missions.getValue(level))); + } + System.out.println("#############################################\n"); + } +} From a10d723f4e69dc6a5f9fcc77ededd496881fed21 Mon Sep 17 00:00:00 2001 From: junyong Date: Sun, 27 Nov 2022 15:18:37 +0900 Subject: [PATCH 11/43] =?UTF-8?q?refactor:=202.=ED=8E=98=EC=96=B4=20?= =?UTF-8?q?=EB=A7=A4=EC=B9=AD=20=EA=B8=B0=EB=8A=A5=20=EA=B4=80=EB=A0=A8=20?= =?UTF-8?q?=ED=8C=A8=ED=82=A4=EC=A7=80=20=EC=9C=84=EC=B9=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/controller/MainController.java | 7 ------ src/main/java/view/OutputView.java | 25 -------------------- 2 files changed, 32 deletions(-) delete mode 100644 src/main/java/controller/MainController.java delete mode 100644 src/main/java/view/OutputView.java diff --git a/src/main/java/controller/MainController.java b/src/main/java/controller/MainController.java deleted file mode 100644 index 34500be67..000000000 --- a/src/main/java/controller/MainController.java +++ /dev/null @@ -1,7 +0,0 @@ -package controller; - -public class MainController { - public void mainSelect(String input ) { - int selectNum = Integer.parseInt(input); - } -} diff --git a/src/main/java/view/OutputView.java b/src/main/java/view/OutputView.java deleted file mode 100644 index c804e61cf..000000000 --- a/src/main/java/view/OutputView.java +++ /dev/null @@ -1,25 +0,0 @@ -package view; - -import camp.nextstep.edu.missionutils.Console; - -public class OutputView { - public void printSelectFunction() { - System.out.println("๊ธฐ๋Šฅ์„ ์„ ํƒํ•˜์„ธ์š”. \n" + - "1. ํŽ˜์–ด ๋งค์นญ\n" + - "2. ํŽ˜์–ด ์กฐํšŒ\n" + - "3. ํŽ˜์–ด ์ดˆ๊ธฐํ™”\n" + - "Q. ์ข…๋ฃŒ"); - } - public void printCourseAndMission() { - System.out.println("#############################################\n" + - "๊ณผ์ •: ๋ฐฑ์—”๋“œ | ํ”„๋ก ํŠธ์—”๋“œ\n" + - "๋ฏธ์…˜:\n" + - " - ๋ ˆ๋ฒจ1: ์ž๋™์ฐจ๊ฒฝ์ฃผ | ๋กœ๋˜ | ์ˆซ์ž์•ผ๊ตฌ๊ฒŒ์ž„\n" + - " - ๋ ˆ๋ฒจ2: ์žฅ๋ฐ”๊ตฌ๋‹ˆ | ๊ฒฐ์ œ | ์ง€ํ•˜์ฒ ๋…ธ์„ ๋„\n" + - " - ๋ ˆ๋ฒจ3: \n" + - " - ๋ ˆ๋ฒจ4: ์„ฑ๋Šฅ๊ฐœ์„  | ๋ฐฐํฌ \n" + - " - ๋ ˆ๋ฒจ5: \n" + - "#############################################\n" + - "๊ณผ์ •, ๋ ˆ๋ฒจ, ๋ฏธ์…˜์„ ์„ ํƒํ•˜์„ธ์š”."); - } -} From 54bb8b04cddd19c3e520f786da5cef685b490748 Mon Sep 17 00:00:00 2001 From: junyong Date: Sun, 27 Nov 2022 15:45:30 +0900 Subject: [PATCH 12/43] =?UTF-8?q?test:=20=EA=B8=B0=EB=8A=A5=20=EC=84=A0?= =?UTF-8?q?=ED=83=9D=20=EC=98=88=EC=99=B8=20=EC=B2=98=EB=A6=AC=20=EA=B5=AC?= =?UTF-8?q?=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/MainController.java | 30 ++++++++++++++++--- .../java/pairmatching/utils/Validate.java | 16 ++++++++++ 2 files changed, 42 insertions(+), 4 deletions(-) create mode 100644 src/main/java/pairmatching/utils/Validate.java diff --git a/src/main/java/pairmatching/controller/MainController.java b/src/main/java/pairmatching/controller/MainController.java index 616e5e1a0..f4be797e2 100644 --- a/src/main/java/pairmatching/controller/MainController.java +++ b/src/main/java/pairmatching/controller/MainController.java @@ -1,13 +1,35 @@ package pairmatching.controller; +import pairmatching.utils.Validate; +import pairmatching.view.InputView; + public class MainController { + public static final Validate validate = new Validate(); public static final MatchingController matchingController = new MatchingController(); - public void runSelectFunction(String input ) { - int selectNum = Integer.parseInt(input); + public static final InputView inputView = new InputView(); + public void run() { + boolean flag = false; + while (!flag) { + try { + String input = validate.validateCheckNumber(inputView.getMainSelect()); - if(input.equals(selectNum == 1) { - matchingController.run(); + if (input.equals("Q")) { + flag = true; + } + } catch (IllegalArgumentException e) { + System.out.println(e.getMessage()); + } } } + private void readSelect(String input) { + if (input.equals("1")) { + matchingController.run(); + } + if (input.equals("2")) { + } + if (input.equals("3")) { + + } + } } diff --git a/src/main/java/pairmatching/utils/Validate.java b/src/main/java/pairmatching/utils/Validate.java new file mode 100644 index 000000000..864c481c6 --- /dev/null +++ b/src/main/java/pairmatching/utils/Validate.java @@ -0,0 +1,16 @@ +package pairmatching.utils; + +import java.util.Arrays; +import java.util.List; + +public class Validate { + private final static String ERROR_MESSAGE = "[ERROR]"; + + public static String validateCheckNumber(String input) { + List candidateNumAndQ = Arrays.asList(new String[]{"1", "2", "3", "Q"}); + if (!candidateNumAndQ.contains(input)) { + throw new IllegalArgumentException(ERROR_MESSAGE + "๋ณด๊ธฐ์— ์žˆ๋Š” ๊ธฐ๋Šฅ ์„ ํƒ๋งŒ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค."); + } + return input; + } +} From 69ecc76f00a0ee0d8f9c956b7bd269a852fabb2c Mon Sep 17 00:00:00 2001 From: junyong Date: Sun, 27 Nov 2022 15:46:33 +0900 Subject: [PATCH 13/43] =?UTF-8?q?refactor:=201.=EA=B8=B0=EB=8A=A5=20?= =?UTF-8?q?=EC=84=A0=ED=83=9D=20=EA=B5=AC=ED=98=84=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/pairmatching/Application.java | 18 ++++-------------- src/main/java/pairmatching/view/InputView.java | 12 ++++++++---- 2 files changed, 12 insertions(+), 18 deletions(-) diff --git a/src/main/java/pairmatching/Application.java b/src/main/java/pairmatching/Application.java index a454907ed..f81e14eda 100644 --- a/src/main/java/pairmatching/Application.java +++ b/src/main/java/pairmatching/Application.java @@ -1,8 +1,8 @@ package pairmatching; -import controller.MainController; -import view.InputView; -import view.OutputView; +import pairmatching.controller.MainController; +import pairmatching.view.InputView; +import pairmatching.view.OutputView; public class Application { private static final InputView inputview = new InputView(); @@ -10,16 +10,6 @@ public class Application { private static final MainController mainController = new MainController(); public static void main(String[] args) { // TODO ๊ตฌํ˜„ ์ง„ํ–‰ - try { - init(); - } catch (IllegalArgumentException e) { - System.out.println(e.getMessage()); - } - outputview.printCourseAndMission(); - } - private static void init() { - outputview.printSelectFunction(); - String input = inputview.readSelect(); - mainController.mainSelect(input); + mainController.run(); } } diff --git a/src/main/java/pairmatching/view/InputView.java b/src/main/java/pairmatching/view/InputView.java index 124f0eccd..6574dbfee 100644 --- a/src/main/java/pairmatching/view/InputView.java +++ b/src/main/java/pairmatching/view/InputView.java @@ -3,11 +3,15 @@ import camp.nextstep.edu.missionutils.Console; public class InputView { - public String readSelect() { - String selectNumber = Console.readLine(); - return selectNumber; + public static String getMainSelect() { + System.out.println("\n๊ธฐ๋Šฅ์„ ์„ ํƒํ•˜์„ธ์š”.\n" + + "1. ํŽ˜์–ด ๋งค์นญ\n" + + "2. ํŽ˜์–ด ์กฐํšŒ\n" + + "3. ํŽ˜์–ด ์ดˆ๊ธฐํ™”\n" + + "Q. ์ข…๋ฃŒ"); + return Console.readLine(); } - public String readSelectCourseAndMission() { + public String getSelectCourseAndMission() { String selectCourAndMis = Console.readLine(); return selectCourAndMis; } From fc47df13406f102f33a02fb4c0d05d8341074e8b Mon Sep 17 00:00:00 2001 From: junyong Date: Sun, 27 Nov 2022 16:00:48 +0900 Subject: [PATCH 14/43] =?UTF-8?q?refactor:=20=EA=B3=BC=EC=A0=95,=20?= =?UTF-8?q?=EB=A0=88=EB=B2=A8,=20=EB=AF=B8=EC=85=98=EC=97=90=20=EB=8C=80?= =?UTF-8?q?=ED=95=9C=20=EC=A0=95=EB=B3=B4=20=EC=B6=9C=EB=A0=A5=ED=95=98?= =?UTF-8?q?=EB=8A=94=20=EB=82=B4=EC=9A=A9=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/pairmatching/Missions.java | 4 ++-- .../controller/MainController.java | 2 +- .../java/pairmatching/view/OutputView.java | 19 +++++++++++-------- 3 files changed, 14 insertions(+), 11 deletions(-) diff --git a/src/main/java/pairmatching/Missions.java b/src/main/java/pairmatching/Missions.java index 07b4545a8..85823211e 100644 --- a/src/main/java/pairmatching/Missions.java +++ b/src/main/java/pairmatching/Missions.java @@ -21,8 +21,8 @@ private void addInfo() { missionMap.get(Level.LEVEL1).add("์ˆซ์ž์•ผ๊ตฌ๊ฒŒ์ž„"); missionMap.get(Level.LEVEL2).add("์žฅ๋ฐ”๊ตฌ๋‹ˆ"); - missionMap.get(Level.LEVEL2).add("๋กœ๋˜"); - missionMap.get(Level.LEVEL2).add("์ˆซ์ž์•ผ๊ตฌ๊ฒŒ"); + missionMap.get(Level.LEVEL2).add("๊ฒฐ์ œ"); + missionMap.get(Level.LEVEL2).add("์ง€ํ•˜์ฒ ๋…ธ์„ ๋„"); missionMap.get(Level.LEVEL4).add("์„ฑ๋Šฅ๊ฐœ์„ "); missionMap.get(Level.LEVEL4).add("๋ฐฐํฌ"); diff --git a/src/main/java/pairmatching/controller/MainController.java b/src/main/java/pairmatching/controller/MainController.java index f4be797e2..e483b2888 100644 --- a/src/main/java/pairmatching/controller/MainController.java +++ b/src/main/java/pairmatching/controller/MainController.java @@ -12,7 +12,7 @@ public void run() { while (!flag) { try { String input = validate.validateCheckNumber(inputView.getMainSelect()); - + readSelect(input); if (input.equals("Q")) { flag = true; } diff --git a/src/main/java/pairmatching/view/OutputView.java b/src/main/java/pairmatching/view/OutputView.java index cf47d5407..3cfc66564 100644 --- a/src/main/java/pairmatching/view/OutputView.java +++ b/src/main/java/pairmatching/view/OutputView.java @@ -14,13 +14,16 @@ public void printSelectFunction() { "Q. ์ข…๋ฃŒ"); } public static void printCourseAndMission(Missions missions) { - System.out.println("#############################################" + - "๊ณผ์ •: \n"); - System.out.println(String.join(" | ", Course.getList())); - for (Level level : Level.getList()) { - System.out.print(" -" + level.getName() + ":"); - System.out.println(String.join(" | ", missions.getValue(level))); - } - System.out.println("#############################################\n"); + System.out.println("\n#############################################"); + System.out.print("๊ณผ์ •: "); + System.out.println(String.join(" | ", Course.getList())); + System.out.println("๋ฏธ์…˜: "); + for (Level level : Level.getList()) { + System.out.print(" - " + level.getName() + ": "); + System.out.println(String.join(" | ", missions.getValue(level))); + } + System.out.println("#############################################"); + System.out.println("๊ณผ์ •, ๋ ˆ๋ฒจ, ๋ฏธ์…˜์„ ์„ ํƒํ•ด์ฃผ์„ธ์š”."); + System.out.println("ex) ๋ฐฑ์—”๋“œ, ๋ ˆ๋ฒจ1, ์ž๋™์ฐจ๊ฒฝ์ฃผ"); } } From 201840449e6a8ec8fff34377dce456ce80afc1ac Mon Sep 17 00:00:00 2001 From: junyong Date: Sun, 27 Nov 2022 16:01:10 +0900 Subject: [PATCH 15/43] =?UTF-8?q?docs:=20=ED=98=84=EC=9E=AC=20=EC=8B=9C?= =?UTF-8?q?=EC=A0=90=20=EA=B8=B0=EB=8A=A5=20=EB=AA=A9=EB=A1=9D=20=EC=97=85?= =?UTF-8?q?=EB=8D=B0=EC=9D=B4=ED=8A=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/README.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/README.md b/docs/README.md index 44c4acdcb..183a3a3fe 100644 --- a/docs/README.md +++ b/docs/README.md @@ -40,10 +40,10 @@ - [x] 1.๊ธฐ๋Šฅ ์„ ํƒ - [x] ํ”„๋กœ๊ทธ๋žจ์ด ์‹œ์ž‘ํ•˜๋ฉด ๊ธฐ๋Šฅ์˜ ์ข…๋ฃŒ๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค. - [x] ๊ธฐ๋Šฅ์˜ ์ข…๋ฃŒ๋ฅผ ์ถœ๋ ฅํ•˜๊ณ , ๊ทธ ์ค‘ ํ•˜๋‚˜๋ฅผ ์ž…๋ ฅ ๋ฐ›๋Š”๋‹ค. -- [ ] 2.ํŽ˜์–ด ๋งค์นญ ๊ธฐ๋Šฅ ๊ตฌํ˜„ - - [ ] ๊ณผ์ •๊ณผ ๋ฏธ์…˜์— ๋Œ€ํ•œ ๋‚ด์šฉ์„ ์ถœ๋ ฅํ•œ๋‹ค. - - [ ] ๋งค์นญํ•˜๊ณ ์ž ํ•˜๋Š” ๊ณผ์ •, ๋ ˆ๋ฒจ, ๋ฏธ์…˜์„ ์ž…๋ ฅ ๋ฐ›๋Š”๋‹ค. - - [ ] ๋งค์นญ์ด ์ •์ƒ์ ์œผ๋กœ ์ˆ˜ํ–‰๋˜๋ฉด ๊ฒฐ๊ณผ๊ฐ€ ์ถœ๋ ฅ๋œ๋‹ค. +- [x] 2.ํŽ˜์–ด ๋งค์นญ ๊ธฐ๋Šฅ ๊ตฌํ˜„ + - [x] ๊ณผ์ •๊ณผ ๋ฏธ์…˜์— ๋Œ€ํ•œ ๋‚ด์šฉ์„ ์ถœ๋ ฅํ•œ๋‹ค. + - [x] ๋งค์นญํ•˜๊ณ ์ž ํ•˜๋Š” ๊ณผ์ •, ๋ ˆ๋ฒจ, ๋ฏธ์…˜์„ ์ž…๋ ฅ ๋ฐ›๋Š”๋‹ค. + - [x] ๋งค์นญ์ด ์ •์ƒ์ ์œผ๋กœ ์ˆ˜ํ–‰๋˜๋ฉด ๊ฒฐ๊ณผ๊ฐ€ ์ถœ๋ ฅ๋œ๋‹ค. - [ ] 3.ํŽ˜์–ด ์กฐํšŒ ๊ธฐ๋Šฅ ๊ตฌํ˜„ - [ ] ๋งค์นญ ์ด๋ ฅ์ด ์žˆ์œผ๋ฉด ํ•ด๋‹น ๋ฏธ์…˜์˜ ํŽ˜์–ด ์ •๋ณด๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค. - [ ] ๋งค์นญ ์ด๋ ฅ์ด ์—†์œผ๋ฉด ๋งค์นญ ์ด๋ ฅ์ด ์—†๋‹ค๋Š” ์—๋Ÿฌ ๋ฉ”์„ธ์ง€๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค. From 3c1a578a1d782972761f965003eb93d76b537f4f Mon Sep 17 00:00:00 2001 From: junyong Date: Sun, 27 Nov 2022 16:15:42 +0900 Subject: [PATCH 16/43] =?UTF-8?q?refactor:=20=ED=95=A8=EC=88=98=EB=AA=85?= =?UTF-8?q?=20=EC=9D=B4=EB=A6=84=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/pairmatching/utils/Validate.java | 25 ++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/src/main/java/pairmatching/utils/Validate.java b/src/main/java/pairmatching/utils/Validate.java index 864c481c6..ce63dab6d 100644 --- a/src/main/java/pairmatching/utils/Validate.java +++ b/src/main/java/pairmatching/utils/Validate.java @@ -6,11 +6,34 @@ public class Validate { private final static String ERROR_MESSAGE = "[ERROR]"; - public static String validateCheckNumber(String input) { + public static String CheckMissionInfo(String input) { List candidateNumAndQ = Arrays.asList(new String[]{"1", "2", "3", "Q"}); if (!candidateNumAndQ.contains(input)) { throw new IllegalArgumentException(ERROR_MESSAGE + "๋ณด๊ธฐ์— ์žˆ๋Š” ๊ธฐ๋Šฅ ์„ ํƒ๋งŒ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค."); } return input; } + + public static void checkEachInfo(String input) { + checkEmptyValue(input); + checkFrontBlank(input); + } + + private static void checkEmptyValue(String input) { + if (input.isEmpty()) { + throw new IllegalArgumentException(ERROR_EMPTY_INPUT); + } + } + + private static void checkFrontBlank(String input) { + if (input.charAt(0) == ' ') { + throw new IllegalArgumentException(ERROR_FRONT_BLANK); + } + } + + public static void checkInfoCount(String[] input) { + if (input.length != 3) { + throw new IllegalArgumentException(ERROR_LESS_INFO); + } + } } From df9a849ae9b2826e214896884e624c996e7c50dd Mon Sep 17 00:00:00 2001 From: junyong Date: Sun, 27 Nov 2022 16:23:36 +0900 Subject: [PATCH 17/43] =?UTF-8?q?feat:=20=EB=A7=A4=EC=B9=AD=ED=95=A0=20?= =?UTF-8?q?=EB=A7=A4=EC=B9=AD=ED=95=98=EA=B3=A0=EC=9E=90=20=ED=95=98?= =?UTF-8?q?=EB=8A=94=20=EA=B3=BC=EC=A0=95,=20=EB=A0=88=EB=B2=A8,=20?= =?UTF-8?q?=EB=AF=B8=EC=85=98=EC=9D=84=20=EC=9E=85=EB=A0=A5=20=EB=B0=9B?= =?UTF-8?q?=EB=8A=94=20=EA=B8=B0=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 --- src/main/java/pairmatching/Level.java | 30 ---------- .../controller/MatchingController.java | 56 +++++++++++++++++-- .../java/pairmatching/{ => model}/Course.java | 12 +++- src/main/java/pairmatching/model/Level.java | 45 +++++++++++++++ .../pairmatching/{ => model}/Missions.java | 9 ++- .../pairmatching/model/SelectMissionDto.java | 25 +++++++++ .../pairmatching/utils/ExceptionMessage.java | 12 ++++ .../java/pairmatching/utils/Validate.java | 4 +- .../java/pairmatching/view/InputView.java | 7 ++- 9 files changed, 158 insertions(+), 42 deletions(-) delete mode 100644 src/main/java/pairmatching/Level.java rename src/main/java/pairmatching/{ => model}/Course.java (61%) create mode 100644 src/main/java/pairmatching/model/Level.java rename src/main/java/pairmatching/{ => model}/Missions.java (81%) create mode 100644 src/main/java/pairmatching/model/SelectMissionDto.java create mode 100644 src/main/java/pairmatching/utils/ExceptionMessage.java diff --git a/src/main/java/pairmatching/Level.java b/src/main/java/pairmatching/Level.java deleted file mode 100644 index 61424a5d5..000000000 --- a/src/main/java/pairmatching/Level.java +++ /dev/null @@ -1,30 +0,0 @@ -package pairmatching; - -import java.util.Arrays; -import java.util.List; -import java.util.stream.Collectors; - -public enum Level { - LEVEL1("๋ ˆ๋ฒจ1"), - LEVEL2("๋ ˆ๋ฒจ2"), - LEVEL3("๋ ˆ๋ฒจ3"), - LEVEL4("๋ ˆ๋ฒจ4"), - LEVEL5("๋ ˆ๋ฒจ5"); - - private String name; - - Level(String name) { - this.name = name; - } - - // ์ถ”๊ฐ€ ๊ธฐ๋Šฅ ๊ตฌํ˜„ - public String getName() { - return name; - } - - public static List getList() { - return Arrays.stream(Level.values()) - .sequential() - .collect(Collectors.toList()); - } -} \ No newline at end of file diff --git a/src/main/java/pairmatching/controller/MatchingController.java b/src/main/java/pairmatching/controller/MatchingController.java index a76d445c3..5e2a37f67 100644 --- a/src/main/java/pairmatching/controller/MatchingController.java +++ b/src/main/java/pairmatching/controller/MatchingController.java @@ -1,12 +1,58 @@ package pairmatching.controller; -import pairmatching.Missions; +import pairmatching.model.Course; +import pairmatching.model.Level; +import pairmatching.model.Missions; +import pairmatching.utils.Validate; +import pairmatching.view.OutputView; -import static pairmatching.view.OutputView.printCourseAndMission; -public class MatchingController { - public static final Missions missions = new Missions(); +import static pairmatching.utils.ExceptionMessage.*; +import static pairmatching.utils.Validate.checkEachInfo; +import static pairmatching.utils.Validate.checkInfoCount; +import static pairmatching.view.InputView.getMatchingInfo; +public class MatchingController { + public static final OutputView outputView = new OutputView(); + public static final Missions missions = new Missions(); + public static final Validate validate = new Validate(); public void run() { - printCourseAndMission(missions); + boolean flag = false; + while(!flag) { + try { + outputView.printMissionInfo(missions); + String input = getMatchingInfo(); + validate.checkMissionInfo(input); + } catch (IllegalArgumentException e) { + System.out.println(e.getMessage()); + } + } + } + + private void checkMissionInfo(String input) { + String[] infoArr = input.split(", "); + checkInfoCount(infoArr); + checkCourse(infoArr[0]); + checkLevel(infoArr[1]); + checkMission(infoArr[1], infoArr[2]); + } + private void checkCourse(String course) { + checkEachInfo(course); + if (!Course.isExist(course)) { + throw new IllegalArgumentException(ERROR_COURSE_NOT_EXIST); + } + } + + private void checkLevel(String level) { + checkEachInfo(level); + if (!Level.isExist(level)) { + throw new IllegalArgumentException(ERROR_LEVEL_NOT_EXIST); + } + } + + private void checkMission(String level, String mission) { + checkEachInfo(mission); + if (missions.isExist(level, mission)) { + throw new IllegalArgumentException(ERROR_MISSION_NOT_EXIST); + } } } diff --git a/src/main/java/pairmatching/Course.java b/src/main/java/pairmatching/model/Course.java similarity index 61% rename from src/main/java/pairmatching/Course.java rename to src/main/java/pairmatching/model/Course.java index d9273344d..140c2f7d2 100644 --- a/src/main/java/pairmatching/Course.java +++ b/src/main/java/pairmatching/model/Course.java @@ -1,6 +1,5 @@ -package pairmatching; +package pairmatching.model; -import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.stream.Collectors; @@ -25,4 +24,13 @@ public static List getList() { .sequential() .collect(Collectors.toList()); } + public static boolean isExist(String name) { + List result = Arrays.stream(Course.values()) + .filter(course -> course.getName().equals(name)) + .collect(Collectors.toList()); + if (result.size() == 1) { + return true; + } + return false; + } } \ No newline at end of file diff --git a/src/main/java/pairmatching/model/Level.java b/src/main/java/pairmatching/model/Level.java new file mode 100644 index 000000000..abd5a3dd2 --- /dev/null +++ b/src/main/java/pairmatching/model/Level.java @@ -0,0 +1,45 @@ +package pairmatching.model; + +import java.util.Arrays; +import java.util.List; +import java.util.stream.Collectors; + +public enum Level { + LEVEL1("๋ ˆ๋ฒจ1"), + LEVEL2("๋ ˆ๋ฒจ2"), + LEVEL3("๋ ˆ๋ฒจ3"), + LEVEL4("๋ ˆ๋ฒจ4"), + LEVEL5("๋ ˆ๋ฒจ5"); + + private String name; + + Level(String name) { + this.name = name; + } + + // ์ถ”๊ฐ€ ๊ธฐ๋Šฅ ๊ตฌํ˜„ + public String getName() { + return name; + } + + public static List getList() { + return Arrays.stream(Level.values()) + .sequential() + .collect(Collectors.toList()); + } + public static Level getEnumLevel(String name) { + return Arrays.stream(Level.values()) + .filter(level -> level.getName().equals(name)) + .collect(Collectors.toList()).get(0); + } + + public static boolean isExist(String name) { + List result = Arrays.stream(Level.values()) + .filter(level -> level.getName().equals(name)) + .collect(Collectors.toList()); + if (result.size() == 1) { + return true; + } + return false; + } +} \ No newline at end of file diff --git a/src/main/java/pairmatching/Missions.java b/src/main/java/pairmatching/model/Missions.java similarity index 81% rename from src/main/java/pairmatching/Missions.java rename to src/main/java/pairmatching/model/Missions.java index 85823211e..f0435193a 100644 --- a/src/main/java/pairmatching/Missions.java +++ b/src/main/java/pairmatching/model/Missions.java @@ -1,4 +1,4 @@ -package pairmatching; +package pairmatching.model; import java.util.*; @@ -30,4 +30,11 @@ private void addInfo() { public List getValue(Level level) { return Collections.unmodifiableList(missionMap.get(level)); } + + public boolean isExist(String level, String mission) { + if (missionMap.get(Level.getEnumLevel(level)).contains(mission)) { + return true; + } + return false; + } } diff --git a/src/main/java/pairmatching/model/SelectMissionDto.java b/src/main/java/pairmatching/model/SelectMissionDto.java new file mode 100644 index 000000000..0e8fbadb3 --- /dev/null +++ b/src/main/java/pairmatching/model/SelectMissionDto.java @@ -0,0 +1,25 @@ +package pairmatching.model; + +public class SelectMissionDto { + Course course; + Level level; + String mission; + + public SelectMissionDto(Course course, Level level, String mission) { + this.course = course; + this.level = level; + this.mission = mission; + } + + public Course getCourse() { + return course; + } + + public Level getLevel() { + return level; + } + + public String getMission() { + return mission; + } +} diff --git a/src/main/java/pairmatching/utils/ExceptionMessage.java b/src/main/java/pairmatching/utils/ExceptionMessage.java new file mode 100644 index 000000000..07ff99991 --- /dev/null +++ b/src/main/java/pairmatching/utils/ExceptionMessage.java @@ -0,0 +1,12 @@ +package pairmatching.utils; + +public class ExceptionMessage { + public static final String ERROR_EMPTY_INPUT = "[ERROR] ๋น„์–ด์žˆ๋Š” ๊ฐ’์ด ์กด์žฌํ•ฉ๋‹ˆ๋‹ค."; + public static final String ERROR_LESS_INFO = "[ERROR] 3๊ฐœ์˜ ์ž…๋ ฅ ๊ฐ’์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค."; + public static final String ERROR_FRONT_BLANK = "[ERROR] ์ž…๋ ฅ๊ฐ’ ์•ž์— ๊ณต๋ฐฑ์ด ์กด์žฌํ•ฉ๋‹ˆ๋‹ค. " + + "๊ณต๋ฐฑ์€ ์ž…๋ ฅ๊ฐ’๋“ค ์‚ฌ์ด์— ๊ตฌ๋ถ„์„ ํ•  ๋•Œ ํ•˜๋‚˜๋งŒ ์‚ฌ์šฉํ•ด์ฃผ์„ธ์š”."; + public static final String ERROR_COURSE_NOT_EXIST = "[ERROR] ์ž…๋ ฅ๋œ ์ฝ”์Šค๋Š” ์กด์žฌํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค."; + public static final String ERROR_LEVEL_NOT_EXIST = "[ERROR] ์ž…๋ ฅ๋œ ๋ ˆ๋ฒจ์€ ์กด์žฌํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค."; + public static final String ERROR_MISSION_NOT_EXIST = "[ERROR] ์ž…๋ ฅ๋œ ๋ฏธ์…˜์€ ์กด์žฌํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค."; +} + diff --git a/src/main/java/pairmatching/utils/Validate.java b/src/main/java/pairmatching/utils/Validate.java index ce63dab6d..61fd63c34 100644 --- a/src/main/java/pairmatching/utils/Validate.java +++ b/src/main/java/pairmatching/utils/Validate.java @@ -3,10 +3,12 @@ import java.util.Arrays; import java.util.List; +import static pairmatching.utils.ExceptionMessage.*; + public class Validate { private final static String ERROR_MESSAGE = "[ERROR]"; - public static String CheckMissionInfo(String input) { + public static String checkMissionInfo(String input) { List candidateNumAndQ = Arrays.asList(new String[]{"1", "2", "3", "Q"}); if (!candidateNumAndQ.contains(input)) { throw new IllegalArgumentException(ERROR_MESSAGE + "๋ณด๊ธฐ์— ์žˆ๋Š” ๊ธฐ๋Šฅ ์„ ํƒ๋งŒ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค."); diff --git a/src/main/java/pairmatching/view/InputView.java b/src/main/java/pairmatching/view/InputView.java index 6574dbfee..c3756f807 100644 --- a/src/main/java/pairmatching/view/InputView.java +++ b/src/main/java/pairmatching/view/InputView.java @@ -11,8 +11,9 @@ public static String getMainSelect() { "Q. ์ข…๋ฃŒ"); return Console.readLine(); } - public String getSelectCourseAndMission() { - String selectCourAndMis = Console.readLine(); - return selectCourAndMis; + public static String getMatchingInfo() { + System.out.println("๊ณผ์ •, ๋ ˆ๋ฒจ, ๋ฏธ์…˜์„ ์„ ํƒํ•˜์„ธ์š”.\n" + + "ex) ๋ฐฑ์—”๋“œ, ๋ ˆ๋ฒจ1, ์ž๋™์ฐจ๊ฒฝ์ฃผ"); + return Console.readLine(); } } From 77b8c7b9a920ffce09656b3a2e693a61d5420cb2 Mon Sep 17 00:00:00 2001 From: junyong Date: Sun, 27 Nov 2022 16:23:48 +0900 Subject: [PATCH 18/43] =?UTF-8?q?refactor:=20=ED=95=A8=EC=88=98=EB=AA=85?= =?UTF-8?q?=20=EC=9D=B4=EB=A6=84=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/pairmatching/controller/MainController.java | 2 +- src/main/java/pairmatching/view/OutputView.java | 9 ++++----- 2 files changed, 5 insertions(+), 6 deletions(-) diff --git a/src/main/java/pairmatching/controller/MainController.java b/src/main/java/pairmatching/controller/MainController.java index e483b2888..a6cf285f9 100644 --- a/src/main/java/pairmatching/controller/MainController.java +++ b/src/main/java/pairmatching/controller/MainController.java @@ -11,7 +11,7 @@ public void run() { boolean flag = false; while (!flag) { try { - String input = validate.validateCheckNumber(inputView.getMainSelect()); + String input = validate.checkMissionInfo(inputView.getMainSelect()); readSelect(input); if (input.equals("Q")) { flag = true; diff --git a/src/main/java/pairmatching/view/OutputView.java b/src/main/java/pairmatching/view/OutputView.java index 3cfc66564..d7005df39 100644 --- a/src/main/java/pairmatching/view/OutputView.java +++ b/src/main/java/pairmatching/view/OutputView.java @@ -1,9 +1,8 @@ package pairmatching.view; -import camp.nextstep.edu.missionutils.Console; -import pairmatching.Course; -import pairmatching.Level; -import pairmatching.Missions; +import pairmatching.model.Course; +import pairmatching.model.Level; +import pairmatching.model.Missions; public class OutputView { public void printSelectFunction() { @@ -13,7 +12,7 @@ public void printSelectFunction() { "3. ํŽ˜์–ด ์ดˆ๊ธฐํ™”\n" + "Q. ์ข…๋ฃŒ"); } - public static void printCourseAndMission(Missions missions) { + public static void printMissionInfo(Missions missions) { System.out.println("\n#############################################"); System.out.print("๊ณผ์ •: "); System.out.println(String.join(" | ", Course.getList())); From d5e85b86f1e7f082d69ba9a2a8af357a3b8c2c57 Mon Sep 17 00:00:00 2001 From: junyong Date: Sun, 27 Nov 2022 16:27:57 +0900 Subject: [PATCH 19/43] =?UTF-8?q?fix=20:=20=EC=A1=B4=EC=9E=AC=ED=95=98?= =?UTF-8?q?=EC=A7=80=20=EC=95=8A=EB=8A=94=20=EB=AF=B8=EC=85=98=20=EC=9E=85?= =?UTF-8?q?=EB=A0=A5=EC=97=90=20=EB=8C=80=ED=95=9C=20=EC=98=88=EC=99=B8=20?= =?UTF-8?q?=EC=B2=98=EB=A6=AC=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 --- src/main/java/pairmatching/controller/MatchingController.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/main/java/pairmatching/controller/MatchingController.java b/src/main/java/pairmatching/controller/MatchingController.java index 5e2a37f67..232797ab7 100644 --- a/src/main/java/pairmatching/controller/MatchingController.java +++ b/src/main/java/pairmatching/controller/MatchingController.java @@ -22,6 +22,7 @@ public void run() { outputView.printMissionInfo(missions); String input = getMatchingInfo(); validate.checkMissionInfo(input); + flag = true; } catch (IllegalArgumentException e) { System.out.println(e.getMessage()); } @@ -51,7 +52,7 @@ private void checkLevel(String level) { private void checkMission(String level, String mission) { checkEachInfo(mission); - if (missions.isExist(level, mission)) { + if (!missions.isExist(level, mission)) { throw new IllegalArgumentException(ERROR_MISSION_NOT_EXIST); } } From 4d5043d532ae55d73fd09ea94de2aab5b8d97494 Mon Sep 17 00:00:00 2001 From: junyong Date: Sun, 27 Nov 2022 16:34:03 +0900 Subject: [PATCH 20/43] =?UTF-8?q?feat(Mission)=20:=20=EA=B0=9C=EC=9D=B8?= =?UTF-8?q?=EB=B3=84=20=EB=AF=B8=EC=85=98=EC=97=90=20enum=20=EC=B6=94?= =?UTF-8?q?=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/pairmatching/model/Mission.java | 36 +++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 src/main/java/pairmatching/model/Mission.java diff --git a/src/main/java/pairmatching/model/Mission.java b/src/main/java/pairmatching/model/Mission.java new file mode 100644 index 000000000..aab1c8553 --- /dev/null +++ b/src/main/java/pairmatching/model/Mission.java @@ -0,0 +1,36 @@ +package pairmatching.model; + +import java.util.Arrays; +import java.util.Optional; + +import static pairmatching.utils.ExceptionMessage.ERROR_MISSION_NOT_EXIST; + +public enum Mission { + CAT_RACE("์ž๋™์ฐจ๊ฒฝ์ฃผ"), + LOTTO("๋กœ๋˜"), + BASEBALL("์ˆซ์ž์•ผ๊ตฌ๊ฒŒ์ž„"), + PAY("๊ฒฐ์ œ"), + SUBWAY("์ง€ํ•˜์ฒ ๋…ธ์„ ๋„"), + IMPROVEMENT_PERFORMANCE("์„ฑ๋Šฅ๊ฐœ์„ "), + DEPLOYMENT("๋ฐฐํฌ"); + + private String name; + + Mission(String name) { + this.name = name; + } + + public String getName() { + return name; + } + + public static Mission getEnumMission(String name) { + Optional result = Arrays.stream(Mission.values()) + .filter(mission -> mission.getName().equals(name)).findFirst(); + + if (result.isPresent()) { + return result.get(); + } + throw new IllegalArgumentException(ERROR_MISSION_NOT_EXIST); + } +} From b4cb13959e66ae08317f386d3cb3336654598cfc Mon Sep 17 00:00:00 2001 From: junyong Date: Sun, 27 Nov 2022 16:39:26 +0900 Subject: [PATCH 21/43] =?UTF-8?q?refactor(Missions):=20=ED=83=80=EC=9E=85?= =?UTF-8?q?=20String=EC=97=90=EC=84=9C=20Mission=EC=9C=BC=EB=A1=9C=20?= =?UTF-8?q?=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/pairmatching/model/Missions.java | 26 +++++++++++-------- 1 file changed, 15 insertions(+), 11 deletions(-) diff --git a/src/main/java/pairmatching/model/Missions.java b/src/main/java/pairmatching/model/Missions.java index f0435193a..ae73028f4 100644 --- a/src/main/java/pairmatching/model/Missions.java +++ b/src/main/java/pairmatching/model/Missions.java @@ -1,9 +1,10 @@ package pairmatching.model; import java.util.*; +import java.util.stream.Collectors; public class Missions { - private static Map> missionMap; + private static Map> missionMap; public Missions() { missionMap = new TreeMap<>(); @@ -16,23 +17,26 @@ private void init() { addInfo(); } private void addInfo() { - missionMap.get(Level.LEVEL1).add("์ž๋™์ฐจ๊ฒฝ์ฃผ"); - missionMap.get(Level.LEVEL1).add("๋กœ๋˜"); - missionMap.get(Level.LEVEL1).add("์ˆซ์ž์•ผ๊ตฌ๊ฒŒ์ž„"); + missionMap.get(Level.LEVEL1).add(Mission.CAR_RACE); + missionMap.get(Level.LEVEL1).add(Mission.LOTTO); + missionMap.get(Level.LEVEL1).add(Mission.BASEBALL); - missionMap.get(Level.LEVEL2).add("์žฅ๋ฐ”๊ตฌ๋‹ˆ"); - missionMap.get(Level.LEVEL2).add("๊ฒฐ์ œ"); - missionMap.get(Level.LEVEL2).add("์ง€ํ•˜์ฒ ๋…ธ์„ ๋„"); + missionMap.get(Level.LEVEL2).add(Mission.BASKET); + missionMap.get(Level.LEVEL2).add(Mission.PAY); + missionMap.get(Level.LEVEL2).add(Mission.SUBWAY); - missionMap.get(Level.LEVEL4).add("์„ฑ๋Šฅ๊ฐœ์„ "); - missionMap.get(Level.LEVEL4).add("๋ฐฐํฌ"); + missionMap.get(Level.LEVEL4).add(Mission.IMPROVEMENT_PERFORMANCE); + missionMap.get(Level.LEVEL4).add(Mission.DEPLOYMENT); } public List getValue(Level level) { - return Collections.unmodifiableList(missionMap.get(level)); + return Collections.unmodifiableList(missionMap.get(level).stream() + .map(mission -> mission.getName()) + .collect(Collectors.toList())); } public boolean isExist(String level, String mission) { - if (missionMap.get(Level.getEnumLevel(level)).contains(mission)) { + if (missionMap.get(Level.getEnumLevel(level)) + .contains(Mission.getEnumMission(mission))) { return true; } return false; From 144e886bd12ece1795cc28065c993f01669e61c1 Mon Sep 17 00:00:00 2001 From: junyong Date: Sun, 27 Nov 2022 16:39:50 +0900 Subject: [PATCH 22/43] =?UTF-8?q?rafactor:=20enum=20=EB=B3=80=EC=88=98?= =?UTF-8?q?=EB=AA=85=20=EC=9D=B4=EB=A6=84=20=EC=A0=95=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/pairmatching/model/Mission.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/main/java/pairmatching/model/Mission.java b/src/main/java/pairmatching/model/Mission.java index aab1c8553..76d676fda 100644 --- a/src/main/java/pairmatching/model/Mission.java +++ b/src/main/java/pairmatching/model/Mission.java @@ -6,9 +6,10 @@ import static pairmatching.utils.ExceptionMessage.ERROR_MISSION_NOT_EXIST; public enum Mission { - CAT_RACE("์ž๋™์ฐจ๊ฒฝ์ฃผ"), + CAR_RACE("์ž๋™์ฐจ๊ฒฝ์ฃผ"), LOTTO("๋กœ๋˜"), BASEBALL("์ˆซ์ž์•ผ๊ตฌ๊ฒŒ์ž„"), + BASKET("์žฅ๋ฐ”๊ตฌ๋‹ˆ"), PAY("๊ฒฐ์ œ"), SUBWAY("์ง€ํ•˜์ฒ ๋…ธ์„ ๋„"), IMPROVEMENT_PERFORMANCE("์„ฑ๋Šฅ๊ฐœ์„ "), From 8160183ce73a51f41d978826f4fb1c303435a656 Mon Sep 17 00:00:00 2001 From: junyong Date: Sun, 27 Nov 2022 16:49:50 +0900 Subject: [PATCH 23/43] =?UTF-8?q?refactor:=20=EB=A7=A4=EC=B9=AD=20?= =?UTF-8?q?=EA=B8=B0=EB=8A=A5=20=EC=9E=85=EB=A0=A5=EC=97=90=20=EB=8C=80?= =?UTF-8?q?=ED=95=9C=20=EB=B9=84=EC=A6=88=EB=8B=88=EC=8A=A4=20=EB=A1=9C?= =?UTF-8?q?=EC=A7=81=20Service=20=ED=81=B4=EB=9E=98=EC=8A=A4=20=EC=B6=94?= =?UTF-8?q?=EA=B0=80=20=EB=B0=8F=20=EC=9D=B4=EB=8F=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/MatchingController.java | 47 +++---------------- .../{model => domain}/Course.java | 2 +- .../pairmatching/{model => domain}/Level.java | 2 +- .../{model => domain}/Mission.java | 2 +- .../{model => domain}/Missions.java | 2 +- .../{model => domain}/SelectMissionDto.java | 2 +- .../pairmatching/service/MatchingService.java | 42 +++++++++++++++++ .../java/pairmatching/view/OutputView.java | 6 +-- 8 files changed, 57 insertions(+), 48 deletions(-) rename src/main/java/pairmatching/{model => domain}/Course.java (96%) rename src/main/java/pairmatching/{model => domain}/Level.java (97%) rename src/main/java/pairmatching/{model => domain}/Mission.java (96%) rename src/main/java/pairmatching/{model => domain}/Missions.java (97%) rename src/main/java/pairmatching/{model => domain}/SelectMissionDto.java (93%) create mode 100644 src/main/java/pairmatching/service/MatchingService.java diff --git a/src/main/java/pairmatching/controller/MatchingController.java b/src/main/java/pairmatching/controller/MatchingController.java index 232797ab7..885f531c8 100644 --- a/src/main/java/pairmatching/controller/MatchingController.java +++ b/src/main/java/pairmatching/controller/MatchingController.java @@ -1,59 +1,26 @@ package pairmatching.controller; -import pairmatching.model.Course; -import pairmatching.model.Level; -import pairmatching.model.Missions; -import pairmatching.utils.Validate; -import pairmatching.view.OutputView; +import pairmatching.domain.Missions; +import pairmatching.service.MatchingService; + -import static pairmatching.utils.ExceptionMessage.*; -import static pairmatching.utils.Validate.checkEachInfo; -import static pairmatching.utils.Validate.checkInfoCount; import static pairmatching.view.InputView.getMatchingInfo; +import static pairmatching.view.OutputView.printMissionInfo; public class MatchingController { - public static final OutputView outputView = new OutputView(); public static final Missions missions = new Missions(); - public static final Validate validate = new Validate(); + public static final MatchingService matchingService = new MatchingService(); public void run() { boolean flag = false; while(!flag) { try { - outputView.printMissionInfo(missions); + printMissionInfo(missions); String input = getMatchingInfo(); - validate.checkMissionInfo(input); + matchingService.checkMissionInfo(input, missions); flag = true; } catch (IllegalArgumentException e) { System.out.println(e.getMessage()); } } } - - private void checkMissionInfo(String input) { - String[] infoArr = input.split(", "); - checkInfoCount(infoArr); - checkCourse(infoArr[0]); - checkLevel(infoArr[1]); - checkMission(infoArr[1], infoArr[2]); - } - private void checkCourse(String course) { - checkEachInfo(course); - if (!Course.isExist(course)) { - throw new IllegalArgumentException(ERROR_COURSE_NOT_EXIST); - } - } - - private void checkLevel(String level) { - checkEachInfo(level); - if (!Level.isExist(level)) { - throw new IllegalArgumentException(ERROR_LEVEL_NOT_EXIST); - } - } - - private void checkMission(String level, String mission) { - checkEachInfo(mission); - if (!missions.isExist(level, mission)) { - throw new IllegalArgumentException(ERROR_MISSION_NOT_EXIST); - } - } } diff --git a/src/main/java/pairmatching/model/Course.java b/src/main/java/pairmatching/domain/Course.java similarity index 96% rename from src/main/java/pairmatching/model/Course.java rename to src/main/java/pairmatching/domain/Course.java index 140c2f7d2..070255577 100644 --- a/src/main/java/pairmatching/model/Course.java +++ b/src/main/java/pairmatching/domain/Course.java @@ -1,4 +1,4 @@ -package pairmatching.model; +package pairmatching.domain; import java.util.Arrays; import java.util.List; diff --git a/src/main/java/pairmatching/model/Level.java b/src/main/java/pairmatching/domain/Level.java similarity index 97% rename from src/main/java/pairmatching/model/Level.java rename to src/main/java/pairmatching/domain/Level.java index abd5a3dd2..985a80bed 100644 --- a/src/main/java/pairmatching/model/Level.java +++ b/src/main/java/pairmatching/domain/Level.java @@ -1,4 +1,4 @@ -package pairmatching.model; +package pairmatching.domain; import java.util.Arrays; import java.util.List; diff --git a/src/main/java/pairmatching/model/Mission.java b/src/main/java/pairmatching/domain/Mission.java similarity index 96% rename from src/main/java/pairmatching/model/Mission.java rename to src/main/java/pairmatching/domain/Mission.java index 76d676fda..dbd35c476 100644 --- a/src/main/java/pairmatching/model/Mission.java +++ b/src/main/java/pairmatching/domain/Mission.java @@ -1,4 +1,4 @@ -package pairmatching.model; +package pairmatching.domain; import java.util.Arrays; import java.util.Optional; diff --git a/src/main/java/pairmatching/model/Missions.java b/src/main/java/pairmatching/domain/Missions.java similarity index 97% rename from src/main/java/pairmatching/model/Missions.java rename to src/main/java/pairmatching/domain/Missions.java index ae73028f4..dd3d086d5 100644 --- a/src/main/java/pairmatching/model/Missions.java +++ b/src/main/java/pairmatching/domain/Missions.java @@ -1,4 +1,4 @@ -package pairmatching.model; +package pairmatching.domain; import java.util.*; import java.util.stream.Collectors; diff --git a/src/main/java/pairmatching/model/SelectMissionDto.java b/src/main/java/pairmatching/domain/SelectMissionDto.java similarity index 93% rename from src/main/java/pairmatching/model/SelectMissionDto.java rename to src/main/java/pairmatching/domain/SelectMissionDto.java index 0e8fbadb3..b434e0a02 100644 --- a/src/main/java/pairmatching/model/SelectMissionDto.java +++ b/src/main/java/pairmatching/domain/SelectMissionDto.java @@ -1,4 +1,4 @@ -package pairmatching.model; +package pairmatching.domain; public class SelectMissionDto { Course course; diff --git a/src/main/java/pairmatching/service/MatchingService.java b/src/main/java/pairmatching/service/MatchingService.java new file mode 100644 index 000000000..9068aa033 --- /dev/null +++ b/src/main/java/pairmatching/service/MatchingService.java @@ -0,0 +1,42 @@ +package pairmatching.service; + +import pairmatching.domain.Course; +import pairmatching.domain.Level; +import pairmatching.domain.Missions; + +import static pairmatching.utils.ExceptionMessage.*; +import static pairmatching.utils.Validate.checkEachInfo; +import static pairmatching.utils.Validate.checkInfoCount; + +public class MatchingService { + + + public void checkMissionInfo(String input, Missions missions) { + String[] infoArr = input.split(", "); + checkInfoCount(infoArr); + checkCourse(infoArr[0]); + checkLevel(infoArr[1]); + checkMission(infoArr[1], infoArr[2], missions); + } + + private void checkCourse(String course) { + checkEachInfo(course); + if (!Course.isExist(course)) { + throw new IllegalArgumentException(ERROR_COURSE_NOT_EXIST); + } + } + + private void checkLevel(String level) { + checkEachInfo(level); + if (!Level.isExist(level)) { + throw new IllegalArgumentException(ERROR_LEVEL_NOT_EXIST); + } + } + + private void checkMission(String level, String mission, Missions missions) { + checkEachInfo(mission); + if (!missions.isExist(level, mission)) { + throw new IllegalArgumentException(ERROR_MISSION_NOT_EXIST); + } + } +} \ No newline at end of file diff --git a/src/main/java/pairmatching/view/OutputView.java b/src/main/java/pairmatching/view/OutputView.java index d7005df39..190bae0e6 100644 --- a/src/main/java/pairmatching/view/OutputView.java +++ b/src/main/java/pairmatching/view/OutputView.java @@ -1,8 +1,8 @@ package pairmatching.view; -import pairmatching.model.Course; -import pairmatching.model.Level; -import pairmatching.model.Missions; +import pairmatching.domain.Course; +import pairmatching.domain.Level; +import pairmatching.domain.Missions; public class OutputView { public void printSelectFunction() { From 41edff03451b2ff8a7e6bf8c4193b3ac42cfa36b Mon Sep 17 00:00:00 2001 From: junyong Date: Sun, 27 Nov 2022 16:52:20 +0900 Subject: [PATCH 24/43] =?UTF-8?q?feat(Crew):=20=ED=81=AC=EB=A3=A8=20?= =?UTF-8?q?=EC=A0=95=EB=B3=B4=EB=A5=BC=20=EB=B0=9B=EC=95=84=EC=98=A4?= =?UTF-8?q?=EB=8A=94=20=ED=81=B4=EB=9E=98=EC=8A=A4=20=EC=83=9D=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/pairmatching/domain/Crew.java | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 src/main/java/pairmatching/domain/Crew.java diff --git a/src/main/java/pairmatching/domain/Crew.java b/src/main/java/pairmatching/domain/Crew.java new file mode 100644 index 000000000..7ad5c81cf --- /dev/null +++ b/src/main/java/pairmatching/domain/Crew.java @@ -0,0 +1,11 @@ +package pairmatching.domain; + +public class Crew { + private Course course; + private String name; + + public Crew(Course course, String name) { + this.course = course; + this.name = name; + } +} \ No newline at end of file From 840509f56c242460399315ba74eb9ac810fd77fc Mon Sep 17 00:00:00 2001 From: junyong Date: Sun, 27 Nov 2022 17:00:26 +0900 Subject: [PATCH 25/43] =?UTF-8?q?feat:=20=EB=B0=B1=EC=97=94=EB=93=9C,?= =?UTF-8?q?=ED=94=84=EB=A1=A0=ED=8A=B8=20=ED=81=AC=EB=A3=A8=20=EC=A0=95?= =?UTF-8?q?=EB=B3=B4=20=EC=9D=BD=EC=96=B4=EC=84=9C=20=EC=A0=80=EC=9E=A5?= =?UTF-8?q?=ED=95=98=EB=8A=94=20=EA=B8=B0=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 --- .../repository/CrewRepository.java | 56 +++++++++++++++++++ .../pairmatching/utils/ExceptionMessage.java | 2 + 2 files changed, 58 insertions(+) create mode 100644 src/main/java/pairmatching/repository/CrewRepository.java diff --git a/src/main/java/pairmatching/repository/CrewRepository.java b/src/main/java/pairmatching/repository/CrewRepository.java new file mode 100644 index 000000000..d2a3b9d36 --- /dev/null +++ b/src/main/java/pairmatching/repository/CrewRepository.java @@ -0,0 +1,56 @@ +package pairmatching.repository; + +import pairmatching.domain.Course; +import pairmatching.domain.Crew; + +import java.io.BufferedReader; +import java.io.FileReader; +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +import static pairmatching.utils.ExceptionMessage.ERROR_FILE_READ; + +public class CrewRepository { + private static final CrewRepository instance = new CrewRepository(); + private static final List crews = new ArrayList<>(); + + + private CrewRepository() { + + } + public static CrewRepository getInstance() { + return instance; + } + + public void init() { + try { + readBackendCrew(); + readFrontendCrew(); + } catch (IOException e) { + throw new IllegalArgumentException(ERROR_FILE_READ); + } + } + + private void readBackendCrew() throws IOException { + BufferedReader reader = new BufferedReader( + new FileReader("src/main/resources/backend-crew.md") + ); + String str; + while((str = reader.readLine()) != null) { + crews.add(new Crew(Course.BACKEND, str)); + } + reader.close(); + } + + private void readFrontendCrew() throws IOException { + BufferedReader reader = new BufferedReader( + new FileReader("src/main/resources/frontend-crew.md") + ); + String str; + while((str = reader.readLine()) != null) { + crews.add(new Crew(Course.FRONTEND, str)); + } + reader.close(); + } +} diff --git a/src/main/java/pairmatching/utils/ExceptionMessage.java b/src/main/java/pairmatching/utils/ExceptionMessage.java index 07ff99991..5a61e7d56 100644 --- a/src/main/java/pairmatching/utils/ExceptionMessage.java +++ b/src/main/java/pairmatching/utils/ExceptionMessage.java @@ -8,5 +8,7 @@ public class ExceptionMessage { public static final String ERROR_COURSE_NOT_EXIST = "[ERROR] ์ž…๋ ฅ๋œ ์ฝ”์Šค๋Š” ์กด์žฌํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค."; public static final String ERROR_LEVEL_NOT_EXIST = "[ERROR] ์ž…๋ ฅ๋œ ๋ ˆ๋ฒจ์€ ์กด์žฌํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค."; public static final String ERROR_MISSION_NOT_EXIST = "[ERROR] ์ž…๋ ฅ๋œ ๋ฏธ์…˜์€ ์กด์žฌํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค."; + + public static final String ERROR_FILE_READ = "[ERROR] ํŒŒ์ผ์„ ์ฝ๊ธฐ์—์„œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค. "; } From 62484b4ee8edc41abf789a5f95e6680253d67a0c Mon Sep 17 00:00:00 2001 From: junyong Date: Sun, 27 Nov 2022 17:16:57 +0900 Subject: [PATCH 26/43] =?UTF-8?q?feat:=20=ED=8E=98=EC=96=B4=EB=A5=BC=20?= =?UTF-8?q?=EB=A7=A4=EC=B9=AD=ED=95=98=EB=8A=94=20=EA=B8=B0=EB=8A=A5=20?= =?UTF-8?q?=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/pairmatching/domain/Course.java | 6 +++ .../java/pairmatching/domain/MatchInfo.java | 17 +++++++ .../repository/CrewRepository.java | 16 +++++-- .../repository/MatchInfoRepository.java | 27 +++++++++++ .../pairmatching/service/MatchingService.java | 48 ++++++++++++++----- 5 files changed, 99 insertions(+), 15 deletions(-) create mode 100644 src/main/java/pairmatching/domain/MatchInfo.java create mode 100644 src/main/java/pairmatching/repository/MatchInfoRepository.java diff --git a/src/main/java/pairmatching/domain/Course.java b/src/main/java/pairmatching/domain/Course.java index 070255577..946b962b7 100644 --- a/src/main/java/pairmatching/domain/Course.java +++ b/src/main/java/pairmatching/domain/Course.java @@ -33,4 +33,10 @@ public static boolean isExist(String name) { } return false; } + + public static Course getEnumCourse(String name) { + return Arrays.stream(Course.values()) + .filter((course -> course.getName().equals(name))) + .collect(Collectors.toList()).get(0); + } } \ No newline at end of file diff --git a/src/main/java/pairmatching/domain/MatchInfo.java b/src/main/java/pairmatching/domain/MatchInfo.java new file mode 100644 index 000000000..7fa60751b --- /dev/null +++ b/src/main/java/pairmatching/domain/MatchInfo.java @@ -0,0 +1,17 @@ +package pairmatching.domain; + +import java.util.List; + +public class MatchInfo { + private Course course; + private Level level; + private Mission mission; + private List> pair; + + public MatchInfo(Course course, Level level, Mission mission, List> pair) { + this.course = course; + this.level = level; + this.mission = mission; + this.pair = pair; + } +} diff --git a/src/main/java/pairmatching/repository/CrewRepository.java b/src/main/java/pairmatching/repository/CrewRepository.java index d2a3b9d36..12a8e464f 100644 --- a/src/main/java/pairmatching/repository/CrewRepository.java +++ b/src/main/java/pairmatching/repository/CrewRepository.java @@ -7,13 +7,15 @@ import java.io.FileReader; import java.io.IOException; import java.util.ArrayList; +import java.util.HashMap; import java.util.List; +import java.util.Map; import static pairmatching.utils.ExceptionMessage.ERROR_FILE_READ; public class CrewRepository { private static final CrewRepository instance = new CrewRepository(); - private static final List crews = new ArrayList<>(); + private static final Map> crews = new HashMap<>(); private CrewRepository() { @@ -33,24 +35,32 @@ public void init() { } private void readBackendCrew() throws IOException { + List crewList = new ArrayList<>(); BufferedReader reader = new BufferedReader( new FileReader("src/main/resources/backend-crew.md") ); String str; while((str = reader.readLine()) != null) { - crews.add(new Crew(Course.BACKEND, str)); + crewList.add(new Crew(Course.BACKEND, str)); } reader.close(); + crews.put(Course.BACKEND, crewList); } private void readFrontendCrew() throws IOException { + List crewList = new ArrayList<>(); BufferedReader reader = new BufferedReader( new FileReader("src/main/resources/frontend-crew.md") ); String str; while((str = reader.readLine()) != null) { - crews.add(new Crew(Course.FRONTEND, str)); + crewList.add(new Crew(Course.FRONTEND, str)); } reader.close(); + crews.put(Course.FRONTEND, crewList); + } + + public List getCrew(Course course) { + return crews.get(course); } } diff --git a/src/main/java/pairmatching/repository/MatchInfoRepository.java b/src/main/java/pairmatching/repository/MatchInfoRepository.java new file mode 100644 index 000000000..3faf1cd0c --- /dev/null +++ b/src/main/java/pairmatching/repository/MatchInfoRepository.java @@ -0,0 +1,27 @@ +package pairmatching.repository; + +import pairmatching.domain.Course; +import pairmatching.domain.Level; +import pairmatching.domain.MatchInfo; +import pairmatching.domain.Mission; + +import java.util.ArrayList; +import java.util.List; +import java.util.stream.Collectors; + +public class MatchInfoRepository { + private static final MatchInfoRepository instance = new MatchInfoRepository(); + private static List matchInfoList = new ArrayList<>(); + + private MatchInfoRepository() { + } + + public static MatchInfoRepository getInstance() { + return instance; + } + + public MatchInfo addMatchInfo(MatchInfo matchInfo) { + matchInfoList.add(matchInfo); + return matchInfo; + } +} diff --git a/src/main/java/pairmatching/service/MatchingService.java b/src/main/java/pairmatching/service/MatchingService.java index 9068aa033..c1da68958 100644 --- a/src/main/java/pairmatching/service/MatchingService.java +++ b/src/main/java/pairmatching/service/MatchingService.java @@ -1,42 +1,66 @@ package pairmatching.service; -import pairmatching.domain.Course; -import pairmatching.domain.Level; -import pairmatching.domain.Missions; +import camp.nextstep.edu.missionutils.Randoms; +import pairmatching.domain.*; +import pairmatching.repository.CrewRepository; +import pairmatching.repository.MatchInfoRepository; + +import java.util.ArrayList; +import java.util.List; import static pairmatching.utils.ExceptionMessage.*; import static pairmatching.utils.Validate.checkEachInfo; -import static pairmatching.utils.Validate.checkInfoCount; public class MatchingService { - + private static final MatchInfoRepository matchInfoRepository = MatchInfoRepository.getInstance(); + private static final CrewRepository crewRepository = CrewRepository.getInstance(); public void checkMissionInfo(String input, Missions missions) { String[] infoArr = input.split(", "); - checkInfoCount(infoArr); - checkCourse(infoArr[0]); - checkLevel(infoArr[1]); - checkMission(infoArr[1], infoArr[2], missions); + Course course = checkCourse(infoArr[0]); + Level level = checkLevel(infoArr[1]); + Mission mission = checkMission(infoArr[1], infoArr[2], missions); + matchPair(course, level, mission); } - private void checkCourse(String course) { + private Course checkCourse(String course) { checkEachInfo(course); if (!Course.isExist(course)) { throw new IllegalArgumentException(ERROR_COURSE_NOT_EXIST); } + return Course.getEnumCourse(course); } - private void checkLevel(String level) { + private Level checkLevel(String level) { checkEachInfo(level); if (!Level.isExist(level)) { throw new IllegalArgumentException(ERROR_LEVEL_NOT_EXIST); } + return Level.getEnumLevel(level); } - private void checkMission(String level, String mission, Missions missions) { + private Mission checkMission(String level, String mission, Missions missions) { checkEachInfo(mission); if (!missions.isExist(level, mission)) { throw new IllegalArgumentException(ERROR_MISSION_NOT_EXIST); } + return Mission.getEnumMission(mission); + } + + public void matchPair(Course course, Level level, Mission mission) { + List> pair = new ArrayList<>(); + List crews = Randoms.shuffle(crewRepository.getCrew(course)); + int index = 0; + while (crews.size() != index) { + List onePair = new ArrayList<>(); + onePair.add(crews.get(index++)); + onePair.add(crews.get(index++)); + if (index == crews.size()-1) { + onePair.add(crews.get(index++)); + } + pair.add(onePair); + } + matchInfoRepository.addMatchInfo(new MatchInfo(course, level, mission, pair)); } + } \ No newline at end of file From 96b2d65e536ad067dce1cc949cce322e2e47323a Mon Sep 17 00:00:00 2001 From: junyong Date: Sun, 27 Nov 2022 17:27:26 +0900 Subject: [PATCH 27/43] =?UTF-8?q?feat:=20=ED=8E=98=EC=96=B4=20=EB=A7=A4?= =?UTF-8?q?=EC=B9=AD=20=EA=B2=B0=EA=B3=BC=20=EC=B6=9C=EB=A0=A5=ED=95=98?= =?UTF-8?q?=EB=8A=94=20=EA=B8=B0=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 --- src/main/java/pairmatching/Application.java | 5 ++-- .../controller/MatchingController.java | 5 +++- src/main/java/pairmatching/domain/Crew.java | 5 ++++ .../java/pairmatching/domain/MatchInfo.java | 3 +++ .../repository/CrewRepository.java | 9 ++++---- .../pairmatching/service/MatchingService.java | 9 ++++---- .../java/pairmatching/view/OutputView.java | 23 +++++++++++-------- 7 files changed, 38 insertions(+), 21 deletions(-) diff --git a/src/main/java/pairmatching/Application.java b/src/main/java/pairmatching/Application.java index f81e14eda..73fa9ad67 100644 --- a/src/main/java/pairmatching/Application.java +++ b/src/main/java/pairmatching/Application.java @@ -4,12 +4,13 @@ import pairmatching.view.InputView; import pairmatching.view.OutputView; +import static pairmatching.repository.CrewRepository.initCrewInfo; + public class Application { - private static final InputView inputview = new InputView(); - private static final OutputView outputview = new OutputView(); private static final MainController mainController = new MainController(); public static void main(String[] args) { // TODO ๊ตฌํ˜„ ์ง„ํ–‰ + initCrewInfo(); mainController.run(); } } diff --git a/src/main/java/pairmatching/controller/MatchingController.java b/src/main/java/pairmatching/controller/MatchingController.java index 885f531c8..8f9bf40fc 100644 --- a/src/main/java/pairmatching/controller/MatchingController.java +++ b/src/main/java/pairmatching/controller/MatchingController.java @@ -1,10 +1,12 @@ package pairmatching.controller; +import pairmatching.domain.MatchInfo; import pairmatching.domain.Missions; import pairmatching.service.MatchingService; import static pairmatching.view.InputView.getMatchingInfo; +import static pairmatching.view.OutputView.printMatchPair; import static pairmatching.view.OutputView.printMissionInfo; public class MatchingController { @@ -16,7 +18,8 @@ public void run() { try { printMissionInfo(missions); String input = getMatchingInfo(); - matchingService.checkMissionInfo(input, missions); + MatchInfo matchInfo = matchingService.matchPair(input, missions); + printMatchPair(matchInfo); flag = true; } catch (IllegalArgumentException e) { System.out.println(e.getMessage()); diff --git a/src/main/java/pairmatching/domain/Crew.java b/src/main/java/pairmatching/domain/Crew.java index 7ad5c81cf..379a0b4d1 100644 --- a/src/main/java/pairmatching/domain/Crew.java +++ b/src/main/java/pairmatching/domain/Crew.java @@ -8,4 +8,9 @@ public Crew(Course course, String name) { this.course = course; this.name = name; } + + @Override + public String toString() { + return name; + } } \ No newline at end of file diff --git a/src/main/java/pairmatching/domain/MatchInfo.java b/src/main/java/pairmatching/domain/MatchInfo.java index 7fa60751b..90aa54150 100644 --- a/src/main/java/pairmatching/domain/MatchInfo.java +++ b/src/main/java/pairmatching/domain/MatchInfo.java @@ -14,4 +14,7 @@ public MatchInfo(Course course, Level level, Mission mission, List> p this.mission = mission; this.pair = pair; } + public List> getPairInfo() { + return pair; + } } diff --git a/src/main/java/pairmatching/repository/CrewRepository.java b/src/main/java/pairmatching/repository/CrewRepository.java index 12a8e464f..bfbdde13d 100644 --- a/src/main/java/pairmatching/repository/CrewRepository.java +++ b/src/main/java/pairmatching/repository/CrewRepository.java @@ -10,6 +10,7 @@ import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.stream.Collectors; import static pairmatching.utils.ExceptionMessage.ERROR_FILE_READ; @@ -25,7 +26,7 @@ public static CrewRepository getInstance() { return instance; } - public void init() { + public static void initCrewInfo() { try { readBackendCrew(); readFrontendCrew(); @@ -34,7 +35,7 @@ public void init() { } } - private void readBackendCrew() throws IOException { + private static void readBackendCrew() throws IOException { List crewList = new ArrayList<>(); BufferedReader reader = new BufferedReader( new FileReader("src/main/resources/backend-crew.md") @@ -47,7 +48,7 @@ private void readBackendCrew() throws IOException { crews.put(Course.BACKEND, crewList); } - private void readFrontendCrew() throws IOException { + private static void readFrontendCrew() throws IOException { List crewList = new ArrayList<>(); BufferedReader reader = new BufferedReader( new FileReader("src/main/resources/frontend-crew.md") @@ -61,6 +62,6 @@ private void readFrontendCrew() throws IOException { } public List getCrew(Course course) { - return crews.get(course); + return crews.get(course).stream().collect(Collectors.toList()); } } diff --git a/src/main/java/pairmatching/service/MatchingService.java b/src/main/java/pairmatching/service/MatchingService.java index c1da68958..d1d707cf0 100644 --- a/src/main/java/pairmatching/service/MatchingService.java +++ b/src/main/java/pairmatching/service/MatchingService.java @@ -15,12 +15,13 @@ public class MatchingService { private static final MatchInfoRepository matchInfoRepository = MatchInfoRepository.getInstance(); private static final CrewRepository crewRepository = CrewRepository.getInstance(); - public void checkMissionInfo(String input, Missions missions) { + public MatchInfo matchPair(String input, Missions missions) { String[] infoArr = input.split(", "); Course course = checkCourse(infoArr[0]); Level level = checkLevel(infoArr[1]); Mission mission = checkMission(infoArr[1], infoArr[2], missions); - matchPair(course, level, mission); + + return matchAndSavePair(course, level, mission); } private Course checkCourse(String course) { @@ -47,7 +48,7 @@ private Mission checkMission(String level, String mission, Missions missions) { return Mission.getEnumMission(mission); } - public void matchPair(Course course, Level level, Mission mission) { + public MatchInfo matchAndSavePair(Course course, Level level, Mission mission) { List> pair = new ArrayList<>(); List crews = Randoms.shuffle(crewRepository.getCrew(course)); int index = 0; @@ -60,7 +61,7 @@ public void matchPair(Course course, Level level, Mission mission) { } pair.add(onePair); } - matchInfoRepository.addMatchInfo(new MatchInfo(course, level, mission, pair)); + return matchInfoRepository.addMatchInfo(new MatchInfo(course, level, mission, pair)); } } \ No newline at end of file diff --git a/src/main/java/pairmatching/view/OutputView.java b/src/main/java/pairmatching/view/OutputView.java index 190bae0e6..0be00f665 100644 --- a/src/main/java/pairmatching/view/OutputView.java +++ b/src/main/java/pairmatching/view/OutputView.java @@ -1,17 +1,10 @@ package pairmatching.view; -import pairmatching.domain.Course; -import pairmatching.domain.Level; -import pairmatching.domain.Missions; +import pairmatching.domain.*; + +import java.util.List; public class OutputView { - public void printSelectFunction() { - System.out.println("๊ธฐ๋Šฅ์„ ์„ ํƒํ•˜์„ธ์š”. \n" + - "1. ํŽ˜์–ด ๋งค์นญ\n" + - "2. ํŽ˜์–ด ์กฐํšŒ\n" + - "3. ํŽ˜์–ด ์ดˆ๊ธฐํ™”\n" + - "Q. ์ข…๋ฃŒ"); - } public static void printMissionInfo(Missions missions) { System.out.println("\n#############################################"); System.out.print("๊ณผ์ •: "); @@ -25,4 +18,14 @@ public static void printMissionInfo(Missions missions) { System.out.println("๊ณผ์ •, ๋ ˆ๋ฒจ, ๋ฏธ์…˜์„ ์„ ํƒํ•ด์ฃผ์„ธ์š”."); System.out.println("ex) ๋ฐฑ์—”๋“œ, ๋ ˆ๋ฒจ1, ์ž๋™์ฐจ๊ฒฝ์ฃผ"); } + + public static void printMatchPair(MatchInfo matchInfo) { + System.out.println("\nํŽ˜์–ด ๋งค์นญ ๊ฒฐ๊ณผ์ž…๋‹ˆ๋‹ค. "); + for(List pair : matchInfo.getPairInfo()) { + for(int i = 0; i < pair.size()-1; i++) { + System.out.println(pair.get(i) + " : "); + } + System.out.println(pair.get(pair.size()-1)); + } + } } From 14ba6333e931964ae74b2ecb96a3d3b61b969096 Mon Sep 17 00:00:00 2001 From: junyong Date: Sun, 27 Nov 2022 17:31:17 +0900 Subject: [PATCH 28/43] =?UTF-8?q?fix=20:=20=EB=A7=A4=EC=B9=AD=20=EA=B2=B0?= =?UTF-8?q?=EA=B3=BC=20=EC=B6=9C=EB=A0=A5=ED=95=98=EB=8A=94=20=EB=82=B4?= =?UTF-8?q?=EC=9A=A9=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/pairmatching/view/OutputView.java | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/src/main/java/pairmatching/view/OutputView.java b/src/main/java/pairmatching/view/OutputView.java index 0be00f665..687114a92 100644 --- a/src/main/java/pairmatching/view/OutputView.java +++ b/src/main/java/pairmatching/view/OutputView.java @@ -15,17 +15,15 @@ public static void printMissionInfo(Missions missions) { System.out.println(String.join(" | ", missions.getValue(level))); } System.out.println("#############################################"); - System.out.println("๊ณผ์ •, ๋ ˆ๋ฒจ, ๋ฏธ์…˜์„ ์„ ํƒํ•ด์ฃผ์„ธ์š”."); - System.out.println("ex) ๋ฐฑ์—”๋“œ, ๋ ˆ๋ฒจ1, ์ž๋™์ฐจ๊ฒฝ์ฃผ"); } public static void printMatchPair(MatchInfo matchInfo) { - System.out.println("\nํŽ˜์–ด ๋งค์นญ ๊ฒฐ๊ณผ์ž…๋‹ˆ๋‹ค. "); - for(List pair : matchInfo.getPairInfo()) { - for(int i = 0; i < pair.size()-1; i++) { - System.out.println(pair.get(i) + " : "); + System.out.println("\nํŽ˜์–ด ๋งค์นญ ๊ฒฐ๊ณผ์ž…๋‹ˆ๋‹ค."); + for (List pair : matchInfo.getPairInfo()) { + for (int i = 0; i < pair.size() - 1; i++) { + System.out.print(pair.get(i) + " : "); } - System.out.println(pair.get(pair.size()-1)); + System.out.println(pair.get(pair.size() - 1)); } } } From e9f1fb0d4364922a18d1765488053dd7bba51540 Mon Sep 17 00:00:00 2001 From: junyong Date: Sun, 27 Nov 2022 17:33:23 +0900 Subject: [PATCH 29/43] =?UTF-8?q?style=20:=20=EB=AA=A8=EB=93=A0=20?= =?UTF-8?q?=ED=81=B4=EB=9E=98=EC=8A=A4=20=EC=A0=95=EB=A0=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/pairmatching/controller/MainController.java | 2 ++ .../java/pairmatching/controller/MatchingController.java | 3 ++- src/main/java/pairmatching/domain/Course.java | 4 +++- src/main/java/pairmatching/domain/Level.java | 3 ++- src/main/java/pairmatching/domain/MatchInfo.java | 1 + src/main/java/pairmatching/domain/Missions.java | 3 +++ src/main/java/pairmatching/repository/CrewRepository.java | 5 +++-- src/main/java/pairmatching/service/MatchingService.java | 3 ++- src/main/java/pairmatching/view/InputView.java | 1 + 9 files changed, 19 insertions(+), 6 deletions(-) diff --git a/src/main/java/pairmatching/controller/MainController.java b/src/main/java/pairmatching/controller/MainController.java index a6cf285f9..23022427c 100644 --- a/src/main/java/pairmatching/controller/MainController.java +++ b/src/main/java/pairmatching/controller/MainController.java @@ -7,6 +7,7 @@ public class MainController { public static final Validate validate = new Validate(); public static final MatchingController matchingController = new MatchingController(); public static final InputView inputView = new InputView(); + public void run() { boolean flag = false; while (!flag) { @@ -21,6 +22,7 @@ public void run() { } } } + private void readSelect(String input) { if (input.equals("1")) { matchingController.run(); diff --git a/src/main/java/pairmatching/controller/MatchingController.java b/src/main/java/pairmatching/controller/MatchingController.java index 8f9bf40fc..af8174c21 100644 --- a/src/main/java/pairmatching/controller/MatchingController.java +++ b/src/main/java/pairmatching/controller/MatchingController.java @@ -12,9 +12,10 @@ public class MatchingController { public static final Missions missions = new Missions(); public static final MatchingService matchingService = new MatchingService(); + public void run() { boolean flag = false; - while(!flag) { + while (!flag) { try { printMissionInfo(missions); String input = getMatchingInfo(); diff --git a/src/main/java/pairmatching/domain/Course.java b/src/main/java/pairmatching/domain/Course.java index 946b962b7..74685c0c6 100644 --- a/src/main/java/pairmatching/domain/Course.java +++ b/src/main/java/pairmatching/domain/Course.java @@ -18,14 +18,16 @@ public enum Course { public String getName() { return name; } + public static List getList() { return Arrays.stream(Course.values()) .map(Course::getName) .sequential() .collect(Collectors.toList()); } + public static boolean isExist(String name) { - List result = Arrays.stream(Course.values()) + List result = Arrays.stream(Course.values()) .filter(course -> course.getName().equals(name)) .collect(Collectors.toList()); if (result.size() == 1) { diff --git a/src/main/java/pairmatching/domain/Level.java b/src/main/java/pairmatching/domain/Level.java index 985a80bed..43250abc5 100644 --- a/src/main/java/pairmatching/domain/Level.java +++ b/src/main/java/pairmatching/domain/Level.java @@ -27,6 +27,7 @@ public static List getList() { .sequential() .collect(Collectors.toList()); } + public static Level getEnumLevel(String name) { return Arrays.stream(Level.values()) .filter(level -> level.getName().equals(name)) @@ -34,7 +35,7 @@ public static Level getEnumLevel(String name) { } public static boolean isExist(String name) { - List result = Arrays.stream(Level.values()) + List result = Arrays.stream(Level.values()) .filter(level -> level.getName().equals(name)) .collect(Collectors.toList()); if (result.size() == 1) { diff --git a/src/main/java/pairmatching/domain/MatchInfo.java b/src/main/java/pairmatching/domain/MatchInfo.java index 90aa54150..13f31e84f 100644 --- a/src/main/java/pairmatching/domain/MatchInfo.java +++ b/src/main/java/pairmatching/domain/MatchInfo.java @@ -14,6 +14,7 @@ public MatchInfo(Course course, Level level, Mission mission, List> p this.mission = mission; this.pair = pair; } + public List> getPairInfo() { return pair; } diff --git a/src/main/java/pairmatching/domain/Missions.java b/src/main/java/pairmatching/domain/Missions.java index dd3d086d5..0d048bbea 100644 --- a/src/main/java/pairmatching/domain/Missions.java +++ b/src/main/java/pairmatching/domain/Missions.java @@ -10,12 +10,14 @@ public Missions() { missionMap = new TreeMap<>(); init(); } + private void init() { Level.getList().stream() .forEach(level -> missionMap.put(level, new ArrayList<>())); addInfo(); } + private void addInfo() { missionMap.get(Level.LEVEL1).add(Mission.CAR_RACE); missionMap.get(Level.LEVEL1).add(Mission.LOTTO); @@ -28,6 +30,7 @@ private void addInfo() { missionMap.get(Level.LEVEL4).add(Mission.IMPROVEMENT_PERFORMANCE); missionMap.get(Level.LEVEL4).add(Mission.DEPLOYMENT); } + public List getValue(Level level) { return Collections.unmodifiableList(missionMap.get(level).stream() .map(mission -> mission.getName()) diff --git a/src/main/java/pairmatching/repository/CrewRepository.java b/src/main/java/pairmatching/repository/CrewRepository.java index bfbdde13d..3f76cca4f 100644 --- a/src/main/java/pairmatching/repository/CrewRepository.java +++ b/src/main/java/pairmatching/repository/CrewRepository.java @@ -22,6 +22,7 @@ public class CrewRepository { private CrewRepository() { } + public static CrewRepository getInstance() { return instance; } @@ -41,7 +42,7 @@ private static void readBackendCrew() throws IOException { new FileReader("src/main/resources/backend-crew.md") ); String str; - while((str = reader.readLine()) != null) { + while ((str = reader.readLine()) != null) { crewList.add(new Crew(Course.BACKEND, str)); } reader.close(); @@ -54,7 +55,7 @@ private static void readFrontendCrew() throws IOException { new FileReader("src/main/resources/frontend-crew.md") ); String str; - while((str = reader.readLine()) != null) { + while ((str = reader.readLine()) != null) { crewList.add(new Crew(Course.FRONTEND, str)); } reader.close(); diff --git a/src/main/java/pairmatching/service/MatchingService.java b/src/main/java/pairmatching/service/MatchingService.java index d1d707cf0..373fb9ad0 100644 --- a/src/main/java/pairmatching/service/MatchingService.java +++ b/src/main/java/pairmatching/service/MatchingService.java @@ -15,6 +15,7 @@ public class MatchingService { private static final MatchInfoRepository matchInfoRepository = MatchInfoRepository.getInstance(); private static final CrewRepository crewRepository = CrewRepository.getInstance(); + public MatchInfo matchPair(String input, Missions missions) { String[] infoArr = input.split(", "); Course course = checkCourse(infoArr[0]); @@ -56,7 +57,7 @@ public MatchInfo matchAndSavePair(Course course, Level level, Mission mission) { List onePair = new ArrayList<>(); onePair.add(crews.get(index++)); onePair.add(crews.get(index++)); - if (index == crews.size()-1) { + if (index == crews.size() - 1) { onePair.add(crews.get(index++)); } pair.add(onePair); diff --git a/src/main/java/pairmatching/view/InputView.java b/src/main/java/pairmatching/view/InputView.java index c3756f807..1b2c55f10 100644 --- a/src/main/java/pairmatching/view/InputView.java +++ b/src/main/java/pairmatching/view/InputView.java @@ -11,6 +11,7 @@ public static String getMainSelect() { "Q. ์ข…๋ฃŒ"); return Console.readLine(); } + public static String getMatchingInfo() { System.out.println("๊ณผ์ •, ๋ ˆ๋ฒจ, ๋ฏธ์…˜์„ ์„ ํƒํ•˜์„ธ์š”.\n" + "ex) ๋ฐฑ์—”๋“œ, ๋ ˆ๋ฒจ1, ์ž๋™์ฐจ๊ฒฝ์ฃผ"); From 793e2529c107f7318e356ebc24a62bed4789b571 Mon Sep 17 00:00:00 2001 From: junyong Date: Sun, 27 Nov 2022 17:35:56 +0900 Subject: [PATCH 30/43] =?UTF-8?q?docs:=20=ED=98=84=EC=9E=AC=20=EC=8B=9C?= =?UTF-8?q?=EC=A0=90=EA=B8=B0=EC=A4=80=20=EC=97=90=EB=9F=AC=20=EC=B2=98?= =?UTF-8?q?=EB=A6=AC=20=EA=B8=B0=EB=8A=A5=20=EB=AA=A9=EB=A1=9D=20=EC=97=85?= =?UTF-8?q?=EB=8D=B0=EC=9D=B4=ED=8A=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/README.md b/docs/README.md index 183a3a3fe..6d6d1de98 100644 --- a/docs/README.md +++ b/docs/README.md @@ -60,7 +60,7 @@ - ์‚ฌ์šฉ์ž๊ฐ€ ์ž˜๋ชป๋œ ๊ฐ’์„ ์ž…๋ ฅํ•  ๊ฒฝ์šฐ IllegalArgumentException๋ฅผ ๋ฐœ์ƒ์‹œํ‚ค๊ณ , - [ERROR]๋กœ ์‹œ์ž‘ํ•˜๋Š” ์—๋Ÿฌ ๋ฉ”์‹œ์ง€๋ฅผ ์ถœ๋ ฅ ํ›„ ํ•ด๋‹น ๋ถ€๋ถ„๋ถ€ํ„ฐ ๋‹ค์‹œ ์ž…๋ ฅ์„ ๋ฐ›๋Š”๋‹ค. -- [ ] 1.๊ธฐ๋Šฅ์„ ์„ ํƒํ•˜๋Š” ์ˆซ์ž๋ฅผ ์ž…๋ ฅํ•  ๋•Œ, 1~3 ์ด์™ธ์— ๋‹ค๋ฅธ ์ˆซ์ž๋ฅผ ์ž…๋ ฅํ•˜๋Š” ๊ฒฝ์šฐ - - [ ] Q ์ด์™ธ์— ๋‹ค๋ฅธ ๋ฌธ์ž๋ฅผ ์ž…๋ ฅํ•˜๋Š” ๊ฒฝ์šฐ -- [ ] 2.๊ณผ์ •, ๋ ˆ๋ฒจ, ๋ฏธ์…˜์— ์žˆ๋Š” ๋‹จ์–ด ์ด์™ธ์— ๋‹ค๋ฅธ ๋‹จ์–ด๋ฅผ ์ž…๋ ฅํ•˜๋Š” ๊ฒฝ์šฐ +- [x] 1.๊ธฐ๋Šฅ์„ ์„ ํƒํ•˜๋Š” ์ˆซ์ž๋ฅผ ์ž…๋ ฅํ•  ๋•Œ, 1~3 ์ด์™ธ์— ๋‹ค๋ฅธ ์ˆซ์ž๋ฅผ ์ž…๋ ฅํ•˜๋Š” ๊ฒฝ์šฐ + - [x] Q ์ด์™ธ์— ๋‹ค๋ฅธ ๋ฌธ์ž๋ฅผ ์ž…๋ ฅํ•˜๋Š” ๊ฒฝ์šฐ +- [x] 2.๊ณผ์ •, ๋ ˆ๋ฒจ, ๋ฏธ์…˜์— ์žˆ๋Š” ๋‹จ์–ด ์ด์™ธ์— ๋‹ค๋ฅธ ๋‹จ์–ด๋ฅผ ์ž…๋ ฅํ•˜๋Š” ๊ฒฝ์šฐ - [ ] 3.ํŽ˜์–ด ์กฐํšŒ ๊ธฐ๋Šฅ์—์„œ "๋„ค | ์•„๋‹ˆ์˜ค" ๋ฅผ ์ œ์™ธํ•œ ๋‹ค๋ฅธ ๋‹จ์–ด๋ฅผ ์ž…๋ ฅํ•˜๋Š” ๊ฒฝ์šฐ \ No newline at end of file From 4f74f6752bdfc939dad42f42e6e3a9695c1c1ece Mon Sep 17 00:00:00 2001 From: junyong Date: Sun, 27 Nov 2022 17:56:17 +0900 Subject: [PATCH 31/43] =?UTF-8?q?feat:=203.=ED=8E=98=EC=96=B4=20=EC=A1=B0?= =?UTF-8?q?=ED=9A=8C=20=EA=B8=B0=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 --- .../controller/MatchingController.java | 40 +++++++++++++++++-- .../java/pairmatching/domain/MatchInfo.java | 12 ++++++ .../repository/MatchInfoRepository.java | 12 ++++++ .../pairmatching/service/MatchingService.java | 21 +++++----- .../pairmatching/utils/ExceptionMessage.java | 1 + .../java/pairmatching/utils/Validate.java | 12 +++++- .../java/pairmatching/view/InputView.java | 6 +++ 7 files changed, 86 insertions(+), 18 deletions(-) diff --git a/src/main/java/pairmatching/controller/MatchingController.java b/src/main/java/pairmatching/controller/MatchingController.java index af8174c21..d70838818 100644 --- a/src/main/java/pairmatching/controller/MatchingController.java +++ b/src/main/java/pairmatching/controller/MatchingController.java @@ -1,10 +1,12 @@ package pairmatching.controller; -import pairmatching.domain.MatchInfo; -import pairmatching.domain.Missions; +import pairmatching.domain.*; import pairmatching.service.MatchingService; +import static pairmatching.utils.Validate.checkInfoCount; +import static pairmatching.utils.Validate.checkRematchAnswer; +import static pairmatching.view.InputView.getConfirmRematch; import static pairmatching.view.InputView.getMatchingInfo; import static pairmatching.view.OutputView.printMatchPair; import static pairmatching.view.OutputView.printMissionInfo; @@ -19,12 +21,42 @@ public void run() { try { printMissionInfo(missions); String input = getMatchingInfo(); - MatchInfo matchInfo = matchingService.matchPair(input, missions); - printMatchPair(matchInfo); + matchPair(input, missions); flag = true; } catch (IllegalArgumentException e) { System.out.println(e.getMessage()); } } } + + public void matchPair(String input, Missions missions) { + String[] infoArr = input.split(", "); + checkInfoCount(infoArr); + Course course = matchingService.checkCourse(infoArr[0]); + Level level = matchingService.checkLevel(infoArr[1]); + Mission mission = matchingService.checkMission(infoArr[1], infoArr[2], missions); + + if (matchingService.checkExistPair(course,level,mission)) { + if (!getRematchAnswer()) { + return; + } + } + printMatchPair(matchingService.matchAndSavePair(course, level, mission)); + } + + public boolean getRematchAnswer() { + boolean flag = false; + while (!flag) { + try { + String input = checkRematchAnswer(getConfirmRematch()); + if (input.equals("์•„๋‹ˆ์š”")) { + return false; + } + flag = true; + } catch (IllegalArgumentException e) { + System.out.println(e.getMessage()); + } + } + return true; + } } diff --git a/src/main/java/pairmatching/domain/MatchInfo.java b/src/main/java/pairmatching/domain/MatchInfo.java index 13f31e84f..9157a506c 100644 --- a/src/main/java/pairmatching/domain/MatchInfo.java +++ b/src/main/java/pairmatching/domain/MatchInfo.java @@ -18,4 +18,16 @@ public MatchInfo(Course course, Level level, Mission mission, List> p public List> getPairInfo() { return pair; } + + public Course getCourse() { + return course; + } + + public Level getLevel() { + return level; + } + + public Mission getMission() { + return mission; + } } diff --git a/src/main/java/pairmatching/repository/MatchInfoRepository.java b/src/main/java/pairmatching/repository/MatchInfoRepository.java index 3faf1cd0c..1c9bc6379 100644 --- a/src/main/java/pairmatching/repository/MatchInfoRepository.java +++ b/src/main/java/pairmatching/repository/MatchInfoRepository.java @@ -24,4 +24,16 @@ public MatchInfo addMatchInfo(MatchInfo matchInfo) { matchInfoList.add(matchInfo); return matchInfo; } + + public boolean isExist(Course course, Level level, Mission mission) { + List result = matchInfoList.stream() + .filter(matchInfo -> course == matchInfo.getCourse()) + .filter(matchInfo -> level == matchInfo.getLevel()) + .filter(matchInfo -> mission == matchInfo.getMission()) + .collect(Collectors.toList()); + if (result.size() == 1) { + return true; + } + return false; + } } diff --git a/src/main/java/pairmatching/service/MatchingService.java b/src/main/java/pairmatching/service/MatchingService.java index 373fb9ad0..a41574a5e 100644 --- a/src/main/java/pairmatching/service/MatchingService.java +++ b/src/main/java/pairmatching/service/MatchingService.java @@ -16,16 +16,7 @@ public class MatchingService { private static final MatchInfoRepository matchInfoRepository = MatchInfoRepository.getInstance(); private static final CrewRepository crewRepository = CrewRepository.getInstance(); - public MatchInfo matchPair(String input, Missions missions) { - String[] infoArr = input.split(", "); - Course course = checkCourse(infoArr[0]); - Level level = checkLevel(infoArr[1]); - Mission mission = checkMission(infoArr[1], infoArr[2], missions); - - return matchAndSavePair(course, level, mission); - } - - private Course checkCourse(String course) { + public Course checkCourse(String course) { checkEachInfo(course); if (!Course.isExist(course)) { throw new IllegalArgumentException(ERROR_COURSE_NOT_EXIST); @@ -33,7 +24,7 @@ private Course checkCourse(String course) { return Course.getEnumCourse(course); } - private Level checkLevel(String level) { + public Level checkLevel(String level) { checkEachInfo(level); if (!Level.isExist(level)) { throw new IllegalArgumentException(ERROR_LEVEL_NOT_EXIST); @@ -41,7 +32,7 @@ private Level checkLevel(String level) { return Level.getEnumLevel(level); } - private Mission checkMission(String level, String mission, Missions missions) { + public Mission checkMission(String level, String mission, Missions missions) { checkEachInfo(mission); if (!missions.isExist(level, mission)) { throw new IllegalArgumentException(ERROR_MISSION_NOT_EXIST); @@ -65,4 +56,10 @@ public MatchInfo matchAndSavePair(Course course, Level level, Mission mission) { return matchInfoRepository.addMatchInfo(new MatchInfo(course, level, mission, pair)); } + public boolean checkExistPair(Course course, Level level, Mission mission) { + if (matchInfoRepository.isExist(course, level, mission)) { + return true; + } + return false; + } } \ No newline at end of file diff --git a/src/main/java/pairmatching/utils/ExceptionMessage.java b/src/main/java/pairmatching/utils/ExceptionMessage.java index 5a61e7d56..097150307 100644 --- a/src/main/java/pairmatching/utils/ExceptionMessage.java +++ b/src/main/java/pairmatching/utils/ExceptionMessage.java @@ -1,6 +1,7 @@ package pairmatching.utils; public class ExceptionMessage { + public static final String ERROR_INVALID_SELECT ="[ERROR] ๋ณด๊ธฐ์— ์—†๋Š” ์„ ํƒ์ž…๋‹ˆ๋‹ค."; public static final String ERROR_EMPTY_INPUT = "[ERROR] ๋น„์–ด์žˆ๋Š” ๊ฐ’์ด ์กด์žฌํ•ฉ๋‹ˆ๋‹ค."; public static final String ERROR_LESS_INFO = "[ERROR] 3๊ฐœ์˜ ์ž…๋ ฅ ๊ฐ’์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค."; public static final String ERROR_FRONT_BLANK = "[ERROR] ์ž…๋ ฅ๊ฐ’ ์•ž์— ๊ณต๋ฐฑ์ด ์กด์žฌํ•ฉ๋‹ˆ๋‹ค. " + diff --git a/src/main/java/pairmatching/utils/Validate.java b/src/main/java/pairmatching/utils/Validate.java index 61fd63c34..a31ebd508 100644 --- a/src/main/java/pairmatching/utils/Validate.java +++ b/src/main/java/pairmatching/utils/Validate.java @@ -9,13 +9,21 @@ public class Validate { private final static String ERROR_MESSAGE = "[ERROR]"; public static String checkMissionInfo(String input) { - List candidateNumAndQ = Arrays.asList(new String[]{"1", "2", "3", "Q"}); - if (!candidateNumAndQ.contains(input)) { + List candidate = Arrays.asList(new String[]{"1", "2", "3", "Q"}); + if (!candidate.contains(input)) { throw new IllegalArgumentException(ERROR_MESSAGE + "๋ณด๊ธฐ์— ์žˆ๋Š” ๊ธฐ๋Šฅ ์„ ํƒ๋งŒ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค."); } return input; } + public static String checkRematchAnswer(String input) { + List candidate = Arrays.asList(new String[]{"๋„ค", "์•„๋‹ˆ์š”"}); + if (!candidate.contains(input)) { + throw new IllegalArgumentException(ERROR_INVALID_SELECT); + } + return input; + } + public static void checkEachInfo(String input) { checkEmptyValue(input); checkFrontBlank(input); diff --git a/src/main/java/pairmatching/view/InputView.java b/src/main/java/pairmatching/view/InputView.java index 1b2c55f10..fecdfd6df 100644 --- a/src/main/java/pairmatching/view/InputView.java +++ b/src/main/java/pairmatching/view/InputView.java @@ -17,4 +17,10 @@ public static String getMatchingInfo() { "ex) ๋ฐฑ์—”๋“œ, ๋ ˆ๋ฒจ1, ์ž๋™์ฐจ๊ฒฝ์ฃผ"); return Console.readLine(); } + + public static String getConfirmRematch() { + System.out.println("\n๋งค์นญ ์ •๋ณด๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹ค์‹œ ๋งค์นญํ•˜์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ?\n" + + "๋„ค | ์•„๋‹ˆ์˜ค"); + return Console.readLine(); + } } From 8434355944d232c77154f858474967fcee5eed33 Mon Sep 17 00:00:00 2001 From: junyong Date: Sun, 27 Nov 2022 18:05:17 +0900 Subject: [PATCH 32/43] =?UTF-8?q?fix:=20=EB=8B=A4=EC=8B=9C=20=EB=A7=A4?= =?UTF-8?q?=EC=B9=AD=ED=95=98=EA=B3=A0=20=EC=A0=80=EC=9E=A5=EC=8B=9C=20?= =?UTF-8?q?=EC=88=98=EC=A0=95=EC=9D=B4=20=EC=95=84=EB=8B=8C=20=EC=83=88?= =?UTF-8?q?=EB=A1=9C=EC=9A=B4=20=EA=B0=9D=EC=B2=B4=EB=A1=9C=20=EC=A0=80?= =?UTF-8?q?=EC=9E=A5=EC=9C=BC=EB=A1=9C=20=EA=B8=B0=EB=8A=A5=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 --- .../controller/MatchingController.java | 4 +++- .../repository/MatchInfoRepository.java | 14 +++++++++++ .../pairmatching/service/MatchingService.java | 24 +++++++++++++++++++ 3 files changed, 41 insertions(+), 1 deletion(-) diff --git a/src/main/java/pairmatching/controller/MatchingController.java b/src/main/java/pairmatching/controller/MatchingController.java index d70838818..1ffb8fcd3 100644 --- a/src/main/java/pairmatching/controller/MatchingController.java +++ b/src/main/java/pairmatching/controller/MatchingController.java @@ -40,8 +40,10 @@ public void matchPair(String input, Missions missions) { if (!getRematchAnswer()) { return; } + printMatchPair(matchingService.rematchAndSavePair(course, level, mission)); + return; } - printMatchPair(matchingService.matchAndSavePair(course, level, mission)); + printMatchPair(matchingService.firstMatch(course, level, mission)); } public boolean getRematchAnswer() { diff --git a/src/main/java/pairmatching/repository/MatchInfoRepository.java b/src/main/java/pairmatching/repository/MatchInfoRepository.java index 1c9bc6379..d30e3f7fb 100644 --- a/src/main/java/pairmatching/repository/MatchInfoRepository.java +++ b/src/main/java/pairmatching/repository/MatchInfoRepository.java @@ -25,6 +25,20 @@ public MatchInfo addMatchInfo(MatchInfo matchInfo) { return matchInfo; } + public MatchInfo reviseMatchInfo(MatchInfo info) { + int index = 0; + int removeIndex = 0; + for (MatchInfo matchInfo : matchInfoList) { + if (info.getCourse() == matchInfo.getCourse() && info.getLevel() == matchInfo.getLevel() + && info.getMission() == matchInfo.getMission()) { + removeIndex = index; + } + index++; + } + matchInfoList.remove(removeIndex); + matchInfoList.add(info); + return info; + } public boolean isExist(Course course, Level level, Mission mission) { List result = matchInfoList.stream() .filter(matchInfo -> course == matchInfo.getCourse()) diff --git a/src/main/java/pairmatching/service/MatchingService.java b/src/main/java/pairmatching/service/MatchingService.java index a41574a5e..d5f5861d9 100644 --- a/src/main/java/pairmatching/service/MatchingService.java +++ b/src/main/java/pairmatching/service/MatchingService.java @@ -62,4 +62,28 @@ public boolean checkExistPair(Course course, Level level, Mission mission) { } return false; } + + public MatchInfo firstMatch(Course course, Level level, Mission mission) { + return matchInfoRepository.addMatchInfo(matchPair(course, level, mission)); + } + + public MatchInfo rematchAndSavePair(Course course, Level level, Mission mission) { + return matchInfoRepository.reviseMatchInfo(matchPair(course, level, mission)); + } + + public MatchInfo matchPair(Course course, Level level, Mission mission) { + List> pair = new ArrayList<>(); + List crews = Randoms.shuffle(crewRepository.getCrew(course)); + int index = 0; + while (crews.size() != index) { + List onePair = new ArrayList<>(); + onePair.add(crews.get(index++)); + onePair.add(crews.get(index++)); + if (index == crews.size() - 1) { + onePair.add(crews.get(index++)); + } + pair.add(onePair); + } + return new MatchInfo(course, level, mission, pair); + } } \ No newline at end of file From c8ad1fae26fbf01fe8dc2e584eb6db1c6ee7e113 Mon Sep 17 00:00:00 2001 From: junyong Date: Sun, 27 Nov 2022 18:14:00 +0900 Subject: [PATCH 33/43] =?UTF-8?q?refactor:=20=EB=B6=88=ED=95=84=EC=9A=94?= =?UTF-8?q?=ED=95=9C=20=EB=A9=94=EC=84=9C=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 --- .../pairmatching/service/MatchingService.java | 16 ---------------- 1 file changed, 16 deletions(-) diff --git a/src/main/java/pairmatching/service/MatchingService.java b/src/main/java/pairmatching/service/MatchingService.java index d5f5861d9..aa99f954e 100644 --- a/src/main/java/pairmatching/service/MatchingService.java +++ b/src/main/java/pairmatching/service/MatchingService.java @@ -40,22 +40,6 @@ public Mission checkMission(String level, String mission, Missions missions) { return Mission.getEnumMission(mission); } - public MatchInfo matchAndSavePair(Course course, Level level, Mission mission) { - List> pair = new ArrayList<>(); - List crews = Randoms.shuffle(crewRepository.getCrew(course)); - int index = 0; - while (crews.size() != index) { - List onePair = new ArrayList<>(); - onePair.add(crews.get(index++)); - onePair.add(crews.get(index++)); - if (index == crews.size() - 1) { - onePair.add(crews.get(index++)); - } - pair.add(onePair); - } - return matchInfoRepository.addMatchInfo(new MatchInfo(course, level, mission, pair)); - } - public boolean checkExistPair(Course course, Level level, Mission mission) { if (matchInfoRepository.isExist(course, level, mission)) { return true; From 383b3aab8d1e7cfd0c38d23ea96f95ae353c8279 Mon Sep 17 00:00:00 2001 From: junyong Date: Sun, 27 Nov 2022 18:21:51 +0900 Subject: [PATCH 34/43] =?UTF-8?q?feat:=203.=ED=8E=98=EC=96=B4=20=EC=A1=B0?= =?UTF-8?q?=ED=9A=8C=20=EA=B8=B0=EB=8A=A5=20=EA=B5=AC=ED=98=84=20=EC=B6=94?= =?UTF-8?q?=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/InquireController.java | 29 ++++++++++++++++++ .../repository/MatchInfoRepository.java | 8 +++++ .../pairmatching/service/InqueryService.java | 30 +++++++++++++++++++ .../pairmatching/utils/ExceptionMessage.java | 2 ++ .../java/pairmatching/view/InputView.java | 6 ++++ 5 files changed, 75 insertions(+) create mode 100644 src/main/java/pairmatching/controller/InquireController.java create mode 100644 src/main/java/pairmatching/service/InqueryService.java diff --git a/src/main/java/pairmatching/controller/InquireController.java b/src/main/java/pairmatching/controller/InquireController.java new file mode 100644 index 000000000..5b112af09 --- /dev/null +++ b/src/main/java/pairmatching/controller/InquireController.java @@ -0,0 +1,29 @@ +package pairmatching.controller; + +import pairmatching.service.InqueryService; + +import static pairmatching.controller.MatchingController.missions; +import static pairmatching.view.InputView.getInqueryInfo; +import static pairmatching.view.OutputView.printMatchPair; +import static pairmatching.view.OutputView.printMissionInfo; + +public class InqueryController { + private static final InqueryService inqueryService = new InqueryService(); + + public void run() { + boolean flag = false; + while (!flag) { + try { + printMissionInfo(missions); + printMatchInfo(getInqueryInfo()); + flag = true; + } catch (IllegalArgumentException e) { + System.out.println(e.getMessage()); + } + } + } + + public void printMatchInfo(String input) { + printMatchPair(inqueryService.getMatchInfo(input)); + } +} diff --git a/src/main/java/pairmatching/repository/MatchInfoRepository.java b/src/main/java/pairmatching/repository/MatchInfoRepository.java index d30e3f7fb..382712d6a 100644 --- a/src/main/java/pairmatching/repository/MatchInfoRepository.java +++ b/src/main/java/pairmatching/repository/MatchInfoRepository.java @@ -50,4 +50,12 @@ public boolean isExist(Course course, Level level, Mission mission) { } return false; } + + public MatchInfo findMatchInfo(Course course, Level level, Mission mission) { + return matchInfoList.stream() + .filter(matchInfo -> course == matchInfo.getCourse()) + .filter(matchInfo -> level == matchInfo.getLevel()) + .filter(matchInfo -> mission == matchInfo.getMission()) + .collect(Collectors.toList()).get(0); + } } diff --git a/src/main/java/pairmatching/service/InqueryService.java b/src/main/java/pairmatching/service/InqueryService.java new file mode 100644 index 000000000..16a6c1c6d --- /dev/null +++ b/src/main/java/pairmatching/service/InqueryService.java @@ -0,0 +1,30 @@ +package pairmatching.service; + +import pairmatching.domain.Course; +import pairmatching.domain.Level; +import pairmatching.domain.MatchInfo; +import pairmatching.domain.Mission; +import pairmatching.repository.MatchInfoRepository; + +import static pairmatching.controller.MatchingController.missions; +import static pairmatching.utils.ExceptionMessage.ERROR_NOT_EXIST_MATCH; +import static pairmatching.utils.Validate.checkInfoCount; +public class InqueryService { + private static final MatchInfoRepository matchingInfoRepository = MatchInfoRepository.getInstance(); + public static final MatchingService matchService = new MatchingService(); + + public MatchInfo getMatchInfo(String input) { + String[] infoArr = input.split(", "); + checkInfoCount(infoArr); + Course course = matchService.checkCourse(infoArr[0]); + Level level = matchService.checkLevel(infoArr[1]); + Mission mission = matchService.checkMission(infoArr[1], infoArr[2], missions); + try { + return matchingInfoRepository.findMatchInfo(course, level, mission); + } catch (IndexOutOfBoundsException e) { + throw new IllegalArgumentException(ERROR_NOT_EXIST_MATCH); + } + + } + +} \ No newline at end of file diff --git a/src/main/java/pairmatching/utils/ExceptionMessage.java b/src/main/java/pairmatching/utils/ExceptionMessage.java index 097150307..1c020e1b2 100644 --- a/src/main/java/pairmatching/utils/ExceptionMessage.java +++ b/src/main/java/pairmatching/utils/ExceptionMessage.java @@ -11,5 +11,7 @@ public class ExceptionMessage { public static final String ERROR_MISSION_NOT_EXIST = "[ERROR] ์ž…๋ ฅ๋œ ๋ฏธ์…˜์€ ์กด์žฌํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค."; public static final String ERROR_FILE_READ = "[ERROR] ํŒŒ์ผ์„ ์ฝ๊ธฐ์—์„œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค. "; + + public static final String ERROR_NOT_EXIST_MATCH = "[ERROR] ํ•ด๋‹น ๋งค์น˜๋Š” ์กด์žฌํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค."; } diff --git a/src/main/java/pairmatching/view/InputView.java b/src/main/java/pairmatching/view/InputView.java index fecdfd6df..99cbc463e 100644 --- a/src/main/java/pairmatching/view/InputView.java +++ b/src/main/java/pairmatching/view/InputView.java @@ -23,4 +23,10 @@ public static String getConfirmRematch() { "๋„ค | ์•„๋‹ˆ์˜ค"); return Console.readLine(); } + + public static String getInqueryInfo() { + System.out.println("๊ณผ์ •, ๋ ˆ๋ฒจ, ๋ฏธ์…˜์„ ์„ ํƒํ•˜์„ธ์š”.\n" + + "ex) ๋ฐฑ์—”๋“œ, ๋ ˆ๋ฒจ1, ์ž๋™์ฐจ๊ฒฝ์ฃผ"); + return Console.readLine(); + } } From 4ee28072685e0a06d9f4abb38c1f513ab24293ad Mon Sep 17 00:00:00 2001 From: junyong Date: Sun, 27 Nov 2022 18:23:36 +0900 Subject: [PATCH 35/43] =?UTF-8?q?docs:=20=ED=98=84=EC=9E=AC=20=EC=8B=9C?= =?UTF-8?q?=EC=A0=90=20=EA=B8=B0=EB=8A=A5=20=EB=AA=A9=EB=A1=9D=20=EC=97=85?= =?UTF-8?q?=EB=8D=B0=EC=9D=B4=ED=8A=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/README.md | 8 ++++---- .../{InquireController.java => InqueryController.java} | 0 2 files changed, 4 insertions(+), 4 deletions(-) rename src/main/java/pairmatching/controller/{InquireController.java => InqueryController.java} (100%) diff --git a/docs/README.md b/docs/README.md index 6d6d1de98..51cc34420 100644 --- a/docs/README.md +++ b/docs/README.md @@ -44,9 +44,9 @@ - [x] ๊ณผ์ •๊ณผ ๋ฏธ์…˜์— ๋Œ€ํ•œ ๋‚ด์šฉ์„ ์ถœ๋ ฅํ•œ๋‹ค. - [x] ๋งค์นญํ•˜๊ณ ์ž ํ•˜๋Š” ๊ณผ์ •, ๋ ˆ๋ฒจ, ๋ฏธ์…˜์„ ์ž…๋ ฅ ๋ฐ›๋Š”๋‹ค. - [x] ๋งค์นญ์ด ์ •์ƒ์ ์œผ๋กœ ์ˆ˜ํ–‰๋˜๋ฉด ๊ฒฐ๊ณผ๊ฐ€ ์ถœ๋ ฅ๋œ๋‹ค. -- [ ] 3.ํŽ˜์–ด ์กฐํšŒ ๊ธฐ๋Šฅ ๊ตฌํ˜„ - - [ ] ๋งค์นญ ์ด๋ ฅ์ด ์žˆ์œผ๋ฉด ํ•ด๋‹น ๋ฏธ์…˜์˜ ํŽ˜์–ด ์ •๋ณด๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค. - - [ ] ๋งค์นญ ์ด๋ ฅ์ด ์—†์œผ๋ฉด ๋งค์นญ ์ด๋ ฅ์ด ์—†๋‹ค๋Š” ์—๋Ÿฌ ๋ฉ”์„ธ์ง€๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค. +- [x] 3.ํŽ˜์–ด ์กฐํšŒ ๊ธฐ๋Šฅ ๊ตฌํ˜„ + - [x] ๋งค์นญ ์ด๋ ฅ์ด ์žˆ์œผ๋ฉด ํ•ด๋‹น ๋ฏธ์…˜์˜ ํŽ˜์–ด ์ •๋ณด๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค. + - [x] ๋งค์นญ ์ด๋ ฅ์ด ์—†์œผ๋ฉด ๋งค์นญ ์ด๋ ฅ์ด ์—†๋‹ค๋Š” ์—๋Ÿฌ ๋ฉ”์„ธ์ง€๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค. - [ ] 4.ํŽ˜์–ด ์ดˆ๊ธฐํ™” ๊ธฐ๋Šฅ ๊ตฌํ˜„ - [ ] ํŽ˜์–ด ์ดˆ๊ธฐํ™” ์ˆซ์ž๋ฅผ ์ž…๋ ฅํ•˜๋ฉด ํŽ˜์–ด ๋ฏธ์…˜์— ๋Œ€ํ•œ ์ •๋ณด๊ฐ€ ์ดˆ๊ธฐํ™” ๋œ๋‹ค. - [ ] ์ดˆ๊ธฐํ™” ๋˜์—ˆ๋‹ค๋Š” ๋‚ด์šฉ์„ ์ถœ๋ ฅํ•œ๋‹ค. @@ -63,4 +63,4 @@ - [x] 1.๊ธฐ๋Šฅ์„ ์„ ํƒํ•˜๋Š” ์ˆซ์ž๋ฅผ ์ž…๋ ฅํ•  ๋•Œ, 1~3 ์ด์™ธ์— ๋‹ค๋ฅธ ์ˆซ์ž๋ฅผ ์ž…๋ ฅํ•˜๋Š” ๊ฒฝ์šฐ - [x] Q ์ด์™ธ์— ๋‹ค๋ฅธ ๋ฌธ์ž๋ฅผ ์ž…๋ ฅํ•˜๋Š” ๊ฒฝ์šฐ - [x] 2.๊ณผ์ •, ๋ ˆ๋ฒจ, ๋ฏธ์…˜์— ์žˆ๋Š” ๋‹จ์–ด ์ด์™ธ์— ๋‹ค๋ฅธ ๋‹จ์–ด๋ฅผ ์ž…๋ ฅํ•˜๋Š” ๊ฒฝ์šฐ -- [ ] 3.ํŽ˜์–ด ์กฐํšŒ ๊ธฐ๋Šฅ์—์„œ "๋„ค | ์•„๋‹ˆ์˜ค" ๋ฅผ ์ œ์™ธํ•œ ๋‹ค๋ฅธ ๋‹จ์–ด๋ฅผ ์ž…๋ ฅํ•˜๋Š” ๊ฒฝ์šฐ \ No newline at end of file +- [x] 3.ํŽ˜์–ด ์กฐํšŒ ๊ธฐ๋Šฅ์—์„œ "๋„ค | ์•„๋‹ˆ์˜ค" ๋ฅผ ์ œ์™ธํ•œ ๋‹ค๋ฅธ ๋‹จ์–ด๋ฅผ ์ž…๋ ฅํ•˜๋Š” ๊ฒฝ์šฐ \ No newline at end of file diff --git a/src/main/java/pairmatching/controller/InquireController.java b/src/main/java/pairmatching/controller/InqueryController.java similarity index 100% rename from src/main/java/pairmatching/controller/InquireController.java rename to src/main/java/pairmatching/controller/InqueryController.java From f322fe0c410a149b5fa08cc30475d390a1a105b1 Mon Sep 17 00:00:00 2001 From: junyong Date: Sun, 27 Nov 2022 18:29:06 +0900 Subject: [PATCH 36/43] =?UTF-8?q?feat:=204.=ED=8E=98=EC=96=B4=20=EC=B4=88?= =?UTF-8?q?=EA=B8=B0=ED=99=94=20=EA=B8=B0=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 --- docs/README.md | 6 +++--- .../controller/InitializeController.java | 14 ++++++++++++++ .../pairmatching/controller/MainController.java | 7 +++++-- .../repository/MatchInfoRepository.java | 4 ++++ .../pairmatching/service/InitializeService.java | 11 +++++++++++ src/main/java/pairmatching/view/OutputView.java | 4 ++++ 6 files changed, 41 insertions(+), 5 deletions(-) create mode 100644 src/main/java/pairmatching/controller/InitializeController.java create mode 100644 src/main/java/pairmatching/service/InitializeService.java diff --git a/docs/README.md b/docs/README.md index 51cc34420..ca15f7d91 100644 --- a/docs/README.md +++ b/docs/README.md @@ -47,9 +47,9 @@ - [x] 3.ํŽ˜์–ด ์กฐํšŒ ๊ธฐ๋Šฅ ๊ตฌํ˜„ - [x] ๋งค์นญ ์ด๋ ฅ์ด ์žˆ์œผ๋ฉด ํ•ด๋‹น ๋ฏธ์…˜์˜ ํŽ˜์–ด ์ •๋ณด๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค. - [x] ๋งค์นญ ์ด๋ ฅ์ด ์—†์œผ๋ฉด ๋งค์นญ ์ด๋ ฅ์ด ์—†๋‹ค๋Š” ์—๋Ÿฌ ๋ฉ”์„ธ์ง€๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค. -- [ ] 4.ํŽ˜์–ด ์ดˆ๊ธฐํ™” ๊ธฐ๋Šฅ ๊ตฌํ˜„ - - [ ] ํŽ˜์–ด ์ดˆ๊ธฐํ™” ์ˆซ์ž๋ฅผ ์ž…๋ ฅํ•˜๋ฉด ํŽ˜์–ด ๋ฏธ์…˜์— ๋Œ€ํ•œ ์ •๋ณด๊ฐ€ ์ดˆ๊ธฐํ™” ๋œ๋‹ค. - - [ ] ์ดˆ๊ธฐํ™” ๋˜์—ˆ๋‹ค๋Š” ๋‚ด์šฉ์„ ์ถœ๋ ฅํ•œ๋‹ค. +- [x] 4.ํŽ˜์–ด ์ดˆ๊ธฐํ™” ๊ธฐ๋Šฅ ๊ตฌํ˜„ + - [x] ํŽ˜์–ด ์ดˆ๊ธฐํ™” ์ˆซ์ž๋ฅผ ์ž…๋ ฅํ•˜๋ฉด ํŽ˜์–ด ๋ฏธ์…˜์— ๋Œ€ํ•œ ์ •๋ณด๊ฐ€ ์ดˆ๊ธฐํ™” ๋œ๋‹ค. + - [x] ์ดˆ๊ธฐํ™” ๋˜์—ˆ๋‹ค๋Š” ๋‚ด์šฉ์„ ์ถœ๋ ฅํ•œ๋‹ค. - [ ] ์ข…๋ฃŒ(Q)๋ฅผ ์ž…๋ ฅํ•˜๋ฉด ๊ฒŒ์ž„์ด ์ข…๋ฃŒ๋œ๋‹ค. ## โœ…์ถ”๊ฐ€ํ•  ๊ฐ์ฒด diff --git a/src/main/java/pairmatching/controller/InitializeController.java b/src/main/java/pairmatching/controller/InitializeController.java new file mode 100644 index 000000000..815a98e62 --- /dev/null +++ b/src/main/java/pairmatching/controller/InitializeController.java @@ -0,0 +1,14 @@ +package pairmatching.controller; + +import pairmatching.service.InitializeService; + +import static pairmatching.view.OutputView.printInitialize; + +public class InitializeController { + public static final InitializeService initializeService = new InitializeService(); + + public void run() { + initializeService.matchInfo(); + printInitialize(); + } +} \ No newline at end of file diff --git a/src/main/java/pairmatching/controller/MainController.java b/src/main/java/pairmatching/controller/MainController.java index 23022427c..f0f796b01 100644 --- a/src/main/java/pairmatching/controller/MainController.java +++ b/src/main/java/pairmatching/controller/MainController.java @@ -1,11 +1,14 @@ package pairmatching.controller; +import pairmatching.service.InitializeService; import pairmatching.utils.Validate; import pairmatching.view.InputView; public class MainController { public static final Validate validate = new Validate(); public static final MatchingController matchingController = new MatchingController(); + public static final InqueryController inqueryController = new InqueryController(); + public static final InitializeController initializeController = new InitializeController(); public static final InputView inputView = new InputView(); public void run() { @@ -28,10 +31,10 @@ private void readSelect(String input) { matchingController.run(); } if (input.equals("2")) { - + inqueryController.run(); } if (input.equals("3")) { - + initializeController.run(); } } } diff --git a/src/main/java/pairmatching/repository/MatchInfoRepository.java b/src/main/java/pairmatching/repository/MatchInfoRepository.java index 382712d6a..5333b2254 100644 --- a/src/main/java/pairmatching/repository/MatchInfoRepository.java +++ b/src/main/java/pairmatching/repository/MatchInfoRepository.java @@ -58,4 +58,8 @@ public MatchInfo findMatchInfo(Course course, Level level, Mission mission) { .filter(matchInfo -> mission == matchInfo.getMission()) .collect(Collectors.toList()).get(0); } + public void initMatchInfo() { + matchInfoList = new ArrayList<>(); + } + } diff --git a/src/main/java/pairmatching/service/InitializeService.java b/src/main/java/pairmatching/service/InitializeService.java new file mode 100644 index 000000000..828e98fc9 --- /dev/null +++ b/src/main/java/pairmatching/service/InitializeService.java @@ -0,0 +1,11 @@ +package pairmatching.service; + +import pairmatching.repository.MatchInfoRepository; + +public class InitializeService { + public static final MatchInfoRepository matchInfoRepository = MatchInfoRepository.getInstance(); + + public void matchInfo() { + matchInfoRepository.initMatchInfo(); + } +} \ No newline at end of file diff --git a/src/main/java/pairmatching/view/OutputView.java b/src/main/java/pairmatching/view/OutputView.java index 687114a92..27c9be5f2 100644 --- a/src/main/java/pairmatching/view/OutputView.java +++ b/src/main/java/pairmatching/view/OutputView.java @@ -26,4 +26,8 @@ public static void printMatchPair(MatchInfo matchInfo) { System.out.println(pair.get(pair.size() - 1)); } } + + public static void printInitialize() { + System.out.println("\n์ดˆ๊ธฐํ™” ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. "); + } } From 58d5974deee496cc129867ade9977b4aa398fb87 Mon Sep 17 00:00:00 2001 From: junyong Date: Sun, 27 Nov 2022 18:30:27 +0900 Subject: [PATCH 37/43] =?UTF-8?q?style:=20=EB=B6=88=ED=95=84=EC=9A=94?= =?UTF-8?q?=ED=95=9C=20Import=20=EC=82=AD=EC=A0=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/pairmatching/controller/MainController.java | 1 - 1 file changed, 1 deletion(-) diff --git a/src/main/java/pairmatching/controller/MainController.java b/src/main/java/pairmatching/controller/MainController.java index f0f796b01..b1a08d467 100644 --- a/src/main/java/pairmatching/controller/MainController.java +++ b/src/main/java/pairmatching/controller/MainController.java @@ -1,6 +1,5 @@ package pairmatching.controller; -import pairmatching.service.InitializeService; import pairmatching.utils.Validate; import pairmatching.view.InputView; From 15f6d86d34b2495b8af2907bae6d5c2602b74ef0 Mon Sep 17 00:00:00 2001 From: junyong Date: Sun, 4 Dec 2022 14:06:30 +0900 Subject: [PATCH 38/43] =?UTF-8?q?docs:=20=EA=B8=B0=EB=8A=A5=20=EB=AA=A9?= =?UTF-8?q?=EB=A1=9D=20=EC=97=85=EB=8D=B0=EC=9D=B4=ED=8A=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/README.md | 36 ++++++++++++++++++++++++++++++------ 1 file changed, 30 insertions(+), 6 deletions(-) diff --git a/docs/README.md b/docs/README.md index ca15f7d91..048097d1f 100644 --- a/docs/README.md +++ b/docs/README.md @@ -25,14 +25,42 @@ - ### Main diagram - +- [x] Application - ์‹œ์ž‘ +- [x] controller + - [x] MainController + - [x] MatchingController - ํŽ˜์–ด ๋งค์นญ + - [x] InquiryController - ํŽ˜์–ด ์กฐํšŒ + - [x] InitializeController - ํŽ˜์–ด ์ดˆ๊ธฐํ™” + +- [x] domain + - [x] Course + - [x] Crew + - [x] Level + - [x] Mission + - [x] Missions + - [x] SelectMissionDto + +- [x] repository + - [x] CrewRepository + - [x] MatchingService + +- [x] service + - [x] InitializeService + - [x] InquiryService + - [x] MatchingService - ### Util diagram - +- [x] utils + - [x] ExceptionMessage + - [x] Validate - ### View diagram +- [x] view + - [x] InputView + - [x] OutputView + --- ## โœ…๊ธฐ๋Šฅ ๋ชฉ๋ก checkList @@ -52,10 +80,6 @@ - [x] ์ดˆ๊ธฐํ™” ๋˜์—ˆ๋‹ค๋Š” ๋‚ด์šฉ์„ ์ถœ๋ ฅํ•œ๋‹ค. - [ ] ์ข…๋ฃŒ(Q)๋ฅผ ์ž…๋ ฅํ•˜๋ฉด ๊ฒŒ์ž„์ด ์ข…๋ฃŒ๋œ๋‹ค. -## โœ…์ถ”๊ฐ€ํ•  ๊ฐ์ฒด - -1. - ## โœ…์˜ˆ์™ธ ์ฒ˜๋ฆฌ - ์‚ฌ์šฉ์ž๊ฐ€ ์ž˜๋ชป๋œ ๊ฐ’์„ ์ž…๋ ฅํ•  ๊ฒฝ์šฐ IllegalArgumentException๋ฅผ ๋ฐœ์ƒ์‹œํ‚ค๊ณ , From 4aa1e3a8efbe1b9f9ef2f5dc8c5ad05606446cc9 Mon Sep 17 00:00:00 2001 From: junyong Date: Sun, 4 Dec 2022 14:06:51 +0900 Subject: [PATCH 39/43] =?UTF-8?q?style:=20=EC=9D=B4=EB=A6=84=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 --- .../{InqueryController.java => InquiryController.java} | 8 ++++---- src/main/java/pairmatching/controller/MainController.java | 4 ++-- .../service/{InqueryService.java => InquiryService.java} | 2 +- 3 files changed, 7 insertions(+), 7 deletions(-) rename src/main/java/pairmatching/controller/{InqueryController.java => InquiryController.java} (76%) rename src/main/java/pairmatching/service/{InqueryService.java => InquiryService.java} (97%) diff --git a/src/main/java/pairmatching/controller/InqueryController.java b/src/main/java/pairmatching/controller/InquiryController.java similarity index 76% rename from src/main/java/pairmatching/controller/InqueryController.java rename to src/main/java/pairmatching/controller/InquiryController.java index 5b112af09..31101fb96 100644 --- a/src/main/java/pairmatching/controller/InqueryController.java +++ b/src/main/java/pairmatching/controller/InquiryController.java @@ -1,14 +1,14 @@ package pairmatching.controller; -import pairmatching.service.InqueryService; +import pairmatching.service.InquiryService; import static pairmatching.controller.MatchingController.missions; import static pairmatching.view.InputView.getInqueryInfo; import static pairmatching.view.OutputView.printMatchPair; import static pairmatching.view.OutputView.printMissionInfo; -public class InqueryController { - private static final InqueryService inqueryService = new InqueryService(); +public class InquiryController { + private static final InquiryService inquiryService = new InquiryService(); public void run() { boolean flag = false; @@ -24,6 +24,6 @@ public void run() { } public void printMatchInfo(String input) { - printMatchPair(inqueryService.getMatchInfo(input)); + printMatchPair(inquiryService.getMatchInfo(input)); } } diff --git a/src/main/java/pairmatching/controller/MainController.java b/src/main/java/pairmatching/controller/MainController.java index b1a08d467..6c0d0c462 100644 --- a/src/main/java/pairmatching/controller/MainController.java +++ b/src/main/java/pairmatching/controller/MainController.java @@ -6,7 +6,7 @@ public class MainController { public static final Validate validate = new Validate(); public static final MatchingController matchingController = new MatchingController(); - public static final InqueryController inqueryController = new InqueryController(); + public static final InquiryController inquiryController = new InquiryController(); public static final InitializeController initializeController = new InitializeController(); public static final InputView inputView = new InputView(); @@ -30,7 +30,7 @@ private void readSelect(String input) { matchingController.run(); } if (input.equals("2")) { - inqueryController.run(); + inquiryController.run(); } if (input.equals("3")) { initializeController.run(); diff --git a/src/main/java/pairmatching/service/InqueryService.java b/src/main/java/pairmatching/service/InquiryService.java similarity index 97% rename from src/main/java/pairmatching/service/InqueryService.java rename to src/main/java/pairmatching/service/InquiryService.java index 16a6c1c6d..2e2315caa 100644 --- a/src/main/java/pairmatching/service/InqueryService.java +++ b/src/main/java/pairmatching/service/InquiryService.java @@ -9,7 +9,7 @@ import static pairmatching.controller.MatchingController.missions; import static pairmatching.utils.ExceptionMessage.ERROR_NOT_EXIST_MATCH; import static pairmatching.utils.Validate.checkInfoCount; -public class InqueryService { +public class InquiryService { private static final MatchInfoRepository matchingInfoRepository = MatchInfoRepository.getInstance(); public static final MatchingService matchService = new MatchingService(); From f92b68fc87e1de1dd9c8b9475d1d8024c28df26f Mon Sep 17 00:00:00 2001 From: junyong Date: Sun, 4 Dec 2022 21:00:49 +0900 Subject: [PATCH 40/43] =?UTF-8?q?style:=20=EC=9D=B4=EB=A6=84=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/pairmatching/controller/InquiryController.java | 4 ++-- src/main/java/pairmatching/view/InputView.java | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/main/java/pairmatching/controller/InquiryController.java b/src/main/java/pairmatching/controller/InquiryController.java index 31101fb96..ea637d332 100644 --- a/src/main/java/pairmatching/controller/InquiryController.java +++ b/src/main/java/pairmatching/controller/InquiryController.java @@ -3,7 +3,7 @@ import pairmatching.service.InquiryService; import static pairmatching.controller.MatchingController.missions; -import static pairmatching.view.InputView.getInqueryInfo; +import static pairmatching.view.InputView.getInquiryInfo; import static pairmatching.view.OutputView.printMatchPair; import static pairmatching.view.OutputView.printMissionInfo; @@ -15,7 +15,7 @@ public void run() { while (!flag) { try { printMissionInfo(missions); - printMatchInfo(getInqueryInfo()); + printMatchInfo(getInquiryInfo()); flag = true; } catch (IllegalArgumentException e) { System.out.println(e.getMessage()); diff --git a/src/main/java/pairmatching/view/InputView.java b/src/main/java/pairmatching/view/InputView.java index 99cbc463e..5d65fd594 100644 --- a/src/main/java/pairmatching/view/InputView.java +++ b/src/main/java/pairmatching/view/InputView.java @@ -24,7 +24,7 @@ public static String getConfirmRematch() { return Console.readLine(); } - public static String getInqueryInfo() { + public static String getInquiryInfo() { System.out.println("๊ณผ์ •, ๋ ˆ๋ฒจ, ๋ฏธ์…˜์„ ์„ ํƒํ•˜์„ธ์š”.\n" + "ex) ๋ฐฑ์—”๋“œ, ๋ ˆ๋ฒจ1, ์ž๋™์ฐจ๊ฒฝ์ฃผ"); return Console.readLine(); From ff179ad47cd862373a0640107b91b588be6f02a6 Mon Sep 17 00:00:00 2001 From: junyong Date: Sun, 4 Dec 2022 22:28:36 +0900 Subject: [PATCH 41/43] =?UTF-8?q?style:=20=EB=B6=88=ED=95=84=EC=9A=94?= =?UTF-8?q?=ED=95=9C=20=ED=81=B4=EB=9E=98=EC=8A=A4,=20import=20=EC=82=AD?= =?UTF-8?q?=EC=A0=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/pairmatching/Application.java | 2 -- .../pairmatching/domain/SelectMissionDto.java | 25 ------------------- 2 files changed, 27 deletions(-) delete mode 100644 src/main/java/pairmatching/domain/SelectMissionDto.java diff --git a/src/main/java/pairmatching/Application.java b/src/main/java/pairmatching/Application.java index 73fa9ad67..d688faefa 100644 --- a/src/main/java/pairmatching/Application.java +++ b/src/main/java/pairmatching/Application.java @@ -1,8 +1,6 @@ package pairmatching; import pairmatching.controller.MainController; -import pairmatching.view.InputView; -import pairmatching.view.OutputView; import static pairmatching.repository.CrewRepository.initCrewInfo; diff --git a/src/main/java/pairmatching/domain/SelectMissionDto.java b/src/main/java/pairmatching/domain/SelectMissionDto.java deleted file mode 100644 index b434e0a02..000000000 --- a/src/main/java/pairmatching/domain/SelectMissionDto.java +++ /dev/null @@ -1,25 +0,0 @@ -package pairmatching.domain; - -public class SelectMissionDto { - Course course; - Level level; - String mission; - - public SelectMissionDto(Course course, Level level, String mission) { - this.course = course; - this.level = level; - this.mission = mission; - } - - public Course getCourse() { - return course; - } - - public Level getLevel() { - return level; - } - - public String getMission() { - return mission; - } -} From c95ca55163ec85041f844cef25a12af3593448c0 Mon Sep 17 00:00:00 2001 From: junyong Date: Sun, 4 Dec 2022 22:33:05 +0900 Subject: [PATCH 42/43] =?UTF-8?q?docs:=20=EC=B6=94=EA=B0=80=20=EC=84=A4?= =?UTF-8?q?=EB=AA=85=20=EC=97=85=EB=8D=B0=EC=9D=B4=ED=8A=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/README.md | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/docs/README.md b/docs/README.md index 048097d1f..b9ca31eb1 100644 --- a/docs/README.md +++ b/docs/README.md @@ -26,38 +26,38 @@ - ### Main diagram - [x] Application - ์‹œ์ž‘ -- [x] controller - - [x] MainController +- [x] controller - View ์™€ Service ์— ์œ„์น˜ํ•œ ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•˜์—ฌ ์ตœ์ข…์ ์ธ ๋‹จ์ผ ๊ธฐ๋Šฅ์˜ ๋ฉ”์„œ๋“œ๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. + - [x] MainController - ์„ธ ๊ฐœ์˜ ์ปจํŠธ๋กค๋Ÿฌ์™€ ์—ฐ๊ฒฐ(์ค‘์•™ ์ œ์–ด) - [x] MatchingController - ํŽ˜์–ด ๋งค์นญ - [x] InquiryController - ํŽ˜์–ด ์กฐํšŒ - [x] InitializeController - ํŽ˜์–ด ์ดˆ๊ธฐํ™” -- [x] domain - - [x] Course - - [x] Crew - - [x] Level - - [x] Mission - - [x] Missions - - [x] SelectMissionDto +- [x] domain(model) - ํ•ด๋‹น ํ”„๋กœ๊ทธ๋žจ์—์„œ ์‚ฌ์šฉ๋˜๋Š” ๊ฐ์ฒด ํด๋ž˜์Šค ํŒŒ์ผ์ด ๋‹ด๊ฒจ์žˆ์Šต๋‹ˆ๋‹ค. + - [x] Course - ๊ณผ์ •(๋ฐฑ์—”๋“œ, ํ”„๋ก ํŠธ์—”๋“œ) + - [x] Crew - ํฌ๋ฃจ ์ด๋ฆ„ + - [x] Level - ๋ ˆ๋ฒจ๋ณ„ ๋ฏธ์…˜๋“ค + - [x] Mission - ๊ฐ๊ฐ์˜ ๋ฏธ์…˜๋“ค + - [x] Missions - ๊ฐ๊ฐ์˜ ๋ฏธ์…˜๋“ค์„ ํŠธ๋ฆฌ๋งต์œผ๋กœ ์„ ์–ธํ•œ๋’ค, ๋ ˆ๋ฒจ๋ณ„๋กœ ArrayList ๋กœ ๋ฌถ์Œ -- [x] repository +- [x] repository - Entity(domain ์— ์žˆ๋Š” ํด๋ž˜์Šค)์— ์˜ํ•ด ์ƒ์„ฑ๋œ DB์— ์ ‘๊ทผํ•˜๋Š” ๋ฉ”์„œ๋“œ ๋“ค์„ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•œ ์ธํ„ฐํŽ˜์ด์Šค์ž…๋‹ˆ๋‹ค. - [x] CrewRepository - [x] MatchingService -- [x] service +- [x] service - Repository ์™€ Controller ์‚ฌ์ด์—์„œ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง๋“ค์ด ์œ„์น˜ํ•˜์—ฌ ์žˆ์Šต๋‹ˆ๋‹ค. +- Controller ๋กœ๋ถ€ํ„ฐ ์•Œ๋งž๋Š” ์ •๋ณด๋ฅผ ๊ฐ€๊ณตํ•ฉ๋‹ˆ๋‹ค. ์ฆ‰, ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์„ ์ˆ˜ํ–‰ํ•˜๋Š” ์—ญํ• ์ž…๋‹ˆ๋‹ค. - [x] InitializeService - [x] InquiryService - [x] MatchingService - ### Util diagram -- [x] utils +- [x] utils - ์•ž์—์„œ ๋งํ•œ ์ฝ”๋“œ ์™ธ์˜ ์ž…๋ ฅ ๊ฐ’์ด ์กฐ๊ฑด์— ๋งž๋Š” ๊ฐ’์ธ์ง€ ์ฒดํฌํ•˜๋Š” ๋กœ์ง์ด ๋‹ด๊ฒจ์žˆ์Šต๋‹ˆ๋‹ค. - [x] ExceptionMessage - [x] Validate - ### View diagram -- [x] view +- [x] view - ์‚ฌ์šฉ์ž ์ž…์ถœ๋ ฅ์„ ํ•ด์ฃผ๋Š” ๋กœ์ง์ด ๋‹ด๊ฒจ์žˆ์Šต๋‹ˆ๋‹ค. - [x] InputView - [x] OutputView From 10af2aaea5169393d8152ba066bd3c8a6a241bcd Mon Sep 17 00:00:00 2001 From: junyong Date: Sat, 10 Dec 2022 00:48:39 +0900 Subject: [PATCH 43/43] =?UTF-8?q?docs:=20=EA=B8=B0=EB=8A=A5=20=EB=AA=A9?= =?UTF-8?q?=EB=A1=9D=20=EC=97=85=EB=8D=B0=EC=9D=B4=ED=8A=B8(=EC=B5=9C?= =?UTF-8?q?=EC=A2=85)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/README.md b/docs/README.md index b9ca31eb1..6ffeea682 100644 --- a/docs/README.md +++ b/docs/README.md @@ -78,7 +78,7 @@ - [x] 4.ํŽ˜์–ด ์ดˆ๊ธฐํ™” ๊ธฐ๋Šฅ ๊ตฌํ˜„ - [x] ํŽ˜์–ด ์ดˆ๊ธฐํ™” ์ˆซ์ž๋ฅผ ์ž…๋ ฅํ•˜๋ฉด ํŽ˜์–ด ๋ฏธ์…˜์— ๋Œ€ํ•œ ์ •๋ณด๊ฐ€ ์ดˆ๊ธฐํ™” ๋œ๋‹ค. - [x] ์ดˆ๊ธฐํ™” ๋˜์—ˆ๋‹ค๋Š” ๋‚ด์šฉ์„ ์ถœ๋ ฅํ•œ๋‹ค. -- [ ] ์ข…๋ฃŒ(Q)๋ฅผ ์ž…๋ ฅํ•˜๋ฉด ๊ฒŒ์ž„์ด ์ข…๋ฃŒ๋œ๋‹ค. +- [x] ์ข…๋ฃŒ(Q)๋ฅผ ์ž…๋ ฅํ•˜๋ฉด ๊ฒŒ์ž„์ด ์ข…๋ฃŒ๋œ๋‹ค. ## โœ…์˜ˆ์™ธ ์ฒ˜๋ฆฌ