1 package org.wcb.resources;
2
3 import org.wcb.model.vo.hibernate.AirportBO;
4
5 import java.io.IOException;
6 import java.io.InputStream;
7 import java.io.InputStreamReader;
8 import java.io.BufferedReader;
9 import java.util.StringTokenizer;
10 import java.util.List;
11 import java.util.ArrayList;
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 public class ImportAirportDataFile {
40
41 public ImportAirportDataFile() {
42 }
43
44
45
46
47
48
49
50 public List<AirportBO> loadFile(String filename) throws IOException {
51 InputStream ips;
52 ClassLoader cl = Thread.currentThread().getContextClassLoader();
53 String cvsline;
54 List<AirportBO> returnVal = new ArrayList<AirportBO>();
55 ips = cl.getResourceAsStream(filename);
56 BufferedReader br = new BufferedReader(new InputStreamReader(ips));
57 boolean lineOneSkip = false;
58 while((cvsline = br.readLine()) != null) {
59 if (lineOneSkip) {
60 returnVal.add(parseLine(cvsline));
61 }
62 lineOneSkip = true;
63 }
64 return returnVal;
65 }
66
67 public List<AirportBO> marshall(String[][] result) {
68 String[] lineItem;
69 List<AirportBO> airports = new ArrayList<AirportBO>();
70 for (int i = 0; i < result.length; i++) {
71 lineItem = result[i];
72 airports.add(processLine(lineItem));
73 }
74 return airports;
75 }
76
77
78
79
80
81
82
83
84
85
86 public AirportBO processLine(String[] line) {
87 AirportBO returnVal = new AirportBO();
88 returnVal.setIata("K" + line[0]);
89 returnVal.setFaa(line[0]);
90 returnVal.setIcao("K" + line[0]);
91 returnVal.setName(this.parseAirportName(line[1]));
92 returnVal.setMunicipal(this.parseCityName(line[2]));
93 returnVal.setState(line[3]);
94 returnVal.setCountry(line[4]);
95
96 returnVal.setLatitude(line[5] + "-" + line[6] + "-" + line[7] + ".0000" + line[8]);
97 returnVal.setLongitude(line[9] + "-" + line[10] + "-" + line[11] + ".0000" + line[12]);
98 return returnVal;
99 }
100
101
102
103
104
105
106
107 public AirportBO parseLine(String fileline) {
108 StringTokenizer st = new StringTokenizer(fileline, "\t");
109 AirportBO returnVal = new AirportBO();
110 st.nextToken();
111 returnVal.setName(st.nextToken());
112 st.nextToken();
113 st.nextToken();
114 String airportCode = st.nextToken();
115 returnVal.setIcao(airportCode);
116 returnVal.setIata(airportCode);
117 returnVal.setFaa(airportCode);
118 st.nextToken();
119 st.nextToken();
120 returnVal.setLatitude(parseLatitude(st.nextToken()));
121 st.nextToken();
122 returnVal.setLongitude(parseLongitude(st.nextToken()));
123 st.nextToken();
124 returnVal.setAltitude(st.nextToken());
125 return returnVal;
126 }
127
128
129
130
131
132
133
134
135 public String parseAirportName(String preName) {
136 return preName.substring(preName.indexOf(":") + 2, preName.length());
137 }
138
139
140
141
142
143
144
145
146 public String parseCityName(String preCity) {
147 return preCity.substring(0, preCity.indexOf(","));
148 }
149
150
151
152
153
154
155 public String parseLatitude(String valLat) {
156 StringBuilder builder = new StringBuilder();
157 builder.append(valLat.substring(1,3));
158 builder.append("-");
159 builder.append(valLat.substring(3,5));
160 builder.append("-");
161 builder.append(valLat.substring(5,7));
162 builder.append(".");
163 builder.append(valLat.substring(7,valLat.length()));
164 builder.append("00");
165 builder.append(valLat.substring(0,1));
166 return builder.toString();
167 }
168
169
170
171
172
173
174
175 public String parseLongitude(String valLat) {
176 StringBuilder builder = new StringBuilder();
177 builder.append(valLat.substring(1,4));
178 builder.append("-");
179 builder.append(valLat.substring(4,6));
180 builder.append("-");
181 builder.append(valLat.substring(6,8));
182 builder.append(".");
183 builder.append(valLat.substring(8,valLat.length()));
184 builder.append("00");
185 builder.append(valLat.substring(0,1));
186 return builder.toString();
187 }
188
189 }