From 266f38d36f6b4f9cf6a0923c8a56d762f9066fcc Mon Sep 17 00:00:00 2001 From: yejin Date: Sat, 12 Dec 2020 22:19:26 +0900 Subject: [PATCH 01/27] =?UTF-8?q?docs=20:=20=EA=B8=B0=EB=8A=A5=20=EB=AA=85?= =?UTF-8?q?=EC=84=B8=20=EC=9E=91=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 기존 README.md에 작성되어 있는 기능 사항과 예시를 토대로 기능 명세 작성 --- README.md | 43 +++++++++++++++++++++++++++++++++++++++---- 1 file changed, 39 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 450e7753a..82e63ef4d 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,41 @@ # 지하철 노선도 미션 - 지하철 역과 노선을 관리하는 지하철 노선도 기능을 구현한다. +
+ +## 🕊 기능 정의 + +- 메인 화면을 출력한다 +- 원하는 기능을 입력받아 실행한다. +- [ERROR] 목록에 없는 기능이라면 에러 사항을 출력한다. +- 1. 역 관리 + - 역 등록 : 사용자에게 입력받은 역을 등록한다. + - 역 삭제 : 사용자에게 입력받은 역을 삭제한다. + - 역 조회 : 현재 등록된 역의 전체 목록을 출력한다. + - [ERROR] 역 이름이 2글자 이하이면 에러 사항을 출력한다. + - [ERROR] 중복된 역 이름이라면 에러 사항을 출력한다. + - [ERROR] 삭제해야 하는 역이 존재하지 않는다면 에러 사항을 출력한다. +- 2. 노선 관리 + - 노선 등록 : 노선의 이름, 상행 종점역, 하행 종점역을 입력받아 노선을 등록한다. + - 노선 삭제 : 현재 등록된 노선의 전체 목록을 출력한다. + - 노선 조회 : 사용자에게 입력받은 노선을 삭제한다. + - [ERROR] 삭제해야 하는 노선이 존재하지 않는다면 에러 사항을 출력한다. +- 3. 구간 관리 + - 구간 등록 : 노선과 역 이름을 입력받아 구간을 등록한다. + - 구간 삭제 : 노선과 역 이름을 입력받아 구간을 삭제한다. + - [ERROR] 중복된 노선과 역 이름이라면 에러 사항을 출력한다. + - [ERROR] 삭제해야 하는 노선과 역 이름이 존재하지 않느다면 에러 사항을 출력한다. + - [ERROR] 삭제해햐 하는 역이 포함된 노선에 역이 2개 이하로 있다면 에러 사항을 출력한다. +- 4. 지하철 노선도 출력 + - 전체 노선도 목록을 출력한다. +- Q. 종료 + +
+ +## ⭐️ 클래스 정의 + + +
## 🚀 기능 요구사항 @@ -17,10 +52,10 @@ - 2호선: 교대역 - 강남역 - 역삼역 - 3호선: 교대역 - 남부터미널역 - 양재역 - 매봉역 - 신분당선: 강남역 - 양재역 - 양재시민의숲역 - ``` +``` - + ### 지하철 역 관련 기능 - 지하철 역을 등록하고 삭제할 수 있다. (단, 노선에 등록된 역은 삭제할 수 없다) - 중복된 지하철 역 이름이 등록될 수 없다. @@ -410,7 +445,7 @@ public class Application { - 제공하는 각 클래스의 기본 생성자를 추가할 수 없다. - 필드(인스턴스 변수)인 name의 접근 제어자 private을 변경할 수 없다. - 가능하면 setter 메소드(ex. setXXX)를 추가하지 않고 구현한다. - + ```java public class Station { private String name; @@ -434,7 +469,7 @@ public class Station { - 추가로 생성되는 객체에 대해서 XXXRepository 네이밍으로 저장 클래스를 추가할 수 있다. - 객체들의 상태를 관리하기 위해서 XXXRepository 클래스를 활용해 저장 로직을 구현해야 한다. - 필요에 따라 자유롭게 수정이 가능하다. - + ```java public class StationRepository { private static final List stations = new ArrayList<>(); From d85140be137c981a567c8b6dc1edff84653d65b9 Mon Sep 17 00:00:00 2001 From: yejin Date: Sun, 13 Dec 2020 02:55:38 +0900 Subject: [PATCH 02/27] =?UTF-8?q?feat=20:=20=EC=9E=85=EB=A0=A5=EB=B0=9B?= =?UTF-8?q?=EB=8A=94=20=EA=B5=AC=EC=A1=B0=20=EC=A7=84=ED=96=89,=20?= =?UTF-8?q?=EC=97=AD=20=EB=93=B1=EB=A1=9D=20=EA=B8=B0=EB=8A=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 메인 화면 출력과 각 기능별 출력화면 구조 세팅 역 등록하는 기본 기능 작성 --- src/main/java/subway/Application.java | 8 +++- src/main/java/subway/Constant.java | 20 ++++++++ src/main/java/subway/domain/Input.java | 36 +++++++++++++++ .../java/subway/domain/LineController.java | 27 +++++++++++ .../java/subway/domain/SectionController.java | 11 +++++ .../java/subway/domain/StationController.java | 46 +++++++++++++++++++ .../java/subway/domain/StationRepository.java | 11 +++++ 7 files changed, 158 insertions(+), 1 deletion(-) create mode 100644 src/main/java/subway/Constant.java create mode 100644 src/main/java/subway/domain/Input.java create mode 100644 src/main/java/subway/domain/LineController.java create mode 100644 src/main/java/subway/domain/SectionController.java create mode 100644 src/main/java/subway/domain/StationController.java diff --git a/src/main/java/subway/Application.java b/src/main/java/subway/Application.java index 0bcf786cc..015db869f 100644 --- a/src/main/java/subway/Application.java +++ b/src/main/java/subway/Application.java @@ -1,10 +1,16 @@ package subway; +import subway.domain.Input; + import java.util.Scanner; public class Application { public static void main(String[] args) { final Scanner scanner = new Scanner(System.in); - // TODO: 프로그램 구현 + Input input = new Input(scanner); + } + + void initialSetting() { + } } diff --git a/src/main/java/subway/Constant.java b/src/main/java/subway/Constant.java new file mode 100644 index 000000000..345595e96 --- /dev/null +++ b/src/main/java/subway/Constant.java @@ -0,0 +1,20 @@ +package subway; + +public class Constant { + public static final int MIN_STATION_NAME_LENGTH = 2; + public static final int MIN_LINE_LENGTH = 2; + public static final String FIRST_COMMAND = "1"; + public static final String SECOND_COMMAND = "2"; + public static final String THIRD_COMMAND = "3"; + public static final String FORTH_COMMAND = "4"; + public static final String QUIT_COMMAND = "Q"; + public static final String BACK_COMMAND = "B"; + public static final String ERROR_PREFIX = "[ERROR]"; + public static final String INFO_PREFIX = "[INFO]"; + public static final String MAIN_ANNOUNCEMENT = "## 메인 화면\n1. 역 관리\n2. 노선 관리\n3. 구간 관리\n4. 지하철 노선도 출력\nQ. 종료\n"; + public static final String STATION_ANNOUNCEMENT = "\n## 역 관리 화면\n1. 역 등록\n2. 역 삭제\n3. 역 조회\nB. 돌아가기\n"; + public static final String LINE_ANNOUNCEMENT = "\n## 노선 관리 화면\n1. 노선 등록\n2. 노선 삭제\n3. 노선 조회\nB. 돌아가기\n"; + public static final String SECTION_ANNOUNCEMENT = "\n## 구간 관리 화면\n1. 구간 등록\n2. 구간 삭제\nB. 돌아가기\n"; + public static final String INPUT_ANNOUNCEMENT = "## 원하는 기능을 선택하세요.\n"; + +} diff --git a/src/main/java/subway/domain/Input.java b/src/main/java/subway/domain/Input.java new file mode 100644 index 000000000..2850db3a8 --- /dev/null +++ b/src/main/java/subway/domain/Input.java @@ -0,0 +1,36 @@ +package subway.domain; + +import subway.Constant; + +import java.util.Scanner; + +public class Input { + Scanner scanner; + StationController stationController; + LineController lineController; + SectionController sectionController; + + public Input(Scanner scanner) { + this.scanner = scanner; + stationController = new StationController(scanner); + lineController = new LineController(scanner); + sectionController = new SectionController(scanner); + mainInput(); + } + + void mainInput() { + System.out.print(String.join("\n", Constant.MAIN_ANNOUNCEMENT, Constant.INPUT_ANNOUNCEMENT)); + String flag = scanner.next(); + if (flag.equals(Constant.FIRST_COMMAND)) { + stationController.printSelection(); + } else if (flag.equals(Constant.SECOND_COMMAND)) { + lineController.printSelection(); + } else if (flag.equals(Constant.THIRD_COMMAND)) { + + } else if(flag.equals(Constant.FORTH_COMMAND)){ + + } else if (flag.equals(Constant.QUIT_COMMAND)) { + + } + } +} diff --git a/src/main/java/subway/domain/LineController.java b/src/main/java/subway/domain/LineController.java new file mode 100644 index 000000000..df714533f --- /dev/null +++ b/src/main/java/subway/domain/LineController.java @@ -0,0 +1,27 @@ +package subway.domain; + +import subway.Constant; + +import java.util.Scanner; + +public class LineController { + Scanner scanner; + + public LineController(Scanner scanner){ + this.scanner = scanner; + } + + void printSelection(){ + System.out.println(Constant.LINE_ANNOUNCEMENT); + String flag = scanner.next(); + if (flag == "1") { + + } else if (flag == "2") { + + } else if (flag == "3") { + + } else if (flag == "b" || flag == "B") { + + } + } +} diff --git a/src/main/java/subway/domain/SectionController.java b/src/main/java/subway/domain/SectionController.java new file mode 100644 index 000000000..96cc552d2 --- /dev/null +++ b/src/main/java/subway/domain/SectionController.java @@ -0,0 +1,11 @@ +package subway.domain; + +import java.util.Scanner; + +public class SectionController { + Scanner scanner; + + public SectionController(Scanner scanner){ + this.scanner = scanner; + } +} diff --git a/src/main/java/subway/domain/StationController.java b/src/main/java/subway/domain/StationController.java new file mode 100644 index 000000000..6cdc78b9a --- /dev/null +++ b/src/main/java/subway/domain/StationController.java @@ -0,0 +1,46 @@ +package subway.domain; + +import subway.Constant; + +import java.util.Scanner; + +public class StationController { + Scanner scanner; + StationRepository stationRepository = new StationRepository(); + + public StationController(Scanner scanner){ + this.scanner = scanner; + } + + void printSelection(){ + System.out.println(Constant.STATION_ANNOUNCEMENT); + String flag = scanner.next(); + if (flag.equals(Constant.FIRST_COMMAND)) { + addStation(); + } else if (flag.equals(Constant.SECOND_COMMAND)) { + deleteStation(); + } else if (flag.equals(Constant.THIRD_COMMAND)) { + readStations(); + } else if (flag.equals(Constant.BACK_COMMAND)) { + + } + } + + void addStation(){ + System.out.println("\n## 등록할 역 이름을 입력하세요."); + String stationName = scanner.next(); + Station station = new Station(stationName); + stationRepository.addStation(station); + stationRepository.printStations(); + } + + void deleteStation(){ + System.out.println("## 삭제할 역 이름을 입력하세요.\n"); + String stationName = scanner.next(); + stationRepository.deleteStation(stationName); + } + + void readStations(){ + + } +} diff --git a/src/main/java/subway/domain/StationRepository.java b/src/main/java/subway/domain/StationRepository.java index b7245c0f3..165a900e3 100644 --- a/src/main/java/subway/domain/StationRepository.java +++ b/src/main/java/subway/domain/StationRepository.java @@ -1,5 +1,7 @@ package subway.domain; +import subway.Constant; + import java.util.ArrayList; import java.util.Collections; import java.util.List; @@ -13,10 +15,19 @@ public static List stations() { } public static void addStation(Station station) { + if(stations.contains(station)){ + throw new IllegalArgumentException(); + } stations.add(station); } public static boolean deleteStation(String name) { return stations.removeIf(station -> Objects.equals(station.getName(), name)); } + + public static void printStations(){ + for(int i=0; i Date: Sun, 13 Dec 2020 03:16:11 +0900 Subject: [PATCH 03/27] =?UTF-8?q?feat=20:=20=EC=97=AD=20=EB=93=B1=EB=A1=9D?= =?UTF-8?q?=20=EC=8B=9C=20=EC=A4=91=EB=B3=B5=20=EC=9D=B4=EB=A6=84=20?= =?UTF-8?q?=ED=99=95=EC=9D=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 역을 새로 등록할 떄 이름이 중복되는지 여부 확인 수정 --- src/main/java/subway/Application.java | 3 +++ src/main/java/subway/Constant.java | 3 ++- src/main/java/subway/domain/Input.java | 9 ++++++--- src/main/java/subway/domain/StationRepository.java | 5 +++-- 4 files changed, 14 insertions(+), 6 deletions(-) diff --git a/src/main/java/subway/Application.java b/src/main/java/subway/Application.java index 015db869f..eccdf2559 100644 --- a/src/main/java/subway/Application.java +++ b/src/main/java/subway/Application.java @@ -8,6 +8,9 @@ public class Application { public static void main(String[] args) { final Scanner scanner = new Scanner(System.in); Input input = new Input(scanner); + while(!input.quit){ + input.mainInput(); + } } void initialSetting() { diff --git a/src/main/java/subway/Constant.java b/src/main/java/subway/Constant.java index 345595e96..351c94ae6 100644 --- a/src/main/java/subway/Constant.java +++ b/src/main/java/subway/Constant.java @@ -13,8 +13,9 @@ public class Constant { public static final String INFO_PREFIX = "[INFO]"; public static final String MAIN_ANNOUNCEMENT = "## 메인 화면\n1. 역 관리\n2. 노선 관리\n3. 구간 관리\n4. 지하철 노선도 출력\nQ. 종료\n"; public static final String STATION_ANNOUNCEMENT = "\n## 역 관리 화면\n1. 역 등록\n2. 역 삭제\n3. 역 조회\nB. 돌아가기\n"; - public static final String LINE_ANNOUNCEMENT = "\n## 노선 관리 화면\n1. 노선 등록\n2. 노선 삭제\n3. 노선 조회\nB. 돌아가기\n"; + public static final String LINE_ANNOUNCEMENT = "\n## 노선 관리 화면\n1. 노선 등록\n2. 노선 삭제\n3. 노선 조회\nB. 돌아가기"; public static final String SECTION_ANNOUNCEMENT = "\n## 구간 관리 화면\n1. 구간 등록\n2. 구간 삭제\nB. 돌아가기\n"; public static final String INPUT_ANNOUNCEMENT = "## 원하는 기능을 선택하세요.\n"; + public static final String DUPLICATE_STATION_NAME = "이미 등록된 역 이름입니다.\n"; } diff --git a/src/main/java/subway/domain/Input.java b/src/main/java/subway/domain/Input.java index 2850db3a8..103cf5d76 100644 --- a/src/main/java/subway/domain/Input.java +++ b/src/main/java/subway/domain/Input.java @@ -2,6 +2,7 @@ import subway.Constant; +import java.awt.print.Book; import java.util.Scanner; public class Input { @@ -9,28 +10,30 @@ public class Input { StationController stationController; LineController lineController; SectionController sectionController; + public static Boolean quit = false; public Input(Scanner scanner) { this.scanner = scanner; stationController = new StationController(scanner); lineController = new LineController(scanner); sectionController = new SectionController(scanner); - mainInput(); } - void mainInput() { + public void mainInput() { System.out.print(String.join("\n", Constant.MAIN_ANNOUNCEMENT, Constant.INPUT_ANNOUNCEMENT)); String flag = scanner.next(); if (flag.equals(Constant.FIRST_COMMAND)) { stationController.printSelection(); + return; } else if (flag.equals(Constant.SECOND_COMMAND)) { lineController.printSelection(); + return; } else if (flag.equals(Constant.THIRD_COMMAND)) { } else if(flag.equals(Constant.FORTH_COMMAND)){ } else if (flag.equals(Constant.QUIT_COMMAND)) { - + quit = true; } } } diff --git a/src/main/java/subway/domain/StationRepository.java b/src/main/java/subway/domain/StationRepository.java index 165a900e3..a0233092a 100644 --- a/src/main/java/subway/domain/StationRepository.java +++ b/src/main/java/subway/domain/StationRepository.java @@ -15,8 +15,9 @@ public static List stations() { } public static void addStation(Station station) { - if(stations.contains(station)){ - throw new IllegalArgumentException(); + if(stations.stream().anyMatch(o -> o.getName().equals(station.getName()))){ + System.out.println(String.join(" ", Constant.ERROR_PREFIX, Constant.DUPLICATE_STATION_NAME)); + return; } stations.add(station); } From 5cd00e651e2aef369b82c8097f72e94ab7ffa77f Mon Sep 17 00:00:00 2001 From: yejin Date: Sun, 13 Dec 2020 03:43:58 +0900 Subject: [PATCH 04/27] =?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=EA=B8=B0=EB=8A=A5=20?= =?UTF-8?q?=EC=9E=91=EC=97=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Constant 클래스에 필요한 문자열 추가 노선 등록, 삭제 기능 추가 --- src/main/java/subway/Constant.java | 13 ++++++- .../java/subway/domain/LineController.java | 39 +++++++++++++++---- .../java/subway/domain/LineRepository.java | 13 +++++++ .../java/subway/domain/StationController.java | 24 ++++++------ .../java/subway/domain/StationRepository.java | 1 + 5 files changed, 71 insertions(+), 19 deletions(-) diff --git a/src/main/java/subway/Constant.java b/src/main/java/subway/Constant.java index 351c94ae6..0bc83975a 100644 --- a/src/main/java/subway/Constant.java +++ b/src/main/java/subway/Constant.java @@ -12,10 +12,21 @@ public class Constant { public static final String ERROR_PREFIX = "[ERROR]"; public static final String INFO_PREFIX = "[INFO]"; public static final String MAIN_ANNOUNCEMENT = "## 메인 화면\n1. 역 관리\n2. 노선 관리\n3. 구간 관리\n4. 지하철 노선도 출력\nQ. 종료\n"; - public static final String STATION_ANNOUNCEMENT = "\n## 역 관리 화면\n1. 역 등록\n2. 역 삭제\n3. 역 조회\nB. 돌아가기\n"; + public static final String STATION_ANNOUNCEMENT = "\n## 역 관리 화면\n1. 역 등록\n2. 역 삭제\n3. 역 조회\nB. 돌아가기"; public static final String LINE_ANNOUNCEMENT = "\n## 노선 관리 화면\n1. 노선 등록\n2. 노선 삭제\n3. 노선 조회\nB. 돌아가기"; public static final String SECTION_ANNOUNCEMENT = "\n## 구간 관리 화면\n1. 구간 등록\n2. 구간 삭제\nB. 돌아가기\n"; public static final String INPUT_ANNOUNCEMENT = "## 원하는 기능을 선택하세요.\n"; public static final String DUPLICATE_STATION_NAME = "이미 등록된 역 이름입니다.\n"; + public static final String ADD_STATION_SUCCESS = "지하철 역이 등록되었습니다.\n"; + public static final String DELETE_STATION_SUCCESS = "지하철 역이 삭제되었습니다.\n"; + public static final String DUPLICATE_LINE_NAME = "이미 등록된 노선 이름입니다.\n"; + public static final String ADD_LINE_SUCCESS = "지하철 노선이 등록되었습니다.\n"; + public static final String DELETE_LINE_SUCCESS = "지하철 노선이 삭제되었습니다.\n"; + public static final String ADD_SECTION_SUCCESS = "구간이 등록되었습니다.\n"; + public static final String DELETE_SECTION_SUCCESS = "구간이 삭제되었습니다.\n"; + public static final String ADD_PREFIX = "## 등록할"; + public static final String DELETE_PREFIX = "## 삭제할"; + public static final String NAME_POSTFIX = "이름을 입력해주세요."; + public static final String LINE_STATION_POSTFIX = "종점역 이름을 입력하세요."; } diff --git a/src/main/java/subway/domain/LineController.java b/src/main/java/subway/domain/LineController.java index df714533f..5d02229fd 100644 --- a/src/main/java/subway/domain/LineController.java +++ b/src/main/java/subway/domain/LineController.java @@ -6,6 +6,7 @@ public class LineController { Scanner scanner; + LineRepository lineRepository = new LineRepository(); public LineController(Scanner scanner){ this.scanner = scanner; @@ -13,15 +14,39 @@ public LineController(Scanner scanner){ void printSelection(){ System.out.println(Constant.LINE_ANNOUNCEMENT); - String flag = scanner.next(); - if (flag == "1") { - - } else if (flag == "2") { - - } else if (flag == "3") { + String command = scanner.next(); + if (command.equals(Constant.FIRST_COMMAND)) { + addLine(); + } else if (command.equals(Constant.SECOND_COMMAND)) { + deleteLine(); + } else if (command.equals(Constant.THIRD_COMMAND)) { + readLines(); + } else if (command.equals(Constant.BACK_COMMAND)) { + return; + } + } - } else if (flag == "b" || flag == "B") { + void addLine(){ + System.out.println(String.join(" 노선 ", Constant.ADD_PREFIX, Constant.NAME_POSTFIX)); + String lineName = scanner.next(); + Line line = new Line(lineName); + System.out.println(String.join(" 노선의 상행 ", Constant.ADD_PREFIX, Constant.NAME_POSTFIX)); + String upward = scanner.next(); + System.out.println(String.join(" 노선의 하행 ", Constant.ADD_PREFIX, Constant.NAME_POSTFIX)); + String downward = scanner.next(); + lineRepository.addLine(line); + } + void deleteLine(){ + System.out.println(String.join(" 노선 ", Constant.DELETE_PREFIX, Constant.NAME_POSTFIX)); + String lineName = scanner.next(); + boolean deleteFlag = lineRepository.deleteLineByName(lineName); + if(deleteFlag){ + System.out.println(String.join(" ", Constant.INFO_PREFIX, Constant.DELETE_LINE_SUCCESS)); } } + + void readLines(){ + lineRepository.printLines(); + } } diff --git a/src/main/java/subway/domain/LineRepository.java b/src/main/java/subway/domain/LineRepository.java index 49132ddb6..cf054d9b0 100644 --- a/src/main/java/subway/domain/LineRepository.java +++ b/src/main/java/subway/domain/LineRepository.java @@ -1,5 +1,7 @@ package subway.domain; +import subway.Constant; + import java.util.ArrayList; import java.util.Collections; import java.util.List; @@ -13,10 +15,21 @@ public static List lines() { } public static void addLine(Line line) { + if(lines.stream().anyMatch(o -> o.getName().equals(line.getName()))){ + System.out.println(String.join(" ", Constant.ERROR_PREFIX, Constant.DUPLICATE_LINE_NAME)); + return; + } lines.add(line); + System.out.println(String.join(" ", Constant.INFO_PREFIX, Constant.ADD_LINE_SUCCESS)); } public static boolean deleteLineByName(String name) { return lines.removeIf(line -> Objects.equals(line.getName(), name)); } + + public static void printLines(){ + for(int i=0; i Date: Sun, 13 Dec 2020 16:20:42 +0900 Subject: [PATCH 05/27] =?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=98=88=EC=99=B8=20?= =?UTF-8?q?=EC=B2=98=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 상행, 하행역이 역 정보에 등록되지 않은 경우 노선 등록 불가 --- src/main/java/subway/Constant.java | 1 - src/main/java/subway/domain/LineController.java | 2 +- src/main/java/subway/domain/LineRepository.java | 17 +++++++++++++++-- .../java/subway/domain/StationRepository.java | 6 +++++- 4 files changed, 21 insertions(+), 5 deletions(-) diff --git a/src/main/java/subway/Constant.java b/src/main/java/subway/Constant.java index 0bc83975a..84dcae83c 100644 --- a/src/main/java/subway/Constant.java +++ b/src/main/java/subway/Constant.java @@ -28,5 +28,4 @@ public class Constant { public static final String DELETE_PREFIX = "## 삭제할"; public static final String NAME_POSTFIX = "이름을 입력해주세요."; public static final String LINE_STATION_POSTFIX = "종점역 이름을 입력하세요."; - } diff --git a/src/main/java/subway/domain/LineController.java b/src/main/java/subway/domain/LineController.java index 5d02229fd..f6542ef90 100644 --- a/src/main/java/subway/domain/LineController.java +++ b/src/main/java/subway/domain/LineController.java @@ -34,7 +34,7 @@ void addLine(){ String upward = scanner.next(); System.out.println(String.join(" 노선의 하행 ", Constant.ADD_PREFIX, Constant.NAME_POSTFIX)); String downward = scanner.next(); - lineRepository.addLine(line); + lineRepository.addLine(line, new Station(upward), new Station(downward)); } void deleteLine(){ diff --git a/src/main/java/subway/domain/LineRepository.java b/src/main/java/subway/domain/LineRepository.java index cf054d9b0..64ff5ce22 100644 --- a/src/main/java/subway/domain/LineRepository.java +++ b/src/main/java/subway/domain/LineRepository.java @@ -9,21 +9,30 @@ public class LineRepository { private static final List lines = new ArrayList<>(); + static StationRepository stationRepository = new StationRepository(); + private static final String NO_STATION_INFO= "등록되지 않은 역입니다.\n"; + private static final String NO_LINE_INFO= "등록되지 않은 노선입니다.\n"; public static List lines() { return Collections.unmodifiableList(lines); } - public static void addLine(Line line) { - if(lines.stream().anyMatch(o -> o.getName().equals(line.getName()))){ + public static void addLine(Line line, Station upward, Station downward) { + if(checkExistLine(line)){ System.out.println(String.join(" ", Constant.ERROR_PREFIX, Constant.DUPLICATE_LINE_NAME)); return; + } else if(!stationRepository.checkExistStation(upward) || !stationRepository.checkExistStation(downward)){ + System.out.println(String.join(" ", Constant.ERROR_PREFIX, NO_STATION_INFO)); + return; } lines.add(line); System.out.println(String.join(" ", Constant.INFO_PREFIX, Constant.ADD_LINE_SUCCESS)); } public static boolean deleteLineByName(String name) { + if(!checkExistLine(new Line(name))){ + System.out.println(String.join(" ", Constant.ERROR_PREFIX, NO_LINE_INFO)); + } return lines.removeIf(line -> Objects.equals(line.getName(), name)); } @@ -32,4 +41,8 @@ public static void printLines(){ System.out.println(String.join(" ", Constant.INFO_PREFIX, lines.get(i).getName())); } } + + private static boolean checkExistLine(Line line){ + return lines.stream().anyMatch(o -> o.getName().equals(line.getName())); + } } diff --git a/src/main/java/subway/domain/StationRepository.java b/src/main/java/subway/domain/StationRepository.java index c121e44fe..c423adb90 100644 --- a/src/main/java/subway/domain/StationRepository.java +++ b/src/main/java/subway/domain/StationRepository.java @@ -15,7 +15,7 @@ public static List stations() { } public static void addStation(Station station) { - if(stations.stream().anyMatch(o -> o.getName().equals(station.getName()))){ + if(checkExistStation(station)){ System.out.println(String.join(" ", Constant.ERROR_PREFIX, Constant.DUPLICATE_STATION_NAME)); return; } @@ -32,4 +32,8 @@ public static void printStations(){ System.out.println(String.join(" ", Constant.INFO_PREFIX, stations.get(i).getName())); } } + + public static boolean checkExistStation(Station station){ + return stations.stream().anyMatch(o -> o.getName().equals(station.getName())); + } } From a4a2b09c289cb2d23f1661c6c3945be4be9dd4d8 Mon Sep 17 00:00:00 2001 From: yejin Date: Sun, 13 Dec 2020 16:22:33 +0900 Subject: [PATCH 06/27] =?UTF-8?q?docs=20:=20=EC=98=88=EC=99=B8=20=EC=82=AC?= =?UTF-8?q?=ED=95=AD=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 노선 관리 기능의 예외 사항 추가 --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index 82e63ef4d..5fc7f22e0 100644 --- a/README.md +++ b/README.md @@ -20,6 +20,8 @@ - 노선 삭제 : 현재 등록된 노선의 전체 목록을 출력한다. - 노선 조회 : 사용자에게 입력받은 노선을 삭제한다. - [ERROR] 삭제해야 하는 노선이 존재하지 않는다면 에러 사항을 출력한다. + - [ERROR] 중복된 노선 이름이라면 에러 사항을 출력한다. + - [ERROR] 상행 종점역, 하행 종점역으로 입력된 역이 등록되지 않은 역인 경우 에러 사항을 출력한다. - 3. 구간 관리 - 구간 등록 : 노선과 역 이름을 입력받아 구간을 등록한다. - 구간 삭제 : 노선과 역 이름을 입력받아 구간을 삭제한다. From ec956b22d416e9340ec7d4e1e759ec514cd80889 Mon Sep 17 00:00:00 2001 From: yejin Date: Tue, 15 Dec 2020 11:00:51 +0900 Subject: [PATCH 07/27] =?UTF-8?q?feat=20:=20=EA=B5=AC=EA=B0=84=20=EB=93=B1?= =?UTF-8?q?=EB=A1=9D=20=EC=9E=91=EC=97=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 구간 등록을 위한 Line 클래스 변경 LineRepository의 파라미터 타입 변경 --- src/main/java/subway/Constant.java | 8 ++- src/main/java/subway/domain/Input.java | 10 +++- src/main/java/subway/domain/Line.java | 4 ++ .../java/subway/domain/LineRepository.java | 49 ++++++++++------ .../java/subway/domain/SectionController.java | 11 ---- .../java/subway/domain/SectionRepository.java | 52 +++++++++++++++++ .../java/subway/domain/StationRepository.java | 10 ++-- .../{domain => view}/LineController.java | 24 ++++---- .../java/subway/view/SectionController.java | 58 +++++++++++++++++++ .../{domain => view}/StationController.java | 16 ++--- 10 files changed, 184 insertions(+), 58 deletions(-) delete mode 100644 src/main/java/subway/domain/SectionController.java create mode 100644 src/main/java/subway/domain/SectionRepository.java rename src/main/java/subway/{domain => view}/LineController.java (74%) create mode 100644 src/main/java/subway/view/SectionController.java rename src/main/java/subway/{domain => view}/StationController.java (82%) diff --git a/src/main/java/subway/Constant.java b/src/main/java/subway/Constant.java index 84dcae83c..826b4ccf8 100644 --- a/src/main/java/subway/Constant.java +++ b/src/main/java/subway/Constant.java @@ -11,7 +11,7 @@ public class Constant { public static final String BACK_COMMAND = "B"; public static final String ERROR_PREFIX = "[ERROR]"; public static final String INFO_PREFIX = "[INFO]"; - public static final String MAIN_ANNOUNCEMENT = "## 메인 화면\n1. 역 관리\n2. 노선 관리\n3. 구간 관리\n4. 지하철 노선도 출력\nQ. 종료\n"; + public static final String MAIN_ANNOUNCEMENT = "\n## 메인 화면\n1. 역 관리\n2. 노선 관리\n3. 구간 관리\n4. 지하철 노선도 출력\nQ. 종료\n"; public static final String STATION_ANNOUNCEMENT = "\n## 역 관리 화면\n1. 역 등록\n2. 역 삭제\n3. 역 조회\nB. 돌아가기"; public static final String LINE_ANNOUNCEMENT = "\n## 노선 관리 화면\n1. 노선 등록\n2. 노선 삭제\n3. 노선 조회\nB. 돌아가기"; public static final String SECTION_ANNOUNCEMENT = "\n## 구간 관리 화면\n1. 구간 등록\n2. 구간 삭제\nB. 돌아가기\n"; @@ -24,8 +24,10 @@ public class Constant { public static final String DELETE_LINE_SUCCESS = "지하철 노선이 삭제되었습니다.\n"; public static final String ADD_SECTION_SUCCESS = "구간이 등록되었습니다.\n"; public static final String DELETE_SECTION_SUCCESS = "구간이 삭제되었습니다.\n"; - public static final String ADD_PREFIX = "## 등록할"; - public static final String DELETE_PREFIX = "## 삭제할"; + public static final String ADD_PREFIX = "\n## 등록할"; + public static final String DELETE_PREFIX = "\n## 삭제할"; public static final String NAME_POSTFIX = "이름을 입력해주세요."; public static final String LINE_STATION_POSTFIX = "종점역 이름을 입력하세요."; + public static final String NO_STATION_INFO = "등록되지 않은 역입니다.\n"; + public static final String NO_LINE_INFO = "등록되지 않은 노선입니다.\n"; } diff --git a/src/main/java/subway/domain/Input.java b/src/main/java/subway/domain/Input.java index 103cf5d76..99b5d57d8 100644 --- a/src/main/java/subway/domain/Input.java +++ b/src/main/java/subway/domain/Input.java @@ -1,8 +1,10 @@ package subway.domain; import subway.Constant; +import subway.view.LineController; +import subway.view.SectionController; +import subway.view.StationController; -import java.awt.print.Book; import java.util.Scanner; public class Input { @@ -29,9 +31,11 @@ public void mainInput() { lineController.printSelection(); return; } else if (flag.equals(Constant.THIRD_COMMAND)) { - + sectionController.printSelection(); + return; } else if(flag.equals(Constant.FORTH_COMMAND)){ - + sectionController.readSections(); + return; } else if (flag.equals(Constant.QUIT_COMMAND)) { quit = true; } diff --git a/src/main/java/subway/domain/Line.java b/src/main/java/subway/domain/Line.java index f4d738d5a..96a0a7121 100644 --- a/src/main/java/subway/domain/Line.java +++ b/src/main/java/subway/domain/Line.java @@ -1,7 +1,11 @@ package subway.domain; +import java.util.ArrayList; +import java.util.List; + public class Line { private String name; + public List stations = new ArrayList(); public Line(String name) { this.name = name; diff --git a/src/main/java/subway/domain/LineRepository.java b/src/main/java/subway/domain/LineRepository.java index 64ff5ce22..8247feec6 100644 --- a/src/main/java/subway/domain/LineRepository.java +++ b/src/main/java/subway/domain/LineRepository.java @@ -2,47 +2,60 @@ import subway.Constant; -import java.util.ArrayList; -import java.util.Collections; -import java.util.List; -import java.util.Objects; +import java.util.*; public class LineRepository { - private static final List lines = new ArrayList<>(); + public static final List lines = new ArrayList<>(); static StationRepository stationRepository = new StationRepository(); - private static final String NO_STATION_INFO= "등록되지 않은 역입니다.\n"; - private static final String NO_LINE_INFO= "등록되지 않은 노선입니다.\n"; + static SectionRepository sectionRepository = new SectionRepository(); public static List lines() { return Collections.unmodifiableList(lines); } - public static void addLine(Line line, Station upward, Station downward) { - if(checkExistLine(line)){ - System.out.println(String.join(" ", Constant.ERROR_PREFIX, Constant.DUPLICATE_LINE_NAME)); + public static void addLine(String lineName, Station upward, Station downward) { + if (checkExistLine(lineName)) { + System.err.println(String.join(" ", Constant.ERROR_PREFIX, Constant.DUPLICATE_LINE_NAME)); return; - } else if(!stationRepository.checkExistStation(upward) || !stationRepository.checkExistStation(downward)){ - System.out.println(String.join(" ", Constant.ERROR_PREFIX, NO_STATION_INFO)); + } else if (!stationRepository.checkExistStation(upward) || !stationRepository.checkExistStation(downward)) { + System.err.println(String.join(" ", Constant.ERROR_PREFIX, Constant.NO_STATION_INFO)); + return; + } else if(upward.equals(downward)) { + System.err.println(String.join(" ", Constant.ERROR_PREFIX, "상행과 하행 종점은 같을 수 없습니다.")); return; } + Line line = new Line(lineName); + line.stations.add(upward); + line.stations.add(downward); lines.add(line); + printMap(); System.out.println(String.join(" ", Constant.INFO_PREFIX, Constant.ADD_LINE_SUCCESS)); } public static boolean deleteLineByName(String name) { - if(!checkExistLine(new Line(name))){ - System.out.println(String.join(" ", Constant.ERROR_PREFIX, NO_LINE_INFO)); + if (!checkExistLine(name)) { + System.err.println(String.join(" ", Constant.ERROR_PREFIX, Constant.NO_LINE_INFO)); } return lines.removeIf(line -> Objects.equals(line.getName(), name)); } - public static void printLines(){ - for(int i=0; i o.getName().equals(line.getName())); + public static void printMap(){ + System.out.println("print map"); + for(int i=0; i o.getName().equals(lineName)); } } diff --git a/src/main/java/subway/domain/SectionController.java b/src/main/java/subway/domain/SectionController.java deleted file mode 100644 index 96cc552d2..000000000 --- a/src/main/java/subway/domain/SectionController.java +++ /dev/null @@ -1,11 +0,0 @@ -package subway.domain; - -import java.util.Scanner; - -public class SectionController { - Scanner scanner; - - public SectionController(Scanner scanner){ - this.scanner = scanner; - } -} diff --git a/src/main/java/subway/domain/SectionRepository.java b/src/main/java/subway/domain/SectionRepository.java new file mode 100644 index 000000000..62a9f2cdd --- /dev/null +++ b/src/main/java/subway/domain/SectionRepository.java @@ -0,0 +1,52 @@ +package subway.domain; + +import subway.Constant; + +import java.util.*; + +public class SectionRepository { + private static LineRepository lineRepository = new LineRepository(); + private static StationRepository stationRepository = new StationRepository(); + + public static void addSection(String lineName, Station station, int order) { + if (!lineRepository.checkExistLine(lineName)) { + System.err.println(String.join(" ", Constant.ERROR_PREFIX, Constant.NO_LINE_INFO)); + return; + } else if (!stationRepository.checkExistStation(station)) { + System.err.println(String.join(" ", Constant.ERROR_PREFIX, Constant.NO_STATION_INFO)); + return; + } + try{ + Line targetLine = lineRepository.lines.stream().filter(l -> lineName.equals(l.getName())).findFirst().get(); + targetLine.stations.add(order, station); + }catch (IndexOutOfBoundsException e){ + System.out.println("추가할 수 없는 구간"); + return; + }catch (NullPointerException e){ + System.err.println("nullPointer"); + return; + } + System.out.println(String.join(" ", Constant.INFO_PREFIX, Constant.ADD_LINE_SUCCESS)); + } + + public static boolean deleteSection(String lineName, String stationName) { + if (!lineRepository.checkExistLine(lineName)) { + System.err.println(String.join(" ", Constant.ERROR_PREFIX, Constant.NO_LINE_INFO)); + }else if(!stationRepository.checkExistStation(new Station(stationName))){ + System.err.println(String.join(" ", Constant.ERROR_PREFIX, Constant.NO_STATION_INFO)); + } + + return false; + } + +// public static void printSections(){ +// map.entrySet().forEach(entry->{ +// System.out.println("key -> " + entry.getKey().getName()); +//// + " " + entry.getValue()); +// for(int i=0; i " + entry.getValue().get(i).getName() + " "); +// } +// }); +// } + +} diff --git a/src/main/java/subway/domain/StationRepository.java b/src/main/java/subway/domain/StationRepository.java index c423adb90..a22e720e2 100644 --- a/src/main/java/subway/domain/StationRepository.java +++ b/src/main/java/subway/domain/StationRepository.java @@ -15,8 +15,8 @@ public static List stations() { } public static void addStation(Station station) { - if(checkExistStation(station)){ - System.out.println(String.join(" ", Constant.ERROR_PREFIX, Constant.DUPLICATE_STATION_NAME)); + if (checkExistStation(station)) { + System.err.println(String.join(" ", Constant.ERROR_PREFIX, Constant.DUPLICATE_STATION_NAME)); return; } stations.add(station); @@ -27,13 +27,13 @@ public static boolean deleteStation(String name) { return stations.removeIf(station -> Objects.equals(station.getName(), name)); } - public static void printStations(){ - for(int i=0; i o.getName().equals(station.getName())); } } diff --git a/src/main/java/subway/domain/LineController.java b/src/main/java/subway/view/LineController.java similarity index 74% rename from src/main/java/subway/domain/LineController.java rename to src/main/java/subway/view/LineController.java index f6542ef90..1c4e7a8c4 100644 --- a/src/main/java/subway/domain/LineController.java +++ b/src/main/java/subway/view/LineController.java @@ -1,6 +1,9 @@ -package subway.domain; +package subway.view; import subway.Constant; +import subway.domain.Line; +import subway.domain.LineRepository; +import subway.domain.Station; import java.util.Scanner; @@ -8,11 +11,11 @@ public class LineController { Scanner scanner; LineRepository lineRepository = new LineRepository(); - public LineController(Scanner scanner){ + public LineController(Scanner scanner) { this.scanner = scanner; } - void printSelection(){ + public void printSelection() { System.out.println(Constant.LINE_ANNOUNCEMENT); String command = scanner.next(); if (command.equals(Constant.FIRST_COMMAND)) { @@ -26,27 +29,26 @@ void printSelection(){ } } - void addLine(){ + void addLine() { System.out.println(String.join(" 노선 ", Constant.ADD_PREFIX, Constant.NAME_POSTFIX)); String lineName = scanner.next(); - Line line = new Line(lineName); - System.out.println(String.join(" 노선의 상행 ", Constant.ADD_PREFIX, Constant.NAME_POSTFIX)); + System.out.println(String.join(" 노선의 상행 ", Constant.ADD_PREFIX, Constant.LINE_STATION_POSTFIX)); String upward = scanner.next(); - System.out.println(String.join(" 노선의 하행 ", Constant.ADD_PREFIX, Constant.NAME_POSTFIX)); + System.out.println(String.join(" 노선의 하행 ", Constant.ADD_PREFIX, Constant.LINE_STATION_POSTFIX)); String downward = scanner.next(); - lineRepository.addLine(line, new Station(upward), new Station(downward)); + lineRepository.addLine(lineName, new Station(upward), new Station(downward)); } - void deleteLine(){ + void deleteLine() { System.out.println(String.join(" 노선 ", Constant.DELETE_PREFIX, Constant.NAME_POSTFIX)); String lineName = scanner.next(); boolean deleteFlag = lineRepository.deleteLineByName(lineName); - if(deleteFlag){ + if (deleteFlag) { System.out.println(String.join(" ", Constant.INFO_PREFIX, Constant.DELETE_LINE_SUCCESS)); } } - void readLines(){ + void readLines() { lineRepository.printLines(); } } diff --git a/src/main/java/subway/view/SectionController.java b/src/main/java/subway/view/SectionController.java new file mode 100644 index 000000000..2c9e67ed9 --- /dev/null +++ b/src/main/java/subway/view/SectionController.java @@ -0,0 +1,58 @@ +package subway.view; + +import subway.Constant; +import subway.domain.Line; +import subway.domain.LineRepository; +import subway.domain.SectionRepository; +import subway.domain.Station; + +import java.util.Scanner; + +public class SectionController { + Scanner scanner; + SectionRepository sectionRepository = new SectionRepository(); + LineRepository lineRepository = new LineRepository(); + private static final String GET_LINE_NAME = "\n## 노선을 입력하세요."; + private static final String GET_STATION_NAME = "\n## 역 이름을 입력하세요."; + private static final String GET_ORDER_NAME = "\n## 순서를 입력하세요."; + private static final String GET_DELETE_LINE_NAME = "\n## 삭제할 구간의 노선을 입력하세요."; + private static final String GET_DELETE_STATION_NAME = "\n## 삭제할 구간의 역을 입력하세요."; + + public SectionController(Scanner scanner) { + this.scanner = scanner; + } + + public void printSelection() { + System.out.println(Constant.SECTION_ANNOUNCEMENT); + String command = scanner.next(); + if (command.equals(Constant.FIRST_COMMAND)) { + addSection(); + } else if (command.equals(Constant.SECOND_COMMAND)) { + deleteSection(); + } else if (command.equals(Constant.BACK_COMMAND)) { + return; + } + } + + void addSection(){ + System.out.println(GET_LINE_NAME); + String lineName = scanner.next(); + System.out.println(GET_STATION_NAME); + String stationName = scanner.next(); + System.out.println(GET_ORDER_NAME); + String order = scanner.next(); + sectionRepository.addSection(lineName, new Station(stationName), Integer.parseInt(order)); + } + + void deleteSection(){ + System.out.println(GET_DELETE_LINE_NAME); + String lineName = scanner.next(); + System.out.println(GET_DELETE_STATION_NAME); + String stationName = scanner.next(); + sectionRepository.deleteSection(lineName, stationName); + } + + public void readSections() { + lineRepository.printMap(); + } +} diff --git a/src/main/java/subway/domain/StationController.java b/src/main/java/subway/view/StationController.java similarity index 82% rename from src/main/java/subway/domain/StationController.java rename to src/main/java/subway/view/StationController.java index 10e9bb9ef..91e53b7e6 100644 --- a/src/main/java/subway/domain/StationController.java +++ b/src/main/java/subway/view/StationController.java @@ -1,6 +1,8 @@ -package subway.domain; +package subway.view; import subway.Constant; +import subway.domain.Station; +import subway.domain.StationRepository; import java.util.Scanner; @@ -8,11 +10,11 @@ public class StationController { Scanner scanner; StationRepository stationRepository = new StationRepository(); - public StationController(Scanner scanner){ + public StationController(Scanner scanner) { this.scanner = scanner; } - void printSelection(){ + public void printSelection() { System.out.println(Constant.STATION_ANNOUNCEMENT); String command = scanner.next(); if (command.equals(Constant.FIRST_COMMAND)) { @@ -26,23 +28,23 @@ void printSelection(){ } } - void addStation(){ + void addStation() { System.out.println(String.join(" 역 ", Constant.ADD_PREFIX, Constant.NAME_POSTFIX)); String stationName = scanner.next(); Station station = new Station(stationName); stationRepository.addStation(station); } - void deleteStation(){ + void deleteStation() { System.out.println(String.join(" 역 ", Constant.DELETE_PREFIX, Constant.NAME_POSTFIX)); String stationName = scanner.next(); boolean deleteFlag = stationRepository.deleteStation(stationName); - if(deleteFlag){ + if (deleteFlag) { System.out.println(String.join(" ", Constant.INFO_PREFIX, Constant.DELETE_STATION_SUCCESS)); } } - void readStations(){ + void readStations() { stationRepository.printStations(); } } From f38ee79ff89c21e19b323a1850ef8bc5c3beea3c Mon Sep 17 00:00:00 2001 From: yejin Date: Tue, 15 Dec 2020 11:06:26 +0900 Subject: [PATCH 08/27] =?UTF-8?q?fix=20:=20stationReposotory=20=ED=8C=8C?= =?UTF-8?q?=EB=9D=BC=EB=AF=B8=ED=84=B0=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/domain/LineRepository.java | 3 +-- .../java/subway/domain/SectionRepository.java | 17 +++++++---------- .../java/subway/domain/StationRepository.java | 10 +++++----- .../java/subway/view/SectionController.java | 2 +- .../java/subway/view/StationController.java | 3 +-- 5 files changed, 15 insertions(+), 20 deletions(-) diff --git a/src/main/java/subway/domain/LineRepository.java b/src/main/java/subway/domain/LineRepository.java index 8247feec6..b32bab8fe 100644 --- a/src/main/java/subway/domain/LineRepository.java +++ b/src/main/java/subway/domain/LineRepository.java @@ -46,9 +46,8 @@ public static void printLines() { } public static void printMap(){ - System.out.println("print map"); for(int i=0; i lineName.equals(l.getName())).findFirst().get(); - targetLine.stations.add(order, station); + targetLine.stations.add(order, new Station(stationName)); }catch (IndexOutOfBoundsException e){ - System.out.println("추가할 수 없는 구간"); - return; - }catch (NullPointerException e){ - System.err.println("nullPointer"); + System.out.println(String.join(" ", Constant.ERROR_PREFIX, "추가할 수 없는 구간입니다.")); return; } System.out.println(String.join(" ", Constant.INFO_PREFIX, Constant.ADD_LINE_SUCCESS)); } public static boolean deleteSection(String lineName, String stationName) { - if (!lineRepository.checkExistLine(lineName)) { + if (!lineRepository.checkExistLine(lineName)) { // 존재하지 않는 노선 System.err.println(String.join(" ", Constant.ERROR_PREFIX, Constant.NO_LINE_INFO)); - }else if(!stationRepository.checkExistStation(new Station(stationName))){ + }else if(!stationRepository.checkExistStation(stationName)){ // 존재하지 않는 역 System.err.println(String.join(" ", Constant.ERROR_PREFIX, Constant.NO_STATION_INFO)); } diff --git a/src/main/java/subway/domain/StationRepository.java b/src/main/java/subway/domain/StationRepository.java index a22e720e2..c80bc151c 100644 --- a/src/main/java/subway/domain/StationRepository.java +++ b/src/main/java/subway/domain/StationRepository.java @@ -14,12 +14,12 @@ public static List stations() { return Collections.unmodifiableList(stations); } - public static void addStation(Station station) { - if (checkExistStation(station)) { + public static void addStation(String stationName) { + if (checkExistStation(stationName)) { System.err.println(String.join(" ", Constant.ERROR_PREFIX, Constant.DUPLICATE_STATION_NAME)); return; } - stations.add(station); + stations.add(new Station(stationName)); System.out.println(String.join(" ", Constant.INFO_PREFIX, Constant.ADD_STATION_SUCCESS)); } @@ -33,7 +33,7 @@ public static void printStations() { } } - public static boolean checkExistStation(Station station) { - return stations.stream().anyMatch(o -> o.getName().equals(station.getName())); + public static boolean checkExistStation(String stationName) { + return stations.stream().anyMatch(o -> o.getName().equals(stationName)); } } diff --git a/src/main/java/subway/view/SectionController.java b/src/main/java/subway/view/SectionController.java index 2c9e67ed9..02d69bea4 100644 --- a/src/main/java/subway/view/SectionController.java +++ b/src/main/java/subway/view/SectionController.java @@ -41,7 +41,7 @@ void addSection(){ String stationName = scanner.next(); System.out.println(GET_ORDER_NAME); String order = scanner.next(); - sectionRepository.addSection(lineName, new Station(stationName), Integer.parseInt(order)); + sectionRepository.addSection(lineName, stationName, Integer.parseInt(order)); } void deleteSection(){ diff --git a/src/main/java/subway/view/StationController.java b/src/main/java/subway/view/StationController.java index 91e53b7e6..dd30b4505 100644 --- a/src/main/java/subway/view/StationController.java +++ b/src/main/java/subway/view/StationController.java @@ -31,8 +31,7 @@ public void printSelection() { void addStation() { System.out.println(String.join(" 역 ", Constant.ADD_PREFIX, Constant.NAME_POSTFIX)); String stationName = scanner.next(); - Station station = new Station(stationName); - stationRepository.addStation(station); + stationRepository.addStation(stationName); } void deleteStation() { From 49c679f7da958e0cfe38277aaf3a72e3cb85fb84 Mon Sep 17 00:00:00 2001 From: yejin Date: Tue, 15 Dec 2020 11:11:20 +0900 Subject: [PATCH 09/27] =?UTF-8?q?fix=20:=20stationReposotory=20=ED=8C=8C?= =?UTF-8?q?=EB=9D=BC=EB=AF=B8=ED=84=B0=20=EC=88=98=EC=A0=95=EC=97=90=20?= =?UTF-8?q?=EB=94=B0=EB=A5=B8=20=EC=97=90=EB=9F=AC=20=EC=88=98=EC=A0=95=20?= =?UTF-8?q?LineController,=20LineRepository=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/domain/LineRepository.java | 10 +++++----- src/main/java/subway/view/LineController.java | 6 +++--- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/src/main/java/subway/domain/LineRepository.java b/src/main/java/subway/domain/LineRepository.java index b32bab8fe..74f86b4e5 100644 --- a/src/main/java/subway/domain/LineRepository.java +++ b/src/main/java/subway/domain/LineRepository.java @@ -13,20 +13,20 @@ public static List lines() { return Collections.unmodifiableList(lines); } - public static void addLine(String lineName, Station upward, Station downward) { + public static void addLine(String lineName, String upwardName, String downwardName) { if (checkExistLine(lineName)) { System.err.println(String.join(" ", Constant.ERROR_PREFIX, Constant.DUPLICATE_LINE_NAME)); return; - } else if (!stationRepository.checkExistStation(upward) || !stationRepository.checkExistStation(downward)) { + } else if (!stationRepository.checkExistStation(upwardName) || !stationRepository.checkExistStation(downwardName)) { System.err.println(String.join(" ", Constant.ERROR_PREFIX, Constant.NO_STATION_INFO)); return; - } else if(upward.equals(downward)) { + } else if(upwardName.equals(downwardName)) { System.err.println(String.join(" ", Constant.ERROR_PREFIX, "상행과 하행 종점은 같을 수 없습니다.")); return; } Line line = new Line(lineName); - line.stations.add(upward); - line.stations.add(downward); + line.stations.add(new Station(upwardName)); + line.stations.add(new Station(downwardName)); lines.add(line); printMap(); System.out.println(String.join(" ", Constant.INFO_PREFIX, Constant.ADD_LINE_SUCCESS)); diff --git a/src/main/java/subway/view/LineController.java b/src/main/java/subway/view/LineController.java index 1c4e7a8c4..dd1134812 100644 --- a/src/main/java/subway/view/LineController.java +++ b/src/main/java/subway/view/LineController.java @@ -33,10 +33,10 @@ void addLine() { System.out.println(String.join(" 노선 ", Constant.ADD_PREFIX, Constant.NAME_POSTFIX)); String lineName = scanner.next(); System.out.println(String.join(" 노선의 상행 ", Constant.ADD_PREFIX, Constant.LINE_STATION_POSTFIX)); - String upward = scanner.next(); + String upwardName = scanner.next(); System.out.println(String.join(" 노선의 하행 ", Constant.ADD_PREFIX, Constant.LINE_STATION_POSTFIX)); - String downward = scanner.next(); - lineRepository.addLine(lineName, new Station(upward), new Station(downward)); + String downwardName = scanner.next(); + lineRepository.addLine(lineName, upwardName, downwardName); } void deleteLine() { From 40ec21e1e87d86f3526a3a84f04c0a1b083fcba6 Mon Sep 17 00:00:00 2001 From: yejin Date: Tue, 15 Dec 2020 11:37:07 +0900 Subject: [PATCH 10/27] =?UTF-8?q?fix=20:=20SectionRepository=EC=97=90?= =?UTF-8?q?=EC=84=9C=20=EB=85=B8=EC=84=A0=EB=8F=84=EB=A5=BC=20=EC=B6=9C?= =?UTF-8?q?=EB=A0=A5=ED=95=98=EB=8F=84=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 --- .../java/subway/domain/LineRepository.java | 11 ----------- .../java/subway/domain/SectionRepository.java | 18 +++++++++--------- .../java/subway/view/SectionController.java | 3 +-- 3 files changed, 10 insertions(+), 22 deletions(-) diff --git a/src/main/java/subway/domain/LineRepository.java b/src/main/java/subway/domain/LineRepository.java index 74f86b4e5..1da8fd608 100644 --- a/src/main/java/subway/domain/LineRepository.java +++ b/src/main/java/subway/domain/LineRepository.java @@ -7,7 +7,6 @@ public class LineRepository { public static final List lines = new ArrayList<>(); static StationRepository stationRepository = new StationRepository(); - static SectionRepository sectionRepository = new SectionRepository(); public static List lines() { return Collections.unmodifiableList(lines); @@ -28,7 +27,6 @@ public static void addLine(String lineName, String upwardName, String downwardNa line.stations.add(new Station(upwardName)); line.stations.add(new Station(downwardName)); lines.add(line); - printMap(); System.out.println(String.join(" ", Constant.INFO_PREFIX, Constant.ADD_LINE_SUCCESS)); } @@ -45,15 +43,6 @@ public static void printLines() { } } - public static void printMap(){ - for(int i=0; i o.getName().equals(lineName)); } diff --git a/src/main/java/subway/domain/SectionRepository.java b/src/main/java/subway/domain/SectionRepository.java index 38dc42d8d..fa7966cea 100644 --- a/src/main/java/subway/domain/SectionRepository.java +++ b/src/main/java/subway/domain/SectionRepository.java @@ -36,14 +36,14 @@ public static boolean deleteSection(String lineName, String stationName) { return false; } -// public static void printSections(){ -// map.entrySet().forEach(entry->{ -// System.out.println("key -> " + entry.getKey().getName()); -//// + " " + entry.getValue()); -// for(int i=0; i " + entry.getValue().get(i).getName() + " "); -// } -// }); -// } + + public static void printMap(){ + for(int i=0; i Date: Tue, 15 Dec 2020 11:44:12 +0900 Subject: [PATCH 11/27] =?UTF-8?q?feat=20:=20=EA=B5=AC=EA=B0=84=20=EC=82=AD?= =?UTF-8?q?=EC=A0=9C=20=EC=9E=91=EC=97=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/subway/domain/SectionRepository.java | 4 ++-- src/main/java/subway/view/SectionController.java | 5 ++++- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/src/main/java/subway/domain/SectionRepository.java b/src/main/java/subway/domain/SectionRepository.java index fa7966cea..8b07c8ba1 100644 --- a/src/main/java/subway/domain/SectionRepository.java +++ b/src/main/java/subway/domain/SectionRepository.java @@ -32,8 +32,8 @@ public static boolean deleteSection(String lineName, String stationName) { }else if(!stationRepository.checkExistStation(stationName)){ // 존재하지 않는 역 System.err.println(String.join(" ", Constant.ERROR_PREFIX, Constant.NO_STATION_INFO)); } - - return false; + List stations = lineRepository.lines.stream().filter(l -> lineName.equals(l.getName())).findFirst().get().stations; + return stations.removeIf(s -> Objects.equals(s.getName(), stationName)); } diff --git a/src/main/java/subway/view/SectionController.java b/src/main/java/subway/view/SectionController.java index 090ced571..29dcef3f9 100644 --- a/src/main/java/subway/view/SectionController.java +++ b/src/main/java/subway/view/SectionController.java @@ -48,7 +48,10 @@ void deleteSection(){ String lineName = scanner.next(); System.out.println(GET_DELETE_STATION_NAME); String stationName = scanner.next(); - sectionRepository.deleteSection(lineName, stationName); + boolean deleteFlag = sectionRepository.deleteSection(lineName, stationName); + if (deleteFlag) { + System.out.println(String.join(" ", Constant.INFO_PREFIX, Constant.DELETE_STATION_SUCCESS)); + } } public void readSections() { From 52cc92a866077e0cc5c21caccf5838add6bad457 Mon Sep 17 00:00:00 2001 From: yejin Date: Tue, 15 Dec 2020 13:48:16 +0900 Subject: [PATCH 12/27] =?UTF-8?q?feat=20:=20=EA=B5=AC=EA=B0=84=20=EB=93=B1?= =?UTF-8?q?=EB=A1=9D=20=EC=98=88=EC=99=B8=20=EC=B2=98=EB=A6=AC=20=EC=9E=91?= =?UTF-8?q?=EC=97=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 현재 노선 크기 이상에 구간을 등록할 경우 예외 출력 --- src/main/java/subway/domain/SectionRepository.java | 5 +++-- src/main/java/subway/view/SectionController.java | 6 +++++- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/src/main/java/subway/domain/SectionRepository.java b/src/main/java/subway/domain/SectionRepository.java index 8b07c8ba1..44b5f84af 100644 --- a/src/main/java/subway/domain/SectionRepository.java +++ b/src/main/java/subway/domain/SectionRepository.java @@ -20,8 +20,9 @@ public static void addSection(String lineName, String stationName, int order) { Line targetLine = lineRepository.lines.stream().filter(l -> lineName.equals(l.getName())).findFirst().get(); targetLine.stations.add(order, new Station(stationName)); }catch (IndexOutOfBoundsException e){ - System.out.println(String.join(" ", Constant.ERROR_PREFIX, "추가할 수 없는 구간입니다.")); - return; + throw new IndexOutOfBoundsException(); +// System.out.println(String.join(" ", Constant.ERROR_PREFIX, "추가할 수 없는 구간입니다.")); +// return; } System.out.println(String.join(" ", Constant.INFO_PREFIX, Constant.ADD_LINE_SUCCESS)); } diff --git a/src/main/java/subway/view/SectionController.java b/src/main/java/subway/view/SectionController.java index 29dcef3f9..21f5b6379 100644 --- a/src/main/java/subway/view/SectionController.java +++ b/src/main/java/subway/view/SectionController.java @@ -40,7 +40,11 @@ void addSection(){ String stationName = scanner.next(); System.out.println(GET_ORDER_NAME); String order = scanner.next(); - sectionRepository.addSection(lineName, stationName, Integer.parseInt(order)); + try { + sectionRepository.addSection(lineName, stationName, Integer.parseInt(order)); + }catch(IndexOutOfBoundsException e){ + System.out.println(String.join(" ", Constant.ERROR_PREFIX, "추가할 수 없는 구간입니다.")); + } } void deleteSection(){ From 48c605bad8e4fee828d9b7c2b1a930d4f3ed76fa Mon Sep 17 00:00:00 2001 From: yejin Date: Tue, 15 Dec 2020 13:51:14 +0900 Subject: [PATCH 13/27] =?UTF-8?q?docs=20:=20=EC=97=90=EB=9F=AC=20=EC=83=81?= =?UTF-8?q?=ED=99=A9=20=EC=B6=94=EA=B0=80=20=EB=B0=8F=20=EA=B5=AC=EC=B2=B4?= =?UTF-8?q?=ED=99=94?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/README.md b/README.md index 5fc7f22e0..06ca67cd4 100644 --- a/README.md +++ b/README.md @@ -12,22 +12,23 @@ - 역 등록 : 사용자에게 입력받은 역을 등록한다. - 역 삭제 : 사용자에게 입력받은 역을 삭제한다. - 역 조회 : 현재 등록된 역의 전체 목록을 출력한다. - - [ERROR] 역 이름이 2글자 이하이면 에러 사항을 출력한다. - - [ERROR] 중복된 역 이름이라면 에러 사항을 출력한다. - - [ERROR] 삭제해야 하는 역이 존재하지 않는다면 에러 사항을 출력한다. + - [ERROR] 역 등록 시 역 이름이 2글자 이하이면 에러 사항을 출력한다. + - [ERROR] 역 등록 시 중복된 역 이름이라면 에러 사항을 출력한다. + - [ERROR] 역 삭제 시 삭제해야 하는 역이 존재하지 않는다면 에러 사항을 출력한다. - 2. 노선 관리 - 노선 등록 : 노선의 이름, 상행 종점역, 하행 종점역을 입력받아 노선을 등록한다. - 노선 삭제 : 현재 등록된 노선의 전체 목록을 출력한다. - 노선 조회 : 사용자에게 입력받은 노선을 삭제한다. - - [ERROR] 삭제해야 하는 노선이 존재하지 않는다면 에러 사항을 출력한다. - - [ERROR] 중복된 노선 이름이라면 에러 사항을 출력한다. - - [ERROR] 상행 종점역, 하행 종점역으로 입력된 역이 등록되지 않은 역인 경우 에러 사항을 출력한다. + - [ERROR] 노선 등록 시 중복된 노선 이름이라면 에러 사항을 출력한다. + - [ERROR] 노선 등록 시 상행 종점역, 하행 종점역으로 입력된 역이 등록되지 않은 역인 경우 에러 사항을 출력한다. + - [ERROR] 노선 삭제 시 삭제해야 하는 노선이 존재하지 않는다면 에러 사항을 출력한다. - 3. 구간 관리 - 구간 등록 : 노선과 역 이름을 입력받아 구간을 등록한다. - 구간 삭제 : 노선과 역 이름을 입력받아 구간을 삭제한다. - - [ERROR] 중복된 노선과 역 이름이라면 에러 사항을 출력한다. - - [ERROR] 삭제해야 하는 노선과 역 이름이 존재하지 않느다면 에러 사항을 출력한다. - - [ERROR] 삭제해햐 하는 역이 포함된 노선에 역이 2개 이하로 있다면 에러 사항을 출력한다. + - [ERROR] 구간 등록 시 중복된 노선과 역 이름이라면 에러 사항을 출력한다. + - [ERROR] 구간 등록 시 현재 노선의 범위 밖이라면 에러 사항을 출력한다. + - [ERROR] 구간 삭제 시 삭제해야 하는 노선과 역 이름이 존재하지 않느다면 에러 사항을 출력한다. + - [ERROR] 구간 삭제 시 삭제해햐 하는 역이 포함된 노선에 역이 2개 이하로 있다면 에러 사항을 출력한다. - 4. 지하철 노선도 출력 - 전체 노선도 목록을 출력한다. - Q. 종료 From 9822f97b57fa7ffc37d7ff4f19f057e62301606b Mon Sep 17 00:00:00 2001 From: yejin Date: Tue, 15 Dec 2020 14:11:40 +0900 Subject: [PATCH 14/27] =?UTF-8?q?fix=20:=20=EA=B5=AC=EA=B0=84=20=EA=B4=80?= =?UTF-8?q?=EB=A6=AC=20=EA=B8=B0=EB=8A=A5=20=EC=B6=9C=EB=A0=A5=EA=B3=BC=20?= =?UTF-8?q?=EA=B8=B0=EB=8A=A5=20=EB=B6=84=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit repository에서는 출력을 하지않고 예외만 던지는 방식으로 수정 controller에서 예외를 받아 상황에 맞는 예외 처리 문구 출력 --- src/main/java/subway/Constant.java | 3 +-- .../java/subway/domain/SectionRepository.java | 22 +++++++++---------- .../java/subway/view/SectionController.java | 16 +++++++++----- 3 files changed, 21 insertions(+), 20 deletions(-) diff --git a/src/main/java/subway/Constant.java b/src/main/java/subway/Constant.java index 826b4ccf8..70f953567 100644 --- a/src/main/java/subway/Constant.java +++ b/src/main/java/subway/Constant.java @@ -28,6 +28,5 @@ public class Constant { public static final String DELETE_PREFIX = "\n## 삭제할"; public static final String NAME_POSTFIX = "이름을 입력해주세요."; public static final String LINE_STATION_POSTFIX = "종점역 이름을 입력하세요."; - public static final String NO_STATION_INFO = "등록되지 않은 역입니다.\n"; - public static final String NO_LINE_INFO = "등록되지 않은 노선입니다.\n"; + public static final String NO_EXIST_INFO = "등록되지 않은 역 또는 노선입니다.\n"; } diff --git a/src/main/java/subway/domain/SectionRepository.java b/src/main/java/subway/domain/SectionRepository.java index 44b5f84af..822c4fc7a 100644 --- a/src/main/java/subway/domain/SectionRepository.java +++ b/src/main/java/subway/domain/SectionRepository.java @@ -9,34 +9,32 @@ public class SectionRepository { private static StationRepository stationRepository = new StationRepository(); public static void addSection(String lineName, String stationName, int order) { - if (!lineRepository.checkExistLine(lineName)) { // 존재하지 않는 노선 - System.err.println(String.join(" ", Constant.ERROR_PREFIX, Constant.NO_LINE_INFO)); - return; - } else if (!stationRepository.checkExistStation(stationName)) { // 존재하지 않는 역 - System.err.println(String.join(" ", Constant.ERROR_PREFIX, Constant.NO_STATION_INFO)); - return; + if (!validate(lineName, stationName)) { // 존재하지 않는 노선 또는 역 + throw new IllegalArgumentException(); } try{ Line targetLine = lineRepository.lines.stream().filter(l -> lineName.equals(l.getName())).findFirst().get(); targetLine.stations.add(order, new Station(stationName)); }catch (IndexOutOfBoundsException e){ throw new IndexOutOfBoundsException(); -// System.out.println(String.join(" ", Constant.ERROR_PREFIX, "추가할 수 없는 구간입니다.")); -// return; } System.out.println(String.join(" ", Constant.INFO_PREFIX, Constant.ADD_LINE_SUCCESS)); } public static boolean deleteSection(String lineName, String stationName) { - if (!lineRepository.checkExistLine(lineName)) { // 존재하지 않는 노선 - System.err.println(String.join(" ", Constant.ERROR_PREFIX, Constant.NO_LINE_INFO)); - }else if(!stationRepository.checkExistStation(stationName)){ // 존재하지 않는 역 - System.err.println(String.join(" ", Constant.ERROR_PREFIX, Constant.NO_STATION_INFO)); + if (!validate(lineName, stationName)) { // 존재하지 않는 노선 또는 역 + throw new IllegalArgumentException(); } List stations = lineRepository.lines.stream().filter(l -> lineName.equals(l.getName())).findFirst().get().stations; return stations.removeIf(s -> Objects.equals(s.getName(), stationName)); } + static boolean validate(String lineName, String stationName){ + if (!lineRepository.checkExistLine(lineName) || !stationRepository.checkExistStation(stationName)) { // 존재하지 않는 노선 + return false; + } + return true; + } public static void printMap(){ for(int i=0; i Date: Tue, 15 Dec 2020 14:28:02 +0900 Subject: [PATCH 15/27] =?UTF-8?q?fix=20:=20=EC=97=AD=20=EA=B4=80=EB=A6=AC,?= =?UTF-8?q?=20=EB=85=B8=EC=84=A0=20=EA=B4=80=EB=A6=AC=20=EA=B8=B0=EB=8A=A5?= =?UTF-8?q?=20=EB=B6=84=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 동작만을 관리하는 클래스와 동작에 따른 결과를 받아 출력하는 클래스로 기능을 분리 --- src/main/java/subway/Constant.java | 1 + .../java/subway/domain/LineRepository.java | 21 +++++++------------ .../java/subway/domain/SectionRepository.java | 7 +++---- .../java/subway/domain/StationRepository.java | 4 +--- src/main/java/subway/view/LineController.java | 7 ++++++- .../java/subway/view/SectionController.java | 5 ++++- .../java/subway/view/StationController.java | 7 ++++++- 7 files changed, 28 insertions(+), 24 deletions(-) diff --git a/src/main/java/subway/Constant.java b/src/main/java/subway/Constant.java index 70f953567..b07f6ecf2 100644 --- a/src/main/java/subway/Constant.java +++ b/src/main/java/subway/Constant.java @@ -29,4 +29,5 @@ public class Constant { public static final String NAME_POSTFIX = "이름을 입력해주세요."; public static final String LINE_STATION_POSTFIX = "종점역 이름을 입력하세요."; public static final String NO_EXIST_INFO = "등록되지 않은 역 또는 노선입니다.\n"; + public static final String FAIL = "실패했습니다."; } diff --git a/src/main/java/subway/domain/LineRepository.java b/src/main/java/subway/domain/LineRepository.java index 1da8fd608..5aff58434 100644 --- a/src/main/java/subway/domain/LineRepository.java +++ b/src/main/java/subway/domain/LineRepository.java @@ -13,28 +13,21 @@ public static List lines() { } public static void addLine(String lineName, String upwardName, String downwardName) { - if (checkExistLine(lineName)) { - System.err.println(String.join(" ", Constant.ERROR_PREFIX, Constant.DUPLICATE_LINE_NAME)); - return; - } else if (!stationRepository.checkExistStation(upwardName) || !stationRepository.checkExistStation(downwardName)) { - System.err.println(String.join(" ", Constant.ERROR_PREFIX, Constant.NO_STATION_INFO)); - return; - } else if(upwardName.equals(downwardName)) { - System.err.println(String.join(" ", Constant.ERROR_PREFIX, "상행과 하행 종점은 같을 수 없습니다.")); - return; + if (checkExistLine(lineName) || !stationRepository.checkExistStation(upwardName) + || !stationRepository.checkExistStation(downwardName) || upwardName.equals(downwardName)) { + throw new IllegalArgumentException(); } Line line = new Line(lineName); line.stations.add(new Station(upwardName)); line.stations.add(new Station(downwardName)); lines.add(line); - System.out.println(String.join(" ", Constant.INFO_PREFIX, Constant.ADD_LINE_SUCCESS)); } - public static boolean deleteLineByName(String name) { - if (!checkExistLine(name)) { - System.err.println(String.join(" ", Constant.ERROR_PREFIX, Constant.NO_LINE_INFO)); + public static boolean deleteLineByName(String lineName) { + if (!checkExistLine(lineName)) { + throw new IllegalArgumentException(); } - return lines.removeIf(line -> Objects.equals(line.getName(), name)); + return lines.removeIf(line -> Objects.equals(line.getName(), lineName)); } public static void printLines() { diff --git a/src/main/java/subway/domain/SectionRepository.java b/src/main/java/subway/domain/SectionRepository.java index 822c4fc7a..c4ed6615a 100644 --- a/src/main/java/subway/domain/SectionRepository.java +++ b/src/main/java/subway/domain/SectionRepository.java @@ -9,7 +9,7 @@ public class SectionRepository { private static StationRepository stationRepository = new StationRepository(); public static void addSection(String lineName, String stationName, int order) { - if (!validate(lineName, stationName)) { // 존재하지 않는 노선 또는 역 + if (!validate(lineName, stationName)) { throw new IllegalArgumentException(); } try{ @@ -18,11 +18,10 @@ public static void addSection(String lineName, String stationName, int order) { }catch (IndexOutOfBoundsException e){ throw new IndexOutOfBoundsException(); } - System.out.println(String.join(" ", Constant.INFO_PREFIX, Constant.ADD_LINE_SUCCESS)); } public static boolean deleteSection(String lineName, String stationName) { - if (!validate(lineName, stationName)) { // 존재하지 않는 노선 또는 역 + if (!validate(lineName, stationName)) { throw new IllegalArgumentException(); } List stations = lineRepository.lines.stream().filter(l -> lineName.equals(l.getName())).findFirst().get().stations; @@ -30,7 +29,7 @@ public static boolean deleteSection(String lineName, String stationName) { } static boolean validate(String lineName, String stationName){ - if (!lineRepository.checkExistLine(lineName) || !stationRepository.checkExistStation(stationName)) { // 존재하지 않는 노선 + if (!lineRepository.checkExistLine(lineName) || !stationRepository.checkExistStation(stationName)) { return false; } return true; diff --git a/src/main/java/subway/domain/StationRepository.java b/src/main/java/subway/domain/StationRepository.java index c80bc151c..93561b81e 100644 --- a/src/main/java/subway/domain/StationRepository.java +++ b/src/main/java/subway/domain/StationRepository.java @@ -16,11 +16,9 @@ public static List stations() { public static void addStation(String stationName) { if (checkExistStation(stationName)) { - System.err.println(String.join(" ", Constant.ERROR_PREFIX, Constant.DUPLICATE_STATION_NAME)); - return; + throw new IllegalArgumentException(); } stations.add(new Station(stationName)); - System.out.println(String.join(" ", Constant.INFO_PREFIX, Constant.ADD_STATION_SUCCESS)); } public static boolean deleteStation(String name) { diff --git a/src/main/java/subway/view/LineController.java b/src/main/java/subway/view/LineController.java index dd1134812..1d453d34c 100644 --- a/src/main/java/subway/view/LineController.java +++ b/src/main/java/subway/view/LineController.java @@ -36,7 +36,12 @@ void addLine() { String upwardName = scanner.next(); System.out.println(String.join(" 노선의 하행 ", Constant.ADD_PREFIX, Constant.LINE_STATION_POSTFIX)); String downwardName = scanner.next(); - lineRepository.addLine(lineName, upwardName, downwardName); + try { + lineRepository.addLine(lineName, upwardName, downwardName); + System.out.println(String.join(" ", Constant.INFO_PREFIX, Constant.ADD_LINE_SUCCESS)); + }catch (IllegalArgumentException e){ + System.err.println(String.join(" ", Constant.ERROR_PREFIX, Constant.NO_EXIST_INFO)); + } } void deleteLine() { diff --git a/src/main/java/subway/view/SectionController.java b/src/main/java/subway/view/SectionController.java index c3a4a66a9..211724367 100644 --- a/src/main/java/subway/view/SectionController.java +++ b/src/main/java/subway/view/SectionController.java @@ -39,10 +39,11 @@ void addSection(){ String order = scanner.next(); try { sectionRepository.addSection(lineName, stationName, Integer.parseInt(order)); + System.out.println(String.join(" ", Constant.INFO_PREFIX, Constant.ADD_LINE_SUCCESS)); }catch(IllegalArgumentException e){ System.err.println(String.join(" ", Constant.ERROR_PREFIX, Constant.NO_EXIST_INFO)); }catch(IndexOutOfBoundsException e){ - System.out.println(String.join(" ", Constant.ERROR_PREFIX, "추가할 수 없는 구간입니다.")); + System.err.println(String.join(" ", Constant.ERROR_PREFIX, "추가할 수 없는 구간입니다.")); } } @@ -55,7 +56,9 @@ void deleteSection(){ boolean deleteFlag = sectionRepository.deleteSection(lineName, stationName); if (deleteFlag) { System.out.println(String.join(" ", Constant.INFO_PREFIX, Constant.DELETE_STATION_SUCCESS)); + return; } + System.err.println(String.join(" ", Constant.ERROR_PREFIX, Constant.FAIL)); }catch (IllegalArgumentException e){ System.err.println(String.join(" ", Constant.ERROR_PREFIX, Constant.NO_EXIST_INFO)); } diff --git a/src/main/java/subway/view/StationController.java b/src/main/java/subway/view/StationController.java index dd30b4505..c7adb8390 100644 --- a/src/main/java/subway/view/StationController.java +++ b/src/main/java/subway/view/StationController.java @@ -31,7 +31,12 @@ public void printSelection() { void addStation() { System.out.println(String.join(" 역 ", Constant.ADD_PREFIX, Constant.NAME_POSTFIX)); String stationName = scanner.next(); - stationRepository.addStation(stationName); + try { + stationRepository.addStation(stationName); + System.out.println(String.join(" ", Constant.INFO_PREFIX, Constant.ADD_STATION_SUCCESS)); + }catch (IllegalArgumentException e){ + System.err.println(String.join(" ", Constant.ERROR_PREFIX, Constant.DUPLICATE_STATION_NAME)); + } } void deleteStation() { From 58f773d89d4f24c35c2276340573315ffb8a3d4a Mon Sep 17 00:00:00 2001 From: yejin Date: Tue, 15 Dec 2020 19:15:55 +0900 Subject: [PATCH 16/27] =?UTF-8?q?docs=20:=20=EC=97=90=EB=9F=AC=20=EC=82=AC?= =?UTF-8?q?=ED=95=AD=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 1 + src/main/java/subway/Constant.java | 4 ++++ src/main/java/subway/view/SectionController.java | 4 ++-- 3 files changed, 7 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 06ca67cd4..f48416ffa 100644 --- a/README.md +++ b/README.md @@ -19,6 +19,7 @@ - 노선 등록 : 노선의 이름, 상행 종점역, 하행 종점역을 입력받아 노선을 등록한다. - 노선 삭제 : 현재 등록된 노선의 전체 목록을 출력한다. - 노선 조회 : 사용자에게 입력받은 노선을 삭제한다. + - [ERROR] 노선 등록 시 노선 이름이 2글자 이하이면 에러 사항을 출력한다. - [ERROR] 노선 등록 시 중복된 노선 이름이라면 에러 사항을 출력한다. - [ERROR] 노선 등록 시 상행 종점역, 하행 종점역으로 입력된 역이 등록되지 않은 역인 경우 에러 사항을 출력한다. - [ERROR] 노선 삭제 시 삭제해야 하는 노선이 존재하지 않는다면 에러 사항을 출력한다. diff --git a/src/main/java/subway/Constant.java b/src/main/java/subway/Constant.java index b07f6ecf2..30b81cc81 100644 --- a/src/main/java/subway/Constant.java +++ b/src/main/java/subway/Constant.java @@ -9,13 +9,16 @@ public class Constant { public static final String FORTH_COMMAND = "4"; public static final String QUIT_COMMAND = "Q"; public static final String BACK_COMMAND = "B"; + public static final String ERROR_PREFIX = "[ERROR]"; public static final String INFO_PREFIX = "[INFO]"; + public static final String MAIN_ANNOUNCEMENT = "\n## 메인 화면\n1. 역 관리\n2. 노선 관리\n3. 구간 관리\n4. 지하철 노선도 출력\nQ. 종료\n"; public static final String STATION_ANNOUNCEMENT = "\n## 역 관리 화면\n1. 역 등록\n2. 역 삭제\n3. 역 조회\nB. 돌아가기"; public static final String LINE_ANNOUNCEMENT = "\n## 노선 관리 화면\n1. 노선 등록\n2. 노선 삭제\n3. 노선 조회\nB. 돌아가기"; public static final String SECTION_ANNOUNCEMENT = "\n## 구간 관리 화면\n1. 구간 등록\n2. 구간 삭제\nB. 돌아가기\n"; public static final String INPUT_ANNOUNCEMENT = "## 원하는 기능을 선택하세요.\n"; + public static final String DUPLICATE_STATION_NAME = "이미 등록된 역 이름입니다.\n"; public static final String ADD_STATION_SUCCESS = "지하철 역이 등록되었습니다.\n"; public static final String DELETE_STATION_SUCCESS = "지하철 역이 삭제되었습니다.\n"; @@ -24,6 +27,7 @@ public class Constant { public static final String DELETE_LINE_SUCCESS = "지하철 노선이 삭제되었습니다.\n"; public static final String ADD_SECTION_SUCCESS = "구간이 등록되었습니다.\n"; public static final String DELETE_SECTION_SUCCESS = "구간이 삭제되었습니다.\n"; + public static final String ADD_PREFIX = "\n## 등록할"; public static final String DELETE_PREFIX = "\n## 삭제할"; public static final String NAME_POSTFIX = "이름을 입력해주세요."; diff --git a/src/main/java/subway/view/SectionController.java b/src/main/java/subway/view/SectionController.java index 211724367..831f4bdba 100644 --- a/src/main/java/subway/view/SectionController.java +++ b/src/main/java/subway/view/SectionController.java @@ -39,7 +39,7 @@ void addSection(){ String order = scanner.next(); try { sectionRepository.addSection(lineName, stationName, Integer.parseInt(order)); - System.out.println(String.join(" ", Constant.INFO_PREFIX, Constant.ADD_LINE_SUCCESS)); + System.out.println(String.join(" ", Constant.INFO_PREFIX, Constant.ADD_SECTION_SUCCESS)); }catch(IllegalArgumentException e){ System.err.println(String.join(" ", Constant.ERROR_PREFIX, Constant.NO_EXIST_INFO)); }catch(IndexOutOfBoundsException e){ @@ -55,7 +55,7 @@ void deleteSection(){ try { boolean deleteFlag = sectionRepository.deleteSection(lineName, stationName); if (deleteFlag) { - System.out.println(String.join(" ", Constant.INFO_PREFIX, Constant.DELETE_STATION_SUCCESS)); + System.out.println(String.join(" ", Constant.INFO_PREFIX, Constant.DELETE_SECTION_SUCCESS)); return; } System.err.println(String.join(" ", Constant.ERROR_PREFIX, Constant.FAIL)); From 6380741c8d499bd3aa8217349a43e81e4b32d59c Mon Sep 17 00:00:00 2001 From: yejin Date: Tue, 15 Dec 2020 19:29:34 +0900 Subject: [PATCH 17/27] =?UTF-8?q?fix=20:=20Constant=20=ED=81=B4=EB=9E=98?= =?UTF-8?q?=EC=8A=A4=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 공통적으로 쓰이는 변수만 남기고 각 클래스 안에 private으로 수정 --- src/main/java/subway/Constant.java | 10 +--------- src/main/java/subway/domain/Input.java | 2 ++ .../java/subway/domain/SectionRepository.java | 3 +++ src/main/java/subway/view/LineController.java | 7 +++++-- src/main/java/subway/view/SectionController.java | 16 ++++++++++++---- src/main/java/subway/view/StationController.java | 9 ++++++--- 6 files changed, 29 insertions(+), 18 deletions(-) diff --git a/src/main/java/subway/Constant.java b/src/main/java/subway/Constant.java index 30b81cc81..370ab75c3 100644 --- a/src/main/java/subway/Constant.java +++ b/src/main/java/subway/Constant.java @@ -18,15 +18,7 @@ public class Constant { public static final String LINE_ANNOUNCEMENT = "\n## 노선 관리 화면\n1. 노선 등록\n2. 노선 삭제\n3. 노선 조회\nB. 돌아가기"; public static final String SECTION_ANNOUNCEMENT = "\n## 구간 관리 화면\n1. 구간 등록\n2. 구간 삭제\nB. 돌아가기\n"; public static final String INPUT_ANNOUNCEMENT = "## 원하는 기능을 선택하세요.\n"; - - public static final String DUPLICATE_STATION_NAME = "이미 등록된 역 이름입니다.\n"; - public static final String ADD_STATION_SUCCESS = "지하철 역이 등록되었습니다.\n"; - public static final String DELETE_STATION_SUCCESS = "지하철 역이 삭제되었습니다.\n"; - public static final String DUPLICATE_LINE_NAME = "이미 등록된 노선 이름입니다.\n"; - public static final String ADD_LINE_SUCCESS = "지하철 노선이 등록되었습니다.\n"; - public static final String DELETE_LINE_SUCCESS = "지하철 노선이 삭제되었습니다.\n"; - public static final String ADD_SECTION_SUCCESS = "구간이 등록되었습니다.\n"; - public static final String DELETE_SECTION_SUCCESS = "구간이 삭제되었습니다.\n"; + public static final String INPUT_ERROR_ANNOUNCEMENT = "선택할 수 없는 기능입니다."; public static final String ADD_PREFIX = "\n## 등록할"; public static final String DELETE_PREFIX = "\n## 삭제할"; diff --git a/src/main/java/subway/domain/Input.java b/src/main/java/subway/domain/Input.java index 99b5d57d8..31bbee7c9 100644 --- a/src/main/java/subway/domain/Input.java +++ b/src/main/java/subway/domain/Input.java @@ -38,6 +38,8 @@ public void mainInput() { return; } else if (flag.equals(Constant.QUIT_COMMAND)) { quit = true; + return; } + System.err.println(String.join(" ", Constant.ERROR_PREFIX, Constant.INPUT_ERROR_ANNOUNCEMENT)); } } diff --git a/src/main/java/subway/domain/SectionRepository.java b/src/main/java/subway/domain/SectionRepository.java index c4ed6615a..8be10a5cf 100644 --- a/src/main/java/subway/domain/SectionRepository.java +++ b/src/main/java/subway/domain/SectionRepository.java @@ -36,6 +36,9 @@ static boolean validate(String lineName, String stationName){ } public static void printMap(){ + if(lineRepository.lines.size()==0){ + throw new IllegalStateException(); + } for(int i=0; i Date: Tue, 15 Dec 2020 19:41:07 +0900 Subject: [PATCH 18/27] =?UTF-8?q?fix=20:=20error=20=EC=B6=9C=EB=A0=A5=20?= =?UTF-8?q?=EB=82=B4=EC=9A=A9=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/subway/Constant.java | 4 ++-- src/main/java/subway/domain/LineRepository.java | 3 ++- src/main/java/subway/domain/StationRepository.java | 6 +++++- src/main/java/subway/view/LineController.java | 2 +- src/main/java/subway/view/StationController.java | 2 +- 5 files changed, 11 insertions(+), 6 deletions(-) diff --git a/src/main/java/subway/Constant.java b/src/main/java/subway/Constant.java index 370ab75c3..75719ffdf 100644 --- a/src/main/java/subway/Constant.java +++ b/src/main/java/subway/Constant.java @@ -19,11 +19,11 @@ public class Constant { public static final String SECTION_ANNOUNCEMENT = "\n## 구간 관리 화면\n1. 구간 등록\n2. 구간 삭제\nB. 돌아가기\n"; public static final String INPUT_ANNOUNCEMENT = "## 원하는 기능을 선택하세요.\n"; public static final String INPUT_ERROR_ANNOUNCEMENT = "선택할 수 없는 기능입니다."; + public static final String NO_EXIST_INFO = "등록되지 않은 역 또는 노선입니다.\n"; + public static final String LINE_STATION_POSTFIX = "종점역 이름을 입력하세요."; public static final String ADD_PREFIX = "\n## 등록할"; public static final String DELETE_PREFIX = "\n## 삭제할"; public static final String NAME_POSTFIX = "이름을 입력해주세요."; - public static final String LINE_STATION_POSTFIX = "종점역 이름을 입력하세요."; - public static final String NO_EXIST_INFO = "등록되지 않은 역 또는 노선입니다.\n"; public static final String FAIL = "실패했습니다."; } diff --git a/src/main/java/subway/domain/LineRepository.java b/src/main/java/subway/domain/LineRepository.java index 5aff58434..d8082b975 100644 --- a/src/main/java/subway/domain/LineRepository.java +++ b/src/main/java/subway/domain/LineRepository.java @@ -13,7 +13,7 @@ public static List lines() { } public static void addLine(String lineName, String upwardName, String downwardName) { - if (checkExistLine(lineName) || !stationRepository.checkExistStation(upwardName) + if (stationRepository.checkNameLength(lineName) || checkExistLine(lineName) || !stationRepository.checkExistStation(upwardName) || !stationRepository.checkExistStation(downwardName) || upwardName.equals(downwardName)) { throw new IllegalArgumentException(); } @@ -39,4 +39,5 @@ public static void printLines() { public static boolean checkExistLine(String lineName) { return lines.stream().anyMatch(o -> o.getName().equals(lineName)); } + } diff --git a/src/main/java/subway/domain/StationRepository.java b/src/main/java/subway/domain/StationRepository.java index 93561b81e..809662533 100644 --- a/src/main/java/subway/domain/StationRepository.java +++ b/src/main/java/subway/domain/StationRepository.java @@ -15,7 +15,7 @@ public static List stations() { } public static void addStation(String stationName) { - if (checkExistStation(stationName)) { + if (checkNameLength(stationName) || checkExistStation(stationName)) { throw new IllegalArgumentException(); } stations.add(new Station(stationName)); @@ -34,4 +34,8 @@ public static void printStations() { public static boolean checkExistStation(String stationName) { return stations.stream().anyMatch(o -> o.getName().equals(stationName)); } + + public static boolean checkNameLength(String name) { + return name.length() <= 2; + } } diff --git a/src/main/java/subway/view/LineController.java b/src/main/java/subway/view/LineController.java index 359b5ef40..8ec9a435c 100644 --- a/src/main/java/subway/view/LineController.java +++ b/src/main/java/subway/view/LineController.java @@ -43,7 +43,7 @@ void addLine() { lineRepository.addLine(lineName, upwardName, downwardName); System.out.println(String.join(" ", Constant.INFO_PREFIX, ADD_LINE_SUCCESS)); }catch (IllegalArgumentException e){ - System.err.println(String.join(" ", Constant.ERROR_PREFIX, Constant.NO_EXIST_INFO)); + System.err.println(String.join(" ", Constant.ERROR_PREFIX, Constant.FAIL)); } } diff --git a/src/main/java/subway/view/StationController.java b/src/main/java/subway/view/StationController.java index ecb5fd342..7f10675dc 100644 --- a/src/main/java/subway/view/StationController.java +++ b/src/main/java/subway/view/StationController.java @@ -38,7 +38,7 @@ void addStation() { stationRepository.addStation(stationName); System.out.println(String.join(" ", Constant.INFO_PREFIX, ADD_STATION_SUCCESS)); }catch (IllegalArgumentException e){ - System.err.println(String.join(" ", Constant.ERROR_PREFIX, DUPLICATE_STATION_NAME)); + System.err.println(String.join(" ", Constant.ERROR_PREFIX, Constant.FAIL)); } } From 2835ce17d294faab91a094a3953eec2a79de3536 Mon Sep 17 00:00:00 2001 From: yejin Date: Tue, 15 Dec 2020 20:18:56 +0900 Subject: [PATCH 19/27] =?UTF-8?q?fix=20:=20=EC=9D=B4=EB=A6=84=20=EA=B8=B8?= =?UTF-8?q?=EC=9D=B4=20=EC=98=88=EC=99=B8=20=EC=B2=98=EB=A6=AC=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 이름이 2글자 이하로 입력됐을시 에러 처리 2를 Constant 변수로 사용 --- src/main/java/subway/Constant.java | 5 +++-- src/main/java/subway/domain/LineRepository.java | 5 ++++- src/main/java/subway/domain/SectionRepository.java | 3 +++ src/main/java/subway/domain/StationRepository.java | 7 +++++-- src/main/java/subway/view/LineController.java | 4 ++++ src/main/java/subway/view/SectionController.java | 2 ++ src/main/java/subway/view/StationController.java | 5 ++++- 7 files changed, 25 insertions(+), 6 deletions(-) diff --git a/src/main/java/subway/Constant.java b/src/main/java/subway/Constant.java index 75719ffdf..55b139b12 100644 --- a/src/main/java/subway/Constant.java +++ b/src/main/java/subway/Constant.java @@ -1,8 +1,7 @@ package subway; public class Constant { - public static final int MIN_STATION_NAME_LENGTH = 2; - public static final int MIN_LINE_LENGTH = 2; + public static final int MIN_NAME_LENGTH = 2; public static final String FIRST_COMMAND = "1"; public static final String SECOND_COMMAND = "2"; public static final String THIRD_COMMAND = "3"; @@ -21,9 +20,11 @@ public class Constant { public static final String INPUT_ERROR_ANNOUNCEMENT = "선택할 수 없는 기능입니다."; public static final String NO_EXIST_INFO = "등록되지 않은 역 또는 노선입니다.\n"; public static final String LINE_STATION_POSTFIX = "종점역 이름을 입력하세요."; + public static final String DUPLICATE_STATION_NAME = "이미 등록된 역입니다.\n"; public static final String ADD_PREFIX = "\n## 등록할"; public static final String DELETE_PREFIX = "\n## 삭제할"; public static final String NAME_POSTFIX = "이름을 입력해주세요."; public static final String FAIL = "실패했습니다."; + public static final String NAME_LENGTH_SHORT = "이름은 2글자 이상이어야 합니다."; } diff --git a/src/main/java/subway/domain/LineRepository.java b/src/main/java/subway/domain/LineRepository.java index d8082b975..77172aedf 100644 --- a/src/main/java/subway/domain/LineRepository.java +++ b/src/main/java/subway/domain/LineRepository.java @@ -13,7 +13,10 @@ public static List lines() { } public static void addLine(String lineName, String upwardName, String downwardName) { - if (stationRepository.checkNameLength(lineName) || checkExistLine(lineName) || !stationRepository.checkExistStation(upwardName) + if (stationRepository.checkNameLength(lineName)){ + throw new IllegalStateException(); + } + if(checkExistLine(lineName) || !stationRepository.checkExistStation(upwardName) || !stationRepository.checkExistStation(downwardName) || upwardName.equals(downwardName)) { throw new IllegalArgumentException(); } diff --git a/src/main/java/subway/domain/SectionRepository.java b/src/main/java/subway/domain/SectionRepository.java index 8be10a5cf..5a79cb38a 100644 --- a/src/main/java/subway/domain/SectionRepository.java +++ b/src/main/java/subway/domain/SectionRepository.java @@ -14,6 +14,9 @@ public static void addSection(String lineName, String stationName, int order) { } try{ Line targetLine = lineRepository.lines.stream().filter(l -> lineName.equals(l.getName())).findFirst().get(); + if(targetLine.stations.stream().noneMatch(s -> s.getName().equals(stationName))){ + throw new IllegalStateException(); + } targetLine.stations.add(order, new Station(stationName)); }catch (IndexOutOfBoundsException e){ throw new IndexOutOfBoundsException(); diff --git a/src/main/java/subway/domain/StationRepository.java b/src/main/java/subway/domain/StationRepository.java index 809662533..ed30e1118 100644 --- a/src/main/java/subway/domain/StationRepository.java +++ b/src/main/java/subway/domain/StationRepository.java @@ -15,7 +15,10 @@ public static List stations() { } public static void addStation(String stationName) { - if (checkNameLength(stationName) || checkExistStation(stationName)) { + if (checkNameLength(stationName)){ + throw new IllegalStateException(); + } + if(checkExistStation(stationName)) { throw new IllegalArgumentException(); } stations.add(new Station(stationName)); @@ -36,6 +39,6 @@ public static boolean checkExistStation(String stationName) { } public static boolean checkNameLength(String name) { - return name.length() <= 2; + return name.length() <= Constant.MIN_NAME_LENGTH; } } diff --git a/src/main/java/subway/view/LineController.java b/src/main/java/subway/view/LineController.java index 8ec9a435c..68cc2732f 100644 --- a/src/main/java/subway/view/LineController.java +++ b/src/main/java/subway/view/LineController.java @@ -44,6 +44,8 @@ void addLine() { System.out.println(String.join(" ", Constant.INFO_PREFIX, ADD_LINE_SUCCESS)); }catch (IllegalArgumentException e){ System.err.println(String.join(" ", Constant.ERROR_PREFIX, Constant.FAIL)); + }catch (IllegalStateException e){ + System.err.println(String.join(" ", Constant.ERROR_PREFIX, Constant.NAME_LENGTH_SHORT)); } } @@ -53,7 +55,9 @@ void deleteLine() { boolean deleteFlag = lineRepository.deleteLineByName(lineName); if (deleteFlag) { System.out.println(String.join(" ", Constant.INFO_PREFIX, DELETE_LINE_SUCCESS)); + return; } + System.out.println(String.join(" ", Constant.ERROR_PREFIX, Constant.FAIL)); } void readLines() { diff --git a/src/main/java/subway/view/SectionController.java b/src/main/java/subway/view/SectionController.java index 05e8badb6..4fb539535 100644 --- a/src/main/java/subway/view/SectionController.java +++ b/src/main/java/subway/view/SectionController.java @@ -48,6 +48,8 @@ void addSection(){ System.err.println(String.join(" ", Constant.ERROR_PREFIX, Constant.NO_EXIST_INFO)); }catch(IndexOutOfBoundsException e){ System.err.println(String.join(" ", Constant.ERROR_PREFIX, NOT_POSSIBLE_SECTION)); + }catch (IllegalStateException e){ + System.err.println(String.join(" ", Constant.ERROR_PREFIX, Constant.DUPLICATE_STATION_NAME)); } } diff --git a/src/main/java/subway/view/StationController.java b/src/main/java/subway/view/StationController.java index 7f10675dc..56ea33ea2 100644 --- a/src/main/java/subway/view/StationController.java +++ b/src/main/java/subway/view/StationController.java @@ -7,7 +7,6 @@ import java.util.Scanner; public class StationController { - private static final String DUPLICATE_STATION_NAME = "이미 등록된 역 이름입니다.\n"; private static final String ADD_STATION_SUCCESS = "지하철 역이 등록되었습니다.\n"; private static final String DELETE_STATION_SUCCESS = "지하철 역이 삭제되었습니다.\n"; Scanner scanner; @@ -39,6 +38,8 @@ void addStation() { System.out.println(String.join(" ", Constant.INFO_PREFIX, ADD_STATION_SUCCESS)); }catch (IllegalArgumentException e){ System.err.println(String.join(" ", Constant.ERROR_PREFIX, Constant.FAIL)); + }catch(IllegalStateException e){ + System.err.println(String.join(" ", Constant.ERROR_PREFIX, Constant.NAME_LENGTH_SHORT)); } } @@ -48,7 +49,9 @@ void deleteStation() { boolean deleteFlag = stationRepository.deleteStation(stationName); if (deleteFlag) { System.out.println(String.join(" ", Constant.INFO_PREFIX, DELETE_STATION_SUCCESS)); + return; } + System.out.println(String.join(" ", Constant.ERROR_PREFIX, Constant.FAIL)); } void readStations() { From c0a3ca2c40d747e57adf8738f44cdf96d608eecf Mon Sep 17 00:00:00 2001 From: yejin Date: Tue, 15 Dec 2020 20:24:27 +0900 Subject: [PATCH 20/27] =?UTF-8?q?fix=20:=20=EC=97=AD=EC=9D=B4=202=EA=B0=9C?= =?UTF-8?q?=20=EC=9D=B4=ED=95=98=EC=9D=B8=20=EA=B5=AC=EA=B0=84=EC=9D=80=20?= =?UTF-8?q?=EC=82=AD=EC=A0=9C=ED=95=A0=20=EC=88=98=20=EC=97=86=EB=8F=84?= =?UTF-8?q?=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 --- src/main/java/subway/domain/SectionRepository.java | 3 +++ src/main/java/subway/view/SectionController.java | 7 +++++-- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/src/main/java/subway/domain/SectionRepository.java b/src/main/java/subway/domain/SectionRepository.java index 5a79cb38a..787f6346a 100644 --- a/src/main/java/subway/domain/SectionRepository.java +++ b/src/main/java/subway/domain/SectionRepository.java @@ -28,6 +28,9 @@ public static boolean deleteSection(String lineName, String stationName) { throw new IllegalArgumentException(); } List stations = lineRepository.lines.stream().filter(l -> lineName.equals(l.getName())).findFirst().get().stations; + if(stations.size()<=Constant.MIN_NAME_LENGTH){ + throw new IllegalStateException(); + } return stations.removeIf(s -> Objects.equals(s.getName(), stationName)); } diff --git a/src/main/java/subway/view/SectionController.java b/src/main/java/subway/view/SectionController.java index 4fb539535..d719fdfa7 100644 --- a/src/main/java/subway/view/SectionController.java +++ b/src/main/java/subway/view/SectionController.java @@ -16,7 +16,8 @@ public class SectionController { private static final String NO_SECTION_INFO = "등록된 노선이 없습니다."; private static final String ADD_SECTION_SUCCESS = "구간이 등록되었습니다.\n"; private static final String DELETE_SECTION_SUCCESS = "구간이 삭제되었습니다.\n"; - private static final String NOT_POSSIBLE_SECTION = "추가할 수 없는 구간입니다."; + private static final String NOT_ADD_POSSIBLE_SECTION = "추가할 수 없는 구간입니다."; + private static final String NOT_DELETE_POSSIBLE_SECTION = "삭제할 수 없는 구간입니다."; public SectionController(Scanner scanner) { this.scanner = scanner; @@ -47,7 +48,7 @@ void addSection(){ }catch(IllegalArgumentException e){ System.err.println(String.join(" ", Constant.ERROR_PREFIX, Constant.NO_EXIST_INFO)); }catch(IndexOutOfBoundsException e){ - System.err.println(String.join(" ", Constant.ERROR_PREFIX, NOT_POSSIBLE_SECTION)); + System.err.println(String.join(" ", Constant.ERROR_PREFIX, NOT_ADD_POSSIBLE_SECTION)); }catch (IllegalStateException e){ System.err.println(String.join(" ", Constant.ERROR_PREFIX, Constant.DUPLICATE_STATION_NAME)); } @@ -67,6 +68,8 @@ void deleteSection(){ System.err.println(String.join(" ", Constant.ERROR_PREFIX, Constant.FAIL)); }catch (IllegalArgumentException e){ System.err.println(String.join(" ", Constant.ERROR_PREFIX, Constant.NO_EXIST_INFO)); + }catch (IllegalStateException e){ + System.err.println(String.join(" ", Constant.ERROR_PREFIX, NOT_DELETE_POSSIBLE_SECTION)); } } From e305ecb93793b7530d21f878fea510aa8ab6327e Mon Sep 17 00:00:00 2001 From: yejin Date: Tue, 15 Dec 2020 20:37:11 +0900 Subject: [PATCH 21/27] =?UTF-8?q?fix=20:=20line=20=ED=81=B4=EB=9E=98?= =?UTF-8?q?=EC=8A=A4=EC=97=90=EC=84=9C=20stations=20=EC=A0=95=EB=B3=B4?= =?UTF-8?q?=EB=A5=BC=20=EA=B4=80=EB=A6=AC=ED=95=98=EB=8F=84=EB=A1=9D=20?= =?UTF-8?q?=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 | 2 +- src/main/java/subway/domain/Input.java | 12 ++++++++---- src/main/java/subway/domain/Line.java | 14 +++++++++++++- src/main/java/subway/domain/SectionRepository.java | 10 +++++----- src/main/java/subway/domain/StationRepository.java | 2 +- 5 files changed, 28 insertions(+), 12 deletions(-) diff --git a/src/main/java/subway/Constant.java b/src/main/java/subway/Constant.java index 55b139b12..49e21f29a 100644 --- a/src/main/java/subway/Constant.java +++ b/src/main/java/subway/Constant.java @@ -1,7 +1,7 @@ package subway; public class Constant { - public static final int MIN_NAME_LENGTH = 2; + public static final int MIN_LENGTH = 2; public static final String FIRST_COMMAND = "1"; public static final String SECOND_COMMAND = "2"; public static final String THIRD_COMMAND = "3"; diff --git a/src/main/java/subway/domain/Input.java b/src/main/java/subway/domain/Input.java index 31bbee7c9..6c733fb47 100644 --- a/src/main/java/subway/domain/Input.java +++ b/src/main/java/subway/domain/Input.java @@ -27,16 +27,20 @@ public void mainInput() { if (flag.equals(Constant.FIRST_COMMAND)) { stationController.printSelection(); return; - } else if (flag.equals(Constant.SECOND_COMMAND)) { + } + if (flag.equals(Constant.SECOND_COMMAND)) { lineController.printSelection(); return; - } else if (flag.equals(Constant.THIRD_COMMAND)) { + } + if (flag.equals(Constant.THIRD_COMMAND)) { sectionController.printSelection(); return; - } else if(flag.equals(Constant.FORTH_COMMAND)){ + } + if(flag.equals(Constant.FORTH_COMMAND)){ sectionController.readSections(); return; - } else if (flag.equals(Constant.QUIT_COMMAND)) { + } + if (flag.equals(Constant.QUIT_COMMAND)) { quit = true; return; } diff --git a/src/main/java/subway/domain/Line.java b/src/main/java/subway/domain/Line.java index 96a0a7121..8713eba57 100644 --- a/src/main/java/subway/domain/Line.java +++ b/src/main/java/subway/domain/Line.java @@ -1,5 +1,7 @@ package subway.domain; +import subway.Constant; + import java.util.ArrayList; import java.util.List; @@ -15,5 +17,15 @@ public String getName() { return name; } - // 추가 기능 구현 + public boolean existStation(String stationName){ + return stations.stream().noneMatch(s -> s.getName().equals(stationName)); + } + + public void addStation(String stationName, int order){ + stations.add(order, new Station(stationName)); + } + + public boolean checkStationSize(){ + return stations.size()<= Constant.MIN_LENGTH; + } } diff --git a/src/main/java/subway/domain/SectionRepository.java b/src/main/java/subway/domain/SectionRepository.java index 787f6346a..73a1c9df7 100644 --- a/src/main/java/subway/domain/SectionRepository.java +++ b/src/main/java/subway/domain/SectionRepository.java @@ -14,10 +14,10 @@ public static void addSection(String lineName, String stationName, int order) { } try{ Line targetLine = lineRepository.lines.stream().filter(l -> lineName.equals(l.getName())).findFirst().get(); - if(targetLine.stations.stream().noneMatch(s -> s.getName().equals(stationName))){ + if(targetLine.existStation(stationName)){ throw new IllegalStateException(); } - targetLine.stations.add(order, new Station(stationName)); + targetLine.addStation(stationName, order); }catch (IndexOutOfBoundsException e){ throw new IndexOutOfBoundsException(); } @@ -27,11 +27,11 @@ public static boolean deleteSection(String lineName, String stationName) { if (!validate(lineName, stationName)) { throw new IllegalArgumentException(); } - List stations = lineRepository.lines.stream().filter(l -> lineName.equals(l.getName())).findFirst().get().stations; - if(stations.size()<=Constant.MIN_NAME_LENGTH){ + Line line = lineRepository.lines.stream().filter(l -> lineName.equals(l.getName())).findFirst().get(); + if(line.checkStationSize()){ throw new IllegalStateException(); } - return stations.removeIf(s -> Objects.equals(s.getName(), stationName)); + return line.stations.removeIf(s -> Objects.equals(s.getName(), stationName)); } static boolean validate(String lineName, String stationName){ diff --git a/src/main/java/subway/domain/StationRepository.java b/src/main/java/subway/domain/StationRepository.java index ed30e1118..306b70ca2 100644 --- a/src/main/java/subway/domain/StationRepository.java +++ b/src/main/java/subway/domain/StationRepository.java @@ -39,6 +39,6 @@ public static boolean checkExistStation(String stationName) { } public static boolean checkNameLength(String name) { - return name.length() <= Constant.MIN_NAME_LENGTH; + return name.length() <= Constant.MIN_LENGTH; } } From 0919fbff447c96dbe87d712e44fc51aea85bac07 Mon Sep 17 00:00:00 2001 From: yejin Date: Tue, 15 Dec 2020 20:47:27 +0900 Subject: [PATCH 22/27] =?UTF-8?q?fix=20:=20line=20=EC=A0=95=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/subway/domain/Input.java | 2 +- src/main/java/subway/domain/Line.java | 8 +++--- .../java/subway/domain/LineRepository.java | 4 +-- .../java/subway/domain/SectionRepository.java | 20 +++++++------- src/main/java/subway/domain/Station.java | 1 - .../java/subway/domain/StationRepository.java | 4 +-- src/main/java/subway/view/LineController.java | 8 +++--- .../java/subway/view/SectionController.java | 26 +++++++++++-------- .../java/subway/view/StationController.java | 4 +-- 9 files changed, 39 insertions(+), 38 deletions(-) diff --git a/src/main/java/subway/domain/Input.java b/src/main/java/subway/domain/Input.java index 6c733fb47..e8ffdcbd4 100644 --- a/src/main/java/subway/domain/Input.java +++ b/src/main/java/subway/domain/Input.java @@ -36,7 +36,7 @@ public void mainInput() { sectionController.printSelection(); return; } - if(flag.equals(Constant.FORTH_COMMAND)){ + if (flag.equals(Constant.FORTH_COMMAND)) { sectionController.readSections(); return; } diff --git a/src/main/java/subway/domain/Line.java b/src/main/java/subway/domain/Line.java index 8713eba57..d2af961d0 100644 --- a/src/main/java/subway/domain/Line.java +++ b/src/main/java/subway/domain/Line.java @@ -17,15 +17,15 @@ public String getName() { return name; } - public boolean existStation(String stationName){ + public boolean existStation(String stationName) { return stations.stream().noneMatch(s -> s.getName().equals(stationName)); } - public void addStation(String stationName, int order){ + public void addStation(String stationName, int order) { stations.add(order, new Station(stationName)); } - public boolean checkStationSize(){ - return stations.size()<= Constant.MIN_LENGTH; + public boolean checkStationSize() { + return stations.size() <= Constant.MIN_LENGTH; } } diff --git a/src/main/java/subway/domain/LineRepository.java b/src/main/java/subway/domain/LineRepository.java index 77172aedf..a06bdd92f 100644 --- a/src/main/java/subway/domain/LineRepository.java +++ b/src/main/java/subway/domain/LineRepository.java @@ -13,10 +13,10 @@ public static List lines() { } public static void addLine(String lineName, String upwardName, String downwardName) { - if (stationRepository.checkNameLength(lineName)){ + if (stationRepository.checkNameLength(lineName)) { throw new IllegalStateException(); } - if(checkExistLine(lineName) || !stationRepository.checkExistStation(upwardName) + if (checkExistLine(lineName) || !stationRepository.checkExistStation(upwardName) || !stationRepository.checkExistStation(downwardName) || upwardName.equals(downwardName)) { throw new IllegalArgumentException(); } diff --git a/src/main/java/subway/domain/SectionRepository.java b/src/main/java/subway/domain/SectionRepository.java index 73a1c9df7..bb4af0eaa 100644 --- a/src/main/java/subway/domain/SectionRepository.java +++ b/src/main/java/subway/domain/SectionRepository.java @@ -12,13 +12,13 @@ public static void addSection(String lineName, String stationName, int order) { if (!validate(lineName, stationName)) { throw new IllegalArgumentException(); } - try{ + try { Line targetLine = lineRepository.lines.stream().filter(l -> lineName.equals(l.getName())).findFirst().get(); - if(targetLine.existStation(stationName)){ + if (targetLine.existStation(stationName)) { throw new IllegalStateException(); } targetLine.addStation(stationName, order); - }catch (IndexOutOfBoundsException e){ + } catch (IndexOutOfBoundsException e) { throw new IndexOutOfBoundsException(); } } @@ -28,27 +28,27 @@ public static boolean deleteSection(String lineName, String stationName) { throw new IllegalArgumentException(); } Line line = lineRepository.lines.stream().filter(l -> lineName.equals(l.getName())).findFirst().get(); - if(line.checkStationSize()){ + if (line.checkStationSize()) { throw new IllegalStateException(); } return line.stations.removeIf(s -> Objects.equals(s.getName(), stationName)); } - static boolean validate(String lineName, String stationName){ + static boolean validate(String lineName, String stationName) { if (!lineRepository.checkExistLine(lineName) || !stationRepository.checkExistStation(stationName)) { return false; } return true; } - public static void printMap(){ - if(lineRepository.lines.size()==0){ + public static void printMap() { + if (lineRepository.lines.size() == 0) { throw new IllegalStateException(); } - for(int i=0; i stations() { } public static void addStation(String stationName) { - if (checkNameLength(stationName)){ + if (checkNameLength(stationName)) { throw new IllegalStateException(); } - if(checkExistStation(stationName)) { + if (checkExistStation(stationName)) { throw new IllegalArgumentException(); } stations.add(new Station(stationName)); diff --git a/src/main/java/subway/view/LineController.java b/src/main/java/subway/view/LineController.java index 68cc2732f..9cfb0839a 100644 --- a/src/main/java/subway/view/LineController.java +++ b/src/main/java/subway/view/LineController.java @@ -8,7 +8,6 @@ import java.util.Scanner; public class LineController { - private static final String DUPLICATE_LINE_NAME = "이미 등록된 노선 이름입니다.\n"; private static final String ADD_LINE_SUCCESS = "지하철 노선이 등록되었습니다.\n"; private static final String DELETE_LINE_SUCCESS = "지하철 노선이 삭제되었습니다.\n"; Scanner scanner; @@ -42,9 +41,9 @@ void addLine() { try { lineRepository.addLine(lineName, upwardName, downwardName); System.out.println(String.join(" ", Constant.INFO_PREFIX, ADD_LINE_SUCCESS)); - }catch (IllegalArgumentException e){ + } catch (IllegalArgumentException e) { System.err.println(String.join(" ", Constant.ERROR_PREFIX, Constant.FAIL)); - }catch (IllegalStateException e){ + } catch (IllegalStateException e) { System.err.println(String.join(" ", Constant.ERROR_PREFIX, Constant.NAME_LENGTH_SHORT)); } } @@ -52,8 +51,7 @@ void addLine() { void deleteLine() { System.out.println(String.join(" 노선 ", Constant.DELETE_PREFIX, Constant.NAME_POSTFIX)); String lineName = scanner.next(); - boolean deleteFlag = lineRepository.deleteLineByName(lineName); - if (deleteFlag) { + if (lineRepository.deleteLineByName(lineName)) { System.out.println(String.join(" ", Constant.INFO_PREFIX, DELETE_LINE_SUCCESS)); return; } diff --git a/src/main/java/subway/view/SectionController.java b/src/main/java/subway/view/SectionController.java index d719fdfa7..2ca61cc81 100644 --- a/src/main/java/subway/view/SectionController.java +++ b/src/main/java/subway/view/SectionController.java @@ -6,8 +6,6 @@ import java.util.Scanner; public class SectionController { - Scanner scanner; - SectionRepository sectionRepository = new SectionRepository(); private static final String GET_LINE_NAME = "\n## 노선을 입력하세요."; private static final String GET_STATION_NAME = "\n## 역 이름을 입력하세요."; private static final String GET_ORDER_NAME = "\n## 순서를 입력하세요."; @@ -18,6 +16,9 @@ public class SectionController { private static final String DELETE_SECTION_SUCCESS = "구간이 삭제되었습니다.\n"; private static final String NOT_ADD_POSSIBLE_SECTION = "추가할 수 없는 구간입니다."; private static final String NOT_DELETE_POSSIBLE_SECTION = "삭제할 수 없는 구간입니다."; + private static final String NOT_NUMBER_FORMAT = "순서에는 숫자만 입력 가능합니다."; + Scanner scanner; + SectionRepository sectionRepository = new SectionRepository(); public SectionController(Scanner scanner) { this.scanner = scanner; @@ -35,7 +36,7 @@ public void printSelection() { } } - void addSection(){ + void addSection() { System.out.println(GET_LINE_NAME); String lineName = scanner.next(); System.out.println(GET_STATION_NAME); @@ -43,18 +44,21 @@ void addSection(){ System.out.println(GET_ORDER_NAME); String order = scanner.next(); try { - sectionRepository.addSection(lineName, stationName, Integer.parseInt(order)); + int orderNum = Integer.parseInt(order); + sectionRepository.addSection(lineName, stationName, orderNum); System.out.println(String.join(" ", Constant.INFO_PREFIX, ADD_SECTION_SUCCESS)); - }catch(IllegalArgumentException e){ + } catch (NumberFormatException e) { + System.err.println(String.join(" ", Constant.ERROR_PREFIX, NOT_NUMBER_FORMAT)); + } catch (IllegalArgumentException e) { System.err.println(String.join(" ", Constant.ERROR_PREFIX, Constant.NO_EXIST_INFO)); - }catch(IndexOutOfBoundsException e){ + } catch (IndexOutOfBoundsException e) { System.err.println(String.join(" ", Constant.ERROR_PREFIX, NOT_ADD_POSSIBLE_SECTION)); - }catch (IllegalStateException e){ + } catch (IllegalStateException e) { System.err.println(String.join(" ", Constant.ERROR_PREFIX, Constant.DUPLICATE_STATION_NAME)); } } - void deleteSection(){ + void deleteSection() { System.out.println(GET_DELETE_LINE_NAME); String lineName = scanner.next(); System.out.println(GET_DELETE_STATION_NAME); @@ -66,9 +70,9 @@ void deleteSection(){ return; } System.err.println(String.join(" ", Constant.ERROR_PREFIX, Constant.FAIL)); - }catch (IllegalArgumentException e){ + } catch (IllegalArgumentException e) { System.err.println(String.join(" ", Constant.ERROR_PREFIX, Constant.NO_EXIST_INFO)); - }catch (IllegalStateException e){ + } catch (IllegalStateException e) { System.err.println(String.join(" ", Constant.ERROR_PREFIX, NOT_DELETE_POSSIBLE_SECTION)); } @@ -77,7 +81,7 @@ void deleteSection(){ public void readSections() { try { sectionRepository.printMap(); - }catch (IllegalStateException e){ + } catch (IllegalStateException e) { System.err.println(String.join(" ", Constant.ERROR_PREFIX, NO_SECTION_INFO)); } } diff --git a/src/main/java/subway/view/StationController.java b/src/main/java/subway/view/StationController.java index 56ea33ea2..ab1e11c1a 100644 --- a/src/main/java/subway/view/StationController.java +++ b/src/main/java/subway/view/StationController.java @@ -36,9 +36,9 @@ void addStation() { try { stationRepository.addStation(stationName); System.out.println(String.join(" ", Constant.INFO_PREFIX, ADD_STATION_SUCCESS)); - }catch (IllegalArgumentException e){ + } catch (IllegalArgumentException e) { System.err.println(String.join(" ", Constant.ERROR_PREFIX, Constant.FAIL)); - }catch(IllegalStateException e){ + } catch (IllegalStateException e) { System.err.println(String.join(" ", Constant.ERROR_PREFIX, Constant.NAME_LENGTH_SHORT)); } } From f1fd68ea4fb1c3f6419b6dcbe6c56b7c6226389a Mon Sep 17 00:00:00 2001 From: yejin Date: Tue, 15 Dec 2020 22:17:30 +0900 Subject: [PATCH 23/27] =?UTF-8?q?feat=20:=20=EC=B4=88=EA=B8=B0=20=EB=85=B8?= =?UTF-8?q?=EC=84=A0,=20=EC=97=AD=20=EC=84=B8=ED=8C=85=20=EC=9E=91?= =?UTF-8?q?=EC=97=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/subway/Application.java | 21 +++++++++++++++++-- src/main/java/subway/domain/Line.java | 11 ++++++++-- .../java/subway/domain/LineRepository.java | 10 ++++----- .../java/subway/domain/SectionRepository.java | 6 ++++-- .../java/subway/domain/StationRepository.java | 20 ++++++++---------- src/main/java/subway/view/LineController.java | 4 +++- .../java/subway/view/StationController.java | 6 ++++-- 7 files changed, 52 insertions(+), 26 deletions(-) diff --git a/src/main/java/subway/Application.java b/src/main/java/subway/Application.java index eccdf2559..f694ca9b7 100644 --- a/src/main/java/subway/Application.java +++ b/src/main/java/subway/Application.java @@ -1,19 +1,36 @@ package subway; -import subway.domain.Input; +import subway.domain.*; +import java.util.ArrayList; +import java.util.Arrays; import java.util.Scanner; public class Application { public static void main(String[] args) { final Scanner scanner = new Scanner(System.in); + initialSetting(); Input input = new Input(scanner); while(!input.quit){ input.mainInput(); } } - void initialSetting() { + static void initialSetting() { + StationRepository stationRepository = new StationRepository(); + LineRepository lineRepository = new LineRepository(); + Station station1 = new Station("교대역"); + Station station2 = new Station("강남역"); + Station station3 = new Station("역삼역"); + Station station4 = new Station("남부터미널역"); + Station station5 = new Station("양재역"); + Station station6 = new Station("양재시민의숲역"); + Station station7 = new Station("매봉역"); + stationRepository.addStations(Arrays.asList(station1, station2, station3, station4, station5, station6, station7)); + Line line1 = new Line("2호선", station1, station2, station3); + Line line2 = new Line("3호선", station1, station4, station5, station7); + Line line3 = new Line("신분당선", station2, station5, station6); + lineRepository.addLines(Arrays.asList(line1, line2, line3)); } } diff --git a/src/main/java/subway/domain/Line.java b/src/main/java/subway/domain/Line.java index d2af961d0..1a35f52a0 100644 --- a/src/main/java/subway/domain/Line.java +++ b/src/main/java/subway/domain/Line.java @@ -13,16 +13,23 @@ public Line(String name) { this.name = name; } + public Line(String name, Station... stations) { + this.name = name; + for(int i=0; i< stations.length; i++){ + this.stations.add(stations[i]); + } + } + public String getName() { return name; } public boolean existStation(String stationName) { - return stations.stream().noneMatch(s -> s.getName().equals(stationName)); + return stations.stream().anyMatch(s -> s.getName().equals(stationName)); } public void addStation(String stationName, int order) { - stations.add(order, new Station(stationName)); + stations.add(order-1, new Station(stationName)); } public boolean checkStationSize() { diff --git a/src/main/java/subway/domain/LineRepository.java b/src/main/java/subway/domain/LineRepository.java index a06bdd92f..b0a87e0e5 100644 --- a/src/main/java/subway/domain/LineRepository.java +++ b/src/main/java/subway/domain/LineRepository.java @@ -12,6 +12,10 @@ public static List lines() { return Collections.unmodifiableList(lines); } + public static void addLines(List lineList){ + lineList.forEach(line -> lines.add(line)); + } + public static void addLine(String lineName, String upwardName, String downwardName) { if (stationRepository.checkNameLength(lineName)) { throw new IllegalStateException(); @@ -33,12 +37,6 @@ public static boolean deleteLineByName(String lineName) { return lines.removeIf(line -> Objects.equals(line.getName(), lineName)); } - public static void printLines() { - for (int i = 0; i < lines.size(); i++) { - System.out.println(String.join(" ", Constant.INFO_PREFIX, lines.get(i).getName())); - } - } - public static boolean checkExistLine(String lineName) { return lines.stream().anyMatch(o -> o.getName().equals(lineName)); } diff --git a/src/main/java/subway/domain/SectionRepository.java b/src/main/java/subway/domain/SectionRepository.java index bb4af0eaa..667d927bf 100644 --- a/src/main/java/subway/domain/SectionRepository.java +++ b/src/main/java/subway/domain/SectionRepository.java @@ -46,9 +46,11 @@ public static void printMap() { throw new IllegalStateException(); } for (int i = 0; i < lineRepository.lines.size(); i++) { - System.out.print(String.join(" ", Constant.INFO_PREFIX, lineRepository.lines.get(i).getName())); + System.out.println("\n" + String.join(" ", Constant.INFO_PREFIX, lineRepository.lines.get(i).getName())); + System.out.println(String.join(" ", Constant.INFO_PREFIX, "---")); for (int j = 0; j < lineRepository.lines.get(i).stations.size(); j++) { - System.out.print(lineRepository.lines.get(i).stations.get(j).getName() + " "); + System.out.println(String.join + (" ", Constant.INFO_PREFIX, lineRepository.lines.get(i).stations.get(j).getName())); } } } diff --git a/src/main/java/subway/domain/StationRepository.java b/src/main/java/subway/domain/StationRepository.java index cae09c2a6..8e513569b 100644 --- a/src/main/java/subway/domain/StationRepository.java +++ b/src/main/java/subway/domain/StationRepository.java @@ -8,32 +8,30 @@ import java.util.Objects; public class StationRepository { - private static final List stations = new ArrayList<>(); + public static final List stations = new ArrayList<>(); public static List stations() { return Collections.unmodifiableList(stations); } - public static void addStation(String stationName) { - if (checkNameLength(stationName)) { + public static void addStations(List stations){ + stations.forEach(StationRepository::addStation); + } + + public static void addStation(Station station) { + if (checkNameLength(station.getName())) { throw new IllegalStateException(); } - if (checkExistStation(stationName)) { + if (checkExistStation(station.getName())) { throw new IllegalArgumentException(); } - stations.add(new Station(stationName)); + stations.add(station); } public static boolean deleteStation(String name) { return stations.removeIf(station -> Objects.equals(station.getName(), name)); } - public static void printStations() { - for (int i = 0; i < stations.size(); i++) { - System.out.println(String.join(" ", Constant.INFO_PREFIX, stations.get(i).getName())); - } - } - public static boolean checkExistStation(String stationName) { return stations.stream().anyMatch(o -> o.getName().equals(stationName)); } diff --git a/src/main/java/subway/view/LineController.java b/src/main/java/subway/view/LineController.java index 9cfb0839a..7871122fe 100644 --- a/src/main/java/subway/view/LineController.java +++ b/src/main/java/subway/view/LineController.java @@ -59,6 +59,8 @@ void deleteLine() { } void readLines() { - lineRepository.printLines(); + for (int i = 0; i < lineRepository.lines.size(); i++) { + System.out.println(String.join(" ", Constant.INFO_PREFIX, lineRepository.lines.get(i).getName())); + } } } diff --git a/src/main/java/subway/view/StationController.java b/src/main/java/subway/view/StationController.java index ab1e11c1a..e11fa5d0f 100644 --- a/src/main/java/subway/view/StationController.java +++ b/src/main/java/subway/view/StationController.java @@ -34,7 +34,7 @@ void addStation() { System.out.println(String.join(" 역 ", Constant.ADD_PREFIX, Constant.NAME_POSTFIX)); String stationName = scanner.next(); try { - stationRepository.addStation(stationName); + stationRepository.addStation(new Station(stationName)); System.out.println(String.join(" ", Constant.INFO_PREFIX, ADD_STATION_SUCCESS)); } catch (IllegalArgumentException e) { System.err.println(String.join(" ", Constant.ERROR_PREFIX, Constant.FAIL)); @@ -55,6 +55,8 @@ void deleteStation() { } void readStations() { - stationRepository.printStations(); + for (int i = 0; i < stationRepository.stations.size(); i++) { + System.out.println(String.join(" ", Constant.INFO_PREFIX, stationRepository.stations.get(i).getName())); + } } } From a9490b3816e538a0ca65bd853f1a627b07ae5720 Mon Sep 17 00:00:00 2001 From: yejin Date: Tue, 15 Dec 2020 22:26:28 +0900 Subject: [PATCH 24/27] =?UTF-8?q?fix=20:=20print=20=ED=95=A8=EC=88=98=20?= =?UTF-8?q?=EC=9D=B4=EB=8F=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit repository에는 print 명령이 없도록 수정 --- .../java/subway/domain/SectionRepository.java | 14 -------------- src/main/java/subway/view/SectionController.java | 15 ++++++++++++--- 2 files changed, 12 insertions(+), 17 deletions(-) diff --git a/src/main/java/subway/domain/SectionRepository.java b/src/main/java/subway/domain/SectionRepository.java index 667d927bf..641c73ed8 100644 --- a/src/main/java/subway/domain/SectionRepository.java +++ b/src/main/java/subway/domain/SectionRepository.java @@ -41,18 +41,4 @@ static boolean validate(String lineName, String stationName) { return true; } - public static void printMap() { - if (lineRepository.lines.size() == 0) { - throw new IllegalStateException(); - } - for (int i = 0; i < lineRepository.lines.size(); i++) { - System.out.println("\n" + String.join(" ", Constant.INFO_PREFIX, lineRepository.lines.get(i).getName())); - System.out.println(String.join(" ", Constant.INFO_PREFIX, "---")); - for (int j = 0; j < lineRepository.lines.get(i).stations.size(); j++) { - System.out.println(String.join - (" ", Constant.INFO_PREFIX, lineRepository.lines.get(i).stations.get(j).getName())); - } - } - } - } diff --git a/src/main/java/subway/view/SectionController.java b/src/main/java/subway/view/SectionController.java index 2ca61cc81..9d1bb3d1c 100644 --- a/src/main/java/subway/view/SectionController.java +++ b/src/main/java/subway/view/SectionController.java @@ -1,6 +1,7 @@ package subway.view; import subway.Constant; +import subway.domain.LineRepository; import subway.domain.SectionRepository; import java.util.Scanner; @@ -17,8 +18,10 @@ public class SectionController { private static final String NOT_ADD_POSSIBLE_SECTION = "추가할 수 없는 구간입니다."; private static final String NOT_DELETE_POSSIBLE_SECTION = "삭제할 수 없는 구간입니다."; private static final String NOT_NUMBER_FORMAT = "순서에는 숫자만 입력 가능합니다."; + private static final String BAR = "---"; Scanner scanner; SectionRepository sectionRepository = new SectionRepository(); + LineRepository lineRepository = new LineRepository(); public SectionController(Scanner scanner) { this.scanner = scanner; @@ -79,10 +82,16 @@ void deleteSection() { } public void readSections() { - try { - sectionRepository.printMap(); - } catch (IllegalStateException e) { + if (lineRepository.lines.size() == 0) { System.err.println(String.join(" ", Constant.ERROR_PREFIX, NO_SECTION_INFO)); + return; + } + for (int i = 0; i < lineRepository.lines.size(); i++) { + System.out.println("\n" + String.join(" ", Constant.INFO_PREFIX, lineRepository.lines.get(i).getName())); + System.out.println(String.join(" ", Constant.INFO_PREFIX, BAR)); + for (int j = 0; j < lineRepository.lines.get(i).stations.size(); j++) { + System.out.println(String.join(" ", Constant.INFO_PREFIX, lineRepository.lines.get(i).stations.get(j).getName())); + } } } } From 2b0fc52770d737c5fee9b194fa34a280068896ed Mon Sep 17 00:00:00 2001 From: yejin Date: Tue, 15 Dec 2020 22:32:44 +0900 Subject: [PATCH 25/27] =?UTF-8?q?fix=20:=20=ED=8C=A8=ED=82=A4=EC=A7=80=20?= =?UTF-8?q?=EA=B5=AC=EC=A1=B0=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/subway/Application.java | 3 ++- src/main/java/subway/{ => domain}/Constant.java | 2 +- src/main/java/subway/domain/Input.java | 1 - src/main/java/subway/domain/Line.java | 2 -- .../java/subway/{domain => repository}/LineRepository.java | 6 ++++-- .../subway/{domain => repository}/SectionRepository.java | 4 ++-- .../subway/{domain => repository}/StationRepository.java | 5 +++-- src/main/java/subway/view/LineController.java | 6 ++---- src/main/java/subway/view/SectionController.java | 6 +++--- src/main/java/subway/view/StationController.java | 4 ++-- 10 files changed, 19 insertions(+), 20 deletions(-) rename src/main/java/subway/{ => domain}/Constant.java (98%) rename src/main/java/subway/{domain => repository}/LineRepository.java (91%) rename src/main/java/subway/{domain => repository}/SectionRepository.java (96%) rename src/main/java/subway/{domain => repository}/StationRepository.java (93%) diff --git a/src/main/java/subway/Application.java b/src/main/java/subway/Application.java index f694ca9b7..b49885dda 100644 --- a/src/main/java/subway/Application.java +++ b/src/main/java/subway/Application.java @@ -1,8 +1,9 @@ package subway; import subway.domain.*; +import subway.repository.LineRepository; +import subway.repository.StationRepository; -import java.util.ArrayList; import java.util.Arrays; import java.util.Scanner; diff --git a/src/main/java/subway/Constant.java b/src/main/java/subway/domain/Constant.java similarity index 98% rename from src/main/java/subway/Constant.java rename to src/main/java/subway/domain/Constant.java index 49e21f29a..33ec3c740 100644 --- a/src/main/java/subway/Constant.java +++ b/src/main/java/subway/domain/Constant.java @@ -1,4 +1,4 @@ -package subway; +package subway.domain; public class Constant { public static final int MIN_LENGTH = 2; diff --git a/src/main/java/subway/domain/Input.java b/src/main/java/subway/domain/Input.java index e8ffdcbd4..5cec5e291 100644 --- a/src/main/java/subway/domain/Input.java +++ b/src/main/java/subway/domain/Input.java @@ -1,6 +1,5 @@ package subway.domain; -import subway.Constant; import subway.view.LineController; import subway.view.SectionController; import subway.view.StationController; diff --git a/src/main/java/subway/domain/Line.java b/src/main/java/subway/domain/Line.java index 1a35f52a0..11b47477f 100644 --- a/src/main/java/subway/domain/Line.java +++ b/src/main/java/subway/domain/Line.java @@ -1,7 +1,5 @@ package subway.domain; -import subway.Constant; - import java.util.ArrayList; import java.util.List; diff --git a/src/main/java/subway/domain/LineRepository.java b/src/main/java/subway/repository/LineRepository.java similarity index 91% rename from src/main/java/subway/domain/LineRepository.java rename to src/main/java/subway/repository/LineRepository.java index b0a87e0e5..bed3dfc34 100644 --- a/src/main/java/subway/domain/LineRepository.java +++ b/src/main/java/subway/repository/LineRepository.java @@ -1,6 +1,8 @@ -package subway.domain; +package subway.repository; -import subway.Constant; +import subway.domain.Line; +import subway.domain.Station; +import subway.repository.StationRepository; import java.util.*; diff --git a/src/main/java/subway/domain/SectionRepository.java b/src/main/java/subway/repository/SectionRepository.java similarity index 96% rename from src/main/java/subway/domain/SectionRepository.java rename to src/main/java/subway/repository/SectionRepository.java index 641c73ed8..7b4227752 100644 --- a/src/main/java/subway/domain/SectionRepository.java +++ b/src/main/java/subway/repository/SectionRepository.java @@ -1,6 +1,6 @@ -package subway.domain; +package subway.repository; -import subway.Constant; +import subway.domain.Line; import java.util.*; diff --git a/src/main/java/subway/domain/StationRepository.java b/src/main/java/subway/repository/StationRepository.java similarity index 93% rename from src/main/java/subway/domain/StationRepository.java rename to src/main/java/subway/repository/StationRepository.java index 8e513569b..a93783d55 100644 --- a/src/main/java/subway/domain/StationRepository.java +++ b/src/main/java/subway/repository/StationRepository.java @@ -1,6 +1,7 @@ -package subway.domain; +package subway.repository; -import subway.Constant; +import subway.domain.Constant; +import subway.domain.Station; import java.util.ArrayList; import java.util.Collections; diff --git a/src/main/java/subway/view/LineController.java b/src/main/java/subway/view/LineController.java index 7871122fe..3660da54b 100644 --- a/src/main/java/subway/view/LineController.java +++ b/src/main/java/subway/view/LineController.java @@ -1,9 +1,7 @@ package subway.view; -import subway.Constant; -import subway.domain.Line; -import subway.domain.LineRepository; -import subway.domain.Station; +import subway.domain.Constant; +import subway.repository.LineRepository; import java.util.Scanner; diff --git a/src/main/java/subway/view/SectionController.java b/src/main/java/subway/view/SectionController.java index 9d1bb3d1c..4b1579d83 100644 --- a/src/main/java/subway/view/SectionController.java +++ b/src/main/java/subway/view/SectionController.java @@ -1,8 +1,8 @@ package subway.view; -import subway.Constant; -import subway.domain.LineRepository; -import subway.domain.SectionRepository; +import subway.domain.Constant; +import subway.repository.LineRepository; +import subway.repository.SectionRepository; import java.util.Scanner; diff --git a/src/main/java/subway/view/StationController.java b/src/main/java/subway/view/StationController.java index e11fa5d0f..639fc72c5 100644 --- a/src/main/java/subway/view/StationController.java +++ b/src/main/java/subway/view/StationController.java @@ -1,8 +1,8 @@ package subway.view; -import subway.Constant; +import subway.domain.Constant; import subway.domain.Station; -import subway.domain.StationRepository; +import subway.repository.StationRepository; import java.util.Scanner; From 3cd2815f002c269312b8a8600c6c80a2816e52d9 Mon Sep 17 00:00:00 2001 From: yejin Date: Tue, 15 Dec 2020 22:43:04 +0900 Subject: [PATCH 26/27] =?UTF-8?q?docs=20:=20=ED=81=B4=EB=9E=98=EC=8A=A4=20?= =?UTF-8?q?=EC=A0=95=EC=9D=98=20=EC=9E=91=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index f48416ffa..12f51f866 100644 --- a/README.md +++ b/README.md @@ -38,7 +38,20 @@ ## ⭐️ 클래스 정의 - +- *domain* + - Input : 사용자에게 기능을 선택받는 메인 화면을 출력하는 클래스 + - Station : 역 이름을 가지는 객체 클래스 + - Line : 노선 이름과 노선에 포함된 역 정보를 가지고 관리하는 클래스 + - Constant : 프로그램 내에서 사용되는 상수를 가지고 있는 클래스 +- *repository* + - StationRepository : 역 등록, 삭제를 수행하는 함수를 가지는 클래스 + - LineRepository : 노선 등록, 삭제를 수행하는 함수를 가지는 클래스 + - SectionRepository : 구간 등록, 삭제를 수행하는 함수를 가지는 클래스 +- *controller* + - StationController : 역 등록, 삭제에 대한 결과를 출력하고, 전체 역 조회를 수행하는 클래스 + - LineController : 노선 등록, 삭제에 대한 결과를 출력하고, 전체 노선 조회를 수행하는 클래스 + - SectionController : 구간 등록, 삭제에 대한 결과를 출력하고, 전체 지하철 노선과 포함된 역 조회를 수행하는 클래스 +- *Application* : Input 클래스의 메소드를 호출해 프로그램을 시작하고 flag로 프로그램 종료를 관리하는 클래스
From 99d5706e99598fe07e876448b1121ec2493cd4c1 Mon Sep 17 00:00:00 2001 From: yejin Date: Tue, 15 Dec 2020 22:43:34 +0900 Subject: [PATCH 27/27] =?UTF-8?q?fix=20:=20=EA=B0=9D=EC=B2=B4=20=EC=A0=91?= =?UTF-8?q?=EA=B7=BC=20=EC=A0=9C=ED=95=9C=EC=9E=90=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/Application.java | 2 +- src/main/java/subway/domain/Input.java | 6 +++--- src/main/java/subway/repository/LineRepository.java | 2 +- src/main/java/subway/view/LineController.java | 4 ++-- src/main/java/subway/view/SectionController.java | 6 +++--- src/main/java/subway/view/StationController.java | 4 ++-- 6 files changed, 12 insertions(+), 12 deletions(-) diff --git a/src/main/java/subway/Application.java b/src/main/java/subway/Application.java index b49885dda..7f6d251f6 100644 --- a/src/main/java/subway/Application.java +++ b/src/main/java/subway/Application.java @@ -12,7 +12,7 @@ public static void main(String[] args) { final Scanner scanner = new Scanner(System.in); initialSetting(); Input input = new Input(scanner); - while(!input.quit){ + while (!input.quit) { input.mainInput(); } } diff --git a/src/main/java/subway/domain/Input.java b/src/main/java/subway/domain/Input.java index 5cec5e291..0ed1043c0 100644 --- a/src/main/java/subway/domain/Input.java +++ b/src/main/java/subway/domain/Input.java @@ -8,9 +8,9 @@ public class Input { Scanner scanner; - StationController stationController; - LineController lineController; - SectionController sectionController; + private StationController stationController; + private LineController lineController; + private SectionController sectionController; public static Boolean quit = false; public Input(Scanner scanner) { diff --git a/src/main/java/subway/repository/LineRepository.java b/src/main/java/subway/repository/LineRepository.java index bed3dfc34..328e56660 100644 --- a/src/main/java/subway/repository/LineRepository.java +++ b/src/main/java/subway/repository/LineRepository.java @@ -8,7 +8,7 @@ public class LineRepository { public static final List lines = new ArrayList<>(); - static StationRepository stationRepository = new StationRepository(); + private static StationRepository stationRepository = new StationRepository(); public static List lines() { return Collections.unmodifiableList(lines); diff --git a/src/main/java/subway/view/LineController.java b/src/main/java/subway/view/LineController.java index 3660da54b..612283ca3 100644 --- a/src/main/java/subway/view/LineController.java +++ b/src/main/java/subway/view/LineController.java @@ -8,8 +8,8 @@ public class LineController { private static final String ADD_LINE_SUCCESS = "지하철 노선이 등록되었습니다.\n"; private static final String DELETE_LINE_SUCCESS = "지하철 노선이 삭제되었습니다.\n"; - Scanner scanner; - LineRepository lineRepository = new LineRepository(); + private Scanner scanner; + private LineRepository lineRepository = new LineRepository(); public LineController(Scanner scanner) { this.scanner = scanner; diff --git a/src/main/java/subway/view/SectionController.java b/src/main/java/subway/view/SectionController.java index 4b1579d83..5926e3edb 100644 --- a/src/main/java/subway/view/SectionController.java +++ b/src/main/java/subway/view/SectionController.java @@ -19,9 +19,9 @@ public class SectionController { private static final String NOT_DELETE_POSSIBLE_SECTION = "삭제할 수 없는 구간입니다."; private static final String NOT_NUMBER_FORMAT = "순서에는 숫자만 입력 가능합니다."; private static final String BAR = "---"; - Scanner scanner; - SectionRepository sectionRepository = new SectionRepository(); - LineRepository lineRepository = new LineRepository(); + private Scanner scanner; + private SectionRepository sectionRepository = new SectionRepository(); + private LineRepository lineRepository = new LineRepository(); public SectionController(Scanner scanner) { this.scanner = scanner; diff --git a/src/main/java/subway/view/StationController.java b/src/main/java/subway/view/StationController.java index 639fc72c5..6213efcb8 100644 --- a/src/main/java/subway/view/StationController.java +++ b/src/main/java/subway/view/StationController.java @@ -9,8 +9,8 @@ public class StationController { private static final String ADD_STATION_SUCCESS = "지하철 역이 등록되었습니다.\n"; private static final String DELETE_STATION_SUCCESS = "지하철 역이 삭제되었습니다.\n"; - Scanner scanner; - StationRepository stationRepository = new StationRepository(); + private Scanner scanner; + private StationRepository stationRepository = new StationRepository(); public StationController(Scanner scanner) { this.scanner = scanner;