From 45f0a60bfe1ccb48d413f7567be26018fd54fff1 Mon Sep 17 00:00:00 2001 From: mungto Date: Mon, 14 Dec 2020 14:06:15 +0900 Subject: [PATCH 01/91] docs(readme): Create function list --- README.md | 494 +++--------------------------------------------------- 1 file changed, 27 insertions(+), 467 deletions(-) diff --git a/README.md b/README.md index 00410ae50..05859e34c 100644 --- a/README.md +++ b/README.md @@ -1,469 +1,29 @@ -# 지하철 노선도 미션 +# 지하철 노선도 미션 - 김유기 - 지하철 역과 노선을 관리하는 지하철 노선도 기능을 구현한다. -
- -## 🚀 기능 요구사항 - -### 초기 설정 -- 프로그램 시작 시 역, 노선 등 필요한 정보를 미리 셋팅할 수 있다. - -> 아래의 사전 등록 정보로 반드시 초기 설정을 하기 -> -``` - 1. 지하철역으로 교대역, 강남역, 역삼역, 남부터미널역, 양재역, 양재시민의숲역, 매봉역이 등록되어 있다. - 2. 지하철 노선으로 2호선, 3호선, 신분당선이 등록되어 있다. - 3. 노선에 역이 아래와 같이 등록되어 있다.(왼쪽 끝이 상행 종점) - - 2호선: 교대역 - 강남역 - 역삼역 - - 3호선: 교대역 - 남부터미널역 - 양재역 - 매봉역 - - 신분당선: 강남역 - 양재역 - 양재시민의숲역 - ``` - - - -### 지하철 역 관련 기능 -- 지하철 역을 등록하고 삭제할 수 있다. (단, 노선에 등록된 역은 삭제할 수 없다) -- 중복된 지하철 역 이름이 등록될 수 없다. -- 역 이름은 2자 이상, 5자 이하만 가능하다. -- 지하철 역의 목록을 조회할 수 있다. - -### 지하철 노선 관련 기능 -- 지하철 노선을 등록하고 삭제할 수 있다. -- 중복된 지하철 노선 이름이 등록될 수 없다. -- 노선 이름은 2자 이상, 5자 이하만 가능하다. -- 노선 등록 시 상행 종점역과 하행 종점역을 입력받는다. -- 지하철 노선의 목록을 조회할 수 있다. - -### 지하철 구간 추가 기능 -- 지하철 노선에 구간을 추가하는 기능은 노선에 역을 추가하는 기능이라고도 할 수 있다. - - 역과 역사이를 구간이라 하고 이 구간들의 모음이 노선이다. -- 하나의 역은 여러개의 노선에 추가될 수 있다. -- 역과 역 사이에 새로운 역이 추가 될 수 있다. -- 노선에서 갈래길은 생길 수 없다. - - - -### 지하철 구간 삭제 기능 -- 노선에 등록된 역을 제거할 수 있다. -- 종점을 제거할 경우 다음 역이 종점이 된다. -- 노선에 포함된 역이 두개 이하일 때는 역을 제거할 수 없다. - - - -### 지하철 노선에 등록된 역 조회 기능 -- 노선의 상행 종점부터 하행 종점까지 연결된 순서대로 역 목록을 조회할 수 있다. - -
- -## ✍🏻 입출력 요구사항 -- `프로그래밍 실행 결과 예시`를 참고하여 입출력을 구현한다. -- 기대하는 출력 결과는 `[INFO]`를 붙여서 출력한다. 출력값의 형식은 예시와 동일하게 한다. -- 에러 발생 시 `[ERROR]`를 붙여서 출력한다. (에러의 문구는 자유롭게 작성한다.) - -### 💻 프로그래밍 실행 결과 -#### 역 관리 -``` -## 메인 화면 -1. 역 관리 -2. 노선 관리 -3. 구간 관리 -4. 지하철 노선도 출력 -Q. 종료 - -## 원하는 기능을 선택하세요. -1 - -## 역 관리 화면 -1. 역 등록 -2. 역 삭제 -3. 역 조회 -B. 돌아가기 - -## 원하는 기능을 선택하세요. -1 - -## 등록할 역 이름을 입력하세요. -잠실역 - -[INFO] 지하철 역이 등록되었습니다. - -## 메인 화면 -1. 역 관리 -2. 노선 관리 -3. 구간 관리 -4. 지하철 노선도 출력 -Q. 종료 - -## 원하는 기능을 선택하세요. -1 - -## 역 관리 화면 -1. 역 등록 -2. 역 삭제 -3. 역 조회 -B. 돌아가기 - -## 원하는 기능을 선택하세요. -3 - -## 역 목록 -[INFO] 교대역 -[INFO] 강남역 -[INFO] 역삼역 -[INFO] 남부터미널역 -[INFO] 양재역 -[INFO] 양재시민의숲역 -[INFO] 매봉역 -[INFO] 잠실역 - -## 메인 화면 -1. 역 관리 -2. 노선 관리 -3. 구간 관리 -4. 지하철 노선도 출력 -Q. 종료 - -## 원하는 기능을 선택하세요. -1 - -## 역 관리 화면 -1. 역 등록 -2. 역 삭제 -3. 역 조회 -B. 돌아가기 - -## 원하는 기능을 선택하세요. -2 - -## 삭제할 역 이름을 입력하세요. -잠실역 - -[INFO] 지하철 역이 삭제되었습니다. - -... -``` - -### 노선 관리 - -``` - -... - -## 메인 화면 -1. 역 관리 -2. 노선 관리 -3. 구간 관리 -4. 지하철 노선도 출력 -Q. 종료 - -## 원하는 기능을 선택하세요. -2 - -## 노선 관리 화면 -1. 노선 등록 -2. 노선 삭제 -3. 노선 조회 -B. 돌아가기 - -## 원하는 기능을 선택하세요. -1 - -## 등록할 노선 이름을 입력하세요. -1호선 - -## 등록할 노선의 상행 종점역 이름을 입력하세요. -강남역 - -## 등록할 노선의 하행 종점역 이름을 입력하세요. -잠실역 - -[INFO] 지하철 노선이 등록되었습니다. - -## 메인 화면 -1. 역 관리 -2. 노선 관리 -3. 구간 관리 -4. 지하철 노선도 출력 -Q. 종료 - -## 원하는 기능을 선택하세요. -2 - -## 노선 관리 화면 -1. 노선 등록 -2. 노선 삭제 -3. 노선 조회 -B. 돌아가기 - -## 원하는 기능을 선택하세요. -3 - -[INFO] 노선 목록 -[INFO] 2호선 -[INFO] 3호선 -[INFO] 신분당선 -[INFO] 1호선 - -## 메인 화면 -1. 역 관리 -2. 노선 관리 -3. 구간 관리 -4. 지하철 노선도 출력 -Q. 종료 - -## 원하는 기능을 선택하세요. -2 - -## 노선 관리 화면 -1. 노선 등록 -2. 노선 삭제 -3. 노선 조회 -B. 돌아가기 - -## 원하는 기능을 선택하세요. -2 - -## 삭제할 노선 이름을 입력하세요. -1호선 - -[INFO] 지하철 노선이 삭제되었습니다. - -... - -``` - -### 구간 관리 - -``` -... - -## 메인 화면 -1. 역 관리 -2. 노선 관리 -3. 구간 관리 -4. 지하철 노선도 출력 -Q. 종료 - -## 원하는 기능을 선택하세요. -3 - -## 구간 관리 화면 -1. 구간 등록 -2. 구간 삭제 -B. 돌아가기 - -## 원하는 기능을 선택하세요. -1 - -## 노선을 입력하세요. -2호선 - -## 역이름을 입력하세요. -잠실역 - -## 순서를 입력하세요. -2 - -[INFO] 구간이 등록되었습니다. - -## 메인 화면 -1. 역 관리 -2. 노선 관리 -3. 구간 관리 -4. 지하철 노선도 출력 -Q. 종료 - -## 원하는 기능을 선택하세요. -3 - -## 구간 관리 화면 -1. 구간 등록 -2. 구간 삭제 -B. 돌아가기 - -## 원하는 기능을 선택하세요. -2 - -## 삭제할 구간의 노선을 입력하세요. -2호선 - -## 삭제할 구간의 역을 입력하세요. -잠실역 - -[INFO] 구간이 삭제되었습니다. - -... - -``` - -### 지하철 노선도 출력 - -``` -## 메인 화면 -1. 역 관리 -2. 노선 관리 -3. 구간 관리 -4. 지하철 노선도 출력 -Q. 종료 - -## 원하는 기능을 선택하세요. -4 - -## 지하철 노선도 -[INFO] 2호선 -[INFO] --- -[INFO] 교대역 -[INFO] 강남역 -[INFO] 역삼역 - -[INFO] 3호선 -[INFO] --- -[INFO] 교대역 -[INFO] 남부터미널역 -[INFO] 양재역 -[INFO] 매봉역 - -[INFO] 신분당선 -[INFO] --- -[INFO] 강남역 -[INFO] 양재역 -[INFO] 양재시민의숲역 - -``` - -#### 에러 출력 예시 - -``` -## 메인 화면 -1. 역 관리 -2. 노선 관리 -3. 구간 관리 -4. 지하철 노선도 출력 -Q. 종료 - -## 원하는 기능을 선택하세요. -4 - -[ERROR] 선택할 수 없는 기능입니다. - -## 원하는 기능을 선택하세요. -1 - -## 역 관리 화면 -1. 역 등록 -2. 역 삭제 -3. 역 조회 -B. 돌아가기 - -## 원하는 기능을 선택하세요. -1 - -## 등록할 역 이름을 입력하세요. -강남역 - -[ERROR] 이미 등록된 역 이름입니다. - -## 역 관리 화면 -1. 역 등록 -2. 역 삭제 -3. 역 조회 -B. 돌아가기 - -## 원하는 기능을 선택하세요. - -... - -``` - -
- -## 🎱 프로그래밍 요구사항 -- 자바 코드 컨벤션을 지키면서 프로그래밍한다. - - 기본적으로 [Google Java Style Guide](https://google.github.io/styleguide/javaguide.html)을 원칙으로 한다. - - 단, 들여쓰기는 '2 spaces'가 아닌 '4 spaces'로 한다. -- indent(인덴트, 들여쓰기) depth를 3이 넘지 않도록 구현한다. 2까지만 허용한다. - - 예를 들어 while문 안에 if문이 있으면 들여쓰기는 2이다. - - 힌트: indent(인덴트, 들여쓰기) depth를 줄이는 좋은 방법은 함수(또는 메소드)를 분리하면 된다. -- 3항 연산자를 쓰지 않는다. -- 함수(또는 메소드)의 길이가 15라인을 넘어가지 않도록 구현한다. - - 함수(또는 메소드)가 한 가지 일만 잘 하도록 구현한다. -- else 예약어를 쓰지 않는다. - - 힌트: if 조건절에서 값을 return하는 방식으로 구현하면 else를 사용하지 않아도 된다. - - else를 쓰지 말라고 하니 switch/case로 구현하는 경우가 있는데 switch/case도 허용하지 않는다. -- 프로그래밍 요구사항에서 별도로 변경 불가 안내가 없는 경우 파일 수정과 패키지 이동을 자유롭게 할 수 있다. -- 예외 상황 시 에러 문구를 출력해야 한다. 단, 에러 문구는 `[ERROR]` 로 시작해야 한다. - -### 프로그래밍 요구사항 - Application -- Application 클래스를 활용해 구현해야 한다. -- Application의 패키지 구조는 변경하지 않는다. -- 주석을 참고하여 구현할 수 있으며 주석대로 구현하지 않아도 되고 삭제해도 무관하다. -```java -public class Application { - public static void main(String[] args) { - ... - } -} -``` - -### 프로그래밍 요구사항 - Station, Line -- Station, Line 클래스를 활용하여 지하철역과 노선을 구현해야 한다. -- 제공하는 각 클래스의 기본 생성자를 추가할 수 없다. -- 필드(인스턴스 변수)인 name의 접근 제어자 private을 변경할 수 없다. -- 가능하면 setter 메소드(ex. setXXX)를 추가하지 않고 구현한다. - -```java -public class Station { - private String name; - - public Station(String name) { - this.name = name; - } - - public String getName() { - return name; - } - - // 추가 기능 구현 -} - -``` - -### 프로그래밍 요구사항 - StationRepository, LineRepository -- Station과 Line의 상태를 저장할 수 있는 StationRepository, LineRepository를 제공한다. -- 필요 시 StationRepository, LineRepository 이 외 추가로 Repository를 만들 수 있다. -- 추가로 생성되는 객체에 대해서 XXXRepository 네이밍으로 저장 클래스를 추가할 수 있다. -- 객체들의 상태를 관리하기 위해서 XXXRepository 클래스를 활용해 저장 로직을 구현해야 한다. -- 필요에 따라 자유롭게 수정이 가능하다. - -```java -public class StationRepository { - private static final List stations = new ArrayList<>(); - - public static List stations() { - return Collections.unmodifiableList(stations); - } - - public static void addStation(Station station) { - stations.add(station); - } - - public static boolean deleteStation(String name) { - return stations.removeIf(station -> Objects.equals(station.getName(), name)); - } -} -``` - -
- -## 📈 진행 요구사항 -- 미션은 [java-subway-map-precourse 저장소](https://github.com/woowacourse/java-subway-map-precourse) 를 fork/clone해 시작한다. -- 기능을 구현하기 전에 java-subway-map-precourse/docs/README.md 파일에 구현할 기능 목록을 정리해 추가한다. -- git의 commit 단위는 앞 단계에서 README.md 파일에 정리한 기능 목록 단위로 추가한다. - - [AngularJS Commit Message Conventions](https://gist.github.com/stephenparish/9941e89d80e2bc58a153) 참고해 commit log를 남긴다. -- [프리코스 과제 제출 문서](https://github.com/woowacourse/woowacourse-docs/tree/master/precourse) 절차를 따라 미션을 제출한다. - - [프리코스 과제 FAQ](https://github.com/woowacourse/woowacourse-docs/tree/master/precourse/faq) 문서를 참고하여 진행할 수 있다. -
- -## 📝 License - -This project is [MIT](https://github.com/woowacourse/java-subway-map-precourse/blob/master/LICENSE.md) licensed. +## 기능 목록 + +* 초기 역, 노선 설정해야 한다. +* 지하철 역은 등록이 가능하다. + * 지하철 역의 이름은 2글자 이상이여야 한다 + * 지하철 역의 이름은 중복이 불가능 해야 한다. +* 지하철 역은 삭제가 가능하다. + * 노선에 등록된 지하철 역은 삭제가 불가능 해야 한다. +* 지하철 역의 목록 조회가 가능해야 한다. +* 지하철 노선은 등록이 가능하다. + * 지하철 노선의 이름은 2글자 이상이여야 한다. + * 지하철 노선의 이름은 중복이 불가능 해야 한다. +* 지하철 노선은 삭제가 가능하다. +* 지하철 노선을 등록할때 상행종점역과 하행 종점역을 입력받는다. +* 지하철 노선의 목록을 조회할 수 있다. +* 지하철 노선에 구간을 추가 할 수 있다. + * 하나의 역은 여러개의 노선에 추가 될 수 있다. + * 역과 역사이에 새로운 역이 추가 될 수 있다. + * 노선에서 갈래길은 생길 수 없다. ? 이해불가 +* 지하철 노선에 구간을 삭제 할 수 있다. + * 종점을 제거할 경우 다음 역이 종점이 된다. + * 노선에 포함된 역이 두개 이하일 때는 역을 제거할 수 없다. +* 지하철 노선에 등록된 역은 조회가 가능하다. + * 상행종점부터 하행 종점까지 연결된 순서대로 역 목록을 조회할 수 있다. +* 에러 발생시 `[ERROR]` 을 붙여서 출력한다. +* 기대하는 출력 결과는 `[INFO]`를 붙여서 출력한다. From f0c0de62975a04cf75e1ed1accbc8c9c4fc69006 Mon Sep 17 00:00:00 2001 From: mungto Date: Mon, 14 Dec 2020 14:41:08 +0900 Subject: [PATCH 02/91] feat(DataInitService): create DataInitService class create DataInitService and a constant --- src/main/java/subway/DataInitService.java | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 src/main/java/subway/DataInitService.java diff --git a/src/main/java/subway/DataInitService.java b/src/main/java/subway/DataInitService.java new file mode 100644 index 000000000..4eac832e5 --- /dev/null +++ b/src/main/java/subway/DataInitService.java @@ -0,0 +1,19 @@ +package subway; + +public class DataInitService { + + private static final String GYODAE_STATION = "교대역"; + private static final String GANGNAM_STATION = "강남역"; + private static final String YEOKSAM_STATION = "역삼역"; + private static final String SOUTH_TERMIANL_STATION = "남부터미널역"; + private static final String YANGJAE_STATION = "양재역"; + private static final String YANGJAE_CITIZEN_FOREST_STATION = "양재시민의숲역"; + private static final String MAEBONG_STATION = "매봉역"; + private static final String LINE_TOW = "2호선"; + private static final String LINE_THREE = "3호선"; + private static final String LINE_SINBUNDANG = "신분당선"; + private static final int ONE = 1; + private static final int TWO = 2; + + +} From bbd8d83d530097b1e7caf363230168921ba9eddc Mon Sep 17 00:00:00 2001 From: mungto Date: Mon, 14 Dec 2020 15:06:03 +0900 Subject: [PATCH 03/91] feat(DataInitService): create Init Function --- src/main/java/subway/DataInitService.java | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/src/main/java/subway/DataInitService.java b/src/main/java/subway/DataInitService.java index 4eac832e5..92c081f87 100644 --- a/src/main/java/subway/DataInitService.java +++ b/src/main/java/subway/DataInitService.java @@ -15,5 +15,22 @@ public class DataInitService { private static final int ONE = 1; private static final int TWO = 2; - + public static void init() { + addStation(); + addLine(); + addSections(); + } + + private static void addStation() { + + } + + private static void addLine() { + + } + + private static void addSections() { + + } + } From a16177517797c4c2743370cc6f81f9e0a106c22c Mon Sep 17 00:00:00 2001 From: mungto Date: Mon, 14 Dec 2020 15:08:13 +0900 Subject: [PATCH 04/91] feat(StationService): create StationService Class --- src/main/java/subway/StationService.java | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 src/main/java/subway/StationService.java diff --git a/src/main/java/subway/StationService.java b/src/main/java/subway/StationService.java new file mode 100644 index 000000000..80d8ac5b2 --- /dev/null +++ b/src/main/java/subway/StationService.java @@ -0,0 +1,5 @@ +package subway; + +public class StationService { + +} From 2c82172cdbcb7f3d9d853d52fc03147c2758ba86 Mon Sep 17 00:00:00 2001 From: mungto Date: Mon, 14 Dec 2020 15:23:15 +0900 Subject: [PATCH 05/91] feat(StationService): create addStation Function create addStation Fucntion and Length condition check --- src/main/java/subway/StationService.java | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/src/main/java/subway/StationService.java b/src/main/java/subway/StationService.java index 80d8ac5b2..36a21d72e 100644 --- a/src/main/java/subway/StationService.java +++ b/src/main/java/subway/StationService.java @@ -1,5 +1,20 @@ package subway; +import subway.domain.Station; +import subway.domain.StationRepository; + public class StationService { - + + public static final int MIN_STATION_NAME_LENGTH = 2; + + public static boolean addStation(String name) { + + if (name.length() < MIN_STATION_NAME_LENGTH) { + // TODO - 길이에러 출력함수 호출하기 + return false; + } + StationRepository.addStation(new Station(name)); + // TODO - 완료출력함수 호출하기 + return true; + } } From ddb8d298fba1eb7547004f25b4eadf2ecc0161ed Mon Sep 17 00:00:00 2001 From: mungto Date: Mon, 14 Dec 2020 15:33:31 +0900 Subject: [PATCH 06/91] feat(OutPut): Create OutPut Class Create OutPutClass and printStationNameLengthError Function create --- src/main/java/subway/OutPut.java | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 src/main/java/subway/OutPut.java diff --git a/src/main/java/subway/OutPut.java b/src/main/java/subway/OutPut.java new file mode 100644 index 000000000..645553870 --- /dev/null +++ b/src/main/java/subway/OutPut.java @@ -0,0 +1,13 @@ +package subway; + +public class OutPut { + + public static final String INFO = "[INFO] "; + public static final String ERROR = "[ERROR] "; + private static final String STATION_NAME_LENGTH_ERROR = "지하철 역의 이름은 2글자 이상이여야 합니다.\n"; + + public static void printStationNameLengthError() { + System.out.println(ERROR + STATION_NAME_LENGTH_ERROR); + } + +} From e41292dd9bccb08ffaf1519ce41dd8198c4e2dd9 Mon Sep 17 00:00:00 2001 From: mungto Date: Mon, 14 Dec 2020 15:35:43 +0900 Subject: [PATCH 07/91] refactor(StationService): add stationNameLengthError Function call --- src/main/java/subway/StationService.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/subway/StationService.java b/src/main/java/subway/StationService.java index 36a21d72e..fcc0c07ff 100644 --- a/src/main/java/subway/StationService.java +++ b/src/main/java/subway/StationService.java @@ -10,7 +10,7 @@ public class StationService { public static boolean addStation(String name) { if (name.length() < MIN_STATION_NAME_LENGTH) { - // TODO - 길이에러 출력함수 호출하기 + OutPut.printStationNameLengthError(); return false; } StationRepository.addStation(new Station(name)); From d522162cf34031a88ff652beb7f71e919651b12d Mon Sep 17 00:00:00 2001 From: mungto Date: Mon, 14 Dec 2020 15:37:23 +0900 Subject: [PATCH 08/91] feat(OutPut): create printStationCreateMessage Function --- src/main/java/subway/OutPut.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/main/java/subway/OutPut.java b/src/main/java/subway/OutPut.java index 645553870..9bc1ae8fe 100644 --- a/src/main/java/subway/OutPut.java +++ b/src/main/java/subway/OutPut.java @@ -5,9 +5,14 @@ public class OutPut { public static final String INFO = "[INFO] "; public static final String ERROR = "[ERROR] "; private static final String STATION_NAME_LENGTH_ERROR = "지하철 역의 이름은 2글자 이상이여야 합니다.\n"; + private static final String STATION_CREATE_MESSAGE = "지하철 역이 등록되었습니다.\n"; public static void printStationNameLengthError() { System.out.println(ERROR + STATION_NAME_LENGTH_ERROR); } + public static void printStationCreateMessage() { + System.out.println(INFO + STATION_CREATE_MESSAGE); + } + } From ebf6d50822517d0b7a44a7d8cc5a44f5d0190654 Mon Sep 17 00:00:00 2001 From: mungto Date: Mon, 14 Dec 2020 15:40:30 +0900 Subject: [PATCH 09/91] refactor(StationService): add StationCreateMessage Call --- src/main/java/subway/StationService.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/subway/StationService.java b/src/main/java/subway/StationService.java index fcc0c07ff..3bb5abcac 100644 --- a/src/main/java/subway/StationService.java +++ b/src/main/java/subway/StationService.java @@ -14,7 +14,7 @@ public static boolean addStation(String name) { return false; } StationRepository.addStation(new Station(name)); - // TODO - 완료출력함수 호출하기 + OutPut.printStationCreateMessage(); return true; } } From 276f1043520ff37350028c01416689675289a791 Mon Sep 17 00:00:00 2001 From: mungto Date: Mon, 14 Dec 2020 15:45:19 +0900 Subject: [PATCH 10/91] feat(Station): create isEqualName Function --- src/main/java/subway/domain/Station.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/main/java/subway/domain/Station.java b/src/main/java/subway/domain/Station.java index bdb142590..8a83fe92e 100644 --- a/src/main/java/subway/domain/Station.java +++ b/src/main/java/subway/domain/Station.java @@ -11,5 +11,7 @@ public String getName() { return name; } - // 추가 기능 구현 + public boolean isEqualName(String name) { + return name.equals(this.name); + } } From 65b63ce26777a59ca65c20ee79238814fb98623b Mon Sep 17 00:00:00 2001 From: mungto Date: Mon, 14 Dec 2020 15:47:33 +0900 Subject: [PATCH 11/91] style(Station): modify formatting --- src/main/java/subway/domain/Station.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/java/subway/domain/Station.java b/src/main/java/subway/domain/Station.java index 8a83fe92e..5a506810f 100644 --- a/src/main/java/subway/domain/Station.java +++ b/src/main/java/subway/domain/Station.java @@ -1,6 +1,7 @@ package subway.domain; public class Station { + private String name; public Station(String name) { From a896be4516d68ec6207d944e2e413e4f43de4aae Mon Sep 17 00:00:00 2001 From: mungto Date: Mon, 14 Dec 2020 15:57:04 +0900 Subject: [PATCH 12/91] feat(StationService): create isEqualStationName Function Function to find out if there is a station with the same name in the station --- src/main/java/subway/domain/StationRepository.java | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/main/java/subway/domain/StationRepository.java b/src/main/java/subway/domain/StationRepository.java index b7245c0f3..63ba92108 100644 --- a/src/main/java/subway/domain/StationRepository.java +++ b/src/main/java/subway/domain/StationRepository.java @@ -6,6 +6,7 @@ import java.util.Objects; public class StationRepository { + private static final List stations = new ArrayList<>(); public static List stations() { @@ -19,4 +20,13 @@ public static void addStation(Station station) { public static boolean deleteStation(String name) { return stations.removeIf(station -> Objects.equals(station.getName(), name)); } + + public static boolean isEqualStationName(String name) { + for (Station station : stations) { + if (station.isEqualName(name)) { + return true; + } + } + return false; + } } From 39f8102d1197edb974772858396f530343f807cd Mon Sep 17 00:00:00 2001 From: mungto Date: Mon, 14 Dec 2020 16:00:01 +0900 Subject: [PATCH 13/91] refactor(StationService): Check for duplicate station name --- src/main/java/subway/StationService.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/main/java/subway/StationService.java b/src/main/java/subway/StationService.java index 3bb5abcac..bf33b2a02 100644 --- a/src/main/java/subway/StationService.java +++ b/src/main/java/subway/StationService.java @@ -13,6 +13,10 @@ public static boolean addStation(String name) { OutPut.printStationNameLengthError(); return false; } + if (StationRepository.isEqualStationName(name)) { + // TODO - 역 중복관련 메시지 출력함수 호출하기 + return false; + } StationRepository.addStation(new Station(name)); OutPut.printStationCreateMessage(); return true; From 2b6e9e9a9443ef155e6daeadb2d0515284da35c6 Mon Sep 17 00:00:00 2001 From: mungto Date: Mon, 14 Dec 2020 16:05:34 +0900 Subject: [PATCH 14/91] feat(OutPut): create StationNameDuplicateError Function --- src/main/java/subway/OutPut.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/main/java/subway/OutPut.java b/src/main/java/subway/OutPut.java index 9bc1ae8fe..95cd5f18f 100644 --- a/src/main/java/subway/OutPut.java +++ b/src/main/java/subway/OutPut.java @@ -6,6 +6,7 @@ public class OutPut { public static final String ERROR = "[ERROR] "; private static final String STATION_NAME_LENGTH_ERROR = "지하철 역의 이름은 2글자 이상이여야 합니다.\n"; private static final String STATION_CREATE_MESSAGE = "지하철 역이 등록되었습니다.\n"; + private static final String STATION_NAME_DUPLICATE_ERROR = "지하철 역의 이름은 중복될 수 없습니다.\n"; public static void printStationNameLengthError() { System.out.println(ERROR + STATION_NAME_LENGTH_ERROR); @@ -15,4 +16,8 @@ public static void printStationCreateMessage() { System.out.println(INFO + STATION_CREATE_MESSAGE); } + public static void printStationNameDuplicateError() { + System.out.println(ERROR + STATION_NAME_DUPLICATE_ERROR); + } + } From 58369669d6ab75cdf57d936370ee8327a964acd2 Mon Sep 17 00:00:00 2001 From: mungto Date: Mon, 14 Dec 2020 16:07:54 +0900 Subject: [PATCH 15/91] refactor(StationService): add printStationNameDuplicateError Call --- src/main/java/subway/StationService.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/subway/StationService.java b/src/main/java/subway/StationService.java index bf33b2a02..90389b1ff 100644 --- a/src/main/java/subway/StationService.java +++ b/src/main/java/subway/StationService.java @@ -14,11 +14,11 @@ public static boolean addStation(String name) { return false; } if (StationRepository.isEqualStationName(name)) { - // TODO - 역 중복관련 메시지 출력함수 호출하기 + OutPut.printStationNameDuplicateError(); return false; } StationRepository.addStation(new Station(name)); OutPut.printStationCreateMessage(); return true; } -} +} \ No newline at end of file From 1cfb27995b443df44eaa429907af0107d3ffca1b Mon Sep 17 00:00:00 2001 From: mungto Date: Mon, 14 Dec 2020 16:20:02 +0900 Subject: [PATCH 16/91] feat(DataInitService): create addStation Function: Function to add basic stations at the beginning --- src/main/java/subway/DataInitService.java | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/main/java/subway/DataInitService.java b/src/main/java/subway/DataInitService.java index 92c081f87..ced196a65 100644 --- a/src/main/java/subway/DataInitService.java +++ b/src/main/java/subway/DataInitService.java @@ -22,7 +22,12 @@ public static void init() { } private static void addStation() { - + String[] StationNames = {GYODAE_STATION, GANGNAM_STATION, YEOKSAM_STATION, + SOUTH_TERMIANL_STATION, YANGJAE_STATION, YANGJAE_CITIZEN_FOREST_STATION, + MAEBONG_STATION}; + for (String stationName : StationNames) { + StationService.addStation(stationName); + } } private static void addLine() { From f4d495e1b5bd213b321151e2fc38094644e297ed Mon Sep 17 00:00:00 2001 From: mungto Date: Mon, 14 Dec 2020 16:21:44 +0900 Subject: [PATCH 17/91] refactor(Application): call to init --- src/main/java/subway/Application.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/java/subway/Application.java b/src/main/java/subway/Application.java index 0bcf786cc..86a62cc97 100644 --- a/src/main/java/subway/Application.java +++ b/src/main/java/subway/Application.java @@ -6,5 +6,6 @@ public class Application { public static void main(String[] args) { final Scanner scanner = new Scanner(System.in); // TODO: 프로그램 구현 + DataInitService.init(); } } From a73a51f2e636276d52d3d7ed9a42d32aaa50c486 Mon Sep 17 00:00:00 2001 From: mungto Date: Mon, 14 Dec 2020 16:24:37 +0900 Subject: [PATCH 18/91] fix(StationService): addStation Message bug fix Fixed a bug in which the creation result was displayed during initial setting --- src/main/java/subway/StationService.java | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/main/java/subway/StationService.java b/src/main/java/subway/StationService.java index 90389b1ff..68d69ee7e 100644 --- a/src/main/java/subway/StationService.java +++ b/src/main/java/subway/StationService.java @@ -7,8 +7,7 @@ public class StationService { public static final int MIN_STATION_NAME_LENGTH = 2; - public static boolean addStation(String name) { - + public static boolean addStation(String name, boolean isPrint) { if (name.length() < MIN_STATION_NAME_LENGTH) { OutPut.printStationNameLengthError(); return false; @@ -18,7 +17,9 @@ public static boolean addStation(String name) { return false; } StationRepository.addStation(new Station(name)); - OutPut.printStationCreateMessage(); + if (isPrint) { + OutPut.printStationCreateMessage(); + } return true; } } \ No newline at end of file From 098aab38326dec62251189627fb76861155b8111 Mon Sep 17 00:00:00 2001 From: mungto Date: Mon, 14 Dec 2020 16:26:31 +0900 Subject: [PATCH 19/91] fix(DataInitService): addStation Message bug fix Change calling method --- src/main/java/subway/DataInitService.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/subway/DataInitService.java b/src/main/java/subway/DataInitService.java index ced196a65..4dc43a365 100644 --- a/src/main/java/subway/DataInitService.java +++ b/src/main/java/subway/DataInitService.java @@ -26,7 +26,7 @@ private static void addStation() { SOUTH_TERMIANL_STATION, YANGJAE_STATION, YANGJAE_CITIZEN_FOREST_STATION, MAEBONG_STATION}; for (String stationName : StationNames) { - StationService.addStation(stationName); + StationService.addStation(stationName, false); } } From 69ce4d4fcffa6da932ceb2a4fd00ecf8ecf2c0a9 Mon Sep 17 00:00:00 2001 From: mungto Date: Mon, 14 Dec 2020 17:02:02 +0900 Subject: [PATCH 20/91] feat(Line): create isEqualName Function --- src/main/java/subway/domain/Line.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/main/java/subway/domain/Line.java b/src/main/java/subway/domain/Line.java index f4d738d5a..0bb5bd225 100644 --- a/src/main/java/subway/domain/Line.java +++ b/src/main/java/subway/domain/Line.java @@ -11,5 +11,7 @@ public String getName() { return name; } - // 추가 기능 구현 + public boolean isEqualName(String name) { + return name.equals(this.name); + } } From c65df3767082c8ed5c1bd26d22b308cc1674004f Mon Sep 17 00:00:00 2001 From: mungto Date: Mon, 14 Dec 2020 17:05:34 +0900 Subject: [PATCH 21/91] feat(LineRepository): create isEqualLineName Function Function to find out if the name is the same as the name of the Line --- src/main/java/subway/domain/LineRepository.java | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/main/java/subway/domain/LineRepository.java b/src/main/java/subway/domain/LineRepository.java index 49132ddb6..e63ff8a25 100644 --- a/src/main/java/subway/domain/LineRepository.java +++ b/src/main/java/subway/domain/LineRepository.java @@ -19,4 +19,14 @@ public static void addLine(Line line) { public static boolean deleteLineByName(String name) { return lines.removeIf(line -> Objects.equals(line.getName(), name)); } + + public static boolean isEqualLineName(String name) { + for (Line line : lines) { + if (line.isEqualName(name)) { + return true; + } + } + return false; + } + } From fb2c6e0e4289bbd85da5ca2538f7aa61fae69257 Mon Sep 17 00:00:00 2001 From: mungto Date: Mon, 14 Dec 2020 17:08:20 +0900 Subject: [PATCH 22/91] feat(OutPut): create LineLengthError Function --- src/main/java/subway/OutPut.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/main/java/subway/OutPut.java b/src/main/java/subway/OutPut.java index 95cd5f18f..6232a650a 100644 --- a/src/main/java/subway/OutPut.java +++ b/src/main/java/subway/OutPut.java @@ -7,6 +7,7 @@ public class OutPut { private static final String STATION_NAME_LENGTH_ERROR = "지하철 역의 이름은 2글자 이상이여야 합니다.\n"; private static final String STATION_CREATE_MESSAGE = "지하철 역이 등록되었습니다.\n"; private static final String STATION_NAME_DUPLICATE_ERROR = "지하철 역의 이름은 중복될 수 없습니다.\n"; + private static final String LINE_NAME_LENGTH_ERROR = "지하철 노선의 이름은 2글자 이상이여야 합니다.\n"; public static void printStationNameLengthError() { System.out.println(ERROR + STATION_NAME_LENGTH_ERROR); @@ -20,4 +21,8 @@ public static void printStationNameDuplicateError() { System.out.println(ERROR + STATION_NAME_DUPLICATE_ERROR); } + public static void printLineLengthError() { + System.out.println(ERROR + LINE_NAME_LENGTH_ERROR); + } + } From 70f1c2745efe6779d85fa7a6322d71b1789b8b37 Mon Sep 17 00:00:00 2001 From: mungto Date: Mon, 14 Dec 2020 17:11:21 +0900 Subject: [PATCH 23/91] feat(OutPut): create LineNameDuplicateError Function --- src/main/java/subway/OutPut.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/main/java/subway/OutPut.java b/src/main/java/subway/OutPut.java index 6232a650a..03e4f6270 100644 --- a/src/main/java/subway/OutPut.java +++ b/src/main/java/subway/OutPut.java @@ -8,6 +8,7 @@ public class OutPut { private static final String STATION_CREATE_MESSAGE = "지하철 역이 등록되었습니다.\n"; private static final String STATION_NAME_DUPLICATE_ERROR = "지하철 역의 이름은 중복될 수 없습니다.\n"; private static final String LINE_NAME_LENGTH_ERROR = "지하철 노선의 이름은 2글자 이상이여야 합니다.\n"; + private static final String LINE_NAME_DUPLICATE_ERROR = "지하철 노선의 이름은 중복될 수 없습니다.\n"; public static void printStationNameLengthError() { System.out.println(ERROR + STATION_NAME_LENGTH_ERROR); @@ -25,4 +26,8 @@ public static void printLineLengthError() { System.out.println(ERROR + LINE_NAME_LENGTH_ERROR); } + public static void printLineDuplicateError() { + System.out.println(ERROR + LINE_NAME_DUPLICATE_ERROR); + } + } From 1ccc9bb70a768cb0383c912ce831ad58f676eb46 Mon Sep 17 00:00:00 2001 From: mungto Date: Mon, 14 Dec 2020 17:12:30 +0900 Subject: [PATCH 24/91] feat(OutPuut): create LineCreateMessage Function --- src/main/java/subway/OutPut.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/main/java/subway/OutPut.java b/src/main/java/subway/OutPut.java index 03e4f6270..7f6d0a49f 100644 --- a/src/main/java/subway/OutPut.java +++ b/src/main/java/subway/OutPut.java @@ -9,7 +9,8 @@ public class OutPut { private static final String STATION_NAME_DUPLICATE_ERROR = "지하철 역의 이름은 중복될 수 없습니다.\n"; private static final String LINE_NAME_LENGTH_ERROR = "지하철 노선의 이름은 2글자 이상이여야 합니다.\n"; private static final String LINE_NAME_DUPLICATE_ERROR = "지하철 노선의 이름은 중복될 수 없습니다.\n"; - + private static final String LINE_CREATE_MESSAGE = "지하철 노선이 등록되었습니다.\n"; + public static void printStationNameLengthError() { System.out.println(ERROR + STATION_NAME_LENGTH_ERROR); } @@ -30,4 +31,7 @@ public static void printLineDuplicateError() { System.out.println(ERROR + LINE_NAME_DUPLICATE_ERROR); } + public static void printLineCreateMessage() { + System.out.println(INFO + LINE_CREATE_MESSAGE); + } } From aacdaa0bfb957e90543ef92b50d0ceaf3b504335 Mon Sep 17 00:00:00 2001 From: mungto Date: Mon, 14 Dec 2020 17:15:07 +0900 Subject: [PATCH 25/91] refactor(LineService): add call to message function --- src/main/java/subway/LineService.java | 28 +++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 src/main/java/subway/LineService.java diff --git a/src/main/java/subway/LineService.java b/src/main/java/subway/LineService.java new file mode 100644 index 000000000..97ecb515a --- /dev/null +++ b/src/main/java/subway/LineService.java @@ -0,0 +1,28 @@ +package subway; + +import subway.domain.Line; +import subway.domain.LineRepository; +import subway.domain.Station; +import subway.domain.StationRepository; + +public class LineService { + + public static final int MIN_LINE_NAME_LENGTH = 2; + + public static boolean addLine(String lineName, String firstStationName, String lastStationName, + boolean isPrint) { + if (lineName.length() < MIN_LINE_NAME_LENGTH) { + OutPut.printLineLengthError(); + return true; + } + if (LineRepository.isEqualLineName(lineName)) { + OutPut.printLineDuplicateError(); + return true; + } + // TODO - LINE 생성로직 추가하기 + if (isPrint) { + OutPut.printLineCreateMessage(); + } + return true; + } +} From 638cc50ae0d724016e0a5ef17090f9a5dd6b1930 Mon Sep 17 00:00:00 2001 From: mungto Date: Mon, 14 Dec 2020 17:35:15 +0900 Subject: [PATCH 26/91] feat(StationRepository): create getStation Function Function to find stations with the same name --- src/main/java/subway/domain/StationRepository.java | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/main/java/subway/domain/StationRepository.java b/src/main/java/subway/domain/StationRepository.java index 63ba92108..e49b30bab 100644 --- a/src/main/java/subway/domain/StationRepository.java +++ b/src/main/java/subway/domain/StationRepository.java @@ -29,4 +29,13 @@ public static boolean isEqualStationName(String name) { } return false; } + + public static Station getStation(String name) { + for (Station station : stations) { + if (station.isEqualName(name)) { + return station; + } + } + return null; + } } From a6a35b4bba403029f856722e6940e0aec5cc4e15 Mon Sep 17 00:00:00 2001 From: mungto Date: Mon, 14 Dec 2020 17:47:52 +0900 Subject: [PATCH 27/91] feat(Line): create initLineInStation Function Add a function to add an endpoint --- src/main/java/subway/domain/Line.java | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/main/java/subway/domain/Line.java b/src/main/java/subway/domain/Line.java index 0bb5bd225..0be1e5f91 100644 --- a/src/main/java/subway/domain/Line.java +++ b/src/main/java/subway/domain/Line.java @@ -1,7 +1,12 @@ package subway.domain; +import java.util.ArrayList; +import java.util.List; + public class Line { + private String name; + private List lineInStationList = new ArrayList<>(); public Line(String name) { this.name = name; @@ -14,4 +19,9 @@ public String getName() { public boolean isEqualName(String name) { return name.equals(this.name); } + + public void initLineInStation(Station firstStation, Station lastStation) { + lineInStationList.add(firstStation); + lineInStationList.add(lastStation); + } } From 6fa10d5b7e62c16e9d58835cceb57f2afb4a06af Mon Sep 17 00:00:00 2001 From: mungto Date: Mon, 14 Dec 2020 18:00:05 +0900 Subject: [PATCH 28/91] feat(LineService): add Line Create logic add Line Createlogic call endpoint add function --- src/main/java/subway/LineService.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/main/java/subway/LineService.java b/src/main/java/subway/LineService.java index 97ecb515a..82df4c49f 100644 --- a/src/main/java/subway/LineService.java +++ b/src/main/java/subway/LineService.java @@ -19,7 +19,11 @@ public static boolean addLine(String lineName, String firstStationName, String l OutPut.printLineDuplicateError(); return true; } - // TODO - LINE 생성로직 추가하기 + Station firstStation = StationRepository.getStation(firstStationName); + Station lastStation = StationRepository.getStation(lastStationName); + Line line = new Line(lineName); + line.initLineInStation(firstStation, lastStation); + LineRepository.addLine(line); if (isPrint) { OutPut.printLineCreateMessage(); } From 12c88f4298276b701f061d7a0b3bc99acde5061e Mon Sep 17 00:00:00 2001 From: mungto Date: Mon, 14 Dec 2020 18:02:03 +0900 Subject: [PATCH 29/91] feat(DataInitService): create addLine Function Function to set the initial route --- src/main/java/subway/DataInitService.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/main/java/subway/DataInitService.java b/src/main/java/subway/DataInitService.java index 4dc43a365..90546a6b2 100644 --- a/src/main/java/subway/DataInitService.java +++ b/src/main/java/subway/DataInitService.java @@ -31,7 +31,10 @@ private static void addStation() { } private static void addLine() { - + LineService.addLine(LINE_TOW, GYODAE_STATION, YEOKSAM_STATION, false); + LineService.addLine(LINE_THREE, GYODAE_STATION, MAEBONG_STATION, false); + LineService + .addLine(LINE_SINBUNDANG, GANGNAM_STATION, YANGJAE_CITIZEN_FOREST_STATION, false); } private static void addSections() { From f976c8c5955d7942c88e735b5ac75fb1cd648c53 Mon Sep 17 00:00:00 2001 From: mungto Date: Mon, 14 Dec 2020 18:28:48 +0900 Subject: [PATCH 30/91] refactor(LineService): Separation of functions Isolate the ability to check conditions --- src/main/java/subway/LineService.java | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/src/main/java/subway/LineService.java b/src/main/java/subway/LineService.java index 82df4c49f..30e76ab62 100644 --- a/src/main/java/subway/LineService.java +++ b/src/main/java/subway/LineService.java @@ -9,8 +9,7 @@ public class LineService { public static final int MIN_LINE_NAME_LENGTH = 2; - public static boolean addLine(String lineName, String firstStationName, String lastStationName, - boolean isPrint) { + private static boolean isNotLineNameState(String lineName) { if (lineName.length() < MIN_LINE_NAME_LENGTH) { OutPut.printLineLengthError(); return true; @@ -19,6 +18,14 @@ public static boolean addLine(String lineName, String firstStationName, String l OutPut.printLineDuplicateError(); return true; } + return false; + } + + public static boolean addLine(String lineName, String firstStationName, String lastStationName, + boolean isPrint) { + if (isNotLineNameState(lineName)) { + return false; + } Station firstStation = StationRepository.getStation(firstStationName); Station lastStation = StationRepository.getStation(lastStationName); Line line = new Line(lineName); From e8fdf12addee9fff3d67f9909f3bbcf26ebc02fc Mon Sep 17 00:00:00 2001 From: mungto Date: Mon, 14 Dec 2020 18:32:17 +0900 Subject: [PATCH 31/91] feat(OutPut): create non exist station error function --- src/main/java/subway/OutPut.java | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/main/java/subway/OutPut.java b/src/main/java/subway/OutPut.java index 7f6d0a49f..a76348fb4 100644 --- a/src/main/java/subway/OutPut.java +++ b/src/main/java/subway/OutPut.java @@ -10,7 +10,9 @@ public class OutPut { private static final String LINE_NAME_LENGTH_ERROR = "지하철 노선의 이름은 2글자 이상이여야 합니다.\n"; private static final String LINE_NAME_DUPLICATE_ERROR = "지하철 노선의 이름은 중복될 수 없습니다.\n"; private static final String LINE_CREATE_MESSAGE = "지하철 노선이 등록되었습니다.\n"; - + private static final String NON_EXIST_STATION_ERROR = "은(는) 존재하지 않는 역입니다.\n"; + + public static void printStationNameLengthError() { System.out.println(ERROR + STATION_NAME_LENGTH_ERROR); } @@ -34,4 +36,8 @@ public static void printLineDuplicateError() { public static void printLineCreateMessage() { System.out.println(INFO + LINE_CREATE_MESSAGE); } + + public static void printNonExistStationError(String stationName) { + System.out.println(ERROR + stationName + NON_EXIST_STATION_ERROR); + } } From 4cca23a17dfb4f9f07e2dee02b3e436aeae82e7a Mon Sep 17 00:00:00 2001 From: mungto Date: Mon, 14 Dec 2020 18:34:45 +0900 Subject: [PATCH 32/91] feat(OutPut): create non exist station error function Create a function to find the case of a subway station that does not existns --- src/main/java/subway/LineService.java | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/main/java/subway/LineService.java b/src/main/java/subway/LineService.java index 30e76ab62..bf94176a9 100644 --- a/src/main/java/subway/LineService.java +++ b/src/main/java/subway/LineService.java @@ -21,6 +21,18 @@ private static boolean isNotLineNameState(String lineName) { return false; } + private static boolean isNotExistStation(String firstStationName, String lastStationName) { + if (!StationRepository.isEqualStationName(firstStationName)) { + OutPut.printNonExistStationError(firstStationName); + return true; + } + if (!StationRepository.isEqualStationName(lastStationName)) { + OutPut.printNonExistStationError(lastStationName); + return true; + } + return false; + } + public static boolean addLine(String lineName, String firstStationName, String lastStationName, boolean isPrint) { if (isNotLineNameState(lineName)) { From 16b5e1e080bf4d54798b44d8fad0793c0edef615 Mon Sep 17 00:00:00 2001 From: mungto Date: Mon, 14 Dec 2020 18:40:28 +0900 Subject: [PATCH 33/91] refactor(LineService): call not exist station function --- src/main/java/subway/LineService.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/subway/LineService.java b/src/main/java/subway/LineService.java index bf94176a9..4a0d99143 100644 --- a/src/main/java/subway/LineService.java +++ b/src/main/java/subway/LineService.java @@ -35,7 +35,7 @@ private static boolean isNotExistStation(String firstStationName, String lastSta public static boolean addLine(String lineName, String firstStationName, String lastStationName, boolean isPrint) { - if (isNotLineNameState(lineName)) { + if (isNotLineNameState(lineName) || isNotExistStation(firstStationName, lastStationName)) { return false; } Station firstStation = StationRepository.getStation(firstStationName); From 2e16869027abb9001f3a07d96f3a838114ea3b12 Mon Sep 17 00:00:00 2001 From: mungto Date: Mon, 14 Dec 2020 19:36:37 +0900 Subject: [PATCH 34/91] feat(OutPut): create NonExistLineError function --- src/main/java/subway/OutPut.java | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/main/java/subway/OutPut.java b/src/main/java/subway/OutPut.java index a76348fb4..78c3b34ae 100644 --- a/src/main/java/subway/OutPut.java +++ b/src/main/java/subway/OutPut.java @@ -11,7 +11,7 @@ public class OutPut { private static final String LINE_NAME_DUPLICATE_ERROR = "지하철 노선의 이름은 중복될 수 없습니다.\n"; private static final String LINE_CREATE_MESSAGE = "지하철 노선이 등록되었습니다.\n"; private static final String NON_EXIST_STATION_ERROR = "은(는) 존재하지 않는 역입니다.\n"; - + private static final String NON_EXIST_LINE_ERROR = "존재하지 않는 노선입니다.\n"; public static void printStationNameLengthError() { System.out.println(ERROR + STATION_NAME_LENGTH_ERROR); @@ -40,4 +40,9 @@ public static void printLineCreateMessage() { public static void printNonExistStationError(String stationName) { System.out.println(ERROR + stationName + NON_EXIST_STATION_ERROR); } + + public static void printNonExistLineError() { + System.out.println(ERROR + NON_EXIST_LINE_ERROR); + } + } From fa3d326f9764891522b91bfbd674f1a2a17dc349 Mon Sep 17 00:00:00 2001 From: mungto Date: Mon, 14 Dec 2020 19:47:47 +0900 Subject: [PATCH 35/91] feat(SectionService): create Line and Station exist Function Function to check if there are no lines and stations --- src/main/java/subway/SectionService.java | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 src/main/java/subway/SectionService.java diff --git a/src/main/java/subway/SectionService.java b/src/main/java/subway/SectionService.java new file mode 100644 index 000000000..03511e64e --- /dev/null +++ b/src/main/java/subway/SectionService.java @@ -0,0 +1,24 @@ +package subway; + +import subway.domain.Line; +import subway.domain.LineRepository; +import subway.domain.Station; +import subway.domain.StationRepository; + +public class SectionService { + + private static final int DELETE_MIN_SIZE = 2; + + private static boolean isNotExistLineAndStation(String lineName, String stationName) { + if (!LineRepository.isEqualLineName(lineName)) { + OutPut.printNonExistLineError(); + return true; + } + if (!StationRepository.isEqualStationName(stationName)) { + OutPut.printNonExistStationError(stationName); + return true; + } + return false; + } + +} From 11234807cbd0d71610b182c810897b55ff3b8df6 Mon Sep 17 00:00:00 2001 From: mungto Date: Mon, 14 Dec 2020 20:03:51 +0900 Subject: [PATCH 36/91] feat(Line): create exist station function A function to check if the subway station exists on the line --- src/main/java/subway/domain/Line.java | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/main/java/subway/domain/Line.java b/src/main/java/subway/domain/Line.java index 0be1e5f91..bd7ce3754 100644 --- a/src/main/java/subway/domain/Line.java +++ b/src/main/java/subway/domain/Line.java @@ -24,4 +24,13 @@ public void initLineInStation(Station firstStation, Station lastStation) { lineInStationList.add(firstStation); lineInStationList.add(lastStation); } + + public boolean isExistStation(String name) { + for (Station station : lineInStationList) { + if (station.isEqualName(name)) { + return true; + } + } + return false; + } } From 708c014b7d784408b635d9a337828138b41a6843 Mon Sep 17 00:00:00 2001 From: mungto Date: Mon, 14 Dec 2020 20:06:22 +0900 Subject: [PATCH 37/91] feat(OutPut): create exist station error function --- src/main/java/subway/OutPut.java | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/main/java/subway/OutPut.java b/src/main/java/subway/OutPut.java index 78c3b34ae..17d6b1311 100644 --- a/src/main/java/subway/OutPut.java +++ b/src/main/java/subway/OutPut.java @@ -12,6 +12,7 @@ public class OutPut { private static final String LINE_CREATE_MESSAGE = "지하철 노선이 등록되었습니다.\n"; private static final String NON_EXIST_STATION_ERROR = "은(는) 존재하지 않는 역입니다.\n"; private static final String NON_EXIST_LINE_ERROR = "존재하지 않는 노선입니다.\n"; + private static final String EXIST_STATION_ERROR = "노선에 이미 존재하는 역입니다.\n"; public static void printStationNameLengthError() { System.out.println(ERROR + STATION_NAME_LENGTH_ERROR); @@ -44,5 +45,9 @@ public static void printNonExistStationError(String stationName) { public static void printNonExistLineError() { System.out.println(ERROR + NON_EXIST_LINE_ERROR); } - + + public static void printExistStationError() { + System.out.println(ERROR + EXIST_STATION_ERROR); + } + } From e26792040e4798cbcc94abff9a9b2f2f82d03b67 Mon Sep 17 00:00:00 2001 From: mungto Date: Mon, 14 Dec 2020 20:09:02 +0900 Subject: [PATCH 38/91] feat(SectionService): create exist station Function A function to check whether a subway station exists on the line --- src/main/java/subway/SectionService.java | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/main/java/subway/SectionService.java b/src/main/java/subway/SectionService.java index 03511e64e..20ed4a026 100644 --- a/src/main/java/subway/SectionService.java +++ b/src/main/java/subway/SectionService.java @@ -21,4 +21,12 @@ private static boolean isNotExistLineAndStation(String lineName, String stationN return false; } + private static boolean isExistStation(Line line, String stationName) { + if (line.isExistStation(stationName)) { + OutPut.printExistStationError(); + return true; + } + return false; + } + } From f5fe2e8ec6270ffa320d8554a0350661a567a545 Mon Sep 17 00:00:00 2001 From: mungto Date: Mon, 14 Dec 2020 20:23:36 +0900 Subject: [PATCH 39/91] feat(LineRepository): create getLine Function A function to find a line that matches the name --- src/main/java/subway/domain/LineRepository.java | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/main/java/subway/domain/LineRepository.java b/src/main/java/subway/domain/LineRepository.java index e63ff8a25..c76333b2e 100644 --- a/src/main/java/subway/domain/LineRepository.java +++ b/src/main/java/subway/domain/LineRepository.java @@ -29,4 +29,13 @@ public static boolean isEqualLineName(String name) { return false; } + public static Line getLine(String name) { + for (Line line : lines) { + if (line.isEqualName(name)) { + return line; + } + } + return null; + } + } From 62563332b6ee8801123c73e06b3847d524daa7a1 Mon Sep 17 00:00:00 2001 From: mungto Date: Mon, 14 Dec 2020 20:34:54 +0900 Subject: [PATCH 40/91] feat(Line): create insert line in station function Function to insert a subway station on a line --- src/main/java/subway/domain/Line.java | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/main/java/subway/domain/Line.java b/src/main/java/subway/domain/Line.java index bd7ce3754..2746b3c9d 100644 --- a/src/main/java/subway/domain/Line.java +++ b/src/main/java/subway/domain/Line.java @@ -33,4 +33,12 @@ public boolean isExistStation(String name) { } return false; } + + public void insertLineInStation(Station station, int index) { + if (index > lineInStationList.size()) { + lineInStationList.add(lineInStationList.size(), station); + return; + } + lineInStationList.add(index, station); + } } From c5d4eb879c0632366ca6af667622113fba9e32a7 Mon Sep 17 00:00:00 2001 From: mungto Date: Mon, 14 Dec 2020 20:39:57 +0900 Subject: [PATCH 41/91] feat(OutPut): create section add success message function --- src/main/java/subway/OutPut.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/main/java/subway/OutPut.java b/src/main/java/subway/OutPut.java index 17d6b1311..484f387e6 100644 --- a/src/main/java/subway/OutPut.java +++ b/src/main/java/subway/OutPut.java @@ -13,6 +13,7 @@ public class OutPut { private static final String NON_EXIST_STATION_ERROR = "은(는) 존재하지 않는 역입니다.\n"; private static final String NON_EXIST_LINE_ERROR = "존재하지 않는 노선입니다.\n"; private static final String EXIST_STATION_ERROR = "노선에 이미 존재하는 역입니다.\n"; + private static final String SECTION_ADD_MESSAGE = "구간이 등록되었습니다.\n"; public static void printStationNameLengthError() { System.out.println(ERROR + STATION_NAME_LENGTH_ERROR); @@ -50,4 +51,7 @@ public static void printExistStationError() { System.out.println(ERROR + EXIST_STATION_ERROR); } + public static void printSectionAddMessage() { + System.out.println(INFO + SECTION_ADD_MESSAGE); + } } From cd0d96b474f9fe6d6e0ee9e381bff88da535da6b Mon Sep 17 00:00:00 2001 From: mungto Date: Mon, 14 Dec 2020 21:11:54 +0900 Subject: [PATCH 42/91] feat(SectionService): create addSection Function Function to insert a subway station on a line --- src/main/java/subway/SectionService.java | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/src/main/java/subway/SectionService.java b/src/main/java/subway/SectionService.java index 20ed4a026..bdf96f0ad 100644 --- a/src/main/java/subway/SectionService.java +++ b/src/main/java/subway/SectionService.java @@ -29,4 +29,21 @@ private static boolean isExistStation(Line line, String stationName) { return false; } + public static boolean addSection(String lineName, String stationName, int stationIndex, + boolean isPrint) { + if (isNotExistLineAndStation(lineName, stationName)) { + return false; + } + Line line = LineRepository.getLine(lineName); + if (isExistStation(line, stationName)) { + return false; + } + Station station = StationRepository.getStation(stationName); + line.insertLineInStation(station, stationIndex); + if (isPrint) { + OutPut.printSectionAddMessage(); + } + return true; + } + } From fe962df85f7f90ccad4b1847057944a1af5e65bf Mon Sep 17 00:00:00 2001 From: mungto Date: Mon, 14 Dec 2020 21:19:33 +0900 Subject: [PATCH 43/91] feat(DataInitService): create addSections Function --- src/main/java/subway/DataInitService.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/main/java/subway/DataInitService.java b/src/main/java/subway/DataInitService.java index 90546a6b2..9319491fc 100644 --- a/src/main/java/subway/DataInitService.java +++ b/src/main/java/subway/DataInitService.java @@ -38,7 +38,10 @@ private static void addLine() { } private static void addSections() { - + SectionService.addSection(LINE_TOW, GANGNAM_STATION, ONE, false); + SectionService.addSection(LINE_THREE, SOUTH_TERMIANL_STATION, ONE, false); + SectionService.addSection(LINE_THREE, YANGJAE_STATION, TWO, false); + SectionService.addSection(LINE_SINBUNDANG, YANGJAE_STATION, ONE, false); } } From e79620167d92b77ad3254f572e2845d8188bcdf7 Mon Sep 17 00:00:00 2001 From: mungto Date: Mon, 14 Dec 2020 22:47:11 +0900 Subject: [PATCH 44/91] feat(UserInterfaceView): create UserInterfaceView Class --- src/main/java/subway/UserInterfaceView.java | 69 +++++++++++++++++++++ 1 file changed, 69 insertions(+) create mode 100644 src/main/java/subway/UserInterfaceView.java diff --git a/src/main/java/subway/UserInterfaceView.java b/src/main/java/subway/UserInterfaceView.java new file mode 100644 index 000000000..46f06e7e0 --- /dev/null +++ b/src/main/java/subway/UserInterfaceView.java @@ -0,0 +1,69 @@ +package subway; + +import java.util.Scanner; + +public class UserInterfaceView { + + private static final String MAIN_VIEW = "## 메인 화면"; + private static final String STATION_MANAGEMENT = "1. 역 관리"; + private static final String LINE_MANAGEMENT = "2. 노선 관리"; + private static final String SECTION_MANAGEMENT = "3. 구간 관리"; + private static final String SUBWAY_LINES_PRINT = "4. 지하철 노선도 출력"; + private static final String QUIT = "Q. 종료"; + private static final String[] MAIN_INTERFACE = {MAIN_VIEW, STATION_MANAGEMENT, LINE_MANAGEMENT, + SECTION_MANAGEMENT, SUBWAY_LINES_PRINT, QUIT}; + private static final String STATION_MANAGEMENT_VIEW = "## 역 관리 화면"; + private static final String STATION_ADD = "1. 역 등록"; + private static final String STATION_DELETE = "2. 역 삭제"; + private static final String STATION_PRINT = "3. 역 조회"; + private static final String BACK = "B. 돌아가기"; + private static final String[] STATION_INTERFACE = {STATION_MANAGEMENT_VIEW, STATION_ADD, + STATION_DELETE, STATION_PRINT, BACK}; + private static final String LINE_VIEW = "## 노선 관리 화면"; + private static final String LINE_ADD = "1. 노선 등록"; + private static final String LINE_DELETE = "2. 노선 삭제"; + private static final String LINE_PRINT = "3. 노선 조회"; + private static final String[] LINE_INTERFACE = {LINE_VIEW, LINE_ADD, LINE_DELETE, LINE_PRINT, + BACK}; + private static final String CHOICE_FUNCTION = "## 원하는 기능을 선택하세요."; + private static final String SECTION_ADD = "1. 구간 등록"; + private static final String SECTION_DELETE = "2. 구간 삭제"; + private static final String[] SECTION_INTERFACE = {SECTION_ADD, SECTION_DELETE, BACK}; + private static final String ONE_STRING = "1"; + private static final String TWO_STRING = "2"; + private static final String THREE_STRING = "3"; + private static final String FOUR_STRING = "4"; + private static final String B = "B"; + private static final String Q = "Q"; + private static final String FUNCTION_ERROR_MESSAGE = OutPut.ERROR + "선택할 수 없는 기능입니다.\n"; + private static final String[] MAIN_CHOICE_LIST = {ONE_STRING, TWO_STRING, THREE_STRING, + FOUR_STRING, Q}; + private static final String[] STATION_AND_LINE_CHOICE_LIST = {ONE_STRING, TWO_STRING, + THREE_STRING, B}; + private static final String[] SECTION_LIST = {ONE_STRING, TWO_STRING, B}; + private static final String STATION_LIST = "## 역 목록"; + private static final String LINE_LIST = "## 노선 목록"; + private static final String SUBWAY_LINES_LIST = "## 지하철 노선도"; + private static final String INPUT_ADD_STATION_NAME = "## 등록할 역 이름을 입력하세요."; + private static final String INPUT_DELETE_STATION_NAME = "## 삭제할 역 이름을 입력하세요."; + private static final String INPUT_ADD_LINE_NAME = "## 등록할 노선 이름을 입력하세요."; + private static final String INPUT_LINE_IN_FIRST_STATION = "## 등록할 노선의 상행 종점역 이름을 입력하세요."; + private static final String INPUT_LINE_IN_LAST_STATION = "## 등록할 노선의 하행 종점역 이름을 입력하세요."; + private static final String INPUT_DELETE_LINE_NAME = "## 삭제할 노선 이름을 입력하세요."; + private static final String INPUT_SECTION_LINE_NAME = "## 노선을 입력하세요."; + private static final String INPUT_SECTION_STATION_NAME = "## 역이름을 입력하세요."; + private static final String INPUT_SECTION_ORDER = "## 순서를 입력하세요."; + private static final String INPUT_SECTION_DELETE_LINE_NAME = "## 삭제할 구간의 노선을 입력하세요."; + private static final String INPUT_SECTION_DELETE_STATION_NAME = "## 삭제할 구간의 역을 입력하세요."; + private static final String INPUT_TYPE_ERROR = OutPut.ERROR + "숫자만 입력이 가능합니다.\n"; + private static final String INPUT_NUMBER_ERROR = OutPut.ERROR + "음수는 입력이 불가능합니다.\n"; + private static final int ZERO = 0; + + private Scanner scanner; + + public UserInterfaceView(Scanner scanner) { + this.scanner = scanner; + } + + +} From 52ec26e6208f74bcd507c46da9c5ffc4b66d5654 Mon Sep 17 00:00:00 2001 From: mungto Date: Mon, 14 Dec 2020 23:04:21 +0900 Subject: [PATCH 45/91] feat(UserInterfaceView): create start Funcion --- src/main/java/subway/UserInterfaceView.java | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/main/java/subway/UserInterfaceView.java b/src/main/java/subway/UserInterfaceView.java index 46f06e7e0..389fcdc5e 100644 --- a/src/main/java/subway/UserInterfaceView.java +++ b/src/main/java/subway/UserInterfaceView.java @@ -1,5 +1,6 @@ package subway; +import java.util.Arrays; import java.util.Scanner; public class UserInterfaceView { @@ -65,5 +66,16 @@ public UserInterfaceView(Scanner scanner) { this.scanner = scanner; } + public void start() { + while (true) { + if (mainStartAndReturnIsQuit()) { + break; + } + } + } + + public boolean mainStartAndReturnIsQuit() { + return false; + } } From 6ab4b9785fd9ed1d01cd77a603f08c1f86c3dbd1 Mon Sep 17 00:00:00 2001 From: mungto Date: Mon, 14 Dec 2020 23:06:22 +0900 Subject: [PATCH 46/91] refactor(Application): call userInterfaceView start Function --- src/main/java/subway/Application.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/main/java/subway/Application.java b/src/main/java/subway/Application.java index 86a62cc97..ba66ffdf5 100644 --- a/src/main/java/subway/Application.java +++ b/src/main/java/subway/Application.java @@ -3,9 +3,12 @@ import java.util.Scanner; public class Application { + public static void main(String[] args) { final Scanner scanner = new Scanner(System.in); // TODO: 프로그램 구현 DataInitService.init(); + UserInterfaceView userInterfaceView = new UserInterfaceView(scanner); + userInterfaceView.start(); } } From 944df463cbe93fe036d7c21afdc702703ce31c00 Mon Sep 17 00:00:00 2001 From: mungto Date: Mon, 14 Dec 2020 23:12:22 +0900 Subject: [PATCH 47/91] feat(UserInterfaceView): create printMainView Function --- src/main/java/subway/UserInterfaceView.java | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/main/java/subway/UserInterfaceView.java b/src/main/java/subway/UserInterfaceView.java index 389fcdc5e..204989f9c 100644 --- a/src/main/java/subway/UserInterfaceView.java +++ b/src/main/java/subway/UserInterfaceView.java @@ -75,7 +75,14 @@ public void start() { } public boolean mainStartAndReturnIsQuit() { - + printMainView(); return false; } + + private void printMainView() { + for (String str : MAIN_INTERFACE) { + System.out.println(str); + } + System.out.println(); + } } From 92ed8046e735512b64cafaaf1374313bf00b7e57 Mon Sep 17 00:00:00 2001 From: mungto Date: Mon, 14 Dec 2020 23:34:04 +0900 Subject: [PATCH 48/91] feat(UserInterfaceView): create getUserInput Function --- src/main/java/subway/UserInterfaceView.java | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/src/main/java/subway/UserInterfaceView.java b/src/main/java/subway/UserInterfaceView.java index 204989f9c..1b7d4c5ea 100644 --- a/src/main/java/subway/UserInterfaceView.java +++ b/src/main/java/subway/UserInterfaceView.java @@ -76,6 +76,13 @@ public void start() { public boolean mainStartAndReturnIsQuit() { printMainView(); + String userInput; + while (true) { + userInput = getUserInput(CHOICE_FUNCTION); + if (Arrays.asList(MAIN_CHOICE_LIST).contains(userInput)) { + break; + } + } return false; } @@ -85,4 +92,11 @@ private void printMainView() { } System.out.println(); } + + private String getUserInput(String str) { + System.out.println(str); + String userInput = scanner.next(); + System.out.println(); + return userInput; + } } From ff10c8eb19f9d771c6778af92b3cf5d56d0bd86e Mon Sep 17 00:00:00 2001 From: mungto Date: Mon, 14 Dec 2020 23:36:54 +0900 Subject: [PATCH 49/91] feat(UserInterfaceView): create printErrorMessage Function --- src/main/java/subway/UserInterfaceView.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/main/java/subway/UserInterfaceView.java b/src/main/java/subway/UserInterfaceView.java index 1b7d4c5ea..b529d02fa 100644 --- a/src/main/java/subway/UserInterfaceView.java +++ b/src/main/java/subway/UserInterfaceView.java @@ -82,6 +82,7 @@ public boolean mainStartAndReturnIsQuit() { if (Arrays.asList(MAIN_CHOICE_LIST).contains(userInput)) { break; } + printErrorMessage(); } return false; } @@ -99,4 +100,8 @@ private String getUserInput(String str) { System.out.println(); return userInput; } + + private void printErrorMessage() { + System.out.println(FUNCTION_ERROR_MESSAGE); + } } From db9a9a7d65f0e2032255434257ce7a369161a661 Mon Sep 17 00:00:00 2001 From: mungto Date: Mon, 14 Dec 2020 23:38:02 +0900 Subject: [PATCH 50/91] feat(UserInterfaceView): create isQuit Function --- src/main/java/subway/UserInterfaceView.java | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/main/java/subway/UserInterfaceView.java b/src/main/java/subway/UserInterfaceView.java index b529d02fa..75fbbdd15 100644 --- a/src/main/java/subway/UserInterfaceView.java +++ b/src/main/java/subway/UserInterfaceView.java @@ -84,6 +84,9 @@ public boolean mainStartAndReturnIsQuit() { } printErrorMessage(); } + if (isQuit(userInput)) { + return true; + } return false; } @@ -104,4 +107,8 @@ private String getUserInput(String str) { private void printErrorMessage() { System.out.println(FUNCTION_ERROR_MESSAGE); } + + private boolean isQuit(String userInput) { + return Q.equals(userInput); + } } From 6e2737ea196429060c82fff6ebaf37500f915849 Mon Sep 17 00:00:00 2001 From: mungto Date: Mon, 14 Dec 2020 23:58:13 +0900 Subject: [PATCH 51/91] feat(UserInterfaceView): create mainToNextFunction Function --- src/main/java/subway/UserInterfaceView.java | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/src/main/java/subway/UserInterfaceView.java b/src/main/java/subway/UserInterfaceView.java index 75fbbdd15..ab5701681 100644 --- a/src/main/java/subway/UserInterfaceView.java +++ b/src/main/java/subway/UserInterfaceView.java @@ -87,6 +87,7 @@ public boolean mainStartAndReturnIsQuit() { if (isQuit(userInput)) { return true; } + return false; } @@ -111,4 +112,18 @@ private void printErrorMessage() { private boolean isQuit(String userInput) { return Q.equals(userInput); } + + private void mainToNextFunction(String userInput) { + if (ONE_STRING.equals(userInput)) { + return; + } + if (TWO_STRING.equals(userInput)) { + return; + } + if (THREE_STRING.equals(userInput)) { + return; + } + if (FOUR_STRING.equals(userInput)) { + } + } } From 178799ab285e376717415b6c528d4cfd40117868 Mon Sep 17 00:00:00 2001 From: mungto Date: Mon, 14 Dec 2020 23:59:16 +0900 Subject: [PATCH 52/91] refactor(UserInterfaceView): add call mainToNextFunction --- src/main/java/subway/UserInterfaceView.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/subway/UserInterfaceView.java b/src/main/java/subway/UserInterfaceView.java index ab5701681..ca5e67c5d 100644 --- a/src/main/java/subway/UserInterfaceView.java +++ b/src/main/java/subway/UserInterfaceView.java @@ -87,7 +87,7 @@ public boolean mainStartAndReturnIsQuit() { if (isQuit(userInput)) { return true; } - + mainToNextFunction(userInput); return false; } From 3ef4622eba03af95b4e2e5c7f515256162487efd Mon Sep 17 00:00:00 2001 From: mungto Date: Tue, 15 Dec 2020 00:07:23 +0900 Subject: [PATCH 53/91] feat(UserInterfaceView): create printStationView Function --- src/main/java/subway/UserInterfaceView.java | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/main/java/subway/UserInterfaceView.java b/src/main/java/subway/UserInterfaceView.java index ca5e67c5d..8ed34922d 100644 --- a/src/main/java/subway/UserInterfaceView.java +++ b/src/main/java/subway/UserInterfaceView.java @@ -115,6 +115,7 @@ private boolean isQuit(String userInput) { private void mainToNextFunction(String userInput) { if (ONE_STRING.equals(userInput)) { + stationStart(); return; } if (TWO_STRING.equals(userInput)) { @@ -126,4 +127,15 @@ private void mainToNextFunction(String userInput) { if (FOUR_STRING.equals(userInput)) { } } + + private void stationStart() { + printStationView(); + } + + private void printStationView() { + for (String str : STATION_INTERFACE) { + System.out.println(str); + } + System.out.println(); + } } From 725031b0f54169f44f2b70b199b7a3e359e08333 Mon Sep 17 00:00:00 2001 From: mungto Date: Tue, 15 Dec 2020 00:17:46 +0900 Subject: [PATCH 54/91] refactor(UserInterfaceView): stationStart Function update add userInput logic --- src/main/java/subway/UserInterfaceView.java | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/main/java/subway/UserInterfaceView.java b/src/main/java/subway/UserInterfaceView.java index 8ed34922d..bf32119c8 100644 --- a/src/main/java/subway/UserInterfaceView.java +++ b/src/main/java/subway/UserInterfaceView.java @@ -130,6 +130,15 @@ private void mainToNextFunction(String userInput) { private void stationStart() { printStationView(); + String userInput; + while (true) { + userInput = getUserInput(CHOICE_FUNCTION); + if (Arrays.asList(STATION_AND_LINE_CHOICE_LIST).contains(userInput)) { + break; + } + printErrorMessage(); + } + } private void printStationView() { From 96e5fdcc6595ec534c5449ee08ee9650d4621234 Mon Sep 17 00:00:00 2001 From: mungto Date: Tue, 15 Dec 2020 00:28:46 +0900 Subject: [PATCH 55/91] feat(UserInterfaceView): create stationToNextFunction --- src/main/java/subway/UserInterfaceView.java | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/src/main/java/subway/UserInterfaceView.java b/src/main/java/subway/UserInterfaceView.java index bf32119c8..b4d0ec890 100644 --- a/src/main/java/subway/UserInterfaceView.java +++ b/src/main/java/subway/UserInterfaceView.java @@ -138,7 +138,7 @@ private void stationStart() { } printErrorMessage(); } - + stationToNextFunction(userInput); } private void printStationView() { @@ -147,4 +147,18 @@ private void printStationView() { } System.out.println(); } + + private void stationToNextFunction(String userInput) { + if (ONE_STRING.equals(userInput)) { + + return; + } + if (TWO_STRING.equals(userInput)) { + + return; + } + if (THREE_STRING.equals(userInput)) { + + } + } } From 97bdfca36349202e4ab5d1d0061ce5e7bc338759 Mon Sep 17 00:00:00 2001 From: mungto Date: Tue, 15 Dec 2020 00:36:43 +0900 Subject: [PATCH 56/91] feat(UserInterfaceView): create addStation Function --- src/main/java/subway/UserInterfaceView.java | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/main/java/subway/UserInterfaceView.java b/src/main/java/subway/UserInterfaceView.java index b4d0ec890..74cd87585 100644 --- a/src/main/java/subway/UserInterfaceView.java +++ b/src/main/java/subway/UserInterfaceView.java @@ -150,7 +150,7 @@ private void printStationView() { private void stationToNextFunction(String userInput) { if (ONE_STRING.equals(userInput)) { - + addStation(); return; } if (TWO_STRING.equals(userInput)) { @@ -161,4 +161,11 @@ private void stationToNextFunction(String userInput) { } } + + private void addStation() { + String stationName = getUserInput(INPUT_ADD_STATION_NAME); + if (!StationService.addStation(stationName, true)) { + stationStart(); + } + } } From eff131b1324be5f37173f7a426b131a6c968d78a Mon Sep 17 00:00:00 2001 From: mungto Date: Tue, 15 Dec 2020 01:06:52 +0900 Subject: [PATCH 57/91] feat(LineRepository): create isExistStation Function Function to find out if a subway station is registered on a line --- src/main/java/subway/domain/LineRepository.java | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/main/java/subway/domain/LineRepository.java b/src/main/java/subway/domain/LineRepository.java index c76333b2e..5f5432a5a 100644 --- a/src/main/java/subway/domain/LineRepository.java +++ b/src/main/java/subway/domain/LineRepository.java @@ -38,4 +38,12 @@ public static Line getLine(String name) { return null; } + public static boolean isExistStation(String name) { + for (Line line : lines) { + if (line.isExistStation(name)) { + return true; + } + } + return false; + } } From e9f694dffb582ff100ed627be2b3cc99a3b8ee3f Mon Sep 17 00:00:00 2001 From: mungto Date: Tue, 15 Dec 2020 01:08:09 +0900 Subject: [PATCH 58/91] feat(StationRepository): create isExistStation Function call LineRepository isExistStation Function --- src/main/java/subway/domain/StationRepository.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/main/java/subway/domain/StationRepository.java b/src/main/java/subway/domain/StationRepository.java index e49b30bab..ead5283af 100644 --- a/src/main/java/subway/domain/StationRepository.java +++ b/src/main/java/subway/domain/StationRepository.java @@ -38,4 +38,8 @@ public static Station getStation(String name) { } return null; } + + public static boolean isExistByLineInStation(String name) { + return LineRepository.isExistStation(name); + } } From c059c61860ca734dbc9c4327a0d71472223712a1 Mon Sep 17 00:00:00 2001 From: mungto Date: Tue, 15 Dec 2020 01:10:49 +0900 Subject: [PATCH 59/91] feat(OutPut): create StationDeleteError Function --- src/main/java/subway/OutPut.java | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/main/java/subway/OutPut.java b/src/main/java/subway/OutPut.java index 484f387e6..0b211824d 100644 --- a/src/main/java/subway/OutPut.java +++ b/src/main/java/subway/OutPut.java @@ -14,6 +14,8 @@ public class OutPut { private static final String NON_EXIST_LINE_ERROR = "존재하지 않는 노선입니다.\n"; private static final String EXIST_STATION_ERROR = "노선에 이미 존재하는 역입니다.\n"; private static final String SECTION_ADD_MESSAGE = "구간이 등록되었습니다.\n"; + private static final String STATION_DELETE_ERROR = "노선에 등록된 지하철 역은 삭제할 수 없습니다.\n"; + private static final String STATION_DELETE_MESSAGE = "지하철 역이 삭제되었습니다.\n"; public static void printStationNameLengthError() { System.out.println(ERROR + STATION_NAME_LENGTH_ERROR); @@ -54,4 +56,8 @@ public static void printExistStationError() { public static void printSectionAddMessage() { System.out.println(INFO + SECTION_ADD_MESSAGE); } + + public static void printStationDeleteError() { + System.out.println(ERROR + STATION_DELETE_ERROR); + } } From f42cae17fe23e9d4fe02ca3ea867808ed0db611c Mon Sep 17 00:00:00 2001 From: mungto Date: Tue, 15 Dec 2020 01:11:21 +0900 Subject: [PATCH 60/91] feat(OutPut): create StationDeleteMessage Function --- src/main/java/subway/OutPut.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/main/java/subway/OutPut.java b/src/main/java/subway/OutPut.java index 0b211824d..7bf778daa 100644 --- a/src/main/java/subway/OutPut.java +++ b/src/main/java/subway/OutPut.java @@ -60,4 +60,8 @@ public static void printSectionAddMessage() { public static void printStationDeleteError() { System.out.println(ERROR + STATION_DELETE_ERROR); } + + public static void printStationDeleteMessage() { + System.out.println(INFO + STATION_DELETE_MESSAGE); + } } From f36eaa2c2a40ee9e1580d847f361dd214388aa48 Mon Sep 17 00:00:00 2001 From: mungto Date: Tue, 15 Dec 2020 02:02:49 +0900 Subject: [PATCH 61/91] feat(StationService): create deleteStation Function --- src/main/java/subway/StationService.java | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/src/main/java/subway/StationService.java b/src/main/java/subway/StationService.java index 68d69ee7e..0eb35d593 100644 --- a/src/main/java/subway/StationService.java +++ b/src/main/java/subway/StationService.java @@ -8,6 +8,7 @@ public class StationService { public static final int MIN_STATION_NAME_LENGTH = 2; public static boolean addStation(String name, boolean isPrint) { + // TODO - 조건검사 함수 분리하기 if (name.length() < MIN_STATION_NAME_LENGTH) { OutPut.printStationNameLengthError(); return false; @@ -22,4 +23,17 @@ public static boolean addStation(String name, boolean isPrint) { } return true; } + + public static boolean deleteStation(String name) { + if (StationRepository.isExistByLineInStation(name)) { + OutPut.printStationDeleteError(); + return false; + } + if (!StationRepository.deleteStation(name)) { + OutPut.printNonExistStationError(name); + return false; + } + OutPut.printStationDeleteMessage(); + return true; + } } \ No newline at end of file From 3451187dc070bbc400a8ae5582a34f83e9e9c3fc Mon Sep 17 00:00:00 2001 From: mungto Date: Tue, 15 Dec 2020 02:11:07 +0900 Subject: [PATCH 62/91] feat(UserInterfaceView): create deleteStation Function --- src/main/java/subway/UserInterfaceView.java | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/main/java/subway/UserInterfaceView.java b/src/main/java/subway/UserInterfaceView.java index 74cd87585..61fa7b4c7 100644 --- a/src/main/java/subway/UserInterfaceView.java +++ b/src/main/java/subway/UserInterfaceView.java @@ -154,7 +154,7 @@ private void stationToNextFunction(String userInput) { return; } if (TWO_STRING.equals(userInput)) { - + deleteStation(); return; } if (THREE_STRING.equals(userInput)) { @@ -168,4 +168,11 @@ private void addStation() { stationStart(); } } + + private void deleteStation() { + String stationName = getUserInput(INPUT_DELETE_STATION_NAME); + if (!StationService.deleteStation(stationName)) { + stationStart(); + } + } } From 17acdf248986bf8959146f8e82a149e71208d3a5 Mon Sep 17 00:00:00 2001 From: mungto Date: Tue, 15 Dec 2020 02:18:43 +0900 Subject: [PATCH 63/91] feat(OutPut): create infoPrint Function --- src/main/java/subway/OutPut.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/main/java/subway/OutPut.java b/src/main/java/subway/OutPut.java index 7bf778daa..547e0ec17 100644 --- a/src/main/java/subway/OutPut.java +++ b/src/main/java/subway/OutPut.java @@ -64,4 +64,8 @@ public static void printStationDeleteError() { public static void printStationDeleteMessage() { System.out.println(INFO + STATION_DELETE_MESSAGE); } + + public static void printName(String name) { + System.out.println(INFO + name); + } } From 940c533d0474387e7d8fe26d66e659a7a3fd69c7 Mon Sep 17 00:00:00 2001 From: mungto Date: Tue, 15 Dec 2020 02:24:49 +0900 Subject: [PATCH 64/91] feat(StationService): create station info print function --- src/main/java/subway/StationService.java | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/main/java/subway/StationService.java b/src/main/java/subway/StationService.java index 0eb35d593..04a17c6df 100644 --- a/src/main/java/subway/StationService.java +++ b/src/main/java/subway/StationService.java @@ -36,4 +36,10 @@ public static boolean deleteStation(String name) { OutPut.printStationDeleteMessage(); return true; } + + public static void print() { + for (Station station : StationRepository.stations()) { + OutPut.printName(station.getName()); + } + } } \ No newline at end of file From 1b3bc7411acf07200f586b822a541036bd3ae9f7 Mon Sep 17 00:00:00 2001 From: mungto Date: Tue, 15 Dec 2020 02:33:56 +0900 Subject: [PATCH 65/91] feat(UserInterfaceView): create station info print function --- src/main/java/subway/UserInterfaceView.java | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/main/java/subway/UserInterfaceView.java b/src/main/java/subway/UserInterfaceView.java index 61fa7b4c7..8ebbd410c 100644 --- a/src/main/java/subway/UserInterfaceView.java +++ b/src/main/java/subway/UserInterfaceView.java @@ -158,7 +158,7 @@ private void stationToNextFunction(String userInput) { return; } if (THREE_STRING.equals(userInput)) { - + printStation(); } } @@ -175,4 +175,10 @@ private void deleteStation() { stationStart(); } } + + private void printStation() { + System.out.println(STATION_LIST); + StationService.print(); + System.out.println(); + } } From e026ab8c881594c1fb721821f3f503dcd13e737e Mon Sep 17 00:00:00 2001 From: mungto Date: Tue, 15 Dec 2020 02:48:23 +0900 Subject: [PATCH 66/91] feat(UserInterfaceView): create printLineView function --- src/main/java/subway/UserInterfaceView.java | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/main/java/subway/UserInterfaceView.java b/src/main/java/subway/UserInterfaceView.java index 8ebbd410c..8f3bf4d09 100644 --- a/src/main/java/subway/UserInterfaceView.java +++ b/src/main/java/subway/UserInterfaceView.java @@ -119,6 +119,7 @@ private void mainToNextFunction(String userInput) { return; } if (TWO_STRING.equals(userInput)) { + lineStart(); return; } if (THREE_STRING.equals(userInput)) { @@ -181,4 +182,15 @@ private void printStation() { StationService.print(); System.out.println(); } + + private void lineStart() { + printLineView(); + } + + private void printLineView() { + for (String str : LINE_INTERFACE) { + System.out.println(str); + } + System.out.println(); + } } From 98dc56a4458d63292b58f33528c4ae1220c2b71b Mon Sep 17 00:00:00 2001 From: mungto Date: Tue, 15 Dec 2020 02:54:48 +0900 Subject: [PATCH 67/91] refactor(UserInterfaceView): lineStart Function update add userInput logic and printErrorMessage --- src/main/java/subway/UserInterfaceView.java | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/main/java/subway/UserInterfaceView.java b/src/main/java/subway/UserInterfaceView.java index 8f3bf4d09..4557f6ce2 100644 --- a/src/main/java/subway/UserInterfaceView.java +++ b/src/main/java/subway/UserInterfaceView.java @@ -185,6 +185,14 @@ private void printStation() { private void lineStart() { printLineView(); + String userInput; + while (true) { + userInput = getUserInput(CHOICE_FUNCTION); + if (Arrays.asList(STATION_AND_LINE_CHOICE_LIST).contains(userInput)) { + break; + } + printErrorMessage(); + } } private void printLineView() { From bf26c86ca6a1ed83e92b1eae058b19815db1b6bd Mon Sep 17 00:00:00 2001 From: mungto Date: Tue, 15 Dec 2020 03:19:41 +0900 Subject: [PATCH 68/91] feat(UserInterfaceView): create lineToNextFunction --- src/main/java/subway/UserInterfaceView.java | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/src/main/java/subway/UserInterfaceView.java b/src/main/java/subway/UserInterfaceView.java index 4557f6ce2..e031fa1fd 100644 --- a/src/main/java/subway/UserInterfaceView.java +++ b/src/main/java/subway/UserInterfaceView.java @@ -193,6 +193,7 @@ private void lineStart() { } printErrorMessage(); } + lineToNextFunction(userInput); } private void printLineView() { @@ -201,4 +202,20 @@ private void printLineView() { } System.out.println(); } + + private void lineToNextFunction(String userInput) { + if (ONE_STRING.equals(userInput)) { + addLine(); + return; + } + if (TWO_STRING.equals(userInput)) { + + return; + } + if (THREE_STRING.equals(userInput)) { + + } + } + + } From 9d523cf9913bd5e8b259c059adf4586929097ea2 Mon Sep 17 00:00:00 2001 From: mungto Date: Tue, 15 Dec 2020 03:42:12 +0900 Subject: [PATCH 69/91] feat(UserInterfaceView): create addLine Function --- src/main/java/subway/UserInterfaceView.java | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/main/java/subway/UserInterfaceView.java b/src/main/java/subway/UserInterfaceView.java index e031fa1fd..a21a224a6 100644 --- a/src/main/java/subway/UserInterfaceView.java +++ b/src/main/java/subway/UserInterfaceView.java @@ -217,5 +217,12 @@ private void lineToNextFunction(String userInput) { } } - + private void addLine() { + String lineName = getUserInput(INPUT_ADD_LINE_NAME); + String firstStationName = getUserInput(INPUT_LINE_IN_FIRST_STATION); + String lastStationName = getUserInput(INPUT_LINE_IN_LAST_STATION); + if (!LineService.addLine(lineName, firstStationName, lastStationName, true)) { + lineStart(); + } + } } From b7f9998237994d7b0d88ff742828c57c809b511c Mon Sep 17 00:00:00 2001 From: mungto Date: Tue, 15 Dec 2020 03:58:05 +0900 Subject: [PATCH 70/91] feat(OutPut): create LineDeleteMessage Function --- src/main/java/subway/OutPut.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/main/java/subway/OutPut.java b/src/main/java/subway/OutPut.java index 547e0ec17..bc84a093b 100644 --- a/src/main/java/subway/OutPut.java +++ b/src/main/java/subway/OutPut.java @@ -16,6 +16,7 @@ public class OutPut { private static final String SECTION_ADD_MESSAGE = "구간이 등록되었습니다.\n"; private static final String STATION_DELETE_ERROR = "노선에 등록된 지하철 역은 삭제할 수 없습니다.\n"; private static final String STATION_DELETE_MESSAGE = "지하철 역이 삭제되었습니다.\n"; + private static final String LINE_DELETE_MESSAGE = "지하철 노선이 삭제되었습니다.\n"; public static void printStationNameLengthError() { System.out.println(ERROR + STATION_NAME_LENGTH_ERROR); @@ -68,4 +69,8 @@ public static void printStationDeleteMessage() { public static void printName(String name) { System.out.println(INFO + name); } + + public static void printLineDeleteMessage() { + System.out.println(INFO + LINE_DELETE_MESSAGE); + } } From ca52458c20d24b0ff6d408fc1ccbf542e951d394 Mon Sep 17 00:00:00 2001 From: mungto Date: Tue, 15 Dec 2020 04:07:56 +0900 Subject: [PATCH 71/91] feat(LineService): create deleteLine Function --- src/main/java/subway/LineService.java | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/main/java/subway/LineService.java b/src/main/java/subway/LineService.java index 4a0d99143..0e7c2a8b9 100644 --- a/src/main/java/subway/LineService.java +++ b/src/main/java/subway/LineService.java @@ -48,4 +48,12 @@ public static boolean addLine(String lineName, String firstStationName, String l } return true; } + + public static void deleteLine(String lineName) { + if (!LineRepository.deleteLineByName(lineName)) { + OutPut.printNonExistLineError(); + return; + } + OutPut.printLineDeleteMessage(); + } } From a488a5bf7a892f70c1bfd35d28821b51dfc83d71 Mon Sep 17 00:00:00 2001 From: mungto Date: Tue, 15 Dec 2020 04:16:20 +0900 Subject: [PATCH 72/91] feat(UserInterfaceView): create deleteLine Function --- src/main/java/subway/UserInterfaceView.java | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/main/java/subway/UserInterfaceView.java b/src/main/java/subway/UserInterfaceView.java index a21a224a6..994e9ccc8 100644 --- a/src/main/java/subway/UserInterfaceView.java +++ b/src/main/java/subway/UserInterfaceView.java @@ -209,7 +209,7 @@ private void lineToNextFunction(String userInput) { return; } if (TWO_STRING.equals(userInput)) { - + deleteLine(); return; } if (THREE_STRING.equals(userInput)) { @@ -225,4 +225,9 @@ private void addLine() { lineStart(); } } + + private void deleteLine() { + String lineName = getUserInput(INPUT_DELETE_LINE_NAME); + LineService.deleteLine(lineName); + } } From b56b78994869a23c6e0ca5d631e93cb12c442e8e Mon Sep 17 00:00:00 2001 From: mungto Date: Tue, 15 Dec 2020 04:28:11 +0900 Subject: [PATCH 73/91] feat(LineService): create print Line info Function --- src/main/java/subway/LineService.java | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/main/java/subway/LineService.java b/src/main/java/subway/LineService.java index 0e7c2a8b9..dd25eb720 100644 --- a/src/main/java/subway/LineService.java +++ b/src/main/java/subway/LineService.java @@ -56,4 +56,10 @@ public static void deleteLine(String lineName) { } OutPut.printLineDeleteMessage(); } + + public static void print() { + for (Line line : LineRepository.lines()) { + OutPut.printName(line.getName()); + } + } } From 1aa4d6f100451aadb82b2662766c6191b13b43a9 Mon Sep 17 00:00:00 2001 From: mungto Date: Tue, 15 Dec 2020 04:42:35 +0900 Subject: [PATCH 74/91] feat(UserInterfaceView): create print Line info Function --- src/main/java/subway/UserInterfaceView.java | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/main/java/subway/UserInterfaceView.java b/src/main/java/subway/UserInterfaceView.java index 994e9ccc8..80e39cbc5 100644 --- a/src/main/java/subway/UserInterfaceView.java +++ b/src/main/java/subway/UserInterfaceView.java @@ -213,7 +213,7 @@ private void lineToNextFunction(String userInput) { return; } if (THREE_STRING.equals(userInput)) { - + printLine(); } } @@ -230,4 +230,12 @@ private void deleteLine() { String lineName = getUserInput(INPUT_DELETE_LINE_NAME); LineService.deleteLine(lineName); } + + private void printLine() { + System.out.println(LINE_LIST); + LineService.print(); + System.out.println(); + } + + } From 385b4a276df44191687567a390785c8de84aa8a8 Mon Sep 17 00:00:00 2001 From: mungto Date: Tue, 15 Dec 2020 04:44:30 +0900 Subject: [PATCH 75/91] feat(UserInterfaceView): create print Section view Function --- src/main/java/subway/UserInterfaceView.java | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/main/java/subway/UserInterfaceView.java b/src/main/java/subway/UserInterfaceView.java index 80e39cbc5..fe8113a9b 100644 --- a/src/main/java/subway/UserInterfaceView.java +++ b/src/main/java/subway/UserInterfaceView.java @@ -123,6 +123,7 @@ private void mainToNextFunction(String userInput) { return; } if (THREE_STRING.equals(userInput)) { + sectionStart(); return; } if (FOUR_STRING.equals(userInput)) { @@ -237,5 +238,14 @@ private void printLine() { System.out.println(); } + private void sectionStart() { + printSectionView(); + } + private void printSectionView() { + for (String str : SECTION_INTERFACE) { + System.out.println(str); + } + System.out.println(); + } } From 95c7c108e471299ce0f70b932ff9ea14fd76096e Mon Sep 17 00:00:00 2001 From: mungto Date: Tue, 15 Dec 2020 04:53:10 +0900 Subject: [PATCH 76/91] refactor(UserInterfaceView): sectionStart Function update --- src/main/java/subway/UserInterfaceView.java | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/main/java/subway/UserInterfaceView.java b/src/main/java/subway/UserInterfaceView.java index fe8113a9b..831e4c10f 100644 --- a/src/main/java/subway/UserInterfaceView.java +++ b/src/main/java/subway/UserInterfaceView.java @@ -240,6 +240,14 @@ private void printLine() { private void sectionStart() { printSectionView(); + String userInput; + while (true) { + userInput = getUserInput(CHOICE_FUNCTION); + if (Arrays.asList(SECTION_LIST).contains(userInput)) { + break; + } + printErrorMessage(); + } } private void printSectionView() { From 36ad66c46720fd834a6c60f427d5f602f1847f64 Mon Sep 17 00:00:00 2001 From: mungto Date: Tue, 15 Dec 2020 12:33:34 +0900 Subject: [PATCH 77/91] feat(UserInterfaceView): create SectionToNextFunction Function --- src/main/java/subway/UserInterfaceView.java | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/main/java/subway/UserInterfaceView.java b/src/main/java/subway/UserInterfaceView.java index 831e4c10f..7f40187dd 100644 --- a/src/main/java/subway/UserInterfaceView.java +++ b/src/main/java/subway/UserInterfaceView.java @@ -248,6 +248,7 @@ private void sectionStart() { } printErrorMessage(); } + SectionToNextFunction(userInput); } private void printSectionView() { @@ -256,4 +257,12 @@ private void printSectionView() { } System.out.println(); } + + private void SectionToNextFunction(String userInput) { + if (ONE_STRING.equals(userInput)) { + return; + } + if (TWO_STRING.equals(userInput)) { + } + } } From a46966a434a648ee202f629e5c074427c8ac46e9 Mon Sep 17 00:00:00 2001 From: mungto Date: Tue, 15 Dec 2020 12:53:47 +0900 Subject: [PATCH 78/91] feat(UserInterfaceView): create getUserInputInt Function --- src/main/java/subway/UserInterfaceView.java | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/src/main/java/subway/UserInterfaceView.java b/src/main/java/subway/UserInterfaceView.java index 7f40187dd..a9828cd6b 100644 --- a/src/main/java/subway/UserInterfaceView.java +++ b/src/main/java/subway/UserInterfaceView.java @@ -265,4 +265,24 @@ private void SectionToNextFunction(String userInput) { if (TWO_STRING.equals(userInput)) { } } + + private int getUserInputInt() { + int userInput; + while (true) { + System.out.println(INPUT_SECTION_ORDER); + try { + userInput = Integer.parseInt(scanner.next()); + System.out.println(); + } catch (Exception e) { + System.out.println(INPUT_TYPE_ERROR); + continue; + } + if (userInput < ZERO) { + System.out.println(INPUT_NUMBER_ERROR); + continue; + } + break; + } + return userInput; + } } From 7eb48bfb3f32abbe758e53dfdea29b70a5a024c3 Mon Sep 17 00:00:00 2001 From: mungto Date: Tue, 15 Dec 2020 15:14:42 +0900 Subject: [PATCH 79/91] feat(UserInterfaceView): create addSection Function --- src/main/java/subway/UserInterfaceView.java | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/main/java/subway/UserInterfaceView.java b/src/main/java/subway/UserInterfaceView.java index a9828cd6b..f7c3114ec 100644 --- a/src/main/java/subway/UserInterfaceView.java +++ b/src/main/java/subway/UserInterfaceView.java @@ -260,6 +260,7 @@ private void printSectionView() { private void SectionToNextFunction(String userInput) { if (ONE_STRING.equals(userInput)) { + addSection(); return; } if (TWO_STRING.equals(userInput)) { @@ -285,4 +286,13 @@ private int getUserInputInt() { } return userInput; } + + private void addSection() { + String lineName = getUserInput(INPUT_SECTION_LINE_NAME); + String stationName = getUserInput(INPUT_SECTION_STATION_NAME); + int index = getUserInputInt(); + if (!SectionService.addSection(lineName, stationName, index, true)) { + sectionStart(); + } + } } From c745e0bb7ba5af3c849aba03a038b95c27053915 Mon Sep 17 00:00:00 2001 From: mungto Date: Tue, 15 Dec 2020 15:37:07 +0900 Subject: [PATCH 80/91] feat(Line): create return lineInStationList Function --- src/main/java/subway/domain/Line.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/main/java/subway/domain/Line.java b/src/main/java/subway/domain/Line.java index 2746b3c9d..adf5c3edf 100644 --- a/src/main/java/subway/domain/Line.java +++ b/src/main/java/subway/domain/Line.java @@ -1,6 +1,7 @@ package subway.domain; import java.util.ArrayList; +import java.util.Collections; import java.util.List; public class Line { @@ -12,6 +13,10 @@ public Line(String name) { this.name = name; } + public List lineInStationList() { + return Collections.unmodifiableList(lineInStationList); + } + public String getName() { return name; } From 1390e23a162ad69e481b78656108ce0ca78ee2cb Mon Sep 17 00:00:00 2001 From: mungto Date: Tue, 15 Dec 2020 16:00:16 +0900 Subject: [PATCH 81/91] feat(Line): create deleteLineByName Function --- src/main/java/subway/domain/Line.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/main/java/subway/domain/Line.java b/src/main/java/subway/domain/Line.java index adf5c3edf..13e3f5d75 100644 --- a/src/main/java/subway/domain/Line.java +++ b/src/main/java/subway/domain/Line.java @@ -3,6 +3,7 @@ import java.util.ArrayList; import java.util.Collections; import java.util.List; +import java.util.Objects; public class Line { @@ -46,4 +47,8 @@ public void insertLineInStation(Station station, int index) { } lineInStationList.add(index, station); } + + public boolean deleteLineByName(String name) { + return lineInStationList.removeIf(station -> Objects.equals(station.getName(), name)); + } } From 0a0823287f73ab010f9643be365794d58e402868 Mon Sep 17 00:00:00 2001 From: mungto Date: Tue, 15 Dec 2020 16:19:39 +0900 Subject: [PATCH 82/91] feat(OutPut): create SectionDeleteSizeError Function --- src/main/java/subway/OutPut.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/main/java/subway/OutPut.java b/src/main/java/subway/OutPut.java index bc84a093b..3bfc2a0de 100644 --- a/src/main/java/subway/OutPut.java +++ b/src/main/java/subway/OutPut.java @@ -17,6 +17,7 @@ public class OutPut { private static final String STATION_DELETE_ERROR = "노선에 등록된 지하철 역은 삭제할 수 없습니다.\n"; private static final String STATION_DELETE_MESSAGE = "지하철 역이 삭제되었습니다.\n"; private static final String LINE_DELETE_MESSAGE = "지하철 노선이 삭제되었습니다.\n"; + private static final String SECTION_DELETE_SIZE_ERROR = "노선에 포함된 역이 두개 이하일 때는 역을 제거할 수 없습니다.\n"; public static void printStationNameLengthError() { System.out.println(ERROR + STATION_NAME_LENGTH_ERROR); @@ -73,4 +74,8 @@ public static void printName(String name) { public static void printLineDeleteMessage() { System.out.println(INFO + LINE_DELETE_MESSAGE); } + + public static void printSectionDeleteSizeError() { + System.out.println(ERROR + SECTION_DELETE_SIZE_ERROR); + } } From e34d72ac7f41254df4d60a114dd2ce39688e0b42 Mon Sep 17 00:00:00 2001 From: mungto Date: Tue, 15 Dec 2020 16:25:22 +0900 Subject: [PATCH 83/91] feat(OutPut): create SectionDeleteMessage Function --- src/main/java/subway/OutPut.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/main/java/subway/OutPut.java b/src/main/java/subway/OutPut.java index 3bfc2a0de..22289fdd4 100644 --- a/src/main/java/subway/OutPut.java +++ b/src/main/java/subway/OutPut.java @@ -18,6 +18,7 @@ public class OutPut { private static final String STATION_DELETE_MESSAGE = "지하철 역이 삭제되었습니다.\n"; private static final String LINE_DELETE_MESSAGE = "지하철 노선이 삭제되었습니다.\n"; private static final String SECTION_DELETE_SIZE_ERROR = "노선에 포함된 역이 두개 이하일 때는 역을 제거할 수 없습니다.\n"; + private static final String SECTION_DELETE_MESSAGE = "구간이 삭제되었습니다.\n"; public static void printStationNameLengthError() { System.out.println(ERROR + STATION_NAME_LENGTH_ERROR); @@ -78,4 +79,8 @@ public static void printLineDeleteMessage() { public static void printSectionDeleteSizeError() { System.out.println(ERROR + SECTION_DELETE_SIZE_ERROR); } + + public static void printSectionDeleteMessage() { + System.out.println(INFO + SECTION_DELETE_MESSAGE); + } } From 0f29719ff7b88e62602d62d703f50ecd9e97b4ce Mon Sep 17 00:00:00 2001 From: mungto Date: Tue, 15 Dec 2020 21:28:35 +0900 Subject: [PATCH 84/91] feat(SectionService): create isNotDeleteSize Function Function to check if the size of a line that can be deleted --- src/main/java/subway/SectionService.java | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/main/java/subway/SectionService.java b/src/main/java/subway/SectionService.java index bdf96f0ad..1e0842c91 100644 --- a/src/main/java/subway/SectionService.java +++ b/src/main/java/subway/SectionService.java @@ -46,4 +46,11 @@ public static boolean addSection(String lineName, String stationName, int statio return true; } + private static boolean isNotDeleteSize(Line line) { + if (line.lineInStationList().size() <= DELETE_MIN_SIZE) { + OutPut.printSectionDeleteSizeError(); + return true; + } + return false; + } } From 29c2a32fb66f15909e280c805901e36faff86069 Mon Sep 17 00:00:00 2001 From: mungto Date: Tue, 15 Dec 2020 21:34:04 +0900 Subject: [PATCH 85/91] docs(readme): update readme --- README.md | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 05859e34c..e01a2f293 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,8 @@ # 지하철 노선도 미션 - 김유기 - 지하철 역과 노선을 관리하는 지하철 노선도 기능을 구현한다. + + ## 기능 목록 * 초기 역, 노선 설정해야 한다. @@ -9,20 +11,25 @@ * 지하철 역의 이름은 중복이 불가능 해야 한다. * 지하철 역은 삭제가 가능하다. * 노선에 등록된 지하철 역은 삭제가 불가능 해야 한다. + * 존재하지 않는 역은 삭제가 불가능 하다. * 지하철 역의 목록 조회가 가능해야 한다. * 지하철 노선은 등록이 가능하다. * 지하철 노선의 이름은 2글자 이상이여야 한다. * 지하철 노선의 이름은 중복이 불가능 해야 한다. + * 상행역과 하행역이 존재하지 않는경우 에러를 출력한다. * 지하철 노선은 삭제가 가능하다. * 지하철 노선을 등록할때 상행종점역과 하행 종점역을 입력받는다. * 지하철 노선의 목록을 조회할 수 있다. * 지하철 노선에 구간을 추가 할 수 있다. * 하나의 역은 여러개의 노선에 추가 될 수 있다. * 역과 역사이에 새로운 역이 추가 될 수 있다. - * 노선에서 갈래길은 생길 수 없다. ? 이해불가 + * 없는 역이 추가될때 에러를 출력한다. + * 음수입력시 에러를 출력한다. + * 구간의 길이보다 큰 값이 들어오면 마지막으로 추가한다. + * 이미 존재하는 역이 들어오면 에러를 출력한다. * 지하철 노선에 구간을 삭제 할 수 있다. - * 종점을 제거할 경우 다음 역이 종점이 된다. * 노선에 포함된 역이 두개 이하일 때는 역을 제거할 수 없다. + * 노선에 없는 역을 삭제할때 에러를 출력한다. * 지하철 노선에 등록된 역은 조회가 가능하다. * 상행종점부터 하행 종점까지 연결된 순서대로 역 목록을 조회할 수 있다. * 에러 발생시 `[ERROR]` 을 붙여서 출력한다. From 8e2a83fdad2da3f2ca84da06f8584953d4c51eab Mon Sep 17 00:00:00 2001 From: mungto Date: Tue, 15 Dec 2020 21:59:46 +0900 Subject: [PATCH 86/91] feat(SectionService): create deleteSection Function --- src/main/java/subway/SectionService.java | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/src/main/java/subway/SectionService.java b/src/main/java/subway/SectionService.java index 1e0842c91..7522451d3 100644 --- a/src/main/java/subway/SectionService.java +++ b/src/main/java/subway/SectionService.java @@ -53,4 +53,20 @@ private static boolean isNotDeleteSize(Line line) { } return false; } + + public static boolean deleteSection(String lineName, String stationName) { + if (isNotExistLineAndStation(lineName, stationName)) { + return false; + } + Line line = LineRepository.getLine(lineName); + if (isNotDeleteSize(line)) { + return false; + } + if (!line.deleteLineByName(stationName)) { + OutPut.printNonExistStationError(stationName); + return false; + } + OutPut.printSectionDeleteMessage(); + return true; + } } From 98891505fd91d6d42ccba7f8b97a77ebb09a70a7 Mon Sep 17 00:00:00 2001 From: mungto Date: Tue, 15 Dec 2020 22:08:23 +0900 Subject: [PATCH 87/91] feat(UserInterfaceView): create deleteSection Function --- src/main/java/subway/UserInterfaceView.java | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/main/java/subway/UserInterfaceView.java b/src/main/java/subway/UserInterfaceView.java index f7c3114ec..d552baedf 100644 --- a/src/main/java/subway/UserInterfaceView.java +++ b/src/main/java/subway/UserInterfaceView.java @@ -264,6 +264,7 @@ private void SectionToNextFunction(String userInput) { return; } if (TWO_STRING.equals(userInput)) { + deleteSection(); } } @@ -295,4 +296,12 @@ private void addSection() { sectionStart(); } } + + private void deleteSection() { + String lineName = getUserInput(INPUT_SECTION_DELETE_LINE_NAME); + String stationName = getUserInput(INPUT_SECTION_DELETE_STATION_NAME); + if (!SectionService.deleteSection(lineName, stationName)) { + sectionStart(); + } + } } From 8888537d557a09755d38f90998dd81b38033bfef Mon Sep 17 00:00:00 2001 From: mungto Date: Tue, 15 Dec 2020 22:14:17 +0900 Subject: [PATCH 88/91] feat(OutPut): create printLine Function --- src/main/java/subway/OutPut.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/main/java/subway/OutPut.java b/src/main/java/subway/OutPut.java index 22289fdd4..d53acada5 100644 --- a/src/main/java/subway/OutPut.java +++ b/src/main/java/subway/OutPut.java @@ -83,4 +83,8 @@ public static void printSectionDeleteSizeError() { public static void printSectionDeleteMessage() { System.out.println(INFO + SECTION_DELETE_MESSAGE); } + + public static void printNextLine() { + System.out.println(); + } } From 38264ca43764d696b12adb34b6428620905430e1 Mon Sep 17 00:00:00 2001 From: mungto Date: Tue, 15 Dec 2020 22:27:08 +0900 Subject: [PATCH 89/91] feat(SectionService): create print Subway Info Function --- src/main/java/subway/SectionService.java | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/main/java/subway/SectionService.java b/src/main/java/subway/SectionService.java index 7522451d3..34cec8242 100644 --- a/src/main/java/subway/SectionService.java +++ b/src/main/java/subway/SectionService.java @@ -8,6 +8,7 @@ public class SectionService { private static final int DELETE_MIN_SIZE = 2; + private static final String THREE_MINUS = "---"; private static boolean isNotExistLineAndStation(String lineName, String stationName) { if (!LineRepository.isEqualLineName(lineName)) { @@ -69,4 +70,15 @@ public static boolean deleteSection(String lineName, String stationName) { OutPut.printSectionDeleteMessage(); return true; } + + public static void print() { + for (Line line : LineRepository.lines()) { + OutPut.printName(line.getName()); + OutPut.printName(THREE_MINUS); + for (Station station : line.lineInStationList()) { + OutPut.printName(station.getName()); + } + OutPut.printNextLine(); + } + } } From 603f3d66799022fa1512fb55c704484fdcab5f6b Mon Sep 17 00:00:00 2001 From: mungto Date: Tue, 15 Dec 2020 22:45:05 +0900 Subject: [PATCH 90/91] feat(UserInterfaceView): create print Subway Info Function --- src/main/java/subway/UserInterfaceView.java | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/main/java/subway/UserInterfaceView.java b/src/main/java/subway/UserInterfaceView.java index d552baedf..30a7a24bd 100644 --- a/src/main/java/subway/UserInterfaceView.java +++ b/src/main/java/subway/UserInterfaceView.java @@ -127,6 +127,7 @@ private void mainToNextFunction(String userInput) { return; } if (FOUR_STRING.equals(userInput)) { + printSubwayLine(); } } @@ -304,4 +305,10 @@ private void deleteSection() { sectionStart(); } } + + private void printSubwayLine() { + System.out.println(SUBWAY_LINES_LIST); + SectionService.print(); + System.out.println(); + } } From b61717855206708d1e9555c70c356db8467df6ae Mon Sep 17 00:00:00 2001 From: mungto Date: Tue, 15 Dec 2020 22:58:02 +0900 Subject: [PATCH 91/91] refactor(StationService): Separating functions to check conditions addStation function Separating --- src/main/java/subway/StationService.java | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/src/main/java/subway/StationService.java b/src/main/java/subway/StationService.java index 04a17c6df..4ddf6c23e 100644 --- a/src/main/java/subway/StationService.java +++ b/src/main/java/subway/StationService.java @@ -7,14 +7,20 @@ public class StationService { public static final int MIN_STATION_NAME_LENGTH = 2; - public static boolean addStation(String name, boolean isPrint) { - // TODO - 조건검사 함수 분리하기 + public static boolean isNotStationState(String name) { if (name.length() < MIN_STATION_NAME_LENGTH) { OutPut.printStationNameLengthError(); - return false; + return true; } if (StationRepository.isEqualStationName(name)) { OutPut.printStationNameDuplicateError(); + return true; + } + return false; + } + + public static boolean addStation(String name, boolean isPrint) { + if (isNotStationState(name)) { return false; } StationRepository.addStation(new Station(name));