-
Notifications
You must be signed in to change notification settings - Fork 275
Expand file tree
/
Copy pathDataInitService.java
More file actions
120 lines (97 loc) · 5.87 KB
/
Copy pathDataInitService.java
File metadata and controls
120 lines (97 loc) · 5.87 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
package subway;
import org.jgrapht.alg.shortestpath.DijkstraShortestPath;
import org.jgrapht.graph.DefaultWeightedEdge;
import org.jgrapht.graph.WeightedMultigraph;
import subway.domain.distanceTime.Distance;
import subway.domain.distanceTime.Time;
import subway.domain.section.SectionService;
import subway.domain.section.dto.SectionSaveReqDto;
import subway.domain.section.dto.SectionStationAddReqDto;
import subway.domain.station.StationService;
import subway.domain.station.dto.StationSaveReqDto;
public class DataInitService {
private static final String STATION_GYODAE = "교대역";
private static final String STATION_GANGNAM = "강남역";
private static final String STATION_YEOKSAM = "역삼역";
private static final String STATION_SOUTH_TERMINAL = "남부터미널역";
private static final String STATION_YANGJAE = "양재역";
private static final String STATION_CITIZEN_FOREST = "양재시민의숲역";
private static final String STATION_MAEBONG = "매봉역";
private static final String LINE_TWO = "2호선";
private static final String LINE_THREE = "3호선";
private static final String LINE_SINBUNDANG = "신분당선";
private static final int SECOND = 2;
private static final int THIRD = 3;
private static final int KM_ONE = 1;
private static final int KM_TWO = 2;
private static final int KM_THREE = 3;
private static final int KM_SIX = 6;
private static final int KM_TEN = 10;
private static final int MINUTE_ONE = 1;
private static final int MINUTE_TWO = 2;
private static final int MINUTE_THREE = 3;
private static final int MINUTE_FIVE = 5;
private static final int MINUTE_EIGHT = 8;
private final StationService stationService;
private final SectionService sectionService;
public DataInitService(StationService stationService, SectionService sectionService) {
this.stationService = stationService;
this.sectionService = sectionService;
}
public void init() {
saveStation();
saveSection();
saveDistance();
saveTime();
}
private void saveDistance() {
WeightedMultigraph<String, DefaultWeightedEdge> graph = getStringDefaultWeightedEdgeWeightedMultigraph();
graph.setEdgeWeight(graph.addEdge(STATION_GYODAE, STATION_GANGNAM), new Distance(KM_TWO).getKm());
graph.setEdgeWeight(graph.addEdge(STATION_GANGNAM, STATION_YEOKSAM), new Distance(KM_TWO).getKm());
graph.setEdgeWeight(graph.addEdge(STATION_GYODAE, STATION_SOUTH_TERMINAL), new Distance(KM_THREE).getKm());
graph.setEdgeWeight(graph.addEdge(STATION_SOUTH_TERMINAL, STATION_YANGJAE), new Distance(KM_SIX).getKm());
graph.setEdgeWeight(graph.addEdge(STATION_YANGJAE, STATION_MAEBONG), new Distance(KM_ONE).getKm());
graph.setEdgeWeight(graph.addEdge(STATION_GANGNAM, STATION_YANGJAE), new Distance(KM_TWO).getKm());
graph.setEdgeWeight(graph.addEdge(STATION_YANGJAE, STATION_CITIZEN_FOREST), new Distance(KM_TEN).getKm());
DijkstraShortestPath dijkstraShortestPath = new DijkstraShortestPath(graph);
SearchService.addDijkstraShortestPath(dijkstraShortestPath);
}
private void saveTime() {
WeightedMultigraph<String, DefaultWeightedEdge> graph = getStringDefaultWeightedEdgeWeightedMultigraph();
graph.setEdgeWeight(graph.addEdge(STATION_GYODAE, STATION_GANGNAM), new Time(MINUTE_THREE).getMinute());
graph.setEdgeWeight(graph.addEdge(STATION_GANGNAM, STATION_YEOKSAM), new Time(MINUTE_THREE).getMinute());
graph.setEdgeWeight(graph.addEdge(STATION_GYODAE, STATION_SOUTH_TERMINAL), new Time(MINUTE_TWO).getMinute());
graph.setEdgeWeight(graph.addEdge(STATION_SOUTH_TERMINAL, STATION_YANGJAE), new Time(MINUTE_FIVE).getMinute());
graph.setEdgeWeight(graph.addEdge(STATION_YANGJAE, STATION_MAEBONG), new Time(MINUTE_ONE).getMinute());
graph.setEdgeWeight(graph.addEdge(STATION_GANGNAM, STATION_YANGJAE), new Time(MINUTE_EIGHT).getMinute());
graph.setEdgeWeight(graph.addEdge(STATION_YANGJAE, STATION_CITIZEN_FOREST), new Time(MINUTE_THREE).getMinute());
DijkstraShortestPath dijkstraShortestPath = new DijkstraShortestPath(graph);
SearchService.addDijkstraShortestPath(dijkstraShortestPath);
}
private WeightedMultigraph<String, DefaultWeightedEdge> getStringDefaultWeightedEdgeWeightedMultigraph() {
WeightedMultigraph<String, DefaultWeightedEdge> graph = new WeightedMultigraph(DefaultWeightedEdge.class);
graph.addVertex(STATION_GYODAE);
graph.addVertex(STATION_GANGNAM);
graph.addVertex(STATION_YEOKSAM);
graph.addVertex(STATION_SOUTH_TERMINAL);
graph.addVertex(STATION_YANGJAE);
graph.addVertex(STATION_MAEBONG);
graph.addVertex(STATION_CITIZEN_FOREST);
return graph;
}
private void saveSection() {
sectionService.saveSection(new SectionSaveReqDto(LINE_TWO, STATION_GYODAE, STATION_YEOKSAM));
sectionService.addStation(new SectionStationAddReqDto(LINE_TWO, STATION_GANGNAM, SECOND));
sectionService.saveSection(new SectionSaveReqDto(LINE_THREE, STATION_GYODAE, STATION_MAEBONG));
sectionService.addStation(new SectionStationAddReqDto(LINE_THREE, STATION_SOUTH_TERMINAL, SECOND));
sectionService.addStation(new SectionStationAddReqDto(LINE_THREE, STATION_YANGJAE, THIRD));
sectionService.saveSection(new SectionSaveReqDto(LINE_SINBUNDANG, STATION_GANGNAM, STATION_CITIZEN_FOREST));
sectionService.addStation(new SectionStationAddReqDto(LINE_SINBUNDANG, STATION_YANGJAE, SECOND));
}
private void saveStation() {
String[] stationNames = {STATION_GYODAE, STATION_GANGNAM, STATION_YEOKSAM, STATION_SOUTH_TERMINAL, STATION_YANGJAE, STATION_CITIZEN_FOREST, STATION_MAEBONG};
for (String stationName : stationNames) {
stationService.saveStation(new StationSaveReqDto(stationName));
}
}
}