1 package net.staniscia.sbs1.msg;
2
3 import net.staniscia.sbs1.InvalidMessageBobyException;
4
5
6
7
8 class SBS1FullMessage implements MSG1, MSG2, MSG3, MSG4, MSG5, MSG6, MSG7, MSG8, SEL, ID, AIR, STA, CLK {
9
10
11 private StatusFlagsType statusFlagsType;
12
13
14
15
16 private String sessionID;
17
18
19
20
21 private String aircraftId;
22
23
24
25
26
27 private String hexIdent;
28
29
30
31
32
33 private String flightId;
34
35
36
37
38
39 private String dateMessageGenerated;
40
41
42
43
44
45 private String timeMessageGenerated;
46
47
48
49
50
51 private String dataMessageLogged;
52
53
54
55
56
57 private String timeMessageLogged;
58
59
60
61
62
63 private String callsign;
64
65
66
67
68
69 private String altitude;
70
71
72
73
74
75 private String groundSpeed;
76
77
78
79
80
81 private String track;
82
83
84
85
86
87
88 private String latitude;
89
90
91
92
93
94
95 private String longitude;
96
97
98
99
100
101
102 private String verticalRate;
103
104
105
106
107
108 private String squawk;
109
110
111
112
113
114 private String alertSquawkChange;
115
116
117
118
119
120
121 private String emergency;
122
123
124
125
126
127 private String identSPI;
128
129
130
131
132
133 private boolean onGround;
134
135
136 @Override
137 public String getSessionID() {
138 return sessionID;
139 }
140
141 @Override
142 public void setSessionID(String sessionID) {
143 this.sessionID = sessionID;
144 }
145
146 @Override
147 public String getAircraftId() {
148 return aircraftId;
149 }
150
151 @Override
152 public void setAircraftId(String aircraftId) {
153 this.aircraftId = aircraftId;
154 }
155
156 @Override
157 public String getHexIdent() {
158 return hexIdent;
159 }
160
161 @Override
162 public void setHexIdent(String hexIdent) {
163 this.hexIdent = hexIdent;
164 }
165
166 @Override
167 public String getFlightId() {
168 return flightId;
169 }
170
171 @Override
172 public void setFlightId(String flightId) {
173 this.flightId = flightId;
174 }
175
176 @Override
177 public String getDateMessageGenerated() {
178 return dateMessageGenerated;
179 }
180
181 @Override
182 public void setDateMessageGenerated(String dateMessageGenerated) {
183 this.dateMessageGenerated = dateMessageGenerated;
184 }
185
186 @Override
187 public String getTimeMessageGenerated() {
188 return timeMessageGenerated;
189 }
190
191 @Override
192 public void setTimeMessageGenerated(String timeMessageGenerated) {
193 this.timeMessageGenerated = timeMessageGenerated;
194 }
195
196 @Override
197 public String getDataMessageLogged() {
198 return dataMessageLogged;
199 }
200
201 @Override
202 public void setDataMessageLogged(String dataMessageLogged) {
203 this.dataMessageLogged = dataMessageLogged;
204 }
205
206 @Override
207 public String getTimeMessageLogged() {
208 return timeMessageLogged;
209 }
210
211 @Override
212 public void setTimeMessageLogged(String timeMessageLogged) {
213 this.timeMessageLogged = timeMessageLogged;
214 }
215
216 @Override
217 public StatusFlagsType getStatusFlags() {
218 return this.statusFlagsType;
219 }
220
221 @Override
222 public void setStatusFlags(StatusFlagsType sft) {
223 this.statusFlagsType = sft;
224 }
225
226 @Override
227 public String getCallsign() {
228 return callsign;
229 }
230
231 @Override
232 public void setCallsign(String callsign) {
233 this.callsign = callsign;
234 }
235
236 @Override
237 public String getAltitude() {
238 return altitude;
239 }
240
241 @Override
242 public void setAltitude(String altitude) {
243 this.altitude = altitude;
244 }
245
246 @Override
247 public String getGroundSpeed() {
248 return groundSpeed;
249 }
250
251 @Override
252 public void setGroundSpeed(String groundSpeed) {
253 this.groundSpeed = groundSpeed;
254 }
255
256 @Override
257 public String getTrack() {
258 return track;
259 }
260
261 @Override
262 public void setTrack(String track) {
263 this.track = track;
264 }
265
266 @Override
267 public String getLatitude() {
268 return latitude;
269 }
270
271 @Override
272 public void setLatitude(String latitude) {
273 this.latitude = latitude;
274 }
275
276 @Override
277 public String getLongitude() {
278 return longitude;
279 }
280
281 @Override
282 public void setLongitude(String longitude) {
283 this.longitude = longitude;
284 }
285
286 @Override
287 public String getVerticalRate() {
288 return verticalRate;
289 }
290
291 @Override
292 public void setVerticalRate(String verticalRate) {
293 this.verticalRate = verticalRate;
294 }
295
296 @Override
297 public String getSquawk() {
298 return squawk;
299 }
300
301 @Override
302 public void setSquawk(String squawk) {
303 this.squawk = squawk;
304 }
305
306 @Override
307 public String getAlertSquawkChange() {
308 return alertSquawkChange;
309 }
310
311 @Override
312 public void setAlertSquawkChange(String alertSquawkChange) {
313 this.alertSquawkChange = alertSquawkChange;
314 }
315
316 @Override
317 public String getEmergency() {
318 return emergency;
319 }
320
321 @Override
322 public void setEmergency(String emergency) {
323 this.emergency = emergency;
324 }
325
326 @Override
327 public String getIdentSPI() {
328 return identSPI;
329 }
330
331 @Override
332 public void setIdentSPI(String identSPI) {
333 this.identSPI = identSPI;
334 }
335
336 @Override
337 public boolean isOnGround() {
338 return onGround;
339 }
340
341 @Override
342 public void setOnGround(boolean onGround) {
343 this.onGround = onGround;
344 }
345
346 public static <T extends SBS1Message> T make(Object[] msg, Class<T> tClass) throws InvalidMessageBobyException {
347 SBS1FullMessage msgObj = new SBS1FullMessage();
348 try {
349 msgObj.setSessionID(String.valueOf(msg[2]));
350
351 if (!CLK.class.equals(tClass)) {
352 msgObj.setAircraftId(String.valueOf(msg[3]));
353 msgObj.setHexIdent(String.valueOf(msg[4]));
354 msgObj.setFlightId(String.valueOf(msg[5]));
355 }
356
357 msgObj.setDateMessageGenerated(String.valueOf(msg[6]));
358 msgObj.setTimeMessageGenerated(String.valueOf(msg[7]));
359 msgObj.setDataMessageLogged(String.valueOf(msg[8]));
360 msgObj.setTimeMessageLogged(String.valueOf(msg[9]));
361
362
363 if (!AIR.class.equals(tClass) &&
364 !CLK.class.equals(tClass)) {
365 if (STA.class.equals(tClass)) {
366 msgObj.setStatusFlags(StatusFlagsType.from(String.valueOf(msg[10])));
367 } else {
368 msgObj.setCallsign(String.valueOf(msg[10]));
369 }
370 }
371
372 if (!AIR.class.equals(tClass) &&
373 !CLK.class.equals(tClass) &&
374 !SEL.class.equals(tClass) &&
375 !ID.class.equals(tClass) &&
376 !STA.class.equals(tClass) &&
377 !AIR.class.equals(tClass) &&
378 !CLK.class.equals(tClass)) {
379
380 msgObj.setAltitude(String.valueOf(msg[11]));
381 msgObj.setGroundSpeed(String.valueOf(msg[12]));
382 msgObj.setTrack(String.valueOf(msg[13]));
383 msgObj.setLatitude(String.valueOf(msg[14]));
384 msgObj.setLongitude(String.valueOf(msg[15]));
385 msgObj.setVerticalRate(String.valueOf(msg[16]));
386 msgObj.setSquawk(String.valueOf(msg[17]));
387 msgObj.setAlertSquawkChange(String.valueOf(msg[18]));
388 msgObj.setEmergency(String.valueOf(msg[19]));
389 msgObj.setIdentSPI(String.valueOf(msg[20]));
390 msgObj.setOnGround((Boolean.parseBoolean(String.valueOf(msg[21]))));
391 }
392
393 } catch (Throwable t) {
394 throw new InvalidMessageBobyException(t);
395 }
396 return (T) msgObj;
397 }
398
399
400 @Override
401 public String toString() {
402 final StringBuffer sb = new StringBuffer("SBS1FullMessage{");
403 sb.append("sessionID='").append(sessionID).append('\'');
404 sb.append(", aircraftId='").append(aircraftId).append('\'');
405 sb.append(", hexIdent='").append(hexIdent).append('\'');
406 sb.append(", flightId='").append(flightId).append('\'');
407 sb.append(", dateMessageGenerated='").append(dateMessageGenerated).append('\'');
408 sb.append(", timeMessageGenerated='").append(timeMessageGenerated).append('\'');
409 sb.append(", dataMessageLogged='").append(dataMessageLogged).append('\'');
410 sb.append(", timeMessageLogged='").append(timeMessageLogged).append('\'');
411 sb.append(", callsign='").append(callsign).append('\'');
412 sb.append(", altitude='").append(altitude).append('\'');
413 sb.append(", groundSpeed='").append(groundSpeed).append('\'');
414 sb.append(", track='").append(track).append('\'');
415 sb.append(", latitude='").append(latitude).append('\'');
416 sb.append(", longitude='").append(longitude).append('\'');
417 sb.append(", verticalRate='").append(verticalRate).append('\'');
418 sb.append(", squawk='").append(squawk).append('\'');
419 sb.append(", alertSquawkChange='").append(alertSquawkChange).append('\'');
420 sb.append(", emergency='").append(emergency).append('\'');
421 sb.append(", identSPI='").append(identSPI).append('\'');
422 sb.append(", onGround=").append(onGround);
423 sb.append('}');
424 return sb.toString();
425 }
426
427
428 }