Issue #2763. Made LFCR correction of input data.
Former-commit-id:c60080ee7f
[formerlyd715fc58dc
] [formerly633a33dd21
] [formerly633a33dd21
[formerly43802c3a5f
]] [formerly47fc09a684
[formerly633a33dd21
[formerly43802c3a5f
] [formerly47fc09a684
[formerly ea2d524767ea5eef74cda5fa5fbff886da1d3bc9]]]] Former-commit-id:47fc09a684
Former-commit-id: e0f32311bebac23e63864a2651ecd4ccfa6fa599 [formerly b95a9391756e1f2a8fcfd1f7948aee953988e1d7] [formerly293af25a13
[formerly239f37f467
]] Former-commit-id:293af25a13
Former-commit-id:b2d7b314d4
This commit is contained in:
parent
79a5c6a7c2
commit
49c0814c49
1 changed files with 38 additions and 8 deletions
|
@ -46,6 +46,7 @@ import com.raytheon.uf.edex.wmo.message.WMOHeader;
|
|||
* Nov 05, 2009 3267 jkorman Initial creation
|
||||
* Aug 30, 2013 2298 rjpeter Make getPluginName abstract
|
||||
* Nov 26, 2013 2582 njensen Cleanup
|
||||
* Feb 11, 2014 2763 skorolev Made LFCR correction of input data.
|
||||
*
|
||||
* </pre>
|
||||
*
|
||||
|
@ -102,8 +103,38 @@ public class VAAParser implements Iterable<VAARecord> {
|
|||
*/
|
||||
public VAAParser(byte[] message, String traceId, Headers headers) {
|
||||
this.traceId = traceId;
|
||||
wmoHeader = new WMOHeader(message, headers);
|
||||
setData(message, headers);
|
||||
byte[] msg = correctLFCR(message);
|
||||
wmoHeader = new WMOHeader(msg, headers);
|
||||
setData(msg, headers);
|
||||
}
|
||||
|
||||
/**
|
||||
* Removes Line Feed and Cartridge Return (LFCR) codes after colon in the
|
||||
* message. We correct the line breaks because sometimes the products are
|
||||
* distributed with a line break splitting the line from the value, e.g.
|
||||
* ERUPTION DETAILS: \r\n CONTINUOUS EMISSIONS vs ERUPTION DETAILS:
|
||||
* CONTINUOUS EMISSIONS
|
||||
*
|
||||
* @param bytes
|
||||
* @return bytes corrected
|
||||
*/
|
||||
private static byte[] correctLFCR(byte[] bytes) {
|
||||
|
||||
boolean flagLFCR = false;
|
||||
StringBuilder sb = new StringBuilder(new String(bytes, 0, bytes.length));
|
||||
for (int i = 0; i < sb.length(); i++) {
|
||||
if (flagLFCR) {
|
||||
if (sb.charAt(i) == '\r' || sb.charAt(i) == '\n') {
|
||||
sb.setCharAt(i, ' ');
|
||||
} else {
|
||||
flagLFCR = false;
|
||||
}
|
||||
}
|
||||
if (sb.charAt(i) == ':') {
|
||||
flagLFCR = true;
|
||||
}
|
||||
}
|
||||
return String.valueOf(sb).getBytes();
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -449,15 +480,14 @@ public class VAAParser implements Iterable<VAARecord> {
|
|||
|
||||
String msg1 = "\u0001\r\r\n738\r\r\nFVXX20 KNES 041708 CAA"
|
||||
+ "\r\r\nVA ADVISORY" + "\r\r\nDTG: 20091104/1708Z"
|
||||
+ "\r\r\nVAAC: WASHINGTON"
|
||||
+ "\r\r\nVOLCANO: SOUFRIERE HILLS 1600-05"
|
||||
+ "\r\r\nPSN: N1642 W06210" + "\r\r\nAREA: W_INDIES"
|
||||
+ "\r\r\nSUMMIT ELEV: 3002 FT (915 M)"
|
||||
+ "\r\r\nVAAC: WASHINGTON" + "\r\r\nVOLCANO:"
|
||||
+ "\r\r\nSOUFRIERE HILLS 1600-05" + "\r\r\nPSN: N1642 W06210"
|
||||
+ "\r\r\nAREA: W_INDIES" + "\r\r\nSUMMIT ELEV: 3002 FT (915 M)"
|
||||
+ "\r\r\nADVISORY NR: 2009/146"
|
||||
+ "\r\r\nINFO SOURCE: GOES-12. GFS WINDS."
|
||||
+ "\r\r\nERUPTION DETAILS: CONTINUOUS EMISSIONS"
|
||||
+ "\r\r\nOBS VA DTG: 04/1645Z"
|
||||
+ "\r\r\nOBS VA CLD: SFC/FL100 42NM WID LINE BTN N1638"
|
||||
+ "\r\r\nOBS VA DTG: 04/1645Z" + "\r\r\nOBS VA CLD:"
|
||||
+ "\r\r\nSFC/FL100 42NM WID LINE BTN N1638"
|
||||
+ "\r\r\nW06611 - N1643 W06214. MOV W 7KT"
|
||||
+ "\r\r\nFCST VA CLD +6HR: 04/2300Z SFC/FL100 40NM WID"
|
||||
+ "\r\r\nLINE BTN N1640 W06614 - N1644 W06214."
|
||||
|
|
Loading…
Add table
Reference in a new issue