Issue #2763. Made LFCR correction of input data.

Former-commit-id: c60080ee7f [formerly d715fc58dc] [formerly 633a33dd21] [formerly 633a33dd21 [formerly 43802c3a5f]] [formerly 47fc09a684 [formerly 633a33dd21 [formerly 43802c3a5f] [formerly 47fc09a684 [formerly ea2d524767ea5eef74cda5fa5fbff886da1d3bc9]]]]
Former-commit-id: 47fc09a684
Former-commit-id: e0f32311bebac23e63864a2651ecd4ccfa6fa599 [formerly b95a9391756e1f2a8fcfd1f7948aee953988e1d7] [formerly 293af25a13 [formerly 239f37f467]]
Former-commit-id: 293af25a13
Former-commit-id: b2d7b314d4
This commit is contained in:
Slav Korolev 2014-02-11 11:43:54 -05:00
parent 79a5c6a7c2
commit 49c0814c49

View file

@ -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."