From 419581d0d9bfb97001df3bc348699012049c85e4 Mon Sep 17 00:00:00 2001 From: DH Lim Date: Thu, 10 Dec 2020 12:33:42 +0900 Subject: [PATCH 01/20] =?UTF-8?q?docs(README):=20=EA=B5=AC=ED=98=84?= =?UTF-8?q?=ED=95=A0=20=EA=B8=B0=EB=8A=A5=20=EB=AA=A9=EB=A1=9D=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 --- docs/README.md | 57 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 57 insertions(+) create mode 100644 docs/README.md diff --git a/docs/README.md b/docs/README.md new file mode 100644 index 000000000..2dcdc4b95 --- /dev/null +++ b/docs/README.md @@ -0,0 +1,57 @@ +# ๐Ÿš€ ๊ตฌํ˜„ํ•  ๊ธฐ๋Šฅ ๋ชฉ๋ก + +## ์ž…๋ ฅ +- ๋ฉ”๋‰ด๋‚˜ ๊ธฐ๋Šฅ ์„ ํƒ์‹œ ์ž…๋ ฅ๊ฐ’์ด ๋ฒ”์œ„ ์•ˆ์˜ ์ž…๋ ฅ์ธ์ง€ ๊ฒ€์ฆํ•œ๋‹ค. +### ์ž…๋ ฅ ์˜ˆ์™ธ ์ƒํ™ฉ +- ๋ฉ”์ธ๊ณผ ๊ด€๋ฆฌ ํ™”๋ฉด์—์„œ ๋ณด์—ฌ์ฃผ๋Š” ๊ธฐ๋Šฅ์ด ์•„๋‹Œ๊ฒฝ์šฐ +- ๋“ฑ๋กํ•  ์ง€ํ•˜์ฒ  ์—ญ ๊ด€๋ จ + - ์ด๋ฆ„์˜ ๊ธธ์ด๊ฐ€ 2์ž ๋ฏธ๋งŒ์ธ ๊ฒฝ์šฐ + - ์ด๋ฆ„์ด '์—ญ'์œผ๋กœ ๋๋‚˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ + - ์ด๋ฆ„์— ๊ณต๋ฐฑ์ด ๋“ค์–ด๊ฐ€๋Š” ๊ฒฝ์šฐ + - ์ด๋ฆ„์ด ์ˆซ์ž์™€ ํ•œ๊ธ€์ด ์•„๋‹Œ ๊ฒฝ์šฐ + - ์ค‘๋ณต๋œ ์ด๋ฆ„์ธ ๊ฒฝ์šฐ +- ๋“ฑ๋กํ•  ๋…ธ์„  ๊ด€๋ จ + - ์ด๋ฆ„์˜ ๊ธธ์ด๊ฐ€ 2์ž ๋ฏธ๋งŒ์ธ ๊ฒฝ์šฐ + - ์ƒํ–‰ ์ข…์ ์—ญ๊ณผ ํ•˜ํ–‰ ์ข…์ ์—ญ์˜ ์ด๋ฆ„์ด ๊ฐ™์€ ๊ฒฝ์šฐ + +
+ +## ์ถœ๋ ฅ +- ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜ ํ™”๋ฉด ๋ ˆ์ด์•„์›ƒ ๊ตฌ์„ฑ + 1. ์ฃผ ๋ฉ”๋‰ด ํ™”๋ฉด + 2. ๊ธฐ๋Šฅ ์„ ํƒ ํ™”๋ฉด + - ์„ธ๋ถ€ ๊ธฐ๋Šฅ ํฌํ•จ + 3. ์ž…๋ ฅ ์•ˆ๋‚ด ํ™”๋ฉด + 4. ์ž…๋ ฅ ๊ฒฐ๊ณผ ์ถœ๋ ฅ +- ์ž…๋ ฅ ์œ ๋„ ๋ฉ”์‹œ์ง€ ์ถœ๋ ฅ +- ์ž…๋ ฅ ๋ฐ˜์‘ ๋ฉ”์‹œ์ง€ ์ถœ๋ ฅ + - ๊ธฐ๋Œ€ ์ถœ๋ ฅ ๊ฒฐ๊ณผ์‹œ '[INFO] ...' + - ์—๋Ÿฌ์‹œ '[ERROR] ...' + +
+ +## ์ฃผ์š” ๋กœ์ง +### ์ง€ํ•˜์ฒ  ์—ญ ๊ด€๋ จ +- ์—ญ ๋“ฑ๋ก +- ์—ญ ์‚ญ์ œ +- ์—ญ ์กฐํšŒ + +### ์ง€ํ•˜์ฒ  ๋…ธ์„  ๊ด€๋ จ +- ๋…ธ์„  ๋“ฑ๋ก +- ๋…ธ์„  ์‚ญ์ œ +- ๋…ธ์„  ์กฐํšŒ + +### ๊ตฌ๊ฐ„ ๊ด€๋ จ +- ๊ตฌ๊ฐ„ ์ถ”๊ฐ€(๋…ธ์„ ์— ์—ญ์„ ์ถ”๊ฐ€) +- ๊ตฌ๊ฐ„ ์‚ญ์ œ +- ๊ตฌ๊ฐ„ ์กฐํšŒ + +
+ +## ์ดˆ๊ธฐ ์„ค์ • +- ์—ญ ๋“ฑ๋ก + - ๊ต๋Œ€์—ญ, ๊ฐ•๋‚จ์—ญ, ์—ญ์‚ผ์—ญ, ๋‚จ๋ถ€ํ„ฐ๋ฏธ๋„์—ญ, ์–‘์žฌ์—ญ, ์–‘์žฌ์‹œ๋ฏผ์˜์ˆฒ์—ญ, ๋งค๋ด‰์—ญ +- ๋…ธ์„  ๋“ฑ๋ก(์™ผ์ชฝ ๋์ด ์ƒํ–‰ ์ข…์ ) + - 2ํ˜ธ์„ : ๊ต๋Œ€์—ญ - ๊ฐ•๋‚จ์—ญ - ์—ญ์‚ผ์—ญ + - 3ํ˜ธ์„ : ๊ต๋Œ€์—ญ - ๋‚จ๋ถ€ํ„ฐ๋ฏธ๋„์—ญ - ์–‘์žฌ์—ญ - ๋งค๋ด‰์—ญ + - ์‹ ๋ถ„๋‹น์„ : ๊ฐ•๋‚จ์—ญ - ์–‘์žฌ์—ญ - ์–‘์žฌ์‹œ๋ฏผ์˜์ˆฒ์—ญ \ No newline at end of file From 5e028b796e10b0722e09e88b18605363920b7ad5 Mon Sep 17 00:00:00 2001 From: DH Lim Date: Thu, 10 Dec 2020 23:45:15 +0900 Subject: [PATCH 02/20] =?UTF-8?q?docs(README):=20=EC=A3=BC=EC=9A=94=20?= =?UTF-8?q?=EB=A1=9C=EC=A7=81=20=EC=84=B8=EB=B6=80=20=EA=B5=AC=ED=98=84?= =?UTF-8?q?=ED=95=A0=20=EA=B8=B0=EB=8A=A5=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/README.md | 50 +++++++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 45 insertions(+), 5 deletions(-) diff --git a/docs/README.md b/docs/README.md index 2dcdc4b95..70842ae7e 100644 --- a/docs/README.md +++ b/docs/README.md @@ -12,7 +12,12 @@ - ์ค‘๋ณต๋œ ์ด๋ฆ„์ธ ๊ฒฝ์šฐ - ๋“ฑ๋กํ•  ๋…ธ์„  ๊ด€๋ จ - ์ด๋ฆ„์˜ ๊ธธ์ด๊ฐ€ 2์ž ๋ฏธ๋งŒ์ธ ๊ฒฝ์šฐ + - ์ด๋ฆ„์ด '์„ '์œผ๋กœ ๋๋‚˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ + - ์ด๋ฆ„์ด ์ˆซ์ž์™€ ํ•œ๊ธ€์ด ์•„๋‹Œ ๊ฒฝ์šฐ - ์ƒํ–‰ ์ข…์ ์—ญ๊ณผ ํ•˜ํ–‰ ์ข…์ ์—ญ์˜ ์ด๋ฆ„์ด ๊ฐ™์€ ๊ฒฝ์šฐ +- ๋“ฑ๋กํ•  ๊ตฌ๊ฐ„ ๊ด€๋ จ + - ์„ ํƒํ•œ ๋…ธ์„ ์ด ๋“ฑ๋ก๋˜์ง€ ์•Š์€ ๋…ธ์„ ์ธ ๊ฒฝ์šฐ + - ์—ญ์ด๋ฆ„์ด ๋“ฑ๋ก๋˜์ง€ ์•Š์€ ๊ฒฝ์šฐ
@@ -31,20 +36,55 @@
## ์ฃผ์š” ๋กœ์ง -### ์ง€ํ•˜์ฒ  ์—ญ ๊ด€๋ จ +### ๋ฉ”์ธํ™”๋ฉด +- ์„ ํƒํ•œ ๋ฉ”๋‰ด๋กœ ์ด๋™ ๋˜๋Š” ๊ธฐ๋Šฅ์„ ์‹คํ–‰ํ•œ๋‹ค. + - ์—ญ ๊ด€๋ฆฌ, ๋…ธ์„  ๊ด€๋ฆฌ, ๊ตฌ๊ฐ„ ๊ด€๋ฆฌ -> ์„ธ๋ถ€ ๊ธฐ๋Šฅ ์„ ํƒ ์•ˆ๋‚ด + - ์ง€ํ•˜์ฒ  ๋…ธ์„ ๋„ ์ถœ๋ ฅ -> ๊ธฐ๋Šฅ ์‹คํ–‰ + - ์ข…๋ฃŒ -> ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ข…๋ฃŒ + +### ์—ญ ๊ด€๋ฆฌ ๊ด€๋ จ - ์—ญ ๋“ฑ๋ก + - ์ž…๋ ฅ๋ฐ›์€ ์—ญ์„ ๊ฒ€์ฆ + - ๊ฒ€์ฆ ๊ฒฐ๊ณผ์— ๋”ฐ๋ผ ์ €์žฅ์†Œ์— ์—ญ ์ €์žฅ ํ›„ [INFO]๋˜๋Š” [ERROR] ๋ฉ”์‹œ์ง€ ์ถœ๋ ฅ - ์—ญ ์‚ญ์ œ + - ์ž…๋ ฅ๋ฐ›์€ ์—ญ์„ ๊ฒ€์ฆ + - ๊ฒ€์ฆ ๊ฒฐ๊ณผ์— ๋”ฐ๋ผ ์ €์žฅ์†Œ์—์„œ ์‚ญ์ œ ํ›„ [INFO]๋˜๋Š” [ERROR] ๋ฉ”์‹œ์ง€ ์ถœ๋ ฅ - ์—ญ ์กฐํšŒ + - ์ €์žฅ์†Œ ๋ชจ๋“  ์—ญ์„ ํ˜ธ์ถœํ•˜์—ฌ ์ถœ๋ ฅ +- ๋Œ์•„๊ฐ€๊ธฐ + - ๋ฉ”์ธ ํ™”๋ฉด ํ˜ธ์ถœ -### ์ง€ํ•˜์ฒ  ๋…ธ์„  ๊ด€๋ จ +### ๋…ธ์„  ๊ด€๋ฆฌ ๊ด€๋ จ - ๋…ธ์„  ๋“ฑ๋ก + 1. ๋“ฑ๋กํ•  ๋…ธ์„  ์ด๋ฆ„ ์ž…๋ ฅ ๊ฒ€์ฆ + 2. ๋…ธ์„ ์˜ ์ƒํ–‰ ์ข…์ ์—ญ ์ด๋ฆ„ ์ž…๋ ฅ ๊ฒ€์ฆ + 3. ๋…ธ์„ ์˜ ํ•˜ํ–‰ ์ข…์ ์—ญ ์ด๋ฆ„ ์ž…๋ ฅ ๊ฒ€์ฆ + 4. ๊ฒ€์ฆ ํ›„ ๊ฒฐ๊ณผ์— ๋”ฐ๋ผ ์ €์žฅ์†Œ์— ์ €์žฅ ํ›„ [INFO]๋˜๋Š” [ERROR] ๋ฉ”์‹œ์ง€ ์ถœ๋ ฅ - ๋…ธ์„  ์‚ญ์ œ + - ์ž…๋ ฅ๋ฐ›์€ ๋…ธ์„  ๊ฒ€์ฆ + - ๊ฒ€์ฆ ๊ฒฐ๊ณผ์— ๋”ฐ๋ผ ์ €์žฅ์†Œ์—์„œ ์‚ญ์ œ ํ›„ [INFO]๋˜๋Š” [ERROR] ๋ฉ”์‹œ์ง€ ์ถœ๋ ฅ - ๋…ธ์„  ์กฐํšŒ + - ์ €์žฅ์†Œ ๋ชจ๋“  ๋…ธ์„  ํ˜ธ์ถœํ•˜์—ฌ ์ถœ๋ ฅ +- ๋Œ์•„๊ฐ€๊ธฐ + - ๋ฉ”์ธ ํ™”๋ฉด ํ˜ธ์ถœ -### ๊ตฌ๊ฐ„ ๊ด€๋ จ -- ๊ตฌ๊ฐ„ ์ถ”๊ฐ€(๋…ธ์„ ์— ์—ญ์„ ์ถ”๊ฐ€) +### ๊ตฌ๊ฐ„ ๊ด€๋ฆฌ ๊ด€๋ จ +- ๊ตฌ๊ฐ„ ๋“ฑ๋ก(๋…ธ์„ ์— ์—ญ์„ ์ถ”๊ฐ€) + - ๊ตฌ๊ฐ„ ๋“ฑ๋กํ•  ๋…ธ์„  ๊ฒ€์ฆ + - ์—ญ ์ด๋ฆ„ ๊ฒ€์ฆ + - ์ˆœ์„œ ๊ฒ€์ฆ + - ๊ฒ€์ฆ ํ›„ ๊ฒฐ๊ณผ์— ๋”ฐ๋ผ ์ €์žฅ์†Œ์— ์ €์žฅ ๋ฐ ์—ญ ์žฌ๋ฐฐ์—ด ํ›„ [INFO]๋˜๋Š” [ERROR] ๋ฉ”์‹œ์ง€ ์ถœ๋ ฅ - ๊ตฌ๊ฐ„ ์‚ญ์ œ -- ๊ตฌ๊ฐ„ ์กฐํšŒ + - ์‚ญ์ œํ•  ๊ตฌ๊ฐ„ ๋…ธ์„  ๊ฒ€์ฆ + - ์—ญ ์ด๋ฆ„ ๊ฒ€์ฆ + - ๊ฒ€์ฆ ํ›„ ๊ฒฐ๊ณผ์— ๋”ฐ๋ผ ์ €์žฅ์†Œ์—์„œ ์‚ญ์ œ ๋ฐ ์—ญ ์žฌ๋ฐฐ์—ด ํ›„ [INFO]๋˜๋Š” [ERROR] ๋ฉ”์‹œ์ง€ ์ถœ๋ ฅ +- ๋Œ์•„๊ฐ€๊ธฐ + - ๋ฉ”์ธ ํ™”๋ฉด ํ˜ธ์ถœ + +### ์ง€ํ•˜์ฒ  ๋…ธ์„ ๋„ ์ถœ๋ ฅ ๊ด€๋ จ +- ๋…ธ์„ ๋„๋Š” ์ด๋ฆ„ ์ˆœ์œผ๋กœ ์ถœ๋ ฅํ•œ๋‹ค +- ๊ฐ ๋…ธ์„ ๋„๋Š” ๋…ธ์„ ์˜ ์ด๋ฆ„๊ณผ ๋“ฑ๋ก๋œ ์—ญ์„ ํฌํ•จํ•œ๋‹ค +- ๋“ฑ๋ก๋œ ์—ญ์€ ์ˆœ์„œ๋Œ€๋กœ ์ถœ๋ ฅํ•œ๋‹ค
From 11cf5782b9c8def9cd7fecbe6b5d0e18900df87f Mon Sep 17 00:00:00 2001 From: DH Lim Date: Mon, 14 Dec 2020 12:23:40 +0900 Subject: [PATCH 03/20] =?UTF-8?q?feat(InputView):=20=EC=82=AC=EC=9A=A9?= =?UTF-8?q?=EC=9E=90=20=EB=8D=B0=EC=9D=B4=ED=84=B0=20=EC=9E=85=EB=A0=A5=20?= =?UTF-8?q?=EA=B8=B0=EB=8A=A5=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/subway/view/InputView.java | 36 ++++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 src/main/java/subway/view/InputView.java diff --git a/src/main/java/subway/view/InputView.java b/src/main/java/subway/view/InputView.java new file mode 100644 index 000000000..ef16215ac --- /dev/null +++ b/src/main/java/subway/view/InputView.java @@ -0,0 +1,36 @@ +package subway.view; + +import java.util.Scanner; + +public class InputView { + private String inputData; + + + public String getInputData() { + return inputData; + } + +// public void run(Scanner scanner) { +// OutputView.guideChooseFunction(); +// scanData(scanner); +// } + + public void scanData(Scanner scanner) { + inputData = scanner.nextLine(); + System.out.println(); + + /* + * ๊ตฌ๊ฐ„ ์žฌ์ •์˜ ํ• ๊ฒƒ. ์—ญ๊ณผ ์—ญ์‚ฌ์ด๋ฅผ ๊ตฌ๊ฐ„. ๊ตฌ๊ฐ„์ด ๋ชจ์—ฌ์„œ ๋…ธ์„ . + * + * ์—๋Ÿฌ์ฝ”๋“œ ๋ฐ›์œผ๋ฉด ๋‹ค์‹œ ์‹คํ–‰ + * + * ํ™”๋ฉด๋‹จ ๊ตฌ์„ฑ + * ๋ฉ”์ธํ™”๋ฉด stack 1 + * ๊ธฐ๋Šฅ์„ ํƒ stack 2 + * + * */ + } + + + +} From 43b5b9c8ebb0d9bc2c88add9244dfcffaa424e54 Mon Sep 17 00:00:00 2001 From: DH Lim Date: Mon, 14 Dec 2020 12:25:16 +0900 Subject: [PATCH 04/20] =?UTF-8?q?feat(OutputView):=20=EC=9E=85=EB=A0=A5?= =?UTF-8?q?=EC=95=88=EB=82=B4,=20=ED=99=94=EB=A9=B4=EA=B5=AC=EC=84=B1,=20?= =?UTF-8?q?=EC=A1=B0=ED=9A=8C=20=EC=B6=9C=EB=A0=A5=20=EA=B8=B0=EB=8A=A5=20?= =?UTF-8?q?=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/subway/view/OutputView.java | 165 ++++++++++++++++++++++ 1 file changed, 165 insertions(+) create mode 100644 src/main/java/subway/view/OutputView.java diff --git a/src/main/java/subway/view/OutputView.java b/src/main/java/subway/view/OutputView.java new file mode 100644 index 000000000..eaf8eb12c --- /dev/null +++ b/src/main/java/subway/view/OutputView.java @@ -0,0 +1,165 @@ +package subway.view; + +import subway.domain.Line; +import subway.domain.LineRepository; +import subway.domain.Station; +import subway.domain.StationRepository; + +public class OutputView { + private static final String NEXT_LINE = "\n"; + private static final String GUIDE_MESSAGE_START= "##"; + private static final String GUIDE_MESSAGE_END_CHOOSE_FUNCTION = "์›ํ•˜๋Š” ๊ธฐ๋Šฅ์„ ์„ ํƒํ•˜์„ธ์š”."; + + private static final String GUIDE_MESSAGE_END_ADD_STATION = "๋“ฑ๋กํ•  ์—ญ ์ด๋ฆ„์„ ์ž…๋ ฅํ•˜์„ธ์š”."; + private static final String GUIDE_MESSAGE_END_DELETE_STATION = "์‚ญ์ œํ•  ์—ญ ์ด๋ฆ„์„ ์ž…๋ ฅํ•˜์„ธ์š”."; + + private static final String GUIDE_MESSAGE_END_ADD_LINE_NAME = "๋“ฑ๋กํ•  ๋…ธ์„  ์ด๋ฆ„์„ ์ž…๋ ฅํ•˜์„ธ์š”."; + private static final String GUIDE_MESSAGE_END_ADD_LINE_UPWARD_TERMINAL = "๋“ฑ๋กํ•  ๋…ธ์„ ์˜ ์ƒํ–‰ ์ข…์ ์—ญ ์ด๋ฆ„์„ ์ž…๋ ฅํ•˜์„ธ์š”."; + private static final String GUIDE_MESSAGE_END_ADD_LINE_DOWNWARD_TERMINAL = "๋‘ฅ๋กํ•  ๋…ธ์„ ์˜ ํ•˜ํ–‰ ์ข…์ ์—ญ ์ด๋ฆ„์„ ์ž…๋ ฅํ•˜์„ธ์š”."; + private static final String GUIDE_MESSAGE_END_DELETE_LINE = "์‚ญ์ œํ•  ๋…ธ์„  ์ด๋ฆ„์„ ์ž…๋ ฅํ•˜์„ธ์š”."; + + private static final String GUIDE_MESSAGE_END_ADD_ROUTE_LINE = "๋…ธ์„ ์„ ์ž…๋ ฅํ•˜์„ธ์š”."; + private static final String GUIDE_MESSAGE_END_ADD_ROUTE_STATION = "์—ญ ์ด๋ฆ„์„ ์ž…๋ ฅํ•˜์„ธ์š”."; + private static final String GUIDE_MESSAGE_END_ADD_ROUTE_ORDER = "์ˆœ์„œ๋ฅผ ์ž…๋ ฅํ•˜์„ธ์š”."; + private static final String GUIDE_MESSAGE_END_DELETE_ROUTE_LINE = "์‚ญ์ œํ•  ๊ตฌ๊ฐ„์˜ ๋…ธ์„ ์„ ์ž…๋ ฅํ•˜์„ธ์š”."; + private static final String GUIDE_MESSAGE_END_DELETE_ROUTE_STATION = "์‚ญ์ œํ•  ๊ตฌ๊ฐ„์˜ ์—ญ์„ ์ž…๋ ฅํ•˜์„ธ์š”."; + // + private static final String INFO_MESSAGE_START = "[INFO]"; + private static final String INFO_MESSAGE_END_ADD_STATION = "์ง€ํ•˜์ฒ  ์—ญ์ด ๋“ฑ๋ก๋˜์—ˆ์Šต๋‹ˆ๋‹ค."; + private static final String INFO_MESSAGE_END_DELETE_STATION = "์ง€ํ•˜์ฒ  ์—ญ์ด ์‚ญ์ œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค."; + + private static final String INFO_MESSAGE_END_ADD_LINE = "์ง€ํ•˜์ฒ  ๋…ธ์„ ์ด ๋“ฑ๋ก๋˜์—ˆ์Šต๋‹ˆ๋‹ค."; + private static final String INFO_MESSAGE_END_DELETE_LINE = "์ง€ํ•˜์ฒ  ๋…ธ์„ ์ด ์‚ญ์ œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค."; + + private static final String INFO_MESSAGE_END_ADD_ROUTE = "๊ตฌ๊ฐ„์ด ๋“ฑ๋ก๋˜์—ˆ์Šต๋‹ˆ๋‹ค."; + private static final String INFO_MESSAGE_END_DELETE_ROUTE = "๊ตฌ๊ฐ„์ด ์‚ญ์ œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค."; + + + private static final String ERROR_MESSAGE_START = "[ERROR]"; + private static final String ERROR_MESSAGE_END_CHOOSE_FUNCTION = "์„ ํƒํ•  ์ˆ˜ ์—†๋Š” ๊ธฐ๋Šฅ์ž…๋‹ˆ๋‹ค."; + private static final String ERROR_MESSAGE_END_ADD_STATION_DUPLICATE = "์ด๋ฏธ ๋“ฑ๋ก๋œ ์—ญ ์ด๋ฆ„์ž…๋‹ˆ๋‹ค."; +// private static final String ERROR_MESSAGE_END_DELETE_STATION = "์ง€ํ•˜์ฒ  ์—ญ์ด ์‚ญ์ œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค."; +// +// private static final String ERROR_MESSAGE_END_ADD_LINE = "์ง€ํ•˜์ฒ  ๋…ธ์„ ์ด ๋“ฑ๋ก๋˜์—ˆ์Šต๋‹ˆ๋‹ค."; +// private static final String ERROR_MESSAGE_END_DELETE_LINE = "์ง€ํ•˜์ฒ  ๋…ธ์„ ์ด ์‚ญ์ œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค."; +// +// private static final String ERROR_MESSAGE_END_ADD_ROUTE = "๊ตฌ๊ฐ„์ด ๋“ฑ๋ก๋˜์—ˆ์Šต๋‹ˆ๋‹ค."; +// private static final String ERROR_MESSAGE_END_DELETE_ROUTE = "๊ตฌ๊ฐ„์ด ์‚ญ์ œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค."; + + + public void guideChooseFunction() { + System.out.println(String.join(" ",GUIDE_MESSAGE_START,GUIDE_MESSAGE_END_CHOOSE_FUNCTION)); + } + + public void guideAddStation() { + System.out.println(String.join(" ",GUIDE_MESSAGE_START,GUIDE_MESSAGE_END_ADD_STATION)); + } + + public void guideDeleteStation() { + System.out.println(String.join(" ",GUIDE_MESSAGE_START,GUIDE_MESSAGE_END_DELETE_STATION)); + } + + public void guideAddLineName() { + System.out.println(String.join(" ",GUIDE_MESSAGE_START,GUIDE_MESSAGE_END_ADD_LINE_NAME)); + } + + public void guideAddLineUpwardTerminal() { + System.out.println(String.join(" ",GUIDE_MESSAGE_START,GUIDE_MESSAGE_END_ADD_LINE_UPWARD_TERMINAL)); + } + + public void guideAddLineDownwardTerminal() { + System.out.println(String.join(" ",GUIDE_MESSAGE_START,GUIDE_MESSAGE_END_ADD_LINE_DOWNWARD_TERMINAL)); + } + + public void guideDeleteLine() { + System.out.println(String.join(" ",GUIDE_MESSAGE_START,GUIDE_MESSAGE_END_DELETE_LINE)); + } + + public void guideAddRouteLine() { + System.out.println(String.join(" ",GUIDE_MESSAGE_START,GUIDE_MESSAGE_END_ADD_ROUTE_LINE)); + } + + public void guideAddRouteStation() { + System.out.println(String.join(" ",GUIDE_MESSAGE_START,GUIDE_MESSAGE_END_ADD_ROUTE_STATION)); + } + + public void guideAddRouteOrder() { + System.out.println(String.join(" ",GUIDE_MESSAGE_START,GUIDE_MESSAGE_END_ADD_ROUTE_ORDER)); + } + + public void guideDeleteRouteLine() { + System.out.println(String.join(" ",GUIDE_MESSAGE_START,GUIDE_MESSAGE_END_DELETE_ROUTE_LINE)); + } + + public void guideDeleteRouteStation() { + System.out.println(String.join(" ",GUIDE_MESSAGE_START,GUIDE_MESSAGE_END_DELETE_ROUTE_STATION)); + } + + public void printStartMainError() { + System.out.println(String.join(" ",ERROR_MESSAGE_START,ERROR_MESSAGE_END_CHOOSE_FUNCTION)); + System.out.println(); + } + + public void printMainScreen() { + System.out.println("## ๋ฉ”์ธ ํ™”๋ฉด"); + System.out.println("1. ์—ญ ๊ด€๋ฆฌ"); + System.out.println("2. ๋…ธ์„  ๊ด€๋ฆฌ"); + System.out.println("3. ๊ตฌ๊ฐ„ ๊ด€๋ฆฌ"); + System.out.println("4. ์ง€ํ•˜์ฒ  ๋…ธ์„ ๋„ ์ถœ๋ ฅ"); + System.out.println("Q. ์ข…๋ฃŒ"+NEXT_LINE); + guideChooseFunction(); + } + + public void printStationManagementScreen() { + System.out.println("## ์—ญ ๊ด€๋ฆฌ ํ™”๋ฉด"); + System.out.println("1. ์—ญ ๋“ฑ๋ก"); + System.out.println("2. ์—ญ ์‚ญ์ œ"); + System.out.println("3. ์—ญ ์กฐํšŒ"); + System.out.println("B. ๋Œ์•„๊ฐ€๊ธฐ"+NEXT_LINE); + guideChooseFunction(); + } + + public void printLineManagementScreen() { + System.out.println("## ๋…ธ์„  ๊ด€๋ฆฌ ํ™”๋ฉด"); + System.out.println("1. ๋…ธ์„  ๋“ฑ๋ก"); + System.out.println("2. ๋…ธ์„  ์‚ญ์ œ"); + System.out.println("3. ๋…ธ์„  ์กฐํšŒ"); + System.out.println("B. ๋Œ์•„๊ฐ€๊ธฐ"+NEXT_LINE); + guideChooseFunction(); + } + + public void printSectionManagementScreen() { + System.out.println("## ๊ตฌ๊ฐ„ ๊ด€๋ฆฌ ํ™”๋ฉด"); + System.out.println("1. ๊ตฌ๊ฐ„ ๋“ฑ๋ก"); + System.out.println("2. ๊ตฌ๊ฐ„ ์‚ญ์ œ"); + System.out.println("B. ๋Œ์•„๊ฐ€๊ธฐ"+NEXT_LINE); + guideChooseFunction(); + } + + public void printAllStations() { + System.out.println(String.join(" ",GUIDE_MESSAGE_START,"์—ญ ๋ชฉ๋ก")); + for(Station station : StationRepository.getStations()) { + System.out.println(String.join(" ",INFO_MESSAGE_START,station.getName())); + } + } + + public void printAllLines() { + System.out.println(String.join(" ",GUIDE_MESSAGE_START,"๋…ธ์„  ๋ชฉ๋ก")); + for(Line line : LineRepository.getLines()) { + System.out.println(String.join(" ",INFO_MESSAGE_START,line.getName())); + } + } + + public void printSubwaySections() { + System.out.println(String.join(" ", GUIDE_MESSAGE_START, "์ง€ํ•˜์ฒ  ๋…ธ์„ ๋„")); + for(Line line : LineRepository.getLines()) { + System.out.println(String.join(" ",INFO_MESSAGE_START,line.getName())); + System.out.println(String.join(" ",INFO_MESSAGE_START,"---")); + for(Station station : line.getSections()) { + System.out.println(String.join(" ",INFO_MESSAGE_START,station.getName())); + } + System.out.println(); + } + } + +} From d18c983d35e917511b2ca468b29e261071e1b847 Mon Sep 17 00:00:00 2001 From: DH Lim Date: Mon, 14 Dec 2020 12:28:15 +0900 Subject: [PATCH 05/20] =?UTF-8?q?feat(SubwayMap):=20=EB=B9=84=EC=A7=80?= =?UTF-8?q?=EB=8B=88=EC=8A=A4=20=EB=A1=9C=EC=A7=81=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ์ฃผ์š” ๋‚ด์šฉ - Run(): ์ง€ํ•˜์ฒ  ๋…ธ์„ ๋„ ๊ธฐ๋Šฅ ์‹คํ–‰ - startMain(): ๋ฉ”์ธํ™”๋ฉด ๊ด€๋ฆฌ - startStationManagement(): ์—ญ ๊ด€๋ฆฌ - startLineManagement(): ๋…ธ์„  ๊ด€๋ฆฌ - startSectionManagement(): ๊ตฌ๊ฐ„ ๊ด€๋ฆฌ --- .../java/subway/controller/SubwayMap.java | 176 ++++++++++++++++++ 1 file changed, 176 insertions(+) create mode 100644 src/main/java/subway/controller/SubwayMap.java diff --git a/src/main/java/subway/controller/SubwayMap.java b/src/main/java/subway/controller/SubwayMap.java new file mode 100644 index 000000000..eaa28faef --- /dev/null +++ b/src/main/java/subway/controller/SubwayMap.java @@ -0,0 +1,176 @@ +package subway.controller; + +import subway.domain.*; +import subway.view.InputView; +import subway.view.OutputView; + +import java.util.Scanner; + +public class SubwayMap { + private LineRepository lineRepository; + private StationRepository stationRepository; + private boolean isRun = true; + private OutputView outputView; + private InputView inputView; + private Scanner scanner; + private ErrorHandler errorHandler; + + public void Run(Scanner scanner) { + // ์—๋Ÿฌ์‹œ ๋ฌดํ•œ ๋ฃจํ”„(์ผ๋‹จ ๋ณด๋ฅ˜) + this.scanner = scanner; + while(isRun) { + outputView = new OutputView(); + inputView = new InputView(); + errorHandler = new ErrorHandler(); + startMain(scanner); + } + } + + private void startMain(Scanner scanner) { + outputView.printMainScreen(); + inputView.scanData(scanner); + try{ + errorHandler.validateMainInput(inputView.getInputData()); + } catch(IllegalArgumentException E) { + outputView.printStartMainError(); + startMain(scanner); + } + // + chooseFunctionInMain(inputView.getInputData()); + } + + private void chooseFunctionInMain(String inputData) { + if(inputData.equals("1")) { + startStationManagement(); + } + if(inputData.equals("2")) { + startLineManagement(); + } + if(inputData.equals("3")) { + startSectionManagement(); + } + if(inputData.equals("4")) { + outputView.printSubwaySections(); + } + if(inputData.equalsIgnoreCase("Q")) { + isRun = false; + } + } + + + + private void startStationManagement() { + outputView.printStationManagementScreen(); + inputView.scanData(scanner); + chooseFunctionInStationManagement(inputView.getInputData()); + + } + + private void chooseFunctionInStationManagement(String inputData) { + if(inputData.equals("1")) { + outputView.guideAddStation(); + inputView.scanData(scanner); + StationRepository.addStation(new Station(inputView.getInputData())); + System.out.println("๊ฒฐ๊ณผ์ฐฝ ์ถœ๋ ฅ ์ˆ˜์ •ํ•„์š”!"); + startMain(scanner); + } + if(inputData.equals("2")) { + outputView.guideDeleteStation(); + inputView.scanData(scanner); + StationRepository.deleteStation(inputView.getInputData()); + System.out.println("๊ฒฐ๊ณผ์ฐฝ ์ถœ๋ ฅ ์ˆ˜์ •ํ•„์š”!"); + startMain(scanner); + } + if(inputData.equals("3")) { + outputView.printAllStations(); + } + if(inputData.equalsIgnoreCase("B")) { + startMain(scanner); + } + } + + private void startLineManagement() { + outputView.printLineManagementScreen(); + inputView.scanData(scanner); + chooseFunctionInLineManagement(inputView.getInputData()); + } + + private void chooseFunctionInLineManagement(String inputData) { + if(inputData.equals("1")) { + outputView.guideAddLineName(); + inputView.scanData(scanner); + //๊ฒ€์‚ฌ + LineRepository.addLine(new Line(inputData)); + System.out.println(); + + outputView.guideAddLineUpwardTerminal(); + inputView.scanData(scanner); + //๊ฒ€์‚ฌ + LineRepository.getLine(inputData).setUpwardStation(StationRepository.getStation(inputData)); + System.out.println(); + + outputView.guideAddLineDownwardTerminal(); + inputView.scanData(scanner); + //๊ฒ€์‚ฌ + LineRepository.getLine(inputData).setDownwardStation(StationRepository.getStation(inputData)); + System.out.println(); + } + if(inputData.equals("2")) { + outputView.guideDeleteLine(); + inputView.scanData(scanner); + //๊ฒ€์‚ฌ + LineRepository.deleteLineByName(inputView.getInputData()); + System.out.println(); + } + if(inputData.equals("3")) { + outputView.printAllLines(); + } + if(inputData.equalsIgnoreCase("B")) { + startMain(scanner); + } + + } + + private void startSectionManagement() { + outputView.printSectionManagementScreen(); + inputView.scanData(scanner); + chooseFunctionInSectionManagement(inputView.getInputData()); + } + + private void chooseFunctionInSectionManagement(String inputData) { + if(inputData.equals("1")) { + outputView.guideAddRouteLine(); + inputView.scanData(scanner); + //๊ฒ€์‚ฌ + Line line = LineRepository.getLine(inputView.getInputData()); + System.out.println(); + + outputView.guideAddRouteStation(); + inputView.scanData(scanner); + //๊ฒ€์‚ฌ + Station station = StationRepository.getStation(inputData); + System.out.println(); + + outputView.guideAddRouteOrder(); + inputView.scanData(scanner); + // ๊ฒ€์‚ฌ ํ›„ int๋กœ ํ˜•๋ณ€ํ™˜ + line.addSectionByOrderAndStation(Integer.parseInt(inputView.getInputData()), station); + System.out.println("๊ฒฐ๊ณผ ์ถœ๋ ฅ ์ˆ˜์ •ํ•„์š”!"); + } + if(inputData.equals("2")) { + outputView.guideDeleteRouteLine(); + inputView.scanData(scanner); + //๊ฒ€์‚ฌ + Line line = LineRepository.getLine(inputData); + System.out.println(); + + outputView.guideDeleteRouteStation(); + inputView.scanData(scanner); + //๊ฒ€์‚ฌ + line.deleteSectionByName(inputView.getInputData()); + } + if(inputData.equalsIgnoreCase("B")) { + startMain(scanner); + } + } +} From df30a1c68edc00c97aad1add10667f917cf6e869 Mon Sep 17 00:00:00 2001 From: DH Lim Date: Mon, 14 Dec 2020 12:32:16 +0900 Subject: [PATCH 06/20] =?UTF-8?q?feat(Line):=20=EA=B5=AC=EA=B0=84=20?= =?UTF-8?q?=EC=B6=94=EA=B0=80/=EC=82=AD=EC=A0=9C=20=EA=B8=B0=EB=8A=A5=20?= =?UTF-8?q?=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ์ฃผ์š” ๋‚ด์šฉ - ๊ตฌ๊ฐ„์˜ ์ง‘ํ•ฉ(sections)์„ line ๊ฐ์ฒด์˜ ๋ฉค๋ฒ„๋ณ€์ˆ˜๋กœ ์ƒ์„ฑํ•จ - addSectionByStation(): ์—ญ ์ด๋ฆ„์œผ๋กœ ๊ตฌ๊ฐ„์„ ์ถ”๊ฐ€ - addSectionByOrderAndStation(): ์ˆœ์„œ์™€ ์—ญ ์ด๋ฆ„์œผ๋กœ ๊ตฌ๊ฐ„์„ ์ถ”๊ฐ€ -deleteSectionByName(): ์—ญ ์ด๋ฆ„์œผ๋กœ ๊ตฌ๊ฐ„์„ ์‚ญ์ œ --- src/main/java/subway/domain/Line.java | 44 +++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) diff --git a/src/main/java/subway/domain/Line.java b/src/main/java/subway/domain/Line.java index f4d738d5a..7212babee 100644 --- a/src/main/java/subway/domain/Line.java +++ b/src/main/java/subway/domain/Line.java @@ -1,5 +1,9 @@ package subway.domain; +import java.util.LinkedList; +import java.util.List; +import java.util.Objects; + public class Line { private String name; @@ -12,4 +16,44 @@ public String getName() { } // ์ถ”๊ฐ€ ๊ธฐ๋Šฅ ๊ตฌํ˜„ + private static final int FROM_ORDER_TO_INDEX = 1;//๊ตฌ๊ฐ„ ์ˆœ์„œ ์™€ ์ธ๋ฑ์Šค ๋ณด์ •๊ฐ’ ๋„ค์ด๋ฐ + private Station upwardStation; //์ƒํ–‰ ์ข…์ฐฉ์  + private Station downwardStation; // ํ•˜ํ–‰ ์ข…์ฐฉ์  + private List sections = new LinkedList<>(); + + // ๊ตฌ๊ฐ„ ๊ด€๋ จ ๋ฉ”์†Œ๋“œ ์‹œ์ž‘ + public List getSections() { + return sections; + } + + public void addSectionByStation(Station station) { + sections.add(station); + } + // orderOfRoute-1 == index + public void addSectionByOrderAndStation(int orderOfRoute, Station station) { + sections.add(orderOfRoute-FROM_ORDER_TO_INDEX,station); + } + + public boolean deleteSectionByName(String name) { + return sections.removeIf(station -> Objects.equals(station.getName(), name)); + } + // ๊ตฌ๊ฐ„ ๊ด€๋ จ ๋ฉ”์†Œ๋“œ ๋ + + // ์ƒํ–‰, ํ•˜ํ–‰ getter setter ์‹œ์ž‘ + public Station getUpwardStation() { + return upwardStation; + } + + public void setUpwardStation(Station upwardStation) { + this.upwardStation = upwardStation; + } + + public Station getDownwardStation() { + return downwardStation; + } + + public void setDownwardStation(Station downwardStation) { + this.downwardStation = downwardStation; + } + // ์ƒํ–‰, ํ•˜ํ–‰ getter setter ๋ } From f2b4fe32ff91851e59d75275d4c58ef78700564b Mon Sep 17 00:00:00 2001 From: DH Lim Date: Mon, 14 Dec 2020 12:33:50 +0900 Subject: [PATCH 07/20] =?UTF-8?q?feat(LineRepository):=20=EB=85=B8?= =?UTF-8?q?=EC=84=A0=EA=B3=BC=20=EB=85=B8=EC=84=A0=EC=9D=98=EC=A7=91?= =?UTF-8?q?=ED=95=A9=20=ED=98=B8=EC=B6=9C=20=EA=B8=B0=EB=8A=A5=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/subway/domain/LineRepository.java | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/src/main/java/subway/domain/LineRepository.java b/src/main/java/subway/domain/LineRepository.java index 49132ddb6..9c99967f6 100644 --- a/src/main/java/subway/domain/LineRepository.java +++ b/src/main/java/subway/domain/LineRepository.java @@ -19,4 +19,20 @@ public static void addLine(Line line) { public static boolean deleteLineByName(String name) { return lines.removeIf(line -> Objects.equals(line.getName(), name)); } + + public static Line getLine(String name) { +// return (Line) lines.stream() +// .filter(line -> line.getName().equals(name)); + int index = 0; + for(int i=0; i getLines() { + return lines; + } } From e5814f47fb098382df0d2b8fa2b135f99b7a25ff Mon Sep 17 00:00:00 2001 From: DH Lim Date: Mon, 14 Dec 2020 12:34:21 +0900 Subject: [PATCH 08/20] =?UTF-8?q?feat(StationRepository):=20=EC=97=AD?= =?UTF-8?q?=EA=B3=BC=20=EC=97=AD=EC=9D=98=EC=A7=91=ED=95=A9=20=ED=98=B8?= =?UTF-8?q?=EC=B6=9C=20=EA=B8=B0=EB=8A=A5=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/subway/domain/StationRepository.java | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/src/main/java/subway/domain/StationRepository.java b/src/main/java/subway/domain/StationRepository.java index b7245c0f3..4f3654fd6 100644 --- a/src/main/java/subway/domain/StationRepository.java +++ b/src/main/java/subway/domain/StationRepository.java @@ -19,4 +19,20 @@ public static void addStation(Station station) { public static boolean deleteStation(String name) { return stations.removeIf(station -> Objects.equals(station.getName(), name)); } + + public static Station getStation(String name) { + int index = 0; + for(int i=0; i getStations() { + return stations; + } + + } From c93e0a027f7c59e68887f1caed59467983cab475 Mon Sep 17 00:00:00 2001 From: DH Lim Date: Mon, 14 Dec 2020 12:38:11 +0900 Subject: [PATCH 09/20] =?UTF-8?q?feat(DummyDataSetting):=20=EC=B4=88?= =?UTF-8?q?=EA=B8=B0=EC=84=A4=EC=A0=95=20=EA=B8=B0=EB=8A=A5=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 - ์ง€ํ•˜์ฒ ์—ญ ์ถ”๊ฐ€: ๊ต๋Œ€์—ญ, ๊ฐ•๋‚จ์—ญ, ์—ญ์‚ผ์—ญ, ๋‚จ๋ถ€ํ„ฐ๋ฏธ๋„์—ญ, ์–‘์žฌ์—ญ, ์–‘์žฌ์‹œ๋ฏผ์˜์ˆฒ์—ญ, ๋งค๋ด‰์—ญ - ๋…ธ์„  ์ถ”๊ฐ€: 2ํ˜ธ์„ , 3ํ˜ธ์„ , ์‹ ๋ถ„๋‹น์„  - ๋…ธ์„ ์— ์—ญ ์ถ”๊ฐ€ - 2ํ˜ธ์„ : ๊ต๋Œ€์—ญ - ๊ฐ•๋‚จ์—ญ - ์—ญ์‚ผ์—ญ - 3ํ˜ธ์„ : ๊ต๋Œ€์—ญ - ๋‚จ๋ถ€ํ„ฐ๋ฏธ๋„์—ญ - ์–‘์žฌ์—ญ - ๋งค๋ด‰์—ญ - ์‹ ๋ถ„๋‹น์„ : ๊ฐ•๋‚จ์—ญ - ์–‘์žฌ์—ญ - ์–‘์žฌ์‹œ๋ฏผ์˜์ˆฒ์—ญ --- src/main/java/subway/DummyDataSetting.java | 51 ++++++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 src/main/java/subway/DummyDataSetting.java diff --git a/src/main/java/subway/DummyDataSetting.java b/src/main/java/subway/DummyDataSetting.java new file mode 100644 index 000000000..a4d942a44 --- /dev/null +++ b/src/main/java/subway/DummyDataSetting.java @@ -0,0 +1,51 @@ +package subway; + +import subway.domain.Line; +import subway.domain.LineRepository; +import subway.domain.Station; +import subway.domain.StationRepository; + +public class DummyDataSetting { + + + public static void run() { + /* + * ์—ญ: ๊ต๋Œ€์—ญ, ๊ฐ•๋‚จ์—ญ, ์—ญ์‚ผ์—ญ, ๋‚จ๋ถ€ํ„ฐ๋ฏธ๋„์—ญ, ์–‘์žฌ์—ญ, ์–‘์žฌ์‹œ๋ฏผ์˜์ˆฒ์—ญ, ๋งค๋ด‰์—ญ + * ๋…ธ์„ : 2ํ˜ธ์„ , 3ํ˜ธ์„ , ์‹ ๋ถ„๋‹น์„  + * ๋…ธ์„ ์— ์—ญ + * - 2ํ˜ธ์„ : ๊ต๋Œ€์—ญ - ๊ฐ•๋‚จ์—ญ - ์—ญ์‚ผ์—ญ + * - 3ํ˜ธ์„ : ๊ต๋Œ€์—ญ - ๋‚จ๋ถ€ํ„ฐ๋ฏธ๋„์—ญ - ์–‘์žฌ์—ญ - ๋งค๋ด‰์—ญ + * - ์‹ ๋ถ„๋‹น์„ : ๊ฐ•๋‚จ์—ญ - ์–‘์žฌ์—ญ - ์–‘์žฌ์‹œ๋ฏผ์˜์ˆฒ์—ญ + */ + + StationRepository.addStation(new Station("๊ต๋Œ€์—ญ")); + StationRepository.addStation(new Station("๊ฐ•๋‚จ์—ญ")); + StationRepository.addStation(new Station("์—ญ์‚ผ์—ญ")); + StationRepository.addStation(new Station("๋‚จ๋ถ€ํ„ฐ๋ฏธ๋„์—ญ")); + StationRepository.addStation(new Station("์–‘์žฌ์—ญ")); + StationRepository.addStation(new Station("์–‘์žฌ์‹œ๋ฏผ์˜์ˆฒ์—ญ")); + StationRepository.addStation(new Station("๋งค๋ด‰์—ญ")); + + LineRepository.addLine(new Line("2ํ˜ธ์„ ")); + LineRepository.addLine(new Line("3ํ˜ธ์„ ")); + LineRepository.addLine(new Line("์‹ ๋ถ„๋‹น์„ ")); + + LineRepository.getLine("2ํ˜ธ์„ ").addSectionByStation(StationRepository.getStation("๊ต๋Œ€์—ญ")); + LineRepository.getLine("2ํ˜ธ์„ ").addSectionByStation(StationRepository.getStation("๊ฐ•๋‚จ์—ญ")); + LineRepository.getLine("2ํ˜ธ์„ ").addSectionByStation(StationRepository.getStation("์—ญ์‚ผ์—ญ")); + LineRepository.getLine("3ํ˜ธ์„ ").addSectionByStation(StationRepository.getStation("๊ต๋Œ€์—ญ")); + LineRepository.getLine("3ํ˜ธ์„ ").addSectionByStation(StationRepository.getStation("๋‚จ๋ถ€ํ„ฐ๋ฏธ๋„์—ญ")); + LineRepository.getLine("3ํ˜ธ์„ ").addSectionByStation(StationRepository.getStation("์–‘์žฌ์—ญ")); + LineRepository.getLine("3ํ˜ธ์„ ").addSectionByStation(StationRepository.getStation("๋งค๋ด‰์—ญ")); + LineRepository.getLine("์‹ ๋ถ„๋‹น์„ ").addSectionByStation(StationRepository.getStation("๊ฐ•๋‚จ์—ญ")); + LineRepository.getLine("์‹ ๋ถ„๋‹น์„ ").addSectionByStation(StationRepository.getStation("์–‘์žฌ์—ญ")); + LineRepository.getLine("์‹ ๋ถ„๋‹น์„ ").addSectionByStation(StationRepository.getStation("์–‘์žฌ์‹œ๋ฏผ์˜์ˆฒ์—ญ")); +// for(Line line : LineRepository.lines()) { +// System.out.println(line.getName()); +// for(Station station : line.getRoute()) { +// System.out.println(station.getName()); +// } +// System.out.println(); +// } + } +} From 5b0074035acf0fb33300a83a8ba8d127f18fa5e7 Mon Sep 17 00:00:00 2001 From: DH Lim Date: Mon, 14 Dec 2020 12:39:09 +0900 Subject: [PATCH 10/20] =?UTF-8?q?feat(Application):=20=EB=A1=9C=EC=A7=81?= =?UTF-8?q?=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/subway/Application.java | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/main/java/subway/Application.java b/src/main/java/subway/Application.java index 0bcf786cc..1fad276c2 100644 --- a/src/main/java/subway/Application.java +++ b/src/main/java/subway/Application.java @@ -1,10 +1,16 @@ package subway; +import subway.controller.SubwayMap; + import java.util.Scanner; public class Application { public static void main(String[] args) { final Scanner scanner = new Scanner(System.in); // TODO: ํ”„๋กœ๊ทธ๋žจ ๊ตฌํ˜„ + DummyDataSetting.run(); + + SubwayMap subwayMap = new SubwayMap(); + subwayMap.Run(scanner); } } From 765514a52174e01aa617a58abcf0369b3cb54984 Mon Sep 17 00:00:00 2001 From: DH Lim Date: Tue, 15 Dec 2020 20:31:01 +0900 Subject: [PATCH 11/20] =?UTF-8?q?feat:=20=EA=B0=81=20=ED=99=94=EB=A9=B4=20?= =?UTF-8?q?=EB=A9=94=EB=89=B4=20Enum=20=EC=83=9D=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ์ฃผ์š”๋‚ด์šฉ - ๋ฉ”์ธ, ์—ญ ๊ด€๋ฆฌ, ๋…ธ์„  ๊ด€๋ฆฌ, ๊ตฌ๊ฐ„ ๊ด€๋ฆฌ ํ™”๋ฉด Enum ์ƒ์„ฑ - ๊ฐ Enum๋งˆ๋‹ค ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ ๋ฉ”์†Œ๋“œ ์ƒ์„ฑ --- src/main/java/subway/LineManagementSign.java | 27 ++++++++++++++++++ src/main/java/subway/MainSign.java | 28 +++++++++++++++++++ .../java/subway/SectionManagementSign.java | 26 +++++++++++++++++ .../java/subway/StationManagementSign.java | 27 ++++++++++++++++++ 4 files changed, 108 insertions(+) create mode 100644 src/main/java/subway/LineManagementSign.java create mode 100644 src/main/java/subway/MainSign.java create mode 100644 src/main/java/subway/SectionManagementSign.java create mode 100644 src/main/java/subway/StationManagementSign.java diff --git a/src/main/java/subway/LineManagementSign.java b/src/main/java/subway/LineManagementSign.java new file mode 100644 index 000000000..032f34dd9 --- /dev/null +++ b/src/main/java/subway/LineManagementSign.java @@ -0,0 +1,27 @@ +package subway; + +import java.util.Arrays; + +public enum LineManagementSign { + ADD_LINE("1"), + DELETE_LINE("2"), + SHOW_LINES("3"), + BACK_TO_MAIN("B"); + + private String sign; + + LineManagementSign(String sign) { + this.sign = sign; + } + + public String getSign() { + return sign; + } + + public static LineManagementSign validateSign(String inputData) { + return Arrays.stream(LineManagementSign.values()) + .filter(sign -> inputData.toUpperCase().equals(sign.getSign())) + .findFirst() + .orElseThrow(() -> new IllegalArgumentException("์—†๋Š” ๊ธฐ๋Šฅ")); + } +} diff --git a/src/main/java/subway/MainSign.java b/src/main/java/subway/MainSign.java new file mode 100644 index 000000000..1be879320 --- /dev/null +++ b/src/main/java/subway/MainSign.java @@ -0,0 +1,28 @@ +package subway; + +import java.util.Arrays; + +public enum MainSign { + STATION_MANAGEMENT("1"), + LINE_MANAGEMENT("2"), + SECTION_MANAGEMENT("3"), + PRINT_SUBWAY_ROUTE("4"), + CLOSE_MAIN("Q"); + + private String sign; + + MainSign(String sign) { + this.sign = sign; + } + + public String getSign() { + return sign; + } + + public static MainSign validateSign(String inputData) { + return Arrays.stream(MainSign.values()) + .filter(sign -> inputData.toUpperCase().equals(sign.getSign())) + .findFirst() + .orElseThrow(() -> new IllegalArgumentException("์—†๋Š” ๊ธฐ๋Šฅ")); + } +} diff --git a/src/main/java/subway/SectionManagementSign.java b/src/main/java/subway/SectionManagementSign.java new file mode 100644 index 000000000..af4811e42 --- /dev/null +++ b/src/main/java/subway/SectionManagementSign.java @@ -0,0 +1,26 @@ +package subway; + +import java.util.Arrays; + +public enum SectionManagementSign { + ADD_SECTION("1"), + DELETE_SECTION("2"), + BACK_TO_MAIN("B"); + + private String sign; + + SectionManagementSign(String sign) { + this.sign = sign; + } + + public String getSign() { + return sign; + } + + public static SectionManagementSign validateSign(String inputData) { + return Arrays.stream(SectionManagementSign.values()) + .filter(sign -> inputData.toUpperCase().equals(sign.getSign())) + .findFirst() + .orElseThrow(() -> new IllegalArgumentException("์—†๋Š” ๊ธฐ๋Šฅ")); + } +} diff --git a/src/main/java/subway/StationManagementSign.java b/src/main/java/subway/StationManagementSign.java new file mode 100644 index 000000000..bfe9154d2 --- /dev/null +++ b/src/main/java/subway/StationManagementSign.java @@ -0,0 +1,27 @@ +package subway; + +import java.util.Arrays; + +public enum StationManagementSign { + ADD_STATION("1"), + DELETE_STATION("2"), + SHOW_STATIONS("3"), + BACK_TO_MAIN("B"); + + private String sign; + + StationManagementSign(String sign) { + this.sign = sign; + } + + public String getSign() { + return sign; + } + + public static StationManagementSign validateSign(String inputData) { + return Arrays.stream(StationManagementSign.values()) + .filter(sign -> inputData.toUpperCase().equals(sign.getSign())) + .findFirst() + .orElseThrow(() -> new IllegalArgumentException("์—†๋Š” ๊ธฐ๋Šฅ")); + } +} From a00a1e91b8acbfa84d2b36bbfe826da6afd99cbb Mon Sep 17 00:00:00 2001 From: DH Lim Date: Tue, 15 Dec 2020 20:37:27 +0900 Subject: [PATCH 12/20] =?UTF-8?q?feat(ErrorHandler):=20=EC=98=88=EC=99=B8?= =?UTF-8?q?=20=EC=B2=98=EB=A6=AC=20=ED=81=B4=EB=9E=98=EC=8A=A4=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 ์ฃผ์š” ์˜ˆ์™ธ ๋‚ด์šฉ ์ด๋ฆ„ - 2๊ธ€์ž ๋ฏธ๋งŒ ์ด๋ฆ„ - ํ•œ๊ธ€๊ณผ ์ˆซ์ž ์กฐํ•ฉ์ด ์•„๋‹Œ ๊ฒฝ์šฐ ์ด๋ฆ„ - '-์—ญ' ๋˜๋Š” '์„ '์œผ๋กœ ๋๋‚˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ ์—ญ, ๋…ธ์„  - ์ €์žฅ์†Œ์— ์—†๋Š” ๊ฒฝ์šฐ ์—ญ, ๋…ธ์„  - ์ด๋ฏธ ์ €์žฅ์†Œ์— ์žˆ๋Š” ๊ฒฝ์šฐ ๊ตฌ๊ฐ„์ˆœ์„œ - ์ˆซ์ž๊ฐ€ ์•„๋‹Œ ๊ฒฝ์šฐ ๊ตฌ๊ฐ„์ˆœ์„œ - ๊ตฌ๊ฐ„์˜ ๊ธธ์ด๋ฅผ ๋ฒ—์–ด๋‚œ ์ˆœ์„œ์ผ ๊ฒฝ์šฐ --- .../java/subway/controller/ErrorHandler.java | 78 +++++++++++++++++++ 1 file changed, 78 insertions(+) create mode 100644 src/main/java/subway/controller/ErrorHandler.java diff --git a/src/main/java/subway/controller/ErrorHandler.java b/src/main/java/subway/controller/ErrorHandler.java new file mode 100644 index 000000000..b757e8793 --- /dev/null +++ b/src/main/java/subway/controller/ErrorHandler.java @@ -0,0 +1,78 @@ +package subway.controller; + +import subway.domain.Line; +import subway.domain.LineRepository; +import subway.domain.Station; +import subway.domain.StationRepository; + +import java.util.Objects; +import java.util.regex.Pattern; + +public class ErrorHandler { + private static final String STATION_NAME_END = "์—ญ"; + private static final String LINE_NAME_END = "์„ "; + private static final int NAME_MIN_LENGTH = 2; + private static final int LENGTH_TO_INDEX = 1; + + public static void validateStationNameFormat(String inputData) { + if (inputData.length() < NAME_MIN_LENGTH + || !Pattern.matches("^[0-9๊ฐ€-ํžฃ]*$", inputData) + || !inputData.substring(inputData.length() - LENGTH_TO_INDEX).equals(STATION_NAME_END)) { + throw new IllegalArgumentException("format error"); + } + } + + public static void validateStationDuplicate(String inputData) { + if (StationRepository.isDuplicate(inputData)) { + throw new IllegalArgumentException("duplicate error"); + } + } + + public static void validateStationRegistered(String inputData) { + if (!StationRepository.isDuplicate(inputData)) { + throw new IllegalArgumentException("not registered error"); + } + } + + public static void validateLineNameFormat(String inputData) { + if (inputData.length() < NAME_MIN_LENGTH + || !Pattern.matches("^[0-9๊ฐ€-ํžฃ]*$", inputData) + || !inputData.substring(inputData.length() - LENGTH_TO_INDEX).equals(LINE_NAME_END)) { + throw new IllegalArgumentException("format error"); + } + } + + public static void validateLineDuplicate(String inputData) { + if (LineRepository.isDuplicate(inputData)) { + throw new IllegalArgumentException("duplicate error"); + } + } + + public static void validateLineRegistered(String inputData) { + if (!LineRepository.isDuplicate(inputData)) { + throw new IllegalArgumentException("not registered error"); + } + } + + public static void validateStationDuplicateInLine(Station targetStation, Line line) { + if (line.getSections().stream() + .anyMatch(station -> Objects.equals(station, targetStation))) { + throw new IllegalArgumentException("duplicate error"); + } + } + + public static void validateStationRegisteredInLine(Station targetStation, Line line) { + if (line.getSections().stream() + .noneMatch(station -> Objects.equals(station, targetStation))) { + throw new IllegalArgumentException("not registered error"); + } + } + + public static void validateOrder(String targetOrder, Line line) { + int order = Integer.parseInt(targetOrder); + if (order < 1 || order > line.getSections().size()) { + throw new IllegalArgumentException("inbound error"); + } + } + +} From 7908b83af8c7d8021962743746d02df67b2c53dc Mon Sep 17 00:00:00 2001 From: DH Lim Date: Tue, 15 Dec 2020 20:39:00 +0900 Subject: [PATCH 13/20] =?UTF-8?q?style:=20=EB=B6=88=ED=95=84=EC=9A=94?= =?UTF-8?q?=ED=95=9C=20=EC=A3=BC=EC=84=9D,=20=EA=B0=9C=ED=96=89=20?= =?UTF-8?q?=EC=82=AD=EC=A0=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/subway/view/InputView.java | 20 -------------------- 1 file changed, 20 deletions(-) diff --git a/src/main/java/subway/view/InputView.java b/src/main/java/subway/view/InputView.java index ef16215ac..5bda58b72 100644 --- a/src/main/java/subway/view/InputView.java +++ b/src/main/java/subway/view/InputView.java @@ -5,32 +5,12 @@ public class InputView { private String inputData; - public String getInputData() { return inputData; } -// public void run(Scanner scanner) { -// OutputView.guideChooseFunction(); -// scanData(scanner); -// } - public void scanData(Scanner scanner) { inputData = scanner.nextLine(); System.out.println(); - - /* - * ๊ตฌ๊ฐ„ ์žฌ์ •์˜ ํ• ๊ฒƒ. ์—ญ๊ณผ ์—ญ์‚ฌ์ด๋ฅผ ๊ตฌ๊ฐ„. ๊ตฌ๊ฐ„์ด ๋ชจ์—ฌ์„œ ๋…ธ์„ . - * - * ์—๋Ÿฌ์ฝ”๋“œ ๋ฐ›์œผ๋ฉด ๋‹ค์‹œ ์‹คํ–‰ - * - * ํ™”๋ฉด๋‹จ ๊ตฌ์„ฑ - * ๋ฉ”์ธํ™”๋ฉด stack 1 - * ๊ธฐ๋Šฅ์„ ํƒ stack 2 - * - * */ } - - - } From b1b277531d3be4ad08f5b24cfa564bc3962b99a6 Mon Sep 17 00:00:00 2001 From: DH Lim Date: Tue, 15 Dec 2020 20:40:43 +0900 Subject: [PATCH 14/20] =?UTF-8?q?refactor:=20=EC=83=81=ED=96=89/=ED=95=98?= =?UTF-8?q?=ED=96=89=20=EC=A2=85=EC=A0=90=20=EB=A9=A4=EB=B2=84=EB=B3=80?= =?UTF-8?q?=EC=88=98=EC=99=80=20=EA=B4=80=EB=A0=A8=20=EB=A9=94=EC=86=8C?= =?UTF-8?q?=EB=93=9C=20=EC=82=AD=EC=A0=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ๊ตฌ๊ฐ„์˜ ์ง‘ํ•ฉ(sections)์—์„œ ์ฒ˜์Œ๊ณผ ๋์ด ๊ฐ๊ฐ ์ƒํ–‰, ํ•˜ํ–‰ ์ข…์ ์„ ์˜๋ฏธํ•˜๋ฏ€๋กœ ๋ถˆํ•„์š”ํ•œ ์ค‘๋ณต ์‚ญ์ œ --- src/main/java/subway/domain/Line.java | 28 +++------------------------ 1 file changed, 3 insertions(+), 25 deletions(-) diff --git a/src/main/java/subway/domain/Line.java b/src/main/java/subway/domain/Line.java index 7212babee..2f1cc75e9 100644 --- a/src/main/java/subway/domain/Line.java +++ b/src/main/java/subway/domain/Line.java @@ -16,12 +16,9 @@ public String getName() { } // ์ถ”๊ฐ€ ๊ธฐ๋Šฅ ๊ตฌํ˜„ - private static final int FROM_ORDER_TO_INDEX = 1;//๊ตฌ๊ฐ„ ์ˆœ์„œ ์™€ ์ธ๋ฑ์Šค ๋ณด์ •๊ฐ’ ๋„ค์ด๋ฐ - private Station upwardStation; //์ƒํ–‰ ์ข…์ฐฉ์  - private Station downwardStation; // ํ•˜ํ–‰ ์ข…์ฐฉ์  + private static final int FROM_ORDER_TO_INDEX = 1; private List sections = new LinkedList<>(); - // ๊ตฌ๊ฐ„ ๊ด€๋ จ ๋ฉ”์†Œ๋“œ ์‹œ์ž‘ public List getSections() { return sections; } @@ -29,31 +26,12 @@ public List getSections() { public void addSectionByStation(Station station) { sections.add(station); } - // orderOfRoute-1 == index + public void addSectionByOrderAndStation(int orderOfRoute, Station station) { - sections.add(orderOfRoute-FROM_ORDER_TO_INDEX,station); + sections.add(orderOfRoute - FROM_ORDER_TO_INDEX, station); } public boolean deleteSectionByName(String name) { return sections.removeIf(station -> Objects.equals(station.getName(), name)); } - // ๊ตฌ๊ฐ„ ๊ด€๋ จ ๋ฉ”์†Œ๋“œ ๋ - - // ์ƒํ–‰, ํ•˜ํ–‰ getter setter ์‹œ์ž‘ - public Station getUpwardStation() { - return upwardStation; - } - - public void setUpwardStation(Station upwardStation) { - this.upwardStation = upwardStation; - } - - public Station getDownwardStation() { - return downwardStation; - } - - public void setDownwardStation(Station downwardStation) { - this.downwardStation = downwardStation; - } - // ์ƒํ–‰, ํ•˜ํ–‰ getter setter ๋ } From 168b97cc22ec0e7f48228dc650ee19b9c05825a9 Mon Sep 17 00:00:00 2001 From: DH Lim Date: Tue, 15 Dec 2020 20:44:44 +0900 Subject: [PATCH 15/20] =?UTF-8?q?refactor:=20=EB=A9=94=EC=86=8C=EB=93=9C?= =?UTF-8?q?=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit getNewLine(): ๋…ธ์„  ๋“ฑ๋ก์‹œ ๋“ฑ๋ก์ค‘์ธ ๋…ธ์„  ํ˜ธ์ถœ deleteStationInLine(): ๋ชจ๋“  ๋…ธ์„ ์—์„œ ์—ญ ์‚ญ์ œ isDuplicate(): ์ด๋ฏธ ์ €์žฅ๋˜์–ด์žˆ๋Š” ์—ญ์ธ์ง€ ๊ฒ€์‚ฌ --- .../java/subway/domain/LineRepository.java | 28 +++++++++++++------ 1 file changed, 20 insertions(+), 8 deletions(-) diff --git a/src/main/java/subway/domain/LineRepository.java b/src/main/java/subway/domain/LineRepository.java index 9c99967f6..ba95b24ec 100644 --- a/src/main/java/subway/domain/LineRepository.java +++ b/src/main/java/subway/domain/LineRepository.java @@ -20,16 +20,28 @@ public static boolean deleteLineByName(String name) { return lines.removeIf(line -> Objects.equals(line.getName(), name)); } + private static final int FROM_ORDER_TO_INDEX = 1; + public static Line getLine(String name) { -// return (Line) lines.stream() -// .filter(line -> line.getName().equals(name)); - int index = 0; - for(int i=0; i station.getName().equals(name)) + .findAny() + .get(); + } + + public static Line getNewLine() { + return lines.get(lines.size() - FROM_ORDER_TO_INDEX); + } + + public static void deleteStationInLine(String name) { + for (Line line : lines) { + line.getSections().removeIf(station -> Objects.equals(station.getName(), name)); } - return lines.get(index); + } + + public static boolean isDuplicate(String name) { + return lines.stream() + .anyMatch(station -> station.getName().equals(name)); } public static List getLines() { From af5f44de919d362ca177ed55a81b526dff6bd0fb Mon Sep 17 00:00:00 2001 From: DH Lim Date: Tue, 15 Dec 2020 20:46:57 +0900 Subject: [PATCH 16/20] =?UTF-8?q?refactor:=20=EC=A0=95=EC=83=81/=EB=B9=84?= =?UTF-8?q?=EC=A0=95=EC=83=81=EC=A0=81=EC=9D=B8=20=EA=B2=B0=EA=B3=BC=20?= =?UTF-8?q?=EC=B0=BD=20=EC=B6=9C=EB=A0=A5=20=EA=B8=B0=EB=8A=A5=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/subway/view/OutputView.java | 178 +++++++++++++++------- 1 file changed, 121 insertions(+), 57 deletions(-) diff --git a/src/main/java/subway/view/OutputView.java b/src/main/java/subway/view/OutputView.java index eaf8eb12c..b393a7238 100644 --- a/src/main/java/subway/view/OutputView.java +++ b/src/main/java/subway/view/OutputView.java @@ -7,96 +7,159 @@ public class OutputView { private static final String NEXT_LINE = "\n"; - private static final String GUIDE_MESSAGE_START= "##"; + private static final String GUIDE_MESSAGE_START = "##"; private static final String GUIDE_MESSAGE_END_CHOOSE_FUNCTION = "์›ํ•˜๋Š” ๊ธฐ๋Šฅ์„ ์„ ํƒํ•˜์„ธ์š”."; - private static final String GUIDE_MESSAGE_END_ADD_STATION = "๋“ฑ๋กํ•  ์—ญ ์ด๋ฆ„์„ ์ž…๋ ฅํ•˜์„ธ์š”."; private static final String GUIDE_MESSAGE_END_DELETE_STATION = "์‚ญ์ œํ•  ์—ญ ์ด๋ฆ„์„ ์ž…๋ ฅํ•˜์„ธ์š”."; - private static final String GUIDE_MESSAGE_END_ADD_LINE_NAME = "๋“ฑ๋กํ•  ๋…ธ์„  ์ด๋ฆ„์„ ์ž…๋ ฅํ•˜์„ธ์š”."; private static final String GUIDE_MESSAGE_END_ADD_LINE_UPWARD_TERMINAL = "๋“ฑ๋กํ•  ๋…ธ์„ ์˜ ์ƒํ–‰ ์ข…์ ์—ญ ์ด๋ฆ„์„ ์ž…๋ ฅํ•˜์„ธ์š”."; private static final String GUIDE_MESSAGE_END_ADD_LINE_DOWNWARD_TERMINAL = "๋‘ฅ๋กํ•  ๋…ธ์„ ์˜ ํ•˜ํ–‰ ์ข…์ ์—ญ ์ด๋ฆ„์„ ์ž…๋ ฅํ•˜์„ธ์š”."; private static final String GUIDE_MESSAGE_END_DELETE_LINE = "์‚ญ์ œํ•  ๋…ธ์„  ์ด๋ฆ„์„ ์ž…๋ ฅํ•˜์„ธ์š”."; + private static final String GUIDE_MESSAGE_END_CKECK_SECTION_LINE = "๋…ธ์„ ์„ ์ž…๋ ฅํ•˜์„ธ์š”."; + private static final String GUIDE_MESSAGE_END_CHECK_SECTION_STATION = "์—ญ ์ด๋ฆ„์„ ์ž…๋ ฅํ•˜์„ธ์š”."; + private static final String GUIDE_MESSAGE_END_CHECK_SECTION_ORDER = "์ˆœ์„œ๋ฅผ ์ž…๋ ฅํ•˜์„ธ์š”."; + private static final String GUIDE_MESSAGE_END_DELETE_SECTION_LINE = "์‚ญ์ œํ•  ๊ตฌ๊ฐ„์˜ ๋…ธ์„ ์„ ์ž…๋ ฅํ•˜์„ธ์š”."; + private static final String GUIDE_MESSAGE_END_DELETE_SECTION_STATION = "์‚ญ์ œํ•  ๊ตฌ๊ฐ„์˜ ์—ญ์„ ์ž…๋ ฅํ•˜์„ธ์š”."; - private static final String GUIDE_MESSAGE_END_ADD_ROUTE_LINE = "๋…ธ์„ ์„ ์ž…๋ ฅํ•˜์„ธ์š”."; - private static final String GUIDE_MESSAGE_END_ADD_ROUTE_STATION = "์—ญ ์ด๋ฆ„์„ ์ž…๋ ฅํ•˜์„ธ์š”."; - private static final String GUIDE_MESSAGE_END_ADD_ROUTE_ORDER = "์ˆœ์„œ๋ฅผ ์ž…๋ ฅํ•˜์„ธ์š”."; - private static final String GUIDE_MESSAGE_END_DELETE_ROUTE_LINE = "์‚ญ์ œํ•  ๊ตฌ๊ฐ„์˜ ๋…ธ์„ ์„ ์ž…๋ ฅํ•˜์„ธ์š”."; - private static final String GUIDE_MESSAGE_END_DELETE_ROUTE_STATION = "์‚ญ์ œํ•  ๊ตฌ๊ฐ„์˜ ์—ญ์„ ์ž…๋ ฅํ•˜์„ธ์š”."; - // private static final String INFO_MESSAGE_START = "[INFO]"; private static final String INFO_MESSAGE_END_ADD_STATION = "์ง€ํ•˜์ฒ  ์—ญ์ด ๋“ฑ๋ก๋˜์—ˆ์Šต๋‹ˆ๋‹ค."; private static final String INFO_MESSAGE_END_DELETE_STATION = "์ง€ํ•˜์ฒ  ์—ญ์ด ์‚ญ์ œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค."; - private static final String INFO_MESSAGE_END_ADD_LINE = "์ง€ํ•˜์ฒ  ๋…ธ์„ ์ด ๋“ฑ๋ก๋˜์—ˆ์Šต๋‹ˆ๋‹ค."; private static final String INFO_MESSAGE_END_DELETE_LINE = "์ง€ํ•˜์ฒ  ๋…ธ์„ ์ด ์‚ญ์ œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค."; - - private static final String INFO_MESSAGE_END_ADD_ROUTE = "๊ตฌ๊ฐ„์ด ๋“ฑ๋ก๋˜์—ˆ์Šต๋‹ˆ๋‹ค."; - private static final String INFO_MESSAGE_END_DELETE_ROUTE = "๊ตฌ๊ฐ„์ด ์‚ญ์ œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค."; - + private static final String INFO_MESSAGE_END_ADD_SECTION = "๊ตฌ๊ฐ„์ด ๋“ฑ๋ก๋˜์—ˆ์Šต๋‹ˆ๋‹ค."; + private static final String INFO_MESSAGE_END_DELETE_SECTION = "๊ตฌ๊ฐ„์ด ์‚ญ์ œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค."; private static final String ERROR_MESSAGE_START = "[ERROR]"; private static final String ERROR_MESSAGE_END_CHOOSE_FUNCTION = "์„ ํƒํ•  ์ˆ˜ ์—†๋Š” ๊ธฐ๋Šฅ์ž…๋‹ˆ๋‹ค."; + private static final String ERROR_MESSAGE_END_ADD_STATION_FORMAT = "์—ญ ์ด๋ฆ„์€ 2๊ธ€์ž ์ด์ƒ, ํ•œ๊ธ€๊ณผ ์ˆซ์ž ์กฐํ•ฉ์ด๋ฉฐ, '-์—ญ'์œผ๋กœ ๋๋‚˜์•ผ ํ•ฉ๋‹ˆ๋‹ค."; private static final String ERROR_MESSAGE_END_ADD_STATION_DUPLICATE = "์ด๋ฏธ ๋“ฑ๋ก๋œ ์—ญ ์ด๋ฆ„์ž…๋‹ˆ๋‹ค."; -// private static final String ERROR_MESSAGE_END_DELETE_STATION = "์ง€ํ•˜์ฒ  ์—ญ์ด ์‚ญ์ œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค."; -// -// private static final String ERROR_MESSAGE_END_ADD_LINE = "์ง€ํ•˜์ฒ  ๋…ธ์„ ์ด ๋“ฑ๋ก๋˜์—ˆ์Šต๋‹ˆ๋‹ค."; -// private static final String ERROR_MESSAGE_END_DELETE_LINE = "์ง€ํ•˜์ฒ  ๋…ธ์„ ์ด ์‚ญ์ œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค."; -// -// private static final String ERROR_MESSAGE_END_ADD_ROUTE = "๊ตฌ๊ฐ„์ด ๋“ฑ๋ก๋˜์—ˆ์Šต๋‹ˆ๋‹ค."; -// private static final String ERROR_MESSAGE_END_DELETE_ROUTE = "๊ตฌ๊ฐ„์ด ์‚ญ์ œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค."; - + private static final String ERROR_MESSAGE_END_DELETE_STATION_NOT_REGISTERED = "๋“ฑ๋ก๋˜์ง€ ์•Š์€ ์—ญ์ž…๋‹ˆ๋‹ค."; + private static final String ERROR_MESSAGE_END_ADD_LINE_FORMAT = "๋…ธ์„  ์ด๋ฆ„์€ 2๊ธ€์ž ์ด์ƒ, ํ•œ๊ธ€๊ณผ ์ˆซ์ž ์กฐํ•ฉ์ด๋ฉฐ, '-์„ '์œผ๋กœ ๋๋‚˜์•ผ ํ•ฉ๋‹ˆ๋‹ค."; + private static final String ERROR_MESSAGE_END_ADD_LINE_DUPLICATE = "์ด๋ฏธ ๋“ฑ๋ก๋œ ๋…ธ์„  ์ด๋ฆ„์ž…๋‹ˆ๋‹ค."; + private static final String ERROR_MESSAGE_END_DELETE_LINE_NOT_REGISTERED = "๋“ฑ๋ก๋˜์ง€ ์•Š์€ ๋…ธ์„ ์ž…๋‹ˆ๋‹ค."; + private static final String ERROR_MESSAGE_END_PARSEINT_ORDER = "๊ตฌ๊ฐ„ ์ˆœ์„œ๋Š” ์ˆซ์ž์—ฌ์•ผ ํ•ฉ๋‹ˆ๋‹ค."; + private static final String ERROR_MESSAGE_END_INBOUND_ORDER = "๊ตฌ๊ฐ„ ์ˆœ์„œ๋Š” 1์ด์ƒ์ด๋ฉฐ ํ•ด๋‹น ๋…ธ์„  ๊ตฌ๊ฐ„์˜ ๊ธธ์ด ์ดํ•˜์ž…๋‹ˆ๋‹ค."; public void guideChooseFunction() { - System.out.println(String.join(" ",GUIDE_MESSAGE_START,GUIDE_MESSAGE_END_CHOOSE_FUNCTION)); + System.out.println(String.join(" ", GUIDE_MESSAGE_START, GUIDE_MESSAGE_END_CHOOSE_FUNCTION)); } public void guideAddStation() { - System.out.println(String.join(" ",GUIDE_MESSAGE_START,GUIDE_MESSAGE_END_ADD_STATION)); + System.out.println(String.join(" ", GUIDE_MESSAGE_START, GUIDE_MESSAGE_END_ADD_STATION)); } public void guideDeleteStation() { - System.out.println(String.join(" ",GUIDE_MESSAGE_START,GUIDE_MESSAGE_END_DELETE_STATION)); + System.out.println(String.join(" ", GUIDE_MESSAGE_START, GUIDE_MESSAGE_END_DELETE_STATION)); } public void guideAddLineName() { - System.out.println(String.join(" ",GUIDE_MESSAGE_START,GUIDE_MESSAGE_END_ADD_LINE_NAME)); + System.out.println(String.join(" ", GUIDE_MESSAGE_START, GUIDE_MESSAGE_END_ADD_LINE_NAME)); } public void guideAddLineUpwardTerminal() { - System.out.println(String.join(" ",GUIDE_MESSAGE_START,GUIDE_MESSAGE_END_ADD_LINE_UPWARD_TERMINAL)); + System.out.println(String.join(" ", GUIDE_MESSAGE_START, GUIDE_MESSAGE_END_ADD_LINE_UPWARD_TERMINAL)); } public void guideAddLineDownwardTerminal() { - System.out.println(String.join(" ",GUIDE_MESSAGE_START,GUIDE_MESSAGE_END_ADD_LINE_DOWNWARD_TERMINAL)); + System.out.println(String.join(" ", GUIDE_MESSAGE_START, GUIDE_MESSAGE_END_ADD_LINE_DOWNWARD_TERMINAL)); } public void guideDeleteLine() { - System.out.println(String.join(" ",GUIDE_MESSAGE_START,GUIDE_MESSAGE_END_DELETE_LINE)); + System.out.println(String.join(" ", GUIDE_MESSAGE_START, GUIDE_MESSAGE_END_DELETE_LINE)); + } + + public void guideCheckLine() { + System.out.println(String.join(" ", GUIDE_MESSAGE_START, GUIDE_MESSAGE_END_CKECK_SECTION_LINE)); + } + + public void guideCheckSectionStation() { + System.out.println(String.join(" ", GUIDE_MESSAGE_START, GUIDE_MESSAGE_END_CHECK_SECTION_STATION)); + } + + public void guideCheckSectionOrder() { + System.out.println(String.join(" ", GUIDE_MESSAGE_START, GUIDE_MESSAGE_END_CHECK_SECTION_ORDER)); + } + + public void guideDeleteSectionLine() { + System.out.println(String.join(" ", GUIDE_MESSAGE_START, GUIDE_MESSAGE_END_DELETE_SECTION_LINE)); } - public void guideAddRouteLine() { - System.out.println(String.join(" ",GUIDE_MESSAGE_START,GUIDE_MESSAGE_END_ADD_ROUTE_LINE)); + public void guideDeleteSectionStation() { + System.out.println(String.join(" ", GUIDE_MESSAGE_START, GUIDE_MESSAGE_END_DELETE_SECTION_STATION)); } - public void guideAddRouteStation() { - System.out.println(String.join(" ",GUIDE_MESSAGE_START,GUIDE_MESSAGE_END_ADD_ROUTE_STATION)); + public void errorChooseFunction() { + System.out.println(String.join(" ", ERROR_MESSAGE_START, ERROR_MESSAGE_END_CHOOSE_FUNCTION)); + System.out.println(); } - public void guideAddRouteOrder() { - System.out.println(String.join(" ",GUIDE_MESSAGE_START,GUIDE_MESSAGE_END_ADD_ROUTE_ORDER)); + public void infoAddStation() { + System.out.println(String.join(" ", INFO_MESSAGE_START, INFO_MESSAGE_END_ADD_STATION)); + System.out.println(); } - public void guideDeleteRouteLine() { - System.out.println(String.join(" ",GUIDE_MESSAGE_START,GUIDE_MESSAGE_END_DELETE_ROUTE_LINE)); + public void errorStationFormat() { + System.out.println(String.join(" ", ERROR_MESSAGE_START, ERROR_MESSAGE_END_ADD_STATION_FORMAT)); + System.out.println(); } - public void guideDeleteRouteStation() { - System.out.println(String.join(" ",GUIDE_MESSAGE_START,GUIDE_MESSAGE_END_DELETE_ROUTE_STATION)); + public void errorStationDuplicate() { + System.out.println(String.join(" ", ERROR_MESSAGE_START, ERROR_MESSAGE_END_ADD_STATION_DUPLICATE)); + System.out.println(); } - public void printStartMainError() { - System.out.println(String.join(" ",ERROR_MESSAGE_START,ERROR_MESSAGE_END_CHOOSE_FUNCTION)); + public void infoDeleteStation() { + System.out.println(String.join(" ", INFO_MESSAGE_START, INFO_MESSAGE_END_DELETE_STATION)); + System.out.println(); + } + + public void errorDeleteStationNotRegistered() { + System.out.println(String.join(" ", ERROR_MESSAGE_START, ERROR_MESSAGE_END_DELETE_STATION_NOT_REGISTERED)); + System.out.println(); + } + + public void infoAddLine() { + System.out.println(String.join(" ", INFO_MESSAGE_START, INFO_MESSAGE_END_ADD_LINE)); + System.out.println(); + } + + public void errorLineFormat() { + System.out.println(String.join(" ", ERROR_MESSAGE_START, ERROR_MESSAGE_END_ADD_LINE_FORMAT)); + System.out.println(); + } + + public void errorLineDuplicate() { + System.out.println(String.join(" ", ERROR_MESSAGE_START, ERROR_MESSAGE_END_ADD_LINE_DUPLICATE)); + System.out.println(); + } + + public void infoDeleteLine() { + System.out.println(String.join(" ", INFO_MESSAGE_START, INFO_MESSAGE_END_DELETE_LINE)); + System.out.println(); + } + + public void errorDeleteLineNotRegistered() { + System.out.println(String.join(" ", ERROR_MESSAGE_START, ERROR_MESSAGE_END_DELETE_LINE_NOT_REGISTERED)); + System.out.println(); + } + + public void infoAddSection() { + System.out.println(String.join(" ", INFO_MESSAGE_START, INFO_MESSAGE_END_ADD_SECTION)); + System.out.println(); + } + + public void errorParseIntOrder() { + System.out.println(String.join(" ", ERROR_MESSAGE_START, ERROR_MESSAGE_END_PARSEINT_ORDER)); + System.out.println(); + } + + public void errorInBoundOrder() { + System.out.println(String.join(" ", ERROR_MESSAGE_START, ERROR_MESSAGE_END_INBOUND_ORDER)); + System.out.println(); + } + + public void infoDeleteSection() { + System.out.println(String.join(" ", INFO_MESSAGE_START, INFO_MESSAGE_END_DELETE_SECTION)); System.out.println(); } @@ -106,7 +169,7 @@ public void printMainScreen() { System.out.println("2. ๋…ธ์„  ๊ด€๋ฆฌ"); System.out.println("3. ๊ตฌ๊ฐ„ ๊ด€๋ฆฌ"); System.out.println("4. ์ง€ํ•˜์ฒ  ๋…ธ์„ ๋„ ์ถœ๋ ฅ"); - System.out.println("Q. ์ข…๋ฃŒ"+NEXT_LINE); + System.out.println("Q. ์ข…๋ฃŒ" + NEXT_LINE); guideChooseFunction(); } @@ -115,7 +178,7 @@ public void printStationManagementScreen() { System.out.println("1. ์—ญ ๋“ฑ๋ก"); System.out.println("2. ์—ญ ์‚ญ์ œ"); System.out.println("3. ์—ญ ์กฐํšŒ"); - System.out.println("B. ๋Œ์•„๊ฐ€๊ธฐ"+NEXT_LINE); + System.out.println("B. ๋Œ์•„๊ฐ€๊ธฐ" + NEXT_LINE); guideChooseFunction(); } @@ -124,7 +187,7 @@ public void printLineManagementScreen() { System.out.println("1. ๋…ธ์„  ๋“ฑ๋ก"); System.out.println("2. ๋…ธ์„  ์‚ญ์ œ"); System.out.println("3. ๋…ธ์„  ์กฐํšŒ"); - System.out.println("B. ๋Œ์•„๊ฐ€๊ธฐ"+NEXT_LINE); + System.out.println("B. ๋Œ์•„๊ฐ€๊ธฐ" + NEXT_LINE); guideChooseFunction(); } @@ -132,34 +195,35 @@ public void printSectionManagementScreen() { System.out.println("## ๊ตฌ๊ฐ„ ๊ด€๋ฆฌ ํ™”๋ฉด"); System.out.println("1. ๊ตฌ๊ฐ„ ๋“ฑ๋ก"); System.out.println("2. ๊ตฌ๊ฐ„ ์‚ญ์ œ"); - System.out.println("B. ๋Œ์•„๊ฐ€๊ธฐ"+NEXT_LINE); + System.out.println("B. ๋Œ์•„๊ฐ€๊ธฐ" + NEXT_LINE); guideChooseFunction(); } public void printAllStations() { - System.out.println(String.join(" ",GUIDE_MESSAGE_START,"์—ญ ๋ชฉ๋ก")); - for(Station station : StationRepository.getStations()) { - System.out.println(String.join(" ",INFO_MESSAGE_START,station.getName())); + System.out.println(String.join(" ", GUIDE_MESSAGE_START, "์—ญ ๋ชฉ๋ก")); + for (Station station : StationRepository.getStations()) { + System.out.println(String.join(" ", INFO_MESSAGE_START, station.getName())); } + System.out.println(); } public void printAllLines() { - System.out.println(String.join(" ",GUIDE_MESSAGE_START,"๋…ธ์„  ๋ชฉ๋ก")); - for(Line line : LineRepository.getLines()) { - System.out.println(String.join(" ",INFO_MESSAGE_START,line.getName())); + System.out.println(String.join(" ", GUIDE_MESSAGE_START, "๋…ธ์„  ๋ชฉ๋ก")); + for (Line line : LineRepository.getLines()) { + System.out.println(String.join(" ", INFO_MESSAGE_START, line.getName())); } + System.out.println(); } public void printSubwaySections() { System.out.println(String.join(" ", GUIDE_MESSAGE_START, "์ง€ํ•˜์ฒ  ๋…ธ์„ ๋„")); - for(Line line : LineRepository.getLines()) { - System.out.println(String.join(" ",INFO_MESSAGE_START,line.getName())); - System.out.println(String.join(" ",INFO_MESSAGE_START,"---")); - for(Station station : line.getSections()) { - System.out.println(String.join(" ",INFO_MESSAGE_START,station.getName())); + for (Line line : LineRepository.getLines()) { + System.out.println(String.join(" ", INFO_MESSAGE_START, line.getName())); + System.out.println(String.join(" ", INFO_MESSAGE_START, "---")); + for (Station station : line.getSections()) { + System.out.println(String.join(" ", INFO_MESSAGE_START, station.getName())); } System.out.println(); } } - } From 270d4dfb860ba24ca802bfe65838b635d3375b30 Mon Sep 17 00:00:00 2001 From: DH Lim Date: Tue, 15 Dec 2020 20:48:02 +0900 Subject: [PATCH 17/20] =?UTF-8?q?refactor:=20=EC=A4=91=EB=B3=B5=20?= =?UTF-8?q?=ED=99=95=EC=9D=B8=20=EB=A9=94=EC=86=8C=EB=93=9C=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 --- .../java/subway/domain/StationRepository.java | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/src/main/java/subway/domain/StationRepository.java b/src/main/java/subway/domain/StationRepository.java index 4f3654fd6..5a7dc09c2 100644 --- a/src/main/java/subway/domain/StationRepository.java +++ b/src/main/java/subway/domain/StationRepository.java @@ -21,18 +21,18 @@ public static boolean deleteStation(String name) { } public static Station getStation(String name) { - int index = 0; - for(int i=0; i station.getName().equals(name)) + .findAny() + .get(); + } + + public static boolean isDuplicate(String name) { + return stations.stream() + .anyMatch(station -> station.getName().equals(name)); } public static List getStations() { return stations; } - - } From 81cd2d4ef49688ea2735df9dd70932ad5928f0a8 Mon Sep 17 00:00:00 2001 From: DH Lim Date: Tue, 15 Dec 2020 20:48:34 +0900 Subject: [PATCH 18/20] =?UTF-8?q?refactor:=20=EB=B0=98=EB=B3=B5=EB=AC=B8?= =?UTF-8?q?=20=EC=B5=9C=EC=86=8C=ED=99=94?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/subway/DummyDataSetting.java | 33 +++++++++------------- 1 file changed, 14 insertions(+), 19 deletions(-) diff --git a/src/main/java/subway/DummyDataSetting.java b/src/main/java/subway/DummyDataSetting.java index a4d942a44..f434e51ce 100644 --- a/src/main/java/subway/DummyDataSetting.java +++ b/src/main/java/subway/DummyDataSetting.java @@ -5,8 +5,10 @@ import subway.domain.Station; import subway.domain.StationRepository; -public class DummyDataSetting { +import java.util.Arrays; +import java.util.List; +public class DummyDataSetting { public static void run() { /* @@ -17,35 +19,28 @@ public static void run() { * - 3ํ˜ธ์„ : ๊ต๋Œ€์—ญ - ๋‚จ๋ถ€ํ„ฐ๋ฏธ๋„์—ญ - ์–‘์žฌ์—ญ - ๋งค๋ด‰์—ญ * - ์‹ ๋ถ„๋‹น์„ : ๊ฐ•๋‚จ์—ญ - ์–‘์žฌ์—ญ - ์–‘์žฌ์‹œ๋ฏผ์˜์ˆฒ์—ญ */ + List stationNames = Arrays.asList("๊ต๋Œ€์—ญ", "๊ฐ•๋‚จ์—ญ", "์—ญ์‚ผ์—ญ", "๋‚จ๋ถ€ํ„ฐ๋ฏธ๋„์—ญ", "์–‘์žฌ์—ญ", + "์–‘์žฌ์‹œ๋ฏผ์˜์ˆฒ์—ญ", "๋งค๋ด‰์—ญ"); + for (String name : stationNames) { + StationRepository.addStation(new Station(name)); + } - StationRepository.addStation(new Station("๊ต๋Œ€์—ญ")); - StationRepository.addStation(new Station("๊ฐ•๋‚จ์—ญ")); - StationRepository.addStation(new Station("์—ญ์‚ผ์—ญ")); - StationRepository.addStation(new Station("๋‚จ๋ถ€ํ„ฐ๋ฏธ๋„์—ญ")); - StationRepository.addStation(new Station("์–‘์žฌ์—ญ")); - StationRepository.addStation(new Station("์–‘์žฌ์‹œ๋ฏผ์˜์ˆฒ์—ญ")); - StationRepository.addStation(new Station("๋งค๋ด‰์—ญ")); - - LineRepository.addLine(new Line("2ํ˜ธ์„ ")); - LineRepository.addLine(new Line("3ํ˜ธ์„ ")); - LineRepository.addLine(new Line("์‹ ๋ถ„๋‹น์„ ")); + List lineNames = Arrays.asList("2ํ˜ธ์„ ", "3ํ˜ธ์„ ", "์‹ ๋ถ„๋‹น์„ "); + for (String name : lineNames) { + LineRepository.addLine(new Line(name)); + } LineRepository.getLine("2ํ˜ธ์„ ").addSectionByStation(StationRepository.getStation("๊ต๋Œ€์—ญ")); LineRepository.getLine("2ํ˜ธ์„ ").addSectionByStation(StationRepository.getStation("๊ฐ•๋‚จ์—ญ")); LineRepository.getLine("2ํ˜ธ์„ ").addSectionByStation(StationRepository.getStation("์—ญ์‚ผ์—ญ")); + LineRepository.getLine("3ํ˜ธ์„ ").addSectionByStation(StationRepository.getStation("๊ต๋Œ€์—ญ")); LineRepository.getLine("3ํ˜ธ์„ ").addSectionByStation(StationRepository.getStation("๋‚จ๋ถ€ํ„ฐ๋ฏธ๋„์—ญ")); LineRepository.getLine("3ํ˜ธ์„ ").addSectionByStation(StationRepository.getStation("์–‘์žฌ์—ญ")); LineRepository.getLine("3ํ˜ธ์„ ").addSectionByStation(StationRepository.getStation("๋งค๋ด‰์—ญ")); + LineRepository.getLine("์‹ ๋ถ„๋‹น์„ ").addSectionByStation(StationRepository.getStation("๊ฐ•๋‚จ์—ญ")); LineRepository.getLine("์‹ ๋ถ„๋‹น์„ ").addSectionByStation(StationRepository.getStation("์–‘์žฌ์—ญ")); LineRepository.getLine("์‹ ๋ถ„๋‹น์„ ").addSectionByStation(StationRepository.getStation("์–‘์žฌ์‹œ๋ฏผ์˜์ˆฒ์—ญ")); -// for(Line line : LineRepository.lines()) { -// System.out.println(line.getName()); -// for(Station station : line.getRoute()) { -// System.out.println(station.getName()); -// } -// System.out.println(); -// } } } From 62f95f5ef6fdc9ef50beabe95df2c9618b20ac82 Mon Sep 17 00:00:00 2001 From: DH Lim Date: Tue, 15 Dec 2020 20:49:01 +0900 Subject: [PATCH 19/20] =?UTF-8?q?style:=20=EB=B6=88=ED=95=84=EC=9A=94?= =?UTF-8?q?=ED=95=9C=20=EA=B0=9C=ED=96=89=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/subway/Application.java | 1 - 1 file changed, 1 deletion(-) diff --git a/src/main/java/subway/Application.java b/src/main/java/subway/Application.java index 1fad276c2..8ee3d2246 100644 --- a/src/main/java/subway/Application.java +++ b/src/main/java/subway/Application.java @@ -9,7 +9,6 @@ public static void main(String[] args) { final Scanner scanner = new Scanner(System.in); // TODO: ํ”„๋กœ๊ทธ๋žจ ๊ตฌํ˜„ DummyDataSetting.run(); - SubwayMap subwayMap = new SubwayMap(); subwayMap.Run(scanner); } From 9a96a016595d3fa61cbf9ce24c9bc95db15a96e1 Mon Sep 17 00:00:00 2001 From: DH Lim Date: Tue, 15 Dec 2020 20:50:16 +0900 Subject: [PATCH 20/20] =?UTF-8?q?refactor:=20=EA=B8=B0=EB=8A=A5=20?= =?UTF-8?q?=EB=B6=84=EB=A6=AC,=20=EC=98=88=EC=99=B8=20=EC=B2=98=EB=A6=AC?= =?UTF-8?q?=20=EB=A9=94=EC=86=8C=EB=93=9C=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/subway/controller/SubwayMap.java | 369 +++++++++++++----- 1 file changed, 269 insertions(+), 100 deletions(-) diff --git a/src/main/java/subway/controller/SubwayMap.java b/src/main/java/subway/controller/SubwayMap.java index eaa28faef..4e555c36c 100644 --- a/src/main/java/subway/controller/SubwayMap.java +++ b/src/main/java/subway/controller/SubwayMap.java @@ -1,176 +1,345 @@ package subway.controller; +import subway.LineManagementSign; +import subway.MainSign; +import subway.SectionManagementSign; +import subway.StationManagementSign; import subway.domain.*; import subway.view.InputView; import subway.view.OutputView; import java.util.Scanner; +import java.util.function.Consumer; public class SubwayMap { - private LineRepository lineRepository; - private StationRepository stationRepository; private boolean isRun = true; private OutputView outputView; private InputView inputView; private Scanner scanner; - private ErrorHandler errorHandler; public void Run(Scanner scanner) { - // ์—๋Ÿฌ์‹œ ๋ฌดํ•œ ๋ฃจํ”„(์ผ๋‹จ ๋ณด๋ฅ˜) this.scanner = scanner; - while(isRun) { + while (isRun) { outputView = new OutputView(); inputView = new InputView(); - errorHandler = new ErrorHandler(); - startMain(scanner); + startMain(); } } - private void startMain(Scanner scanner) { + private void startMain() { outputView.printMainScreen(); inputView.scanData(scanner); - try{ - errorHandler.validateMainInput(inputView.getInputData()); - } catch(IllegalArgumentException E) { - outputView.printStartMainError(); - startMain(scanner); - } - // + validateSign(inputView.getInputData(), + t -> MainSign.validateSign(t), + () -> startMain()); chooseFunctionInMain(inputView.getInputData()); } private void chooseFunctionInMain(String inputData) { - if(inputData.equals("1")) { + if (inputData.equals(MainSign.STATION_MANAGEMENT.getSign())) { startStationManagement(); } - if(inputData.equals("2")) { + if (inputData.equals(MainSign.LINE_MANAGEMENT.getSign())) { startLineManagement(); } - if(inputData.equals("3")) { + if (inputData.equals(MainSign.SECTION_MANAGEMENT.getSign())) { startSectionManagement(); } - if(inputData.equals("4")) { + if (inputData.equals(MainSign.PRINT_SUBWAY_ROUTE.getSign())) { outputView.printSubwaySections(); } - if(inputData.equalsIgnoreCase("Q")) { + if (inputData.equalsIgnoreCase(MainSign.CLOSE_MAIN.getSign())) { isRun = false; } } - private void startStationManagement() { outputView.printStationManagementScreen(); inputView.scanData(scanner); + validateSign(inputView.getInputData(), + t -> StationManagementSign.validateSign(t), + () -> startStationManagement()); chooseFunctionInStationManagement(inputView.getInputData()); } private void chooseFunctionInStationManagement(String inputData) { - if(inputData.equals("1")) { - outputView.guideAddStation(); - inputView.scanData(scanner); - StationRepository.addStation(new Station(inputView.getInputData())); - System.out.println("๊ฒฐ๊ณผ์ฐฝ ์ถœ๋ ฅ ์ˆ˜์ •ํ•„์š”!"); - startMain(scanner); - } - if(inputData.equals("2")) { - outputView.guideDeleteStation(); - inputView.scanData(scanner); - StationRepository.deleteStation(inputView.getInputData()); - System.out.println("๊ฒฐ๊ณผ์ฐฝ ์ถœ๋ ฅ ์ˆ˜์ •ํ•„์š”!"); - startMain(scanner); - } - if(inputData.equals("3")) { + if (inputData.equals(StationManagementSign.ADD_STATION.getSign())) { + addStation(); + System.out.println("addStation ๋"); + outputView.infoAddStation(); + } + if (inputData.equals(StationManagementSign.DELETE_STATION.getSign())) { + deleteStation(); + outputView.infoDeleteStation(); + } + if (inputData.equals(StationManagementSign.SHOW_STATIONS.getSign())) { outputView.printAllStations(); } - if(inputData.equalsIgnoreCase("B")) { - startMain(scanner); + if (inputData.equalsIgnoreCase(StationManagementSign.BACK_TO_MAIN.getSign())) { + startMain(); + } + } + + private void addStation() { + outputView.guideAddStation(); + inputView.scanData(scanner); + String name = inputView.getInputData(); + validateStationName(name, () -> addStation()); + validateStationDuplicate(name, () -> addStation()); + StationRepository.addStation(new Station(name)); + } + + private void validateSign(String inputData, Consumer tryExpression, Runnable catchExpression) { + try { + tryExpression.accept(inputData); + } catch (IllegalArgumentException E) { + outputView.errorChooseFunction(); + catchExpression.run(); + } + } + + private void validateStationName(String inputData, Runnable catchExpression) { + try { + ErrorHandler.validateStationNameFormat(inputData); + } catch (IllegalArgumentException E) { + outputView.errorStationFormat(); + catchExpression.run(); + } + } + + private void validateStationDuplicate(String inputData, Runnable catchExpression) { + try { + ErrorHandler.validateStationDuplicate(inputData); + } catch (IllegalArgumentException E) { + outputView.errorStationDuplicate(); + catchExpression.run(); + } + } + + private void validateStationRegistered(String inputData, Runnable catchExpression) { + try { + ErrorHandler.validateStationRegistered(inputData); + } catch (IllegalArgumentException E) { + outputView.errorDeleteStationNotRegistered(); + catchExpression.run(); } } + private void deleteStation() { + outputView.guideDeleteStation(); + inputView.scanData(scanner); + validateStationName(inputView.getInputData(), () -> deleteStation()); + validateStationRegistered(inputView.getInputData(), () -> deleteStation()); + StationRepository.deleteStation(inputView.getInputData()); + LineRepository.deleteStationInLine(inputView.getInputData()); + + } + private void startLineManagement() { outputView.printLineManagementScreen(); inputView.scanData(scanner); + validateSign(inputView.getInputData(), + t -> LineManagementSign.validateSign(t), + () -> startLineManagement()); chooseFunctionInLineManagement(inputView.getInputData()); } private void chooseFunctionInLineManagement(String inputData) { - if(inputData.equals("1")) { - outputView.guideAddLineName(); - inputView.scanData(scanner); - //๊ฒ€์‚ฌ - LineRepository.addLine(new Line(inputData)); - System.out.println(); - - outputView.guideAddLineUpwardTerminal(); - inputView.scanData(scanner); - //๊ฒ€์‚ฌ - LineRepository.getLine(inputData).setUpwardStation(StationRepository.getStation(inputData)); - System.out.println(); - - outputView.guideAddLineDownwardTerminal(); - inputView.scanData(scanner); - //๊ฒ€์‚ฌ - LineRepository.getLine(inputData).setDownwardStation(StationRepository.getStation(inputData)); - System.out.println(); - } - if(inputData.equals("2")) { - outputView.guideDeleteLine(); - inputView.scanData(scanner); - //๊ฒ€์‚ฌ - LineRepository.deleteLineByName(inputView.getInputData()); - System.out.println(); - } - if(inputData.equals("3")) { + if (inputData.equals(LineManagementSign.ADD_LINE.getSign())) { + addLine(); + addUpwardTerminal(); + addDownwardTerminal(); + outputView.infoAddLine(); + } + if (inputData.equals(LineManagementSign.DELETE_LINE.getSign())) { + deleteLine(); + outputView.infoDeleteLine(); + } + if (inputData.equals(LineManagementSign.SHOW_LINES.getSign())) { outputView.printAllLines(); } - if(inputData.equalsIgnoreCase("B")) { - startMain(scanner); + if (inputData.equalsIgnoreCase(LineManagementSign.BACK_TO_MAIN.getSign())) { + startMain(); } + } + private void addLine() { + outputView.guideAddLineName(); + inputView.scanData(scanner); + String name = inputView.getInputData(); + validateLineName(name, () -> addLine()); + validateLineDuplicate(name, () -> addLine()); + LineRepository.addLine(new Line(name)); + } + + private void addUpwardTerminal() { + outputView.guideAddLineUpwardTerminal(); + inputView.scanData(scanner); + String name = inputView.getInputData(); + validateStationName(name, () -> addUpwardTerminal()); + validateStationRegistered(name, () -> addUpwardTerminal()); + LineRepository.getNewLine().addSectionByStation(StationRepository.getStation(name)); + } + + private void addDownwardTerminal() { + outputView.guideAddLineDownwardTerminal(); + inputView.scanData(scanner); + String name = inputView.getInputData(); + validateStationName(name, () -> addDownwardTerminal()); + validateStationRegistered(name, () -> addDownwardTerminal()); + LineRepository.getNewLine().addSectionByStation(StationRepository.getStation(name)); + } + + private void deleteLine() { + outputView.guideDeleteLine(); + inputView.scanData(scanner); + String name = inputView.getInputData(); + validateLineName(name, () -> deleteLine()); + validateLineRegistered(name, () -> deleteLine()); + LineRepository.deleteLineByName(inputView.getInputData()); + } + + private void validateLineName(String inputData, Runnable catchExpression) { + try { + ErrorHandler.validateLineNameFormat(inputData); + } catch (IllegalArgumentException E) { + outputView.errorLineFormat(); + catchExpression.run(); + } + } + + private void validateLineDuplicate(String inputData, Runnable catchExpression) { + try { + ErrorHandler.validateLineDuplicate(inputData); + } catch (IllegalArgumentException E) { + outputView.errorLineDuplicate(); + catchExpression.run(); + } + } + + private void validateLineRegistered(String inputData, Runnable catchExpression) { + try { + ErrorHandler.validateLineRegistered(inputData); + } catch (IllegalArgumentException E) { + outputView.errorDeleteLineNotRegistered(); + catchExpression.run(); + } } private void startSectionManagement() { outputView.printSectionManagementScreen(); inputView.scanData(scanner); + validateSign(inputView.getInputData(), + t -> SectionManagementSign.validateSign(t), + () -> startSectionManagement()); chooseFunctionInSectionManagement(inputView.getInputData()); } private void chooseFunctionInSectionManagement(String inputData) { - if(inputData.equals("1")) { - outputView.guideAddRouteLine(); - inputView.scanData(scanner); - //๊ฒ€์‚ฌ - Line line = LineRepository.getLine(inputView.getInputData()); - System.out.println(); - - outputView.guideAddRouteStation(); - inputView.scanData(scanner); - //๊ฒ€์‚ฌ - Station station = StationRepository.getStation(inputData); - System.out.println(); - - outputView.guideAddRouteOrder(); - inputView.scanData(scanner); - // ๊ฒ€์‚ฌ ํ›„ int๋กœ ํ˜•๋ณ€ํ™˜ - line.addSectionByOrderAndStation(Integer.parseInt(inputView.getInputData()), station); - System.out.println("๊ฒฐ๊ณผ ์ถœ๋ ฅ ์ˆ˜์ •ํ•„์š”!"); - } - if(inputData.equals("2")) { - outputView.guideDeleteRouteLine(); - inputView.scanData(scanner); - //๊ฒ€์‚ฌ - Line line = LineRepository.getLine(inputData); - System.out.println(); - - outputView.guideDeleteRouteStation(); - inputView.scanData(scanner); - //๊ฒ€์‚ฌ - line.deleteSectionByName(inputView.getInputData()); - } - if(inputData.equalsIgnoreCase("B")) { - startMain(scanner); + if (inputData.equals(SectionManagementSign.ADD_SECTION.getSign())) { + addSection(); + outputView.infoAddSection(); + } + if (inputData.equals(SectionManagementSign.DELETE_SECTION.getSign())) { + deleteSection(); + outputView.infoDeleteSection(); + } + if (inputData.equalsIgnoreCase(SectionManagementSign.BACK_TO_MAIN.getSign())) { + startMain(); + } + } + + private void addSection() { + Line line; + Station station; + int order; + line = addCheckLine(); + station = addCheckStation(line); + order = addcheckOrder(line); + line.addSectionByOrderAndStation(order, station); + } + + private Line addCheckLine() { + outputView.guideCheckLine(); + inputView.scanData(scanner); + String name = inputView.getInputData(); + validateLineName(name, () -> addSection()); + validateLineRegistered(name, () -> addSection()); + return LineRepository.getLine(name); + } + + private Station addCheckStation(Line line) { + outputView.guideCheckSectionStation(); + inputView.scanData(scanner); + String name = inputView.getInputData(); + validateStationName(name, () -> addSection()); + validateStationRegistered(name, () -> addSection()); + validateStationDuplicateInLine(StationRepository.getStation(name), line, () -> addSection()); + return StationRepository.getStation(name); + } + + private int addcheckOrder(Line line) { + outputView.guideCheckSectionOrder(); + inputView.scanData(scanner); + String order = inputView.getInputData(); + validateOrder(order, line, () -> addSection()); + return Integer.parseInt(order); + } + + private void validateStationDuplicateInLine(Station station, Line line, Runnable expression) { + try { + ErrorHandler.validateStationDuplicateInLine(station, line); + } catch (IllegalArgumentException E) { + outputView.errorStationDuplicate(); + expression.run(); + } + } + + private void validateOrder(String order, Line line, Runnable expression) { + try { + ErrorHandler.validateOrder(order, line); + } catch (NumberFormatException E) { + outputView.errorParseIntOrder(); + expression.run(); + } catch (IllegalArgumentException E) { + outputView.errorInBoundOrder(); + expression.run(); + } + } + + private void deleteSection() { + Line line = deleteCheckLine(); + Station station = deleteCheckStation(line); + line.deleteSectionByName(station.getName()); + } + + private Line deleteCheckLine() { + outputView.guideDeleteSectionLine(); + inputView.scanData(scanner); + String name = inputView.getInputData(); + validateLineName(name, () -> deleteSection()); + validateLineRegistered(name, () -> deleteSection()); + return LineRepository.getLine(name); + } + + private Station deleteCheckStation(Line line) { + outputView.guideDeleteSectionStation(); + inputView.scanData(scanner); + String name = inputView.getInputData(); + validateStationName(name, () -> deleteSection()); + validateStationRegistered(name, () -> deleteSection()); + validateStationRegisteredInLine(StationRepository.getStation(name), line, () -> deleteSection()); + return StationRepository.getStation(name); + } + + private void validateStationRegisteredInLine(Station station, Line line, Runnable expression) { + try { + ErrorHandler.validateStationRegisteredInLine(station, line); + } catch (IllegalArgumentException E) { + outputView.errorStationDuplicate(); + expression.run(); } } }