Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
91 commits
Select commit Hold shift + click to select a range
45f0a60
docs(readme): Create function list
daum7766 Dec 14, 2020
f0c0de6
feat(DataInitService): create DataInitService class
daum7766 Dec 14, 2020
bbd8d83
feat(DataInitService): create Init Function
daum7766 Dec 14, 2020
a161775
feat(StationService): create StationService Class
daum7766 Dec 14, 2020
2c82172
feat(StationService): create addStation Function
daum7766 Dec 14, 2020
ddb8d29
feat(OutPut): Create OutPut Class
daum7766 Dec 14, 2020
e41292d
refactor(StationService): add stationNameLengthError Function call
daum7766 Dec 14, 2020
d522162
feat(OutPut): create printStationCreateMessage Function
daum7766 Dec 14, 2020
ebf6d50
refactor(StationService): add StationCreateMessage Call
daum7766 Dec 14, 2020
276f104
feat(Station): create isEqualName Function
daum7766 Dec 14, 2020
65b63ce
style(Station): modify formatting
daum7766 Dec 14, 2020
a896be4
feat(StationService): create isEqualStationName Function
daum7766 Dec 14, 2020
39f8102
refactor(StationService): Check for duplicate station name
daum7766 Dec 14, 2020
2b6e9e9
feat(OutPut): create StationNameDuplicateError Function
daum7766 Dec 14, 2020
5836966
refactor(StationService): add printStationNameDuplicateError Call
daum7766 Dec 14, 2020
1cfb279
feat(DataInitService): create addStation Function:
daum7766 Dec 14, 2020
f4d495e
refactor(Application): call to init
daum7766 Dec 14, 2020
a73a51f
fix(StationService): addStation Message bug fix
daum7766 Dec 14, 2020
098aab3
fix(DataInitService): addStation Message bug fix
daum7766 Dec 14, 2020
69ce4d4
feat(Line): create isEqualName Function
daum7766 Dec 14, 2020
c65df37
feat(LineRepository): create isEqualLineName Function
daum7766 Dec 14, 2020
fb2c6e0
feat(OutPut): create LineLengthError Function
daum7766 Dec 14, 2020
70f1c27
feat(OutPut): create LineNameDuplicateError Function
daum7766 Dec 14, 2020
1ccc9bb
feat(OutPuut): create LineCreateMessage Function
daum7766 Dec 14, 2020
aacdaa0
refactor(LineService): add call to message function
daum7766 Dec 14, 2020
638cc50
feat(StationRepository): create getStation Function
daum7766 Dec 14, 2020
a6a35b4
feat(Line): create initLineInStation Function
daum7766 Dec 14, 2020
6fa10d5
feat(LineService): add Line Create logic
daum7766 Dec 14, 2020
12c88f4
feat(DataInitService): create addLine Function
daum7766 Dec 14, 2020
f976c8c
refactor(LineService): Separation of functions
daum7766 Dec 14, 2020
e8fdf12
feat(OutPut): create non exist station error function
daum7766 Dec 14, 2020
4cca23a
feat(OutPut): create non exist station error function
daum7766 Dec 14, 2020
16b5e1e
refactor(LineService): call not exist station function
daum7766 Dec 14, 2020
2e16869
feat(OutPut): create NonExistLineError function
daum7766 Dec 14, 2020
fa3d326
feat(SectionService): create Line and Station exist Function
daum7766 Dec 14, 2020
1123480
feat(Line): create exist station function
daum7766 Dec 14, 2020
708c014
feat(OutPut): create exist station error function
daum7766 Dec 14, 2020
e267920
feat(SectionService): create exist station Function
daum7766 Dec 14, 2020
f5fe2e8
feat(LineRepository): create getLine Function
daum7766 Dec 14, 2020
6256333
feat(Line): create insert line in station function
daum7766 Dec 14, 2020
c5d4eb8
feat(OutPut): create section add success message function
daum7766 Dec 14, 2020
cd0d96b
feat(SectionService): create addSection Function
daum7766 Dec 14, 2020
fe962df
feat(DataInitService): create addSections Function
daum7766 Dec 14, 2020
e796201
feat(UserInterfaceView): create UserInterfaceView Class
daum7766 Dec 14, 2020
52ec26e
feat(UserInterfaceView): create start Funcion
daum7766 Dec 14, 2020
6ab4b97
refactor(Application): call userInterfaceView start Function
daum7766 Dec 14, 2020
944df46
feat(UserInterfaceView): create printMainView Function
daum7766 Dec 14, 2020
92ed804
feat(UserInterfaceView): create getUserInput Function
daum7766 Dec 14, 2020
ff10c8e
feat(UserInterfaceView): create printErrorMessage Function
daum7766 Dec 14, 2020
db9a9a7
feat(UserInterfaceView): create isQuit Function
daum7766 Dec 14, 2020
6e2737e
feat(UserInterfaceView): create mainToNextFunction Function
daum7766 Dec 14, 2020
178799a
refactor(UserInterfaceView): add call mainToNextFunction
daum7766 Dec 14, 2020
3ef4622
feat(UserInterfaceView): create printStationView Function
daum7766 Dec 14, 2020
725031b
refactor(UserInterfaceView): stationStart Function update
daum7766 Dec 14, 2020
96e5fdc
feat(UserInterfaceView): create stationToNextFunction
daum7766 Dec 14, 2020
97bdfca
feat(UserInterfaceView): create addStation Function
daum7766 Dec 14, 2020
eff131b
feat(LineRepository): create isExistStation Function
daum7766 Dec 14, 2020
e9f694d
feat(StationRepository): create isExistStation Function
daum7766 Dec 14, 2020
c059c61
feat(OutPut): create StationDeleteError Function
daum7766 Dec 14, 2020
f42cae1
feat(OutPut): create StationDeleteMessage Function
daum7766 Dec 14, 2020
f36eaa2
feat(StationService): create deleteStation Function
daum7766 Dec 14, 2020
3451187
feat(UserInterfaceView): create deleteStation Function
daum7766 Dec 14, 2020
17acdf2
feat(OutPut): create infoPrint Function
daum7766 Dec 14, 2020
940c533
feat(StationService): create station info print function
daum7766 Dec 14, 2020
1b3bc74
feat(UserInterfaceView): create station info print function
daum7766 Dec 14, 2020
e026ab8
feat(UserInterfaceView): create printLineView function
daum7766 Dec 14, 2020
98dc56a
refactor(UserInterfaceView): lineStart Function update
daum7766 Dec 14, 2020
bf26c86
feat(UserInterfaceView): create lineToNextFunction
daum7766 Dec 14, 2020
9d523cf
feat(UserInterfaceView): create addLine Function
daum7766 Dec 14, 2020
b7f9998
feat(OutPut): create LineDeleteMessage Function
daum7766 Dec 14, 2020
ca52458
feat(LineService): create deleteLine Function
daum7766 Dec 14, 2020
a488a5b
feat(UserInterfaceView): create deleteLine Function
daum7766 Dec 14, 2020
b56b789
feat(LineService): create print Line info Function
daum7766 Dec 14, 2020
1aa4d6f
feat(UserInterfaceView): create print Line info Function
daum7766 Dec 14, 2020
385b4a2
feat(UserInterfaceView): create print Section view Function
daum7766 Dec 14, 2020
95c7c10
refactor(UserInterfaceView): sectionStart Function update
daum7766 Dec 14, 2020
36ad66c
feat(UserInterfaceView): create SectionToNextFunction Function
daum7766 Dec 15, 2020
a46966a
feat(UserInterfaceView): create getUserInputInt Function
daum7766 Dec 15, 2020
7eb48bf
feat(UserInterfaceView): create addSection Function
daum7766 Dec 15, 2020
c745e0b
feat(Line): create return lineInStationList Function
daum7766 Dec 15, 2020
1390e23
feat(Line): create deleteLineByName Function
daum7766 Dec 15, 2020
0a08232
feat(OutPut): create SectionDeleteSizeError Function
daum7766 Dec 15, 2020
e34d72a
feat(OutPut): create SectionDeleteMessage Function
daum7766 Dec 15, 2020
0f29719
feat(SectionService): create isNotDeleteSize Function
daum7766 Dec 15, 2020
29c2a32
docs(readme): update readme
daum7766 Dec 15, 2020
8e2a83f
feat(SectionService): create deleteSection Function
daum7766 Dec 15, 2020
9889150
feat(UserInterfaceView): create deleteSection Function
daum7766 Dec 15, 2020
8888537
feat(OutPut): create printLine Function
daum7766 Dec 15, 2020
38264ca
feat(SectionService): create print Subway Info Function
daum7766 Dec 15, 2020
603f3d6
feat(UserInterfaceView): create print Subway Info Function
daum7766 Dec 15, 2020
b617178
refactor(StationService): Separating functions to check conditions
daum7766 Dec 15, 2020
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
497 changes: 32 additions & 465 deletions README.md

Large diffs are not rendered by default.

4 changes: 4 additions & 0 deletions src/main/java/subway/Application.java
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +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();
}
}
47 changes: 47 additions & 0 deletions src/main/java/subway/DataInitService.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
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;

public static void init() {
addStation();
addLine();
addSections();
}

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, false);
}
}

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() {
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);
}

}
65 changes: 65 additions & 0 deletions src/main/java/subway/LineService.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
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;

private static boolean isNotLineNameState(String lineName) {
if (lineName.length() < MIN_LINE_NAME_LENGTH) {
OutPut.printLineLengthError();
return true;
}
if (LineRepository.isEqualLineName(lineName)) {
OutPut.printLineDuplicateError();
return true;
}
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) || isNotExistStation(firstStationName, lastStationName)) {
return false;
}
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();
}
return true;
}

public static void deleteLine(String lineName) {
if (!LineRepository.deleteLineByName(lineName)) {
OutPut.printNonExistLineError();
return;
}
OutPut.printLineDeleteMessage();
}

public static void print() {
for (Line line : LineRepository.lines()) {
OutPut.printName(line.getName());
}
}
}
90 changes: 90 additions & 0 deletions src/main/java/subway/OutPut.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,90 @@
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";
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";
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";
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";
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);
}

public static void printStationCreateMessage() {
System.out.println(INFO + STATION_CREATE_MESSAGE);
}

public static void printStationNameDuplicateError() {
System.out.println(ERROR + STATION_NAME_DUPLICATE_ERROR);
}

public static void printLineLengthError() {
System.out.println(ERROR + LINE_NAME_LENGTH_ERROR);
}

public static void printLineDuplicateError() {
System.out.println(ERROR + LINE_NAME_DUPLICATE_ERROR);
}

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);
}

public static void printNonExistLineError() {
System.out.println(ERROR + NON_EXIST_LINE_ERROR);
}

public static void printExistStationError() {
System.out.println(ERROR + EXIST_STATION_ERROR);
}

public static void printSectionAddMessage() {
System.out.println(INFO + SECTION_ADD_MESSAGE);
}

public static void printStationDeleteError() {
System.out.println(ERROR + STATION_DELETE_ERROR);
}

public static void printStationDeleteMessage() {
System.out.println(INFO + STATION_DELETE_MESSAGE);
}

public static void printName(String name) {
System.out.println(INFO + name);
}

public static void printLineDeleteMessage() {
System.out.println(INFO + LINE_DELETE_MESSAGE);
}

public static void printSectionDeleteSizeError() {
System.out.println(ERROR + SECTION_DELETE_SIZE_ERROR);
}

public static void printSectionDeleteMessage() {
System.out.println(INFO + SECTION_DELETE_MESSAGE);
}

public static void printNextLine() {
System.out.println();
}
}
84 changes: 84 additions & 0 deletions src/main/java/subway/SectionService.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,84 @@
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 final String THREE_MINUS = "---";

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;
}

private static boolean isExistStation(Line line, String stationName) {
if (line.isExistStation(stationName)) {
OutPut.printExistStationError();
return true;
}
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;
}

private static boolean isNotDeleteSize(Line line) {
if (line.lineInStationList().size() <= DELETE_MIN_SIZE) {
OutPut.printSectionDeleteSizeError();
return true;
}
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;
}

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();
}
}
}
51 changes: 51 additions & 0 deletions src/main/java/subway/StationService.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
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 isNotStationState(String name) {
if (name.length() < MIN_STATION_NAME_LENGTH) {
OutPut.printStationNameLengthError();
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));
if (isPrint) {
OutPut.printStationCreateMessage();
}
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;
}

public static void print() {
for (Station station : StationRepository.stations()) {
OutPut.printName(station.getName());
}
}
}
Loading