diff --git a/edexOsgi/com.raytheon.edex.plugin.textlightning/META-INF/MANIFEST.MF b/edexOsgi/com.raytheon.edex.plugin.textlightning/META-INF/MANIFEST.MF
index 79aa87f42e..6bdf3c041c 100644
--- a/edexOsgi/com.raytheon.edex.plugin.textlightning/META-INF/MANIFEST.MF
+++ b/edexOsgi/com.raytheon.edex.plugin.textlightning/META-INF/MANIFEST.MF
@@ -2,13 +2,16 @@ Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: Textlightning Plug-in
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
Bundle-Vendor: RAYTHEON
-Require-Bundle: com.raytheon.edex.common,
- com.raytheon.uf.edex.decodertools;bundle-version="1.0.0",
- javax.persistence
+Require-Bundle: com.raytheon.uf.edex.decodertools,
+ com.raytheon.uf.common.dataplugin
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,
- org.apache.commons.logging
+ com.raytheon.uf.common.status,
+ com.raytheon.uf.common.time,
+ com.raytheon.uf.edex.core
diff --git a/edexOsgi/com.raytheon.edex.plugin.textlightning/src/com/raytheon/edex/plugin/textlightning/TextLightningDecoder.java b/edexOsgi/com.raytheon.edex.plugin.textlightning/src/com/raytheon/edex/plugin/textlightning/TextLightningDecoder.java
index 3337e38f5a..6574715454 100644
--- a/edexOsgi/com.raytheon.edex.plugin.textlightning/src/com/raytheon/edex/plugin/textlightning/TextLightningDecoder.java
+++ b/edexOsgi/com.raytheon.edex.plugin.textlightning/src/com/raytheon/edex/plugin/textlightning/TextLightningDecoder.java
@@ -22,23 +22,21 @@ package com.raytheon.edex.plugin.textlightning;
import java.util.ArrayList;
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.plugin.AbstractDecoder;
import com.raytheon.edex.plugin.IBinaryDecoder;
import com.raytheon.edex.plugin.textlightning.impl.TextLightningParser;
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.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.TimeRange;
import com.raytheon.uf.edex.decodertools.time.TimeTools;
/**
- * TODO Add Description
+ * Decoder for text lightning data
*
*
*
@@ -48,6 +46,7 @@ import com.raytheon.uf.edex.decodertools.time.TimeTools;
* ------------ ---------- ----------- --------------------------
* Mar 25, 2010 jsanchez Initial creation
* Aug 30, 2013 2298 rjpeter Make getPluginName abstract
+ * Feb 12, 2014 2655 njensen Set source
*
*
*
@@ -57,7 +56,9 @@ import com.raytheon.uf.edex.decodertools.time.TimeTools;
public class TextLightningDecoder extends AbstractDecoder implements
IBinaryDecoder {
- private final Log logger = LogFactory.getLog(getClass());
+
+ private static final IUFStatusHandler logger = UFStatus
+ .getHandler(TextLightningDecoder.class);
private String traceId = null;
@@ -66,6 +67,7 @@ public class TextLightningDecoder extends AbstractDecoder implements
* will return false, decode() will return a null.
*/
public TextLightningDecoder() {
+
}
/**
@@ -116,11 +118,10 @@ public class TextLightningDecoder extends AbstractDecoder implements
if (report != null) {
report.setTraceId(traceId);
- try {
- report.constructDataURI();
- } catch (PluginException e) {
- throw new DecoderException("Error constructing datauri", e);
- }
+
+ // TODO anyone have any idea what the source should actually be
+ // named?
+ report.setSource("text");
}
return new PluginDataObject[] { report };
diff --git a/edexOsgi/com.raytheon.edex.plugin.textlightning/src/com/raytheon/edex/plugin/textlightning/impl/TextLightningParser.java b/edexOsgi/com.raytheon.edex.plugin.textlightning/src/com/raytheon/edex/plugin/textlightning/impl/TextLightningParser.java
index 67c5f4389b..e76a82fb4a 100644
--- a/edexOsgi/com.raytheon.edex.plugin.textlightning/src/com/raytheon/edex/plugin/textlightning/impl/TextLightningParser.java
+++ b/edexOsgi/com.raytheon.edex.plugin.textlightning/src/com/raytheon/edex/plugin/textlightning/impl/TextLightningParser.java
@@ -28,15 +28,15 @@ import java.util.List;
import java.util.regex.Matcher;
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.LtgMsgType;
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
*
*
*
@@ -45,6 +45,7 @@ import com.raytheon.uf.common.dataplugin.binlightning.impl.LtgStrikeType;
* ------------ ---------- ----------- --------------------------
* Dec 15, 2009 3983 jsanchez Initial creation
* Feb 27, 2013 DCS 152 jgerth/elau Support for WWLLN
+ * Feb 12, 2014 2655 njensen Use status handler for logging
*
*
*
@@ -52,77 +53,85 @@ import com.raytheon.uf.common.dataplugin.binlightning.impl.LtgStrikeType;
* @version 1.0
*/
public class TextLightningParser {
-
+
/** The logger */
- private Log logger = LogFactory.getLog(getClass());
-
+ private static final IUFStatusHandler logger = UFStatus
+ .getHandler(TextLightningParser.class);
+
int currentReport = -1;
-
+
private List 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 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 Pattern LTG_PTRN_B = Pattern.compile(LIGHTNING_PTRN_B);
// 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 Pattern LTG_PTRN_C = Pattern.compile(LIGHTNING_PTRN_C);
-
+
/**
* default constructor.
*/
- public TextLightningParser(){
- //empty
+ public TextLightningParser() {
+ // empty
}
-
- public TextLightningParser(byte [] message){
+
+ public TextLightningParser(byte[] message) {
setData(message);
}
/**
* 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;
reports = findReports(message);
- if((reports != null)&&(reports.size() > 0)) {
+ if ((reports != null) && (reports.size() > 0)) {
currentReport = 0;
}
}
-
+
/**
* Does this parser contain any more reports.
+ *
* @return Does this parser contain any more reports.
*/
public boolean hasNext() {
boolean next = (reports != null);
- if(next) {
- next = ((currentReport >= 0)&&(currentReport < reports.size()));
+ if (next) {
+ next = ((currentReport >= 0) && (currentReport < reports.size()));
}
- if(!next) {
+ if (!next) {
reports = null;
currentReport = -1;
}
return next;
}
-
+
/**
- * Get the next available report. Returns a null reference if no
- * more reports are available.
+ * Get the next available report. Returns a null reference if no more
+ * reports are available.
+ *
* @return The next available report.
*/
public LightningStrikePoint next() {
-
+
LightningStrikePoint report = null;
- if(currentReport < 0) {
+ if (currentReport < 0) {
return report;
}
- if(currentReport >= reports.size()) {
+ if (currentReport >= reports.size()) {
reports = null;
currentReport = -1;
} else {
@@ -131,42 +140,41 @@ public class TextLightningParser {
return report;
}
-
/**
- *
+ *
* @param start
* @return
*/
- private List findReports(byte [] message) {
- List reports = new ArrayList();
- List lines = separateLines(message);
- if(lines != null) {
+ private List findReports(byte[] message) {
+ List reports = new ArrayList();
+ List lines = separateLines(message);
+ if (lines != null) {
LightningStrikePoint strike;
- for(String line : lines){
- try{
+ for (String line : lines) {
+ try {
Matcher m = LTG_PTRN_A.matcher(line);
- if(m.matches()){
- String[] date = m.group(1).split("/");
- String[] time = m.group(2).split(":");
- String month = date[0];
- String day = date[1];
- String year = date[2];
- String hour = time[0];
- String min = time[1];
- String sec = time[2];
+ if (m.matches()) {
+ String[] date = m.group(1).split("/");
+ String[] time = m.group(2).split(":");
+ String month = date[0];
+ String day = date[1];
+ String year = date[2];
+ String hour = time[0];
+ String min = time[1];
+ String sec = time[2];
String latitude = m.group(3);
- String longitude= m.group(4);
+ String longitude = m.group(4);
String strength = m.group(5);
- String count = m.group(6);
-
+ String count = m.group(6);
+
strike = new LightningStrikePoint(
Double.parseDouble(latitude),
- Double.parseDouble(longitude));
+ Double.parseDouble(longitude));
strike.setStrikeStrength(Double.parseDouble(strength));
strike.setStrikeCount(Integer.parseInt(count));
strike.setMonth(Integer.parseInt(month));
strike.setDay(Integer.parseInt(day));
- strike.setYear(Integer.parseInt(year));
+ strike.setYear(Integer.parseInt(year));
strike.setHour(Integer.parseInt(hour));
strike.setMinute(Integer.parseInt(min));
strike.setSecond(Integer.parseInt(sec));
@@ -174,92 +182,94 @@ public class TextLightningParser {
strike.setMsgType(LtgMsgType.STRIKE_MSG_FL);
strike.setType(LtgStrikeType.STRIKE_CG);
strike.setLightSource("UNKN");
- reports.add(strike);
+ reports.add(strike);
} else {
m = LTG_PTRN_B.matcher(line);
- if(m.matches()){
+ if (m.matches()) {
String[] datetime = m.group(1).split(":");
- String year = datetime[0];
- String month = datetime[1];
- String day = datetime[2];
- String hour = datetime[3];
- String min = datetime[4];
- String sec = datetime[5].substring(0,2);
- String msec = datetime[5].substring(3,5);
-
+ String year = datetime[0];
+ String month = datetime[1];
+ String day = datetime[2];
+ String hour = datetime[3];
+ String min = datetime[4];
+ String sec = datetime[5].substring(0, 2);
+ String msec = datetime[5].substring(3, 5);
String latitude = m.group(2);
- String longitude= m.group(3);
+ String longitude = m.group(3);
String strength = m.group(4);
- String count = m.group(5);
-
-
+ String count = m.group(5);
+
double lon = Double.parseDouble(longitude);
- if(lon > 0) {
+ if (lon > 0) {
lon = -lon;
}
strike = new LightningStrikePoint(
- Double.parseDouble(latitude),lon);
- strike.setStrikeStrength(Double.parseDouble(strength));
+ Double.parseDouble(latitude), lon);
+ strike.setStrikeStrength(Double
+ .parseDouble(strength));
strike.setStrikeCount(Integer.parseInt(count));
strike.setMonth(Integer.parseInt(month));
strike.setDay(Integer.parseInt(day));
- strike.setYear(Integer.parseInt(year) + 2000);
+ strike.setYear(Integer.parseInt(year) + 2000);
strike.setHour(Integer.parseInt(hour));
strike.setMinute(Integer.parseInt(min));
strike.setSecond(Integer.parseInt(sec));
- strike.setMillis(Integer.parseInt(msec)*10);
+ strike.setMillis(Integer.parseInt(msec) * 10);
strike.setMsgType(LtgMsgType.STRIKE_MSG_FL);
strike.setType(LtgStrikeType.STRIKE_CG);
strike.setLightSource("UNKN");
- reports.add(strike);
+ reports.add(strike);
} else {
- m = LTG_PTRN_C.matcher(line);
- if (m.matches()) {
- String[] datec = m.group(1).split("-");
- String[] timec = m.group(2).split(":");
- String year = datec[0];
- String month = datec[1];
- String day = datec[2];
- String hour = timec[0];
- String min = timec[1];
- String sec = timec[2];
- String msec = "0";
- String sls = "WWLLN";
+ m = LTG_PTRN_C.matcher(line);
+ if (m.matches()) {
+ String[] datec = m.group(1).split("-");
+ String[] timec = m.group(2).split(":");
+ String year = datec[0];
+ String month = datec[1];
+ String day = datec[2];
+ String hour = timec[0];
+ String min = timec[1];
+ String sec = timec[2];
+ String msec = "0";
+ String sls = "WWLLN";
- String latitude = m.group(3);
- String longitude= m.group(4);
- String strength = m.group(5);
- String count = m.group(6);
+ String latitude = m.group(3);
+ String longitude = m.group(4);
+ String strength = m.group(5);
+ String count = m.group(6);
- strike = new LightningStrikePoint(
- Double.parseDouble(latitude),Double.parseDouble(longitude));
- strike.setStrikeStrength(Double.parseDouble(strength));
- strike.setStrikeCount(Integer.parseInt(count));
- strike.setMonth(Integer.parseInt(month));
- strike.setDay(Integer.parseInt(day));
- strike.setYear(Integer.parseInt(year));
- strike.setHour(Integer.parseInt(hour));
- strike.setMinute(Integer.parseInt(min));
- strike.setSecond(Integer.parseInt(sec));
- strike.setMillis(Integer.parseInt(msec)*10);
- strike.setMsgType(LtgMsgType.STRIKE_MSG_FL);
- strike.setType(LtgStrikeType.STRIKE_CG);
- strike.setLightSource(sls);
- reports.add(strike);
- } else {
- logger.error("Cannot match lightning input " + line);
- }
+ strike = new LightningStrikePoint(
+ Double.parseDouble(latitude),
+ Double.parseDouble(longitude));
+ strike.setStrikeStrength(Double
+ .parseDouble(strength));
+ strike.setStrikeCount(Integer.parseInt(count));
+ strike.setMonth(Integer.parseInt(month));
+ strike.setDay(Integer.parseInt(day));
+ strike.setYear(Integer.parseInt(year));
+ strike.setHour(Integer.parseInt(hour));
+ strike.setMinute(Integer.parseInt(min));
+ strike.setSecond(Integer.parseInt(sec));
+ strike.setMillis(Integer.parseInt(msec) * 10);
+ strike.setMsgType(LtgMsgType.STRIKE_MSG_FL);
+ strike.setType(LtgStrikeType.STRIKE_CG);
+ strike.setLightSource(sls);
+ reports.add(strike);
+ } else {
+ logger.error("Cannot match lightning input "
+ + line);
+ }
}
}
- } catch (NumberFormatException e){
- logger.debug("Invalid numerical value", e);
+ } catch (NumberFormatException e) {
+ logger.handle(Priority.DEBUG, "Invalid numerical value", e);
}
}
}
return reports;
}
-
+
/**
*
* @param message
@@ -281,7 +291,7 @@ public class TextLightningParser {
}
}
} catch (Exception e) {
- logger.error("Error reading from reader",e);
+ logger.error("Error reading from reader", e);
} finally {
if (reader != null) {
try {
@@ -294,39 +304,40 @@ public class TextLightningParser {
}
return reportLines;
}
-
-
- public static final void main(String [] args) {
- // 10: 03: 24: 13: 35: 00.68 72.000 157.000 -14.2 1
-// 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})";
-// 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);
-//
-// Matcher m = LTG_PTRN_B.matcher("10:03:24:13:35:00.68 72.000 157.000 -14.2 1");
-// if(m.matches()) {
-// for(int i = 0;i <= m.groupCount();i++) {
-// System.out.println(m.group(i));
-// }
-// }
-
-
-
+
+ public static final void main(String[] args) {
+ // 10: 03: 24: 13: 35: 00.68 72.000 157.000 -14.2 1
+ // 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})";
+ // 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);
+ //
+ // Matcher m =
+ // LTG_PTRN_B.matcher("10:03:24:13:35:00.68 72.000 157.000 -14.2 1");
+ // if(m.matches()) {
+ // for(int i = 0;i <= m.groupCount();i++) {
+ // System.out.println(m.group(i));
+ // }
+ // }
+
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());
- while(parser.hasNext()) {
+
+ 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());
+ while (parser.hasNext()) {
System.out.println(parser.next());
}
-
-
- 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());
- while(parser.hasNext()) {
+
+ 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());
+ while (parser.hasNext()) {
System.out.println(parser.next());
}
-
+
}
-
-
-
+
}
diff --git a/edexOsgi/com.raytheon.edex.plugin.textlightning/utility/edex_static/base/distribution/textlightning.xml b/edexOsgi/com.raytheon.edex.plugin.textlightning/utility/edex_static/base/distribution/textlightning.xml
index f3dca9b369..19cbea4177 100644
--- a/edexOsgi/com.raytheon.edex.plugin.textlightning/utility/edex_static/base/distribution/textlightning.xml
+++ b/edexOsgi/com.raytheon.edex.plugin.textlightning/utility/edex_static/base/distribution/textlightning.xml
@@ -19,6 +19,6 @@
further_licensing_information.
-->
- FAA_*
- WWLLN_*
+ FAA_
+ WWLLN_