VLab Issue #4953 Fix pracice mode decoding of non-VTEC products
Change-Id: I0e2e9a21267e7b9e3896154587a0e53841081d56 Former-commit-id:7a0b6b2cab
[formerly7a0b6b2cab
[formerly 4cddd47d0870f4ba3474238107381693c768f6b1]] Former-commit-id:bde8257ec3
Former-commit-id:6f90de837d
This commit is contained in:
parent
9a07a64666
commit
d940c33fee
4 changed files with 44 additions and 14 deletions
|
@ -42,6 +42,7 @@
|
||||||
# start time from file's timestamp.
|
# start time from file's timestamp.
|
||||||
# Oct 03, 2013 2402 bsteffen Make PythonDecoder more extendable.
|
# Oct 03, 2013 2402 bsteffen Make PythonDecoder more extendable.
|
||||||
# Jun 10, 2014 3268 dgilling Update location of WclInfo class.
|
# Jun 10, 2014 3268 dgilling Update location of WclInfo class.
|
||||||
|
# Dec 17, 2014 4953 randerso Fixed decoding of non-VTEC from command line
|
||||||
|
|
||||||
# </pre>
|
# </pre>
|
||||||
#
|
#
|
||||||
|
@ -111,10 +112,10 @@ class StdWarningDecoder():
|
||||||
self._timeOffset = 0
|
self._timeOffset = 0
|
||||||
|
|
||||||
#decode the command line
|
#decode the command line
|
||||||
if text is None and filePath is None:
|
if command is not None:
|
||||||
self._decodeCommandLine()
|
self._decodeCommandLine()
|
||||||
self._rawMessage = None
|
self._rawMessage = None
|
||||||
checkForWmo = False
|
checkForWmo = True
|
||||||
else:
|
else:
|
||||||
self._rawMessage = text
|
self._rawMessage = text
|
||||||
checkForWmo = True
|
checkForWmo = True
|
||||||
|
|
|
@ -36,8 +36,13 @@
|
||||||
<setHeader headerName="notifygfe">
|
<setHeader headerName="notifygfe">
|
||||||
<simple>${body?.notifyGFE}</simple>
|
<simple>${body?.notifyGFE}</simple>
|
||||||
</setHeader>
|
</setHeader>
|
||||||
|
<setHeader headerName="drtstring">
|
||||||
|
<simple>${body?.drtString}</simple>
|
||||||
|
</setHeader>
|
||||||
|
|
||||||
<bean ref="practiceVtecDecoder" method="decode"/>
|
<bean ref="practiceVtecDecoder" method="decode"/>
|
||||||
<bean ref="index" method="index"/>
|
<bean ref="index" method="index"/>
|
||||||
|
<bean ref="processUtil" method="log"/>
|
||||||
<multicast parallelProcessing="false">
|
<multicast parallelProcessing="false">
|
||||||
<filter>
|
<filter>
|
||||||
<simple>${header?.notifygfe.booleanValue}</simple>
|
<simple>${header?.notifygfe.booleanValue}</simple>
|
||||||
|
|
|
@ -19,7 +19,13 @@
|
||||||
**/
|
**/
|
||||||
package com.raytheon.uf.edex.activetable;
|
package com.raytheon.uf.edex.activetable;
|
||||||
|
|
||||||
|
import java.text.DateFormat;
|
||||||
|
import java.text.ParseException;
|
||||||
|
import java.text.SimpleDateFormat;
|
||||||
|
import java.util.Date;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.TimeZone;
|
||||||
|
import java.util.concurrent.TimeUnit;
|
||||||
|
|
||||||
import com.raytheon.edex.esb.Headers;
|
import com.raytheon.edex.esb.Headers;
|
||||||
import com.raytheon.uf.common.activetable.ActiveTableMode;
|
import com.raytheon.uf.common.activetable.ActiveTableMode;
|
||||||
|
@ -45,6 +51,8 @@ import com.raytheon.uf.common.time.util.TimeUtil;
|
||||||
* Jul 14, 2009 #2950 njensen Multiple site support
|
* Jul 14, 2009 #2950 njensen Multiple site support
|
||||||
* Dec 21, 2009 #4055 njensen No site filtering
|
* Dec 21, 2009 #4055 njensen No site filtering
|
||||||
* Jun 17, 2014 3296 randerso Added performance logging
|
* Jun 17, 2014 3296 randerso Added performance logging
|
||||||
|
* Dec 09, 2014 3885 dgilling Handle offset time from camel route
|
||||||
|
* headers.
|
||||||
*
|
*
|
||||||
* </pre>
|
* </pre>
|
||||||
*
|
*
|
||||||
|
@ -80,7 +88,7 @@ public class ActiveTableSrv {
|
||||||
timer.start();
|
timer.start();
|
||||||
try {
|
try {
|
||||||
ActiveTable activeTable = threadLocalActiveTable.get();
|
ActiveTable activeTable = threadLocalActiveTable.get();
|
||||||
if (records != null && records.size() > 0) {
|
if ((records != null) && (records.size() > 0)) {
|
||||||
activeTable.merge(ActiveTableRecord.transformFromWarnings(
|
activeTable.merge(ActiveTableRecord.transformFromWarnings(
|
||||||
records, ActiveTableMode.OPERATIONAL));
|
records, ActiveTableMode.OPERATIONAL));
|
||||||
}
|
}
|
||||||
|
@ -102,19 +110,12 @@ public class ActiveTableSrv {
|
||||||
*/
|
*/
|
||||||
public void practiceVtecArrived(List<AbstractWarningRecord> records,
|
public void practiceVtecArrived(List<AbstractWarningRecord> records,
|
||||||
Headers headers) {
|
Headers headers) {
|
||||||
Integer offsetSeconds = null;
|
int offsetSeconds = getOffsetTime((String) headers.get("drtstring"));
|
||||||
if (headers != null) {
|
if ((records != null) && (records.size() > 0)) {
|
||||||
offsetSeconds = (Integer) headers.get("offsetseconds");
|
|
||||||
}
|
|
||||||
if (offsetSeconds == null) {
|
|
||||||
offsetSeconds = Integer.valueOf(0);
|
|
||||||
}
|
|
||||||
if (records != null && records.size() > 0) {
|
|
||||||
ActiveTable activeTable = threadLocalActiveTable.get();
|
ActiveTable activeTable = threadLocalActiveTable.get();
|
||||||
try {
|
try {
|
||||||
activeTable.merge(ActiveTableRecord.transformFromWarnings(
|
activeTable.merge(ActiveTableRecord.transformFromWarnings(
|
||||||
records, ActiveTableMode.PRACTICE), offsetSeconds
|
records, ActiveTableMode.PRACTICE), offsetSeconds);
|
||||||
.intValue());
|
|
||||||
} catch (Throwable t) {
|
} catch (Throwable t) {
|
||||||
statusHandler
|
statusHandler
|
||||||
.handle(Priority.PROBLEM,
|
.handle(Priority.PROBLEM,
|
||||||
|
@ -123,4 +124,25 @@ public class ActiveTableSrv {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private int getOffsetTime(String drtTimeString) {
|
||||||
|
if (drtTimeString != null) {
|
||||||
|
DateFormat drtParse = new SimpleDateFormat("yyyyMMdd_HHmm");
|
||||||
|
drtParse.setTimeZone(TimeZone.getTimeZone("GMT"));
|
||||||
|
|
||||||
|
try {
|
||||||
|
Date drtTime = drtParse.parse(drtTimeString);
|
||||||
|
Date currentTime = new Date();
|
||||||
|
long diffInMillis = drtTime.getTime() - currentTime.getTime();
|
||||||
|
|
||||||
|
return (int) TimeUnit.SECONDS.convert(diffInMillis,
|
||||||
|
TimeUnit.MILLISECONDS);
|
||||||
|
} catch (ParseException e) {
|
||||||
|
statusHandler.error("Could not parse DRT time string: "
|
||||||
|
+ drtTimeString, e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -46,6 +46,8 @@ import com.raytheon.uf.edex.python.decoder.PythonDecoder;
|
||||||
* used for all practice VTEC products
|
* used for all practice VTEC products
|
||||||
* Changed to take in the SendPracticeProductRequest
|
* Changed to take in the SendPracticeProductRequest
|
||||||
* to simplify spring wiring
|
* to simplify spring wiring
|
||||||
|
* Changed to set the filepath when calling Python decoder
|
||||||
|
* so _checkForVTEC will work
|
||||||
*
|
*
|
||||||
* </pre>
|
* </pre>
|
||||||
*
|
*
|
||||||
|
@ -103,7 +105,7 @@ public class PracticeVtecDecoder extends PythonDecoder {
|
||||||
|
|
||||||
// create an argument map to run the decoder
|
// create an argument map to run the decoder
|
||||||
Map<String, Object> decoderArgs = new HashMap<String, Object>(4);
|
Map<String, Object> decoderArgs = new HashMap<String, Object>(4);
|
||||||
decoderArgs.put("filePath", null);
|
decoderArgs.put("filePath", file.getAbsolutePath());
|
||||||
decoderArgs.put("command", sb.toString());
|
decoderArgs.put("command", sb.toString());
|
||||||
return decode(decoderArgs);
|
return decode(decoderArgs);
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue