From 0433d411e94ec21cd584e68194c1db5faa241476 Mon Sep 17 00:00:00 2001
From: 100-yeeun <100yeeun@gmail.com>
Date: Mon, 14 Dec 2020 17:19:04 +0900
Subject: [PATCH 1/7] =?UTF-8?q?docs:=20README=EC=97=90=20=EA=B8=B0?=
=?UTF-8?q?=EB=8A=A5=20=EB=AA=A9=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
---
README.md => docs/README.md | 37 ++++++++++++++++++++++++++++++++++---
1 file changed, 34 insertions(+), 3 deletions(-)
rename README.md => docs/README.md (90%)
diff --git a/README.md b/docs/README.md
similarity index 90%
rename from README.md
rename to docs/README.md
index 00410ae50..563b952b6 100644
--- a/README.md
+++ b/docs/README.md
@@ -3,6 +3,37 @@
+## ๐พ ๊ธฐ๋ฅ ๋ชฉ๋ก `new`
+
+- ํ๋ก๊ทธ๋จ ์์
+ - ์ด๊ธฐ ์ ๋ณด ๋ฑ๋ก
+- ์งํ์ฒ ์ญ ๊ด๋ จ ๊ธฐ๋ฅ
+ - ์ญ ์ด๋ฆ์ด 2์ ์ด์, 5์ ์ดํ์ธ์ง ๊ฒ์ฆ
+ - ์ค๋ณต๋ ์ญ ์ด๋ฆ์ด ์๋์ง ๊ฒ์ฆ
+ - ์ญ ๋ฑ๋ก
+ - ์ญ ์ญ์
+ - `static` ์ญ ๋ชฉ๋ก ์กฐํ
+- ์งํ์ฒ ๋
ธ์ ๊ด๋ จ ๊ธฐ๋ฅ
+ - ๋
ธ์ ์ด๋ฆ์ด 2์ ์ด์, 5์ ์ดํ์ธ์ง ๊ฒ์ฆ
+ - ์ค๋ณต๋ ๋
ธ์ ์ด๋ฆ์ด ์๋์ง ๊ฒ์ฆ
+ - ๋
ธ์ ๋ฑ๋ก
+ - ์ํ, ํํ ์ข
์ ์ญ ์กด์ฌ ์ฌ๋ถ ๊ฒ์ฆ
+ - ๋
ธ์ ์ญ์
+ - `static` ๋
ธ์ ๋ชฉ๋ก ์กฐํ
+- ์งํ์ฒ ๊ตฌ๊ฐ ๊ด๋ จ ๊ธฐ๋ฅ
+ - ๊ตฌ๊ฐ ๋ฑ๋ก
+ - ๋
ธ์ ์กด์ฌ ์ฌ๋ถ ๊ฒ์ฆ
+ - ์ญ ์กด์ฌ ์ฌ๋ถ ๊ฒ์ฆ
+ - ๋
ธ์ ๋ด ์ญ ์กด์ฌ ์ฌ๋ถ ๊ฒ์ฆ
+ - ์ํ, ํํ ์ข
์ ์ผ ๊ฒฝ์ฐ ๊ฐ๋ฅ
+ - ์ํํ ์ฌ๋ถ ํ์ธ ๋ฐ ๋ณ๊ฒฝ
+ - ๊ตฌ๊ฐ ์ญ์
+ - ๋
ธ์ ์กด์ฌ ์ฌ๋ถ ๊ฒ์ฆ
+ - ์ญ ์กด์ฌ ์ฌ๋ถ ๊ฒ์ฆ
+ - ๋
ธ์ ๋ด ์ญ 2๊ฐ ์ด๊ณผ์ธ์ง ๊ฒ์ฆ
+ - ์ํํ ์ฌ๋ถ ํ์ธ ๋ฐ ๋ณ๊ฒฝ
+- ๋
ธ์ ๋ ์กฐํ
+
## ๐ ๊ธฐ๋ฅ ์๊ตฌ์ฌํญ
### ์ด๊ธฐ ์ค์
@@ -19,7 +50,7 @@
- ์ ๋ถ๋น์ : ๊ฐ๋จ์ญ - ์์ฌ์ญ - ์์ฌ์๋ฏผ์์ฒ์ญ
```
-
+
### ์งํ์ฒ ์ญ ๊ด๋ จ ๊ธฐ๋ฅ
- ์งํ์ฒ ์ญ์ ๋ฑ๋กํ๊ณ ์ญ์ ํ ์ ์๋ค. (๋จ, ๋
ธ์ ์ ๋ฑ๋ก๋ ์ญ์ ์ญ์ ํ ์ ์๋ค)
@@ -41,14 +72,14 @@
- ์ญ๊ณผ ์ญ ์ฌ์ด์ ์๋ก์ด ์ญ์ด ์ถ๊ฐ ๋ ์ ์๋ค.
- ๋
ธ์ ์์ ๊ฐ๋๊ธธ์ ์๊ธธ ์ ์๋ค.
-
+
### ์งํ์ฒ ๊ตฌ๊ฐ ์ญ์ ๊ธฐ๋ฅ
- ๋
ธ์ ์ ๋ฑ๋ก๋ ์ญ์ ์ ๊ฑฐํ ์ ์๋ค.
- ์ข
์ ์ ์ ๊ฑฐํ ๊ฒฝ์ฐ ๋ค์ ์ญ์ด ์ข
์ ์ด ๋๋ค.
- ๋
ธ์ ์ ํฌํจ๋ ์ญ์ด ๋๊ฐ ์ดํ์ผ ๋๋ ์ญ์ ์ ๊ฑฐํ ์ ์๋ค.
-
+
### ์งํ์ฒ ๋
ธ์ ์ ๋ฑ๋ก๋ ์ญ ์กฐํ ๊ธฐ๋ฅ
- ๋
ธ์ ์ ์ํ ์ข
์ ๋ถํฐ ํํ ์ข
์ ๊น์ง ์ฐ๊ฒฐ๋ ์์๋๋ก ์ญ ๋ชฉ๋ก์ ์กฐํํ ์ ์๋ค.
From 39bb85521f6bea81429ee3c5c0d13d505898e38b Mon Sep 17 00:00:00 2001
From: 100-yeeun <100yeeun@gmail.com>
Date: Tue, 15 Dec 2020 14:09:20 +0900
Subject: [PATCH 2/7] =?UTF-8?q?feat:=20=EC=8B=9C=EC=9E=91=20=EC=9E=85?=
=?UTF-8?q?=EC=B6=9C=EB=A0=A5=20view=20=EA=B5=AC=ED=98=84?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
ํ์ script์ ๋ฆฌํ ScriptUtils ์์ฑ
main, station, line, section ๋ด์ Category Enum ์์ฑ
MainController๋ฅผ ์ด์ฉํด View ํธ์ถ
---
docs/README.md | 2 +
src/main/java/subway/Application.java | 4 +-
.../subway/controller/MainController.java | 15 ++++++
.../{ => repository}/LineRepository.java | 3 +-
.../{ => repository}/StationRepository.java | 3 +-
src/main/java/subway/view/BaseView.java | 48 +++++++++++++++++++
src/main/java/utils/Category.java | 5 ++
src/main/java/utils/ScriptUtils.java | 13 +++++
8 files changed, 90 insertions(+), 3 deletions(-)
create mode 100644 src/main/java/subway/controller/MainController.java
rename src/main/java/subway/domain/{ => repository}/LineRepository.java (89%)
rename src/main/java/subway/domain/{ => repository}/StationRepository.java (89%)
create mode 100644 src/main/java/subway/view/BaseView.java
create mode 100644 src/main/java/utils/Category.java
create mode 100644 src/main/java/utils/ScriptUtils.java
diff --git a/docs/README.md b/docs/README.md
index 563b952b6..770ab3765 100644
--- a/docs/README.md
+++ b/docs/README.md
@@ -7,6 +7,8 @@
- ํ๋ก๊ทธ๋จ ์์
- ์ด๊ธฐ ์ ๋ณด ๋ฑ๋ก
+ - ๋ชฉ๋ก UI
+ - ๋ชฉ๋ก ๋ด ๋ฒํธ์ธ์ง ๊ฒ์ฆ
- ์งํ์ฒ ์ญ ๊ด๋ จ ๊ธฐ๋ฅ
- ์ญ ์ด๋ฆ์ด 2์ ์ด์, 5์ ์ดํ์ธ์ง ๊ฒ์ฆ
- ์ค๋ณต๋ ์ญ ์ด๋ฆ์ด ์๋์ง ๊ฒ์ฆ
diff --git a/src/main/java/subway/Application.java b/src/main/java/subway/Application.java
index 0bcf786cc..b338bf31c 100644
--- a/src/main/java/subway/Application.java
+++ b/src/main/java/subway/Application.java
@@ -1,10 +1,12 @@
package subway;
import java.util.Scanner;
+import subway.controller.MainController;
public class Application {
public static void main(String[] args) {
final Scanner scanner = new Scanner(System.in);
- // TODO: ํ๋ก๊ทธ๋จ ๊ตฌํ
+
+ MainController.startProgram(scanner);
}
}
diff --git a/src/main/java/subway/controller/MainController.java b/src/main/java/subway/controller/MainController.java
new file mode 100644
index 000000000..82a214dde
--- /dev/null
+++ b/src/main/java/subway/controller/MainController.java
@@ -0,0 +1,15 @@
+package subway.controller;
+
+import java.util.Scanner;
+import subway.view.BaseView;
+import utils.ScriptUtils;
+
+public class MainController {
+ private MainController() {}
+
+ public static void startProgram(Scanner scanner) {
+ BaseView mainView = new BaseView();
+ mainView.printMenu(ScriptUtils.MAIN_MENU);
+ mainView.selectMenu(scanner);
+ }
+}
diff --git a/src/main/java/subway/domain/LineRepository.java b/src/main/java/subway/domain/repository/LineRepository.java
similarity index 89%
rename from src/main/java/subway/domain/LineRepository.java
rename to src/main/java/subway/domain/repository/LineRepository.java
index 49132ddb6..83815e82b 100644
--- a/src/main/java/subway/domain/LineRepository.java
+++ b/src/main/java/subway/domain/repository/LineRepository.java
@@ -1,9 +1,10 @@
-package subway.domain;
+package subway.domain.repository;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Objects;
+import subway.domain.Line;
public class LineRepository {
private static final List lines = new ArrayList<>();
diff --git a/src/main/java/subway/domain/StationRepository.java b/src/main/java/subway/domain/repository/StationRepository.java
similarity index 89%
rename from src/main/java/subway/domain/StationRepository.java
rename to src/main/java/subway/domain/repository/StationRepository.java
index b7245c0f3..53292d471 100644
--- a/src/main/java/subway/domain/StationRepository.java
+++ b/src/main/java/subway/domain/repository/StationRepository.java
@@ -1,9 +1,10 @@
-package subway.domain;
+package subway.domain.repository;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Objects;
+import subway.domain.Station;
public class StationRepository {
private static final List stations = new ArrayList<>();
diff --git a/src/main/java/subway/view/BaseView.java b/src/main/java/subway/view/BaseView.java
new file mode 100644
index 000000000..c429c1ec3
--- /dev/null
+++ b/src/main/java/subway/view/BaseView.java
@@ -0,0 +1,48 @@
+package subway.view;
+
+import java.util.Arrays;
+import java.util.List;
+import java.util.Scanner;
+import utils.Category;
+import utils.ScriptUtils;
+
+public class BaseView {
+ public static final int EXIT = 0;
+ public static final int ERROR = -1;
+ public static final int START = 1;
+ public static final int[] LENGTH_OF_MENU = {4, 3, 3, 2};
+ List gameExitValue = Arrays.asList("Q", "q");
+
+ public BaseView() {
+ }
+
+ public void printMenu(String script) {
+ System.out.println(script);
+ }
+
+ public int selectMenu(Scanner scanner) {
+ System.out.println(ScriptUtils.ASK_SELECTION);
+ String input = scanner.nextLine();
+
+ if (gameExitValue.contains(input)) {
+ return EXIT;
+ }
+
+ return validateSelection(input);
+ }
+
+ public int validateSelection(String input) {
+ int number;
+
+ try {
+ number = Integer.parseInt(input);
+ if (number < START || number > LENGTH_OF_MENU[Category.MAIN.ordinal()]) {
+ throw new IllegalArgumentException();
+ }
+ } catch (IllegalArgumentException e) {
+ System.out.println(ScriptUtils.ERROR_OUT_OF_VALUE);
+ return ERROR;
+ }
+ return number;
+ }
+}
diff --git a/src/main/java/utils/Category.java b/src/main/java/utils/Category.java
new file mode 100644
index 000000000..d466a1e19
--- /dev/null
+++ b/src/main/java/utils/Category.java
@@ -0,0 +1,5 @@
+package utils;
+
+public enum Category {
+ MAIN, STATION, LINE, SECTION
+}
diff --git a/src/main/java/utils/ScriptUtils.java b/src/main/java/utils/ScriptUtils.java
new file mode 100644
index 000000000..4058b7ba1
--- /dev/null
+++ b/src/main/java/utils/ScriptUtils.java
@@ -0,0 +1,13 @@
+package utils;
+
+public class ScriptUtils {
+
+ public static final String MAIN_MENU = "## ๋ฉ์ธ ํ๋ฉด\n"
+ + "1. ์ญ ๊ด๋ฆฌ\n"
+ + "2. ๋
ธ์ ๊ด๋ฆฌ\n"
+ + "3. ๊ตฌ๊ฐ ๊ด๋ฆฌ\n"
+ + "4. ์งํ์ฒ ๋
ธ์ ๋ ์ถ๋ ฅ\n"
+ + "Q. ์ข
๋ฃ\n";
+ public static final String ASK_SELECTION = "## ์ํ๋ ๊ธฐ๋ฅ์ ์ ํํ์ธ์.";
+ public static final String ERROR_OUT_OF_VALUE = "[ERROR] ์ ํํ ์ ์๋ ๊ธฐ๋ฅ์
๋๋ค.";
+}
From 79b31d036dc91c21a1c9ef209054e5ccb8c49949 Mon Sep 17 00:00:00 2001
From: 100-yeeun <100yeeun@gmail.com>
Date: Tue, 15 Dec 2020 16:52:15 +0900
Subject: [PATCH 3/7] =?UTF-8?q?feat:=20=EB=A9=94=EB=89=B4=20=EC=84=A0?=
=?UTF-8?q?=ED=83=9D=EC=8B=9C=20=ED=95=B4=EB=8B=B9=20=EA=B4=80=EB=A6=AC?=
=?UTF-8?q?=EB=A9=94=EB=89=B4=EB=A1=9C=20=EC=97=B0=EA=B2=B0?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/main/java/subway/Application.java | 4 +-
.../subway/controller/MainController.java | 15 ------
.../subway/controller/MenuController.java | 46 +++++++++++++++++++
.../subway/controller/StationController.java | 15 ++++++
src/main/java/subway/view/DetailView.java | 13 ++++++
.../view/{BaseView.java => MenuView.java} | 28 +++++++----
src/main/java/utils/ScriptUtils.java | 14 +++---
7 files changed, 101 insertions(+), 34 deletions(-)
delete mode 100644 src/main/java/subway/controller/MainController.java
create mode 100644 src/main/java/subway/controller/MenuController.java
create mode 100644 src/main/java/subway/controller/StationController.java
create mode 100644 src/main/java/subway/view/DetailView.java
rename src/main/java/subway/view/{BaseView.java => MenuView.java} (58%)
diff --git a/src/main/java/subway/Application.java b/src/main/java/subway/Application.java
index b338bf31c..ebc1cb281 100644
--- a/src/main/java/subway/Application.java
+++ b/src/main/java/subway/Application.java
@@ -1,12 +1,12 @@
package subway;
import java.util.Scanner;
-import subway.controller.MainController;
+import subway.controller.MenuController;
public class Application {
public static void main(String[] args) {
final Scanner scanner = new Scanner(System.in);
- MainController.startProgram(scanner);
+ MenuController.runProgram(scanner);
}
}
diff --git a/src/main/java/subway/controller/MainController.java b/src/main/java/subway/controller/MainController.java
deleted file mode 100644
index 82a214dde..000000000
--- a/src/main/java/subway/controller/MainController.java
+++ /dev/null
@@ -1,15 +0,0 @@
-package subway.controller;
-
-import java.util.Scanner;
-import subway.view.BaseView;
-import utils.ScriptUtils;
-
-public class MainController {
- private MainController() {}
-
- public static void startProgram(Scanner scanner) {
- BaseView mainView = new BaseView();
- mainView.printMenu(ScriptUtils.MAIN_MENU);
- mainView.selectMenu(scanner);
- }
-}
diff --git a/src/main/java/subway/controller/MenuController.java b/src/main/java/subway/controller/MenuController.java
new file mode 100644
index 000000000..e3cfc4c76
--- /dev/null
+++ b/src/main/java/subway/controller/MenuController.java
@@ -0,0 +1,46 @@
+package subway.controller;
+
+import java.util.Scanner;
+import subway.view.DetailView;
+import subway.view.MenuView;
+import utils.Category;
+
+public class MenuController {
+ private MenuController() {}
+
+ public static void runProgram(Scanner scanner) {
+ MenuView mainView = new MenuView();
+ int stopOption = MenuView.RETRY;
+ while (stopOption < MenuView.EXIT) {
+ mainView.printMenu();
+ int selection = mainView.selectMenu(scanner);
+ if (selection <= MenuView.EXIT) {
+ stopOption = selection;
+ continue;
+ }
+ showSelectedView(selection, scanner);
+ }
+ }
+
+ private static void showSelectedView(int categoryNumber, Scanner scanner) {
+ Category category = Category.values()[categoryNumber];
+ MenuView selectedView = new MenuView(category);
+ int stopOption = MenuView.RETRY;
+ while (stopOption != MenuView.EXIT) {
+ selectedView.printMenu();
+ int selection = selectedView.selectMenu(scanner);
+ if (selection <= MenuView.EXIT) {
+ stopOption = selection;
+ continue;
+ }
+ executeSelection(category, selection, scanner);
+ }
+ }
+
+ public static void executeSelection(Category category, int selection, Scanner scanner) {
+ if (category == Category.STATION) {
+ StationController.startStationManagement(scanner, selection);
+ }
+
+ }
+}
diff --git a/src/main/java/subway/controller/StationController.java b/src/main/java/subway/controller/StationController.java
new file mode 100644
index 000000000..203d1194c
--- /dev/null
+++ b/src/main/java/subway/controller/StationController.java
@@ -0,0 +1,15 @@
+package subway.controller;
+
+import java.util.Scanner;
+import subway.view.DetailView;
+import utils.Category;
+
+public class StationController {
+
+ private static final Category category = Category.STATION;
+ private StationController() {}
+
+ public static void startStationManagement(Scanner scanner, int selection) {
+ DetailView stationView = new DetailView(category);
+ }
+}
diff --git a/src/main/java/subway/view/DetailView.java b/src/main/java/subway/view/DetailView.java
new file mode 100644
index 000000000..b54abeb0d
--- /dev/null
+++ b/src/main/java/subway/view/DetailView.java
@@ -0,0 +1,13 @@
+package subway.view;
+
+import java.util.Scanner;
+import utils.Category;
+
+public class DetailView {
+ private Category category;
+
+ public DetailView(Category category) {
+ this.category = category;
+ }
+
+}
diff --git a/src/main/java/subway/view/BaseView.java b/src/main/java/subway/view/MenuView.java
similarity index 58%
rename from src/main/java/subway/view/BaseView.java
rename to src/main/java/subway/view/MenuView.java
index c429c1ec3..52c381758 100644
--- a/src/main/java/subway/view/BaseView.java
+++ b/src/main/java/subway/view/MenuView.java
@@ -6,28 +6,36 @@
import utils.Category;
import utils.ScriptUtils;
-public class BaseView {
+public class MenuView {
public static final int EXIT = 0;
- public static final int ERROR = -1;
+ public static final int RETRY = -1;
public static final int START = 1;
public static final int[] LENGTH_OF_MENU = {4, 3, 3, 2};
- List gameExitValue = Arrays.asList("Q", "q");
- public BaseView() {
+ private Category category;
+ List exitValue;
+
+ public MenuView() {
+ this.category = Category.MAIN;
+ this.exitValue = Arrays.asList("Q", "q");
+ }
+
+ public MenuView(Category category) {
+ this.category = category;
+ this.exitValue = Arrays.asList("B", "b");
}
- public void printMenu(String script) {
- System.out.println(script);
+ public void printMenu() {
+ System.out.println(ScriptUtils.MENUS[category.ordinal()]);
}
public int selectMenu(Scanner scanner) {
System.out.println(ScriptUtils.ASK_SELECTION);
String input = scanner.nextLine();
- if (gameExitValue.contains(input)) {
+ if (exitValue.contains(input)) {
return EXIT;
}
-
return validateSelection(input);
}
@@ -36,12 +44,12 @@ public int validateSelection(String input) {
try {
number = Integer.parseInt(input);
- if (number < START || number > LENGTH_OF_MENU[Category.MAIN.ordinal()]) {
+ if (number < START || number > LENGTH_OF_MENU[category.ordinal()]) {
throw new IllegalArgumentException();
}
} catch (IllegalArgumentException e) {
System.out.println(ScriptUtils.ERROR_OUT_OF_VALUE);
- return ERROR;
+ return RETRY;
}
return number;
}
diff --git a/src/main/java/utils/ScriptUtils.java b/src/main/java/utils/ScriptUtils.java
index 4058b7ba1..6450f9367 100644
--- a/src/main/java/utils/ScriptUtils.java
+++ b/src/main/java/utils/ScriptUtils.java
@@ -2,12 +2,12 @@
public class ScriptUtils {
- public static final String MAIN_MENU = "## ๋ฉ์ธ ํ๋ฉด\n"
- + "1. ์ญ ๊ด๋ฆฌ\n"
- + "2. ๋
ธ์ ๊ด๋ฆฌ\n"
- + "3. ๊ตฌ๊ฐ ๊ด๋ฆฌ\n"
- + "4. ์งํ์ฒ ๋
ธ์ ๋ ์ถ๋ ฅ\n"
- + "Q. ์ข
๋ฃ\n";
+ public static final String[] MENUS = {
+ "## ๋ฉ์ธ ํ๋ฉด\n1. ์ญ ๊ด๋ฆฌ\n2. ๋
ธ์ ๊ด๋ฆฌ\n3. ๊ตฌ๊ฐ ๊ด๋ฆฌ\n4. ์งํ์ฒ ๋
ธ์ ๋ ์ถ๋ ฅ\nQ. ์ข
๋ฃ\n",
+ "\n## ์ญ ๊ด๋ฆฌ ํ๋ฉด\n1. ์ญ ๋ฑ๋ก\n2. ์ญ ์ญ์ \n3. ์ญ ์กฐํ\nB. ๋์๊ฐ๊ธฐ\n",
+ "\n## ๋
ธ์ ๊ด๋ฆฌ ํ๋ฉด\n1. ๋
ธ์ ๋ฑ๋ก\n2. ๋
ธ์ ์ญ์ \n3. ๋
ธ์ ์กฐํ\nB. ๋์๊ฐ๊ธฐ\n",
+ "\n## ๊ตฌ๊ฐ ๊ด๋ฆฌ ํ๋ฉด\n1. ๊ตฌ๊ฐ ๋ฑ๋ก\n2. ๊ตฌ๊ฐ ์ญ์ \nB. ๋์๊ฐ๊ธฐ\n"
+ };
public static final String ASK_SELECTION = "## ์ํ๋ ๊ธฐ๋ฅ์ ์ ํํ์ธ์.";
- public static final String ERROR_OUT_OF_VALUE = "[ERROR] ์ ํํ ์ ์๋ ๊ธฐ๋ฅ์
๋๋ค.";
+ public static final String ERROR_OUT_OF_VALUE = "\n[ERROR] ์ ํํ ์ ์๋ ๊ธฐ๋ฅ์
๋๋ค.\n";
}
From fb88f1feb60b7ff8f8c2757de390fa421e7657f8 Mon Sep 17 00:00:00 2001
From: 100-yeeun <100yeeun@gmail.com>
Date: Tue, 15 Dec 2020 18:42:39 +0900
Subject: [PATCH 4/7] =?UTF-8?q?feat:=20station=20=EA=B4=80=EB=A0=A8=20?=
=?UTF-8?q?=EA=B8=B0=EB=8A=A5?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
docs/README.md | 4 +--
.../subway/controller/MenuController.java | 3 +-
.../subway/controller/StationController.java | 23 ++++++++++--
.../domain/repository/StationRepository.java | 4 +++
.../subway/domain/service/StationService.java | 25 +++++++++++++
src/main/java/subway/view/DetailView.java | 35 +++++++++++++++++++
src/main/java/utils/Category.java | 8 ++++-
src/main/java/utils/ScriptUtils.java | 16 +++++++++
8 files changed, 111 insertions(+), 7 deletions(-)
create mode 100644 src/main/java/subway/domain/service/StationService.java
diff --git a/docs/README.md b/docs/README.md
index 770ab3765..4d709d7db 100644
--- a/docs/README.md
+++ b/docs/README.md
@@ -10,13 +10,13 @@
- ๋ชฉ๋ก UI
- ๋ชฉ๋ก ๋ด ๋ฒํธ์ธ์ง ๊ฒ์ฆ
- ์งํ์ฒ ์ญ ๊ด๋ จ ๊ธฐ๋ฅ
- - ์ญ ์ด๋ฆ์ด 2์ ์ด์, 5์ ์ดํ์ธ์ง ๊ฒ์ฆ
+ - ์ญ ์ด๋ฆ์ด 2์ ์ด์์ธ์ง ๊ฒ์ฆ
- ์ค๋ณต๋ ์ญ ์ด๋ฆ์ด ์๋์ง ๊ฒ์ฆ
- ์ญ ๋ฑ๋ก
- ์ญ ์ญ์
- `static` ์ญ ๋ชฉ๋ก ์กฐํ
- ์งํ์ฒ ๋
ธ์ ๊ด๋ จ ๊ธฐ๋ฅ
- - ๋
ธ์ ์ด๋ฆ์ด 2์ ์ด์, 5์ ์ดํ์ธ์ง ๊ฒ์ฆ
+ - ๋
ธ์ ์ด๋ฆ์ด 2์ ์ด์์ธ์ง ๊ฒ์ฆ
- ์ค๋ณต๋ ๋
ธ์ ์ด๋ฆ์ด ์๋์ง ๊ฒ์ฆ
- ๋
ธ์ ๋ฑ๋ก
- ์ํ, ํํ ์ข
์ ์ญ ์กด์ฌ ์ฌ๋ถ ๊ฒ์ฆ
diff --git a/src/main/java/subway/controller/MenuController.java b/src/main/java/subway/controller/MenuController.java
index e3cfc4c76..62bb2b5db 100644
--- a/src/main/java/subway/controller/MenuController.java
+++ b/src/main/java/subway/controller/MenuController.java
@@ -1,7 +1,6 @@
package subway.controller;
import java.util.Scanner;
-import subway.view.DetailView;
import subway.view.MenuView;
import utils.Category;
@@ -39,7 +38,7 @@ private static void showSelectedView(int categoryNumber, Scanner scanner) {
public static void executeSelection(Category category, int selection, Scanner scanner) {
if (category == Category.STATION) {
- StationController.startStationManagement(scanner, selection);
+ StationController.manageStation(scanner, selection);
}
}
diff --git a/src/main/java/subway/controller/StationController.java b/src/main/java/subway/controller/StationController.java
index 203d1194c..068921c9f 100644
--- a/src/main/java/subway/controller/StationController.java
+++ b/src/main/java/subway/controller/StationController.java
@@ -1,15 +1,34 @@
package subway.controller;
import java.util.Scanner;
+import subway.domain.service.StationService;
import subway.view.DetailView;
import utils.Category;
public class StationController {
+ public static final int ADD = 1;
+ public static final int DELETE = 2;
+ public static final int GET_LIST = 3;
private static final Category category = Category.STATION;
+ public static DetailView stationView = new DetailView(category);
+
private StationController() {}
- public static void startStationManagement(Scanner scanner, int selection) {
- DetailView stationView = new DetailView(category);
+ public static void manageStation(Scanner scanner, int selection) {
+ if (selection == GET_LIST) {
+ StationService.readStationList();
+ return;
+ }
+ stationView.ask(selection);
+ String answer = stationView.inputName(scanner, selection);
+ if (answer == null) {
+ return;
+ }
+ if (selection == ADD) {
+ StationService.createStation(answer);
+ return;
+ }
+ StationService.deleteStation(answer);
}
}
diff --git a/src/main/java/subway/domain/repository/StationRepository.java b/src/main/java/subway/domain/repository/StationRepository.java
index 53292d471..e66ce99dc 100644
--- a/src/main/java/subway/domain/repository/StationRepository.java
+++ b/src/main/java/subway/domain/repository/StationRepository.java
@@ -20,4 +20,8 @@ public static void addStation(Station station) {
public static boolean deleteStation(String name) {
return stations.removeIf(station -> Objects.equals(station.getName(), name));
}
+
+ public static boolean findNoStation(String name) {
+ return stations.stream().noneMatch(station -> Objects.equals(station.getName(), name));
+ }
}
diff --git a/src/main/java/subway/domain/service/StationService.java b/src/main/java/subway/domain/service/StationService.java
new file mode 100644
index 000000000..42728d1cd
--- /dev/null
+++ b/src/main/java/subway/domain/service/StationService.java
@@ -0,0 +1,25 @@
+package subway.domain.service;
+
+import subway.domain.Station;
+import subway.domain.repository.StationRepository;
+import utils.ScriptUtils;
+
+public class StationService {
+ private StationService() {}
+
+ public static void createStation(String name) {
+ Station station = new Station(name);
+ StationRepository.addStation(station);
+ }
+
+ public static void readStationList() {
+ System.out.println(ScriptUtils.STATION_LIST);
+ for (Station station : StationRepository.stations()) {
+ System.out.println(ScriptUtils.INFO + station.getName());
+ }
+ }
+
+ public static void deleteStation(String name) {
+ StationRepository.deleteStation(name);
+ }
+}
diff --git a/src/main/java/subway/view/DetailView.java b/src/main/java/subway/view/DetailView.java
index b54abeb0d..04ac96397 100644
--- a/src/main/java/subway/view/DetailView.java
+++ b/src/main/java/subway/view/DetailView.java
@@ -1,13 +1,48 @@
package subway.view;
import java.util.Scanner;
+import subway.domain.repository.StationRepository;
import utils.Category;
+import utils.ScriptUtils;
public class DetailView {
private Category category;
+ private int ADD = 1;
+ private int DELETE = 2;
public DetailView(Category category) {
this.category = category;
}
+ public void ask(int selection) {
+ System.out.println(ScriptUtils.ASK_ANSWER_FOR[category.ordinal()][selection-1]);
+ }
+
+ public String inputName(Scanner scanner, int selection) {
+ String input = scanner.nextLine();
+ try {
+ validateName(input);
+ return duplicateName(input, selection);
+ } catch (IllegalArgumentException e) {
+ System.out.println(e.getMessage());
+ }
+ return null;
+ }
+
+ private String duplicateName(String input, int selection) {
+ boolean notDuplicate = StationRepository.findNoStation(input);
+ if (!notDuplicate && selection == ADD) {
+ throw new IllegalArgumentException(ScriptUtils.ERROR_DUPLICATE(category));
+ }
+ if (notDuplicate && selection == DELETE) {
+ throw new IllegalArgumentException(ScriptUtils.ERROR_NO(category));
+ }
+ return input;
+ }
+
+ private void validateName(String input) {
+ if (input.length() < 2) {
+ throw new IllegalArgumentException(ScriptUtils.ERROR_TOO_SHORT(category));
+ }
+ }
}
diff --git a/src/main/java/utils/Category.java b/src/main/java/utils/Category.java
index d466a1e19..53e952abe 100644
--- a/src/main/java/utils/Category.java
+++ b/src/main/java/utils/Category.java
@@ -1,5 +1,11 @@
package utils;
public enum Category {
- MAIN, STATION, LINE, SECTION
+ MAIN("๋ฉ์ธ"), STATION("์ญ"), LINE("๋
ธ์ "), SECTION("๊ตฌ๊ฐ");
+
+ Category(String name) {}
+
+ public String getName() {
+ return name();
+ }
}
diff --git a/src/main/java/utils/ScriptUtils.java b/src/main/java/utils/ScriptUtils.java
index 6450f9367..d57daa630 100644
--- a/src/main/java/utils/ScriptUtils.java
+++ b/src/main/java/utils/ScriptUtils.java
@@ -10,4 +10,20 @@ public class ScriptUtils {
};
public static final String ASK_SELECTION = "## ์ํ๋ ๊ธฐ๋ฅ์ ์ ํํ์ธ์.";
public static final String ERROR_OUT_OF_VALUE = "\n[ERROR] ์ ํํ ์ ์๋ ๊ธฐ๋ฅ์
๋๋ค.\n";
+ public static final String[][] ASK_ANSWER_FOR = {{},
+ {"\n## ๋ฑ๋กํ ์ญ ์ด๋ฆ์ ์
๋ ฅํ์ธ์.", "\n## ์ญ์ ํ ์ญ ์ด๋ฆ์ ์
๋ ฅํ์ธ์."},};
+ public static final String STATION_LIST = "## ์ญ ๋ชฉ๋ก";
+ public static final String INFO = "[INFO] ";
+
+ public static String ERROR_TOO_SHORT(Category category) {
+ return "\n[ERROR] " + category.getName() + " ์ด๋ฆ์ 2์ ์ด์์ด์ด์ผ ํฉ๋๋ค.\n";
+ }
+
+ public static String ERROR_DUPLICATE(Category category) {
+ return "\n[ERROR] ์ด๋ฏธ ๋ฑ๋ก๋ " + category.getName() + " ์ด๋ฆ์
๋๋ค.\n";
+ }
+
+ public static String ERROR_NO(Category category) {
+ return "\n[ERROR] ์กด์ฌํ์ง ์๋ " + category.getName() + " ์ด๋ฆ์
๋๋ค.\n";
+ }
}
From ff0abf8bac885ea1d1c400593b90cc211cf0ef41 Mon Sep 17 00:00:00 2001
From: 100-yeeun <100yeeun@gmail.com>
Date: Tue, 15 Dec 2020 20:36:58 +0900
Subject: [PATCH 5/7] =?UTF-8?q?feat:=20=EB=85=B8=EC=84=A0=20=EB=93=B1?=
=?UTF-8?q?=EB=A1=9D?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../subway/controller/LineController.java | 56 +++++++++++++++++++
.../subway/controller/MenuController.java | 3 +
.../subway/controller/StationController.java | 13 ++---
src/main/java/subway/domain/Line.java | 8 ++-
.../domain/repository/LineRepository.java | 4 ++
.../domain/repository/StationRepository.java | 7 +++
.../subway/domain/service/LineService.java | 43 ++++++++++++++
.../subway/domain/service/StationService.java | 31 ++++++++++
src/main/java/subway/view/DetailView.java | 36 ++++++------
src/main/java/utils/Category.java | 10 +++-
src/main/java/utils/ScriptUtils.java | 26 ++++++---
11 files changed, 202 insertions(+), 35 deletions(-)
create mode 100644 src/main/java/subway/controller/LineController.java
create mode 100644 src/main/java/subway/domain/service/LineService.java
diff --git a/src/main/java/subway/controller/LineController.java b/src/main/java/subway/controller/LineController.java
new file mode 100644
index 000000000..3b298d20b
--- /dev/null
+++ b/src/main/java/subway/controller/LineController.java
@@ -0,0 +1,56 @@
+package subway.controller;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Scanner;
+import subway.domain.Line;
+import subway.domain.Station;
+import subway.domain.service.LineService;
+import subway.domain.service.StationService;
+import subway.view.DetailView;
+import utils.Category;
+import utils.ScriptUtils;
+
+public class LineController {
+ public static final int ADD = 1;
+ public static final int DELETE = 2;
+ public static final int GET_LIST = 3;
+
+ public static DetailView lineView = new DetailView(Category.LINE);
+
+ private LineController() {}
+
+ public static void manageLine(Scanner scanner, int selection) {
+ if (selection == GET_LIST) {
+ LineService.readLineList();
+ return;
+ }
+ String name = lineView.ask(scanner, selection);
+ if (name == null) {
+ return;
+ }
+ if (selection == ADD) {
+ addLine(scanner, name);
+ return;
+ }
+ LineService.deleteLine(name);
+ }
+
+ private static void addLine(Scanner scanner, String name) {
+ List terminals = new ArrayList<>();
+ for (int i = 0; i < ScriptUtils.ASK_ADD_LINE.length; i++) {
+ String terminalName = lineView.additionalAsk(scanner, ScriptUtils.ASK_ADD_LINE[i]);
+ try {
+ if (!StationService.duplicateName(terminalName)) {
+ throw new IllegalArgumentException(ScriptUtils.ERROR_NO(Category.STATION));
+ }
+ } catch (IllegalArgumentException e) {
+ System.out.println(e.getMessage());
+ return;
+ }
+ terminals.add(StationService.readStation(terminalName));
+ }
+ LineService.createLine(name, terminals);
+ }
+
+}
diff --git a/src/main/java/subway/controller/MenuController.java b/src/main/java/subway/controller/MenuController.java
index 62bb2b5db..6ae3070d9 100644
--- a/src/main/java/subway/controller/MenuController.java
+++ b/src/main/java/subway/controller/MenuController.java
@@ -41,5 +41,8 @@ public static void executeSelection(Category category, int selection, Scanner sc
StationController.manageStation(scanner, selection);
}
+ if (category == Category.LINE) {
+ LineController.manageLine(scanner, selection);
+ }
}
}
diff --git a/src/main/java/subway/controller/StationController.java b/src/main/java/subway/controller/StationController.java
index 068921c9f..a7f4a13c4 100644
--- a/src/main/java/subway/controller/StationController.java
+++ b/src/main/java/subway/controller/StationController.java
@@ -10,8 +10,7 @@ public class StationController {
public static final int DELETE = 2;
public static final int GET_LIST = 3;
- private static final Category category = Category.STATION;
- public static DetailView stationView = new DetailView(category);
+ public static DetailView stationView = new DetailView(Category.STATION);
private StationController() {}
@@ -20,15 +19,15 @@ public static void manageStation(Scanner scanner, int selection) {
StationService.readStationList();
return;
}
- stationView.ask(selection);
- String answer = stationView.inputName(scanner, selection);
- if (answer == null) {
+
+ String name = stationView.ask(scanner, selection);
+ if (name == null) {
return;
}
if (selection == ADD) {
- StationService.createStation(answer);
+ StationService.createStation(name);
return;
}
- StationService.deleteStation(answer);
+ StationService.deleteStation(name);
}
}
diff --git a/src/main/java/subway/domain/Line.java b/src/main/java/subway/domain/Line.java
index f4d738d5a..2f6022a18 100644
--- a/src/main/java/subway/domain/Line.java
+++ b/src/main/java/subway/domain/Line.java
@@ -1,10 +1,16 @@
package subway.domain;
+import java.util.List;
+
public class Line {
private String name;
+ private Station upTerminal;
+ private Station downTerminal;
- public Line(String name) {
+ public Line(String name, List terminals) {
this.name = name;
+ this.upTerminal = terminals.get(0);
+ this.downTerminal = terminals.get(1);
}
public String getName() {
diff --git a/src/main/java/subway/domain/repository/LineRepository.java b/src/main/java/subway/domain/repository/LineRepository.java
index 83815e82b..6deefe783 100644
--- a/src/main/java/subway/domain/repository/LineRepository.java
+++ b/src/main/java/subway/domain/repository/LineRepository.java
@@ -20,4 +20,8 @@ public static void addLine(Line line) {
public static boolean deleteLineByName(String name) {
return lines.removeIf(line -> Objects.equals(line.getName(), name));
}
+
+ public static boolean findNoLine(String name) {
+ return lines.stream().noneMatch(line -> Objects.equals(line.getName(), name));
+ }
}
diff --git a/src/main/java/subway/domain/repository/StationRepository.java b/src/main/java/subway/domain/repository/StationRepository.java
index e66ce99dc..29f572c9a 100644
--- a/src/main/java/subway/domain/repository/StationRepository.java
+++ b/src/main/java/subway/domain/repository/StationRepository.java
@@ -4,9 +4,11 @@
import java.util.Collections;
import java.util.List;
import java.util.Objects;
+import java.util.stream.Collectors;
import subway.domain.Station;
public class StationRepository {
+
private static final List stations = new ArrayList<>();
public static List stations() {
@@ -24,4 +26,9 @@ public static boolean deleteStation(String name) {
public static boolean findNoStation(String name) {
return stations.stream().noneMatch(station -> Objects.equals(station.getName(), name));
}
+
+ public static List readStation(String name) {
+ return StationRepository.stations().stream().filter(station ->
+ station.getName() == name).collect(Collectors.toList());
+ }
}
diff --git a/src/main/java/subway/domain/service/LineService.java b/src/main/java/subway/domain/service/LineService.java
new file mode 100644
index 000000000..00e95cc2c
--- /dev/null
+++ b/src/main/java/subway/domain/service/LineService.java
@@ -0,0 +1,43 @@
+package subway.domain.service;
+
+import java.util.List;
+import subway.domain.Line;
+import subway.domain.Station;
+import subway.domain.repository.LineRepository;
+
+import utils.Category;
+import utils.ScriptUtils;
+
+public class LineService {
+
+ public static void readLineList() {
+ System.out.println(ScriptUtils.LINE_LIST);
+ for (Line line : LineRepository.lines()) {
+ System.out.println(ScriptUtils.INFO + line.getName());
+ }
+ }
+
+ public static void createLine(String name, List terminalNames) {
+ try {
+ if (duplicateName(name)) {
+ throw new IllegalArgumentException(ScriptUtils.ERROR_DUPLICATE(Category.LINE));
+ }
+ } catch (IllegalArgumentException e) {
+ System.out.println();
+ return;
+ }
+ Line line = new Line(name, terminalNames);
+ LineRepository.addLine(line);
+ }
+
+ public static void deleteLine(String name) {
+ }
+
+ private static boolean duplicateName(String input) {
+ boolean notDuplicate = LineRepository.findNoLine(input);
+ if (notDuplicate) {
+ return false;
+ }
+ return true;
+ }
+}
diff --git a/src/main/java/subway/domain/service/StationService.java b/src/main/java/subway/domain/service/StationService.java
index 42728d1cd..a81a724b1 100644
--- a/src/main/java/subway/domain/service/StationService.java
+++ b/src/main/java/subway/domain/service/StationService.java
@@ -1,13 +1,24 @@
package subway.domain.service;
+import java.util.List;
+import java.util.stream.Collectors;
import subway.domain.Station;
import subway.domain.repository.StationRepository;
+import utils.Category;
import utils.ScriptUtils;
public class StationService {
private StationService() {}
public static void createStation(String name) {
+ try {
+ if (duplicateName(name)) {
+ throw new IllegalArgumentException();
+ }
+ } catch (IllegalArgumentException e) {
+ System.out.println(ScriptUtils.ERROR_DUPLICATE(Category.STATION));
+ return;
+ }
Station station = new Station(name);
StationRepository.addStation(station);
}
@@ -20,6 +31,26 @@ public static void readStationList() {
}
public static void deleteStation(String name) {
+ try {
+ if (!duplicateName(name)) {
+ throw new IllegalArgumentException();
+ }
+ } catch (IllegalArgumentException e) {
+ System.out.println(ScriptUtils.ERROR_NO(Category.STATION));
+ return;
+ }
StationRepository.deleteStation(name);
}
+
+ public static boolean duplicateName(String input) {
+ boolean notDuplicate = StationRepository.findNoStation(input);
+ if (notDuplicate) {
+ return false;
+ }
+ return true;
+ }
+
+ public static Station readStation(String name) {
+ return StationRepository.readStation(name).get(0);
+ }
}
diff --git a/src/main/java/subway/view/DetailView.java b/src/main/java/subway/view/DetailView.java
index 04ac96397..0937497aa 100644
--- a/src/main/java/subway/view/DetailView.java
+++ b/src/main/java/subway/view/DetailView.java
@@ -1,5 +1,8 @@
package subway.view;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
import java.util.Scanner;
import subway.domain.repository.StationRepository;
import utils.Category;
@@ -14,35 +17,34 @@ public DetailView(Category category) {
this.category = category;
}
- public void ask(int selection) {
- System.out.println(ScriptUtils.ASK_ANSWER_FOR[category.ordinal()][selection-1]);
+ public String ask(Scanner scanner, int selection) {
+ System.out.println(ScriptUtils.ASK_ANSWER_FOR(category, selection));
+ return inputName(scanner);
}
- public String inputName(Scanner scanner, int selection) {
+ public String additionalAsk(Scanner scanner, String ask) {
+ if (category == Category.LINE) {
+ System.out.println(ask);
+ String answer = inputName(scanner);
+ return answer;
+ }
+ return null;
+ }
+
+ public String inputName(Scanner scanner) {
String input = scanner.nextLine();
try {
- validateName(input);
- return duplicateName(input, selection);
+ return validateName(input);
} catch (IllegalArgumentException e) {
System.out.println(e.getMessage());
}
return null;
}
- private String duplicateName(String input, int selection) {
- boolean notDuplicate = StationRepository.findNoStation(input);
- if (!notDuplicate && selection == ADD) {
- throw new IllegalArgumentException(ScriptUtils.ERROR_DUPLICATE(category));
- }
- if (notDuplicate && selection == DELETE) {
- throw new IllegalArgumentException(ScriptUtils.ERROR_NO(category));
- }
- return input;
- }
-
- private void validateName(String input) {
+ private String validateName(String input) {
if (input.length() < 2) {
throw new IllegalArgumentException(ScriptUtils.ERROR_TOO_SHORT(category));
}
+ return input;
}
}
diff --git a/src/main/java/utils/Category.java b/src/main/java/utils/Category.java
index 53e952abe..f3a94e5f2 100644
--- a/src/main/java/utils/Category.java
+++ b/src/main/java/utils/Category.java
@@ -3,9 +3,13 @@
public enum Category {
MAIN("๋ฉ์ธ"), STATION("์ญ"), LINE("๋
ธ์ "), SECTION("๊ตฌ๊ฐ");
- Category(String name) {}
+ private String korean;
- public String getName() {
- return name();
+ Category(String name) {
+ this.korean = name;
+ }
+
+ public String getKorean() {
+ return korean;
}
}
diff --git a/src/main/java/utils/ScriptUtils.java b/src/main/java/utils/ScriptUtils.java
index d57daa630..f05f162cb 100644
--- a/src/main/java/utils/ScriptUtils.java
+++ b/src/main/java/utils/ScriptUtils.java
@@ -8,22 +8,34 @@ public class ScriptUtils {
"\n## ๋
ธ์ ๊ด๋ฆฌ ํ๋ฉด\n1. ๋
ธ์ ๋ฑ๋ก\n2. ๋
ธ์ ์ญ์ \n3. ๋
ธ์ ์กฐํ\nB. ๋์๊ฐ๊ธฐ\n",
"\n## ๊ตฌ๊ฐ ๊ด๋ฆฌ ํ๋ฉด\n1. ๊ตฌ๊ฐ ๋ฑ๋ก\n2. ๊ตฌ๊ฐ ์ญ์ \nB. ๋์๊ฐ๊ธฐ\n"
};
- public static final String ASK_SELECTION = "## ์ํ๋ ๊ธฐ๋ฅ์ ์ ํํ์ธ์.";
- public static final String ERROR_OUT_OF_VALUE = "\n[ERROR] ์ ํํ ์ ์๋ ๊ธฐ๋ฅ์
๋๋ค.\n";
- public static final String[][] ASK_ANSWER_FOR = {{},
- {"\n## ๋ฑ๋กํ ์ญ ์ด๋ฆ์ ์
๋ ฅํ์ธ์.", "\n## ์ญ์ ํ ์ญ ์ด๋ฆ์ ์
๋ ฅํ์ธ์."},};
public static final String STATION_LIST = "## ์ญ ๋ชฉ๋ก";
+ public static final String LINE_LIST = "## ๋
ธ์ ๋ชฉ๋ก";
public static final String INFO = "[INFO] ";
+ public static final String ASK_SELECTION = "## ์ํ๋ ๊ธฐ๋ฅ์ ์ ํํ์ธ์.";
+
+ public static final String ASK_ANSWER_FOR(Category category, int selection) {
+ if (selection == 1) {
+ return "\n## ๋ฑ๋กํ " + category.getKorean() + " ์ด๋ฆ์ ์
๋ ฅํ์ธ์.";
+ }
+ return "\n## ์ญ์ ํ " + category.getKorean()+ " ์ด๋ฆ์ ์
๋ ฅํ์ธ์.";
+ }
+
+ public static final String[] ASK_ADD_LINE = {
+ "## ๋ฑ๋กํ ๋
ธ์ ์ ์ํ ์ข
์ ์ญ ์ด๋ฆ์ ์
๋ ฅํ์ธ์.",
+ "## ๋ฑ๋กํ ๋
ธ์ ์ ํํ ์ข
์ ์ญ ์ด๋ฆ์ ์
๋ ฅํ์ธ์."
+ };
+
+ public static final String ERROR_OUT_OF_VALUE = "\n[ERROR] ์ ํํ ์ ์๋ ๊ธฐ๋ฅ์
๋๋ค.\n";
public static String ERROR_TOO_SHORT(Category category) {
- return "\n[ERROR] " + category.getName() + " ์ด๋ฆ์ 2์ ์ด์์ด์ด์ผ ํฉ๋๋ค.\n";
+ return "\n[ERROR] " + category.getKorean() + " ์ด๋ฆ์ 2์ ์ด์์ด์ด์ผ ํฉ๋๋ค.\n";
}
public static String ERROR_DUPLICATE(Category category) {
- return "\n[ERROR] ์ด๋ฏธ ๋ฑ๋ก๋ " + category.getName() + " ์ด๋ฆ์
๋๋ค.\n";
+ return "\n[ERROR] ์ด๋ฏธ ๋ฑ๋ก๋ " + category.getKorean() + " ์ด๋ฆ์
๋๋ค.\n";
}
public static String ERROR_NO(Category category) {
- return "\n[ERROR] ์กด์ฌํ์ง ์๋ " + category.getName() + " ์ด๋ฆ์
๋๋ค.\n";
+ return "\n[ERROR] ์กด์ฌํ์ง ์๋ " + category.getKorean() + " ์ด๋ฆ์
๋๋ค.\n";
}
}
From 770d05053462f22667a97f0b1eacd26382f14937 Mon Sep 17 00:00:00 2001
From: 100-yeeun <100yeeun@gmail.com>
Date: Tue, 15 Dec 2020 21:45:30 +0900
Subject: [PATCH 6/7] =?UTF-8?q?feat:=20=EB=85=B8=EC=84=A0=20=EC=82=AD?=
=?UTF-8?q?=EC=A0=9C,=20=EC=A1=B0=ED=9A=8C?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/main/java/subway/Application.java | 5 ++-
.../subway/controller/LineController.java | 23 ++++++++------
.../subway/controller/MenuController.java | 5 +++
.../domain/repository/StationRepository.java | 2 +-
.../subway/domain/service/LineService.java | 31 ++++++++++++++++++-
.../subway/domain/service/StationService.java | 7 +++++
src/main/java/utils/InitUtils.java | 15 +++++++++
7 files changed, 76 insertions(+), 12 deletions(-)
create mode 100644 src/main/java/utils/InitUtils.java
diff --git a/src/main/java/subway/Application.java b/src/main/java/subway/Application.java
index ebc1cb281..8597dc81f 100644
--- a/src/main/java/subway/Application.java
+++ b/src/main/java/subway/Application.java
@@ -2,11 +2,14 @@
import java.util.Scanner;
import subway.controller.MenuController;
+import subway.domain.service.LineService;
+import subway.domain.service.StationService;
public class Application {
public static void main(String[] args) {
final Scanner scanner = new Scanner(System.in);
-
+ StationService.init();
+ LineService.init();
MenuController.runProgram(scanner);
}
}
diff --git a/src/main/java/subway/controller/LineController.java b/src/main/java/subway/controller/LineController.java
index 3b298d20b..c915f0e74 100644
--- a/src/main/java/subway/controller/LineController.java
+++ b/src/main/java/subway/controller/LineController.java
@@ -3,7 +3,6 @@
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
-import subway.domain.Line;
import subway.domain.Station;
import subway.domain.service.LineService;
import subway.domain.service.StationService;
@@ -21,22 +20,29 @@ public class LineController {
private LineController() {}
public static void manageLine(Scanner scanner, int selection) {
- if (selection == GET_LIST) {
- LineService.readLineList();
- return;
- }
String name = lineView.ask(scanner, selection);
if (name == null) {
return;
}
- if (selection == ADD) {
- addLine(scanner, name);
+ if (selection == DELETE) {
+ LineService.deleteLine(name);
return;
}
- LineService.deleteLine(name);
+ addLine(scanner, name);
}
private static void addLine(Scanner scanner, String name) {
+ try {
+ if (LineService.duplicateName(name)) {
+ throw new IllegalArgumentException(ScriptUtils.ERROR_DUPLICATE(Category.LINE));
+ }
+ addTerminals(scanner, name);
+ } catch (IllegalArgumentException e) {
+ System.out.println(e.getMessage());
+ }
+ }
+
+ private static void addTerminals(Scanner scanner, String name) {
List terminals = new ArrayList<>();
for (int i = 0; i < ScriptUtils.ASK_ADD_LINE.length; i++) {
String terminalName = lineView.additionalAsk(scanner, ScriptUtils.ASK_ADD_LINE[i]);
@@ -52,5 +58,4 @@ private static void addLine(Scanner scanner, String name) {
}
LineService.createLine(name, terminals);
}
-
}
diff --git a/src/main/java/subway/controller/MenuController.java b/src/main/java/subway/controller/MenuController.java
index 6ae3070d9..254f4c2db 100644
--- a/src/main/java/subway/controller/MenuController.java
+++ b/src/main/java/subway/controller/MenuController.java
@@ -1,6 +1,7 @@
package subway.controller;
import java.util.Scanner;
+import subway.domain.service.LineService;
import subway.view.MenuView;
import utils.Category;
@@ -42,6 +43,10 @@ public static void executeSelection(Category category, int selection, Scanner sc
}
if (category == Category.LINE) {
+ if (selection == LineController.GET_LIST) {
+ LineService.readLineList();
+ return;
+ }
LineController.manageLine(scanner, selection);
}
}
diff --git a/src/main/java/subway/domain/repository/StationRepository.java b/src/main/java/subway/domain/repository/StationRepository.java
index 29f572c9a..b0e68242a 100644
--- a/src/main/java/subway/domain/repository/StationRepository.java
+++ b/src/main/java/subway/domain/repository/StationRepository.java
@@ -29,6 +29,6 @@ public static boolean findNoStation(String name) {
public static List readStation(String name) {
return StationRepository.stations().stream().filter(station ->
- station.getName() == name).collect(Collectors.toList());
+ Objects.equals(station.getName(), name)).collect(Collectors.toList());
}
}
diff --git a/src/main/java/subway/domain/service/LineService.java b/src/main/java/subway/domain/service/LineService.java
index 00e95cc2c..314cdb42d 100644
--- a/src/main/java/subway/domain/service/LineService.java
+++ b/src/main/java/subway/domain/service/LineService.java
@@ -1,15 +1,34 @@
package subway.domain.service;
+import java.util.ArrayList;
+import java.util.Arrays;
import java.util.List;
+import jdk.nashorn.internal.ir.Terminal;
import subway.domain.Line;
import subway.domain.Station;
import subway.domain.repository.LineRepository;
import utils.Category;
+import utils.InitUtils;
import utils.ScriptUtils;
public class LineService {
+ private LineService() {
+ }
+
+ public static void init() {
+ for (int i = 0; i < InitUtils.INIT_LINES.length; i++) {
+ List terminals;
+ String[] terminalNames = InitUtils.INIT_TERMINALS[i];
+ terminals = Arrays.asList(
+ StationService.readStation(terminalNames[0]),
+ StationService.readStation(terminalNames[1])
+ );
+ createLine(InitUtils.INIT_LINES[i], terminals);
+ }
+ }
+
public static void readLineList() {
System.out.println(ScriptUtils.LINE_LIST);
for (Line line : LineRepository.lines()) {
@@ -31,13 +50,23 @@ public static void createLine(String name, List terminalNames) {
}
public static void deleteLine(String name) {
+ try {
+ if (!duplicateName(name)) {
+ throw new IllegalArgumentException(ScriptUtils.ERROR_NO(Category.LINE));
+ }
+ } catch (IllegalArgumentException e) {
+ System.out.println();
+ return;
+ }
+ LineRepository.deleteLineByName(name);
}
- private static boolean duplicateName(String input) {
+ public static boolean duplicateName(String input) {
boolean notDuplicate = LineRepository.findNoLine(input);
if (notDuplicate) {
return false;
}
return true;
}
+
}
diff --git a/src/main/java/subway/domain/service/StationService.java b/src/main/java/subway/domain/service/StationService.java
index a81a724b1..04b5540be 100644
--- a/src/main/java/subway/domain/service/StationService.java
+++ b/src/main/java/subway/domain/service/StationService.java
@@ -5,11 +5,18 @@
import subway.domain.Station;
import subway.domain.repository.StationRepository;
import utils.Category;
+import utils.InitUtils;
import utils.ScriptUtils;
public class StationService {
private StationService() {}
+ public static void init() {
+ for (String station : InitUtils.INIT_STATIONS) {
+ createStation(station);
+ }
+ }
+
public static void createStation(String name) {
try {
if (duplicateName(name)) {
diff --git a/src/main/java/utils/InitUtils.java b/src/main/java/utils/InitUtils.java
new file mode 100644
index 000000000..81bd04d9a
--- /dev/null
+++ b/src/main/java/utils/InitUtils.java
@@ -0,0 +1,15 @@
+package utils;
+
+public class InitUtils {
+ public static final String[] INIT_STATIONS = {
+ "๊ต๋์ญ", "๊ฐ๋จ์ญ", "์ญ์ผ์ญ", "๋จ๋ถํฐ๋ฏธ๋์ญ", "์์ฌ์ญ", "์์ฌ์๋ฏผ์์ฒ์ญ", "๋งค๋ด์ญ"
+ };
+
+ public static final String[] INIT_LINES = {
+ "2ํธ์ ", "3ํธ์ ", "์ ๋ถ๋น์ "
+ };
+
+ public static final String[][] INIT_TERMINALS = {
+ {"๊ต๋์ญ", "์ญ์ผ์ญ"}, {"๊ต๋์ญ", "๋งค๋ด์ญ"}, {"๊ฐ๋จ์ญ", "์์ฌ์๋ฏผ์์ฒ์ญ"}
+ };
+}
From c174aeba13360d23bbb31c6231aa587ad83aff4d Mon Sep 17 00:00:00 2001
From: 100-yeeun <100yeeun@gmail.com>
Date: Tue, 15 Dec 2020 23:51:34 +0900
Subject: [PATCH 7/7] =?UTF-8?q?feat:=20=EA=B5=AC=EA=B0=84=20=EB=93=B1?=
=?UTF-8?q?=EB=A1=9D,=20=EC=82=AD=EC=A0=9C?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../subway/controller/MenuController.java | 18 ++--
.../subway/controller/SectionController.java | 84 +++++++++++++++++++
src/main/java/subway/domain/Line.java | 20 +++--
.../domain/repository/LineRepository.java | 6 ++
.../subway/domain/service/LineService.java | 6 +-
.../subway/domain/service/SectionService.java | 44 ++++++++++
src/main/java/subway/view/DetailView.java | 20 +++++
src/main/java/utils/ScriptUtils.java | 10 ++-
8 files changed, 190 insertions(+), 18 deletions(-)
create mode 100644 src/main/java/subway/controller/SectionController.java
create mode 100644 src/main/java/subway/domain/service/SectionService.java
diff --git a/src/main/java/subway/controller/MenuController.java b/src/main/java/subway/controller/MenuController.java
index 254f4c2db..b398e4656 100644
--- a/src/main/java/subway/controller/MenuController.java
+++ b/src/main/java/subway/controller/MenuController.java
@@ -25,23 +25,18 @@ public static void runProgram(Scanner scanner) {
private static void showSelectedView(int categoryNumber, Scanner scanner) {
Category category = Category.values()[categoryNumber];
MenuView selectedView = new MenuView(category);
- int stopOption = MenuView.RETRY;
- while (stopOption != MenuView.EXIT) {
- selectedView.printMenu();
- int selection = selectedView.selectMenu(scanner);
- if (selection <= MenuView.EXIT) {
- stopOption = selection;
- continue;
- }
- executeSelection(category, selection, scanner);
+ selectedView.printMenu();
+ int selection = selectedView.selectMenu(scanner);
+ if (selection <= MenuView.EXIT) {
+ return;
}
+ executeSelection(category, selection, scanner);
}
public static void executeSelection(Category category, int selection, Scanner scanner) {
if (category == Category.STATION) {
StationController.manageStation(scanner, selection);
}
-
if (category == Category.LINE) {
if (selection == LineController.GET_LIST) {
LineService.readLineList();
@@ -49,5 +44,8 @@ public static void executeSelection(Category category, int selection, Scanner sc
}
LineController.manageLine(scanner, selection);
}
+ if(category == Category.SECTION) {
+ SectionController.manageSection(scanner, selection);
+ }
}
}
diff --git a/src/main/java/subway/controller/SectionController.java b/src/main/java/subway/controller/SectionController.java
new file mode 100644
index 000000000..243ec812c
--- /dev/null
+++ b/src/main/java/subway/controller/SectionController.java
@@ -0,0 +1,84 @@
+package subway.controller;
+
+import java.util.Scanner;
+import subway.domain.Line;
+import subway.domain.Station;
+import subway.domain.service.LineService;
+import subway.domain.service.SectionService;
+import subway.domain.service.StationService;
+import subway.view.DetailView;
+import utils.Category;
+import utils.ScriptUtils;
+
+public class SectionController {
+ private static DetailView sectionView = new DetailView(Category.SECTION);
+ private static int askCount = 2;
+ private static int ADD = 1;
+
+ private SectionController() { }
+
+ public static void manageSection(Scanner scanner, int selection) {
+ if (selection == ADD) {
+ addSection(scanner, selection);
+ return;
+ }
+
+ deleteSection(scanner, selection);
+ }
+
+ private static void deleteSection(Scanner scanner, int selection) {
+ Line line = askLine(scanner, selection);
+ Station station = askStation(scanner, selection);
+ if (line != null && station != null) {
+ SectionService.deleteSection(line, station);
+ }
+ }
+
+ private static void addSection(Scanner scanner, int selection) {
+ Line line = askLine(scanner, selection);
+ Station station = askStation(scanner, selection);
+ int idx = askIdx(scanner, selection, line);
+
+ if (line != null && station != null && idx >= 0) {
+ SectionService.createSection(line, station, idx);
+ }
+ }
+
+ private static int askIdx(Scanner scanner, int selection, Line line) {
+ int idx = sectionView.askSectionNumber(scanner, ScriptUtils.ASK_ANSWER_FOR_SECTION[selection-1][2]);
+ if (idx < 0) {
+ return idx;
+ }
+ try {
+ if (idx > line.getLength()) {
+ throw new IllegalArgumentException(ScriptUtils.ERROR_OUT_OF_BOUNDARY);
+ }
+ } catch (IllegalArgumentException e) {
+ System.out.println(e.getMessage());
+ return -1;
+ }
+ return idx;
+ }
+
+ private static Station askStation(Scanner scanner, int selection) {
+ try {
+ String stationName = sectionView.askSection(scanner, ScriptUtils.ASK_ANSWER_FOR_SECTION[selection-1][1]);
+ SectionService.checkDuplicate(1, stationName);
+ return StationService.readStation(stationName);
+ } catch (IllegalArgumentException e) {
+ System.out.println(e.getMessage());
+ return null;
+ }
+ }
+
+ private static Line askLine(Scanner scanner, int selection) {
+ try {
+ String lineName = sectionView.askSection(scanner, ScriptUtils.ASK_ANSWER_FOR_SECTION[selection-1][0]);
+ SectionService.checkDuplicate(0, lineName);
+ return LineService.readLine(lineName);
+ } catch (IllegalArgumentException e) {
+ System.out.println(e.getMessage());
+ return null;
+ }
+ }
+}
diff --git a/src/main/java/subway/domain/Line.java b/src/main/java/subway/domain/Line.java
index 2f6022a18..335e4f5b4 100644
--- a/src/main/java/subway/domain/Line.java
+++ b/src/main/java/subway/domain/Line.java
@@ -4,18 +4,28 @@
public class Line {
private String name;
- private Station upTerminal;
- private Station downTerminal;
+ private List stations;
public Line(String name, List terminals) {
this.name = name;
- this.upTerminal = terminals.get(0);
- this.downTerminal = terminals.get(1);
+ this.stations = terminals;
}
public String getName() {
return name;
}
- // ์ถ๊ฐ ๊ธฐ๋ฅ ๊ตฌํ
+ public int getLength() { return stations.size(); }
+
+ public boolean validateStation(Station station) {
+ return stations.contains(station);
+ }
+
+ public void addStation(Station station, int idx) {
+ stations.add(idx-1, station);
+ }
+
+ public void deleteStation(Station station) {
+ stations.remove(station);
+ }
}
diff --git a/src/main/java/subway/domain/repository/LineRepository.java b/src/main/java/subway/domain/repository/LineRepository.java
index 6deefe783..5170865aa 100644
--- a/src/main/java/subway/domain/repository/LineRepository.java
+++ b/src/main/java/subway/domain/repository/LineRepository.java
@@ -4,6 +4,7 @@
import java.util.Collections;
import java.util.List;
import java.util.Objects;
+import java.util.stream.Collectors;
import subway.domain.Line;
public class LineRepository {
@@ -24,4 +25,9 @@ public static boolean deleteLineByName(String name) {
public static boolean findNoLine(String name) {
return lines.stream().noneMatch(line -> Objects.equals(line.getName(), name));
}
+
+ public static Line findLine(String name) {
+ return lines.stream().filter(line ->
+ Objects.equals(line.getName(), name)).collect(Collectors.toList()).get(0);
+ }
}
diff --git a/src/main/java/subway/domain/service/LineService.java b/src/main/java/subway/domain/service/LineService.java
index 314cdb42d..e408ee6f6 100644
--- a/src/main/java/subway/domain/service/LineService.java
+++ b/src/main/java/subway/domain/service/LineService.java
@@ -1,9 +1,7 @@
package subway.domain.service;
-import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
-import jdk.nashorn.internal.ir.Terminal;
import subway.domain.Line;
import subway.domain.Station;
import subway.domain.repository.LineRepository;
@@ -29,6 +27,10 @@ public static void init() {
}
}
+ public static Line readLine(String name) {
+ return LineRepository.findLine(name);
+ }
+
public static void readLineList() {
System.out.println(ScriptUtils.LINE_LIST);
for (Line line : LineRepository.lines()) {
diff --git a/src/main/java/subway/domain/service/SectionService.java b/src/main/java/subway/domain/service/SectionService.java
new file mode 100644
index 000000000..956622624
--- /dev/null
+++ b/src/main/java/subway/domain/service/SectionService.java
@@ -0,0 +1,44 @@
+package subway.domain.service;
+
+import subway.domain.Line;
+import subway.domain.Station;
+import utils.Category;
+import utils.ScriptUtils;
+
+public class SectionService {
+ public static final int ASK_LINE = 0;
+ public static final int ASK_STATION = 1;
+
+ public static void checkDuplicate(int askIdx, String answer) {
+ if (askIdx == ASK_LINE) {
+ if (!LineService.duplicateName(answer)) {
+ throw new IllegalArgumentException(ScriptUtils.ERROR_NO(Category.LINE));
+ }
+ }
+ if (askIdx == ASK_STATION) {
+ if (!StationService.duplicateName(answer)) {
+ throw new IllegalArgumentException(ScriptUtils.ERROR_NO(Category.STATION));
+ }
+ }
+ }
+
+ public static void createSection(Line line, Station station, int idx) {
+ try {
+ if (line.validateStation(station)) {
+ throw new IllegalArgumentException(ScriptUtils.ERROR_DUPLICATE(Category.STATION));
+ }
+ } catch (IllegalArgumentException e) {
+ System.out.println(e.getMessage());
+ return;
+ }
+ line.addStation(station, idx);
+ }
+
+ public static void deleteSection(Line line, Station station) {
+ if (line.getLength() <= 2) {
+ System.out.println(ScriptUtils.ERROR_TOO_SMALL);
+ return;
+ }
+ line.deleteStation(station);
+ }
+}
diff --git a/src/main/java/subway/view/DetailView.java b/src/main/java/subway/view/DetailView.java
index 0937497aa..871b592ee 100644
--- a/src/main/java/subway/view/DetailView.java
+++ b/src/main/java/subway/view/DetailView.java
@@ -22,6 +22,26 @@ public String ask(Scanner scanner, int selection) {
return inputName(scanner);
}
+ public String askSection(Scanner scanner, String script) {
+ System.out.println(script);
+ return inputName(scanner);
+ }
+
+ public int askSectionNumber(Scanner scanner, String script) {
+ System.out.println(script);
+ return inputInt(scanner);
+ }
+
+ private int inputInt(Scanner scanner) {
+ String input = scanner.nextLine();
+ try {
+ return Integer.parseInt(input);
+ } catch (IllegalArgumentException e) {
+ System.out.println(ScriptUtils.ERROR_INVALIDATE_VALUE);
+ }
+ return -1;
+ }
+
public String additionalAsk(Scanner scanner, String ask) {
if (category == Category.LINE) {
System.out.println(ask);
diff --git a/src/main/java/utils/ScriptUtils.java b/src/main/java/utils/ScriptUtils.java
index f05f162cb..daecf5e78 100644
--- a/src/main/java/utils/ScriptUtils.java
+++ b/src/main/java/utils/ScriptUtils.java
@@ -3,7 +3,7 @@
public class ScriptUtils {
public static final String[] MENUS = {
- "## ๋ฉ์ธ ํ๋ฉด\n1. ์ญ ๊ด๋ฆฌ\n2. ๋
ธ์ ๊ด๋ฆฌ\n3. ๊ตฌ๊ฐ ๊ด๋ฆฌ\n4. ์งํ์ฒ ๋
ธ์ ๋ ์ถ๋ ฅ\nQ. ์ข
๋ฃ\n",
+ "\n## ๋ฉ์ธ ํ๋ฉด\n1. ์ญ ๊ด๋ฆฌ\n2. ๋
ธ์ ๊ด๋ฆฌ\n3. ๊ตฌ๊ฐ ๊ด๋ฆฌ\n4. ์งํ์ฒ ๋
ธ์ ๋ ์ถ๋ ฅ\nQ. ์ข
๋ฃ\n",
"\n## ์ญ ๊ด๋ฆฌ ํ๋ฉด\n1. ์ญ ๋ฑ๋ก\n2. ์ญ ์ญ์ \n3. ์ญ ์กฐํ\nB. ๋์๊ฐ๊ธฐ\n",
"\n## ๋
ธ์ ๊ด๋ฆฌ ํ๋ฉด\n1. ๋
ธ์ ๋ฑ๋ก\n2. ๋
ธ์ ์ญ์ \n3. ๋
ธ์ ์กฐํ\nB. ๋์๊ฐ๊ธฐ\n",
"\n## ๊ตฌ๊ฐ ๊ด๋ฆฌ ํ๋ฉด\n1. ๊ตฌ๊ฐ ๋ฑ๋ก\n2. ๊ตฌ๊ฐ ์ญ์ \nB. ๋์๊ฐ๊ธฐ\n"
@@ -12,6 +12,9 @@ public class ScriptUtils {
public static final String LINE_LIST = "## ๋
ธ์ ๋ชฉ๋ก";
public static final String INFO = "[INFO] ";
public static final String ASK_SELECTION = "## ์ํ๋ ๊ธฐ๋ฅ์ ์ ํํ์ธ์.";
+ public static final String ERROR_INVALIDATE_VALUE = "\n[ERROR] ์ซ์๋ฅผ ์
๋ ฅํด์ฃผ์ธ์.";
+ public static final String ERROR_OUT_OF_BOUNDARY = "\n[ERROR] ๋
ธ์ ๋ฒ์๋ฅผ ๋์ด์ญ๋๋ค.";
+ public static final String ERROR_TOO_SMALL = "\n[ERROR] ๋
ธ์ ์ ์ญ์ด 2๊ฐ ๋ฐ์ ์์ด ์ญ์ ๊ฐ ๋ถ๊ฐํฉ๋๋ค.";
public static final String ASK_ANSWER_FOR(Category category, int selection) {
if (selection == 1) {
@@ -38,4 +41,9 @@ public static String ERROR_DUPLICATE(Category category) {
public static String ERROR_NO(Category category) {
return "\n[ERROR] ์กด์ฌํ์ง ์๋ " + category.getKorean() + " ์ด๋ฆ์
๋๋ค.\n";
}
+
+ public static String[][] ASK_ANSWER_FOR_SECTION = {
+ {"\n## ๋
ธ์ ์ ์
๋ ฅํ์ธ์.", "\n## ์ญ์ด๋ฆ์ ์
๋ ฅํ์ธ์.", "\n## ์์๋ฅผ ์
๋ ฅํ์ธ์."},
+ {}
+ };
}