Issue #2655 fix textlightning distribution regex

Change-Id: Ia8900e8baa05d831c984fbf355034ca189364d99

Former-commit-id: 48825cb03da5bde6f8b1252fe2e366119535f8f3
This commit is contained in:
Nate Jensen 2014-02-12 15:03:45 -06:00
parent 40bc9df420
commit 16d6a29bb9
4 changed files with 172 additions and 157 deletions

View file

@ -2,13 +2,16 @@ Manifest-Version: 1.0
Bundle-ManifestVersion: 2 Bundle-ManifestVersion: 2
Bundle-Name: Textlightning Plug-in Bundle-Name: Textlightning Plug-in
Bundle-SymbolicName: com.raytheon.edex.plugin.textlightning Bundle-SymbolicName: com.raytheon.edex.plugin.textlightning
Bundle-Version: 1.12.1174.qualifier Bundle-Version: 1.14.0.qualifier
Eclipse-RegisterBuddy: com.raytheon.uf.common.serialization, com.raytheon.edex.common Eclipse-RegisterBuddy: com.raytheon.uf.common.serialization, com.raytheon.edex.common
Bundle-Vendor: RAYTHEON Bundle-Vendor: RAYTHEON
Require-Bundle: com.raytheon.edex.common, Require-Bundle: com.raytheon.uf.edex.decodertools,
com.raytheon.uf.edex.decodertools;bundle-version="1.0.0", com.raytheon.uf.common.dataplugin
javax.persistence
Bundle-RequiredExecutionEnvironment: JavaSE-1.6 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
Import-Package: com.raytheon.uf.common.dataplugin.binlightning, Import-Package: com.raytheon.edex.exception,
com.raytheon.edex.plugin,
com.raytheon.uf.common.dataplugin.binlightning,
com.raytheon.uf.common.dataplugin.binlightning.impl, com.raytheon.uf.common.dataplugin.binlightning.impl,
org.apache.commons.logging com.raytheon.uf.common.status,
com.raytheon.uf.common.time,
com.raytheon.uf.edex.core

View file

@ -22,23 +22,21 @@ package com.raytheon.edex.plugin.textlightning;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Calendar; import java.util.Calendar;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import com.raytheon.edex.exception.DecoderException; import com.raytheon.edex.exception.DecoderException;
import com.raytheon.edex.plugin.AbstractDecoder; import com.raytheon.edex.plugin.AbstractDecoder;
import com.raytheon.edex.plugin.IBinaryDecoder; import com.raytheon.edex.plugin.IBinaryDecoder;
import com.raytheon.edex.plugin.textlightning.impl.TextLightningParser; import com.raytheon.edex.plugin.textlightning.impl.TextLightningParser;
import com.raytheon.uf.common.dataplugin.PluginDataObject; import com.raytheon.uf.common.dataplugin.PluginDataObject;
import com.raytheon.uf.common.dataplugin.PluginException;
import com.raytheon.uf.common.dataplugin.binlightning.BinLightningRecord; import com.raytheon.uf.common.dataplugin.binlightning.BinLightningRecord;
import com.raytheon.uf.common.dataplugin.binlightning.impl.LightningStrikePoint; import com.raytheon.uf.common.dataplugin.binlightning.impl.LightningStrikePoint;
import com.raytheon.uf.common.status.IUFStatusHandler;
import com.raytheon.uf.common.status.UFStatus;
import com.raytheon.uf.common.time.DataTime; import com.raytheon.uf.common.time.DataTime;
import com.raytheon.uf.common.time.TimeRange; import com.raytheon.uf.common.time.TimeRange;
import com.raytheon.uf.edex.decodertools.time.TimeTools; import com.raytheon.uf.edex.decodertools.time.TimeTools;
/** /**
* TODO Add Description * Decoder for text lightning data
* *
* <pre> * <pre>
* *
@ -48,6 +46,7 @@ import com.raytheon.uf.edex.decodertools.time.TimeTools;
* ------------ ---------- ----------- -------------------------- * ------------ ---------- ----------- --------------------------
* Mar 25, 2010 jsanchez Initial creation * Mar 25, 2010 jsanchez Initial creation
* Aug 30, 2013 2298 rjpeter Make getPluginName abstract * Aug 30, 2013 2298 rjpeter Make getPluginName abstract
* Feb 12, 2014 2655 njensen Set source
* *
* </pre> * </pre>
* *
@ -57,7 +56,9 @@ import com.raytheon.uf.edex.decodertools.time.TimeTools;
public class TextLightningDecoder extends AbstractDecoder implements public class TextLightningDecoder extends AbstractDecoder implements
IBinaryDecoder { IBinaryDecoder {
private final Log logger = LogFactory.getLog(getClass());
private static final IUFStatusHandler logger = UFStatus
.getHandler(TextLightningDecoder.class);
private String traceId = null; private String traceId = null;
@ -66,6 +67,7 @@ public class TextLightningDecoder extends AbstractDecoder implements
* will return false, decode() will return a null. * will return false, decode() will return a null.
*/ */
public TextLightningDecoder() { public TextLightningDecoder() {
} }
/** /**
@ -116,11 +118,10 @@ public class TextLightningDecoder extends AbstractDecoder implements
if (report != null) { if (report != null) {
report.setTraceId(traceId); report.setTraceId(traceId);
try {
report.constructDataURI(); // TODO anyone have any idea what the source should actually be
} catch (PluginException e) { // named?
throw new DecoderException("Error constructing datauri", e); report.setSource("text");
}
} }
return new PluginDataObject[] { report }; return new PluginDataObject[] { report };

View file

@ -28,15 +28,15 @@ import java.util.List;
import java.util.regex.Matcher; import java.util.regex.Matcher;
import java.util.regex.Pattern; import java.util.regex.Pattern;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import com.raytheon.uf.common.dataplugin.binlightning.impl.LightningStrikePoint; import com.raytheon.uf.common.dataplugin.binlightning.impl.LightningStrikePoint;
import com.raytheon.uf.common.dataplugin.binlightning.impl.LtgMsgType; import com.raytheon.uf.common.dataplugin.binlightning.impl.LtgMsgType;
import com.raytheon.uf.common.dataplugin.binlightning.impl.LtgStrikeType; import com.raytheon.uf.common.dataplugin.binlightning.impl.LtgStrikeType;
import com.raytheon.uf.common.status.IUFStatusHandler;
import com.raytheon.uf.common.status.UFStatus;
import com.raytheon.uf.common.status.UFStatus.Priority;
/** /**
* * Parser for text lightning data
* *
* <pre> * <pre>
* *
@ -45,6 +45,7 @@ import com.raytheon.uf.common.dataplugin.binlightning.impl.LtgStrikeType;
* ------------ ---------- ----------- -------------------------- * ------------ ---------- ----------- --------------------------
* Dec 15, 2009 3983 jsanchez Initial creation * Dec 15, 2009 3983 jsanchez Initial creation
* Feb 27, 2013 DCS 152 jgerth/elau Support for WWLLN * Feb 27, 2013 DCS 152 jgerth/elau Support for WWLLN
* Feb 12, 2014 2655 njensen Use status handler for logging
* *
* </pre> * </pre>
* *
@ -52,77 +53,85 @@ import com.raytheon.uf.common.dataplugin.binlightning.impl.LtgStrikeType;
* @version 1.0 * @version 1.0
*/ */
public class TextLightningParser { public class TextLightningParser {
/** The logger */ /** The logger */
private Log logger = LogFactory.getLog(getClass()); private static final IUFStatusHandler logger = UFStatus
.getHandler(TextLightningParser.class);
int currentReport = -1; int currentReport = -1;
private List<LightningStrikePoint> reports; private List<LightningStrikePoint> reports;
// 03/23/2010 13:35:01 72.00 -157.00 -14 1 // 03/23/2010 13:35:01 72.00 -157.00 -14 1
private static final String LIGHTNING_PTRN_A = "(\\d{2,2}/\\d{2,2}/\\d{4,4}) (\\d{2,2}:\\d{2,2}:\\d{2,2})\\s{1,}(\\d{1,2}.\\d{2,2})\\s{1,}( |-\\d{1,3}.\\d{2,2})\\s{1,}( |-\\d{1,2})\\s{1,}(\\d{1,2})"; private static final String LIGHTNING_PTRN_A = "(\\d{2,2}/\\d{2,2}/\\d{4,4}) (\\d{2,2}:\\d{2,2}:\\d{2,2})\\s{1,}(\\d{1,2}.\\d{2,2})\\s{1,}( |-\\d{1,3}.\\d{2,2})\\s{1,}( |-\\d{1,2})\\s{1,}(\\d{1,2})";
private static final Pattern LTG_PTRN_A = Pattern.compile(LIGHTNING_PTRN_A); private static final Pattern LTG_PTRN_A = Pattern.compile(LIGHTNING_PTRN_A);
// 10:03:24:13:35:00.68 72.000 157.000 -14.2 1 // 10:03:24:13:35:00.68 72.000 157.000 -14.2 1
private static final String LIGHTNING_PTRN_B = "(\\d{2,2}:\\d{2,2}:\\d{2,2}:\\d{2,2}:\\d{2,2}:\\d{2,2}\\.\\d{2,2})\\s{1,}(\\d{1,2}\\.\\d{2,})\\s{1,}(-?\\d{1,3}\\.\\d{2,})\\s{1,}(-?\\d{1,3}\\.\\d{1,})\\s{1,}(\\d{1,2}).*"; private static final String LIGHTNING_PTRN_B = "(\\d{2,2}:\\d{2,2}:\\d{2,2}:\\d{2,2}:\\d{2,2}:\\d{2,2}\\.\\d{2,2})\\s{1,}(\\d{1,2}\\.\\d{2,})\\s{1,}(-?\\d{1,3}\\.\\d{2,})\\s{1,}(-?\\d{1,3}\\.\\d{1,})\\s{1,}(\\d{1,2}).*";
private static final Pattern LTG_PTRN_B = Pattern.compile(LIGHTNING_PTRN_B); private static final Pattern LTG_PTRN_B = Pattern.compile(LIGHTNING_PTRN_B);
// 2012-03-14T18:58:00,-5.5021,-45.9669,0.0,1 // 2012-03-14T18:58:00,-5.5021,-45.9669,0.0,1
private static final String LIGHTNING_PTRN_C = "(\\d{4,4}-\\d{2,2}-\\d{2,2})T(\\d{2,2}:\\d{2,2}:\\d{2,2}),(-?\\d{1,2}.\\d{1,4}),(-?\\d{1,3}.\\d{1,4}),(0.0),(1)"; private static final String LIGHTNING_PTRN_C = "(\\d{4,4}-\\d{2,2}-\\d{2,2})T(\\d{2,2}:\\d{2,2}:\\d{2,2}),(-?\\d{1,2}.\\d{1,4}),(-?\\d{1,3}.\\d{1,4}),(0.0),(1)";
private static final Pattern LTG_PTRN_C = Pattern.compile(LIGHTNING_PTRN_C); private static final Pattern LTG_PTRN_C = Pattern.compile(LIGHTNING_PTRN_C);
/** /**
* default constructor. * default constructor.
*/ */
public TextLightningParser(){ public TextLightningParser() {
//empty // empty
} }
public TextLightningParser(byte [] message){ public TextLightningParser(byte[] message) {
setData(message); setData(message);
} }
/** /**
* Set the message data and decode all message reports. * Set the message data and decode all message reports.
* @param message Raw message data. *
* @param message
* Raw message data.
*/ */
private void setData(byte [] message) { private void setData(byte[] message) {
currentReport = -1; currentReport = -1;
reports = findReports(message); reports = findReports(message);
if((reports != null)&&(reports.size() > 0)) { if ((reports != null) && (reports.size() > 0)) {
currentReport = 0; currentReport = 0;
} }
} }
/** /**
* Does this parser contain any more reports. * Does this parser contain any more reports.
*
* @return Does this parser contain any more reports. * @return Does this parser contain any more reports.
*/ */
public boolean hasNext() { public boolean hasNext() {
boolean next = (reports != null); boolean next = (reports != null);
if(next) { if (next) {
next = ((currentReport >= 0)&&(currentReport < reports.size())); next = ((currentReport >= 0) && (currentReport < reports.size()));
} }
if(!next) { if (!next) {
reports = null; reports = null;
currentReport = -1; currentReport = -1;
} }
return next; return next;
} }
/** /**
* Get the next available report. Returns a null reference if no * Get the next available report. Returns a null reference if no more
* more reports are available. * reports are available.
*
* @return The next available report. * @return The next available report.
*/ */
public LightningStrikePoint next() { public LightningStrikePoint next() {
LightningStrikePoint report = null; LightningStrikePoint report = null;
if(currentReport < 0) { if (currentReport < 0) {
return report; return report;
} }
if(currentReport >= reports.size()) { if (currentReport >= reports.size()) {
reports = null; reports = null;
currentReport = -1; currentReport = -1;
} else { } else {
@ -131,42 +140,41 @@ public class TextLightningParser {
return report; return report;
} }
/** /**
* *
* @param start * @param start
* @return * @return
*/ */
private List<LightningStrikePoint> findReports(byte [] message) { private List<LightningStrikePoint> findReports(byte[] message) {
List<LightningStrikePoint> reports = new ArrayList<LightningStrikePoint>(); List<LightningStrikePoint> reports = new ArrayList<LightningStrikePoint>();
List<String> lines = separateLines(message); List<String> lines = separateLines(message);
if(lines != null) { if (lines != null) {
LightningStrikePoint strike; LightningStrikePoint strike;
for(String line : lines){ for (String line : lines) {
try{ try {
Matcher m = LTG_PTRN_A.matcher(line); Matcher m = LTG_PTRN_A.matcher(line);
if(m.matches()){ if (m.matches()) {
String[] date = m.group(1).split("/"); String[] date = m.group(1).split("/");
String[] time = m.group(2).split(":"); String[] time = m.group(2).split(":");
String month = date[0]; String month = date[0];
String day = date[1]; String day = date[1];
String year = date[2]; String year = date[2];
String hour = time[0]; String hour = time[0];
String min = time[1]; String min = time[1];
String sec = time[2]; String sec = time[2];
String latitude = m.group(3); String latitude = m.group(3);
String longitude= m.group(4); String longitude = m.group(4);
String strength = m.group(5); String strength = m.group(5);
String count = m.group(6); String count = m.group(6);
strike = new LightningStrikePoint( strike = new LightningStrikePoint(
Double.parseDouble(latitude), Double.parseDouble(latitude),
Double.parseDouble(longitude)); Double.parseDouble(longitude));
strike.setStrikeStrength(Double.parseDouble(strength)); strike.setStrikeStrength(Double.parseDouble(strength));
strike.setStrikeCount(Integer.parseInt(count)); strike.setStrikeCount(Integer.parseInt(count));
strike.setMonth(Integer.parseInt(month)); strike.setMonth(Integer.parseInt(month));
strike.setDay(Integer.parseInt(day)); strike.setDay(Integer.parseInt(day));
strike.setYear(Integer.parseInt(year)); strike.setYear(Integer.parseInt(year));
strike.setHour(Integer.parseInt(hour)); strike.setHour(Integer.parseInt(hour));
strike.setMinute(Integer.parseInt(min)); strike.setMinute(Integer.parseInt(min));
strike.setSecond(Integer.parseInt(sec)); strike.setSecond(Integer.parseInt(sec));
@ -174,92 +182,94 @@ public class TextLightningParser {
strike.setMsgType(LtgMsgType.STRIKE_MSG_FL); strike.setMsgType(LtgMsgType.STRIKE_MSG_FL);
strike.setType(LtgStrikeType.STRIKE_CG); strike.setType(LtgStrikeType.STRIKE_CG);
strike.setLightSource("UNKN"); strike.setLightSource("UNKN");
reports.add(strike); reports.add(strike);
} else { } else {
m = LTG_PTRN_B.matcher(line); m = LTG_PTRN_B.matcher(line);
if(m.matches()){ if (m.matches()) {
String[] datetime = m.group(1).split(":"); String[] datetime = m.group(1).split(":");
String year = datetime[0]; String year = datetime[0];
String month = datetime[1]; String month = datetime[1];
String day = datetime[2]; String day = datetime[2];
String hour = datetime[3]; String hour = datetime[3];
String min = datetime[4]; String min = datetime[4];
String sec = datetime[5].substring(0,2); String sec = datetime[5].substring(0, 2);
String msec = datetime[5].substring(3,5); String msec = datetime[5].substring(3, 5);
String latitude = m.group(2); String latitude = m.group(2);
String longitude= m.group(3); String longitude = m.group(3);
String strength = m.group(4); String strength = m.group(4);
String count = m.group(5); String count = m.group(5);
double lon = Double.parseDouble(longitude); double lon = Double.parseDouble(longitude);
if(lon > 0) { if (lon > 0) {
lon = -lon; lon = -lon;
} }
strike = new LightningStrikePoint( strike = new LightningStrikePoint(
Double.parseDouble(latitude),lon); Double.parseDouble(latitude), lon);
strike.setStrikeStrength(Double.parseDouble(strength)); strike.setStrikeStrength(Double
.parseDouble(strength));
strike.setStrikeCount(Integer.parseInt(count)); strike.setStrikeCount(Integer.parseInt(count));
strike.setMonth(Integer.parseInt(month)); strike.setMonth(Integer.parseInt(month));
strike.setDay(Integer.parseInt(day)); strike.setDay(Integer.parseInt(day));
strike.setYear(Integer.parseInt(year) + 2000); strike.setYear(Integer.parseInt(year) + 2000);
strike.setHour(Integer.parseInt(hour)); strike.setHour(Integer.parseInt(hour));
strike.setMinute(Integer.parseInt(min)); strike.setMinute(Integer.parseInt(min));
strike.setSecond(Integer.parseInt(sec)); strike.setSecond(Integer.parseInt(sec));
strike.setMillis(Integer.parseInt(msec)*10); strike.setMillis(Integer.parseInt(msec) * 10);
strike.setMsgType(LtgMsgType.STRIKE_MSG_FL); strike.setMsgType(LtgMsgType.STRIKE_MSG_FL);
strike.setType(LtgStrikeType.STRIKE_CG); strike.setType(LtgStrikeType.STRIKE_CG);
strike.setLightSource("UNKN"); strike.setLightSource("UNKN");
reports.add(strike); reports.add(strike);
} else { } else {
m = LTG_PTRN_C.matcher(line); m = LTG_PTRN_C.matcher(line);
if (m.matches()) { if (m.matches()) {
String[] datec = m.group(1).split("-"); String[] datec = m.group(1).split("-");
String[] timec = m.group(2).split(":"); String[] timec = m.group(2).split(":");
String year = datec[0]; String year = datec[0];
String month = datec[1]; String month = datec[1];
String day = datec[2]; String day = datec[2];
String hour = timec[0]; String hour = timec[0];
String min = timec[1]; String min = timec[1];
String sec = timec[2]; String sec = timec[2];
String msec = "0"; String msec = "0";
String sls = "WWLLN"; String sls = "WWLLN";
String latitude = m.group(3); String latitude = m.group(3);
String longitude= m.group(4); String longitude = m.group(4);
String strength = m.group(5); String strength = m.group(5);
String count = m.group(6); String count = m.group(6);
strike = new LightningStrikePoint( strike = new LightningStrikePoint(
Double.parseDouble(latitude),Double.parseDouble(longitude)); Double.parseDouble(latitude),
strike.setStrikeStrength(Double.parseDouble(strength)); Double.parseDouble(longitude));
strike.setStrikeCount(Integer.parseInt(count)); strike.setStrikeStrength(Double
strike.setMonth(Integer.parseInt(month)); .parseDouble(strength));
strike.setDay(Integer.parseInt(day)); strike.setStrikeCount(Integer.parseInt(count));
strike.setYear(Integer.parseInt(year)); strike.setMonth(Integer.parseInt(month));
strike.setHour(Integer.parseInt(hour)); strike.setDay(Integer.parseInt(day));
strike.setMinute(Integer.parseInt(min)); strike.setYear(Integer.parseInt(year));
strike.setSecond(Integer.parseInt(sec)); strike.setHour(Integer.parseInt(hour));
strike.setMillis(Integer.parseInt(msec)*10); strike.setMinute(Integer.parseInt(min));
strike.setMsgType(LtgMsgType.STRIKE_MSG_FL); strike.setSecond(Integer.parseInt(sec));
strike.setType(LtgStrikeType.STRIKE_CG); strike.setMillis(Integer.parseInt(msec) * 10);
strike.setLightSource(sls); strike.setMsgType(LtgMsgType.STRIKE_MSG_FL);
reports.add(strike); strike.setType(LtgStrikeType.STRIKE_CG);
} else { strike.setLightSource(sls);
logger.error("Cannot match lightning input " + line); reports.add(strike);
} } else {
logger.error("Cannot match lightning input "
+ line);
}
} }
} }
} catch (NumberFormatException e){ } catch (NumberFormatException e) {
logger.debug("Invalid numerical value", e); logger.handle(Priority.DEBUG, "Invalid numerical value", e);
} }
} }
} }
return reports; return reports;
} }
/** /**
* *
* @param message * @param message
@ -281,7 +291,7 @@ public class TextLightningParser {
} }
} }
} catch (Exception e) { } catch (Exception e) {
logger.error("Error reading from reader",e); logger.error("Error reading from reader", e);
} finally { } finally {
if (reader != null) { if (reader != null) {
try { try {
@ -294,39 +304,40 @@ public class TextLightningParser {
} }
return reportLines; return reportLines;
} }
public static final void main(String[] args) {
public static final void main(String [] args) { // 10: 03: 24: 13: 35: 00.68 72.000 157.000 -14.2 1
// 10: 03: 24: 13: 35: 00.68 72.000 157.000 -14.2 1 // String LIGHTNING_PTRN_B =
// String LIGHTNING_PTRN_B = "(\\d{2,2}:\\d{2,2}:\\d{2,2}:\\d{2,2}:\\d{2,2}:\\d{2,2}\\.\\d{2,2})\\s{1,}(\\d{1,2}.\\d{2,})\\s{1,}( |-\\d{1,3}.\\d{2,})\\s{1,}( |-\\d{1,2}\\.\\d{1,})\\s{1,}(\\d{1,2})"; // "(\\d{2,2}:\\d{2,2}:\\d{2,2}:\\d{2,2}:\\d{2,2}:\\d{2,2}\\.\\d{2,2})\\s{1,}(\\d{1,2}.\\d{2,})\\s{1,}( |-\\d{1,3}.\\d{2,})\\s{1,}( |-\\d{1,2}\\.\\d{1,})\\s{1,}(\\d{1,2})";
// String LIGHTNING_PTRN_B = "(\\d{2,2}:\\d{2,2}:\\d{2,2}:\\d{2,2}:\\d{2,2}:\\d{2,2}\\.\\d{2,2})\\s{1,}(\\d{1,2}\\.\\d{2,})\\s{1,}(-?\\d{1,3}\\.\\d{2,})\\s{1,}(-?\\d{1,3}\\.\\d{1,})\\s{1,}(\\d{1,2}).*"; // String LIGHTNING_PTRN_B =
// // "(\\d{2,2}:\\d{2,2}:\\d{2,2}:\\d{2,2}:\\d{2,2}:\\d{2,2}\\.\\d{2,2})\\s{1,}(\\d{1,2}\\.\\d{2,})\\s{1,}(-?\\d{1,3}\\.\\d{2,})\\s{1,}(-?\\d{1,3}\\.\\d{1,})\\s{1,}(\\d{1,2}).*";
// Pattern LTG_PTRN_B = Pattern.compile(LIGHTNING_PTRN_B); //
// // Pattern LTG_PTRN_B = Pattern.compile(LIGHTNING_PTRN_B);
// Matcher m = LTG_PTRN_B.matcher("10:03:24:13:35:00.68 72.000 157.000 -14.2 1"); //
// if(m.matches()) { // Matcher m =
// for(int i = 0;i <= m.groupCount();i++) { // LTG_PTRN_B.matcher("10:03:24:13:35:00.68 72.000 157.000 -14.2 1");
// System.out.println(m.group(i)); // if(m.matches()) {
// } // for(int i = 0;i <= m.groupCount();i++) {
// } // System.out.println(m.group(i));
// }
// }
TextLightningParser parser = null; TextLightningParser parser = null;
parser = new TextLightningParser("03/23/2010 13:35:01 72.00 -157.00 -14 1\n03/23/2010 13:36:01 72.00 -157.00 -14 1".getBytes()); parser = new TextLightningParser(
while(parser.hasNext()) { "03/23/2010 13:35:01 72.00 -157.00 -14 1\n03/23/2010 13:36:01 72.00 -157.00 -14 1"
.getBytes());
while (parser.hasNext()) {
System.out.println(parser.next()); System.out.println(parser.next());
} }
parser = new TextLightningParser(
parser = new TextLightningParser("10:03:24:13:35:00.68 72.000 157.000 -14.2 1\n10:03:24:13:36:00.68 72.000 157.000 -14.2 1".getBytes()); "10:03:24:13:35:00.68 72.000 157.000 -14.2 1\n10:03:24:13:36:00.68 72.000 157.000 -14.2 1"
while(parser.hasNext()) { .getBytes());
while (parser.hasNext()) {
System.out.println(parser.next()); System.out.println(parser.next());
} }
} }
} }

View file

@ -19,6 +19,6 @@
further_licensing_information. further_licensing_information.
--> -->
<requestPatterns xmlns:ns2="group"> <requestPatterns xmlns:ns2="group">
<regex>FAA_*</regex> <regex>FAA_</regex>
<regex>WWLLN_*</regex> <regex>WWLLN_</regex>
</requestPatterns> </requestPatterns>