From 1efaff7a3ca1864924ffaf730c20d82f398d95e4 Mon Sep 17 00:00:00 2001 From: JinseongHwang Date: Sat, 19 Dec 2020 13:46:14 +0900 Subject: [PATCH 01/38] =?UTF-8?q?docs:=20=EA=B8=B0=EB=8A=A5=20=EB=AA=A9?= =?UTF-8?q?=EB=A1=9D=20=EC=9E=91=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/README.md | 109 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 109 insertions(+) create mode 100644 docs/README.md diff --git a/docs/README.md b/docs/README.md new file mode 100644 index 000000000..17ee0a5db --- /dev/null +++ b/docs/README.md @@ -0,0 +1,109 @@ +# 지하철 노선도 경로 조회 미션 + +*작성자: 황진성(eddy5360@naver.com)* + +우아한 테크코스 3기 웹 백엔드 선발 과정 최종 코딩테스트입니다. + +
+ +## 📃 구현할 기능 목록 + +
+ +* 초기 설정 +``` +- 노선, 역, 거리, 시간 정보들을 초기화한다. +- 방향이 정해져있지 않으므로 경로를 양방향으로 설정한다. +``` + +* 경로 조회 기능 +``` +- 출발역과 도착역을 입력받는다. +- 최단거리 또는 최소시간 기준으로 경로를 조회할 수 있다. +[예외상황] + - 출발역과 도착역이 동일하다. + - 출발역에서 도착역으로 갈 수 없다(연결되어있지 않다.) +``` + +
+ +## ✍ 클래스 설계 목록 + +
+ +## domain + +* Line +``` +- 노선의 이름을 저장한다. +``` + +* LineRepository +``` +- 노선들의 목록을 저장한다. +``` + +* Station +``` +- 역의 이름을 저장한다. +``` + +* StationRepository +``` +- 역들의 목록을 저장한다. +``` + +* Connection +``` +- 연결된 역 사이의 시간과 거리를 저장한다. +``` + +* Connections +``` +- 모든 Connection 객체들을 일급 컬렉션 형태로 저장한다. +``` + + +## view + +* InputView +``` +- 기능 선택 +- 출발, 도착 역 입력 +``` + +* OutputView +``` +- 메인 화면 출력 + - 1. 경로 조회 + - Q. 종료 +- 경로 조회 화면 출력 + - 1. 최단거리 + - 2. 최소시간 + - B. 돌아가기 +- 조회 결과 출력 +``` + + +## controller + +* MainController +``` +- 메인 화면을 출력하고, 입력받은 기능 값에 의존해 다음 기능을 수행한다. +``` + +* InquirePathController +``` +- 경로 기준 화면을 출력하고, 입력받은 기능 값에 의존해 경로를 조회한다. +``` + + +## util + +* Validator +``` +- 현재 화면에서 선택할 수 있는 기능인지 검증한다. +- 출발역과 도착역이 같은지 검증한다. +- 존재하는 역을 입력했는지 검증한다. +- 서로 연결된 역인지 검증한다. +``` \ No newline at end of file From 87fc4ab9a69335c21626ab400bdb5ff3bc95c427 Mon Sep 17 00:00:00 2001 From: JinseongHwang Date: Sat, 19 Dec 2020 14:06:33 +0900 Subject: [PATCH 02/38] =?UTF-8?q?feat:=20=EC=B4=88=EA=B8=B0=ED=99=94?= =?UTF-8?q?=ED=95=A0=20=EC=97=AD=EB=93=A4=EC=9D=98=20=EC=9D=B4=EB=A6=84?= =?UTF-8?q?=EC=9D=84=20enum=EC=97=90=EC=84=9C=20=EC=A0=95=EC=9D=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/subway/Stations.java | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 src/main/java/subway/Stations.java diff --git a/src/main/java/subway/Stations.java b/src/main/java/subway/Stations.java new file mode 100644 index 000000000..8666bed96 --- /dev/null +++ b/src/main/java/subway/Stations.java @@ -0,0 +1,22 @@ +package subway; + +public enum Stations { + + GYODAE("교대역"), + GANGNAM("강남역"), + YEOKSAM("역삼역"), + NAMBU_BUS_TERMINAL("남부터미널역"), + YANGJAE("양재역"), + YANGJAE_CITIZEN_FOREST("양재시민의숲역"), + MAEBONG("매봉역"); + + private String name; + Stations(String name){ + this.name = name; + } + + public String getName() { + return name; + } + +} From 5eaf89de70b1ead805d778e79ae420cc2d3d6c1c Mon Sep 17 00:00:00 2001 From: JinseongHwang Date: Sat, 19 Dec 2020 14:06:42 +0900 Subject: [PATCH 03/38] =?UTF-8?q?feat:=20=EC=B4=88=EA=B8=B0=ED=99=94?= =?UTF-8?q?=ED=95=A0=20=EB=85=B8=EC=84=A0=EB=93=A4=EC=9D=98=20=EC=9D=B4?= =?UTF-8?q?=EB=A6=84=EC=9D=84=20enum=EC=97=90=EC=84=9C=20=EC=A0=95?= =?UTF-8?q?=EC=9D=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/subway/Lines.java | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) create mode 100644 src/main/java/subway/Lines.java diff --git a/src/main/java/subway/Lines.java b/src/main/java/subway/Lines.java new file mode 100644 index 000000000..ad8ad6fe3 --- /dev/null +++ b/src/main/java/subway/Lines.java @@ -0,0 +1,17 @@ +package subway; + +public enum Lines { + + LINE_2("2호선"), + LINE_3("3호선"), + LINE_SHINBUNDANG("신분당선"); + + private String name; + Lines(String name) { + this.name = name; + } + + public String getName() { + return name; + } +} From ad48e0c6a02501b70d4856729bca59c60a803446 Mon Sep 17 00:00:00 2001 From: JinseongHwang Date: Sat, 19 Dec 2020 14:11:29 +0900 Subject: [PATCH 04/38] =?UTF-8?q?feat:=20=EC=B4=88=EA=B8=B0=20=EC=84=A4?= =?UTF-8?q?=EC=A0=95=ED=95=A0=20=EC=97=AD=EA=B3=BC=20=EB=85=B8=EC=84=A0?= =?UTF-8?q?=EB=93=A4=EC=9D=84=20=EB=93=B1=EB=A1=9D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/subway/util/Initialization.java | 33 +++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 src/main/java/subway/util/Initialization.java diff --git a/src/main/java/subway/util/Initialization.java b/src/main/java/subway/util/Initialization.java new file mode 100644 index 000000000..328242633 --- /dev/null +++ b/src/main/java/subway/util/Initialization.java @@ -0,0 +1,33 @@ +package subway.util; + +import subway.Lines; +import subway.Stations; +import subway.domain.Line; +import subway.domain.LineRepository; +import subway.domain.Station; +import subway.domain.StationRepository; + +public class Initialization { + + public static void set() { + registerStations(); + registerLines(); + } + + private static void registerStations() { + StationRepository.addStation(new Station(Stations.GYODAE.getName())); + StationRepository.addStation(new Station(Stations.GANGNAM.getName())); + StationRepository.addStation(new Station(Stations.YEOKSAM.getName())); + StationRepository.addStation(new Station(Stations.NAMBU_BUS_TERMINAL.getName())); + StationRepository.addStation(new Station(Stations.YANGJAE.getName())); + StationRepository.addStation(new Station(Stations.YANGJAE_CITIZEN_FOREST.getName())); + StationRepository.addStation(new Station(Stations.MAEBONG.getName())); + } + + private static void registerLines() { + LineRepository.addLine(new Line(Lines.LINE_2.getName())); + LineRepository.addLine(new Line(Lines.LINE_3.getName())); + LineRepository.addLine(new Line(Lines.LINE_SHINBUNDANG.getName())); + } + +} From 389d9cfaf38f2bc71d130c485d980a9cecbfec4b Mon Sep 17 00:00:00 2001 From: JinseongHwang Date: Sat, 19 Dec 2020 14:43:08 +0900 Subject: [PATCH 05/38] =?UTF-8?q?feat:=20=EC=97=B0=EA=B2=B0=EB=90=9C=20?= =?UTF-8?q?=EC=97=AD=20=EC=82=AC=EC=9D=B4=EC=9D=98=20=EA=B1=B0=EB=A6=AC?= =?UTF-8?q?=EC=99=80=20=EC=8B=9C=EA=B0=84=EC=9D=84=20=EC=A0=80=EC=9E=A5?= =?UTF-8?q?=ED=95=98=EB=8A=94=20=ED=81=B4=EB=9E=98=EC=8A=A4=20=EC=83=9D?= =?UTF-8?q?=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/subway/domain/Connection.java | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 src/main/java/subway/domain/Connection.java diff --git a/src/main/java/subway/domain/Connection.java b/src/main/java/subway/domain/Connection.java new file mode 100644 index 000000000..cad13fd09 --- /dev/null +++ b/src/main/java/subway/domain/Connection.java @@ -0,0 +1,21 @@ +package subway.domain; + +public class Connection { + + private final String source; + private final String destination; + private final int distance; // (km) 단위 + private final int time; // (분) 단위 + + public Connection(final String source, final String destination, final int distance, final int time) { + this.source = source; + this.destination = destination; + this.distance = distance; + this.time = time; + } + + public Connection getReverse() { + return new Connection(destination, source, distance, time); + } + +} From df6af20ff922aec1af5b6b5051a06e526bc0f264 Mon Sep 17 00:00:00 2001 From: JinseongHwang Date: Sat, 19 Dec 2020 14:43:57 +0900 Subject: [PATCH 06/38] =?UTF-8?q?feat:=20=EB=AA=A8=EB=93=A0=20Connection?= =?UTF-8?q?=20=EA=B0=9D=EC=B2=B4=EB=93=A4=EC=9D=84=20=EC=A0=80=EC=9E=A5?= =?UTF-8?q?=ED=95=98=EB=8A=94=20=ED=81=B4=EB=9E=98=EC=8A=A4=20=EC=83=9D?= =?UTF-8?q?=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/subway/domain/Connections.java | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 src/main/java/subway/domain/Connections.java diff --git a/src/main/java/subway/domain/Connections.java b/src/main/java/subway/domain/Connections.java new file mode 100644 index 000000000..6d1232a00 --- /dev/null +++ b/src/main/java/subway/domain/Connections.java @@ -0,0 +1,18 @@ +package subway.domain; + +import java.util.HashSet; +import java.util.Set; + +public class Connections { + + private static Set connectionSet = new HashSet<>(); + + public static void addConnection(Connection connection) { + connectionSet.add(connection); + connectionSet.add(connection.getReverse()); + } + + public Set getConnections() { + return connectionSet; + } +} From 5a44bf53e28e0d5d81269b0b3df2287cc95b576f Mon Sep 17 00:00:00 2001 From: JinseongHwang Date: Sat, 19 Dec 2020 14:44:22 +0900 Subject: [PATCH 07/38] =?UTF-8?q?feat:=20=EC=97=AD=20=EC=82=AC=EC=9D=B4?= =?UTF-8?q?=EC=9D=98=20Connection=20=EC=B4=88=EA=B8=B0=20=EC=84=A4?= =?UTF-8?q?=EC=A0=95=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/subway/util/Initialization.java | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/src/main/java/subway/util/Initialization.java b/src/main/java/subway/util/Initialization.java index 328242633..15fe971e2 100644 --- a/src/main/java/subway/util/Initialization.java +++ b/src/main/java/subway/util/Initialization.java @@ -2,16 +2,14 @@ import subway.Lines; import subway.Stations; -import subway.domain.Line; -import subway.domain.LineRepository; -import subway.domain.Station; -import subway.domain.StationRepository; +import subway.domain.*; public class Initialization { public static void set() { registerStations(); registerLines(); + registerConnections(); } private static void registerStations() { @@ -30,4 +28,14 @@ private static void registerLines() { LineRepository.addLine(new Line(Lines.LINE_SHINBUNDANG.getName())); } -} + private static void registerConnections() { + Connections.addConnection(new Connection(Stations.GYODAE.getName(), Stations.GANGNAM.getName(), 2, 3)); + Connections.addConnection(new Connection(Stations.GANGNAM.getName(), Stations.YEOKSAM.getName(), 2, 3)); + Connections.addConnection(new Connection(Stations.GYODAE.getName(), Stations.NAMBU_BUS_TERMINAL.getName(), 3,2)); + Connections.addConnection(new Connection(Stations.NAMBU_BUS_TERMINAL.getName(), Stations.YANGJAE.getName(), 6,5)); + Connections.addConnection(new Connection(Stations.YANGJAE.getName(), Stations.MAEBONG.getName(), 1,1)); + Connections.addConnection(new Connection(Stations.GANGNAM.getName(), Stations.YANGJAE.getName(), 2,8)); + Connections.addConnection(new Connection(Stations.YANGJAE.getName(), Stations.YANGJAE_CITIZEN_FOREST.getName(), 10,3)); + } + +} \ No newline at end of file From 49b58fe2e7a6e296381f804258b29503a57b94de Mon Sep 17 00:00:00 2001 From: JinseongHwang Date: Sat, 19 Dec 2020 15:10:09 +0900 Subject: [PATCH 08/38] =?UTF-8?q?feat:=20=EB=A9=94=EC=9D=B8=20=ED=99=94?= =?UTF-8?q?=EB=A9=B4=EC=97=90=EC=84=9C=20=EC=84=A0=ED=83=9D=ED=95=A0=20?= =?UTF-8?q?=EC=88=98=20=EC=9E=88=EB=8A=94=20=EA=B8=B0=EB=8A=A5=20=EB=B2=84?= =?UTF-8?q?=ED=8A=BC=20=EC=83=9D=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/subway/controller/MainButton.java | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 src/main/java/subway/controller/MainButton.java diff --git a/src/main/java/subway/controller/MainButton.java b/src/main/java/subway/controller/MainButton.java new file mode 100644 index 000000000..be981d38e --- /dev/null +++ b/src/main/java/subway/controller/MainButton.java @@ -0,0 +1,15 @@ +package subway.controller; + +public enum MainButton { + INQUIRY("1"), EXIT("Q"); + + private String symbol; + + MainButton(String symbol) { + this.symbol = symbol; + } + + public String getSymbol() { + return symbol; + } +} From 4b1d938a7c920fd9ada310fb593c7f6d1b4eb1ed Mon Sep 17 00:00:00 2001 From: JinseongHwang Date: Sat, 19 Dec 2020 15:10:20 +0900 Subject: [PATCH 09/38] =?UTF-8?q?feat:=20=EA=B2=BD=EB=A1=9C=20=EC=84=A0?= =?UTF-8?q?=ED=83=9D=20=ED=99=94=EB=A9=B4=EC=97=90=EC=84=9C=20=EC=84=A0?= =?UTF-8?q?=ED=83=9D=ED=95=A0=20=EC=88=98=20=EC=9E=88=EB=8A=94=20=EA=B8=B0?= =?UTF-8?q?=EB=8A=A5=20=EB=B2=84=ED=8A=BC=20=EC=83=9D=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/subway/controller/PathButton.java | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 src/main/java/subway/controller/PathButton.java diff --git a/src/main/java/subway/controller/PathButton.java b/src/main/java/subway/controller/PathButton.java new file mode 100644 index 000000000..c808de410 --- /dev/null +++ b/src/main/java/subway/controller/PathButton.java @@ -0,0 +1,15 @@ +package subway.controller; + +public enum PathButton { + SHORTEST_PATH("1"), LEAST_TIME("2"), BACK("B"); + + private String symbol; + + PathButton(String symbol) { + this.symbol = symbol; + } + + public String getSymbol() { + return symbol; + } +} From 2137b0420217b850b8bbcc6005ed2b28bdac2d65 Mon Sep 17 00:00:00 2001 From: JinseongHwang Date: Sat, 19 Dec 2020 15:11:18 +0900 Subject: [PATCH 10/38] =?UTF-8?q?feat:=20=EC=98=88=EC=99=B8=20=EC=83=81?= =?UTF-8?q?=ED=99=A9=EC=9D=84=20=EC=A0=9C=EC=99=B8=ED=95=9C=20=EC=B6=9C?= =?UTF-8?q?=EB=A0=A5=20=ED=95=A8=EC=88=98=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/subway/view/OutputView.java | 58 +++++++++++++++++++++++ 1 file changed, 58 insertions(+) create mode 100644 src/main/java/subway/view/OutputView.java diff --git a/src/main/java/subway/view/OutputView.java b/src/main/java/subway/view/OutputView.java new file mode 100644 index 000000000..94f6cd2c0 --- /dev/null +++ b/src/main/java/subway/view/OutputView.java @@ -0,0 +1,58 @@ +package subway.view; + +public class OutputView { + + private static final String MAIN_TITLE = "## 메인 화면"; + private static final String MAIN_OPTION_INQUIRY = "1. 경로 조회"; + private static final String MAIN_OPTION_EXIT = "Q. 종료"; + + private static final String INQUIRY_TITLE = "## 경로 기준"; + private static final String INQUIRY_SHORTEST_PATH = "1. 최단 거리"; + private static final String INQUIRY_LEAST_TIME = "2. 최소 시간"; + private static final String INQUIRY_BACK = "B. 돌아가기"; + + private static final String QUERY_FUNCTION_SELECT = "## 원하는 기능을 선택하세요."; + private static final String QUERY_SOURCE_STATION = "## 출발역을 입력하세요."; + private static final String QUERY_DESTINATION_STATION = "## 도착역을 입력하세요."; + + public static void printMain() { + System.out.println(MAIN_TITLE); + System.out.println(MAIN_OPTION_INQUIRY); + System.out.println(MAIN_OPTION_EXIT); + printEmptyLine(); + } + + public static void printInquiry() { + System.out.println(INQUIRY_TITLE); + System.out.println(INQUIRY_SHORTEST_PATH); + System.out.println(INQUIRY_LEAST_TIME); + System.out.println(INQUIRY_BACK); + printEmptyLine(); + } + + public static void printFunctionSelectQuery() { + System.out.println(QUERY_FUNCTION_SELECT); + } + + public static void printSourceStationQuery() { + System.out.println(QUERY_SOURCE_STATION); + } + + public static void printDestinationStationQuery() { + System.out.println(QUERY_DESTINATION_STATION); + } + + public static void printInformation(String message) { + System.out.println("[INFO] " + message); + } + + public static void printError(String message) { + System.out.println("[ERROR] " + message); + printEmptyLine(); + } + + public static void printEmptyLine() { + System.out.println(); + } + +} From 63195c7f42ca0ccd69d39a315a80fb2641dc1940 Mon Sep 17 00:00:00 2001 From: JinseongHwang Date: Sat, 19 Dec 2020 15:37:26 +0900 Subject: [PATCH 11/38] =?UTF-8?q?feat:=20=EC=84=A0=ED=83=9D=20=EA=B0=80?= =?UTF-8?q?=EB=8A=A5=ED=95=9C=20=EA=B8=B0=EB=8A=A5=EC=9D=B8=EC=A7=80=20?= =?UTF-8?q?=EA=B2=80=EC=A6=9D=20=ED=95=A8=EC=88=98=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/subway/util/Validator.java | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 src/main/java/subway/util/Validator.java diff --git a/src/main/java/subway/util/Validator.java b/src/main/java/subway/util/Validator.java new file mode 100644 index 000000000..124840bfe --- /dev/null +++ b/src/main/java/subway/util/Validator.java @@ -0,0 +1,16 @@ +package subway.util; + +import subway.view.OutputView; + +import java.util.List; + +public class Validator { + + public static void functionSelect(List choices, String command) { + if (!choices.contains(command)) { + OutputView.printError(OutputView.ERROR_INVALID_SELECT); + throw new IllegalArgumentException(); + } + } + +} From d0353752bfb651bf5c7eb64b89531fd6f9f68045 Mon Sep 17 00:00:00 2001 From: JinseongHwang Date: Sat, 19 Dec 2020 15:37:45 +0900 Subject: [PATCH 12/38] =?UTF-8?q?feat:=20=EC=98=88=EC=99=B8=20=EC=83=81?= =?UTF-8?q?=ED=99=A9=20=EC=B6=9C=EB=A0=A5=20=EA=B5=AC=EB=AC=B8=20=EC=B6=94?= =?UTF-8?q?=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/subway/view/OutputView.java | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/main/java/subway/view/OutputView.java b/src/main/java/subway/view/OutputView.java index 94f6cd2c0..5bd17b8c1 100644 --- a/src/main/java/subway/view/OutputView.java +++ b/src/main/java/subway/view/OutputView.java @@ -15,6 +15,12 @@ public class OutputView { private static final String QUERY_SOURCE_STATION = "## 출발역을 입력하세요."; private static final String QUERY_DESTINATION_STATION = "## 도착역을 입력하세요."; + private static final String TRY_AGAIN = "다시 입력해주세요."; + public static final String ERROR_INVALID_SELECT = "선택할 수 없는 기능입니다." + TRY_AGAIN; + public static final String ERROR_INVALID_STATION = "존재하지 않는 역입니다." + TRY_AGAIN; + public static final String ERROR_SAME_STATION = "출발역과 도착역이 동일합니다." + TRY_AGAIN; + public static final String ERROR_UNREACHABLE = "죄송합니다. 두 역은 연결되어 있지 않습니다."; + public static void printMain() { System.out.println(MAIN_TITLE); System.out.println(MAIN_OPTION_INQUIRY); From 51a75d4be6eaaceecae0cc89f4bd1cd31a5364a0 Mon Sep 17 00:00:00 2001 From: JinseongHwang Date: Sat, 19 Dec 2020 15:38:11 +0900 Subject: [PATCH 13/38] =?UTF-8?q?feat:=20=EB=A9=94=EC=9D=B8=20=ED=99=94?= =?UTF-8?q?=EB=A9=B4=EC=97=90=EC=84=9C=20=EA=B8=B0=EB=8A=A5=20=EC=9E=85?= =?UTF-8?q?=EB=A0=A5=EB=B6=80=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../subway/controller/MainController.java | 27 +++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 src/main/java/subway/controller/MainController.java diff --git a/src/main/java/subway/controller/MainController.java b/src/main/java/subway/controller/MainController.java new file mode 100644 index 000000000..3cd747a94 --- /dev/null +++ b/src/main/java/subway/controller/MainController.java @@ -0,0 +1,27 @@ +package subway.controller; + +import subway.view.InputView; +import subway.view.OutputView; + +import java.util.Arrays; +import java.util.List; + +public class MainController { + + private final InputView inputView; + + public MainController(InputView inputView) { + this.inputView = inputView; + } + + private final List buttons = Arrays.asList( + MainButton.INQUIRY.getSymbol(), + MainButton.EXIT.getSymbol() + ); + + public void run() { + OutputView.printMain(); + inputView.getFunctionSelect(buttons); + } + +} From c7016b2a0ce07a0cf4d66f8d0c17222550fc2737 Mon Sep 17 00:00:00 2001 From: JinseongHwang Date: Sat, 19 Dec 2020 15:38:32 +0900 Subject: [PATCH 14/38] =?UTF-8?q?feat:=20=EA=B8=B0=EB=8A=A5=20=EC=9E=85?= =?UTF-8?q?=EB=A0=A5=20=EC=8B=9C=20=EC=84=A0=ED=83=9D=20=EA=B0=80=EB=8A=A5?= =?UTF-8?q?=ED=95=9C=20=EC=9E=85=EB=A0=A5=EC=9D=B8=EC=A7=80=20=EA=B2=80?= =?UTF-8?q?=EC=A6=9D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/subway/view/InputView.java | 27 ++++++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 src/main/java/subway/view/InputView.java diff --git a/src/main/java/subway/view/InputView.java b/src/main/java/subway/view/InputView.java new file mode 100644 index 000000000..fd0ed6c49 --- /dev/null +++ b/src/main/java/subway/view/InputView.java @@ -0,0 +1,27 @@ +package subway.view; + +import subway.util.Validator; + +import java.util.List; +import java.util.Scanner; + +public class InputView { + + private final Scanner scanner; + + public InputView(Scanner scanner) { + this.scanner = scanner; + } + + public String getFunctionSelect(List choices) { + OutputView.printFunctionSelectQuery(); + try { + String input = scanner.nextLine(); + System.out.println(); + Validator.functionSelect(choices, input); + return input; + } catch (IllegalArgumentException e) { + return getFunctionSelect(choices); + } + } +} From 7dfa51836f970dc270a115ceba64c575b2f7da9d Mon Sep 17 00:00:00 2001 From: JinseongHwang Date: Sat, 19 Dec 2020 15:39:03 +0900 Subject: [PATCH 15/38] =?UTF-8?q?feat:=20=EB=A9=94=EC=9D=B8=20=ED=99=94?= =?UTF-8?q?=EB=A9=B4=20=EC=8B=A4=ED=96=89=20=ED=85=8C=EC=8A=A4=ED=8A=B8=20?= =?UTF-8?q?=EC=99=84=EB=A3=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/subway/Application.java | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/src/main/java/subway/Application.java b/src/main/java/subway/Application.java index 0bcf786cc..9b6d7d932 100644 --- a/src/main/java/subway/Application.java +++ b/src/main/java/subway/Application.java @@ -1,10 +1,20 @@ package subway; +import subway.controller.MainButton; +import subway.controller.MainController; +import subway.util.Initialization; +import subway.view.InputView; + import java.util.Scanner; public class Application { public static void main(String[] args) { final Scanner scanner = new Scanner(System.in); - // TODO: 프로그램 구현 + Initialization.set(); + InputView inputView = new InputView(scanner); + MainController mainController = new MainController(inputView); + mainController.run(); + + scanner.close(); } } From a4258622d44c5d9d9597fa6a832e84d03bcce5db Mon Sep 17 00:00:00 2001 From: JinseongHwang Date: Sat, 19 Dec 2020 15:54:23 +0900 Subject: [PATCH 16/38] =?UTF-8?q?feat:=20=EB=A9=94=EC=9D=B8=20=ED=99=94?= =?UTF-8?q?=EB=A9=B4=EC=9D=98=20=EA=B8=B0=EB=8A=A5=20=EA=B5=AC=ED=98=84=20?= =?UTF-8?q?=EC=99=84=EB=A3=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/subway/controller/MainController.java | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/src/main/java/subway/controller/MainController.java b/src/main/java/subway/controller/MainController.java index 3cd747a94..7c2329034 100644 --- a/src/main/java/subway/controller/MainController.java +++ b/src/main/java/subway/controller/MainController.java @@ -9,9 +9,11 @@ public class MainController { private final InputView inputView; + private final PathController pathController; public MainController(InputView inputView) { this.inputView = inputView; + pathController = new PathController(); } private final List buttons = Arrays.asList( @@ -21,7 +23,15 @@ public MainController(InputView inputView) { public void run() { OutputView.printMain(); - inputView.getFunctionSelect(buttons); + String selectedButton = inputView.getFunctionSelect(buttons); + nextProcedure(selectedButton); + } + + private void nextProcedure(String button) { + if (button.equals(MainButton.INQUIRY.getSymbol())) { + pathController.run(inputView); + run(); + } } } From 8a5987a106de70c695d92289c25a4ec5b75e633a Mon Sep 17 00:00:00 2001 From: JinseongHwang Date: Sat, 19 Dec 2020 15:55:00 +0900 Subject: [PATCH 17/38] =?UTF-8?q?refactor:=20=EC=A7=81=EA=B4=80=EC=A0=81?= =?UTF-8?q?=EC=9D=B8=20=EB=B3=80=EC=88=98=EB=AA=85=EC=9C=BC=EB=A1=9C=20?= =?UTF-8?q?=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/subway/view/InputView.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/main/java/subway/view/InputView.java b/src/main/java/subway/view/InputView.java index fd0ed6c49..61abc8b26 100644 --- a/src/main/java/subway/view/InputView.java +++ b/src/main/java/subway/view/InputView.java @@ -13,15 +13,15 @@ public InputView(Scanner scanner) { this.scanner = scanner; } - public String getFunctionSelect(List choices) { + public String getFunctionSelect(List buttons) { OutputView.printFunctionSelectQuery(); try { String input = scanner.nextLine(); System.out.println(); - Validator.functionSelect(choices, input); + Validator.functionSelect(buttons, input); return input; } catch (IllegalArgumentException e) { - return getFunctionSelect(choices); + return getFunctionSelect(buttons); } } } From b26c966f3069dc9558f4830ade834732ca35ccb8 Mon Sep 17 00:00:00 2001 From: JinseongHwang Date: Sat, 19 Dec 2020 15:55:57 +0900 Subject: [PATCH 18/38] =?UTF-8?q?feat:=20=EA=B2=BD=EB=A1=9C=20=EA=B8=B0?= =?UTF-8?q?=EC=A4=80=20=EC=84=A0=ED=83=9D=20=ED=99=94=EB=A9=B4=EC=97=90?= =?UTF-8?q?=EC=84=9C=20=EC=9E=85=EB=A0=A5=20=EA=B8=B0=EB=8A=A5=20=EA=B5=AC?= =?UTF-8?q?=ED=98=84=20=EC=99=84=EB=A3=8C=20=EB=B0=8F=20=ED=85=8C=EC=8A=A4?= =?UTF-8?q?=ED=8A=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../subway/controller/PathController.java | 28 +++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 src/main/java/subway/controller/PathController.java diff --git a/src/main/java/subway/controller/PathController.java b/src/main/java/subway/controller/PathController.java new file mode 100644 index 000000000..562cd915c --- /dev/null +++ b/src/main/java/subway/controller/PathController.java @@ -0,0 +1,28 @@ +package subway.controller; + +import subway.view.InputView; +import subway.view.OutputView; + +import java.util.Arrays; +import java.util.List; + +public class PathController { + + private final List buttons = Arrays.asList( + PathButton.SHORTEST_PATH.getSymbol(), + PathButton.LEAST_TIME.getSymbol(), + PathButton.BACK.getSymbol() + ); + + public void run(InputView inputView) { + OutputView.printInquiry(); + String selectedButton = inputView.getFunctionSelect(buttons); + nextProcedure(selectedButton); + } + + private void nextProcedure(String button) { + System.out.println("선택한 버튼 " + button + " <- 이거 맞지??"); + System.out.println("경로 선택 해보자구 짜라랑 ~"); + } + +} From f5fc7ccfdb711411fc740daa9430fc67bc053faa Mon Sep 17 00:00:00 2001 From: JinseongHwang Date: Sat, 19 Dec 2020 16:20:38 +0900 Subject: [PATCH 19/38] =?UTF-8?q?feat:=20=EC=B6=9C=EB=B0=9C,=20=EB=8F=84?= =?UTF-8?q?=EC=B0=A9=20=EC=97=AD=EC=9D=84=20=EC=9E=85=EB=A0=A5=20=EB=B0=9B?= =?UTF-8?q?=EB=8A=94=20=EA=B8=B0=EB=8A=A5=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/subway/view/InputView.java | 26 +++++++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-) diff --git a/src/main/java/subway/view/InputView.java b/src/main/java/subway/view/InputView.java index 61abc8b26..343d04a18 100644 --- a/src/main/java/subway/view/InputView.java +++ b/src/main/java/subway/view/InputView.java @@ -20,8 +20,32 @@ public String getFunctionSelect(List buttons) { System.out.println(); Validator.functionSelect(buttons, input); return input; - } catch (IllegalArgumentException e) { + } catch (IllegalArgumentException IAE) { return getFunctionSelect(buttons); } } + + public String getSourceStation() { + OutputView.printSourceStationQuery(); + try { + String input = scanner.nextLine(); + OutputView.printEmptyLine(); + Validator.existStation(input); + return input; + } catch (IllegalArgumentException IAE) { + return getSourceStation(); + } + } + + public String getDestinationStation() { + OutputView.printDestinationStationQuery(); + try { + String input = scanner.nextLine(); + OutputView.printEmptyLine(); + Validator.existStation(input); + return input; + } catch (IllegalArgumentException IAE) { + return getDestinationStation(); + } + } } From 73add242a273f96420d4a4721b1fc8bcdba02039 Mon Sep 17 00:00:00 2001 From: JinseongHwang Date: Sat, 19 Dec 2020 16:21:18 +0900 Subject: [PATCH 20/38] =?UTF-8?q?feat:=20InputView=20=EA=B0=9D=EC=B2=B4?= =?UTF-8?q?=EB=A5=BC=20PathController=EC=97=90=EC=84=9C=EB=8F=84=20?= =?UTF-8?q?=EC=82=AC=EC=9A=A9=ED=95=A0=20=EC=88=98=20=EC=9E=88=EA=B2=8C=20?= =?UTF-8?q?=EC=83=9D=EC=84=B1=EC=9E=90=EC=97=90=EC=84=9C=20=EC=A0=84?= =?UTF-8?q?=EB=8B=AC=ED=95=98=EB=8A=94=20=EB=B0=A9=EC=8B=9D=EC=9C=BC?= =?UTF-8?q?=EB=A1=9C=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/subway/controller/MainController.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/subway/controller/MainController.java b/src/main/java/subway/controller/MainController.java index 7c2329034..fe3052117 100644 --- a/src/main/java/subway/controller/MainController.java +++ b/src/main/java/subway/controller/MainController.java @@ -13,7 +13,7 @@ public class MainController { public MainController(InputView inputView) { this.inputView = inputView; - pathController = new PathController(); + pathController = new PathController(inputView); } private final List buttons = Arrays.asList( @@ -29,7 +29,7 @@ public void run() { private void nextProcedure(String button) { if (button.equals(MainButton.INQUIRY.getSymbol())) { - pathController.run(inputView); + pathController.run(); run(); } } From f7d25e63be361709ac2e249e8cb5000f8e3eae6e Mon Sep 17 00:00:00 2001 From: JinseongHwang Date: Sat, 19 Dec 2020 16:21:37 +0900 Subject: [PATCH 21/38] =?UTF-8?q?feat:=20=EB=8B=A4=EC=8B=9C=20=EC=9E=85?= =?UTF-8?q?=EB=A0=A5=ED=95=98=EB=9D=BC=EB=8A=94=20=EB=A9=94=EC=8B=9C?= =?UTF-8?q?=EC=A7=80=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/subway/view/OutputView.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/subway/view/OutputView.java b/src/main/java/subway/view/OutputView.java index 5bd17b8c1..3fcbf7475 100644 --- a/src/main/java/subway/view/OutputView.java +++ b/src/main/java/subway/view/OutputView.java @@ -15,7 +15,7 @@ public class OutputView { private static final String QUERY_SOURCE_STATION = "## 출발역을 입력하세요."; private static final String QUERY_DESTINATION_STATION = "## 도착역을 입력하세요."; - private static final String TRY_AGAIN = "다시 입력해주세요."; + private static final String TRY_AGAIN = " 다시 입력해주세요."; public static final String ERROR_INVALID_SELECT = "선택할 수 없는 기능입니다." + TRY_AGAIN; public static final String ERROR_INVALID_STATION = "존재하지 않는 역입니다." + TRY_AGAIN; public static final String ERROR_SAME_STATION = "출발역과 도착역이 동일합니다." + TRY_AGAIN; From d2cab49fb8cbc5aa5791c32ca1e082fa4d1aea68 Mon Sep 17 00:00:00 2001 From: JinseongHwang Date: Sat, 19 Dec 2020 16:22:34 +0900 Subject: [PATCH 22/38] =?UTF-8?q?feat:=20=EC=97=AD=EC=9D=84=20=EC=9E=85?= =?UTF-8?q?=EB=A0=A5=EB=B0=9B=EA=B3=A0=20=EC=A1=B4=EC=9E=AC=ED=95=98?= =?UTF-8?q?=EB=8A=94=20=EC=97=AD=EC=9D=B8=EC=A7=80,=20=EA=B0=99=EC=9D=80?= =?UTF-8?q?=20=EC=97=AD=EC=9D=84=20=EC=9E=85=EB=A0=A5=ED=96=88=EB=8A=94?= =?UTF-8?q?=EC=A7=80=20=EA=B2=80=EC=A6=9D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/subway/util/Validator.java | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/src/main/java/subway/util/Validator.java b/src/main/java/subway/util/Validator.java index 124840bfe..1d8fd40b8 100644 --- a/src/main/java/subway/util/Validator.java +++ b/src/main/java/subway/util/Validator.java @@ -1,5 +1,6 @@ package subway.util; +import subway.domain.StationRepository; import subway.view.OutputView; import java.util.List; @@ -13,4 +14,19 @@ public static void functionSelect(List choices, String command) { } } + public static void existStation(String stationName) { + if (!StationRepository.isExist(stationName)){ + OutputView.printError(OutputView.ERROR_INVALID_STATION); + throw new IllegalArgumentException(); + } + } + + public static boolean sameStation(String source, String destination) { + if (source.equals(destination)) { + OutputView.printError(OutputView.ERROR_SAME_STATION); + return true; + } + return false; + } + } From cbc7ac08db43cac432275cc33944ec241acbf716 Mon Sep 17 00:00:00 2001 From: JinseongHwang Date: Sat, 19 Dec 2020 16:23:14 +0900 Subject: [PATCH 23/38] =?UTF-8?q?feat:=20=EC=A1=B4=EC=9E=AC=ED=95=98?= =?UTF-8?q?=EB=8A=94=20=EC=97=AD=EC=9D=B8=EC=A7=80=20=EB=8B=B5=ED=95=B4?= =?UTF-8?q?=EC=A3=BC=EB=8A=94=20=ED=95=A8=EC=88=98=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/subway/domain/StationRepository.java | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/src/main/java/subway/domain/StationRepository.java b/src/main/java/subway/domain/StationRepository.java index 8ed9d103f..a6f5602fc 100644 --- a/src/main/java/subway/domain/StationRepository.java +++ b/src/main/java/subway/domain/StationRepository.java @@ -23,4 +23,22 @@ public static boolean deleteStation(String name) { public static void deleteAll() { stations.clear(); } + + public static boolean isExist(String stationName) { + for (Station station : stations) { + if (station.getName().equals(stationName)) { + return true; + } + } + return false; + } + + public static Station getStationNamed(String stationName) { + for (Station station : stations) { + if (station.getName().equals(stationName)) { + return station; + } + } + return null; + } } From 16343e1ed4bd7b457ac2425f49b1fe7a825bc0c7 Mon Sep 17 00:00:00 2001 From: JinseongHwang Date: Sat, 19 Dec 2020 16:23:36 +0900 Subject: [PATCH 24/38] =?UTF-8?q?feat:=20=EC=B6=9C=EB=B0=9C=EC=97=AD?= =?UTF-8?q?=EA=B3=BC=20=EB=8F=84=EC=B0=A9=EC=97=AD=EC=9D=84=20=EC=9E=85?= =?UTF-8?q?=EB=A0=A5=EB=B0=9B=EA=B3=A0=20=EA=B2=80=EC=A6=9D=20=ED=95=A8?= =?UTF-8?q?=EC=88=98=20=ED=98=B8=EC=B6=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../subway/controller/PathController.java | 30 +++++++++++++++++-- 1 file changed, 27 insertions(+), 3 deletions(-) diff --git a/src/main/java/subway/controller/PathController.java b/src/main/java/subway/controller/PathController.java index 562cd915c..3b3fc1136 100644 --- a/src/main/java/subway/controller/PathController.java +++ b/src/main/java/subway/controller/PathController.java @@ -1,5 +1,6 @@ package subway.controller; +import subway.util.Validator; import subway.view.InputView; import subway.view.OutputView; @@ -8,21 +9,44 @@ public class PathController { + private final InputView inputView; + + public PathController(InputView inputView) { + this.inputView = inputView; + } + private final List buttons = Arrays.asList( PathButton.SHORTEST_PATH.getSymbol(), PathButton.LEAST_TIME.getSymbol(), PathButton.BACK.getSymbol() ); - public void run(InputView inputView) { + public void run() { OutputView.printInquiry(); String selectedButton = inputView.getFunctionSelect(buttons); nextProcedure(selectedButton); } private void nextProcedure(String button) { - System.out.println("선택한 버튼 " + button + " <- 이거 맞지??"); - System.out.println("경로 선택 해보자구 짜라랑 ~"); + if (button.equals(PathButton.BACK.getSymbol())) { + return; + } + String source = inputView.getSourceStation(); + String destination = inputView.getDestinationStation(); + if (Validator.sameStation(source, destination)) { + nextProcedure(button); + return; + } + + if (button.equals(PathButton.SHORTEST_PATH.getSymbol())) { + System.out.println("최단거리로 계산"); + OutputView.printEmptyLine(); + } else if (button.equals(PathButton.LEAST_TIME.getSymbol())) { + System.out.println("최소시간으로 계산"); + OutputView.printEmptyLine(); + } } + + } From 8854a012d296f33aa3a84b5beb485995552080a0 Mon Sep 17 00:00:00 2001 From: JinseongHwang Date: Sat, 19 Dec 2020 16:24:06 +0900 Subject: [PATCH 25/38] =?UTF-8?q?refactor:=20=EB=B6=88=ED=95=84=EC=9A=94?= =?UTF-8?q?=ED=95=9C=20import=EB=AC=B8=EC=9D=84=20=EC=A0=9C=EA=B1=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/subway/Application.java | 1 - 1 file changed, 1 deletion(-) diff --git a/src/main/java/subway/Application.java b/src/main/java/subway/Application.java index 9b6d7d932..7494ec7d2 100644 --- a/src/main/java/subway/Application.java +++ b/src/main/java/subway/Application.java @@ -1,6 +1,5 @@ package subway; -import subway.controller.MainButton; import subway.controller.MainController; import subway.util.Initialization; import subway.view.InputView; From 312424806e2879fdacb8fbe425179985d5ce563e Mon Sep 17 00:00:00 2001 From: JinseongHwang Date: Sat, 19 Dec 2020 16:32:06 +0900 Subject: [PATCH 26/38] =?UTF-8?q?refactor:=20=ED=8C=A8=ED=82=A4=EC=A7=80?= =?UTF-8?q?=20=EC=9D=B4=EB=8F=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/subway/{ => legacy}/Lines.java | 2 +- src/main/java/subway/{ => legacy}/Stations.java | 2 +- src/main/java/subway/util/Initialization.java | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) rename src/main/java/subway/{ => legacy}/Lines.java (91%) rename src/main/java/subway/{ => legacy}/Stations.java (94%) diff --git a/src/main/java/subway/Lines.java b/src/main/java/subway/legacy/Lines.java similarity index 91% rename from src/main/java/subway/Lines.java rename to src/main/java/subway/legacy/Lines.java index ad8ad6fe3..71bb4a687 100644 --- a/src/main/java/subway/Lines.java +++ b/src/main/java/subway/legacy/Lines.java @@ -1,4 +1,4 @@ -package subway; +package subway.legacy; public enum Lines { diff --git a/src/main/java/subway/Stations.java b/src/main/java/subway/legacy/Stations.java similarity index 94% rename from src/main/java/subway/Stations.java rename to src/main/java/subway/legacy/Stations.java index 8666bed96..83002f195 100644 --- a/src/main/java/subway/Stations.java +++ b/src/main/java/subway/legacy/Stations.java @@ -1,4 +1,4 @@ -package subway; +package subway.legacy; public enum Stations { diff --git a/src/main/java/subway/util/Initialization.java b/src/main/java/subway/util/Initialization.java index 15fe971e2..730cee010 100644 --- a/src/main/java/subway/util/Initialization.java +++ b/src/main/java/subway/util/Initialization.java @@ -1,7 +1,7 @@ package subway.util; -import subway.Lines; -import subway.Stations; +import subway.legacy.Lines; +import subway.legacy.Stations; import subway.domain.*; public class Initialization { From 80a5d11a8d354cf1b05f2a2e936dac6fa263bba4 Mon Sep 17 00:00:00 2001 From: JinseongHwang Date: Sat, 19 Dec 2020 17:17:44 +0900 Subject: [PATCH 27/38] =?UTF-8?q?feat:=20=EA=B7=B8=EB=9E=98=ED=94=84=20?= =?UTF-8?q?=EC=B4=88=EA=B8=B0=ED=99=94=20=ED=95=A8=EC=88=98=20=EC=B6=94?= =?UTF-8?q?=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/subway/util/Initialization.java | 28 ++++++++++++++----- 1 file changed, 21 insertions(+), 7 deletions(-) diff --git a/src/main/java/subway/util/Initialization.java b/src/main/java/subway/util/Initialization.java index 730cee010..4139b8e3a 100644 --- a/src/main/java/subway/util/Initialization.java +++ b/src/main/java/subway/util/Initialization.java @@ -1,5 +1,7 @@ package subway.util; +import subway.graph.DistanceWeightedGraph; +import subway.graph.TimeWeightedGraph; import subway.legacy.Lines; import subway.legacy.Stations; import subway.domain.*; @@ -10,6 +12,7 @@ public static void set() { registerStations(); registerLines(); registerConnections(); + setGraph(); } private static void registerStations() { @@ -29,13 +32,24 @@ private static void registerLines() { } private static void registerConnections() { - Connections.addConnection(new Connection(Stations.GYODAE.getName(), Stations.GANGNAM.getName(), 2, 3)); - Connections.addConnection(new Connection(Stations.GANGNAM.getName(), Stations.YEOKSAM.getName(), 2, 3)); - Connections.addConnection(new Connection(Stations.GYODAE.getName(), Stations.NAMBU_BUS_TERMINAL.getName(), 3,2)); - Connections.addConnection(new Connection(Stations.NAMBU_BUS_TERMINAL.getName(), Stations.YANGJAE.getName(), 6,5)); - Connections.addConnection(new Connection(Stations.YANGJAE.getName(), Stations.MAEBONG.getName(), 1,1)); - Connections.addConnection(new Connection(Stations.GANGNAM.getName(), Stations.YANGJAE.getName(), 2,8)); - Connections.addConnection(new Connection(Stations.YANGJAE.getName(), Stations.YANGJAE_CITIZEN_FOREST.getName(), 10,3)); + ConnectionRepository.addConnection(new Connection(Stations.GYODAE.getName(), Stations.GANGNAM.getName(), 2, 3)); + ConnectionRepository.addConnection(new Connection(Stations.GANGNAM.getName(), Stations.YEOKSAM.getName(), 2, 3)); + ConnectionRepository.addConnection(new Connection(Stations.GYODAE.getName(), Stations.NAMBU_BUS_TERMINAL.getName(), 3,2)); + ConnectionRepository.addConnection(new Connection(Stations.NAMBU_BUS_TERMINAL.getName(), Stations.YANGJAE.getName(), 6,5)); + ConnectionRepository.addConnection(new Connection(Stations.YANGJAE.getName(), Stations.MAEBONG.getName(), 1,1)); + ConnectionRepository.addConnection(new Connection(Stations.GANGNAM.getName(), Stations.YANGJAE.getName(), 2,8)); + ConnectionRepository.addConnection(new Connection(Stations.YANGJAE.getName(), Stations.YANGJAE_CITIZEN_FOREST.getName(), 10,3)); + } + + private static void setGraph() { + for (Station station : StationRepository.stations()) { + DistanceWeightedGraph.addVertex(station.getName()); + TimeWeightedGraph.addVertex(station.getName()); + } + for (Connection connection : ConnectionRepository.connections()) { + DistanceWeightedGraph.setEdgeWeight(DistanceWeightedGraph.addEdge(connection.getSource(), connection.getDestination()), connection.getDistance()); + TimeWeightedGraph.setEdgeWeight(TimeWeightedGraph.addEdge(connection.getSource(), connection.getDestination()), connection.getTime()); + } } } \ No newline at end of file From ff25be88cfb74286aebd350c9c105e47143aeb87 Mon Sep 17 00:00:00 2001 From: JinseongHwang Date: Sat, 19 Dec 2020 17:18:22 +0900 Subject: [PATCH 28/38] =?UTF-8?q?refactor:=20Connections=EC=97=90=EC=84=9C?= =?UTF-8?q?=20ConnectionRepository=EB=A1=9C=20=EC=9D=B4=EB=A6=84=20?= =?UTF-8?q?=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../subway/domain/ConnectionRepository.java | 18 ++++++++++++++++++ src/main/java/subway/domain/Connections.java | 18 ------------------ 2 files changed, 18 insertions(+), 18 deletions(-) create mode 100644 src/main/java/subway/domain/ConnectionRepository.java delete mode 100644 src/main/java/subway/domain/Connections.java diff --git a/src/main/java/subway/domain/ConnectionRepository.java b/src/main/java/subway/domain/ConnectionRepository.java new file mode 100644 index 000000000..cbe065d9c --- /dev/null +++ b/src/main/java/subway/domain/ConnectionRepository.java @@ -0,0 +1,18 @@ +package subway.domain; + +import java.util.ArrayList; +import java.util.List; + +public class ConnectionRepository { + + private static List connections = new ArrayList<>(); + + public static void addConnection(Connection connection) { + connections.add(connection); + connections.add(connection.getReverse()); + } + + public static List connections() { + return connections; + } +} diff --git a/src/main/java/subway/domain/Connections.java b/src/main/java/subway/domain/Connections.java deleted file mode 100644 index 6d1232a00..000000000 --- a/src/main/java/subway/domain/Connections.java +++ /dev/null @@ -1,18 +0,0 @@ -package subway.domain; - -import java.util.HashSet; -import java.util.Set; - -public class Connections { - - private static Set connectionSet = new HashSet<>(); - - public static void addConnection(Connection connection) { - connectionSet.add(connection); - connectionSet.add(connection.getReverse()); - } - - public Set getConnections() { - return connectionSet; - } -} From f71cb2d2ab33d9731b22272ebaec69b2266317f3 Mon Sep 17 00:00:00 2001 From: JinseongHwang Date: Sat, 19 Dec 2020 17:19:02 +0900 Subject: [PATCH 29/38] =?UTF-8?q?feat:=20=EA=B0=81=20=EC=9A=94=EC=86=8C?= =?UTF-8?q?=EC=97=90=20=EA=B4=80=ED=95=9C=20Getter=20=ED=95=A8=EC=88=98=20?= =?UTF-8?q?=EC=83=9D=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/subway/domain/Connection.java | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/src/main/java/subway/domain/Connection.java b/src/main/java/subway/domain/Connection.java index cad13fd09..c15c461c2 100644 --- a/src/main/java/subway/domain/Connection.java +++ b/src/main/java/subway/domain/Connection.java @@ -18,4 +18,19 @@ public Connection getReverse() { return new Connection(destination, source, distance, time); } + public String getSource() { + return source; + } + + public String getDestination() { + return destination; + } + + public int getDistance() { + return distance; + } + + public int getTime() { + return time; + } } From 222a747281060b1004a580a7d153abed9f908ffd Mon Sep 17 00:00:00 2001 From: JinseongHwang Date: Sat, 19 Dec 2020 17:19:50 +0900 Subject: [PATCH 30/38] =?UTF-8?q?feat:=20=EA=B1=B0=EB=A6=AC=EB=A5=BC=20?= =?UTF-8?q?=EA=B0=80=EC=A4=91=EC=B9=98=EB=A1=9C=20=ED=95=98=EB=8A=94=20?= =?UTF-8?q?=EA=B7=B8=EB=9E=98=ED=94=84=EB=A5=BC=20=EC=9D=BC=EA=B8=89=20?= =?UTF-8?q?=EC=BB=AC=EB=A0=89=EC=85=98=20=ED=98=95=ED=83=9C=EB=A1=9C=20?= =?UTF-8?q?=EC=A0=80=EC=9E=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../subway/graph/DistanceWeightedGraph.java | 22 +++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 src/main/java/subway/graph/DistanceWeightedGraph.java diff --git a/src/main/java/subway/graph/DistanceWeightedGraph.java b/src/main/java/subway/graph/DistanceWeightedGraph.java new file mode 100644 index 000000000..b27ca96f1 --- /dev/null +++ b/src/main/java/subway/graph/DistanceWeightedGraph.java @@ -0,0 +1,22 @@ +package subway.graph; + +import org.jgrapht.graph.DefaultWeightedEdge; +import org.jgrapht.graph.WeightedMultigraph; + +public class DistanceWeightedGraph { + + private static final WeightedMultigraph graph = new WeightedMultigraph(DefaultWeightedEdge.class); + + public static void addVertex(String vertex) { + graph.addVertex(vertex); + } + + public static DefaultWeightedEdge addEdge(String source, String destination) { + return graph.addEdge(source, destination); + } + + public static void setEdgeWeight(DefaultWeightedEdge e, double weight) { + graph.setEdgeWeight(e, weight); + } + +} From b041b2121e99f4e7fbc69b6fdeb4f5eb30c19e42 Mon Sep 17 00:00:00 2001 From: JinseongHwang Date: Sat, 19 Dec 2020 17:20:04 +0900 Subject: [PATCH 31/38] =?UTF-8?q?feat:=20=EC=8B=9C=EA=B0=84=EC=9D=84=20?= =?UTF-8?q?=EA=B0=80=EC=A4=91=EC=B9=98=EB=A1=9C=20=ED=95=98=EB=8A=94=20?= =?UTF-8?q?=EA=B7=B8=EB=9E=98=ED=94=84=EB=A5=BC=20=EC=9D=BC=EA=B8=89=20?= =?UTF-8?q?=EC=BB=AC=EB=A0=89=EC=85=98=20=ED=98=95=ED=83=9C=EB=A1=9C=20?= =?UTF-8?q?=EC=A0=80=EC=9E=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/subway/graph/TimeWeightedGraph.java | 21 +++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 src/main/java/subway/graph/TimeWeightedGraph.java diff --git a/src/main/java/subway/graph/TimeWeightedGraph.java b/src/main/java/subway/graph/TimeWeightedGraph.java new file mode 100644 index 000000000..6decc43b2 --- /dev/null +++ b/src/main/java/subway/graph/TimeWeightedGraph.java @@ -0,0 +1,21 @@ +package subway.graph; + +import org.jgrapht.graph.DefaultWeightedEdge; +import org.jgrapht.graph.WeightedMultigraph; + +public class TimeWeightedGraph { + + private static final WeightedMultigraph graph = new WeightedMultigraph(DefaultWeightedEdge.class); + + public static void addVertex(String vertex) { + graph.addVertex(vertex); + } + + public static DefaultWeightedEdge addEdge(String source, String destination) { + return graph.addEdge(source, destination); + } + + public static void setEdgeWeight(DefaultWeightedEdge e, double weight) { + graph.setEdgeWeight(e, weight); + } +} From 0711b44c79278eb40cfb17ea87cffad52c80250b Mon Sep 17 00:00:00 2001 From: JinseongHwang Date: Sat, 19 Dec 2020 17:34:28 +0900 Subject: [PATCH 32/38] =?UTF-8?q?feat:=20=EA=B1=B0=EB=A6=AC=EB=A5=BC=20?= =?UTF-8?q?=EA=B0=80=EC=A4=91=EC=B9=98=EB=A1=9C=20=EC=B5=9C=EC=A0=81?= =?UTF-8?q?=EC=9D=98=20=EA=B2=BD=EB=A1=9C=EB=A5=BC=20=EB=B0=98=ED=99=98?= =?UTF-8?q?=ED=95=98=EB=8A=94=20=ED=95=A8=EC=88=98=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/subway/graph/DistanceWeightedGraph.java | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/src/main/java/subway/graph/DistanceWeightedGraph.java b/src/main/java/subway/graph/DistanceWeightedGraph.java index b27ca96f1..23f471b89 100644 --- a/src/main/java/subway/graph/DistanceWeightedGraph.java +++ b/src/main/java/subway/graph/DistanceWeightedGraph.java @@ -1,8 +1,11 @@ package subway.graph; +import org.jgrapht.alg.shortestpath.DijkstraShortestPath; import org.jgrapht.graph.DefaultWeightedEdge; import org.jgrapht.graph.WeightedMultigraph; +import java.util.List; + public class DistanceWeightedGraph { private static final WeightedMultigraph graph = new WeightedMultigraph(DefaultWeightedEdge.class); @@ -15,8 +18,14 @@ public static DefaultWeightedEdge addEdge(String source, String destination) { return graph.addEdge(source, destination); } - public static void setEdgeWeight(DefaultWeightedEdge e, double weight) { - graph.setEdgeWeight(e, weight); + public static void setEdgeWeight(DefaultWeightedEdge DWE, double weight) { + graph.setEdgeWeight(DWE, weight); + } + + public static List getOptimalGraph(String source, String destination) { + DijkstraShortestPath dijkstraShortestPath = new DijkstraShortestPath(graph); + List optimalGraph = dijkstraShortestPath.getPath(source, destination).getVertexList(); + return optimalGraph; } } From 155c7365722a39b709d0b553738df8f4a63edd9b Mon Sep 17 00:00:00 2001 From: JinseongHwang Date: Sat, 19 Dec 2020 17:34:43 +0900 Subject: [PATCH 33/38] =?UTF-8?q?feat:=20=EC=8B=9C=EA=B0=84=EC=9D=84=20?= =?UTF-8?q?=EA=B0=80=EC=A4=91=EC=B9=98=EB=A1=9C=20=EC=B5=9C=EC=A0=81?= =?UTF-8?q?=EC=9D=98=20=EA=B2=BD=EB=A1=9C=EB=A5=BC=20=EB=B0=98=ED=99=98?= =?UTF-8?q?=ED=95=98=EB=8A=94=20=ED=95=A8=EC=88=98=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/subway/graph/TimeWeightedGraph.java | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/src/main/java/subway/graph/TimeWeightedGraph.java b/src/main/java/subway/graph/TimeWeightedGraph.java index 6decc43b2..78ffd9d31 100644 --- a/src/main/java/subway/graph/TimeWeightedGraph.java +++ b/src/main/java/subway/graph/TimeWeightedGraph.java @@ -1,8 +1,11 @@ package subway.graph; +import org.jgrapht.alg.shortestpath.DijkstraShortestPath; import org.jgrapht.graph.DefaultWeightedEdge; import org.jgrapht.graph.WeightedMultigraph; +import java.util.List; + public class TimeWeightedGraph { private static final WeightedMultigraph graph = new WeightedMultigraph(DefaultWeightedEdge.class); @@ -15,7 +18,14 @@ public static DefaultWeightedEdge addEdge(String source, String destination) { return graph.addEdge(source, destination); } - public static void setEdgeWeight(DefaultWeightedEdge e, double weight) { - graph.setEdgeWeight(e, weight); + public static void setEdgeWeight(DefaultWeightedEdge DWE, double weight) { + graph.setEdgeWeight(DWE, weight); + } + + public static List getOptimalGraph(String source, String destination) { + DijkstraShortestPath dijkstraShortestPath = new DijkstraShortestPath(graph); + List optimalGraph = dijkstraShortestPath.getPath(source, destination).getVertexList(); + return optimalGraph; } + } From 6df3245c9ccffd24186795f29bd7eb3d2fbaae24 Mon Sep 17 00:00:00 2001 From: JinseongHwang Date: Sat, 19 Dec 2020 17:56:32 +0900 Subject: [PATCH 34/38] =?UTF-8?q?feat:=20=EC=A1=B0=ED=9A=8C=20=EA=B2=B0?= =?UTF-8?q?=EA=B3=BC=20=EC=B6=9C=EB=A0=A5=20=ED=95=A8=EC=88=98=20=EA=B5=AC?= =?UTF-8?q?=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/subway/view/OutputView.java | 23 +++++++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) diff --git a/src/main/java/subway/view/OutputView.java b/src/main/java/subway/view/OutputView.java index 3fcbf7475..0ec91a0c7 100644 --- a/src/main/java/subway/view/OutputView.java +++ b/src/main/java/subway/view/OutputView.java @@ -1,5 +1,7 @@ package subway.view; +import java.util.List; + public class OutputView { private static final String MAIN_TITLE = "## 메인 화면"; @@ -11,6 +13,11 @@ public class OutputView { private static final String INQUIRY_LEAST_TIME = "2. 최소 시간"; private static final String INQUIRY_BACK = "B. 돌아가기"; + private static final String RESULT_TITLE = "## 조회 결과"; + private static final String RESULT_LINE = "---"; + private static final String RESULT_DISTANCE_FORMAT = "총 거리: %dkm"; + private static final String RESULT_TIME_FORMAT = "총 소요 시간: %d분"; + private static final String QUERY_FUNCTION_SELECT = "## 원하는 기능을 선택하세요."; private static final String QUERY_SOURCE_STATION = "## 출발역을 입력하세요."; private static final String QUERY_DESTINATION_STATION = "## 도착역을 입력하세요."; @@ -48,11 +55,23 @@ public static void printDestinationStationQuery() { System.out.println(QUERY_DESTINATION_STATION); } - public static void printInformation(String message) { + public static void printInquiryGraph(final List graph, final int totalDistance, final int totalTime) { + System.out.println(RESULT_TITLE); + printInformation(RESULT_LINE); + printInformation(String.format(RESULT_DISTANCE_FORMAT, totalDistance)); + printInformation(String.format(RESULT_TIME_FORMAT, totalTime)); + printInformation(RESULT_LINE); + for (String stationName : graph) { + printInformation(stationName); + } + printEmptyLine(); + } + + public static void printInformation(final String message) { System.out.println("[INFO] " + message); } - public static void printError(String message) { + public static void printError(final String message) { System.out.println("[ERROR] " + message); printEmptyLine(); } From b6861048d0b54478f6d09230dc279fe8119c98dd Mon Sep 17 00:00:00 2001 From: JinseongHwang Date: Sat, 19 Dec 2020 17:58:37 +0900 Subject: [PATCH 35/38] =?UTF-8?q?refactor:=20=ED=81=B4=EB=9E=98=EC=8A=A4?= =?UTF-8?q?=EB=AA=85=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/README.md b/docs/README.md index 17ee0a5db..2551edaa2 100644 --- a/docs/README.md +++ b/docs/README.md @@ -58,7 +58,7 @@ - 연결된 역 사이의 시간과 거리를 저장한다. ``` -* Connections +* ConnectionRepository ``` - 모든 Connection 객체들을 일급 컬렉션 형태로 저장한다. ``` From 29743bddcf881ce2f68846513b35360aa7adb925 Mon Sep 17 00:00:00 2001 From: JinseongHwang Date: Sat, 19 Dec 2020 17:58:48 +0900 Subject: [PATCH 36/38] =?UTF-8?q?refactor:=20=EC=82=AC=EC=9A=A9=ED=95=98?= =?UTF-8?q?=EC=A7=80=20=EC=95=8A=EB=8A=94=20=ED=95=A8=EC=88=98=20=EC=A0=9C?= =?UTF-8?q?=EA=B1=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/subway/domain/StationRepository.java | 8 -------- 1 file changed, 8 deletions(-) diff --git a/src/main/java/subway/domain/StationRepository.java b/src/main/java/subway/domain/StationRepository.java index a6f5602fc..a6dd579dd 100644 --- a/src/main/java/subway/domain/StationRepository.java +++ b/src/main/java/subway/domain/StationRepository.java @@ -33,12 +33,4 @@ public static boolean isExist(String stationName) { return false; } - public static Station getStationNamed(String stationName) { - for (Station station : stations) { - if (station.getName().equals(stationName)) { - return station; - } - } - return null; - } } From b046bd6c156062434f61fd4e59ca71a2f16fe836 Mon Sep 17 00:00:00 2001 From: JinseongHwang Date: Sat, 19 Dec 2020 17:59:04 +0900 Subject: [PATCH 37/38] =?UTF-8?q?refactor:=20final=20=ED=82=A4=EC=9B=8C?= =?UTF-8?q?=EB=93=9C=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/subway/util/Validator.java | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/src/main/java/subway/util/Validator.java b/src/main/java/subway/util/Validator.java index 1d8fd40b8..f92c52ba8 100644 --- a/src/main/java/subway/util/Validator.java +++ b/src/main/java/subway/util/Validator.java @@ -7,21 +7,21 @@ public class Validator { - public static void functionSelect(List choices, String command) { + public static void functionSelect(final List choices, final String command) { if (!choices.contains(command)) { OutputView.printError(OutputView.ERROR_INVALID_SELECT); throw new IllegalArgumentException(); } } - public static void existStation(String stationName) { + public static void existStation(final String stationName) { if (!StationRepository.isExist(stationName)){ OutputView.printError(OutputView.ERROR_INVALID_STATION); throw new IllegalArgumentException(); } } - public static boolean sameStation(String source, String destination) { + public static boolean sameStation(final String source, final String destination) { if (source.equals(destination)) { OutputView.printError(OutputView.ERROR_SAME_STATION); return true; @@ -29,4 +29,9 @@ public static boolean sameStation(String source, String destination) { return false; } + public static boolean unconnected(final String source, final String destination) { + // 구현 못했습니다. + return false; + } + } From 97c81de424ebde2599413ad4addb7f9b5d167b98 Mon Sep 17 00:00:00 2001 From: JinseongHwang Date: Sat, 19 Dec 2020 17:59:28 +0900 Subject: [PATCH 38/38] refactor --- .../java/subway/controller/MainController.java | 2 +- .../java/subway/controller/PathController.java | 18 ++++++++++-------- 2 files changed, 11 insertions(+), 9 deletions(-) diff --git a/src/main/java/subway/controller/MainController.java b/src/main/java/subway/controller/MainController.java index fe3052117..78aa09e07 100644 --- a/src/main/java/subway/controller/MainController.java +++ b/src/main/java/subway/controller/MainController.java @@ -27,7 +27,7 @@ public void run() { nextProcedure(selectedButton); } - private void nextProcedure(String button) { + private void nextProcedure(final String button) { if (button.equals(MainButton.INQUIRY.getSymbol())) { pathController.run(); run(); diff --git a/src/main/java/subway/controller/PathController.java b/src/main/java/subway/controller/PathController.java index 3b3fc1136..4b9887f11 100644 --- a/src/main/java/subway/controller/PathController.java +++ b/src/main/java/subway/controller/PathController.java @@ -1,5 +1,7 @@ package subway.controller; +import subway.graph.DistanceWeightedGraph; +import subway.graph.TimeWeightedGraph; import subway.util.Validator; import subway.view.InputView; import subway.view.OutputView; @@ -27,7 +29,7 @@ public void run() { nextProcedure(selectedButton); } - private void nextProcedure(String button) { + private void nextProcedure(final String button) { if (button.equals(PathButton.BACK.getSymbol())) { return; } @@ -37,16 +39,16 @@ private void nextProcedure(String button) { nextProcedure(button); return; } - + if (Validator.unconnected(source, destination)) { + nextProcedure(button); + return; + } + // 총 시간과 거리를 계산하는 함수를 구현하지 못했습니다. if (button.equals(PathButton.SHORTEST_PATH.getSymbol())) { - System.out.println("최단거리로 계산"); - OutputView.printEmptyLine(); + OutputView.printInquiryGraph(DistanceWeightedGraph.getOptimalGraph(source, destination), -1, -1); } else if (button.equals(PathButton.LEAST_TIME.getSymbol())) { - System.out.println("최소시간으로 계산"); - OutputView.printEmptyLine(); + OutputView.printInquiryGraph(TimeWeightedGraph.getOptimalGraph(source, destination), -1, -1); } } - - }