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.
|
||||
# Oct 03, 2013 2402 bsteffen Make PythonDecoder more extendable.
|
||||
# Jun 10, 2014 3268 dgilling Update location of WclInfo class.
|
||||
# Dec 17, 2014 4953 randerso Fixed decoding of non-VTEC from command line
|
||||
|
||||
# </pre>
|
||||
#
|
||||
|
@ -111,10 +112,10 @@ class StdWarningDecoder():
|
|||
self._timeOffset = 0
|
||||
|
||||
#decode the command line
|
||||
if text is None and filePath is None:
|
||||
if command is not None:
|
||||
self._decodeCommandLine()
|
||||
self._rawMessage = None
|
||||
checkForWmo = False
|
||||
checkForWmo = True
|
||||
else:
|
||||
self._rawMessage = text
|
||||
checkForWmo = True
|
||||
|
|
|
@ -36,8 +36,13 @@
|
|||
<setHeader headerName="notifygfe">
|
||||
<simple>${body?.notifyGFE}</simple>
|
||||
</setHeader>
|
||||
<setHeader headerName="drtstring">
|
||||
<simple>${body?.drtString}</simple>
|
||||
</setHeader>
|
||||
|
||||
<bean ref="practiceVtecDecoder" method="decode"/>
|
||||
<bean ref="index" method="index"/>
|
||||
<bean ref="processUtil" method="log"/>
|
||||
<multicast parallelProcessing="false">
|
||||
<filter>
|
||||
<simple>${header?.notifygfe.booleanValue}</simple>
|
||||
|
|
|
@ -19,7 +19,13 @@
|
|||
**/
|
||||
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.TimeZone;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
|
||||
import com.raytheon.edex.esb.Headers;
|
||||
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
|
||||
* Dec 21, 2009 #4055 njensen No site filtering
|
||||
* Jun 17, 2014 3296 randerso Added performance logging
|
||||
* Dec 09, 2014 3885 dgilling Handle offset time from camel route
|
||||
* headers.
|
||||
*
|
||||
* </pre>
|
||||
*
|
||||
|
@ -80,7 +88,7 @@ public class ActiveTableSrv {
|
|||
timer.start();
|
||||
try {
|
||||
ActiveTable activeTable = threadLocalActiveTable.get();
|
||||
if (records != null && records.size() > 0) {
|
||||
if ((records != null) && (records.size() > 0)) {
|
||||
activeTable.merge(ActiveTableRecord.transformFromWarnings(
|
||||
records, ActiveTableMode.OPERATIONAL));
|
||||
}
|
||||
|
@ -102,19 +110,12 @@ public class ActiveTableSrv {
|
|||
*/
|
||||
public void practiceVtecArrived(List<AbstractWarningRecord> records,
|
||||
Headers headers) {
|
||||
Integer offsetSeconds = null;
|
||||
if (headers != null) {
|
||||
offsetSeconds = (Integer) headers.get("offsetseconds");
|
||||
}
|
||||
if (offsetSeconds == null) {
|
||||
offsetSeconds = Integer.valueOf(0);
|
||||
}
|
||||
if (records != null && records.size() > 0) {
|
||||
int offsetSeconds = getOffsetTime((String) headers.get("drtstring"));
|
||||
if ((records != null) && (records.size() > 0)) {
|
||||
ActiveTable activeTable = threadLocalActiveTable.get();
|
||||
try {
|
||||
activeTable.merge(ActiveTableRecord.transformFromWarnings(
|
||||
records, ActiveTableMode.PRACTICE), offsetSeconds
|
||||
.intValue());
|
||||
records, ActiveTableMode.PRACTICE), offsetSeconds);
|
||||
} catch (Throwable t) {
|
||||
statusHandler
|
||||
.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
|
||||
* Changed to take in the SendPracticeProductRequest
|
||||
* to simplify spring wiring
|
||||
* Changed to set the filepath when calling Python decoder
|
||||
* so _checkForVTEC will work
|
||||
*
|
||||
* </pre>
|
||||
*
|
||||
|
@ -103,7 +105,7 @@ public class PracticeVtecDecoder extends PythonDecoder {
|
|||
|
||||
// create an argument map to run the decoder
|
||||
Map<String, Object> decoderArgs = new HashMap<String, Object>(4);
|
||||
decoderArgs.put("filePath", null);
|
||||
decoderArgs.put("filePath", file.getAbsolutePath());
|
||||
decoderArgs.put("command", sb.toString());
|
||||
return decode(decoderArgs);
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue