From e6f0a894ab0c6df86c37e35a3800887b528f81d2 Mon Sep 17 00:00:00 2001 From: KOREAparksh <45682868+KOREAparksh@users.noreply.github.com> Date: Thu, 10 Dec 2020 23:59:37 +0900 Subject: [PATCH 01/24] =?UTF-8?q?docs=20:=20=EA=B8=B0=EB=8A=A5=EA=B5=AC?= =?UTF-8?q?=ED=98=84=EB=AA=A9=EB=A1=9D=20=EB=AA=A9=EC=B0=A8=20=EC=A0=95?= =?UTF-8?q?=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/README.md b/README.md index 00410ae50..caf86dcda 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,39 @@ + +# 기능구현 목록 + +- 상수 관리 클래스 + +### View +- 입력 클래스 + +- 출력 클래스 + +### 비즈니스 로직 +- 역 관리 + - [ ] 역 등록 + - [ ] 역 삭제 + - [ ] 역 조회 + - [ ] 돌아가기 + +- 노선 관리 + - [ ] 노선 등록 + - [ ] 노선 삭제 + - [ ] 노선 조회 + +- 구간 관리 + - [ ] 구간 등록 + - [ ] 구간 삭제 + + +- 지하철 노선도 출력 + + + # 지하철 노선도 미션 - 지하철 역과 노선을 관리하는 지하철 노선도 기능을 구현한다. + +
## 🚀 기능 요구사항 From 3cac41748c1eda9a4a17a40ae514c9ae95161b05 Mon Sep 17 00:00:00 2001 From: KOREAparksh <45682868+KOREAparksh@users.noreply.github.com> Date: Tue, 15 Dec 2020 16:49:18 +0900 Subject: [PATCH 02/24] =?UTF-8?q?docs=20:=20=EA=B8=B0=EB=8A=A5=EA=B5=AC?= =?UTF-8?q?=ED=98=84=EB=AA=A9=EB=A1=9D=20=EB=AA=A9=EC=B0=A8=20=EC=A0=95?= =?UTF-8?q?=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 33 ++++++++++++++++++++++++++------- 1 file changed, 26 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index caf86dcda..308c63eb5 100644 --- a/README.md +++ b/README.md @@ -5,28 +5,47 @@ ### View - 입력 클래스 + - [ ] 기능 선택 입력 함수 - 출력 클래스 + - [ ] 메인 화면 출력 함수 + - [ ] 역 관리 화면 출력함수 + - [ ] 노선 관리 화면 출력함수 + - [ ] 구간 관리 화면 출력함수 + - [ ] 선택한 기능 질문 출력함수 + - [ ] 기능결과(INFO) 출력함수 + - [ ] 에러 출력함수 + - [ ] 지하철 노선도 출력함수 ### 비즈니스 로직 - 역 관리 - - [ ] 역 등록 - - [ ] 역 삭제 + - 역 등록 + - [ ] 중복된 이름 불가 + - [ ] 이름은 2글자 이상 + - 역 삭제 + - [ ] 노선에 등록된 역은 삭제 불가 - [ ] 역 조회 - - [ ] 돌아가기 - 노선 관리 - - [ ] 노선 등록 + - 노선 등록 + - [ ] 중복 이름 불가 + - [ ] 이름은 2글자 이상 + - [ ] 상,하 종점역은 달라야 한다 - [ ] 노선 삭제 - [ ] 노선 조회 - 구간 관리 - - [ ] 구간 등록 - - [ ] 구간 삭제 + - 구간 등록 + - [ ] 등록되어 있는 노선인지 확인 + - [ ] 등록된 역인지 확인 + - [ ] 입력받은 순서가 올바른 순서인지 확인 + - 구간 삭제 + - [ ] 등록된 노선인지 확인 + - [ ] 노선에 등록된 역인지 확인 - 지하철 노선도 출력 - + - [ ] 노선이 없을 경우 None 출력 # 지하철 노선도 미션 From 801762b9824f9276373192050802b43de6831cc1 Mon Sep 17 00:00:00 2001 From: KOREAparksh <45682868+KOREAparksh@users.noreply.github.com> Date: Tue, 15 Dec 2020 17:38:40 +0900 Subject: [PATCH 03/24] =?UTF-8?q?feat=20:=20=EB=A9=94=EC=9D=B8=EB=A9=94?= =?UTF-8?q?=EB=89=B4=20=EC=B6=9C=EB=A0=A5=20=EA=B8=B0=EB=8A=A5=20=EA=B5=AC?= =?UTF-8?q?=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/subway/Application.java | 4 +++ src/main/java/subway/Constant.java | 9 ++++++ src/main/java/subway/domain/Menu.java | 27 ++++++++++++++++ src/main/java/subway/view/InputView.java | 4 +++ src/main/java/subway/view/OutputView.java | 39 +++++++++++++++++++++++ 5 files changed, 83 insertions(+) create mode 100644 src/main/java/subway/Constant.java create mode 100644 src/main/java/subway/domain/Menu.java create mode 100644 src/main/java/subway/view/InputView.java create mode 100644 src/main/java/subway/view/OutputView.java diff --git a/src/main/java/subway/Application.java b/src/main/java/subway/Application.java index 0bcf786cc..34fe5a21d 100644 --- a/src/main/java/subway/Application.java +++ b/src/main/java/subway/Application.java @@ -1,10 +1,14 @@ package subway; +import subway.view.OutputView; + import java.util.Scanner; public class Application { public static void main(String[] args) { final Scanner scanner = new Scanner(System.in); // TODO: 프로그램 구현 + + OutputView.printMainView(); } } diff --git a/src/main/java/subway/Constant.java b/src/main/java/subway/Constant.java new file mode 100644 index 000000000..ba29ee3cd --- /dev/null +++ b/src/main/java/subway/Constant.java @@ -0,0 +1,9 @@ +package subway; + +public class Constant { + + public static final String VIEW_HEADER = "## "; + public static final String VIEW_FORMAT = "%s. %s\n"; + public static final String MAIN_VIEW_HEADER = "메인 화면"; + +} diff --git a/src/main/java/subway/domain/Menu.java b/src/main/java/subway/domain/Menu.java new file mode 100644 index 000000000..bd9ad7515 --- /dev/null +++ b/src/main/java/subway/domain/Menu.java @@ -0,0 +1,27 @@ +package subway.domain; + +public class Menu { + + public enum MainMenu{ + STATION("1", "역 관리"), LINE("2", "노선 관리") + , SECTION("3", "구간 관리"), MAP("4", "지하철 노선도 출력") + , END("Q", "종료"); + + final private String order; + final private String message; + + MainMenu(String order, String message) { + this.order = order; + this.message = message; + } + + public String getOrder() { + return order; + } + + public String getMessage() { + return message; + } + } + +} diff --git a/src/main/java/subway/view/InputView.java b/src/main/java/subway/view/InputView.java new file mode 100644 index 000000000..1bf196eb9 --- /dev/null +++ b/src/main/java/subway/view/InputView.java @@ -0,0 +1,4 @@ +package subway.view; + +public class InputView { +} diff --git a/src/main/java/subway/view/OutputView.java b/src/main/java/subway/view/OutputView.java new file mode 100644 index 000000000..0fbbafcc4 --- /dev/null +++ b/src/main/java/subway/view/OutputView.java @@ -0,0 +1,39 @@ +package subway.view; + +import subway.Constant; +import subway.domain.Menu; + +public class OutputView { + + public OutputView() { + } + + public static void printMainView(){ + System.out.print(Constant.VIEW_HEADER); + System.out.println(Constant.MAIN_VIEW_HEADER); + for(Menu.MainMenu menu : Menu.MainMenu.values()) { + System.out.printf(Constant.VIEW_FORMAT, menu.getOrder(), menu.getMessage()); + } + System.out.println(""); + } + + public static void printManagementView(String menu){ + + } + + public static void printSubwayMap(){ + + } + + public static void printSelectFunction(String askingMessage){ + + } + + public static void printFunctionResult(String resultMessage){ + + } + + public static void printError(String errorMessage){ + + } +} From 65876284e021fc2a3712667449f9f3636066b392 Mon Sep 17 00:00:00 2001 From: KOREAparksh <45682868+KOREAparksh@users.noreply.github.com> Date: Tue, 15 Dec 2020 17:39:32 +0900 Subject: [PATCH 04/24] =?UTF-8?q?docs=20:=20=EA=B8=B0=EB=8A=A5=EA=B5=AC?= =?UTF-8?q?=ED=98=84=EB=AA=A9=EB=A1=9D=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 308c63eb5..585027c8d 100644 --- a/README.md +++ b/README.md @@ -8,10 +8,8 @@ - [ ] 기능 선택 입력 함수 - 출력 클래스 - - [ ] 메인 화면 출력 함수 - - [ ] 역 관리 화면 출력함수 - - [ ] 노선 관리 화면 출력함수 - - [ ] 구간 관리 화면 출력함수 + - [x] 메인 화면 출력 함수 + - [ ] 역, 노선, 구간 관리 화면 출력함수 - [ ] 선택한 기능 질문 출력함수 - [ ] 기능결과(INFO) 출력함수 - [ ] 에러 출력함수 From 1e147ad9f6632329ce05eac4b0487f9dd2064ccf Mon Sep 17 00:00:00 2001 From: KOREAparksh <45682868+KOREAparksh@users.noreply.github.com> Date: Tue, 15 Dec 2020 17:42:08 +0900 Subject: [PATCH 05/24] =?UTF-8?q?refactor=20:=20menu=20enum=EC=9D=84=20?= =?UTF-8?q?=EC=83=88=20=ED=8C=A8=ED=82=A4=EC=A7=80=EC=97=90=20=EC=B6=94?= =?UTF-8?q?=EA=B0=80,=20=EA=B8=B0=EC=A1=B4=20menu=ED=81=B4=EB=9E=98?= =?UTF-8?q?=EC=8A=A4=20=EC=82=AD=EC=A0=9C=20=EB=B0=8F=20enum=20=EB=B6=84?= =?UTF-8?q?=ED=95=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/subway/domain/Menu.java | 27 ------------------- .../java/subway/domain/menu/MainMenu.java | 22 +++++++++++++++ src/main/java/subway/view/OutputView.java | 6 ++--- 3 files changed, 25 insertions(+), 30 deletions(-) delete mode 100644 src/main/java/subway/domain/Menu.java create mode 100644 src/main/java/subway/domain/menu/MainMenu.java diff --git a/src/main/java/subway/domain/Menu.java b/src/main/java/subway/domain/Menu.java deleted file mode 100644 index bd9ad7515..000000000 --- a/src/main/java/subway/domain/Menu.java +++ /dev/null @@ -1,27 +0,0 @@ -package subway.domain; - -public class Menu { - - public enum MainMenu{ - STATION("1", "역 관리"), LINE("2", "노선 관리") - , SECTION("3", "구간 관리"), MAP("4", "지하철 노선도 출력") - , END("Q", "종료"); - - final private String order; - final private String message; - - MainMenu(String order, String message) { - this.order = order; - this.message = message; - } - - public String getOrder() { - return order; - } - - public String getMessage() { - return message; - } - } - -} diff --git a/src/main/java/subway/domain/menu/MainMenu.java b/src/main/java/subway/domain/menu/MainMenu.java new file mode 100644 index 000000000..435015e3a --- /dev/null +++ b/src/main/java/subway/domain/menu/MainMenu.java @@ -0,0 +1,22 @@ +package subway.domain.menu; + +public enum MainMenu { + STATION("1", "역 관리"), LINE("2", "노선 관리"), SECTION("3", "구간 관리"), MAP("4", "지하철 노선도 출력"), END("Q", "종료"); + + final private String order; + final private String message; + + MainMenu(String order, String message) { + this.order = order; + this.message = message; + } + + public String getOrder() { + return order; + } + + public String getMessage() { + return message; + } + +} diff --git a/src/main/java/subway/view/OutputView.java b/src/main/java/subway/view/OutputView.java index 0fbbafcc4..01b807695 100644 --- a/src/main/java/subway/view/OutputView.java +++ b/src/main/java/subway/view/OutputView.java @@ -1,7 +1,7 @@ package subway.view; import subway.Constant; -import subway.domain.Menu; +import subway.domain.menu.MainMenu; public class OutputView { @@ -11,10 +11,10 @@ public OutputView() { public static void printMainView(){ System.out.print(Constant.VIEW_HEADER); System.out.println(Constant.MAIN_VIEW_HEADER); - for(Menu.MainMenu menu : Menu.MainMenu.values()) { + for(MainMenu menu : MainMenu.values()) { System.out.printf(Constant.VIEW_FORMAT, menu.getOrder(), menu.getMessage()); } - System.out.println(""); + System.out.println(); } public static void printManagementView(String menu){ From fdecfe2e15bb10b2175e9d52817b4f7f1d0705ca Mon Sep 17 00:00:00 2001 From: KOREAparksh <45682868+KOREAparksh@users.noreply.github.com> Date: Tue, 15 Dec 2020 17:53:36 +0900 Subject: [PATCH 06/24] =?UTF-8?q?refactor=20:=20menu=20=EC=9D=B4=EB=A6=84?= =?UTF-8?q?=EB=93=A4=EC=9D=84=20MenuList=EB=A1=9C=20=EB=B6=84=ED=95=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/subway/domain/menu/MainMenu.java | 6 +++++- .../java/subway/domain/menu/ManagementMenu.java | 9 +++++++++ src/main/java/subway/domain/menu/MenuList.java | 15 +++++++++++++++ 3 files changed, 29 insertions(+), 1 deletion(-) create mode 100644 src/main/java/subway/domain/menu/ManagementMenu.java create mode 100644 src/main/java/subway/domain/menu/MenuList.java diff --git a/src/main/java/subway/domain/menu/MainMenu.java b/src/main/java/subway/domain/menu/MainMenu.java index 435015e3a..98bd261d7 100644 --- a/src/main/java/subway/domain/menu/MainMenu.java +++ b/src/main/java/subway/domain/menu/MainMenu.java @@ -1,7 +1,11 @@ package subway.domain.menu; public enum MainMenu { - STATION("1", "역 관리"), LINE("2", "노선 관리"), SECTION("3", "구간 관리"), MAP("4", "지하철 노선도 출력"), END("Q", "종료"); + STATION("1", MenuList.STATION.getName()+" 관리") + , LINE("2", MenuList.LINE.getName()+" 관리") + , SECTION("3", MenuList.SECTION.getName()+" 관리") + , MAP("4", MenuList.MAP.getName()+" 출력") + , END("Q", "종료"); final private String order; final private String message; diff --git a/src/main/java/subway/domain/menu/ManagementMenu.java b/src/main/java/subway/domain/menu/ManagementMenu.java new file mode 100644 index 000000000..1c01814f1 --- /dev/null +++ b/src/main/java/subway/domain/menu/ManagementMenu.java @@ -0,0 +1,9 @@ +package subway.domain.menu; + +public class ManagementMenu { + + enum Station{ + + } + +} diff --git a/src/main/java/subway/domain/menu/MenuList.java b/src/main/java/subway/domain/menu/MenuList.java new file mode 100644 index 000000000..defaf1582 --- /dev/null +++ b/src/main/java/subway/domain/menu/MenuList.java @@ -0,0 +1,15 @@ +package subway.domain.menu; + +public enum MenuList { + STATION("역"), LINE("노선"), SECTION("구간"), MAP("지하철 노선도"); + + final private String name; + + MenuList(String name) { + this.name = name; + } + + public String getName() { + return name; + } +} From 60906bda66775e79ccfb275222f1657eb4663400 Mon Sep 17 00:00:00 2001 From: KOREAparksh <45682868+KOREAparksh@users.noreply.github.com> Date: Tue, 15 Dec 2020 18:27:40 +0900 Subject: [PATCH 07/24] =?UTF-8?q?feat=20:=20=EA=B4=80=EB=A6=AC=20=ED=99=94?= =?UTF-8?q?=EB=A9=B4=20=EB=A9=94=EB=89=B4=20=EC=B6=9C=EB=A0=A5=20=EA=B8=B0?= =?UTF-8?q?=EB=8A=A5=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 2 +- src/main/java/subway/Application.java | 2 ++ src/main/java/subway/Constant.java | 3 +++ .../menu/{MenuList.java => DataList.java} | 4 ++-- .../java/subway/domain/menu/MainMenu.java | 8 ++++---- .../subway/domain/menu/ManagementMenu.java | 20 +++++++++++++++++-- src/main/java/subway/view/OutputView.java | 14 ++++++++++++- 7 files changed, 43 insertions(+), 10 deletions(-) rename src/main/java/subway/domain/menu/{MenuList.java => DataList.java} (82%) diff --git a/README.md b/README.md index 585027c8d..b30080308 100644 --- a/README.md +++ b/README.md @@ -9,7 +9,7 @@ - 출력 클래스 - [x] 메인 화면 출력 함수 - - [ ] 역, 노선, 구간 관리 화면 출력함수 + - [x] 역, 노선, 구간 관리 화면 출력함수 - [ ] 선택한 기능 질문 출력함수 - [ ] 기능결과(INFO) 출력함수 - [ ] 에러 출력함수 diff --git a/src/main/java/subway/Application.java b/src/main/java/subway/Application.java index 34fe5a21d..e2b3a4d40 100644 --- a/src/main/java/subway/Application.java +++ b/src/main/java/subway/Application.java @@ -1,5 +1,6 @@ package subway; +import subway.domain.menu.DataList; import subway.view.OutputView; import java.util.Scanner; @@ -10,5 +11,6 @@ public static void main(String[] args) { // TODO: 프로그램 구현 OutputView.printMainView(); + OutputView.printManagementView(DataList.SECTION); } } diff --git a/src/main/java/subway/Constant.java b/src/main/java/subway/Constant.java index ba29ee3cd..d17e75afd 100644 --- a/src/main/java/subway/Constant.java +++ b/src/main/java/subway/Constant.java @@ -6,4 +6,7 @@ public class Constant { public static final String VIEW_FORMAT = "%s. %s\n"; public static final String MAIN_VIEW_HEADER = "메인 화면"; + public static final String MANAGEMENT_VIEW_HEADER_FORMAT = "%s 관리 화면\n"; + public static final String MANAGEMENT_VIEW_BODY_FORMAT = "%s. %s %s\n"; + } diff --git a/src/main/java/subway/domain/menu/MenuList.java b/src/main/java/subway/domain/menu/DataList.java similarity index 82% rename from src/main/java/subway/domain/menu/MenuList.java rename to src/main/java/subway/domain/menu/DataList.java index defaf1582..6cec95f91 100644 --- a/src/main/java/subway/domain/menu/MenuList.java +++ b/src/main/java/subway/domain/menu/DataList.java @@ -1,11 +1,11 @@ package subway.domain.menu; -public enum MenuList { +public enum DataList { STATION("역"), LINE("노선"), SECTION("구간"), MAP("지하철 노선도"); final private String name; - MenuList(String name) { + DataList(String name) { this.name = name; } diff --git a/src/main/java/subway/domain/menu/MainMenu.java b/src/main/java/subway/domain/menu/MainMenu.java index 98bd261d7..95e48e039 100644 --- a/src/main/java/subway/domain/menu/MainMenu.java +++ b/src/main/java/subway/domain/menu/MainMenu.java @@ -1,10 +1,10 @@ package subway.domain.menu; public enum MainMenu { - STATION("1", MenuList.STATION.getName()+" 관리") - , LINE("2", MenuList.LINE.getName()+" 관리") - , SECTION("3", MenuList.SECTION.getName()+" 관리") - , MAP("4", MenuList.MAP.getName()+" 출력") + STATION(String.valueOf(DataList.STATION.ordinal()+1), DataList.STATION.getName()+" 관리") + , LINE(String.valueOf(DataList.LINE.ordinal()+1), DataList.LINE.getName()+" 관리") + , SECTION(String.valueOf(DataList.SECTION.ordinal()+1), DataList.SECTION.getName()+" 관리") + , MAP(String.valueOf(DataList.MAP.ordinal()+1), DataList.MAP.getName()+" 출력") , END("Q", "종료"); final private String order; diff --git a/src/main/java/subway/domain/menu/ManagementMenu.java b/src/main/java/subway/domain/menu/ManagementMenu.java index 1c01814f1..dc394577f 100644 --- a/src/main/java/subway/domain/menu/ManagementMenu.java +++ b/src/main/java/subway/domain/menu/ManagementMenu.java @@ -1,9 +1,25 @@ package subway.domain.menu; -public class ManagementMenu { +public enum ManagementMenu { - enum Station{ + REGISTER("1", "등록") + , DELETE("2", "삭제") + , FIND("3", "조회") + , BACK("B", "돌아가기"); + final private String order; + final private String message; + + ManagementMenu(String order, String message) { + this.order = order; + this.message = message; + } + + public String getOrder() { + return order; } + public String getMessage() { + return message; + } } diff --git a/src/main/java/subway/view/OutputView.java b/src/main/java/subway/view/OutputView.java index 01b807695..9ae8e4650 100644 --- a/src/main/java/subway/view/OutputView.java +++ b/src/main/java/subway/view/OutputView.java @@ -2,6 +2,8 @@ import subway.Constant; import subway.domain.menu.MainMenu; +import subway.domain.menu.ManagementMenu; +import subway.domain.menu.DataList; public class OutputView { @@ -17,7 +19,17 @@ public static void printMainView(){ System.out.println(); } - public static void printManagementView(String menu){ + public static void printManagementView(DataList data){ + System.out.print(Constant.VIEW_HEADER); + System.out.printf(Constant.MANAGEMENT_VIEW_HEADER_FORMAT, data.getName()); + for(ManagementMenu managementMenu : ManagementMenu.values()) { + if(data == DataList.SECTION && managementMenu == ManagementMenu.FIND ){ /*구간 관리 화면에는 조회 없음*/ + continue; + } + + System.out.printf(Constant.MANAGEMENT_VIEW_BODY_FORMAT, managementMenu.getOrder() + , data.getName(), managementMenu.getMessage()); + } } From 9f120ae5113bc106e7731d87607d102f5e2ac392 Mon Sep 17 00:00:00 2001 From: KOREAparksh <45682868+KOREAparksh@users.noreply.github.com> Date: Tue, 15 Dec 2020 18:48:17 +0900 Subject: [PATCH 08/24] =?UTF-8?q?feat=20:=20=EC=A7=80=ED=95=98=EC=B2=A0=20?= =?UTF-8?q?=EB=85=B8=EC=84=A0=EB=8F=84=20=ED=81=B4=EB=9E=98=EC=8A=A4=20?= =?UTF-8?q?=EC=83=9D=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/subway/Application.java | 6 +----- src/main/java/subway/SubwayMap.java | 29 +++++++++++++++++++++++++++ 2 files changed, 30 insertions(+), 5 deletions(-) create mode 100644 src/main/java/subway/SubwayMap.java diff --git a/src/main/java/subway/Application.java b/src/main/java/subway/Application.java index e2b3a4d40..f56091958 100644 --- a/src/main/java/subway/Application.java +++ b/src/main/java/subway/Application.java @@ -1,8 +1,5 @@ package subway; -import subway.domain.menu.DataList; -import subway.view.OutputView; - import java.util.Scanner; public class Application { @@ -10,7 +7,6 @@ public static void main(String[] args) { final Scanner scanner = new Scanner(System.in); // TODO: 프로그램 구현 - OutputView.printMainView(); - OutputView.printManagementView(DataList.SECTION); + new SubwayMap(scanner); /**프로그램 시작*/ } } diff --git a/src/main/java/subway/SubwayMap.java b/src/main/java/subway/SubwayMap.java new file mode 100644 index 000000000..2b917c00f --- /dev/null +++ b/src/main/java/subway/SubwayMap.java @@ -0,0 +1,29 @@ +package subway; + +import subway.domain.LineRepository; +import subway.domain.StationRepository; + +import java.util.Scanner; + +public class SubwayMap { + + private Scanner scanner; + private LineRepository lineRepository; + private StationRepository stationRepository; + + public SubwayMap(Scanner scanner) { + lineRepository = new LineRepository(); + stationRepository = new StationRepository(); + startService(); + } + + private void startService() { + selectService(); + } + + private void selectService() { + + } + + +} From 96488abb6074112ca28b88eda5309a3eaeb0f5f9 Mon Sep 17 00:00:00 2001 From: KOREAparksh <45682868+KOREAparksh@users.noreply.github.com> Date: Tue, 15 Dec 2020 18:52:59 +0900 Subject: [PATCH 09/24] =?UTF-8?q?feat=20:=20=EB=A9=94=EC=9D=B8=ED=99=94?= =?UTF-8?q?=EB=A9=B4=20=EC=82=AC=EC=9A=A9=EC=9E=90=20=EC=9E=85=EB=A0=A5=20?= =?UTF-8?q?=EA=B8=B0=EB=8A=A5=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/subway/SubwayMap.java | 4 +++- src/main/java/subway/view/InputView.java | 12 ++++++++++++ 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/src/main/java/subway/SubwayMap.java b/src/main/java/subway/SubwayMap.java index 2b917c00f..056f71e42 100644 --- a/src/main/java/subway/SubwayMap.java +++ b/src/main/java/subway/SubwayMap.java @@ -2,6 +2,7 @@ import subway.domain.LineRepository; import subway.domain.StationRepository; +import subway.view.OutputView; import java.util.Scanner; @@ -22,7 +23,8 @@ private void startService() { } private void selectService() { - + OutputView.printMainView(); + } diff --git a/src/main/java/subway/view/InputView.java b/src/main/java/subway/view/InputView.java index 1bf196eb9..e14b5eab4 100644 --- a/src/main/java/subway/view/InputView.java +++ b/src/main/java/subway/view/InputView.java @@ -1,4 +1,16 @@ package subway.view; +import java.util.Scanner; + public class InputView { + + public InputView() { + } + + public static String inputMainMenu(Scanner scanner){ + String inputData = scanner.nextLine(); + + return inputData; + } + } From d9ab16cae69d7d2373c7e009e1ce8a5c7815b400 Mon Sep 17 00:00:00 2001 From: KOREAparksh <45682868+KOREAparksh@users.noreply.github.com> Date: Tue, 15 Dec 2020 19:07:04 +0900 Subject: [PATCH 10/24] =?UTF-8?q?feat=20:=20=EB=A9=94=EC=9D=B8=ED=99=94?= =?UTF-8?q?=EB=A9=B4=20=EC=82=AC=EC=9A=A9=EC=9E=90=20=EC=9E=85=EB=A0=A5=20?= =?UTF-8?q?=EC=9C=A0=ED=9A=A8=EC=84=B1=20=EA=B2=80=EC=82=AC=20=EA=B8=B0?= =?UTF-8?q?=EB=8A=A5=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/subway/SubwayMap.java | 4 +++- src/main/java/subway/domain/menu/MainMenu.java | 9 +++++++++ src/main/java/subway/view/InputView.java | 9 ++++++--- 3 files changed, 18 insertions(+), 4 deletions(-) diff --git a/src/main/java/subway/SubwayMap.java b/src/main/java/subway/SubwayMap.java index 056f71e42..77b9acdcd 100644 --- a/src/main/java/subway/SubwayMap.java +++ b/src/main/java/subway/SubwayMap.java @@ -2,6 +2,7 @@ import subway.domain.LineRepository; import subway.domain.StationRepository; +import subway.view.InputView; import subway.view.OutputView; import java.util.Scanner; @@ -13,6 +14,7 @@ public class SubwayMap { private StationRepository stationRepository; public SubwayMap(Scanner scanner) { + this.scanner = scanner; lineRepository = new LineRepository(); stationRepository = new StationRepository(); startService(); @@ -24,7 +26,7 @@ private void startService() { private void selectService() { OutputView.printMainView(); - + String inputData = InputView.inputMainMenu(scanner); } diff --git a/src/main/java/subway/domain/menu/MainMenu.java b/src/main/java/subway/domain/menu/MainMenu.java index 95e48e039..b43431066 100644 --- a/src/main/java/subway/domain/menu/MainMenu.java +++ b/src/main/java/subway/domain/menu/MainMenu.java @@ -23,4 +23,13 @@ public String getMessage() { return message; } + public static boolean isValidOrder(String order){ + for(MainMenu mainMenu : MainMenu.values()){ + if(mainMenu.getOrder().equals(order)){ + return true; + } + } + return false; + } + } diff --git a/src/main/java/subway/view/InputView.java b/src/main/java/subway/view/InputView.java index e14b5eab4..b2472ab8c 100644 --- a/src/main/java/subway/view/InputView.java +++ b/src/main/java/subway/view/InputView.java @@ -1,5 +1,7 @@ package subway.view; +import subway.domain.menu.MainMenu; + import java.util.Scanner; public class InputView { @@ -9,8 +11,9 @@ public InputView() { public static String inputMainMenu(Scanner scanner){ String inputData = scanner.nextLine(); - - return inputData; + if(MainMenu.isValidOrder(inputData)){ + return inputData; + } + return inputMainMenu(scanner); } - } From 5fc1ae90eb91f7f7a08e68ede51838c4c29642ff Mon Sep 17 00:00:00 2001 From: KOREAparksh <45682868+KOREAparksh@users.noreply.github.com> Date: Tue, 15 Dec 2020 19:11:09 +0900 Subject: [PATCH 11/24] =?UTF-8?q?refactor=20:=20=EB=8D=B0=EC=9D=B4?= =?UTF-8?q?=ED=84=B0=20=ED=8C=A8=ED=82=A4=EC=A7=80=20=EC=83=9D=EC=84=B1=20?= =?UTF-8?q?=EB=B0=8F=20=EA=B8=B0=EC=A1=B4=20=ED=81=B4=EB=9E=98=EC=8A=A4=20?= =?UTF-8?q?=ED=8C=A8=ED=82=A4=EC=A7=80=20=EC=9D=B4=EB=8F=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/subway/Application.java | 2 ++ src/main/java/subway/{ => domain}/SubwayMap.java | 6 +++--- src/main/java/subway/domain/{ => data}/Line.java | 2 +- src/main/java/subway/domain/{ => data}/LineRepository.java | 2 +- src/main/java/subway/domain/{ => data}/Station.java | 2 +- .../java/subway/domain/{ => data}/StationRepository.java | 2 +- 6 files changed, 9 insertions(+), 7 deletions(-) rename src/main/java/subway/{ => domain}/SubwayMap.java (85%) rename src/main/java/subway/domain/{ => data}/Line.java (87%) rename src/main/java/subway/domain/{ => data}/LineRepository.java (94%) rename src/main/java/subway/domain/{ => data}/Station.java (87%) rename src/main/java/subway/domain/{ => data}/StationRepository.java (95%) diff --git a/src/main/java/subway/Application.java b/src/main/java/subway/Application.java index f56091958..d6349ac8d 100644 --- a/src/main/java/subway/Application.java +++ b/src/main/java/subway/Application.java @@ -1,5 +1,7 @@ package subway; +import subway.domain.SubwayMap; + import java.util.Scanner; public class Application { diff --git a/src/main/java/subway/SubwayMap.java b/src/main/java/subway/domain/SubwayMap.java similarity index 85% rename from src/main/java/subway/SubwayMap.java rename to src/main/java/subway/domain/SubwayMap.java index 77b9acdcd..8377ae61d 100644 --- a/src/main/java/subway/SubwayMap.java +++ b/src/main/java/subway/domain/SubwayMap.java @@ -1,7 +1,7 @@ -package subway; +package subway.domain; -import subway.domain.LineRepository; -import subway.domain.StationRepository; +import subway.domain.data.LineRepository; +import subway.domain.data.StationRepository; import subway.view.InputView; import subway.view.OutputView; diff --git a/src/main/java/subway/domain/Line.java b/src/main/java/subway/domain/data/Line.java similarity index 87% rename from src/main/java/subway/domain/Line.java rename to src/main/java/subway/domain/data/Line.java index f4d738d5a..6a19ead79 100644 --- a/src/main/java/subway/domain/Line.java +++ b/src/main/java/subway/domain/data/Line.java @@ -1,4 +1,4 @@ -package subway.domain; +package subway.domain.data; public class Line { private String name; diff --git a/src/main/java/subway/domain/LineRepository.java b/src/main/java/subway/domain/data/LineRepository.java similarity index 94% rename from src/main/java/subway/domain/LineRepository.java rename to src/main/java/subway/domain/data/LineRepository.java index 49132ddb6..4deb3332d 100644 --- a/src/main/java/subway/domain/LineRepository.java +++ b/src/main/java/subway/domain/data/LineRepository.java @@ -1,4 +1,4 @@ -package subway.domain; +package subway.domain.data; import java.util.ArrayList; import java.util.Collections; diff --git a/src/main/java/subway/domain/Station.java b/src/main/java/subway/domain/data/Station.java similarity index 87% rename from src/main/java/subway/domain/Station.java rename to src/main/java/subway/domain/data/Station.java index bdb142590..9d2e697a0 100644 --- a/src/main/java/subway/domain/Station.java +++ b/src/main/java/subway/domain/data/Station.java @@ -1,4 +1,4 @@ -package subway.domain; +package subway.domain.data; public class Station { private String name; diff --git a/src/main/java/subway/domain/StationRepository.java b/src/main/java/subway/domain/data/StationRepository.java similarity index 95% rename from src/main/java/subway/domain/StationRepository.java rename to src/main/java/subway/domain/data/StationRepository.java index b7245c0f3..a67636d3c 100644 --- a/src/main/java/subway/domain/StationRepository.java +++ b/src/main/java/subway/domain/data/StationRepository.java @@ -1,4 +1,4 @@ -package subway.domain; +package subway.domain.data; import java.util.ArrayList; import java.util.Collections; From 1183af74c47fc7582211b47abac77e59b2c33cf6 Mon Sep 17 00:00:00 2001 From: KOREAparksh <45682868+KOREAparksh@users.noreply.github.com> Date: Tue, 15 Dec 2020 19:11:50 +0900 Subject: [PATCH 12/24] =?UTF-8?q?refactor=20:=20=ED=81=B4=EB=9E=98?= =?UTF-8?q?=EC=8A=A4=20=EC=9D=B4=EB=A6=84=20=EB=B3=80=EA=B2=BD=20DataList?= =?UTF-8?q?=20->=20ServiceList?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/subway/domain/menu/MainMenu.java | 8 ++++---- .../domain/menu/{DataList.java => ServiceList.java} | 4 ++-- src/main/java/subway/view/OutputView.java | 6 +++--- 3 files changed, 9 insertions(+), 9 deletions(-) rename src/main/java/subway/domain/menu/{DataList.java => ServiceList.java} (80%) diff --git a/src/main/java/subway/domain/menu/MainMenu.java b/src/main/java/subway/domain/menu/MainMenu.java index b43431066..4855548d9 100644 --- a/src/main/java/subway/domain/menu/MainMenu.java +++ b/src/main/java/subway/domain/menu/MainMenu.java @@ -1,10 +1,10 @@ package subway.domain.menu; public enum MainMenu { - STATION(String.valueOf(DataList.STATION.ordinal()+1), DataList.STATION.getName()+" 관리") - , LINE(String.valueOf(DataList.LINE.ordinal()+1), DataList.LINE.getName()+" 관리") - , SECTION(String.valueOf(DataList.SECTION.ordinal()+1), DataList.SECTION.getName()+" 관리") - , MAP(String.valueOf(DataList.MAP.ordinal()+1), DataList.MAP.getName()+" 출력") + STATION(String.valueOf(ServiceList.STATION.ordinal()+1), ServiceList.STATION.getName()+" 관리") + , LINE(String.valueOf(ServiceList.LINE.ordinal()+1), ServiceList.LINE.getName()+" 관리") + , SECTION(String.valueOf(ServiceList.SECTION.ordinal()+1), ServiceList.SECTION.getName()+" 관리") + , MAP(String.valueOf(ServiceList.MAP.ordinal()+1), ServiceList.MAP.getName()+" 출력") , END("Q", "종료"); final private String order; diff --git a/src/main/java/subway/domain/menu/DataList.java b/src/main/java/subway/domain/menu/ServiceList.java similarity index 80% rename from src/main/java/subway/domain/menu/DataList.java rename to src/main/java/subway/domain/menu/ServiceList.java index 6cec95f91..c5bd3d2d1 100644 --- a/src/main/java/subway/domain/menu/DataList.java +++ b/src/main/java/subway/domain/menu/ServiceList.java @@ -1,11 +1,11 @@ package subway.domain.menu; -public enum DataList { +public enum ServiceList { STATION("역"), LINE("노선"), SECTION("구간"), MAP("지하철 노선도"); final private String name; - DataList(String name) { + ServiceList(String name) { this.name = name; } diff --git a/src/main/java/subway/view/OutputView.java b/src/main/java/subway/view/OutputView.java index 9ae8e4650..94305af39 100644 --- a/src/main/java/subway/view/OutputView.java +++ b/src/main/java/subway/view/OutputView.java @@ -3,7 +3,7 @@ import subway.Constant; import subway.domain.menu.MainMenu; import subway.domain.menu.ManagementMenu; -import subway.domain.menu.DataList; +import subway.domain.menu.ServiceList; public class OutputView { @@ -19,11 +19,11 @@ public static void printMainView(){ System.out.println(); } - public static void printManagementView(DataList data){ + public static void printManagementView(ServiceList data){ System.out.print(Constant.VIEW_HEADER); System.out.printf(Constant.MANAGEMENT_VIEW_HEADER_FORMAT, data.getName()); for(ManagementMenu managementMenu : ManagementMenu.values()) { - if(data == DataList.SECTION && managementMenu == ManagementMenu.FIND ){ /*구간 관리 화면에는 조회 없음*/ + if(data == ServiceList.SECTION && managementMenu == ManagementMenu.FIND ){ /*구간 관리 화면에는 조회 없음*/ continue; } From 4f8f315bbe7f0c95b7665bb6f231bd290f453bd7 Mon Sep 17 00:00:00 2001 From: KOREAparksh <45682868+KOREAparksh@users.noreply.github.com> Date: Tue, 15 Dec 2020 19:35:22 +0900 Subject: [PATCH 13/24] =?UTF-8?q?feat=20:=20=EA=B0=81=20=EA=B8=B0=EB=8A=A5?= =?UTF-8?q?=20=EA=B4=80=EB=A6=AC=20=EC=B6=9C=EB=A0=A5=EB=A9=94=EC=84=B8?= =?UTF-8?q?=EC=A7=80=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/domain/Services.java | 25 +++++++++++++++++++ src/main/java/subway/domain/SubwayMap.java | 12 +++++++-- .../domain/management/StationManagement.java | 18 +++++++++++++ .../subway/domain/menu/ManagementMenu.java | 9 +++++++ src/main/java/subway/view/InputView.java | 2 ++ 5 files changed, 64 insertions(+), 2 deletions(-) create mode 100644 src/main/java/subway/domain/Services.java create mode 100644 src/main/java/subway/domain/management/StationManagement.java diff --git a/src/main/java/subway/domain/Services.java b/src/main/java/subway/domain/Services.java new file mode 100644 index 000000000..f6c6471e6 --- /dev/null +++ b/src/main/java/subway/domain/Services.java @@ -0,0 +1,25 @@ +package subway.domain; + +import subway.domain.menu.MainMenu; +import subway.domain.management.StationManagement; + +import java.util.Scanner; + +public class Services { + + public static void doService(String inputData, Scanner scanner) { + if (inputData.equals(MainMenu.STATION.getOrder())) { + StationManagement.doStationManagement(scanner); + return; + } + if (inputData.equals(MainMenu.LINE.getOrder())) { + + } + if (inputData.equals(MainMenu.SECTION.getOrder())) { + + } + if (inputData.equals(MainMenu.MAP.getOrder())) { + + } + } +} diff --git a/src/main/java/subway/domain/SubwayMap.java b/src/main/java/subway/domain/SubwayMap.java index 8377ae61d..9344f2ed2 100644 --- a/src/main/java/subway/domain/SubwayMap.java +++ b/src/main/java/subway/domain/SubwayMap.java @@ -2,6 +2,7 @@ import subway.domain.data.LineRepository; import subway.domain.data.StationRepository; +import subway.domain.menu.MainMenu; import subway.view.InputView; import subway.view.OutputView; @@ -21,12 +22,19 @@ public SubwayMap(Scanner scanner) { } private void startService() { - selectService(); + while (true) { + String inputData = selectService(); + if (inputData.equals(MainMenu.END.getOrder())){ + return; + } + Services.doService(inputData, scanner); + } } - private void selectService() { + private String selectService() { OutputView.printMainView(); String inputData = InputView.inputMainMenu(scanner); + return inputData; } diff --git a/src/main/java/subway/domain/management/StationManagement.java b/src/main/java/subway/domain/management/StationManagement.java new file mode 100644 index 000000000..941f25a59 --- /dev/null +++ b/src/main/java/subway/domain/management/StationManagement.java @@ -0,0 +1,18 @@ +package subway.domain.management; + +import subway.domain.menu.ServiceList; +import subway.view.InputView; +import subway.view.OutputView; + +import java.util.Scanner; + +public class StationManagement { + + public StationManagement() { + } + + public static void doStationManagement(Scanner scanner){ + OutputView.printManagementView(ServiceList.STATION); + String inputData = InputView.inputMainMenu(scanner); + } +} diff --git a/src/main/java/subway/domain/menu/ManagementMenu.java b/src/main/java/subway/domain/menu/ManagementMenu.java index dc394577f..36f191b4f 100644 --- a/src/main/java/subway/domain/menu/ManagementMenu.java +++ b/src/main/java/subway/domain/menu/ManagementMenu.java @@ -22,4 +22,13 @@ public String getOrder() { public String getMessage() { return message; } + + public static boolean isValidOrder(String order){ + for(ManagementMenu managementMenu : ManagementMenu.values()){ + if(managementMenu.getOrder().equals(order)){ + return true; + } + } + return false; + } } diff --git a/src/main/java/subway/view/InputView.java b/src/main/java/subway/view/InputView.java index b2472ab8c..07ce7c963 100644 --- a/src/main/java/subway/view/InputView.java +++ b/src/main/java/subway/view/InputView.java @@ -1,6 +1,7 @@ package subway.view; import subway.domain.menu.MainMenu; +import subway.domain.menu.ManagementMenu; import java.util.Scanner; @@ -16,4 +17,5 @@ public static String inputMainMenu(Scanner scanner){ } return inputMainMenu(scanner); } + } From 72820e8759f1c2a3075dc5612339d6aa258354bf Mon Sep 17 00:00:00 2001 From: KOREAparksh <45682868+KOREAparksh@users.noreply.github.com> Date: Tue, 15 Dec 2020 20:13:44 +0900 Subject: [PATCH 14/24] =?UTF-8?q?refactor=20:=20=EA=B0=81=20=EA=B8=B0?= =?UTF-8?q?=EB=8A=A5=20=ED=81=B4=EB=9E=98=EC=8A=A4=20=EB=B6=84=EB=A6=AC=20?= =?UTF-8?q?=EB=B0=8F=20=EC=B6=9C=EB=A0=B4=ED=95=A8=EC=88=98=20=EC=88=98?= =?UTF-8?q?=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/subway/domain/Services.java | 15 +++++++--- .../subway/domain/management/LineManager.java | 30 +++++++++++++++++++ .../domain/management/SectionManager.java | 29 ++++++++++++++++++ .../domain/management/ServiceManager.java | 23 ++++++++++++++ .../domain/management/StationManagement.java | 18 ----------- .../domain/management/StationManager.java | 29 ++++++++++++++++++ .../subway/domain/menu/ManagementMenu.java | 8 ----- src/main/java/subway/view/InputView.java | 7 +++++ src/main/java/subway/view/OutputView.java | 17 +++++------ 9 files changed, 136 insertions(+), 40 deletions(-) create mode 100644 src/main/java/subway/domain/management/LineManager.java create mode 100644 src/main/java/subway/domain/management/SectionManager.java create mode 100644 src/main/java/subway/domain/management/ServiceManager.java delete mode 100644 src/main/java/subway/domain/management/StationManagement.java create mode 100644 src/main/java/subway/domain/management/StationManager.java diff --git a/src/main/java/subway/domain/Services.java b/src/main/java/subway/domain/Services.java index f6c6471e6..8fb45485c 100644 --- a/src/main/java/subway/domain/Services.java +++ b/src/main/java/subway/domain/Services.java @@ -1,7 +1,9 @@ package subway.domain; +import subway.domain.management.LineManager; +import subway.domain.management.SectionManager; import subway.domain.menu.MainMenu; -import subway.domain.management.StationManagement; +import subway.domain.management.StationManager; import java.util.Scanner; @@ -9,14 +11,19 @@ public class Services { public static void doService(String inputData, Scanner scanner) { if (inputData.equals(MainMenu.STATION.getOrder())) { - StationManagement.doStationManagement(scanner); + StationManager stationManager = new StationManager(); + stationManager.doStationManagement(scanner); return; } if (inputData.equals(MainMenu.LINE.getOrder())) { - + LineManager lineManager = new LineManager(); + lineManager.doStationManagement(scanner); + return; } if (inputData.equals(MainMenu.SECTION.getOrder())) { - + SectionManager sectionManager = new SectionManager(); + sectionManager.doStationManagement(scanner); + return; } if (inputData.equals(MainMenu.MAP.getOrder())) { diff --git a/src/main/java/subway/domain/management/LineManager.java b/src/main/java/subway/domain/management/LineManager.java new file mode 100644 index 000000000..044debd91 --- /dev/null +++ b/src/main/java/subway/domain/management/LineManager.java @@ -0,0 +1,30 @@ +package subway.domain.management; + +import subway.domain.menu.ManagementMenu; +import subway.domain.menu.ServiceList; +import subway.view.InputView; +import subway.view.OutputView; + +import java.util.Scanner; + +public class LineManager extends ServiceManager{ + + public LineManager() { + super(); + } + + @Override + public void doStationManagement(Scanner scanner) { + OutputView.printManagementView(ServiceList.LINE, menuList); + String inputData = InputView.inputMainMenu(scanner); + + } + + @Override + protected void initMenuList() { + menuList.add(ManagementMenu.REGISTER); + menuList.add(ManagementMenu.DELETE); + menuList.add(ManagementMenu.FIND); + menuList.add(ManagementMenu.BACK); + } +} diff --git a/src/main/java/subway/domain/management/SectionManager.java b/src/main/java/subway/domain/management/SectionManager.java new file mode 100644 index 000000000..c97159231 --- /dev/null +++ b/src/main/java/subway/domain/management/SectionManager.java @@ -0,0 +1,29 @@ +package subway.domain.management; + +import subway.domain.menu.ManagementMenu; +import subway.domain.menu.ServiceList; +import subway.view.InputView; +import subway.view.OutputView; + +import java.util.Scanner; + +public class SectionManager extends ServiceManager { + + public SectionManager() { + super(); + } + + @Override + public void doStationManagement(Scanner scanner) { + OutputView.printManagementView(ServiceList.SECTION, menuList); + String inputData = InputView.inputMainMenu(scanner); + + } + + @Override + protected void initMenuList() { + menuList.add(ManagementMenu.REGISTER); + menuList.add(ManagementMenu.DELETE); + menuList.add(ManagementMenu.BACK); + } +} diff --git a/src/main/java/subway/domain/management/ServiceManager.java b/src/main/java/subway/domain/management/ServiceManager.java new file mode 100644 index 000000000..c89696931 --- /dev/null +++ b/src/main/java/subway/domain/management/ServiceManager.java @@ -0,0 +1,23 @@ +package subway.domain.management; + +import subway.domain.menu.ManagementMenu; +import subway.domain.menu.ServiceList; +import subway.view.InputView; +import subway.view.OutputView; + +import java.awt.*; +import java.util.ArrayList; +import java.util.List; +import java.util.Scanner; + +public abstract class ServiceManager { + protected List menuList = new ArrayList<>(); + + public ServiceManager() { + initMenuList(); + } + + public abstract void doStationManagement(Scanner scanner); + + protected abstract void initMenuList(); +} diff --git a/src/main/java/subway/domain/management/StationManagement.java b/src/main/java/subway/domain/management/StationManagement.java deleted file mode 100644 index 941f25a59..000000000 --- a/src/main/java/subway/domain/management/StationManagement.java +++ /dev/null @@ -1,18 +0,0 @@ -package subway.domain.management; - -import subway.domain.menu.ServiceList; -import subway.view.InputView; -import subway.view.OutputView; - -import java.util.Scanner; - -public class StationManagement { - - public StationManagement() { - } - - public static void doStationManagement(Scanner scanner){ - OutputView.printManagementView(ServiceList.STATION); - String inputData = InputView.inputMainMenu(scanner); - } -} diff --git a/src/main/java/subway/domain/management/StationManager.java b/src/main/java/subway/domain/management/StationManager.java new file mode 100644 index 000000000..03a44ab58 --- /dev/null +++ b/src/main/java/subway/domain/management/StationManager.java @@ -0,0 +1,29 @@ +package subway.domain.management; + +import subway.domain.menu.ManagementMenu; +import subway.domain.menu.ServiceList; +import subway.view.InputView; +import subway.view.OutputView; + +import java.util.Scanner; + +public class StationManager extends ServiceManager { + + public StationManager() { + super(); + } + + @Override + public void doStationManagement(Scanner scanner) { + OutputView.printManagementView(ServiceList.STATION, menuList); + String inputData = InputView.inputMainMenu(scanner); + } + + @Override + protected void initMenuList() { + menuList.add(ManagementMenu.REGISTER); + menuList.add(ManagementMenu.DELETE); + menuList.add(ManagementMenu.FIND); + menuList.add(ManagementMenu.BACK); + } +} diff --git a/src/main/java/subway/domain/menu/ManagementMenu.java b/src/main/java/subway/domain/menu/ManagementMenu.java index 36f191b4f..b27cf7328 100644 --- a/src/main/java/subway/domain/menu/ManagementMenu.java +++ b/src/main/java/subway/domain/menu/ManagementMenu.java @@ -23,12 +23,4 @@ public String getMessage() { return message; } - public static boolean isValidOrder(String order){ - for(ManagementMenu managementMenu : ManagementMenu.values()){ - if(managementMenu.getOrder().equals(order)){ - return true; - } - } - return false; - } } diff --git a/src/main/java/subway/view/InputView.java b/src/main/java/subway/view/InputView.java index 07ce7c963..4cf00632f 100644 --- a/src/main/java/subway/view/InputView.java +++ b/src/main/java/subway/view/InputView.java @@ -18,4 +18,11 @@ public static String inputMainMenu(Scanner scanner){ return inputMainMenu(scanner); } + public static String inputManagementMenu(Scanner scanner, ManagementMenu menu){ + String inputData = scanner.nextLine(); + if(MainMenu.isValidOrder(inputData)){ + return inputData; + } + return inputMainMenu(scanner); + } } diff --git a/src/main/java/subway/view/OutputView.java b/src/main/java/subway/view/OutputView.java index 94305af39..780130bc3 100644 --- a/src/main/java/subway/view/OutputView.java +++ b/src/main/java/subway/view/OutputView.java @@ -5,6 +5,8 @@ import subway.domain.menu.ManagementMenu; import subway.domain.menu.ServiceList; +import java.util.List; + public class OutputView { public OutputView() { @@ -19,18 +21,13 @@ public static void printMainView(){ System.out.println(); } - public static void printManagementView(ServiceList data){ + public static void printManagementView(ServiceList service, List menuList){ System.out.print(Constant.VIEW_HEADER); - System.out.printf(Constant.MANAGEMENT_VIEW_HEADER_FORMAT, data.getName()); - for(ManagementMenu managementMenu : ManagementMenu.values()) { - if(data == ServiceList.SECTION && managementMenu == ManagementMenu.FIND ){ /*구간 관리 화면에는 조회 없음*/ - continue; - } - - System.out.printf(Constant.MANAGEMENT_VIEW_BODY_FORMAT, managementMenu.getOrder() - , data.getName(), managementMenu.getMessage()); + System.out.printf(Constant.MANAGEMENT_VIEW_HEADER_FORMAT, service.getName()); + for(ManagementMenu menu : menuList) { + System.out.printf(Constant.MANAGEMENT_VIEW_BODY_FORMAT, menu.getOrder(), service.getName(), menu.getMessage()); } - + System.out.println(); } public static void printSubwayMap(){ From d72cac20f180c0c01143ddb2859ce021bb9b6149 Mon Sep 17 00:00:00 2001 From: KOREAparksh <45682868+KOREAparksh@users.noreply.github.com> Date: Tue, 15 Dec 2020 20:26:43 +0900 Subject: [PATCH 15/24] =?UTF-8?q?refactor=20:=20=ED=81=B4=EB=9E=98?= =?UTF-8?q?=EC=8A=A4=20=EB=B6=84=EB=A6=AC=EC=97=90=20=EB=94=B0=EB=A5=B8=20?= =?UTF-8?q?=EC=9E=85=EB=A0=A5=ED=95=A8=EC=88=98=20=EB=B0=8F=20=EC=9C=A0?= =?UTF-8?q?=ED=9A=A8=EC=84=B1=EA=B2=80=EC=82=AC=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/subway/Constant.java | 3 +++ src/main/java/subway/domain/SubwayMap.java | 8 ++++++-- .../subway/domain/management/LineManager.java | 2 -- .../domain/management/SectionManager.java | 1 - .../domain/management/StationManager.java | 8 +++++++- src/main/java/subway/view/InputView.java | 18 +++++++++++------- src/main/java/subway/view/OutputView.java | 4 +++- 7 files changed, 30 insertions(+), 14 deletions(-) diff --git a/src/main/java/subway/Constant.java b/src/main/java/subway/Constant.java index d17e75afd..662ee1f6b 100644 --- a/src/main/java/subway/Constant.java +++ b/src/main/java/subway/Constant.java @@ -9,4 +9,7 @@ public class Constant { public static final String MANAGEMENT_VIEW_HEADER_FORMAT = "%s 관리 화면\n"; public static final String MANAGEMENT_VIEW_BODY_FORMAT = "%s. %s %s\n"; + public static final String ILLEGAL_ARGUMENT_EXCEPTION_HEADER = "[ERROR] "; + public static final String ILLEGAL_ARGUMENT_EXCEPTION_INVALID_MENU_ORDER = "선택할 수 없는 기능입니다."; + } diff --git a/src/main/java/subway/domain/SubwayMap.java b/src/main/java/subway/domain/SubwayMap.java index 9344f2ed2..72039c442 100644 --- a/src/main/java/subway/domain/SubwayMap.java +++ b/src/main/java/subway/domain/SubwayMap.java @@ -33,8 +33,12 @@ private void startService() { private String selectService() { OutputView.printMainView(); - String inputData = InputView.inputMainMenu(scanner); - return inputData; + try { + return InputView.inputMainMenu(scanner); + } catch (IllegalArgumentException e){ + OutputView.printError(e.getMessage()); + return selectService(); + } } diff --git a/src/main/java/subway/domain/management/LineManager.java b/src/main/java/subway/domain/management/LineManager.java index 044debd91..059addce3 100644 --- a/src/main/java/subway/domain/management/LineManager.java +++ b/src/main/java/subway/domain/management/LineManager.java @@ -16,8 +16,6 @@ public LineManager() { @Override public void doStationManagement(Scanner scanner) { OutputView.printManagementView(ServiceList.LINE, menuList); - String inputData = InputView.inputMainMenu(scanner); - } @Override diff --git a/src/main/java/subway/domain/management/SectionManager.java b/src/main/java/subway/domain/management/SectionManager.java index c97159231..1965f70ca 100644 --- a/src/main/java/subway/domain/management/SectionManager.java +++ b/src/main/java/subway/domain/management/SectionManager.java @@ -16,7 +16,6 @@ public SectionManager() { @Override public void doStationManagement(Scanner scanner) { OutputView.printManagementView(ServiceList.SECTION, menuList); - String inputData = InputView.inputMainMenu(scanner); } diff --git a/src/main/java/subway/domain/management/StationManager.java b/src/main/java/subway/domain/management/StationManager.java index 03a44ab58..d1f14dc15 100644 --- a/src/main/java/subway/domain/management/StationManager.java +++ b/src/main/java/subway/domain/management/StationManager.java @@ -16,7 +16,13 @@ public StationManager() { @Override public void doStationManagement(Scanner scanner) { OutputView.printManagementView(ServiceList.STATION, menuList); - String inputData = InputView.inputMainMenu(scanner); + try{ + String inputData = InputView.inputManagementMenu(scanner, menuList); + } catch (IllegalArgumentException e){ + OutputView.printError(e.getMessage()); + doStationManagement(scanner); + } + } @Override diff --git a/src/main/java/subway/view/InputView.java b/src/main/java/subway/view/InputView.java index 4cf00632f..48e9704d8 100644 --- a/src/main/java/subway/view/InputView.java +++ b/src/main/java/subway/view/InputView.java @@ -1,8 +1,10 @@ package subway.view; +import subway.Constant; import subway.domain.menu.MainMenu; import subway.domain.menu.ManagementMenu; +import java.util.List; import java.util.Scanner; public class InputView { @@ -12,17 +14,19 @@ public InputView() { public static String inputMainMenu(Scanner scanner){ String inputData = scanner.nextLine(); - if(MainMenu.isValidOrder(inputData)){ - return inputData; + if(!MainMenu.isValidOrder(inputData)){ + throw new IllegalArgumentException(Constant.ILLEGAL_ARGUMENT_EXCEPTION_INVALID_MENU_ORDER); } - return inputMainMenu(scanner); + return inputData; } - public static String inputManagementMenu(Scanner scanner, ManagementMenu menu){ + public static String inputManagementMenu(Scanner scanner, List menuList){ String inputData = scanner.nextLine(); - if(MainMenu.isValidOrder(inputData)){ - return inputData; + for(ManagementMenu menu : menuList){ + if(menu.getOrder().equals(inputData)){ + return inputData; + } } - return inputMainMenu(scanner); + throw new IllegalArgumentException(Constant.ILLEGAL_ARGUMENT_EXCEPTION_INVALID_MENU_ORDER); } } diff --git a/src/main/java/subway/view/OutputView.java b/src/main/java/subway/view/OutputView.java index 780130bc3..d7cee25f6 100644 --- a/src/main/java/subway/view/OutputView.java +++ b/src/main/java/subway/view/OutputView.java @@ -43,6 +43,8 @@ public static void printFunctionResult(String resultMessage){ } public static void printError(String errorMessage){ - + System.out.print(Constant.ILLEGAL_ARGUMENT_EXCEPTION_HEADER); + System.out.println(errorMessage); + System.out.println(); } } From 978c43119aa7dfabc1efe153a3ec3e4437bf3539 Mon Sep 17 00:00:00 2001 From: KOREAparksh <45682868+KOREAparksh@users.noreply.github.com> Date: Tue, 15 Dec 2020 20:31:19 +0900 Subject: [PATCH 16/24] =?UTF-8?q?feat=20:=20=EC=9E=85=EB=A0=A5=20=EA=B8=B0?= =?UTF-8?q?=EB=8B=A4=EB=A6=AC=EB=8A=94=20=EB=AC=B8=EC=9E=A5=20=EC=B6=9C?= =?UTF-8?q?=EB=A0=A5=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/subway/Constant.java | 2 ++ src/main/java/subway/domain/SubwayMap.java | 5 ++++- src/main/java/subway/domain/management/StationManager.java | 1 - src/main/java/subway/view/OutputView.java | 4 +++- 4 files changed, 9 insertions(+), 3 deletions(-) diff --git a/src/main/java/subway/Constant.java b/src/main/java/subway/Constant.java index 662ee1f6b..d86d6ac30 100644 --- a/src/main/java/subway/Constant.java +++ b/src/main/java/subway/Constant.java @@ -6,6 +6,8 @@ public class Constant { public static final String VIEW_FORMAT = "%s. %s\n"; public static final String MAIN_VIEW_HEADER = "메인 화면"; + public static final String ASKING_FUNCTION_BODY = "원하는 기능을 선택하세요."; + public static final String MANAGEMENT_VIEW_HEADER_FORMAT = "%s 관리 화면\n"; public static final String MANAGEMENT_VIEW_BODY_FORMAT = "%s. %s %s\n"; diff --git a/src/main/java/subway/domain/SubwayMap.java b/src/main/java/subway/domain/SubwayMap.java index 72039c442..97a411972 100644 --- a/src/main/java/subway/domain/SubwayMap.java +++ b/src/main/java/subway/domain/SubwayMap.java @@ -1,5 +1,6 @@ package subway.domain; +import subway.Constant; import subway.domain.data.LineRepository; import subway.domain.data.StationRepository; import subway.domain.menu.MainMenu; @@ -22,6 +23,8 @@ public SubwayMap(Scanner scanner) { } private void startService() { + OutputView.printMainView(); + while (true) { String inputData = selectService(); if (inputData.equals(MainMenu.END.getOrder())){ @@ -32,8 +35,8 @@ private void startService() { } private String selectService() { - OutputView.printMainView(); try { + OutputView.printSelectFunction(Constant.ASKING_FUNCTION_BODY); return InputView.inputMainMenu(scanner); } catch (IllegalArgumentException e){ OutputView.printError(e.getMessage()); diff --git a/src/main/java/subway/domain/management/StationManager.java b/src/main/java/subway/domain/management/StationManager.java index d1f14dc15..b91019a63 100644 --- a/src/main/java/subway/domain/management/StationManager.java +++ b/src/main/java/subway/domain/management/StationManager.java @@ -22,7 +22,6 @@ public void doStationManagement(Scanner scanner) { OutputView.printError(e.getMessage()); doStationManagement(scanner); } - } @Override diff --git a/src/main/java/subway/view/OutputView.java b/src/main/java/subway/view/OutputView.java index d7cee25f6..61d3d8a90 100644 --- a/src/main/java/subway/view/OutputView.java +++ b/src/main/java/subway/view/OutputView.java @@ -13,6 +13,7 @@ public OutputView() { } public static void printMainView(){ + System.out.println(); System.out.print(Constant.VIEW_HEADER); System.out.println(Constant.MAIN_VIEW_HEADER); for(MainMenu menu : MainMenu.values()) { @@ -35,7 +36,8 @@ public static void printSubwayMap(){ } public static void printSelectFunction(String askingMessage){ - + System.out.print(Constant.VIEW_HEADER); + System.out.println(askingMessage); } public static void printFunctionResult(String resultMessage){ From 45c78a79c27f133b3ea2f0b16b4b2fea7f0101da Mon Sep 17 00:00:00 2001 From: KOREAparksh <45682868+KOREAparksh@users.noreply.github.com> Date: Tue, 15 Dec 2020 20:56:47 +0900 Subject: [PATCH 17/24] =?UTF-8?q?feat=20:=20=EC=97=AD=20=EC=9D=B4=EB=A6=84?= =?UTF-8?q?=20=EC=9E=85=EB=A0=A5=20=EA=B8=B0=EB=8A=A5=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/subway/Constant.java | 4 ++- src/main/java/subway/domain/Services.java | 12 +++---- src/main/java/subway/domain/SubwayMap.java | 5 ++- .../subway/domain/management/LineManager.java | 6 ++-- .../domain/management/SectionManager.java | 6 ++-- .../domain/management/ServiceManager.java | 17 ++++++++-- .../domain/management/StationManager.java | 31 +++++++++++++++---- src/main/java/subway/view/InputView.java | 7 +++++ src/main/java/subway/view/OutputView.java | 14 ++++++--- 9 files changed, 74 insertions(+), 28 deletions(-) diff --git a/src/main/java/subway/Constant.java b/src/main/java/subway/Constant.java index d86d6ac30..2e4ac835b 100644 --- a/src/main/java/subway/Constant.java +++ b/src/main/java/subway/Constant.java @@ -6,7 +6,9 @@ public class Constant { public static final String VIEW_FORMAT = "%s. %s\n"; public static final String MAIN_VIEW_HEADER = "메인 화면"; - public static final String ASKING_FUNCTION_BODY = "원하는 기능을 선택하세요."; + public static final String ASKING_FUNCTION_INPUT_FUNCTION_ORDER = "원하는 기능을 선택하세요."; + + public static final String INPUT_DATA_REGISTER_FORMAT = "등록할 %s 이름을 입력하세요.\n"; public static final String MANAGEMENT_VIEW_HEADER_FORMAT = "%s 관리 화면\n"; public static final String MANAGEMENT_VIEW_BODY_FORMAT = "%s. %s %s\n"; diff --git a/src/main/java/subway/domain/Services.java b/src/main/java/subway/domain/Services.java index 8fb45485c..2c0213063 100644 --- a/src/main/java/subway/domain/Services.java +++ b/src/main/java/subway/domain/Services.java @@ -11,18 +11,18 @@ public class Services { public static void doService(String inputData, Scanner scanner) { if (inputData.equals(MainMenu.STATION.getOrder())) { - StationManager stationManager = new StationManager(); - stationManager.doStationManagement(scanner); + StationManager stationManager = new StationManager(scanner); + stationManager.doStationManagement(); return; } if (inputData.equals(MainMenu.LINE.getOrder())) { - LineManager lineManager = new LineManager(); - lineManager.doStationManagement(scanner); + LineManager lineManager = new LineManager(scanner); + lineManager.doStationManagement(); return; } if (inputData.equals(MainMenu.SECTION.getOrder())) { - SectionManager sectionManager = new SectionManager(); - sectionManager.doStationManagement(scanner); + SectionManager sectionManager = new SectionManager(scanner); + sectionManager.doStationManagement(); return; } if (inputData.equals(MainMenu.MAP.getOrder())) { diff --git a/src/main/java/subway/domain/SubwayMap.java b/src/main/java/subway/domain/SubwayMap.java index 97a411972..52682a4ac 100644 --- a/src/main/java/subway/domain/SubwayMap.java +++ b/src/main/java/subway/domain/SubwayMap.java @@ -23,9 +23,8 @@ public SubwayMap(Scanner scanner) { } private void startService() { - OutputView.printMainView(); - while (true) { + OutputView.printMainView(); String inputData = selectService(); if (inputData.equals(MainMenu.END.getOrder())){ return; @@ -36,7 +35,7 @@ private void startService() { private String selectService() { try { - OutputView.printSelectFunction(Constant.ASKING_FUNCTION_BODY); + OutputView.printAskingFunction(Constant.ASKING_FUNCTION_INPUT_FUNCTION_ORDER); return InputView.inputMainMenu(scanner); } catch (IllegalArgumentException e){ OutputView.printError(e.getMessage()); diff --git a/src/main/java/subway/domain/management/LineManager.java b/src/main/java/subway/domain/management/LineManager.java index 059addce3..c0c98608a 100644 --- a/src/main/java/subway/domain/management/LineManager.java +++ b/src/main/java/subway/domain/management/LineManager.java @@ -9,12 +9,12 @@ public class LineManager extends ServiceManager{ - public LineManager() { - super(); + public LineManager(Scanner scanner) { + super(scanner); } @Override - public void doStationManagement(Scanner scanner) { + public void doStationManagement() { OutputView.printManagementView(ServiceList.LINE, menuList); } diff --git a/src/main/java/subway/domain/management/SectionManager.java b/src/main/java/subway/domain/management/SectionManager.java index 1965f70ca..708a8c13e 100644 --- a/src/main/java/subway/domain/management/SectionManager.java +++ b/src/main/java/subway/domain/management/SectionManager.java @@ -9,12 +9,12 @@ public class SectionManager extends ServiceManager { - public SectionManager() { - super(); + public SectionManager(Scanner scanner) { + super(scanner); } @Override - public void doStationManagement(Scanner scanner) { + public void doStationManagement() { OutputView.printManagementView(ServiceList.SECTION, menuList); } diff --git a/src/main/java/subway/domain/management/ServiceManager.java b/src/main/java/subway/domain/management/ServiceManager.java index c89696931..56fc21c21 100644 --- a/src/main/java/subway/domain/management/ServiceManager.java +++ b/src/main/java/subway/domain/management/ServiceManager.java @@ -1,5 +1,6 @@ package subway.domain.management; +import subway.Constant; import subway.domain.menu.ManagementMenu; import subway.domain.menu.ServiceList; import subway.view.InputView; @@ -12,12 +13,24 @@ public abstract class ServiceManager { protected List menuList = new ArrayList<>(); + protected Scanner scanner; - public ServiceManager() { + public ServiceManager(Scanner scanner) { initMenuList(); + this.scanner = scanner; } - public abstract void doStationManagement(Scanner scanner); + protected String getInputData(Scanner scanner){ + try{ + OutputView.printAskingFunction(Constant.ASKING_FUNCTION_INPUT_FUNCTION_ORDER); + return InputView.inputManagementMenu(scanner, menuList); + } catch (IllegalArgumentException e){ + OutputView.printError(e.getMessage()); + return getInputData(scanner); + } + } + + public abstract void doStationManagement(); protected abstract void initMenuList(); } diff --git a/src/main/java/subway/domain/management/StationManager.java b/src/main/java/subway/domain/management/StationManager.java index b91019a63..6bbfd1bbf 100644 --- a/src/main/java/subway/domain/management/StationManager.java +++ b/src/main/java/subway/domain/management/StationManager.java @@ -1,5 +1,6 @@ package subway.domain.management; +import subway.Constant; import subway.domain.menu.ManagementMenu; import subway.domain.menu.ServiceList; import subway.view.InputView; @@ -7,23 +8,41 @@ import java.util.Scanner; + public class StationManager extends ServiceManager { - public StationManager() { - super(); + private Scanner scanner; + public StationManager(Scanner scanner) { + super(scanner); } @Override - public void doStationManagement(Scanner scanner) { + public void doStationManagement() { OutputView.printManagementView(ServiceList.STATION, menuList); + String inputData = getInputData(scanner); + + if(inputData.equals(ManagementMenu.REGISTER.getOrder())){ + registerStation(); + return; + } + } + + private void registerStation() { + String name = getStationName(); + + } + + private String getStationName() { try{ - String inputData = InputView.inputManagementMenu(scanner, menuList); - } catch (IllegalArgumentException e){ + OutputView.printInputData(Constant.INPUT_DATA_REGISTER_FORMAT, ServiceList.STATION.getName()); + return InputView.inputData(scanner); + }catch (IllegalArgumentException e){ OutputView.printError(e.getMessage()); - doStationManagement(scanner); + return getStationName(); } } + @Override protected void initMenuList() { menuList.add(ManagementMenu.REGISTER); diff --git a/src/main/java/subway/view/InputView.java b/src/main/java/subway/view/InputView.java index 48e9704d8..49fa49db0 100644 --- a/src/main/java/subway/view/InputView.java +++ b/src/main/java/subway/view/InputView.java @@ -4,6 +4,7 @@ import subway.domain.menu.MainMenu; import subway.domain.menu.ManagementMenu; +import javax.xml.validation.Validator; import java.util.List; import java.util.Scanner; @@ -29,4 +30,10 @@ public static String inputManagementMenu(Scanner scanner, List m } throw new IllegalArgumentException(Constant.ILLEGAL_ARGUMENT_EXCEPTION_INVALID_MENU_ORDER); } + + public static String inputData(Scanner scanner){ + String inputData = scanner.nextLine(); + + return inputData; + } } diff --git a/src/main/java/subway/view/OutputView.java b/src/main/java/subway/view/OutputView.java index 61d3d8a90..ecc312361 100644 --- a/src/main/java/subway/view/OutputView.java +++ b/src/main/java/subway/view/OutputView.java @@ -19,34 +19,40 @@ public static void printMainView(){ for(MainMenu menu : MainMenu.values()) { System.out.printf(Constant.VIEW_FORMAT, menu.getOrder(), menu.getMessage()); } - System.out.println(); } public static void printManagementView(ServiceList service, List menuList){ + System.out.println(); System.out.print(Constant.VIEW_HEADER); System.out.printf(Constant.MANAGEMENT_VIEW_HEADER_FORMAT, service.getName()); for(ManagementMenu menu : menuList) { System.out.printf(Constant.MANAGEMENT_VIEW_BODY_FORMAT, menu.getOrder(), service.getName(), menu.getMessage()); } - System.out.println(); } public static void printSubwayMap(){ } - public static void printSelectFunction(String askingMessage){ + public static void printAskingFunction(String askingMessage){ + System.out.println(); System.out.print(Constant.VIEW_HEADER); System.out.println(askingMessage); } + public static void printInputData(String format, String service){ + System.out.println(); + System.out.print(Constant.VIEW_HEADER); + System.out.printf(format, service); + } + public static void printFunctionResult(String resultMessage){ } public static void printError(String errorMessage){ + System.out.println(); System.out.print(Constant.ILLEGAL_ARGUMENT_EXCEPTION_HEADER); System.out.println(errorMessage); - System.out.println(); } } From 46aff8d84f0388c1d761cf9d692959c3eec1600b Mon Sep 17 00:00:00 2001 From: KOREAparksh <45682868+KOREAparksh@users.noreply.github.com> Date: Tue, 15 Dec 2020 21:23:30 +0900 Subject: [PATCH 18/24] =?UTF-8?q?feat=20:=20=EC=97=AD=20=EC=9D=B4=EB=A6=84?= =?UTF-8?q?=20=EB=93=B1=EB=A1=9D=20=EA=B8=B0=EB=8A=A5=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/Utils/Validator.java | 14 ++++++ src/main/java/subway/Constant.java | 5 +++ src/main/java/subway/domain/SubwayMap.java | 2 - .../domain/management/StationManager.java | 43 ++++++++++++++----- src/main/java/subway/view/InputView.java | 16 +++---- src/main/java/subway/view/OutputView.java | 9 ++++ 6 files changed, 68 insertions(+), 21 deletions(-) create mode 100644 src/main/java/Utils/Validator.java diff --git a/src/main/java/Utils/Validator.java b/src/main/java/Utils/Validator.java new file mode 100644 index 000000000..abcea7952 --- /dev/null +++ b/src/main/java/Utils/Validator.java @@ -0,0 +1,14 @@ +package Utils; + +import subway.Constant; + +import java.util.IllformedLocaleException; + +public class Validator { + + public static void checkDataLength(String data){ + if(data.length() < Constant.MINIMUM_LENGTH){ + throw new IllegalArgumentException(Constant.ILLEGAL_ARGUMENT_EXCEPTION_MINIMUM_LENGTH); + } + } +} diff --git a/src/main/java/subway/Constant.java b/src/main/java/subway/Constant.java index 2e4ac835b..98926c2ee 100644 --- a/src/main/java/subway/Constant.java +++ b/src/main/java/subway/Constant.java @@ -5,6 +5,7 @@ public class Constant { public static final String VIEW_HEADER = "## "; public static final String VIEW_FORMAT = "%s. %s\n"; public static final String MAIN_VIEW_HEADER = "메인 화면"; + public static final int MINIMUM_LENGTH = 2; public static final String ASKING_FUNCTION_INPUT_FUNCTION_ORDER = "원하는 기능을 선택하세요."; @@ -15,5 +16,9 @@ public class Constant { public static final String ILLEGAL_ARGUMENT_EXCEPTION_HEADER = "[ERROR] "; public static final String ILLEGAL_ARGUMENT_EXCEPTION_INVALID_MENU_ORDER = "선택할 수 없는 기능입니다."; + public static final String ILLEGAL_ARGUMENT_EXCEPTION_MINIMUM_LENGTH = "이름은 "+MINIMUM_LENGTH+" 글자 이상입니다."; + + public static final String REGISTER_DUPLICATE_DATA_ERROR_FORMAT = "이미 등록된 %s 이름입니다."; + public static final String REGISTER_DUPLICATE_DATA_RESULT_FORMAT = "%s 이 등록되었습니다."; } diff --git a/src/main/java/subway/domain/SubwayMap.java b/src/main/java/subway/domain/SubwayMap.java index 52682a4ac..d8e472d05 100644 --- a/src/main/java/subway/domain/SubwayMap.java +++ b/src/main/java/subway/domain/SubwayMap.java @@ -17,8 +17,6 @@ public class SubwayMap { public SubwayMap(Scanner scanner) { this.scanner = scanner; - lineRepository = new LineRepository(); - stationRepository = new StationRepository(); startService(); } diff --git a/src/main/java/subway/domain/management/StationManager.java b/src/main/java/subway/domain/management/StationManager.java index 6bbfd1bbf..de29a3dfe 100644 --- a/src/main/java/subway/domain/management/StationManager.java +++ b/src/main/java/subway/domain/management/StationManager.java @@ -1,17 +1,19 @@ package subway.domain.management; import subway.Constant; +import subway.domain.data.Station; +import subway.domain.data.StationRepository; import subway.domain.menu.ManagementMenu; import subway.domain.menu.ServiceList; import subway.view.InputView; import subway.view.OutputView; +import java.util.List; import java.util.Scanner; public class StationManager extends ServiceManager { - private Scanner scanner; public StationManager(Scanner scanner) { super(scanner); } @@ -21,25 +23,44 @@ public void doStationManagement() { OutputView.printManagementView(ServiceList.STATION, menuList); String inputData = getInputData(scanner); - if(inputData.equals(ManagementMenu.REGISTER.getOrder())){ - registerStation(); - return; + try { + if(inputData.equals(ManagementMenu.REGISTER.getOrder())){ + registerStation(); + return; + } + if(inputData.equals(ManagementMenu.FIND.getOrder())){ + findStation(); + return; + } + } catch (IllegalArgumentException e){ + OutputView.printError(e.getMessage()); + doStationManagement(); } + + } + + private void findStation() { + } private void registerStation() { String name = getStationName(); + Station station = new Station(name); + List stations = StationRepository.stations(); + if(stations.contains(station)){ + OutputView.printErrorWithFormat(Constant.REGISTER_DUPLICATE_DATA_ERROR_FORMAT, ServiceList.STATION.getName()); + return; + } + + OutputView.printFunctionResult(); + return; } private String getStationName() { - try{ - OutputView.printInputData(Constant.INPUT_DATA_REGISTER_FORMAT, ServiceList.STATION.getName()); - return InputView.inputData(scanner); - }catch (IllegalArgumentException e){ - OutputView.printError(e.getMessage()); - return getStationName(); - } + OutputView.printInputData(Constant.INPUT_DATA_REGISTER_FORMAT, ServiceList.STATION.getName()); + String data = InputView.inputData(scanner); + return data; } diff --git a/src/main/java/subway/view/InputView.java b/src/main/java/subway/view/InputView.java index 49fa49db0..c964af355 100644 --- a/src/main/java/subway/view/InputView.java +++ b/src/main/java/subway/view/InputView.java @@ -1,10 +1,10 @@ package subway.view; +import Utils.Validator; import subway.Constant; import subway.domain.menu.MainMenu; import subway.domain.menu.ManagementMenu; -import javax.xml.validation.Validator; import java.util.List; import java.util.Scanner; @@ -13,27 +13,27 @@ public class InputView { public InputView() { } - public static String inputMainMenu(Scanner scanner){ + public static String inputMainMenu(Scanner scanner) { String inputData = scanner.nextLine(); - if(!MainMenu.isValidOrder(inputData)){ + if (!MainMenu.isValidOrder(inputData)) { throw new IllegalArgumentException(Constant.ILLEGAL_ARGUMENT_EXCEPTION_INVALID_MENU_ORDER); } return inputData; } - public static String inputManagementMenu(Scanner scanner, List menuList){ + public static String inputManagementMenu(Scanner scanner, List menuList) { String inputData = scanner.nextLine(); - for(ManagementMenu menu : menuList){ - if(menu.getOrder().equals(inputData)){ + for (ManagementMenu menu : menuList) { + if (menu.getOrder().equals(inputData)) { return inputData; } } throw new IllegalArgumentException(Constant.ILLEGAL_ARGUMENT_EXCEPTION_INVALID_MENU_ORDER); } - public static String inputData(Scanner scanner){ + public static String inputData(Scanner scanner) { String inputData = scanner.nextLine(); - + Validator.checkDataLength(inputData); return inputData; } } diff --git a/src/main/java/subway/view/OutputView.java b/src/main/java/subway/view/OutputView.java index ecc312361..2bd5c87aa 100644 --- a/src/main/java/subway/view/OutputView.java +++ b/src/main/java/subway/view/OutputView.java @@ -54,5 +54,14 @@ public static void printError(String errorMessage){ System.out.println(); System.out.print(Constant.ILLEGAL_ARGUMENT_EXCEPTION_HEADER); System.out.println(errorMessage); + System.out.println(); } + + public static void printErrorWithFormat(String errorFormat, String service){ + System.out.println(); + System.out.print(Constant.ILLEGAL_ARGUMENT_EXCEPTION_HEADER); + System.out.printf(errorFormat, service); + System.out.println(); + } + } From c99b7326e5fe7007c5bd4cf0988db9627897e611 Mon Sep 17 00:00:00 2001 From: KOREAparksh <45682868+KOREAparksh@users.noreply.github.com> Date: Tue, 15 Dec 2020 21:39:05 +0900 Subject: [PATCH 19/24] =?UTF-8?q?feat=20:=20=EC=97=AD=20=EC=9D=B4=EB=A6=84?= =?UTF-8?q?=20=EC=A1=B0=ED=9A=8C=20=EA=B8=B0=EB=8A=A5=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/subway/Constant.java | 8 +++++-- .../domain/management/StationManager.java | 5 ++-- src/main/java/subway/view/OutputView.java | 24 +++++++++++++++++-- 3 files changed, 31 insertions(+), 6 deletions(-) diff --git a/src/main/java/subway/Constant.java b/src/main/java/subway/Constant.java index 98926c2ee..f1c6c10ae 100644 --- a/src/main/java/subway/Constant.java +++ b/src/main/java/subway/Constant.java @@ -5,6 +5,9 @@ public class Constant { public static final String VIEW_HEADER = "## "; public static final String VIEW_FORMAT = "%s. %s\n"; public static final String MAIN_VIEW_HEADER = "메인 화면"; + public static final String STATION_LIST_HEADER = "역 목록"; + public static final String RESULT_HEADER = "[INFO] "; + public static final String ILLEGAL_ARGUMENT_EXCEPTION_HEADER = "[ERROR] "; public static final int MINIMUM_LENGTH = 2; public static final String ASKING_FUNCTION_INPUT_FUNCTION_ORDER = "원하는 기능을 선택하세요."; @@ -14,11 +17,12 @@ public class Constant { public static final String MANAGEMENT_VIEW_HEADER_FORMAT = "%s 관리 화면\n"; public static final String MANAGEMENT_VIEW_BODY_FORMAT = "%s. %s %s\n"; - public static final String ILLEGAL_ARGUMENT_EXCEPTION_HEADER = "[ERROR] "; public static final String ILLEGAL_ARGUMENT_EXCEPTION_INVALID_MENU_ORDER = "선택할 수 없는 기능입니다."; public static final String ILLEGAL_ARGUMENT_EXCEPTION_MINIMUM_LENGTH = "이름은 "+MINIMUM_LENGTH+" 글자 이상입니다."; public static final String REGISTER_DUPLICATE_DATA_ERROR_FORMAT = "이미 등록된 %s 이름입니다."; - public static final String REGISTER_DUPLICATE_DATA_RESULT_FORMAT = "%s 이 등록되었습니다."; + public static final String REGISTER_RESULT_FORMAT = "%s이 등록되었습니다."; + + public static final String FIND_EMPTY_LIST = "등록된 %s이 없습니다."; } diff --git a/src/main/java/subway/domain/management/StationManager.java b/src/main/java/subway/domain/management/StationManager.java index de29a3dfe..07221f452 100644 --- a/src/main/java/subway/domain/management/StationManager.java +++ b/src/main/java/subway/domain/management/StationManager.java @@ -40,7 +40,7 @@ public void doStationManagement() { } private void findStation() { - + OutputView.printStationList(StationRepository.stations(), ServiceList.STATION.getName()); } private void registerStation() { @@ -53,7 +53,8 @@ private void registerStation() { return; } - OutputView.printFunctionResult(); + StationRepository.addStation(station); + OutputView.printFunctionResult(Constant.REGISTER_RESULT_FORMAT, ServiceList.STATION.getName()); return; } diff --git a/src/main/java/subway/view/OutputView.java b/src/main/java/subway/view/OutputView.java index 2bd5c87aa..1e9f5bec2 100644 --- a/src/main/java/subway/view/OutputView.java +++ b/src/main/java/subway/view/OutputView.java @@ -1,6 +1,7 @@ package subway.view; import subway.Constant; +import subway.domain.data.Station; import subway.domain.menu.MainMenu; import subway.domain.menu.ManagementMenu; import subway.domain.menu.ServiceList; @@ -46,8 +47,11 @@ public static void printInputData(String format, String service){ System.out.printf(format, service); } - public static void printFunctionResult(String resultMessage){ - + public static void printFunctionResult(String resultMessageFormat, String service){ + System.out.println(); + System.out.print(Constant.RESULT_HEADER); + System.out.printf(resultMessageFormat, service); + System.out.println(); } public static void printError(String errorMessage){ @@ -64,4 +68,20 @@ public static void printErrorWithFormat(String errorFormat, String service){ System.out.println(); } + public static void printStationList(List list, String service){ + System.out.println(); + + if(list.isEmpty()){ + System.out.print(Constant.ILLEGAL_ARGUMENT_EXCEPTION_HEADER); + System.out.printf(Constant.FIND_EMPTY_LIST, service); + } + + System.out.print(Constant.VIEW_HEADER); + System.out.println(Constant.STATION_LIST_HEADER); + for(Station station : list) { + System.out.print(Constant.RESULT_HEADER); + System.out.println(station.getName()); + } + System.out.println(); + } } From 98c25b2a0559ff8bbc20f3fcb589415a9a1d2108 Mon Sep 17 00:00:00 2001 From: KOREAparksh <45682868+KOREAparksh@users.noreply.github.com> Date: Tue, 15 Dec 2020 21:48:16 +0900 Subject: [PATCH 20/24] =?UTF-8?q?feat=20:=20=EC=97=AD=20=EC=9D=B4=EB=A6=84?= =?UTF-8?q?=20=EC=82=AD=EC=A0=9C=20=EA=B8=B0=EB=8A=A5=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/subway/Constant.java | 2 + .../domain/management/StationManager.java | 50 ++++++++++++++----- src/main/java/subway/view/OutputView.java | 2 + 3 files changed, 41 insertions(+), 13 deletions(-) diff --git a/src/main/java/subway/Constant.java b/src/main/java/subway/Constant.java index f1c6c10ae..9202b59ec 100644 --- a/src/main/java/subway/Constant.java +++ b/src/main/java/subway/Constant.java @@ -22,6 +22,8 @@ public class Constant { public static final String REGISTER_DUPLICATE_DATA_ERROR_FORMAT = "이미 등록된 %s 이름입니다."; public static final String REGISTER_RESULT_FORMAT = "%s이 등록되었습니다."; + public static final String DELETE_DATA_ERROR_FORMAT = "등록되지 않은 %s 이름입니다."; + public static final String DELETE_RESULT_FORMAT = "%s이 삭제되었습니다."; public static final String FIND_EMPTY_LIST = "등록된 %s이 없습니다."; diff --git a/src/main/java/subway/domain/management/StationManager.java b/src/main/java/subway/domain/management/StationManager.java index 07221f452..290c619c0 100644 --- a/src/main/java/subway/domain/management/StationManager.java +++ b/src/main/java/subway/domain/management/StationManager.java @@ -24,14 +24,7 @@ public void doStationManagement() { String inputData = getInputData(scanner); try { - if(inputData.equals(ManagementMenu.REGISTER.getOrder())){ - registerStation(); - return; - } - if(inputData.equals(ManagementMenu.FIND.getOrder())){ - findStation(); - return; - } + checkInputData(inputData); } catch (IllegalArgumentException e){ OutputView.printError(e.getMessage()); doStationManagement(); @@ -39,20 +32,51 @@ public void doStationManagement() { } + private void checkInputData(String inputData) { + if(inputData.equals(ManagementMenu.REGISTER.getOrder())){ + registerStation(); + return; + } + if(inputData.equals(ManagementMenu.DELETE.getOrder())){ + deleteStation(); + return; + } + if(inputData.equals(ManagementMenu.FIND.getOrder())){ + findStation(); + return; + } + } + + private void deleteStation() { + String name = getStationName(); + + for(Station savedStation : StationRepository.stations()){ + if(savedStation.getName().equals(name)){ + OutputView.printFunctionResult(Constant.DELETE_RESULT_FORMAT, ServiceList.STATION.getName()); + StationRepository.deleteStation(name); + return; + } + } + + OutputView.printErrorWithFormat(Constant.DELETE_DATA_ERROR_FORMAT, ServiceList.STATION.getName()); + return; + } + private void findStation() { OutputView.printStationList(StationRepository.stations(), ServiceList.STATION.getName()); } private void registerStation() { String name = getStationName(); - Station station = new Station(name); - List stations = StationRepository.stations(); - if(stations.contains(station)){ - OutputView.printErrorWithFormat(Constant.REGISTER_DUPLICATE_DATA_ERROR_FORMAT, ServiceList.STATION.getName()); - return; + for(Station savedStation : StationRepository.stations()){ + if(savedStation.getName().equals(name)){ + OutputView.printErrorWithFormat(Constant.REGISTER_DUPLICATE_DATA_ERROR_FORMAT, ServiceList.STATION.getName()); + return; + } } + Station station = new Station(name); StationRepository.addStation(station); OutputView.printFunctionResult(Constant.REGISTER_RESULT_FORMAT, ServiceList.STATION.getName()); return; diff --git a/src/main/java/subway/view/OutputView.java b/src/main/java/subway/view/OutputView.java index 1e9f5bec2..52bddb637 100644 --- a/src/main/java/subway/view/OutputView.java +++ b/src/main/java/subway/view/OutputView.java @@ -74,6 +74,8 @@ public static void printStationList(List list, String service){ if(list.isEmpty()){ System.out.print(Constant.ILLEGAL_ARGUMENT_EXCEPTION_HEADER); System.out.printf(Constant.FIND_EMPTY_LIST, service); + System.out.println(); + return; } System.out.print(Constant.VIEW_HEADER); From e12200a49624302b2ec87568a227b7b30c5dd606 Mon Sep 17 00:00:00 2001 From: KOREAparksh <45682868+KOREAparksh@users.noreply.github.com> Date: Tue, 15 Dec 2020 22:18:59 +0900 Subject: [PATCH 21/24] =?UTF-8?q?feat=20:=20=EB=85=B8=EC=84=A0=20=EB=93=B1?= =?UTF-8?q?=EB=A1=9D,=20=EC=82=AD=EC=A0=9C,=20=EC=A1=B0=ED=9A=8C=20?= =?UTF-8?q?=EA=B8=B0=EB=8A=A5=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/subway/Constant.java | 2 + src/main/java/subway/domain/SubwayMap.java | 10 +++ .../subway/domain/management/LineManager.java | 74 +++++++++++++++++++ .../domain/management/StationManager.java | 21 ++++-- src/main/java/subway/view/OutputView.java | 23 ++++-- 5 files changed, 117 insertions(+), 13 deletions(-) diff --git a/src/main/java/subway/Constant.java b/src/main/java/subway/Constant.java index 9202b59ec..86009e4ad 100644 --- a/src/main/java/subway/Constant.java +++ b/src/main/java/subway/Constant.java @@ -6,6 +6,7 @@ public class Constant { public static final String VIEW_FORMAT = "%s. %s\n"; public static final String MAIN_VIEW_HEADER = "메인 화면"; public static final String STATION_LIST_HEADER = "역 목록"; + public static final String LINE_LIST_HEADER = "노선 목록"; public static final String RESULT_HEADER = "[INFO] "; public static final String ILLEGAL_ARGUMENT_EXCEPTION_HEADER = "[ERROR] "; public static final int MINIMUM_LENGTH = 2; @@ -13,6 +14,7 @@ public class Constant { public static final String ASKING_FUNCTION_INPUT_FUNCTION_ORDER = "원하는 기능을 선택하세요."; public static final String INPUT_DATA_REGISTER_FORMAT = "등록할 %s 이름을 입력하세요.\n"; + public static final String INPUT_DATA_DELETE_FORMAT = "삭제할 %s 이름을 입력하세요.\n"; public static final String MANAGEMENT_VIEW_HEADER_FORMAT = "%s 관리 화면\n"; public static final String MANAGEMENT_VIEW_BODY_FORMAT = "%s. %s %s\n"; diff --git a/src/main/java/subway/domain/SubwayMap.java b/src/main/java/subway/domain/SubwayMap.java index d8e472d05..b963f9db4 100644 --- a/src/main/java/subway/domain/SubwayMap.java +++ b/src/main/java/subway/domain/SubwayMap.java @@ -2,6 +2,7 @@ import subway.Constant; import subway.domain.data.LineRepository; +import subway.domain.data.Station; import subway.domain.data.StationRepository; import subway.domain.menu.MainMenu; import subway.view.InputView; @@ -17,9 +18,18 @@ public class SubwayMap { public SubwayMap(Scanner scanner) { this.scanner = scanner; + initData(); startService(); } + private void initData() { + String[] initStation = { + "교대역", "강남역" ,"역삼역" ,"남부터미널역", "양재역", "양재시민의숲역", "매봉역"}; + for(String stationName : initStation){ + StationRepository.addStation(new Station(stationName)); + } + } + private void startService() { while (true) { OutputView.printMainView(); diff --git a/src/main/java/subway/domain/management/LineManager.java b/src/main/java/subway/domain/management/LineManager.java index c0c98608a..22a52c06c 100644 --- a/src/main/java/subway/domain/management/LineManager.java +++ b/src/main/java/subway/domain/management/LineManager.java @@ -1,5 +1,10 @@ package subway.domain.management; +import subway.Constant; +import subway.domain.data.Line; +import subway.domain.data.LineRepository; +import subway.domain.data.Station; +import subway.domain.data.StationRepository; import subway.domain.menu.ManagementMenu; import subway.domain.menu.ServiceList; import subway.view.InputView; @@ -16,6 +21,75 @@ public LineManager(Scanner scanner) { @Override public void doStationManagement() { OutputView.printManagementView(ServiceList.LINE, menuList); + String inputData = getInputData(scanner); + + try { + checkInputData(inputData); + } catch (IllegalArgumentException e){ + OutputView.printError(e.getMessage()); + doStationManagement(); + } + } + + private void checkInputData(String inputData) { + if(inputData.equals(ManagementMenu.REGISTER.getOrder())){ + registerLine(ManagementMenu.REGISTER); + return; + } + if(inputData.equals(ManagementMenu.DELETE.getOrder())){ + deleteLine(ManagementMenu.DELETE); + return; + } + if(inputData.equals(ManagementMenu.FIND.getOrder())){ + findLine(); + return; + } + } + + private void registerLine(ManagementMenu menu) { + String name = getLineName(menu); + + for(Line savedLine : LineRepository.lines()){ + if(savedLine.getName().equals(name)){ + OutputView.printErrorWithFormat(Constant.REGISTER_DUPLICATE_DATA_ERROR_FORMAT, ServiceList.LINE.getName()); + return; + } + } + + Line line = new Line(name); + LineRepository.addLine(line); + OutputView.printFunctionResult(Constant.REGISTER_RESULT_FORMAT, ServiceList.LINE.getName()); + return; + } + + private void deleteLine(ManagementMenu menu) { + String name = getLineName(menu); + + for(Line savedLine : LineRepository.lines()){ + if(savedLine.getName().equals(name)){ + OutputView.printFunctionResult(Constant.DELETE_RESULT_FORMAT, ServiceList.LINE.getName()); + LineRepository.deleteLineByName(name); + return; + } + } + + OutputView.printErrorWithFormat(Constant.DELETE_DATA_ERROR_FORMAT, ServiceList.LINE.getName()); + return; + } + + private void findLine() { + OutputView.printLineList(LineRepository.lines(), ServiceList.LINE.getName()); + } + + private String getLineName(ManagementMenu menu) { + if(menu.equals(ManagementMenu.REGISTER)) { + OutputView.printInputData(Constant.INPUT_DATA_REGISTER_FORMAT, ServiceList.LINE.getName()); + } + if(menu.equals(ManagementMenu.DELETE)) { + OutputView.printInputData(Constant.INPUT_DATA_DELETE_FORMAT, ServiceList.LINE.getName()); + } + String data = InputView.inputData(scanner); + return data; } @Override diff --git a/src/main/java/subway/domain/management/StationManager.java b/src/main/java/subway/domain/management/StationManager.java index 290c619c0..7004386b0 100644 --- a/src/main/java/subway/domain/management/StationManager.java +++ b/src/main/java/subway/domain/management/StationManager.java @@ -34,11 +34,11 @@ public void doStationManagement() { private void checkInputData(String inputData) { if(inputData.equals(ManagementMenu.REGISTER.getOrder())){ - registerStation(); + registerStation(ManagementMenu.REGISTER); return; } if(inputData.equals(ManagementMenu.DELETE.getOrder())){ - deleteStation(); + deleteStation(ManagementMenu.DELETE); return; } if(inputData.equals(ManagementMenu.FIND.getOrder())){ @@ -47,8 +47,8 @@ private void checkInputData(String inputData) { } } - private void deleteStation() { - String name = getStationName(); + private void deleteStation(ManagementMenu menu) { + String name = getStationName(menu); for(Station savedStation : StationRepository.stations()){ if(savedStation.getName().equals(name)){ @@ -66,8 +66,8 @@ private void findStation() { OutputView.printStationList(StationRepository.stations(), ServiceList.STATION.getName()); } - private void registerStation() { - String name = getStationName(); + private void registerStation(ManagementMenu menu) { + String name = getStationName(menu); for(Station savedStation : StationRepository.stations()){ if(savedStation.getName().equals(name)){ @@ -82,8 +82,13 @@ private void registerStation() { return; } - private String getStationName() { - OutputView.printInputData(Constant.INPUT_DATA_REGISTER_FORMAT, ServiceList.STATION.getName()); + private String getStationName(ManagementMenu menu) { + if(menu.equals(ManagementMenu.REGISTER)) { + OutputView.printInputData(Constant.INPUT_DATA_REGISTER_FORMAT, ServiceList.STATION.getName()); + } + if(menu.equals(ManagementMenu.DELETE)) { + OutputView.printInputData(Constant.INPUT_DATA_DELETE_FORMAT, ServiceList.STATION.getName()); + } String data = InputView.inputData(scanner); return data; } diff --git a/src/main/java/subway/view/OutputView.java b/src/main/java/subway/view/OutputView.java index 52bddb637..e53363e30 100644 --- a/src/main/java/subway/view/OutputView.java +++ b/src/main/java/subway/view/OutputView.java @@ -1,6 +1,7 @@ package subway.view; import subway.Constant; +import subway.domain.data.Line; import subway.domain.data.Station; import subway.domain.menu.MainMenu; import subway.domain.menu.ManagementMenu; @@ -70,19 +71,31 @@ public static void printErrorWithFormat(String errorFormat, String service){ public static void printStationList(List list, String service){ System.out.println(); - if(list.isEmpty()){ System.out.print(Constant.ILLEGAL_ARGUMENT_EXCEPTION_HEADER); - System.out.printf(Constant.FIND_EMPTY_LIST, service); - System.out.println(); + System.out.printf(Constant.FIND_EMPTY_LIST + "\n", service); return; } System.out.print(Constant.VIEW_HEADER); System.out.println(Constant.STATION_LIST_HEADER); for(Station station : list) { - System.out.print(Constant.RESULT_HEADER); - System.out.println(station.getName()); + System.out.println(Constant.RESULT_HEADER + station.getName()); + } + System.out.println(); + } + public static void printLineList(List list, String service){ + System.out.println(); + if(list.isEmpty()){ + System.out.print(Constant.ILLEGAL_ARGUMENT_EXCEPTION_HEADER); + System.out.printf(Constant.FIND_EMPTY_LIST + "\n", service); + return; + } + + System.out.print(Constant.VIEW_HEADER); + System.out.println(Constant.LINE_LIST_HEADER); + for(Line line : list) { + System.out.println(Constant.RESULT_HEADER + line.getName()); } System.out.println(); } From 42ce69f54894ba9a71f267212aa63a8f8456860b Mon Sep 17 00:00:00 2001 From: KOREAparksh <45682868+KOREAparksh@users.noreply.github.com> Date: Tue, 15 Dec 2020 22:21:30 +0900 Subject: [PATCH 22/24] =?UTF-8?q?feat=20:=20=EB=85=B8=EC=84=A0=20=EC=B4=88?= =?UTF-8?q?=EA=B8=B0=20=EB=8D=B0=EC=9D=B4=ED=84=B0=20=EC=A0=80=EC=9E=A5=20?= =?UTF-8?q?=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/subway/domain/SubwayMap.java | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/src/main/java/subway/domain/SubwayMap.java b/src/main/java/subway/domain/SubwayMap.java index b963f9db4..fc22c7248 100644 --- a/src/main/java/subway/domain/SubwayMap.java +++ b/src/main/java/subway/domain/SubwayMap.java @@ -1,6 +1,7 @@ package subway.domain; import subway.Constant; +import subway.domain.data.Line; import subway.domain.data.LineRepository; import subway.domain.data.Station; import subway.domain.data.StationRepository; @@ -23,9 +24,22 @@ public SubwayMap(Scanner scanner) { } private void initData() { - String[] initStation = { + initStation(); + initLine(); + } + + private void initLine() { + String[] initLineData = { + "2호선", "3호선", "신분당선"}; + for(String lineName : initLineData){ + LineRepository.addLine(new Line(lineName)); + } + } + + private void initStation() { + String[] initStationData = { "교대역", "강남역" ,"역삼역" ,"남부터미널역", "양재역", "양재시민의숲역", "매봉역"}; - for(String stationName : initStation){ + for(String stationName : initStationData){ StationRepository.addStation(new Station(stationName)); } } From b8da0aa80d9f39c5b04dc0b8d8f062ff492de2ef Mon Sep 17 00:00:00 2001 From: KOREAparksh <45682868+KOREAparksh@users.noreply.github.com> Date: Tue, 15 Dec 2020 22:58:59 +0900 Subject: [PATCH 23/24] =?UTF-8?q?feat=20:=20=EA=B5=AC=EA=B0=84=20=EC=82=AD?= =?UTF-8?q?=EC=A0=9C=20=EA=B8=B0=EB=8A=A5=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/subway/Constant.java | 7 ++ src/main/java/subway/domain/data/Line.java | 26 ++++++ .../domain/management/SectionManager.java | 80 +++++++++++++++++++ .../domain/management/StationManager.java | 1 - src/main/java/subway/view/OutputView.java | 4 + 5 files changed, 117 insertions(+), 1 deletion(-) diff --git a/src/main/java/subway/Constant.java b/src/main/java/subway/Constant.java index 86009e4ad..99b3cf679 100644 --- a/src/main/java/subway/Constant.java +++ b/src/main/java/subway/Constant.java @@ -9,6 +9,7 @@ public class Constant { public static final String LINE_LIST_HEADER = "노선 목록"; public static final String RESULT_HEADER = "[INFO] "; public static final String ILLEGAL_ARGUMENT_EXCEPTION_HEADER = "[ERROR] "; + public static final String BACK_KEY = "B"; public static final int MINIMUM_LENGTH = 2; public static final String ASKING_FUNCTION_INPUT_FUNCTION_ORDER = "원하는 기능을 선택하세요."; @@ -16,8 +17,14 @@ public class Constant { public static final String INPUT_DATA_REGISTER_FORMAT = "등록할 %s 이름을 입력하세요.\n"; public static final String INPUT_DATA_DELETE_FORMAT = "삭제할 %s 이름을 입력하세요.\n"; + public static final String INPUT_SECTION_LINE_DATA_REGISTER_FORMAT = "노선을 입력하세요.\n"; + public static final String INPUT_SECTION_LINE_DATA_DELETE_FORMAT = "삭제할 구간의 노선을 입력하세요.\n"; + public static final String INPUT_SECTION_STATION_DATA_REGISTER_FORMAT = "역 이름을 입력하세요.\n"; + public static final String INPUT_SECTION_STATION_DATA_DELETE_FORMAT = "삭제할 구간의 역을 입력하세요.\n"; + public static final String MANAGEMENT_VIEW_HEADER_FORMAT = "%s 관리 화면\n"; public static final String MANAGEMENT_VIEW_BODY_FORMAT = "%s. %s %s\n"; + public static final String MANAGEMENT_VIEW_BODY_BACK_FORMAT = "%s. %s\n"; public static final String ILLEGAL_ARGUMENT_EXCEPTION_INVALID_MENU_ORDER = "선택할 수 없는 기능입니다."; public static final String ILLEGAL_ARGUMENT_EXCEPTION_MINIMUM_LENGTH = "이름은 "+MINIMUM_LENGTH+" 글자 이상입니다."; diff --git a/src/main/java/subway/domain/data/Line.java b/src/main/java/subway/domain/data/Line.java index 6a19ead79..ffc83f604 100644 --- a/src/main/java/subway/domain/data/Line.java +++ b/src/main/java/subway/domain/data/Line.java @@ -1,7 +1,13 @@ package subway.domain.data; +import java.util.List; +import java.util.Objects; + public class Line { private String name; + private Station firstStation; + private Station lastStation; + private List stations; public Line(String name) { this.name = name; @@ -11,5 +17,25 @@ public String getName() { return name; } + public Station getFirstStation() { + return firstStation; + } + + public Station getLastStation() { + return lastStation; + } + + public List getStations() { + return stations; + } + + public void addStation(Station station){ + + } + + public boolean deleteSection(String name) { + return stations.removeIf(station -> Objects.equals(station.getName(), name)); + } + // 추가 기능 구현 } diff --git a/src/main/java/subway/domain/management/SectionManager.java b/src/main/java/subway/domain/management/SectionManager.java index 708a8c13e..b69a6f784 100644 --- a/src/main/java/subway/domain/management/SectionManager.java +++ b/src/main/java/subway/domain/management/SectionManager.java @@ -1,5 +1,10 @@ package subway.domain.management; +import subway.Constant; +import subway.domain.data.Line; +import subway.domain.data.LineRepository; +import subway.domain.data.Station; +import subway.domain.data.StationRepository; import subway.domain.menu.ManagementMenu; import subway.domain.menu.ServiceList; import subway.view.InputView; @@ -16,7 +21,82 @@ public SectionManager(Scanner scanner) { @Override public void doStationManagement() { OutputView.printManagementView(ServiceList.SECTION, menuList); + String inputData = getInputData(scanner); + try { + checkInputData(inputData); + } catch (IllegalArgumentException e) { + OutputView.printError(e.getMessage()); + doStationManagement(); + } + } + + private void checkInputData(String inputData) { + if (inputData.equals(ManagementMenu.REGISTER.getOrder())) { + //registerStation(ManagementMenu.REGISTER); + return; + } + if (inputData.equals(ManagementMenu.DELETE.getOrder())) { + deleteSection(ManagementMenu.DELETE); + return; + } + } + + private void deleteSection(ManagementMenu menu) { + Line line = getLineName(menu); + Station station = getStationName(line, menu); + + line.deleteSection(station.getName()); + } + + private Line checkValidLineName(String lineName) { + for (Line savedLine : LineRepository.lines()) { + if (savedLine.getName().equals(lineName)) { + return savedLine; + } + } + throw new IllegalArgumentException("등록되지 않은 노선입니다."); + } + + private Station checkValidStationName(Line line, String stationName) { + for (Station station : line.getStations()) { + if (station.getName().equals(stationName)) { + return station; + } + } + throw new IllegalArgumentException("해당 구간에 등록되지 않은 노선입니다."); + } + + private Line getLineName(ManagementMenu menu) { + try { + if (menu.equals(ManagementMenu.REGISTER)) { + OutputView.printInputData(Constant.INPUT_SECTION_LINE_DATA_REGISTER_FORMAT, ServiceList.SECTION.getName()); + } + if (menu.equals(ManagementMenu.DELETE)) { + OutputView.printInputData(Constant.INPUT_SECTION_LINE_DATA_DELETE_FORMAT, ServiceList.SECTION.getName()); + } + String data = InputView.inputData(scanner); + return checkValidLineName(data); + } catch (IllegalArgumentException e) { + OutputView.printError(e.getMessage()); + return getLineName(menu); + } + } + + private Station getStationName(Line line, ManagementMenu menu) { + try{ + if (menu.equals(ManagementMenu.REGISTER)) { + OutputView.printInputData(Constant.INPUT_SECTION_STATION_DATA_REGISTER_FORMAT, ServiceList.SECTION.getName()); + } + if (menu.equals(ManagementMenu.DELETE)) { + OutputView.printInputData(Constant.INPUT_SECTION_STATION_DATA_DELETE_FORMAT, ServiceList.SECTION.getName()); + } + String data = InputView.inputData(scanner); + return checkValidStationName(line, data); + } catch (IllegalArgumentException e){ + OutputView.printError(e.getMessage()); + return getStationName(line, menu); + } } @Override diff --git a/src/main/java/subway/domain/management/StationManager.java b/src/main/java/subway/domain/management/StationManager.java index 7004386b0..d9f118ec2 100644 --- a/src/main/java/subway/domain/management/StationManager.java +++ b/src/main/java/subway/domain/management/StationManager.java @@ -29,7 +29,6 @@ public void doStationManagement() { OutputView.printError(e.getMessage()); doStationManagement(); } - } private void checkInputData(String inputData) { diff --git a/src/main/java/subway/view/OutputView.java b/src/main/java/subway/view/OutputView.java index e53363e30..c4aecec5e 100644 --- a/src/main/java/subway/view/OutputView.java +++ b/src/main/java/subway/view/OutputView.java @@ -28,6 +28,10 @@ public static void printManagementView(ServiceList service, List System.out.print(Constant.VIEW_HEADER); System.out.printf(Constant.MANAGEMENT_VIEW_HEADER_FORMAT, service.getName()); for(ManagementMenu menu : menuList) { + if(menu.getOrder().equals(Constant.BACK_KEY)){ + System.out.printf(Constant.MANAGEMENT_VIEW_BODY_BACK_FORMAT, menu.getOrder(), menu.getMessage()); + continue; + } System.out.printf(Constant.MANAGEMENT_VIEW_BODY_FORMAT, menu.getOrder(), service.getName(), menu.getMessage()); } } From 01ed9522ec707deb67962cb59ad192a106cd1c26 Mon Sep 17 00:00:00 2001 From: KOREAparksh <45682868+KOREAparksh@users.noreply.github.com> Date: Tue, 15 Dec 2020 23:10:46 +0900 Subject: [PATCH 24/24] =?UTF-8?q?docs=20:=20=EA=B8=B0=EB=8A=A5=EA=B5=AC?= =?UTF-8?q?=ED=98=84=EB=AA=A9=EB=A1=9D=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 24 ++++++++++--------- src/main/java/subway/domain/data/Line.java | 8 ++++++- .../subway/domain/management/LineManager.java | 2 -- 3 files changed, 20 insertions(+), 14 deletions(-) diff --git a/README.md b/README.md index b30080308..929d63475 100644 --- a/README.md +++ b/README.md @@ -5,32 +5,34 @@ ### View - 입력 클래스 - - [ ] 기능 선택 입력 함수 + - [x] 기능 선택 입력 함수 + - [x] 메인뷰 입력함수 + - [x] 기능뷰 입력함수 - 출력 클래스 - [x] 메인 화면 출력 함수 - [x] 역, 노선, 구간 관리 화면 출력함수 - - [ ] 선택한 기능 질문 출력함수 - - [ ] 기능결과(INFO) 출력함수 - - [ ] 에러 출력함수 + - [x] 선택한 기능 질문 출력함수 + - [x] 기능결과(INFO) 출력함수 + - [x] 에러 출력함수 - [ ] 지하철 노선도 출력함수 ### 비즈니스 로직 - 역 관리 - 역 등록 - - [ ] 중복된 이름 불가 - - [ ] 이름은 2글자 이상 + - [x] 중복된 이름 불가 + - [x] 이름은 2글자 이상 - 역 삭제 - [ ] 노선에 등록된 역은 삭제 불가 - - [ ] 역 조회 + - [x] 역 조회 - 노선 관리 - 노선 등록 - - [ ] 중복 이름 불가 - - [ ] 이름은 2글자 이상 + - [x] 중복 이름 불가 + - [x] 이름은 2글자 이상 - [ ] 상,하 종점역은 달라야 한다 - - [ ] 노선 삭제 - - [ ] 노선 조회 + - [x] 노선 삭제 + - [x] 노선 조회 - 구간 관리 - 구간 등록 diff --git a/src/main/java/subway/domain/data/Line.java b/src/main/java/subway/domain/data/Line.java index ffc83f604..64d425e21 100644 --- a/src/main/java/subway/domain/data/Line.java +++ b/src/main/java/subway/domain/data/Line.java @@ -29,7 +29,13 @@ public List getStations() { return stations; } - public void addStation(Station station){ + public void initLineSection(Station firstStation, Station lastStation, List stations){ + this.firstStation = firstStation; + this.lastStation = lastStation; + this.stations = stations; + } + + public void addSection(Station station, int position){ } diff --git a/src/main/java/subway/domain/management/LineManager.java b/src/main/java/subway/domain/management/LineManager.java index 22a52c06c..9bd98024f 100644 --- a/src/main/java/subway/domain/management/LineManager.java +++ b/src/main/java/subway/domain/management/LineManager.java @@ -3,8 +3,6 @@ import subway.Constant; import subway.domain.data.Line; import subway.domain.data.LineRepository; -import subway.domain.data.Station; -import subway.domain.data.StationRepository; import subway.domain.menu.ManagementMenu; import subway.domain.menu.ServiceList; import subway.view.InputView;