13.3.1-14 baseline

Former-commit-id: 91a5e4578e [formerly 9022c500ce] [formerly 9fba973fd0 [formerly 0b52508caf520abeba4a75d38c9ed9130cc12c9e]]
Former-commit-id: 9fba973fd0
Former-commit-id: 2ca160caf0
This commit is contained in:
Steve Harris 2013-03-27 17:59:34 -05:00
parent 4f2e9aec0d
commit 936e4adda2
79 changed files with 1779 additions and 582 deletions

View file

@ -4,7 +4,7 @@
<comment></comment> <comment></comment>
<projects> <projects>
<project>org.apache.activemq</project> <project>org.apache.activemq</project>
<project>org.apache.tools.bzip2</project> <project>org.itadaki.bzip2</project>
<project>RadarServer</project> <project>RadarServer</project>
<project>RadarServerWithMQ</project> <project>RadarServerWithMQ</project>
</projects> </projects>

View file

@ -26,7 +26,7 @@
This build script expects the following projects to exist at the same This build script expects the following projects to exist at the same
level as this project's folder. com.raytheon.rcm.lib level as this project's folder. com.raytheon.rcm.lib
com.raytheon.rcm.server com.raytheon.rcm.server.mq com.raytheon.rcm.server com.raytheon.rcm.server.mq
com.raytheon.rcm.tools org.apache.tools.bzip2 The projects must be com.raytheon.rcm.tools org.itadaki.bzip2 The projects must be
built before running this script. built before running this script.
--> -->
&substitute-targets; &substitute-targets;
@ -133,7 +133,7 @@
<include name="**/spring-context*.jar" /> <include name="**/spring-context*.jar" />
<include name="**/quartz-all*.jar" /> <include name="**/quartz-all*.jar" />
</fileset> </fileset>
<fileset dir="../org.apache.tools.bzip2" includes="**/*.jar" /> <fileset dir="../org.itadaki.bzip2" includes="**/*.jar" />
</copy> </copy>
<delete dir="bin" /> <delete dir="bin" />

View file

@ -72,7 +72,7 @@
<fileset dir="${buildDirectory}/../../" includes="com.raytheon.rcm*/**"/> <fileset dir="${buildDirectory}/../../" includes="com.raytheon.rcm*/**"/>
</copy> </copy>
<copy todir="${buildDirectory}/plugins"> <copy todir="${buildDirectory}/plugins">
<fileset dir="${buildDirectory}/../../" includes="org.apache.tools.bzip2*/**"/> <fileset dir="${buildDirectory}/../../" includes="org.itadaki.bzip2*/**"/>
</copy> </copy>
<copy todir="${buildDirectory}/plugins"> <copy todir="${buildDirectory}/plugins">
<fileset dir="${buildDirectory}/../../" includes="org.apache.*/**"/> <fileset dir="${buildDirectory}/../../" includes="org.apache.*/**"/>

View file

@ -78,7 +78,7 @@
version="0.0.0"/> version="0.0.0"/>
<plugin <plugin
id="org.apache.tools.bzip2" id="org.itadaki.bzip2"
download-size="0" download-size="0"
install-size="0" install-size="0"
version="0.0.0" version="0.0.0"

View file

@ -7,7 +7,6 @@ Export-Package: com.raytheon.rcm.mqsrvr
Require-Bundle: com.raytheon.rcm.server;bundle-version="1.0.0", Require-Bundle: com.raytheon.rcm.server;bundle-version="1.0.0",
org.apache.activemq;bundle-version="5.2.0", org.apache.activemq;bundle-version="5.2.0",
com.raytheon.rcm.lib;bundle-version="1.0.0", com.raytheon.rcm.lib;bundle-version="1.0.0",
org.apache.tools.bzip2;bundle-version="1.0.0",
javax.jms;bundle-version="1.0.0", javax.jms;bundle-version="1.0.0",
org.apache.qpid;bundle-version="1.0.0" org.apache.qpid;bundle-version="1.0.0",
Import-Package: org.apache.tools.bzip2 org.itadaki.bzip2;bundle-version="0.9.1"

View file

@ -43,7 +43,7 @@ import javax.jms.Session;
import javax.jms.TextMessage; import javax.jms.TextMessage;
import org.apache.qpid.client.AMQConnectionFactory; import org.apache.qpid.client.AMQConnectionFactory;
import org.apache.tools.bzip2.CBZip2InputStream; import org.itadaki.bzip2.BZip2InputStream;
import com.raytheon.rcm.config.EndpointConfig; import com.raytheon.rcm.config.EndpointConfig;
import com.raytheon.rcm.config.awips1.Awips1ProdDistInfoBuilder; import com.raytheon.rcm.config.awips1.Awips1ProdDistInfoBuilder;
@ -659,11 +659,7 @@ public class DataArchiveEndpoint extends RadarEventAdapter {
try { try {
InputStream ins = new ByteArrayInputStream(msg, 120, InputStream ins = new ByteArrayInputStream(msg, 120,
msg.length - 120); msg.length - 120);
char c1 = (char) ins.read(); ins = new BZip2InputStream(ins, false);
char c2 = (char) ins.read();
if (c1 != 'B' || c2 != 'Z')
throw new IOException("Not a bzip2 stream");
ins = new CBZip2InputStream(ins);
// ByteArrayOutputStream outs = new // ByteArrayOutputStream outs = new
// ByteArrayOutputStream(uncompressedSize); // ByteArrayOutputStream(uncompressedSize);
uncompressed = new byte[uncompressedSize]; uncompressed = new byte[uncompressedSize];

View file

@ -13,10 +13,9 @@ Export-Package: com.raytheon.rcm.coll,
com.raytheon.rcm.rpsmgr, com.raytheon.rcm.rpsmgr,
com.raytheon.rcm.server com.raytheon.rcm.server
Require-Bundle: com.raytheon.rcm.lib;bundle-version="1.0.0", Require-Bundle: com.raytheon.rcm.lib;bundle-version="1.0.0",
org.apache.tools.bzip2;bundle-version="1.0.0",
org.apache.commons.logging;bundle-version="1.0.4", org.apache.commons.logging;bundle-version="1.0.4",
org.springframework;bundle-version="2.5.6" org.springframework;bundle-version="2.5.6",
org.itadaki.bzip2;bundle-version="0.9.1"
Import-Package: com.raytheon.uf.common.util, Import-Package: com.raytheon.uf.common.util,
org.apache.log4j, org.apache.log4j,
org.apache.tools.bzip2,
org.junit org.junit

View file

@ -27,15 +27,15 @@ import java.io.InputStream;
import java.nio.BufferUnderflowException; import java.nio.BufferUnderflowException;
import java.nio.ByteBuffer; import java.nio.ByteBuffer;
import org.apache.tools.bzip2.CBZip2InputStream; import org.itadaki.bzip2.BZip2InputStream;
import com.raytheon.rcm.event.ConfigEvent; import com.raytheon.rcm.event.ConfigEvent;
import com.raytheon.rcm.event.RadarEvent; import com.raytheon.rcm.event.RadarEvent;
import com.raytheon.rcm.event.RadarEventAdapter; import com.raytheon.rcm.event.RadarEventAdapter;
import com.raytheon.rcm.message.GraphicProduct; import com.raytheon.rcm.message.GraphicProduct;
import com.raytheon.rcm.message.GraphicProduct.PDB;
import com.raytheon.rcm.message.Message; import com.raytheon.rcm.message.Message;
import com.raytheon.rcm.message.MessageFormatException; import com.raytheon.rcm.message.MessageFormatException;
import com.raytheon.rcm.message.GraphicProduct.PDB;
/** /**
* A radar server component that delivers radar products to an EDEX file * A radar server component that delivers radar products to an EDEX file
@ -172,11 +172,7 @@ public class Awips2Endpoint extends RadarEventAdapter {
try { try {
InputStream ins = new ByteArrayInputStream(msg, 120, InputStream ins = new ByteArrayInputStream(msg, 120,
msg.length - 120); msg.length - 120);
char c1 = (char) ins.read(); ins = new BZip2InputStream(ins, false);
char c2 = (char) ins.read();
if (c1 != 'B' || c2 != 'Z')
throw new IOException("Not a bzip2 stream");
ins = new CBZip2InputStream(ins);
// ByteArrayOutputStream outs = new // ByteArrayOutputStream outs = new
// ByteArrayOutputStream(uncompressedSize); // ByteArrayOutputStream(uncompressedSize);
uncompressed = new byte[uncompressedSize]; uncompressed = new byte[uncompressedSize];

19
a Normal file
View file

@ -0,0 +1,19 @@
A cave/com.raytheon.viz.mpe.ui/src/com/raytheon/viz/mpe/ui/actions/ToggleGageIdDisplay.java
A cave/com.raytheon.viz.mpe.ui/src/com/raytheon/viz/mpe/ui/actions/ToggleGageIdDisplay.java
A cave/com.raytheon.viz.mpe.ui/src/com/raytheon/viz/mpe/ui/actions/ToggleGageTriangleDisplay.java
A cave/com.raytheon.viz.mpe.ui/src/com/raytheon/viz/mpe/ui/actions/ToggleGageTriangleDisplay.java
A cave/com.raytheon.viz.mpe.ui/src/com/raytheon/viz/mpe/ui/actions/ToggleGageValueDisplay.java
A cave/com.raytheon.viz.mpe.ui/src/com/raytheon/viz/mpe/ui/actions/ToggleGageValueDisplay.java
A cots/org.itadaki.bzip2/build.properties
A cots/org.itadaki.bzip2/build.properties
A cots/org.itadaki.bzip2/.classpath
A cots/org.itadaki.bzip2/.classpath
A cots/org.itadaki.bzip2/jbzip2-0.9.1.jar
A cots/org.itadaki.bzip2/jbzip2-0.9.1.jar
A cots/org.itadaki.bzip2/META-INF/MANIFEST.MF
A cots/org.itadaki.bzip2/META-INF/MANIFEST.MF
A cots/org.itadaki.bzip2/.project
A cots/org.itadaki.bzip2/.project
A cots/org.itadaki.bzip2/.settings/org.eclipse.jdt.core.prefs
A cots/org.itadaki.bzip2/.settings/org.eclipse.jdt.core.prefs
A rpms/build/i386/build.sh_preRCM

10
adds Normal file
View file

@ -0,0 +1,10 @@
A cave/com.raytheon.viz.mpe.ui/src/com/raytheon/viz/mpe/ui/actions/ToggleGageIdDisplay.java
A cave/com.raytheon.viz.mpe.ui/src/com/raytheon/viz/mpe/ui/actions/ToggleGageTriangleDisplay.java
A cave/com.raytheon.viz.mpe.ui/src/com/raytheon/viz/mpe/ui/actions/ToggleGageValueDisplay.java
A cots/org.itadaki.bzip2/build.properties
A cots/org.itadaki.bzip2/.classpath
A cots/org.itadaki.bzip2/jbzip2-0.9.1.jar
A cots/org.itadaki.bzip2/META-INF/MANIFEST.MF
A cots/org.itadaki.bzip2/.project
A cots/org.itadaki.bzip2/.settings/org.eclipse.jdt.core.prefs
A rpms/build/i386/build.sh_preRCM

View file

@ -36,6 +36,7 @@
# ------------ ---------- ----------- -------------------------- # ------------ ---------- ----------- --------------------------
# 3/6/2013 15658 ryu Merge in change from AWIPS I DR 21414, which fixed # 3/6/2013 15658 ryu Merge in change from AWIPS I DR 21414, which fixed
# makeMaxWindGrid() for when center is outside domain. # makeMaxWindGrid() for when center is outside domain.
# Mar 13, 2013 1793 bsteffen Performance improvements for TCMWindTool
# The MenuItems list defines the GFE menu item(s) under which the # The MenuItems list defines the GFE menu item(s) under which the
# Procedure is to appear. # Procedure is to appear.
@ -1109,8 +1110,6 @@ class Procedure (SmartScript.SmartScript):
# fetches and returns all of the wind grids specified by the model # fetches and returns all of the wind grids specified by the model
# name. Should be called before any new wind grids are created # name. Should be called before any new wind grids are created
def getBackgroundGrids(self, modelName): def getBackgroundGrids(self, modelName):
bgDict = {}
siteID = self.getSiteID() siteID = self.getSiteID()
if modelName == "Fcst": if modelName == "Fcst":
level = "SFC" level = "SFC"
@ -1126,9 +1125,8 @@ class Procedure (SmartScript.SmartScript):
inv = self.getWEInventory(modelName, elementName, level) inv = self.getWEInventory(modelName, elementName, level)
for tr in inv: bgDict = self.getGrids(modelName, elementName, level, inv,
bgDict[tr] = self.getGrids(modelName, elementName, level, mode="First")
tr, mode="First")
return bgDict return bgDict
def secondsToYYYYMMDDHH(self, baseTime): def secondsToYYYYMMDDHH(self, baseTime):
@ -1314,10 +1312,9 @@ class Procedure (SmartScript.SmartScript):
# inside RMW gets a linear slope to largest of max wind forecasts # inside RMW gets a linear slope to largest of max wind forecasts
if inRadius <= 1.0: if inRadius <= 1.0:
dSdR = (outSpeed - inSpeed) / (outRadius - inRadius) dSdR = (outSpeed - inSpeed) / (outRadius - inRadius)
grid = where(mask, inSpeed + (dSdR * distanceGrid), grid) grid[mask] = inSpeed + (dSdR * distanceGrid[mask])
else: # outside RMW else: # outside RMW
grid = where(mask, inSpeed * power((inRadius / distanceGrid), exponent), grid[mask] = inSpeed * power((inRadius / distanceGrid[mask]), exponent)
grid)
# grid = clip(grid, 0.0, 200.0) # grid = clip(grid, 0.0, 200.0)
dirGrid = self.makeDirectionGrid(latGrid, lonGrid, center[0], center[1]) dirGrid = self.makeDirectionGrid(latGrid, lonGrid, center[0], center[1])

View file

@ -40,6 +40,8 @@
# getGridCellSwath(). # getGridCellSwath().
# Mar 13, 2013 1791 bsteffen Implement bulk getGrids to # Mar 13, 2013 1791 bsteffen Implement bulk getGrids to
# improve performance. # improve performance.
# Mar 13, 2013 1793 bsteffen Performance improvements for
# TCMWindTool
# #
######################################################################## ########################################################################
import types, string, time, sys import types, string, time, sys
@ -792,8 +794,9 @@ class SmartScript(BaseTool.BaseTool):
v = - v v = - v
speed = numpy.sqrt(u * u + v * v) speed = numpy.sqrt(u * u + v * v)
dir = numpy.arctan2(u, v) * RAD_TO_DEG dir = numpy.arctan2(u, v) * RAD_TO_DEG
dir = numpy.where(numpy.greater_equal(dir, 360), dir - 360, dir) # adjust values so that 0<dir<360
dir = numpy.where(numpy.less(dir, 0), dir + 360, dir) dir[numpy.greater_equal(dir, 360)] -= 360
dir[numpy.less(dir, 0)] += 360
return (speed, dir) return (speed, dir)
def MagDirToUV(self, mag, dir): def MagDirToUV(self, mag, dir):

View file

@ -204,12 +204,6 @@
install-size="0" install-size="0"
version="0.0.0"/> version="0.0.0"/>
<plugin
id="org.apache.tools.bzip2"
download-size="0"
install-size="0"
version="0.0.0"/>
<plugin <plugin
id="org.apache.velocity" id="org.apache.velocity"
download-size="0" download-size="0"

View file

@ -213,27 +213,39 @@ public class FFMPDataGenerator {
.getCwa())) .getCwa()))
|| (domain.isPrimary() && fmdb || (domain.isPrimary() && fmdb
.isPrimaryCwa())) { .isPrimaryCwa())) {
try {
setFFMPRow(fbd.get(key), tData, setFFMPRow(fbd.get(key), tData,
false, cwa); false, cwa);
} catch (Exception e) {
if (virtualBasin != null) { statusHandler.handle(
for (Long id : ft Priority.PROBLEM,
.getVirtualGageBasinLookupIds( "Couldn't create table row"
siteKey, + e);
key, }
huc, if (virtualBasin != null) {
resource.basinTableDlg for (Long id : ft
.getRowName())) { .getVirtualGageBasinLookupIds(
setFFMPRow( siteKey,
virtualBasin key,
.get(id), huc,
tData, true, domain resource.basinTableDlg
.getCwa()); .getRowName())) {
} try {
} setFFMPRow(
} virtualBasin
} .get(id),
tData, true,
domain.getCwa());
} catch (Exception e) {
statusHandler
.handle(Priority.PROBLEM,
"Couldn't create table row"
+ e);
}
}
}
}
}
} else { } else {
/* /*
@ -262,7 +274,10 @@ public class FFMPDataGenerator {
setFFMPRow(fbd.get(key), tData, setFFMPRow(fbd.get(key), tData,
isVGB, null); isVGB, null);
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); statusHandler.handle(
Priority.PROBLEM,
"Couldn't create table row"
+ e);
} }
} }
} }
@ -290,20 +305,28 @@ public class FFMPDataGenerator {
// virtual basin // virtual basin
if (virtualBasin != null) { if (virtualBasin != null) {
for (Long id : ft for (Long id : ft
.getVirtualGageBasinLookupIds( .getVirtualGageBasinLookupIds(
siteKey, siteKey,
key, key,
huc, huc,
resource.basinTableDlg resource.basinTableDlg
.getRowName())) { .getRowName())) {
setFFMPRow( try {
virtualBasin setFFMPRow(
.get(id), virtualBasin
tData, true, null); .get(id),
} tData, true,
} null);
} } catch (Exception e) {
} statusHandler
.handle(Priority.PROBLEM,
"Couldn't create table row"
+ e);
}
}
}
}
}
} }
} }
} }

View file

@ -240,8 +240,7 @@
<command <command
commandId="com.raytheon.viz.mpe.ui.actions.addpseudo" commandId="com.raytheon.viz.mpe.ui.actions.addpseudo"
label="Add Pseudo Gage" label="Add Pseudo Gage"
mnemonic="A" mnemonic="A">
style="toggle">
</command> </command>
<command <command
commandId="com.raytheon.viz.mpe.ui.actions.gagetable" commandId="com.raytheon.viz.mpe.ui.actions.gagetable"
@ -251,8 +250,7 @@
<command <command
commandId="com.raytheon.viz.mpe.ui.actions.display7x7" commandId="com.raytheon.viz.mpe.ui.actions.display7x7"
label="Display 7 x 7..." label="Display 7 x 7..."
mnemonic="D" mnemonic="D">
style="toggle">
</command> </command>
<separator <separator
name="separator3" name="separator3"
@ -264,24 +262,16 @@
mnemonic="B"> mnemonic="B">
</command> </command>
<command <command
commandId="com.raytheon.viz.mpe.ui.actions.toggleGageDisplay" commandId="com.raytheon.viz.mpe.ui.actions.toggleGageIdDisplay"
label="Show Gage Identifiers" label="Show Gage Identifiers"
mnemonic="I" mnemonic="I"
style="toggle"> style="toggle">
<parameter
name="Gage"
value="Ids">
</parameter>
</command> </command>
<command <command
commandId="com.raytheon.viz.mpe.ui.actions.toggleGageDisplay" commandId="com.raytheon.viz.mpe.ui.actions.toggleGageValueDisplay"
label="Show Gage Values" label="Show Gage Values"
mnemonic="V" mnemonic="V"
style="toggle"> style="toggle">
<parameter
name="Gage"
value="Values">
</parameter>
</command> </command>
<menu <menu
label="Show Missing Gages" label="Show Missing Gages"
@ -911,15 +901,6 @@
id="com.raytheon.viz.mpe.ui.actions.toggleMpeInfo" id="com.raytheon.viz.mpe.ui.actions.toggleMpeInfo"
name="Toggle MPE Info"> name="Toggle MPE Info">
</command> </command>
<command
id="com.raytheon.viz.mpe.ui.actions.toggleGageDisplay"
name="Show Gages">
<commandParameter
id="Gage"
name="Gage"
optional="false">
</commandParameter>
</command>
<command <command
id="com.raytheon.viz.mpe.ui.actions.toggleGageMissing" id="com.raytheon.viz.mpe.ui.actions.toggleGageMissing"
name="Show Missing"> name="Show Missing">
@ -1032,6 +1013,32 @@
id="com.raytheon.viz.mpe.ui.dialogs.postanalysis.SummedHourlyMpe" id="com.raytheon.viz.mpe.ui.dialogs.postanalysis.SummedHourlyMpe"
name="Launch Post Analysis"> name="Launch Post Analysis">
</command> </command>
<command
defaultHandler="com.raytheon.viz.mpe.ui.actions.ToggleGageValueDisplay"
id="com.raytheon.viz.mpe.ui.actions.toggleGageValueDisplay"
name="ToggleGageValueDisplay">
<state
class="org.eclipse.ui.handlers.RegistryToggleState:false"
id="org.eclipse.ui.commands.toggleState">
</state>
</command>
<command
defaultHandler="com.raytheon.viz.mpe.ui.actions.ToggleGageIdDisplay"
id="com.raytheon.viz.mpe.ui.actions.toggleGageIdDisplay"
name="Toggle Gage Id Display">
<state
class="org.eclipse.ui.handlers.RegistryToggleState:false"
id="org.eclipse.ui.commands.toggleState">
</state>
</command>
<command
id="com.raytheon.viz.mpe.ui.actions.ToggleGageTriangleDisplay"
name="Toggle Gage Triangle Display">
<state
class="org.eclipse.ui.handlers.RegistryToggleState:false"
id="org.eclipse.ui.commands.toggleState">
</state>
</command>
</extension> </extension>
<extension <extension
point="org.eclipse.ui.handlers"> point="org.eclipse.ui.handlers">
@ -1209,8 +1216,8 @@
</activeWhen> </activeWhen>
</handler> </handler>
<handler <handler
class="com.raytheon.viz.mpe.ui.actions.ToggleGageDisplay" class="com.raytheon.viz.mpe.ui.actions.ToggleGageValueDisplay"
commandId="com.raytheon.viz.mpe.ui.actions.toggleGageDisplay"> commandId="com.raytheon.viz.mpe.ui.actions.toggleGageValueDisplay">
<activeWhen> <activeWhen>
<reference <reference
definitionId="com.raytheon.viz.inMPEActionSet"> definitionId="com.raytheon.viz.inMPEActionSet">
@ -1394,6 +1401,24 @@
class="com.raytheon.viz.mpe.ui.actions.SummedHourlyMpeAction" class="com.raytheon.viz.mpe.ui.actions.SummedHourlyMpeAction"
commandId="com.raytheon.viz.mpe.ui.dialogs.postanalysis.SummedHourlyMpe"> commandId="com.raytheon.viz.mpe.ui.dialogs.postanalysis.SummedHourlyMpe">
</handler> </handler>
<handler
class="com.raytheon.viz.mpe.ui.actions.ToggleGageIdDisplay"
commandId="com.raytheon.viz.mpe.ui.actions.toggleGageIdDisplay">
<activeWhen>
<reference
definitionId="com.raytheon.viz.inMPEActionSet">
</reference>
</activeWhen>
</handler>
<handler
class="com.raytheon.viz.mpe.ui.actions.ToggleGageTriangleDisplay"
commandId="com.raytheon.viz.mpe.ui.actions.ToggleGageTriangleDisplay">
<activeWhen>
<reference
definitionId="com.raytheon.viz.inMPEActionSet">
</reference>
</activeWhen>
</handler>
</extension> </extension>
<extension <extension
point="com.raytheon.viz.ui.perspectiveManager"> point="com.raytheon.viz.ui.perspectiveManager">

View file

@ -30,7 +30,8 @@ import org.eclipse.ui.IWorkbenchCommandConstants;
* *
* Date Ticket# Engineer Description * Date Ticket# Engineer Description
* ------------ ---------- ----------- -------------------------- * ------------ ---------- ----------- --------------------------
* Nov 29, 2012 mschenke Initial creation * Nov 29, 2012 mschenke Initial creation
* Mar 19, 2013 1457 mpduff Added gage toggle commands.
* *
* </pre> * </pre>
* *
@ -39,12 +40,38 @@ import org.eclipse.ui.IWorkbenchCommandConstants;
*/ */
public interface MPECommandConstants { public interface MPECommandConstants {
/**
* Font command id.
*/
public static final String FONT = "com.raytheon.viz.mpe.ui.actions.setfont"; public static final String FONT = "com.raytheon.viz.mpe.ui.actions.setfont";
/**
* Gage color command id.
*/
public static final String GAGE_COLOR = "com.raytheon.viz.mpe.ui.actions.toggleGageColor"; public static final String GAGE_COLOR = "com.raytheon.viz.mpe.ui.actions.toggleGageColor";
/**
* Gage missing command id.
*/
public static final String GAGE_MISSING_OPTION = "com.raytheon.viz.mpe.ui.actions.toggleGageMissing"; public static final String GAGE_MISSING_OPTION = "com.raytheon.viz.mpe.ui.actions.toggleGageMissing";
/**
* Display mode command id.
*/
public static final String DISPLAY_MODE = "com.raytheon.viz.mpe.ui.actions.toggleDisplayMode"; public static final String DISPLAY_MODE = "com.raytheon.viz.mpe.ui.actions.toggleDisplayMode";
/**
* Toggle Gage Id Command ID.
*/
public static final String TOGGLE_GAGEID_COMMAND_ID = "com.raytheon.viz.mpe.ui.actions.toggleGageIdDisplay";
/**
* Toggle gage triangle command ID.
*/
public static final String TOGGLE_GAGE_TRIANGLE_COMMAND_ID = "com.raytheon.viz.mpe.ui.actions.ToggleGageTriangleDisplay";
/**
* Toggle gage value Command ID.
*/
public static final String TOGGLE_GAGE_VALUE_COMMAND_ID = "com.raytheon.viz.mpe.ui.actions.toggleGageValueDisplay";
} }

View file

@ -6,7 +6,6 @@ import java.util.Map;
import org.eclipse.jface.action.Action; import org.eclipse.jface.action.Action;
import org.eclipse.jface.action.MenuManager; import org.eclipse.jface.action.MenuManager;
/** /**
* Dynamic Field populator for the menu item BaseFields. * Dynamic Field populator for the menu item BaseFields.
* *
@ -17,6 +16,7 @@ import org.eclipse.jface.action.MenuManager;
* Date Ticket# Engineer Description * Date Ticket# Engineer Description
* ------------ ---------- ----------- -------------------------- * ------------ ---------- ----------- --------------------------
* May 23, 2011 rgeorge Initial creation * May 23, 2011 rgeorge Initial creation
* Mar 14, 2013 1457 mpduff Changed to use the ToggleGageTriangleDisplay handler.
* *
* </pre> * </pre>
* *
@ -25,35 +25,36 @@ import org.eclipse.jface.action.MenuManager;
*/ */
public class BaseFieldsPopulator extends FieldsPopulator { public class BaseFieldsPopulator extends FieldsPopulator {
private static DisplayFieldData[] menuItems = new DisplayFieldData[] { DisplayFieldData.p3lMosaic }; private static DisplayFieldData[] menuItems = new DisplayFieldData[] { DisplayFieldData.p3lMosaic };
private static MenuManager menuMgr = new MenuManager("BaseFields", private static MenuManager menuMgr = new MenuManager("BaseFields",
"com.raytheon.viz.mpe.BaseFields"); "com.raytheon.viz.mpe.BaseFields");
private static Map<String, String> gageMap = new HashMap<String, String>(); private static Map<String, String> gageMap = new HashMap<String, String>();
static { static {
gageMap.put("Gage", "Triangles"); gageMap.put("Gage", "Triangles");
} }
private static Map<DisplayFieldData, MenuData> textMap = new HashMap<DisplayFieldData, MenuData>();
static {
textMap.put(DisplayFieldData.p3lMosaic, new MenuData(
"Gage Triangles", "G", Action.AS_CHECK_BOX,
"com.raytheon.viz.mpe.ui.actions.toggleGageDisplay", gageMap));
}
@Override private static Map<DisplayFieldData, MenuData> textMap = new HashMap<DisplayFieldData, MenuData>();
protected Map<DisplayFieldData, MenuData> getTexMap() { static {
return BaseFieldsPopulator.textMap; textMap.put(DisplayFieldData.p3lMosaic, new MenuData("Gage Triangles",
} "G", Action.AS_CHECK_BOX,
"com.raytheon.viz.mpe.ui.actions.ToggleGageTriangleDisplay",
gageMap));
}
@Override @Override
protected DisplayFieldData[] getMenuItems() { protected Map<DisplayFieldData, MenuData> getTexMap() {
return BaseFieldsPopulator.menuItems; return BaseFieldsPopulator.textMap;
} }
@Override @Override
protected MenuManager getMenuManger() { protected DisplayFieldData[] getMenuItems() {
return BaseFieldsPopulator.menuMgr; return BaseFieldsPopulator.menuItems;
} }
@Override
protected MenuManager getMenuManger() {
return BaseFieldsPopulator.menuMgr;
}
} }

View file

@ -43,6 +43,7 @@ import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.commands.ICommandService; import org.eclipse.ui.commands.ICommandService;
import org.eclipse.ui.handlers.HandlerUtil; import org.eclipse.ui.handlers.HandlerUtil;
import org.eclipse.ui.handlers.RadioState; import org.eclipse.ui.handlers.RadioState;
import org.eclipse.ui.handlers.RegistryToggleState;
import com.raytheon.uf.common.colormap.ColorMap; import com.raytheon.uf.common.colormap.ColorMap;
import com.raytheon.uf.common.dataplugin.shef.tables.Colorvalue; import com.raytheon.uf.common.dataplugin.shef.tables.Colorvalue;
@ -97,6 +98,7 @@ import com.raytheon.viz.ui.editor.IMultiPaneEditor;
* Date Ticket# Engineer Description * Date Ticket# Engineer Description
* ------------ ---------- ----------- -------------------------- * ------------ ---------- ----------- --------------------------
* Dec 18, 2012 mschenke Initial creation * Dec 18, 2012 mschenke Initial creation
* Mar 14, 2013 1457 mpduff Reset the gages on the resource.
* *
* </pre> * </pre>
* *
@ -391,15 +393,15 @@ public class MPEDisplayManager {
return null; return null;
} }
private Set<IEditTimeChangedListener> timeChangedListeners = new LinkedHashSet<IEditTimeChangedListener>(); private final Set<IEditTimeChangedListener> timeChangedListeners = new LinkedHashSet<IEditTimeChangedListener>();
private Set<IDisplayFieldChangedListener> fieldChangedListeners = new LinkedHashSet<IDisplayFieldChangedListener>(); private final Set<IDisplayFieldChangedListener> fieldChangedListeners = new LinkedHashSet<IDisplayFieldChangedListener>();
private final IRenderableDisplay display; private final IRenderableDisplay display;
private DisplayFieldData displayedField; private DisplayFieldData displayedField;
private MPEFieldResourceData fieldResourceData = new MPEFieldResourceData(); private final MPEFieldResourceData fieldResourceData = new MPEFieldResourceData();
private MPEFieldResource displayedFieldResource; private MPEFieldResource displayedFieldResource;
@ -420,16 +422,7 @@ public class MPEDisplayManager {
} }
editTime = getCurrentDisplayedDate(); editTime = getCurrentDisplayedDate();
displayedField = DisplayFieldData.rMosaic; displayedField = DisplayFieldData.mMosaic;
String baseRadarMosaic = AppsDefaults.getInstance().getToken(
"mpe_base_radar_mosaic");
if (baseRadarMosaic != null) {
DisplayFieldData fieldData = DisplayFieldData
.fromString(baseRadarMosaic);
if (fieldData != null) {
displayedField = fieldData;
}
}
ChangeTimeProvider.update(this); ChangeTimeProvider.update(this);
@ -549,12 +542,14 @@ public class MPEDisplayManager {
/** /**
* @param gageDisplay * @param gageDisplay
* the gageDisplay to set * the gageDisplay to set
* @param isOn
* is set to draw
*/ */
public void toggleGageDisplay(GageDisplay gageDisplay) { public void toggleGageDisplay(GageDisplay gageDisplay, boolean isOn) {
List<MPEGageResource> rscs = display.getDescriptor().getResourceList() List<MPEGageResource> rscs = display.getDescriptor().getResourceList()
.getResourcesByTypeAsType(MPEGageResource.class); .getResourcesByTypeAsType(MPEGageResource.class);
for (MPEGageResource rsc : rscs) { for (MPEGageResource rsc : rscs) {
rsc.toggleGageDisplay(gageDisplay); rsc.toggleGageDisplay(gageDisplay, isOn);
} }
display.refresh(); display.refresh();
} }
@ -730,6 +725,14 @@ public class MPEDisplayManager {
listener.displayFieldChanged(oldField, fieldToDisplay); listener.displayFieldChanged(oldField, fieldToDisplay);
} }
} }
// reset gages
List<MPEGageResource> rscs = display.getDescriptor()
.getResourceList()
.getResourcesByTypeAsType(MPEGageResource.class);
for (MPEGageResource rsc : rscs) {
rsc.reloadGages();
}
} }
displayedFieldResource.issueRefresh(); displayedFieldResource.issueRefresh();
@ -817,6 +820,42 @@ public class MPEDisplayManager {
return null; return null;
} }
/**
* Gets the current command toggle state.
*
* @param commandId
* The Command ID
* @return the toggle state, or false if command not found
*/
public static Boolean getToggleState(String commandId) {
Command command = service.getCommand(commandId);
if (command != null) {
State state = command.getState(RegistryToggleState.STATE_ID);
if (state != null) {
return (Boolean) state.getValue();
}
}
return Boolean.FALSE;
}
/**
* Set the toggle state.
*
* @param commandId
* The command Id to set the toggle state on
* @param toggleState
* The toggle state value
*/
public static void setToggleState(String commandId, boolean toggleState) {
Command command = service.getCommand(commandId);
if (command != null) {
State state = command.getState(RegistryToggleState.STATE_ID);
if (state != null) {
state.setValue(toggleState);
}
}
}
/** /**
* Returns the radio state id of the command specified by commandId as an * Returns the radio state id of the command specified by commandId as an
* enum of the type of defaultValue with defaultValue being the default to * enum of the type of defaultValue with defaultValue being the default to

View file

@ -33,6 +33,7 @@ import com.raytheon.uf.viz.core.IDisplayPane;
import com.raytheon.uf.viz.core.IDisplayPaneContainer; import com.raytheon.uf.viz.core.IDisplayPaneContainer;
import com.raytheon.uf.viz.core.rsc.AbstractVizResource; import com.raytheon.uf.viz.core.rsc.AbstractVizResource;
import com.raytheon.uf.viz.core.rsc.capabilities.EditableCapability; import com.raytheon.uf.viz.core.rsc.capabilities.EditableCapability;
import com.raytheon.viz.mpe.ui.MPEDisplayManager;
import com.raytheon.viz.mpe.ui.rsc.MPEGageResource; import com.raytheon.viz.mpe.ui.rsc.MPEGageResource;
import com.raytheon.viz.ui.EditorUtil; import com.raytheon.viz.ui.EditorUtil;
import com.raytheon.viz.ui.input.EditableManager; import com.raytheon.viz.ui.input.EditableManager;
@ -45,6 +46,7 @@ import com.raytheon.viz.ui.input.EditableManager;
* Date Ticket# Engineer Description * Date Ticket# Engineer Description
* ------------ ---------- ----------- -------------------------- * ------------ ---------- ----------- --------------------------
* Jan 6, 2009 snaples Initial creation * Jan 6, 2009 snaples Initial creation
* Mar 14, 2013 1457 mpduff Don't throw error if nothing displayed.
* </pre> * </pre>
* *
* @author snaples * @author snaples
@ -54,20 +56,23 @@ public class ShowDisplay7x7 extends AbstractHandler implements IElementUpdater {
@Override @Override
public Object execute(ExecutionEvent event) throws ExecutionException { public Object execute(ExecutionEvent event) throws ExecutionException {
IEditorPart activeEditor = (IEditorPart) EditorUtil if (MPEDisplayManager.getCurrent().getDisplayedFieldResource() != null) {
.getActiveEditorAs(IDisplayPaneContainer.class); IEditorPart activeEditor = (IEditorPart) EditorUtil
if (activeEditor != null) { .getActiveEditorAs(IDisplayPaneContainer.class);
IDisplayPane first = ((IDisplayPaneContainer) activeEditor) if (activeEditor != null) {
.getDisplayPanes()[0]; IDisplayPane first = ((IDisplayPaneContainer) activeEditor)
List<MPEGageResource> rscs = first.getDescriptor() .getDisplayPanes()[0];
.getResourceList() List<MPEGageResource> rscs = first.getDescriptor()
.getResourcesByTypeAsType(MPEGageResource.class); .getResourceList()
for (MPEGageResource rsc : rscs) { .getResourcesByTypeAsType(MPEGageResource.class);
rsc.getProperties().setVisible(true); for (MPEGageResource rsc : rscs) {
EditableManager.makeEditable(rsc, true); rsc.getProperties().setVisible(true);
rsc.issueRefresh(); EditableManager.makeEditable(rsc, true);
rsc.issueRefresh();
}
} }
} }
return null; return null;
} }
@ -88,5 +93,4 @@ public class ShowDisplay7x7 extends AbstractHandler implements IElementUpdater {
} }
} }
} }
} }

View file

@ -0,0 +1,66 @@
/**
* This software was developed and / or modified by Raytheon Company,
* pursuant to Contract DG133W-05-CQ-1067 with the US Government.
*
* U.S. EXPORT CONTROLLED TECHNICAL DATA
* This software product contains export-restricted data whose
* export/transfer/disclosure is restricted by U.S. law. Dissemination
* to non-U.S. persons whether in the United States or abroad requires
* an export license or other authorization.
*
* Contractor Name: Raytheon Company
* Contractor Address: 6825 Pine Street, Suite 340
* Mail Stop B8
* Omaha, NE 68106
* 402.291.0100
*
* See the AWIPS II Master Rights File ("Master Rights File.pdf") for
* further licensing information.
**/
package com.raytheon.viz.mpe.ui.actions;
import org.eclipse.core.commands.AbstractHandler;
import org.eclipse.core.commands.Command;
import org.eclipse.core.commands.ExecutionEvent;
import org.eclipse.core.commands.ExecutionException;
import org.eclipse.ui.handlers.HandlerUtil;
import com.raytheon.viz.mpe.ui.MPEDisplayManager;
import com.raytheon.viz.mpe.ui.MPEDisplayManager.GageDisplay;
/**
* Handler for Toggling Gage Id display.
*
* <pre>
*
* SOFTWARE HISTORY
*
* Date Ticket# Engineer Description
* ------------ ---------- ----------- --------------------------
* Mar 13, 2013 1457 mpduff Initial creation.
*
* </pre>
*
* @author mpduff
* @version 1.0
*/
public class ToggleGageIdDisplay extends AbstractHandler {
/*
* (non-Javadoc)
*
* @see
* org.eclipse.core.commands.AbstractHandler#execute(org.eclipse.core.commands
* .ExecutionEvent)
*/
@Override
public Object execute(ExecutionEvent event) throws ExecutionException {
Command command = event.getCommand();
boolean oldValue = HandlerUtil.toggleCommandState(command);
MPEDisplayManager dm = MPEDisplayManager.getCurrent();
dm.toggleGageDisplay(GageDisplay.Ids, !oldValue);
return null;
}
}

View file

@ -0,0 +1,64 @@
/**
* This software was developed and / or modified by Raytheon Company,
* pursuant to Contract DG133W-05-CQ-1067 with the US Government.
*
* U.S. EXPORT CONTROLLED TECHNICAL DATA
* This software product contains export-restricted data whose
* export/transfer/disclosure is restricted by U.S. law. Dissemination
* to non-U.S. persons whether in the United States or abroad requires
* an export license or other authorization.
*
* Contractor Name: Raytheon Company
* Contractor Address: 6825 Pine Street, Suite 340
* Mail Stop B8
* Omaha, NE 68106
* 402.291.0100
*
* See the AWIPS II Master Rights File ("Master Rights File.pdf") for
* further licensing information.
**/
package com.raytheon.viz.mpe.ui.actions;
import org.eclipse.core.commands.AbstractHandler;
import org.eclipse.core.commands.Command;
import org.eclipse.core.commands.ExecutionEvent;
import org.eclipse.core.commands.ExecutionException;
import org.eclipse.ui.handlers.HandlerUtil;
import com.raytheon.viz.mpe.ui.MPEDisplayManager;
import com.raytheon.viz.mpe.ui.MPEDisplayManager.GageDisplay;
/**
* Handler for Gage Triangle Display.
*
* <pre>
*
* SOFTWARE HISTORY
*
* Date Ticket# Engineer Description
* ------------ ---------- ----------- --------------------------
* Mar 13, 2013 1457 mpduff Initial creation.
*
* </pre>
*
* @author mpduff
* @version 1.0
*/
public class ToggleGageTriangleDisplay extends AbstractHandler {
/*
* (non-Javadoc)
*
* @see
* org.eclipse.core.commands.AbstractHandler#execute(org.eclipse.core.commands
* .ExecutionEvent)
*/
@Override
public Object execute(ExecutionEvent event) throws ExecutionException {
Command command = event.getCommand();
boolean oldValue = HandlerUtil.toggleCommandState(command);
MPEDisplayManager dm = MPEDisplayManager.getCurrent();
dm.toggleGageDisplay(GageDisplay.Triangles, !oldValue);
return null;
}
}

View file

@ -20,8 +20,10 @@
package com.raytheon.viz.mpe.ui.actions; package com.raytheon.viz.mpe.ui.actions;
import org.eclipse.core.commands.AbstractHandler; import org.eclipse.core.commands.AbstractHandler;
import org.eclipse.core.commands.Command;
import org.eclipse.core.commands.ExecutionEvent; import org.eclipse.core.commands.ExecutionEvent;
import org.eclipse.core.commands.ExecutionException; import org.eclipse.core.commands.ExecutionException;
import org.eclipse.ui.handlers.HandlerUtil;
import com.raytheon.viz.mpe.ui.MPEDisplayManager; import com.raytheon.viz.mpe.ui.MPEDisplayManager;
import com.raytheon.viz.mpe.ui.MPEDisplayManager.GageDisplay; import com.raytheon.viz.mpe.ui.MPEDisplayManager.GageDisplay;
@ -34,14 +36,14 @@ import com.raytheon.viz.mpe.ui.MPEDisplayManager.GageDisplay;
* Date Ticket# Engineer Description * Date Ticket# Engineer Description
* ------------ ---------- ----------- -------------------------- * ------------ ---------- ----------- --------------------------
* Nov 24, 2008 1748 snaples Initial creation * Nov 24, 2008 1748 snaples Initial creation
* Mar 14, 2013 1457 mpduff Renamed to ToggleGageValueDisplay.
* </pre> * </pre>
* *
* @author snaples * @author snaples
* @version 1.0 * @version 1.0
*/ */
public class ToggleGageDisplay extends AbstractHandler { public class ToggleGageValueDisplay extends AbstractHandler {
/* /*
* (non-Javadoc) * (non-Javadoc)
* *
@ -50,11 +52,12 @@ public class ToggleGageDisplay extends AbstractHandler {
* .ExecutionEvent) * .ExecutionEvent)
*/ */
@Override @Override
public Object execute(ExecutionEvent arg0) throws ExecutionException { public Object execute(ExecutionEvent event) throws ExecutionException {
String g = arg0.getParameter("Gage"); Command command = event.getCommand();
GageDisplay disp = GageDisplay.valueOf(g); boolean oldValue = HandlerUtil.toggleCommandState(command);
MPEDisplayManager dm = MPEDisplayManager.getCurrent(); MPEDisplayManager dm = MPEDisplayManager.getCurrent();
dm.toggleGageDisplay(disp); dm.toggleGageDisplay(GageDisplay.Values, !oldValue);
return null; return null;
} }

View file

@ -27,12 +27,12 @@ import java.nio.channels.FileChannel;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Date; import java.util.Date;
import java.util.HashSet; import java.util.HashMap;
import java.util.Hashtable; import java.util.Hashtable;
import java.util.Iterator; import java.util.Iterator;
import java.util.List; import java.util.List;
import java.util.ListIterator; import java.util.ListIterator;
import java.util.Set; import java.util.Map;
import java.util.TimeZone; import java.util.TimeZone;
import org.eclipse.swt.events.DisposeEvent; import org.eclipse.swt.events.DisposeEvent;
@ -63,6 +63,7 @@ import com.raytheon.uf.viz.core.rsc.GenericResourceData;
import com.raytheon.uf.viz.core.rsc.LoadProperties; import com.raytheon.uf.viz.core.rsc.LoadProperties;
import com.raytheon.uf.viz.core.rsc.capabilities.ColorMapCapability; import com.raytheon.uf.viz.core.rsc.capabilities.ColorMapCapability;
import com.raytheon.viz.core.rsc.jts.JTSCompiler; import com.raytheon.viz.core.rsc.jts.JTSCompiler;
import com.raytheon.viz.mpe.MPECommandConstants;
import com.raytheon.viz.mpe.core.MPEDataManager; import com.raytheon.viz.mpe.core.MPEDataManager;
import com.raytheon.viz.mpe.core.MPEDataManager.MPEGageData; import com.raytheon.viz.mpe.core.MPEDataManager.MPEGageData;
import com.raytheon.viz.mpe.ui.Activator; import com.raytheon.viz.mpe.ui.Activator;
@ -93,6 +94,7 @@ import com.vividsolutions.jts.index.strtree.STRtree;
* Aug 17, 2012 15271 snaples Added check to add only PP gages * Aug 17, 2012 15271 snaples Added check to add only PP gages
* Sep 5, 2012 15079 snaples Added constant for Milli to inches conversion factor * Sep 5, 2012 15079 snaples Added constant for Milli to inches conversion factor
* Feb 12, 2013 15773 snaples Updated addPoints to display PC gages when token is set to use PC data. * Feb 12, 2013 15773 snaples Updated addPoints to display PC gages when token is set to use PC data.
* Mar 14, 2013 1457 mpduff Fixed various bugs.
* *
* </pre> * </pre>
* *
@ -107,8 +109,6 @@ public class MPEGageResource extends AbstractMPEInputResource implements
private static final double POINT_RADIUS = 2; private static final double POINT_RADIUS = 2;
private static final RGB WHITE = new RGB(255, 255, 255);
private final SimpleDateFormat sdf; private final SimpleDateFormat sdf;
private final Object mutex = new Object(); private final Object mutex = new Object();
@ -135,29 +135,53 @@ public class MPEGageResource extends AbstractMPEInputResource implements
private final AppsDefaults appsDefaults = AppsDefaults.getInstance(); private final AppsDefaults appsDefaults = AppsDefaults.getInstance();
private final Map<GageDisplay, Boolean> displayTypes = new HashMap<GageDisplay, Boolean>();
private Set<GageDisplay> displayTypes = new HashSet<GageDisplay>();
/** /**
* Constructor.
*
* @param resourceData * @param resourceData
* The resourceData
* @param loadProperties * @param loadProperties
* The loadProperties
*/ */
public MPEGageResource(GenericResourceData resourceData, public MPEGageResource(GenericResourceData resourceData,
LoadProperties loadProperties) { LoadProperties loadProperties) {
super(resourceData, loadProperties); super(resourceData, loadProperties);
sdf = new SimpleDateFormat("yyyyMMddHH"); sdf = new SimpleDateFormat("yyyyMMddHH");
sdf.setTimeZone(TimeZone.getTimeZone("GMT")); sdf.setTimeZone(TimeZone.getTimeZone("GMT"));
setStates();
}
/**
* Set the state of the Gage display for values and Ids
*/
private void setStates() {
boolean stateSetting = MPEDisplayManager
.getToggleState(MPECommandConstants.TOGGLE_GAGE_VALUE_COMMAND_ID);
displayTypes.put(GageDisplay.Values, stateSetting);
stateSetting = MPEDisplayManager
.getToggleState(MPECommandConstants.TOGGLE_GAGEID_COMMAND_ID);
displayTypes.put(GageDisplay.Ids, stateSetting);
// Triangles default to off
MPEDisplayManager.setToggleState(
MPECommandConstants.TOGGLE_GAGE_TRIANGLE_COMMAND_ID, false);
displayTypes.put(GageDisplay.Triangles, false);
} }
/** /**
* Toggles visibility of {@link GageDisplay} type * Toggles visibility of {@link GageDisplay} type
* *
* @param display * @param display
* The GageDisplay
* @param isOn
* true if on
*/ */
public void toggleGageDisplay(GageDisplay display) { public void toggleGageDisplay(GageDisplay display, boolean isOn) {
if (displayTypes.remove(display) == false) { displayTypes.put(display, isOn);
displayTypes.add(display);
}
} }
@Override @Override
@ -215,8 +239,7 @@ public class MPEGageResource extends AbstractMPEInputResource implements
@Override @Override
protected void paintInternal(IGraphicsTarget target, protected void paintInternal(IGraphicsTarget target,
PaintProperties paintProps) throws VizException { PaintProperties paintProps) throws VizException {
// set the plot draw or no draw values if (!displayTypes.containsValue(Boolean.TRUE)) {
if (displayTypes.isEmpty()) {
// Nothing to paint // Nothing to paint
return; return;
} }
@ -230,15 +253,15 @@ public class MPEGageResource extends AbstractMPEInputResource implements
} }
} }
if (displayTypes.contains(GageDisplay.Ids) if (displayTypes.get(GageDisplay.Ids)
|| displayTypes.contains(GageDisplay.Values)) { || displayTypes.get(GageDisplay.Values)) {
paintPlotInfo(target, paintProps, paintPlotInfo(target, paintProps,
displayTypes.contains(GageDisplay.Ids), displayTypes.get(GageDisplay.Ids),
displayTypes.contains(GageDisplay.Values)); displayTypes.get(GageDisplay.Values));
} }
try { try {
if (displayTypes.contains(GageDisplay.Triangles)) { if (displayTypes.get(GageDisplay.Triangles)) {
paintTriangles(target, paintProps); paintTriangles(target, paintProps);
} }
} catch (Exception e) { } catch (Exception e) {
@ -264,7 +287,6 @@ public class MPEGageResource extends AbstractMPEInputResource implements
String fileName = String.format(GAGE_TRIANGLES, String fileName = String.format(GAGE_TRIANGLES,
sdf.format(lastDate)); sdf.format(lastDate));
File file = new File(dir, fileName); File file = new File(dir, fileName);
if (!file.exists()) { if (!file.exists()) {
return; return;
} }
@ -327,18 +349,19 @@ public class MPEGageResource extends AbstractMPEInputResource implements
MPEDisplayManager.GageMissingOptions gm = MPEDisplayManager MPEDisplayManager.GageMissingOptions gm = MPEDisplayManager
.getGageMissing(); .getGageMissing();
boolean displayIsEdit = displayMgr.getCurrentEditDate().equals( boolean displayIsEdit = false;
paintProps.getDataTime().getRefTime()); if (paintProps.getDataTime() != null
&& displayMgr.getCurrentEditDate() != null) {
displayIsEdit = displayMgr.getCurrentEditDate().equals(
paintProps.getDataTime().getRefTime());
}
boolean xor = MPEDisplayManager.getGageColor() == GageColor.Contrast boolean xor = MPEDisplayManager.getGageColor() == GageColor.Contrast
&& displayIsEdit; && displayIsEdit;
for (Coordinate point : dataMap.keySet()) { for (Coordinate point : dataMap.keySet()) {
if (extent.contains(new double[] { point.x, point.y })) { if (extent.contains(new double[] { point.x, point.y })) {
MPEGageData gageData = dataMap.get(point); MPEGageData gageData = dataMap.get(point);
RGB gageColor = WHITE; RGB gageColor = getGageColor(gageData);
if (displayIsEdit) {
gageColor = getGageColor(gageData);
}
boolean isReportedMissing = gageData.isReported_missing(); boolean isReportedMissing = gageData.isReported_missing();
boolean isMissing = ((gageData.getGval() == -999.f || gageData boolean isMissing = ((gageData.getGval() == -999.f || gageData
@ -383,6 +406,7 @@ public class MPEGageResource extends AbstractMPEInputResource implements
} }
} }
} }
if (isGageIdsDisplayed) { if (isGageIdsDisplayed) {
gageId = gageData.getId(); gageId = gageData.getId();
@ -421,7 +445,7 @@ public class MPEGageResource extends AbstractMPEInputResource implements
private RGB getGageColor(MPEGageData gageData) { private RGB getGageColor(MPEGageData gageData) {
RGB gageColor = new RGB(255, 255, 255); RGB gageColor = new RGB(255, 255, 255);
if (displayTypes.isEmpty() == false) { if (displayTypes.containsValue(Boolean.TRUE)) {
MPEDisplayManager.GageColor gc = MPEDisplayManager.getGageColor(); MPEDisplayManager.GageColor gc = MPEDisplayManager.getGageColor();
switch (gc) { switch (gc) {
case Solid: case Solid:
@ -449,9 +473,7 @@ public class MPEGageResource extends AbstractMPEInputResource implements
if (gageData.getId().contains("PSEUDO")) { if (gageData.getId().contains("PSEUDO")) {
fltVal = (float) (gageData.getGval() / MILLICVT); fltVal = (float) (gageData.getGval() / MILLICVT);
} }
// System.out.println("--- fltVal = " + fltVal);
gageColor = getColorByValue(fltVal); gageColor = getColorByValue(fltVal);
// gageColor = getColorByValue(gageData.getGval());
break; break;
default: default:
@ -482,7 +504,8 @@ public class MPEGageResource extends AbstractMPEInputResource implements
.hasNext();) { .hasNext();) {
MPEGageData gageData = it.next(); MPEGageData gageData = it.next();
// DR15773 Use PC gages only when token set to ON. // DR15773 Use PC gages only when token set to ON.
if ((gageData.getPe().equalsIgnoreCase("PC")) && (process_PC == false)) { if ((gageData.getPe().equalsIgnoreCase("PC"))
&& (process_PC == false)) {
continue; continue;
} }
Coordinate latLon = gageData.getLatLon(); Coordinate latLon = gageData.getLatLon();

View file

@ -31,8 +31,6 @@ import javax.measure.unit.NonSI;
import javax.measure.unit.SI; import javax.measure.unit.SI;
import org.eclipse.swt.SWT; import org.eclipse.swt.SWT;
import org.eclipse.swt.graphics.Cursor;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell; import org.eclipse.swt.widgets.Shell;
import org.eclipse.ui.PlatformUI; import org.eclipse.ui.PlatformUI;
@ -56,6 +54,7 @@ import com.raytheon.viz.mpe.core.MPEDataManager.MPEGageData;
* Oct 30, 2008 snaples Initial creation * Oct 30, 2008 snaples Initial creation
* Aug 8, 2012 15271 snaples Updated hourly slot * Aug 8, 2012 15271 snaples Updated hourly slot
* Jan 02, 2013 15565 snaples Fixed problem with wrong time being sent to mpe_fieldgen * Jan 02, 2013 15565 snaples Fixed problem with wrong time being sent to mpe_fieldgen
* Mar 14, 2013 1457 mpduff Fixed memory leak.
* </pre> * </pre>
* *
* @author snaples * @author snaples
@ -181,8 +180,6 @@ public class RegenHrFlds {
Shell shell = PlatformUI.getWorkbench().getActiveWorkbenchWindow() Shell shell = PlatformUI.getWorkbench().getActiveWorkbenchWindow()
.getShell(); .getShell();
Cursor prev = shell.getCursor();
Cursor wait = new Cursor(Display.getDefault(), SWT.CURSOR_WAIT);
this.checkGages(); this.checkGages();
boolean ref = MPEDataManager.getInstance().isRadarEditFlag(); boolean ref = MPEDataManager.getInstance().isRadarEditFlag();
/* Store any gage edits into the HourlyPP or PseudoGageVal table. */ /* Store any gage edits into the HourlyPP or PseudoGageVal table. */
@ -291,7 +288,7 @@ public class RegenHrFlds {
String drr = "1 " + hour + " " + dr.format(datetime); String drr = "1 " + hour + " " + dr.format(datetime);
System.out.println("Regen args are " + drr); System.out.println("Regen args are " + drr);
MpeFieldGenJob regen = new MpeFieldGenJob(drr); MpeFieldGenJob regen = new MpeFieldGenJob(drr);
shell.setCursor(wait); shell.setCursor(shell.getDisplay().getSystemCursor(SWT.CURSOR_WAIT));
regen.schedule(); regen.schedule();
try { try {
regen.join(); regen.join();
@ -300,9 +297,8 @@ public class RegenHrFlds {
e.printStackTrace(); e.printStackTrace();
} }
/* Clear gage edits */
MPEDataManager.getInstance().clearEditGages(); MPEDataManager.getInstance().clearEditGages();
shell.setCursor(prev); shell.setCursor(null);
} }
} }

View file

@ -1,3 +1,22 @@
/**
* This software was developed and / or modified by Raytheon Company,
* pursuant to Contract DG133W-05-CQ-1067 with the US Government.
*
* U.S. EXPORT CONTROLLED TECHNICAL DATA
* This software product contains export-restricted data whose
* export/transfer/disclosure is restricted by U.S. law. Dissemination
* to non-U.S. persons whether in the United States or abroad requires
* an export license or other authorization.
*
* Contractor Name: Raytheon Company
* Contractor Address: 6825 Pine Street, Suite 340
* Mail Stop B8
* Omaha, NE 68106
* 402.291.0100
*
* See the AWIPS II Master Rights File ("Master Rights File.pdf") for
* further licensing information.
**/
package com.raytheon.viz.radar; package com.raytheon.viz.radar;
import java.io.File; import java.io.File;
@ -14,6 +33,25 @@ import com.raytheon.uf.viz.core.HDF5Util;
import com.raytheon.uf.viz.core.cache.CacheObject; import com.raytheon.uf.viz.core.cache.CacheObject;
import com.raytheon.uf.viz.core.cache.CacheObject.IObjectRetriever; import com.raytheon.uf.viz.core.cache.CacheObject.IObjectRetriever;
/**
* Client side version of radar record that retrieves all data from hdf5 on
* demand and holds it in a cache.
*
* <pre>
*
* SOFTWARE HISTORY
*
* Date Ticket# Engineer Description
* ------------ ---------- ----------- --------------------------
* Mar 18, 2013 bsteffen Initial javadoc
* Mar 18, 2013 1804 bsteffen Remove AlphanumericValues from radar
* HDF5.
*
* </pre>
*
* @author bsteffen
* @version 1.0
*/
public class DefaultVizRadarRecord extends VizRadarRecord { public class DefaultVizRadarRecord extends VizRadarRecord {
private static final long serialVersionUID = -6878454982599668417L; private static final long serialVersionUID = -6878454982599668417L;
@ -71,9 +109,6 @@ public class DefaultVizRadarRecord extends VizRadarRecord {
if (object.getRawShortData() != null) { if (object.getRawShortData() != null) {
size += object.getRawData().length * 2; size += object.getRawData().length * 2;
} }
if (object.getAlphanumericValues() != null) {
size += object.getAlphanumericValues().length() * 2;
}
if (object.getAngleData() != null) { if (object.getAngleData() != null) {
size += object.getAngleData().length * 4; size += object.getAngleData().length * 4;
} }

View file

@ -42,6 +42,8 @@ import com.raytheon.uf.viz.core.cache.CacheObject.IObjectRetrieverAndDisposer;
* Date Ticket# Engineer Description * Date Ticket# Engineer Description
* ------------ ---------- ----------- -------------------------- * ------------ ---------- ----------- --------------------------
* Apr 26, 2011 mschenke Initial creation * Apr 26, 2011 mschenke Initial creation
* Mar 18, 2013 1804 bsteffen Remove AlphanumericValues from radar
* HDF5.
* *
* </pre> * </pre>
* *
@ -87,7 +89,6 @@ public class RadarRecordDataRetriever implements
object.setSymbologyBlock(null); object.setSymbologyBlock(null);
object.setSymbologyData(null); object.setSymbologyData(null);
object.setProductVals(null); object.setProductVals(null);
object.setAlphanumericValues(null);
object.setMapRecordVals(null); object.setMapRecordVals(null);
object.setGsmMessage(null); object.setGsmMessage(null);
object.setStormIDs(null); object.setStormIDs(null);
@ -129,9 +130,6 @@ public class RadarRecordDataRetriever implements
if (object.getMapProductVals() != null) { if (object.getMapProductVals() != null) {
objs.add(object.getMapProductVals()); objs.add(object.getMapProductVals());
} }
if (object.getAlphanumericValues() != null) {
objs.add(object.getAlphanumericValues());
}
if (object.getMapRecordVals() != null) { if (object.getMapRecordVals() != null) {
objs.add(object.getMapRecordVals()); objs.add(object.getMapRecordVals());
} }

View file

@ -35,6 +35,7 @@ import com.raytheon.uf.common.dataplugin.radar.RadarRecord;
import com.raytheon.uf.common.dataplugin.radar.level3.Layer; import com.raytheon.uf.common.dataplugin.radar.level3.Layer;
import com.raytheon.uf.common.dataplugin.radar.level3.LinkedVector; import com.raytheon.uf.common.dataplugin.radar.level3.LinkedVector;
import com.raytheon.uf.common.dataplugin.radar.level3.LinkedVectorPacket; import com.raytheon.uf.common.dataplugin.radar.level3.LinkedVectorPacket;
import com.raytheon.uf.common.dataplugin.radar.level3.SymbologyBlock;
import com.raytheon.uf.common.dataplugin.radar.level3.SymbologyPacket; import com.raytheon.uf.common.dataplugin.radar.level3.SymbologyPacket;
import com.raytheon.uf.common.dataplugin.radar.level3.TextSymbolPacket; import com.raytheon.uf.common.dataplugin.radar.level3.TextSymbolPacket;
import com.raytheon.uf.common.dataplugin.radar.level3.UnlinkedVector; import com.raytheon.uf.common.dataplugin.radar.level3.UnlinkedVector;
@ -78,6 +79,8 @@ import com.vividsolutions.jts.geom.Coordinate;
* Mar 16, 2009 askripsk Initial creation * Mar 16, 2009 askripsk Initial creation
* Jul 26, 2010 #3723 bkowal Now implements the magnification * Jul 26, 2010 #3723 bkowal Now implements the magnification
* capability. * capability.
* Mar 19, 2013 1804 bsteffen Remove empty data structures from radar
* hdf5.
* *
* </pre> * </pre>
* *
@ -335,26 +338,29 @@ public class RadarXYResource extends RadarImageResource<RadarXYDescriptor> {
linkedLines.clear(); linkedLines.clear();
unlinkedLines.clear(); unlinkedLines.clear();
points.clear(); points.clear();
for (Layer currLayer : radarRecord.getSymbologyBlock().getLayers()) { SymbologyBlock sb = radarRecord.getSymbologyBlock();
for (SymbologyPacket currPacket : currLayer.getPackets()) { if (sb != null) {
if (currPacket instanceof TextSymbolPacket) { for (Layer currLayer : sb.getLayers()) {
TextSymbolPacket tsp = (TextSymbolPacket) currPacket; for (SymbologyPacket currPacket : currLayer.getPackets()) {
this.screenStringMap.put( if (currPacket instanceof TextSymbolPacket) {
new Coordinate(tsp.getI(), tsp.getJ()), TextSymbolPacket tsp = (TextSymbolPacket) currPacket;
tsp.getTheText()); this.screenStringMap.put(
} else if (currPacket instanceof WindBarbPacket) { new Coordinate(tsp.getI(), tsp.getJ()),
WindBarbPacket pk = (WindBarbPacket) currPacket; tsp.getTheText());
points.addAll(Arrays.asList(pk.getPoints())); } else if (currPacket instanceof WindBarbPacket) {
} else if (currPacket instanceof UnlinkedVectorPacket) { WindBarbPacket pk = (WindBarbPacket) currPacket;
UnlinkedVectorPacket pk = (UnlinkedVectorPacket) currPacket; points.addAll(Arrays.asList(pk.getPoints()));
} else if (currPacket instanceof UnlinkedVectorPacket) {
UnlinkedVectorPacket pk = (UnlinkedVectorPacket) currPacket;
this.unlinkedLines.addAll(pk.getVectors()); this.unlinkedLines.addAll(pk.getVectors());
} else if (currPacket instanceof LinkedVectorPacket) { } else if (currPacket instanceof LinkedVectorPacket) {
LinkedVectorPacket pk = (LinkedVectorPacket) currPacket; LinkedVectorPacket pk = (LinkedVectorPacket) currPacket;
this.linkedLines.addAll(pk.getVectors()); this.linkedLines.addAll(pk.getVectors());
} else { } else {
System.out.println("Need: " + currPacket.getClass()); System.out.println("Need: " + currPacket.getClass());
}
} }
} }
} }

View file

@ -53,6 +53,7 @@ import com.raytheon.viz.warngen.gis.AffectedAreas;
* moved the following methods from InitialLockingBehavior to this class: * moved the following methods from InitialLockingBehavior to this class:
* bulletIndices(), header(), firstBullet(), secondBullet(), getImmediateCausesPtrn(); * bulletIndices(), header(), firstBullet(), secondBullet(), getImmediateCausesPtrn();
* updated body(), header(), and secondBullet(); * updated body(), header(), and secondBullet();
* Mar 13, 2013 DR 15892 D. Friedman Fix bullet parsing.
* *
* </pre> * </pre>
* *
@ -141,10 +142,13 @@ abstract public class AbstractLockingBehavior implements ICommonPatterns {
private Integer[] bulletIndices() { private Integer[] bulletIndices() {
List<Integer> bulletIndices = new ArrayList<Integer>(); List<Integer> bulletIndices = new ArrayList<Integer>();
int index = text.indexOf("* "); /* Assumes first line cannot be a bullet and that the '*' is
* at the start of a line.
*/
int index = text.indexOf("\n* ");
while (index >= 0) { while (index >= 0) {
bulletIndices.add(index); bulletIndices.add(index + 1);
index = text.indexOf("* ", index + 2); index = text.indexOf("\n* ", index + 3);
} }
return bulletIndices.toArray(new Integer[bulletIndices.size()]); return bulletIndices.toArray(new Integer[bulletIndices.size()]);

View file

@ -39,6 +39,8 @@ import com.raytheon.viz.warngen.gis.AffectedAreas;
* ------------ ---------- ----------- -------------------------- * ------------ ---------- ----------- --------------------------
* Sep 24, 2012 15322 jsanchez Initial creation * Sep 24, 2012 15322 jsanchez Initial creation
* Jan 8, 2013 15664 Qinglu Lin Updated body(). * Jan 8, 2013 15664 Qinglu Lin Updated body().
* Mar 13, 2013 15892 D. Friedman Fix headline locking. Do not
* lock "AND" or "FOR".
* *
* </pre> * </pre>
* *
@ -51,10 +53,8 @@ public class FollowUpLockingBehavior extends AbstractLockingBehavior {
*/ */
@Override @Override
public void body() { public void body() {
if (action != WarningAction.COR) headlines();
headlines(); super.body();
else
super.body();
} }
/** /**
@ -66,7 +66,7 @@ public class FollowUpLockingBehavior extends AbstractLockingBehavior {
// should be blank. // should be blank.
Pattern headlinePtrn = Pattern Pattern headlinePtrn = Pattern
.compile( .compile(
"^\\.\\.\\.(A|THE) (.*) (WARNING|ADVISORY) .*(REMAINS|EXPIRE|CANCELLED).*(\\.\\.\\.)$", "^\\.\\.\\.(AN?|THE) (.*) (WARNING|ADVISORY) .*(REMAINS|EXPIRE|CANCELLED).*(\\.\\.\\.)$",
Pattern.MULTILINE); Pattern.MULTILINE);
Matcher m = headlinePtrn.matcher(text); Matcher m = headlinePtrn.matcher(text);
@ -187,16 +187,8 @@ public class FollowUpLockingBehavior extends AbstractLockingBehavior {
+ LOCK_START + "..." + LOCK_END; + LOCK_START + "..." + LOCK_END;
} }
// Locks warning type (i.e. SEVERE THUNDERSTORM) // Locks warning type (i.e. SEVERE THUNDERSTORM)
headline = headline.replaceAll("(A|THE) (" + warningType + ")", headline = headline.replaceAll("(AN?|THE)( [\\w\\s]*?)(" + warningType + ")",
LOCK_START + "$0" + LOCK_END); LOCK_START + "$1" + LOCK_END + "$2" + LOCK_START + "$3" + LOCK_END);
// Locks the 'FOR' in the headline
headline = headline.replaceFirst(" FOR ", " " + LOCK_START + "FOR"
+ LOCK_END + " ");
// Locks the 'AND' in the headline
headline = headline.replaceFirst(" AND ", " " + LOCK_START + "AND"
+ LOCK_END + " ");
return headline; return headline;
} }

View file

@ -32,6 +32,7 @@ import java.util.regex.Pattern;
* ------------ ---------- ----------- -------------------------- * ------------ ---------- ----------- --------------------------
* Sep 24, 2012 15332 jsanchez Initial creation * Sep 24, 2012 15332 jsanchez Initial creation
* Oct 18, 2012 15332 jsanchez Replaced listOfAreaNamesPtrn with String pattern. * Oct 18, 2012 15332 jsanchez Replaced listOfAreaNamesPtrn with String pattern.
* Mar 13, 2013 DR 15892 D. Friedman Allow some punctuation in area names.
* *
* </pre> * </pre>
* *
@ -55,7 +56,7 @@ public interface ICommonPatterns {
// LOCK_END can be added at the start of the line if a previous line has // LOCK_END can be added at the start of the line if a previous line has
// been locked. // been locked.
public static final String listOfAreaName = "^((" + LOCK_END public static final String listOfAreaName = "^((" + LOCK_END
+ "){0,1}(((\\w+\\s{1})+\\w{2}-)*((\\w+\\s{1})+\\w{2}-)))"; + "){0,1}((([\\?\\(\\)\\w\\.,/'-]+\\s{1})+\\w{2}-)*(([\\?\\(\\)\\w\\.,/'-]+\\s{1})+\\w{2}-)))";
// LOCK_END should not be found at the beginning of a first bullet since the // LOCK_END should not be found at the beginning of a first bullet since the
// previous line should be blank. // previous line should be blank.

View file

@ -346,7 +346,7 @@ public class FipsUtil {
* @param fips * @param fips
* @return * @return
*/ */
private static ArrayList<String> getListCounties(String fips) { public static ArrayList<String> getListCounties(String fips) {
ArrayList<String> rval = new ArrayList<String>(); ArrayList<String> rval = new ArrayList<String>();
String matchStr = ""; String matchStr = "";

View file

@ -28,6 +28,7 @@ import com.raytheon.viz.warngen.text.ICommonPatterns;
* ------------ ---------- ----------- -------------------------- * ------------ ---------- ----------- --------------------------
* Jul 22, 2008 #1284 bwoodle Initial creation * Jul 22, 2008 #1284 bwoodle Initial creation
* Oct 18, 2012 15332 jsanchez Fixed refactor bugs. * Oct 18, 2012 15332 jsanchez Fixed refactor bugs.
* Mar 13, 2013 DR 15892 D. Friedman Handle SMW format in canceledAreasFromText
* *
* </pre> * </pre>
* *
@ -43,6 +44,8 @@ public class FollowUpUtil {
public static final Pattern vtecPtrn = Pattern public static final Pattern vtecPtrn = Pattern
.compile("/[OTEX]\\.([A-Z]{3})\\.[A-Za-z0-9]{4}\\.[A-Z]{2}\\.[WAYSFON]\\.\\d{4}\\.\\d{6}T\\d{4}Z-\\d{6}T\\d{4}Z/"); .compile("/[OTEX]\\.([A-Z]{3})\\.[A-Za-z0-9]{4}\\.[A-Z]{2}\\.[WAYSFON]\\.\\d{4}\\.\\d{6}T\\d{4}Z-\\d{6}T\\d{4}Z/");
private static final String SMW_CANCELED_AREAS_HEADER = "THE AFFECTED AREAS WERE...";
/** /**
* This method checks whether a particular followup should be available * This method checks whether a particular followup should be available
* given a Warning Record, a vtec Action, and a template configuration * given a Warning Record, a vtec Action, and a template configuration
@ -173,7 +176,8 @@ public class FollowUpUtil {
String headline = ""; String headline = "";
Pattern listOfAreaNamePtrn = Pattern Pattern listOfAreaNamePtrn = Pattern
.compile(ICommonPatterns.listOfAreaName); .compile(ICommonPatterns.listOfAreaName);
for (String line : originalText.trim().split("\n")) { String[] splitLines = originalText.trim().split("\n");
for (String line : splitLines) {
if (line.contains("TEST") || line.trim().length() == 0) { if (line.contains("TEST") || line.trim().length() == 0) {
continue; continue;
} }
@ -198,8 +202,15 @@ public class FollowUpUtil {
headline += line; headline += line;
} }
} }
String[] ugcs = ugcLine.split("-"); String[] ugcs = FipsUtil.getListCounties(ugcLine).toArray(new String[0]);
String[] names = namesLine.split("-"); String[] names;
boolean smwAreas = false;
if (namesLine.length() > 0)
names = namesLine.split("-");
else {
names = parseSMWCanceledAreas(splitLines);
smwAreas = true;
}
String[] areas = headline.split("\\.\\.\\."); String[] areas = headline.split("\\.\\.\\.");
ArrayList<AffectedAreas> al = new ArrayList<AffectedAreas>(); ArrayList<AffectedAreas> al = new ArrayList<AffectedAreas>();
@ -223,12 +234,20 @@ public class FollowUpUtil {
} }
} }
if (ugc.length() < 3)
continue; // TODO: log?
fips = ugc.substring(ugc.length() - 3); fips = ugc.substring(ugc.length() - 3);
if (i < names.length) { if (i < names.length) {
name = names[i].substring(0, names[i].length() - 3); if (!smwAreas && names[i].length() >= 3) {
stateAbbreviation = names[i].substring(names[i].length() - 2); name = names[i].substring(0, names[i].length() - 3);
} stateAbbreviation = names[i].substring(names[i].length() - 2);
} else {
name = names[i];
}
} else
break;
if (name != null) { if (name != null) {
for (String area : areas) { for (String area : areas) {
@ -334,4 +353,32 @@ public class FollowUpUtil {
return rval; return rval;
} }
/** Parses the canceled areas of an SMW, which have a different format
* from other products.
*/
private static String[] parseSMWCanceledAreas(String[] splitLines) {
StringBuilder text = new StringBuilder(64);
boolean inAreas = false;
for (String line : splitLines) {
String trimmedLine = line.trim();
if (SMW_CANCELED_AREAS_HEADER.equals(trimmedLine))
inAreas = true;
else if (inAreas) {
if (trimmedLine.length() > 0) {
text.append(trimmedLine);
text.append('\n');
} else
break;
}
}
int len = text.length();
if (len >= 4 && "...\n".equals(text.substring(len - 4)))
text.delete(len - 4, len);
String[] areas = text.toString().split("\\.\\.\\.\\n");
// Unwrap lines.
for (int i = 0; i < areas.length; ++i)
areas[i] = areas[i].replace("\n", " ");
return areas;
}
} }

View file

@ -1,7 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
<classpathentry kind="lib" path="bzip2.jar"/>
<classpathentry kind="output" path="bin"/>
</classpath>

View file

@ -1,7 +0,0 @@
Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: Bzip2
Bundle-SymbolicName: org.apache.tools.bzip2
Bundle-Version: 1.0.0.qualifier
Export-Package: org.apache.tools.bzip2
Bundle-ClassPath: bzip2.jar

View file

@ -1,2 +0,0 @@
bin.includes = META-INF/,\
bzip2.jar

View file

@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="src" path=""/>
<classpathentry exported="true" kind="lib" path="jbzip2-0.9.1.jar"/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
<classpathentry kind="output" path=""/>
</classpath>

View file

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<projectDescription> <projectDescription>
<name>org.apache.tools.bzip2</name> <name>org.itadaki.bzip2</name>
<comment></comment> <comment></comment>
<projects> <projects>
</projects> </projects>

View file

@ -0,0 +1,12 @@
#Tue Mar 19 13:25:31 CDT 2013
eclipse.preferences.version=1
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
org.eclipse.jdt.core.compiler.compliance=1.6
org.eclipse.jdt.core.compiler.debug.lineNumber=generate
org.eclipse.jdt.core.compiler.debug.localVariable=generate
org.eclipse.jdt.core.compiler.debug.sourceFile=generate
org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
org.eclipse.jdt.core.compiler.source=1.6

View file

@ -0,0 +1,8 @@
Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: Bzip2
Bundle-SymbolicName: org.itadaki.bzip2
Bundle-Version: 0.9.1
Bundle-ClassPath: jbzip2-0.9.1.jar,
.
Export-Package: org.itadaki.bzip2

View file

@ -0,0 +1,4 @@
source.. = .
bin.includes = META-INF/,\
.,\
jbzip2-0.9.1.jar

Binary file not shown.

14
d Normal file
View file

@ -0,0 +1,14 @@
D cave/com.raytheon.viz.mpe.ui/src/com/raytheon/viz/mpe/ui/actions/ToggleGageDisplay.java
D cave/com.raytheon.viz.mpe.ui/src/com/raytheon/viz/mpe/ui/actions/ToggleGageDisplay.java
D cots/org.apache.tools.bzip2/build.properties
D cots/org.apache.tools.bzip2/build.properties
D cots/org.apache.tools.bzip2/bzip2.jar
D cots/org.apache.tools.bzip2/bzip2.jar
D cots/org.apache.tools.bzip2/.classpath
D cots/org.apache.tools.bzip2/.classpath
D cots/org.apache.tools.bzip2/META-INF/MANIFEST.MF
D cots/org.apache.tools.bzip2/META-INF/MANIFEST.MF
D cots/org.apache.tools.bzip2/org.apache.tools.bzip2.ecl
D cots/org.apache.tools.bzip2/org.apache.tools.bzip2.ecl
D cots/org.apache.tools.bzip2/.project
D cots/org.apache.tools.bzip2/.project

7
dels Normal file
View file

@ -0,0 +1,7 @@
D cave/com.raytheon.viz.mpe.ui/src/com/raytheon/viz/mpe/ui/actions/ToggleGageDisplay.java
D cots/org.apache.tools.bzip2/build.properties
D cots/org.apache.tools.bzip2/bzip2.jar
D cots/org.apache.tools.bzip2/.classpath
D cots/org.apache.tools.bzip2/META-INF/MANIFEST.MF
D cots/org.apache.tools.bzip2/org.apache.tools.bzip2.ecl
D cots/org.apache.tools.bzip2/.project

View file

@ -5,6 +5,7 @@
##### Qinglu Lin 08-13-2012 DR 14493. Use corToNewMarker and corEventtime. ##### Qinglu Lin 08-13-2012 DR 14493. Use corToNewMarker and corEventtime.
##### D. Friedman 11-09-2012 DR 15430. Rework included watches. ##### D. Friedman 11-09-2012 DR 15430. Rework included watches.
##### QINGLU LIN 12-27-2012 DR 15594. Added $lock to headlineLocList. ##### QINGLU LIN 12-27-2012 DR 15594. Added $lock to headlineLocList.
##### D. Friedman 03-13-2013 DR 15892. Do not lock portion of state in firstBullet.
#################################################################################################### ####################################################################################################
Mile Marker Test Code Mile Marker Test Code
macro "mmarkers" use (called out of VM_global_library.vm): macro "mmarkers" use (called out of VM_global_library.vm):
@ -750,7 +751,7 @@ THE ${area.name}##
#if(${intFIPS.parseInt($FIPS)} < 500 || ${area.stateabbr} == "TX") #if(${intFIPS.parseInt($FIPS)} < 500 || ${area.stateabbr} == "TX")
<L>${area.name} ${area.areaNotation}</L> IN #areaFormat(${area.partOfParentRegion} true false) <L>${area.parentRegion}...</L> <L>${area.name} ${area.areaNotation}</L> IN #areaFormat(${area.partOfParentRegion} true false) <L>${area.parentRegion}...</L>
#else #else
<L>${area.name}</L> IN <L>#areaFormat(${area.partOfParentRegion} true false) ${area.parentRegion}...</L> <L>${area.name}</L> IN #areaFormat(${area.partOfParentRegion} true false) <L>${area.parentRegion}...</L>
#end #end
#end #end
## COMMENTED OUT 5 LINES BELOW THIS IS GENERALLY NOT UTILIZED - you can unREMARK if desired ## COMMENTED OUT 5 LINES BELOW THIS IS GENERALLY NOT UTILIZED - you can unREMARK if desired

View file

@ -4,6 +4,7 @@
## Evan Bookbinder 4-25-2012 for OB 12.3.1 (corText) ## Evan Bookbinder 4-25-2012 for OB 12.3.1 (corText)
## QINGLU LIN 7-31-2012 DR 15217 use roundAndPad ## QINGLU LIN 7-31-2012 DR 15217 use roundAndPad
## Qinglu Lin 12-27-2012 DR 15594. Appended true to headlineLocList's parameter list. ## Qinglu Lin 12-27-2012 DR 15594. Appended true to headlineLocList's parameter list.
## D. Friedman 03-13-2013 DR 15892. Use printcoords.
################################################ ################################################
## ##
### CREATE PHRASING DEPENDING ON WHETHER WE ISSUE EXP PRIOR TO EXPIRATION TIME OR NOT ### CREATE PHRASING DEPENDING ON WHETHER WE ISSUE EXP PRIOR TO EXPIRATION TIME OR NOT
@ -482,10 +483,7 @@ THIS IS A TEST MESSAGE.##
THIS IS A TEST MESSAGE. DO NOT TAKE ACTION BASED ON THIS MESSAGE. THIS IS A TEST MESSAGE. DO NOT TAKE ACTION BASED ON THIS MESSAGE.
#end #end
LAT...LON ## #printcoords(${areaPoly}, ${list})
#foreach(${coord} in ${areaPoly})
#llFormat(${coord.y}) #llFormat(${coord.x}) ##
#end
TIME...MOT...LOC ## TIME...MOT...LOC ##
${dateUtil.format(${event}, ${timeFormat.time})}Z ## ${dateUtil.format(${event}, ${timeFormat.time})}Z ##

View file

@ -8,6 +8,7 @@
## Evan Bookbinder 4-25-2012 for OB 12.3.1 (MND) ## Evan Bookbinder 4-25-2012 for OB 12.3.1 (MND)
## QINGLU LIN 7-31-2012 DR 15217 use roundAndPad ## ## QINGLU LIN 7-31-2012 DR 15217 use roundAndPad ##
## Qinglu Lin 12-27-2012 DR 15594. Appended true to headlineLocList's parameter list. ## Qinglu Lin 12-27-2012 DR 15594. Appended true to headlineLocList's parameter list.
## D. Friemdan 13-03-2013 DR 15892. Do not lock locations in headline.
###################################################### ######################################################
## ##
##SET SOME INITIAL VARIABLES ##SET SOME INITIAL VARIABLES
@ -120,7 +121,7 @@ THIS IS A TEST MESSAGE. ##
#end #end
#if(${windSpeed} >= 40 || ${hailSize} >= 0.70) #if(${windSpeed} >= 40 || ${hailSize} >= 0.70)
...SIGNIFICANT WEATHER ADVISORY FOR ## ...SIGNIFICANT WEATHER ADVISORY FOR ##
#headlineLocList(${areas} true false true false true) #secondBullet(${dateUtil},${expire},${timeFormat},${localtimezone},${secondtimezone}) #headlineLocList(${areas} true false true false false) #secondBullet(${dateUtil},${expire},${timeFormat},${localtimezone},${secondtimezone})
...## ...##
#elseif(${windSpeed} == 0 && ${hailSize} == 0) #elseif(${windSpeed} == 0 && ${hailSize} == 0)
!** YOU DID NOT SELECT ANY WIND OR HAIL THREATS. PLEASE RE-GENERATE THIS ADVISORY **! !** YOU DID NOT SELECT ANY WIND OR HAIL THREATS. PLEASE RE-GENERATE THIS ADVISORY **!

View file

@ -28,6 +28,7 @@ import java.util.Collections;
import java.util.Date; import java.util.Date;
import java.util.HashMap; import java.util.HashMap;
import java.util.HashSet; import java.util.HashSet;
import java.util.Iterator;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Set; import java.util.Set;
@ -111,6 +112,7 @@ import com.raytheon.uf.edex.database.query.DatabaseQuery;
* 01/21/12 #1504 randerso Back ported change to use ParameterMapper into 13.1.2 * 01/21/12 #1504 randerso Back ported change to use ParameterMapper into 13.1.2
* 02/10/13 #1603 randerso Eliminated unnecessary conversion from lists to arrays * 02/10/13 #1603 randerso Eliminated unnecessary conversion from lists to arrays
* 02/12/13 #1608 randerso Changed to use explicit deletes for groups and datasets * 02/12/13 #1608 randerso Changed to use explicit deletes for groups and datasets
* 03/15/13 #1795 njensen Added updatePublishTime()
* *
* </pre> * </pre>
* *
@ -478,6 +480,7 @@ public class GFEDao extends DefaultPluginDao {
} }
@SuppressWarnings("unchecked") @SuppressWarnings("unchecked")
@Deprecated
public void updateGridHistories(ParmID parmId, public void updateGridHistories(ParmID parmId,
Map<TimeRange, List<GridDataHistory>> history) Map<TimeRange, List<GridDataHistory>> history)
throws DataAccessLayerException { throws DataAccessLayerException {
@ -1138,4 +1141,59 @@ public class GFEDao extends DefaultPluginDao {
&& (id.getParmName().startsWith("mxt") || id.getParmName() && (id.getParmName().startsWith("mxt") || id.getParmName()
.startsWith("mnt")); .startsWith("mnt"));
} }
/**
* Updates the publish times in the database of all provided
* GridDataHistories. Does not alter the publish times in memory.
*
* @param history
* the histories to alter in the database
* @param publishTime
* the publish time to update to
* @throws DataAccessLayerException
*/
public void updatePublishTime(List<GridDataHistory> history,
Date publishTime) throws DataAccessLayerException {
StringBuilder query = new StringBuilder();
query.append("update gfe_gridhistory set publishtime=:publishtime where key in (");
Iterator<GridDataHistory> itr = history.iterator();
while (itr.hasNext()) {
query.append(itr.next().getKey());
if (itr.hasNext()) {
query.append(",");
}
}
query.append(");");
Session sess = null;
Transaction tx = null;
try {
sess = getHibernateTemplate().getSessionFactory().openSession();
tx = sess.beginTransaction();
Query q = sess.createSQLQuery(query.toString());
q.setTimestamp("publishtime", publishTime);
q.executeUpdate();
tx.commit();
} catch (Exception e) {
if (tx != null) {
try {
tx.rollback();
tx = null;
} catch (Exception e1) {
logger.error("Error occurred rolling back transaction", e1);
}
}
throw new DataAccessLayerException("Error updating history", e);
} finally {
if (sess != null) {
try {
sess.close();
} catch (Exception e) {
statusHandler.error(
"Error occurred closing database session", e);
}
}
}
}
} }

View file

@ -21,6 +21,7 @@
package com.raytheon.edex.plugin.gfe.server; package com.raytheon.edex.plugin.gfe.server;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collection;
import java.util.Date; import java.util.Date;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
@ -64,6 +65,7 @@ import com.raytheon.uf.edex.database.plugin.PluginFactory;
* 04/08/08 #875 bphillip Initial Creation * 04/08/08 #875 bphillip Initial Creation
* 06/17/08 #940 bphillip Implemented GFE Locking * 06/17/08 #940 bphillip Implemented GFE Locking
* 02/10/13 #1603 randerso Returned number of records purged from timePurge * 02/10/13 #1603 randerso Returned number of records purged from timePurge
* 03/15/13 #1795 njensen Added updatePublishTime()
* *
* </pre> * </pre>
* *
@ -131,10 +133,34 @@ public class GridParm {
return db.getGridHistory(id, trs); return db.getGridHistory(id, trs);
} }
@Deprecated
public ServerResponse<?> updateGridHistory( public ServerResponse<?> updateGridHistory(
Map<TimeRange, List<GridDataHistory>> history) { Map<TimeRange, List<GridDataHistory>> history) {
ServerResponse<?> sr = new ServerResponse<String>(); return db.updateGridHistory(id, history);
db.updateGridHistory(id, history); }
/**
* Updates the publish times in the database of all provided
* GridDataHistories. Does not alter the publish times in memory.
*
* @param history
* the histories to alter in the database
* @param publishTime
* the publish time to update to
* @return
*/
public ServerResponse<?> updatePublishTime(
Collection<List<GridDataHistory>> history, Date publishTime) {
ServerResponse<?> sr = null;
List<GridDataHistory> oneList = new ArrayList<GridDataHistory>();
for (List<GridDataHistory> innerList : history) {
oneList.addAll(innerList);
}
if (!oneList.isEmpty()) {
sr = db.updatePublishTime(oneList, publishTime);
} else {
sr = new ServerResponse<String>();
}
return sr; return sr;
} }

View file

@ -90,6 +90,7 @@ import com.raytheon.uf.edex.database.purge.PurgeLogger;
* fixed error which caused D2D purging to remove * fixed error which caused D2D purging to remove
* smartInit hdf5 data * smartInit hdf5 data
* 03/07/13 #1773 njensen Logged commitGrid() times * 03/07/13 #1773 njensen Logged commitGrid() times
* 03/15/13 #1795 njensen Sped up commitGrid()
* *
* </pre> * </pre>
* *
@ -711,10 +712,11 @@ public class GridParmManager {
histories.put(tr, histList); histories.put(tr, histList);
} }
// update the histories into the source database, update the // update the publish times in the source database, update the
// notifications // notifications
historyUpdateTimer.start(); historyUpdateTimer.start();
sr.addMessages(sourceGP.updateGridHistory(histories)); sr.addMessages(sourceGP.updatePublishTime(histories.values(),
(Date) nowTime.clone()));
// System.out.println("Updated " + histories.size() + " histories"); // System.out.println("Updated " + histories.size() + " histories");
historyUpdateTimer.stop(); historyUpdateTimer.stop();
@ -737,8 +739,14 @@ public class GridParmManager {
destHistList.get(i).replaceValues(srcHistList.get(i)); destHistList.get(i).replaceValues(srcHistList.get(i));
} }
} }
// only need to update the publish time on the destination histories
// of grids that are not being saved (due to no changes), because
// the saveGridSlices() call below will update the publish time
// of the ones with changes
historyUpdateTimer.start(); historyUpdateTimer.start();
destGP.updateGridHistory(destHistory); destGP.updatePublishTime(destHistory.values(),
(Date) nowTime.clone());
historyUpdateTimer.stop(); historyUpdateTimer.stop();
// save data directly to the official database (bypassing // save data directly to the official database (bypassing

View file

@ -22,6 +22,7 @@ package com.raytheon.edex.plugin.gfe.server.database;
import java.io.File; import java.io.File;
import java.util.Arrays; import java.util.Arrays;
import java.util.Date;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
@ -71,6 +72,7 @@ import com.raytheon.uf.common.time.TimeRange;
* in the gfeBaseDataDir. * in the gfeBaseDataDir.
* 02/10/13 #1603 randerso Moved removeFromDb, removeFromHDF5 and deleteModelHDF5 * 02/10/13 #1603 randerso Moved removeFromDb, removeFromHDF5 and deleteModelHDF5
* methods down to IFPGridDatabase * methods down to IFPGridDatabase
* 03/15/13 #1795 njensen Added updatePublishTime()
* *
* </pre> * </pre>
* *
@ -442,6 +444,22 @@ public abstract class GridDatabase {
+ this.getClass().getName()); + this.getClass().getName());
} }
/**
* Updates the publish times in the database of all provided
* GridDataHistories. Does not alter the publish times in memory.
*
* @param history
* the histories to alter in the database
* @param publishTime
* the publish time to update to
* @return
*/
public ServerResponse<?> updatePublishTime(List<GridDataHistory> history,
Date publishTime) {
throw new UnsupportedOperationException("Not implemented for class "
+ this.getClass().getName());
}
public ServerResponse<?> saveGridSlices(ParmID parmId, TimeRange tr, public ServerResponse<?> saveGridSlices(ParmID parmId, TimeRange tr,
List<IGridSlice> sliceData, WsId requestor, List<IGridSlice> sliceData, WsId requestor,
List<TimeRange> skipDelete) { List<TimeRange> skipDelete) {

View file

@ -25,6 +25,7 @@ import java.io.File;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Arrays; import java.util.Arrays;
import java.util.Collections; import java.util.Collections;
import java.util.Date;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
@ -113,6 +114,7 @@ import com.vividsolutions.jts.io.WKTReader;
* Added performance logging * Added performance logging
* 02/12/13 #1608 randerso Changed to explicitly call deleteGroups * 02/12/13 #1608 randerso Changed to explicitly call deleteGroups
* 03/07/13 #1737 njensen Logged getGridData times * 03/07/13 #1737 njensen Logged getGridData times
* 03/15/13 #1795 njensen Added updatePublishTime()
* *
* </pre> * </pre>
* *
@ -1174,6 +1176,7 @@ public class IFPGridDatabase extends GridDatabase {
} }
@Override @Override
@Deprecated
public ServerResponse<?> updateGridHistory(ParmID parmId, public ServerResponse<?> updateGridHistory(ParmID parmId,
Map<TimeRange, List<GridDataHistory>> history) { Map<TimeRange, List<GridDataHistory>> history) {
ServerResponse<?> sr = new ServerResponse<String>(); ServerResponse<?> sr = new ServerResponse<String>();
@ -1188,7 +1191,6 @@ public class IFPGridDatabase extends GridDatabase {
"Unable to update grid history!!", e); "Unable to update grid history!!", e);
} }
return sr; return sr;
} }
/** /**
@ -2481,8 +2483,25 @@ public class IFPGridDatabase extends GridDatabase {
Priority.PROBLEM, Priority.PROBLEM,
"Error deleting GFE model data from hdf5 for " "Error deleting GFE model data from hdf5 for "
+ dbId.toString(), e); + dbId.toString(), e);
} }
} }
@Override
public ServerResponse<?> updatePublishTime(List<GridDataHistory> history,
Date publishTime) {
ServerResponse<?> sr = new ServerResponse<String>();
GFEDao dao = null;
try {
dao = (GFEDao) PluginFactory.getInstance().getPluginDao("gfe");
dao.updatePublishTime(history, publishTime);
} catch (PluginException e1) {
statusHandler.handle(Priority.PROBLEM, "Unable to get gfe dao", e1);
} catch (DataAccessLayerException e) {
statusHandler.handle(Priority.PROBLEM,
"Unable to update grid history!", e);
sr.addMessage("Error updating history");
}
return sr;
}
} }

View file

@ -15,7 +15,8 @@ Require-Bundle: com.raytheon.edex.common,
com.raytheon.uf.common.serialization.comm, com.raytheon.uf.common.serialization.comm,
com.raytheon.uf.common.status;bundle-version="1.11.11", com.raytheon.uf.common.status;bundle-version="1.11.11",
com.raytheon.uf.common.dataplugin.radar, com.raytheon.uf.common.dataplugin.radar,
com.raytheon.uf.edex.menus;bundle-version="1.0.0" com.raytheon.uf.edex.menus;bundle-version="1.0.0",
org.itadaki.bzip2;bundle-version="0.9.1"
Bundle-ActivationPolicy: lazy Bundle-ActivationPolicy: lazy
Export-Package: com.raytheon.edex.plugin.radar, Export-Package: com.raytheon.edex.plugin.radar,
com.raytheon.edex.plugin.radar.dao, com.raytheon.edex.plugin.radar.dao,
@ -25,5 +26,4 @@ Bundle-RequiredExecutionEnvironment: JavaSE-1.6
Import-Package: com.raytheon.uf.common.comm, Import-Package: com.raytheon.uf.common.comm,
com.raytheon.uf.common.dataplugin.text.db, com.raytheon.uf.common.dataplugin.text.db,
com.raytheon.uf.common.site.ingest, com.raytheon.uf.common.site.ingest,
org.apache.commons.logging, org.apache.commons.logging
org.apache.tools.bzip2

View file

@ -35,6 +35,7 @@ import com.raytheon.edex.plugin.radar.dao.RadarStationDao;
import com.raytheon.edex.plugin.radar.level2.Level2BaseRadar; import com.raytheon.edex.plugin.radar.level2.Level2BaseRadar;
import com.raytheon.edex.plugin.radar.level3.Level3BaseRadar; import com.raytheon.edex.plugin.radar.level3.Level3BaseRadar;
import com.raytheon.edex.plugin.radar.util.RadarEdexTextProductUtil; import com.raytheon.edex.plugin.radar.util.RadarEdexTextProductUtil;
import com.raytheon.edex.plugin.radar.util.RadarSpatialUtil;
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.PluginException;
import com.raytheon.uf.common.dataplugin.radar.RadarRecord; import com.raytheon.uf.common.dataplugin.radar.RadarRecord;
@ -85,6 +86,8 @@ import com.raytheon.uf.edex.wmo.message.WMOHeader;
* 2/14/2007 139 Phillippe Initial check-in. Refactor of initial implementation. * 2/14/2007 139 Phillippe Initial check-in. Refactor of initial implementation.
* Dec 17, 2007 600 bphillip Added dao pool usage * Dec 17, 2007 600 bphillip Added dao pool usage
* Dec 03, 2010 2235 cjeanbap EDEXUtility.sendMessageAlertViz() signature changed. * Dec 03, 2010 2235 cjeanbap EDEXUtility.sendMessageAlertViz() signature changed.
* Mar 19, 2013 1804 bsteffen Optimize decoder performance.
*
* </pre> * </pre>
* *
* @author bphillip * @author bphillip
@ -200,7 +203,8 @@ public class RadarDecoder extends AbstractDecoder {
RadarRecord record = new RadarRecord(); RadarRecord record = new RadarRecord();
record.setProductCode(l3Radar.getMessageCode()); record.setProductCode(l3Radar.getMessageCode());
record.setDataTime(new DataTime(l3Radar.getMessageTimestamp())); record.setDataTime(new DataTime(l3Radar.getMessageTimestamp()));
RadarStation station = getStationById(l3Radar.getSourceId()); RadarStation station = RadarSpatialUtil
.getRadarStationByRpgIdDec(l3Radar.getSourceId());
if (station == null) { if (station == null) {
record.setIcao("unkn"); record.setIcao("unkn");
logger.error(headers.get("ingestfilename") logger.error(headers.get("ingestfilename")
@ -409,8 +413,6 @@ public class RadarDecoder extends AbstractDecoder {
record.setMapRecordVals(recordVals); record.setMapRecordVals(recordVals);
record.setTabularBlock(tb); record.setTabularBlock(tb);
} }
record.setAlphanumericValues(l3Radar
.getAlphanumericValues());
} }
try { try {
@ -543,13 +545,12 @@ public class RadarDecoder extends AbstractDecoder {
*/ */
private void processSymbologyBlock(RadarRecord record, private void processSymbologyBlock(RadarRecord record,
SymbologyBlock symbologyBlock) { SymbologyBlock symbologyBlock) {
int errorCount = 0;
if (symbologyBlock == null) { if (symbologyBlock == null) {
return; return;
} }
int packetsKept = 0;
List<Layer> packetsInLyrs = new ArrayList<Layer>(); List<Layer> packetsInLyrs = new ArrayList<Layer>();
for (int layer = 0; layer < symbologyBlock.getNumLayers(); ++layer) { for (int layer = 0; layer < symbologyBlock.getNumLayers(); ++layer) {
Layer lyr = new Layer(); Layer lyr = new Layer();
@ -585,20 +586,19 @@ public class RadarDecoder extends AbstractDecoder {
} }
} }
} }
packetsKept += packets.size();
lyr.setPackets(packets.toArray(new SymbologyPacket[packets.size()])); lyr.setPackets(packets.toArray(new SymbologyPacket[packets.size()]));
packetsInLyrs.add(lyr); packetsInLyrs.add(lyr);
} }
// remove the radial and raster from the symb block // remove the radial and raster from the symb block, only keep it if
symbologyBlock.setLayers(packetsInLyrs.toArray(new Layer[packetsInLyrs // there are other packets.
.size()])); if (packetsKept > 0) {
record.setSymbologyBlock(symbologyBlock); symbologyBlock.setLayers(packetsInLyrs
record.correlateSymbologyPackets(); .toArray(new Layer[packetsInLyrs.size()]));
record.setSymbologyBlock(symbologyBlock);
if (errorCount > 0) { record.correlateSymbologyPackets();
logger.error("Radar file contains " + errorCount
+ " unrecognized symbology packet types.");
} }
} }
@ -656,23 +656,6 @@ public class RadarDecoder extends AbstractDecoder {
record.setRawData(precipPacket.getPrecipData()); record.setRawData(precipPacket.getPrecipData());
} }
/**
* Retrieve the radar station from the dao for the rpg id given
*
* @param rpg_id
* @return
*/
private RadarStation getStationById(int rpg_id) {
try {
RadarStation station = radarStationDao.queryByRpgIdDec(String
.format("%03d", rpg_id));
return station;
} catch (Exception e) {
logger.error("Error retrieving RadarStation for id: " + rpg_id, e);
}
return null;
}
/** /**
* Retrieve the radar station from the dao for the name given * Retrieve the radar station from the dao for the name given
* *

View file

@ -28,6 +28,8 @@ package com.raytheon.edex.plugin.radar.dao;
* Date Ticket# Engineer Description * Date Ticket# Engineer Description
* ------------ ---------- ----------- -------------------------- * ------------ ---------- ----------- --------------------------
* 02/06/09 1990 bphillip Initial creation * 02/06/09 1990 bphillip Initial creation
* Mar 18, 2013 1804 bsteffen Reduce useless data stored in radar hdf5
*
* </pre> * </pre>
* *
* @author bphillip * @author bphillip
@ -41,12 +43,15 @@ import java.util.Map;
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.PluginException;
import com.raytheon.uf.common.dataplugin.persist.IPersistable; import com.raytheon.uf.common.dataplugin.persist.IPersistable;
import com.raytheon.uf.common.dataplugin.radar.RadarDataKey;
import com.raytheon.uf.common.dataplugin.radar.RadarDataPoint;
import com.raytheon.uf.common.dataplugin.radar.RadarRecord; import com.raytheon.uf.common.dataplugin.radar.RadarRecord;
import com.raytheon.uf.common.dataplugin.radar.RadarStoredData; import com.raytheon.uf.common.dataplugin.radar.RadarStoredData;
import com.raytheon.uf.common.dataplugin.radar.level3.GSMBlock.GSMMessage; import com.raytheon.uf.common.dataplugin.radar.level3.GSMBlock.GSMMessage;
import com.raytheon.uf.common.dataplugin.radar.level3.GraphicBlock; import com.raytheon.uf.common.dataplugin.radar.level3.GraphicBlock;
import com.raytheon.uf.common.dataplugin.radar.level3.SymbologyBlock; import com.raytheon.uf.common.dataplugin.radar.level3.SymbologyBlock;
import com.raytheon.uf.common.dataplugin.radar.util.RadarConstants; import com.raytheon.uf.common.dataplugin.radar.util.RadarConstants;
import com.raytheon.uf.common.dataplugin.radar.util.RadarConstants.MapValues;
import com.raytheon.uf.common.dataplugin.radar.util.RadarDataRetriever; import com.raytheon.uf.common.dataplugin.radar.util.RadarDataRetriever;
import com.raytheon.uf.common.datastorage.IDataStore; import com.raytheon.uf.common.datastorage.IDataStore;
import com.raytheon.uf.common.datastorage.StorageProperties; import com.raytheon.uf.common.datastorage.StorageProperties;
@ -133,10 +138,10 @@ public class RadarDao extends PluginDao {
dataStore.addDataRecord(bdr, sp); dataStore.addDataRecord(bdr, sp);
} }
if (radarRec.getSymbologyData() != null) { Map<RadarDataKey, RadarDataPoint> symData = radarRec.getSymbologyData();
if (symData != null && !symData.isEmpty()) {
byte[] data = DynamicSerializationManager.getManager( byte[] data = DynamicSerializationManager.getManager(
SerializationType.Thrift).serialize( SerializationType.Thrift).serialize(symData);
radarRec.getSymbologyData());
ByteDataRecord bdr = new ByteDataRecord( ByteDataRecord bdr = new ByteDataRecord(
RadarStoredData.SYM_DATA_ID, radarRec.getDataURI(), data); RadarStoredData.SYM_DATA_ID, radarRec.getDataURI(), data);
bdr.setCorrelationObject(radarRec); bdr.setCorrelationObject(radarRec);
@ -154,10 +159,11 @@ public class RadarDao extends PluginDao {
dataStore.addDataRecord(bdr, sp); dataStore.addDataRecord(bdr, sp);
} }
if (radarRec.getMapProductVals() != null) { Map<MapValues, Map<String, Map<MapValues, String>>> mapProdVals = radarRec
.getMapProductVals();
if (mapProdVals != null && !mapProdVals.isEmpty()) {
byte[] data = DynamicSerializationManager.getManager( byte[] data = DynamicSerializationManager.getManager(
SerializationType.Thrift).serialize( SerializationType.Thrift).serialize(mapProdVals);
radarRec.getMapProductVals());
ByteDataRecord bdr = new ByteDataRecord( ByteDataRecord bdr = new ByteDataRecord(
RadarStoredData.PRODUCT_VALS_ID, radarRec.getDataURI(), RadarStoredData.PRODUCT_VALS_ID, radarRec.getDataURI(),
data); data);
@ -165,17 +171,6 @@ public class RadarDao extends PluginDao {
dataStore.addDataRecord(bdr, sp); dataStore.addDataRecord(bdr, sp);
} }
if (radarRec.getAlphanumericValues() != null) {
byte[] data = DynamicSerializationManager.getManager(
SerializationType.Thrift).serialize(
radarRec.getAlphanumericValues());
ByteDataRecord bdr = new ByteDataRecord(
RadarStoredData.ALPHANUMERIC_ID, radarRec.getDataURI(),
data);
bdr.setCorrelationObject(radarRec);
dataStore.addDataRecord(bdr, sp);
}
if (radarRec.getTabularBlock() != null) { if (radarRec.getTabularBlock() != null) {
byte[] data = DynamicSerializationManager.getManager( byte[] data = DynamicSerializationManager.getManager(
SerializationType.Thrift).serialize( SerializationType.Thrift).serialize(
@ -195,19 +190,21 @@ public class RadarDao extends PluginDao {
dataStore.addDataRecord(rec, sp); dataStore.addDataRecord(rec, sp);
} }
if (radarRec.getMapRecordVals() != null) { Map<MapValues, Map<MapValues, String>> mapRecVals = radarRec
.getMapRecordVals();
if (mapRecVals != null && !mapRecVals.isEmpty()) {
byte[] data = DynamicSerializationManager.getManager( byte[] data = DynamicSerializationManager.getManager(
SerializationType.Thrift).serialize( SerializationType.Thrift).serialize(mapRecVals);
radarRec.getMapRecordVals());
ByteDataRecord bdr = new ByteDataRecord( ByteDataRecord bdr = new ByteDataRecord(
RadarStoredData.RECORD_VALS_ID, radarRec.getDataURI(), data); RadarStoredData.RECORD_VALS_ID, radarRec.getDataURI(), data);
bdr.setCorrelationObject(radarRec); bdr.setCorrelationObject(radarRec);
dataStore.addDataRecord(bdr, sp); dataStore.addDataRecord(bdr, sp);
} }
if (radarRec.getStormIDs() != null) { Map<String, RadarDataKey> stormIds = radarRec.getStormIDs();
if (stormIds != null && !stormIds.isEmpty()) {
byte[] data = DynamicSerializationManager.getManager( byte[] data = DynamicSerializationManager.getManager(
SerializationType.Thrift).serialize(radarRec.getStormIDs()); SerializationType.Thrift).serialize(stormIds);
ByteDataRecord bdr = new ByteDataRecord( ByteDataRecord bdr = new ByteDataRecord(
RadarStoredData.STORM_IDS_ID, radarRec.getDataURI(), data); RadarStoredData.STORM_IDS_ID, radarRec.getDataURI(), data);
bdr.setCorrelationObject(radarRec); bdr.setCorrelationObject(radarRec);

View file

@ -35,11 +35,11 @@ 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.tools.bzip2.CBZip2InputStream; import org.itadaki.bzip2.BZip2InputStream;
import com.raytheon.edex.esb.Headers; import com.raytheon.edex.esb.Headers;
import com.raytheon.edex.plugin.radar.dao.RadarStationDao;
import com.raytheon.edex.plugin.radar.util.RadarEdexTextProductUtil; import com.raytheon.edex.plugin.radar.util.RadarEdexTextProductUtil;
import com.raytheon.edex.plugin.radar.util.RadarSpatialUtil;
import com.raytheon.uf.common.dataplugin.radar.RadarStation; import com.raytheon.uf.common.dataplugin.radar.RadarStation;
import com.raytheon.uf.common.dataplugin.radar.level3.AlertAdaptationParameters; import com.raytheon.uf.common.dataplugin.radar.level3.AlertAdaptationParameters;
import com.raytheon.uf.common.dataplugin.radar.level3.AlertMessage; import com.raytheon.uf.common.dataplugin.radar.level3.AlertMessage;
@ -157,8 +157,6 @@ public class Level3BaseRadar {
private TabularBlock tabularBlock; private TabularBlock tabularBlock;
private String alphanumericValues;
private GSMBlock gsmBlock; private GSMBlock gsmBlock;
private AlertAdaptationParameters aapMessage; private AlertAdaptationParameters aapMessage;
@ -584,45 +582,6 @@ public class Level3BaseRadar {
return tabBlock; return tabBlock;
} }
private String readAlphanumericAddOn() throws IOException {
if (theRadarData.available() != 0 && symbologyBlock == null) {
short temp = theRadarData.readShort();
while (theRadarData.available() != 0 && temp != -1) {
temp = theRadarData.readShort();
}
}
if (theRadarData.available() != 0 && graphicBlock == null) {
short temp = theRadarData.readShort();
while (theRadarData.available() != 0 && temp != -1) {
temp = theRadarData.readShort();
}
}
if (theRadarData.available() != 0 && tabularBlock == null) {
short temp = theRadarData.readShort();
while (theRadarData.available() != 0 && temp != -1) {
temp = theRadarData.readShort();
}
}
int lineLen = theRadarData.available();
if (lineLen > 0) {
byte[] buf = new byte[lineLen];
theRadarData.readFully(buf);
String temp = new String(buf);
// PSM is found in all products that have useful Site Adaptation
// Parameters. For this reason, we are dropping every other set of
// Site Adaptation Parameters.
if (temp.contains("PSM")) {
temp = temp.substring(temp.indexOf("PSM"));
} else {
temp = "";
}
return temp;
} else {
return "";
}
}
/** /**
* *
* @return * @return
@ -697,10 +656,6 @@ public class Level3BaseRadar {
return tabularBlock; return tabularBlock;
} }
public String getAlphanumericValues() {
return alphanumericValues;
}
/** /**
* Goes through the radar header and reads in all the important fields. * Goes through the radar header and reads in all the important fields.
* *
@ -761,24 +716,7 @@ public class Level3BaseRadar {
productVersion = theRadarData.readByte(); productVersion = theRadarData.readByte();
productSpotBlank = theRadarData.readByte(); productSpotBlank = theRadarData.readByte();
if (afosId == "") { lookupAfosId();
if ("".equals(radarLoc)) {
RadarStationDao stat = new RadarStationDao();
try {
RadarStation loc = stat.queryByRpgIdDec(String
.valueOf(theSourceId));
if (loc != null) {
radarLoc = loc.getRdaId();
radarLoc = radarLoc.substring(1);
}
} catch (DataAccessLayerException e) {
theHandler.handle(Priority.ERROR,
"Unable to query database for radar location", e);
}
}
afosId = RadarTextProductUtil
.createAfosId(theProductCode, radarLoc);
}
int symbologyBlockOffset = theRadarData.readInt() * 2; int symbologyBlockOffset = theRadarData.readInt() * 2;
int graphicBlockOffset = theRadarData.readInt() * 2; int graphicBlockOffset = theRadarData.readInt() * 2;
int tabularBlockOffset = theRadarData.readInt() * 2; int tabularBlockOffset = theRadarData.readInt() * 2;
@ -793,13 +731,7 @@ public class Level3BaseRadar {
try { try {
theRadarData.reset(); theRadarData.reset();
theRadarData.readFully(msg); theRadarData.readFully(msg);
InputStream ins = new DataInputStream(theRadarData); InputStream ins = new BZip2InputStream(theRadarData, false);
char c1 = (char) ins.read();
char c2 = (char) ins.read();
if (c1 != 'B' || c2 != 'Z') {
throw new IOException("Not a bzip2 stream");
}
ins = new CBZip2InputStream(ins);
uncompressed = new byte[uncompressedSize]; uncompressed = new byte[uncompressedSize];
ins.read(uncompressed); ins.read(uncompressed);
} catch (IOException e) { } catch (IOException e) {
@ -828,7 +760,6 @@ public class Level3BaseRadar {
symbologyBlock = readSymbologyBlock(symbologyBlockOffset); symbologyBlock = readSymbologyBlock(symbologyBlockOffset);
graphicBlock = readGraphicBlock(graphicBlockOffset); graphicBlock = readGraphicBlock(graphicBlockOffset);
tabularBlock = readTabularBlock(tabularBlockOffset); tabularBlock = readTabularBlock(tabularBlockOffset);
alphanumericValues = readAlphanumericAddOn();
} }
if (tabularBlock != null) { if (tabularBlock != null) {
@ -911,24 +842,9 @@ public class Level3BaseRadar {
} }
tabularBlock.setString(builder.toString()); tabularBlock.setString(builder.toString());
if (afosId == "") {
if ("".equals(radarLoc)) { lookupAfosId();
RadarStationDao stat = new RadarStationDao();
try {
RadarStation loc = stat.queryByRpgIdDec(String
.valueOf(theSourceId));
if (loc != null) {
radarLoc = loc.getRdaId();
radarLoc = radarLoc.substring(1);
}
} catch (DataAccessLayerException e) {
theHandler.handle(Priority.ERROR,
"Unable to query database for radar location", e);
}
}
afosId = RadarTextProductUtil
.createAfosId(theMessageCode, radarLoc);
}
if (RadarTextProductUtil.radarTable.keySet().contains(theMessageCode)) { if (RadarTextProductUtil.radarTable.keySet().contains(theMessageCode)) {
byte[] wmoid = wmoHeader.getBytes(); byte[] wmoid = wmoHeader.getBytes();
WMOHeader header = new WMOHeader(wmoid, headers); WMOHeader header = new WMOHeader(wmoid, headers);
@ -947,6 +863,29 @@ public class Level3BaseRadar {
} }
} }
/**
* Set the afosId and radarLoc based off the sourceId.
*/
private void lookupAfosId() {
if (afosId.isEmpty()) {
if (radarLoc.isEmpty()) {
try {
RadarStation loc = RadarSpatialUtil
.getRadarStationByRpgIdDec(theSourceId);
if (loc != null) {
radarLoc = loc.getRdaId();
radarLoc = radarLoc.substring(1);
}
} catch (DataAccessLayerException e) {
theHandler.handle(Priority.ERROR,
"Unable to query database for radar location", e);
}
}
afosId = RadarTextProductUtil
.createAfosId(theMessageCode, radarLoc);
}
}
private void parseRequestResponse() throws IOException { private void parseRequestResponse() throws IOException {
String temp = new String(); String temp = new String();
theRadarData.skip(4); theRadarData.skip(4);

View file

@ -21,11 +21,14 @@ package com.raytheon.edex.plugin.radar.util;
import java.util.Arrays; import java.util.Arrays;
import java.util.List; import java.util.List;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
import org.geotools.referencing.GeodeticCalculator; import org.geotools.referencing.GeodeticCalculator;
import com.raytheon.edex.plugin.radar.dao.RadarStationDao; import com.raytheon.edex.plugin.radar.dao.RadarStationDao;
import com.raytheon.uf.common.dataplugin.radar.RadarStation; import com.raytheon.uf.common.dataplugin.radar.RadarStation;
import com.raytheon.uf.edex.database.DataAccessLayerException;
import com.vividsolutions.jts.geom.Coordinate; import com.vividsolutions.jts.geom.Coordinate;
/** /**
@ -37,6 +40,7 @@ import com.vividsolutions.jts.geom.Coordinate;
* Date Ticket# Engineer Description * Date Ticket# Engineer Description
* ------------ ---------- ----------- -------------------------- * ------------ ---------- ----------- --------------------------
* Mar 19, 2010 #4473 rjpeter Initial creation. * Mar 19, 2010 #4473 rjpeter Initial creation.
* Mar 19, 2013 1804 bsteffen Cache db queries in radar decoder.
* *
* </pre> * </pre>
* *
@ -45,6 +49,8 @@ import com.vividsolutions.jts.geom.Coordinate;
*/ */
public class RadarSpatialUtil { public class RadarSpatialUtil {
private static Map<Integer, RadarStation> rpgIdDec2radarStation = new ConcurrentHashMap<Integer, RadarStation>();
/** /**
* Gets the closest RadarStation entry for a given wfo, lat, lon * Gets the closest RadarStation entry for a given wfo, lat, lon
* *
@ -92,4 +98,22 @@ public class RadarSpatialUtil {
return rval; return rval;
} }
/**
* Provides a level of caching around RadarStationDao.queryByRpgIdDec.
*
* @param rpgIdDec
* @return
* @throws DataAccessLayerException
*/
public static RadarStation getRadarStationByRpgIdDec(int rpgIdDec)
throws DataAccessLayerException {
RadarStation station = rpgIdDec2radarStation.get(rpgIdDec);
if (station == null) {
RadarStationDao stat = new RadarStationDao();
station = stat.queryByRpgIdDec(String.format("%03d", rpgIdDec));
rpgIdDec2radarStation.put(rpgIdDec, station);
}
return station;
}
} }

View file

@ -16,8 +16,8 @@ Require-Bundle: com.raytheon.uf.common.localization;bundle-version="1.11.24",
com.raytheon.edex.plugin.radar;bundle-version="1.12.1174", com.raytheon.edex.plugin.radar;bundle-version="1.12.1174",
com.raytheon.uf.common.serialization.comm;bundle-version="1.12.1174", com.raytheon.uf.common.serialization.comm;bundle-version="1.12.1174",
com.raytheon.uf.common.gridcoverage;bundle-version="1.0.0", com.raytheon.uf.common.gridcoverage;bundle-version="1.0.0",
com.raytheon.uf.common.dataplugin.level;bundle-version="1.12.1174" com.raytheon.uf.common.dataplugin.level;bundle-version="1.12.1174",
org.itadaki.bzip2;bundle-version="0.9.1"
Import-Package: com.raytheon.uf.common.dataplugin.radar, Import-Package: com.raytheon.uf.common.dataplugin.radar,
com.raytheon.uf.common.dataplugin.radar.request, com.raytheon.uf.common.dataplugin.radar.request,
com.raytheon.uf.common.ohd, com.raytheon.uf.common.ohd
org.apache.tools.bzip2

View file

@ -42,10 +42,10 @@ import javax.measure.unit.Unit;
import javax.xml.bind.JAXBException; import javax.xml.bind.JAXBException;
import javax.xml.bind.Unmarshaller; import javax.xml.bind.Unmarshaller;
import org.apache.tools.bzip2.CBZip2OutputStream;
import org.geotools.coverage.grid.GridEnvelope2D; import org.geotools.coverage.grid.GridEnvelope2D;
import org.geotools.coverage.grid.GridGeometry2D; import org.geotools.coverage.grid.GridGeometry2D;
import org.geotools.geometry.DirectPosition2D; import org.geotools.geometry.DirectPosition2D;
import org.itadaki.bzip2.BZip2OutputStream;
import org.opengis.metadata.spatial.PixelOrientation; import org.opengis.metadata.spatial.PixelOrientation;
import org.opengis.referencing.datum.PixelInCell; import org.opengis.referencing.datum.PixelInCell;
import org.opengis.referencing.operation.MathTransform; import org.opengis.referencing.operation.MathTransform;
@ -1016,8 +1016,6 @@ public class RPGEnvironmentalDataManager {
try { try {
ByteArrayOutputStream baOut = new ByteArrayOutputStream( ByteArrayOutputStream baOut = new ByteArrayOutputStream(
data.length / 2); data.length / 2);
baOut.write(66); // 'B' -- BZip2 magic value
baOut.write(90); // 'Z'
int blockSize100k = Math.max(1/* int blockSize100k = Math.max(1/*
* CBZip2OutputStream. * CBZip2OutputStream.
* MIN_BLOCKSIZE * MIN_BLOCKSIZE
@ -1025,7 +1023,7 @@ public class RPGEnvironmentalDataManager {
Math.min(9/* Math.min(9/*
* CBZip2OutputStream . MAX_BLOCKSIZE * CBZip2OutputStream . MAX_BLOCKSIZE
*/, (data.length + 99999) / 100000)); */, (data.length + 99999) / 100000));
CBZip2OutputStream out = new CBZip2OutputStream(baOut, BZip2OutputStream out = new BZip2OutputStream(baOut,
blockSize100k); blockSize100k);
// CBZip2OutputStream.chooseBlockSize(data.length) // why is // CBZip2OutputStream.chooseBlockSize(data.length) // why is
// this missing? // this missing?

View file

@ -61,5 +61,4 @@ Import-Package: com.raytheon.edex.exception,
javax.measure.converter, javax.measure.converter,
javax.persistence, javax.persistence,
org.apache.commons.logging, org.apache.commons.logging,
org.apache.tools.bzip2,
org.opengis.referencing.crs org.opengis.referencing.crs

View file

@ -59,9 +59,9 @@ import com.raytheon.uf.common.dataplugin.radar.level3.CellTrendDataPacket;
import com.raytheon.uf.common.dataplugin.radar.level3.CellTrendVolumeScanPacket; import com.raytheon.uf.common.dataplugin.radar.level3.CellTrendVolumeScanPacket;
import com.raytheon.uf.common.dataplugin.radar.level3.DMDPacket; import com.raytheon.uf.common.dataplugin.radar.level3.DMDPacket;
import com.raytheon.uf.common.dataplugin.radar.level3.DMDPacket.DMDAttributeIDs; import com.raytheon.uf.common.dataplugin.radar.level3.DMDPacket.DMDAttributeIDs;
import com.raytheon.uf.common.dataplugin.radar.level3.DataLevelThreshold;
import com.raytheon.uf.common.dataplugin.radar.level3.GFMPacket; import com.raytheon.uf.common.dataplugin.radar.level3.GFMPacket;
import com.raytheon.uf.common.dataplugin.radar.level3.GFMPacket.GFMAttributeIDs; import com.raytheon.uf.common.dataplugin.radar.level3.GFMPacket.GFMAttributeIDs;
import com.raytheon.uf.common.dataplugin.radar.level3.DataLevelThreshold;
import com.raytheon.uf.common.dataplugin.radar.level3.GSMBlock.GSMMessage; import com.raytheon.uf.common.dataplugin.radar.level3.GSMBlock.GSMMessage;
import com.raytheon.uf.common.dataplugin.radar.level3.GenericDataPacket; import com.raytheon.uf.common.dataplugin.radar.level3.GenericDataPacket;
import com.raytheon.uf.common.dataplugin.radar.level3.GraphicBlock; import com.raytheon.uf.common.dataplugin.radar.level3.GraphicBlock;
@ -119,6 +119,8 @@ import com.vividsolutions.jts.geom.Coordinate;
* 10/09/2007 465 randerso Updated to better represent level 3 data * 10/09/2007 465 randerso Updated to better represent level 3 data
* 20071129 472 jkorman Added IDecoderGettable interface. * 20071129 472 jkorman Added IDecoderGettable interface.
* 03/04/2013 DCS51 zwang Handle MIGFA product * 03/04/2013 DCS51 zwang Handle MIGFA product
* Mar 18, 2013 1804 bsteffen Remove AlphanumericValues from radar
* HDF5.
* </pre> * </pre>
* *
* @author bphillip * @author bphillip
@ -1034,14 +1036,6 @@ public class RadarRecord extends PersistablePluginDataObject implements
return getStoredData().getGsmMessage(); return getStoredData().getGsmMessage();
} }
public String getAlphanumericValues() {
return getStoredData().getAlphanumericValues();
}
public void setAlphanumericValues(String alphanumericValues) {
getStoredData().setAlphanumericValues(alphanumericValues);
}
public short getProductDependentValue(int value) { public short getProductDependentValue(int value) {
return getProductDependentValues()[value]; return getProductDependentValues()[value];
} }

View file

@ -41,6 +41,8 @@ import com.raytheon.uf.common.dataplugin.radar.util.RadarConstants.MapValues;
* Date Ticket# Engineer Description * Date Ticket# Engineer Description
* ------------ ---------- ----------- -------------------------- * ------------ ---------- ----------- --------------------------
* Jul 29, 2011 bsteffen Initial creation * Jul 29, 2011 bsteffen Initial creation
* Mar 18, 2013 1804 bsteffen Remove AlphanumericValues from radar
* HDF5.
* *
* </pre> * </pre>
* *
@ -65,8 +67,6 @@ public class RadarStoredData {
public static final String PRODUCT_VALS_ID = "ProductVals"; public static final String PRODUCT_VALS_ID = "ProductVals";
public static final String ALPHANUMERIC_ID = "AlphanumericValues";
public static final String TABULAR_ID = "Tabular"; public static final String TABULAR_ID = "Tabular";
public static final String DEPENDENT_VALS_ID = "DependentValues"; public static final String DEPENDENT_VALS_ID = "DependentValues";
@ -95,8 +95,6 @@ public class RadarStoredData {
private Map<MapValues, Map<String, Map<MapValues, String>>> productVals = new HashMap<MapValues, Map<String, Map<MapValues, String>>>(); private Map<MapValues, Map<String, Map<MapValues, String>>> productVals = new HashMap<MapValues, Map<String, Map<MapValues, String>>>();
private String alphanumericValues;
private Map<MapValues, Map<MapValues, String>> mapRecordVals = new HashMap<MapValues, Map<MapValues, String>>(); private Map<MapValues, Map<MapValues, String>> mapRecordVals = new HashMap<MapValues, Map<MapValues, String>>();
private GSMMessage gsmMessage; private GSMMessage gsmMessage;
@ -170,14 +168,6 @@ public class RadarStoredData {
this.productVals = productVals; this.productVals = productVals;
} }
public String getAlphanumericValues() {
return alphanumericValues;
}
public void setAlphanumericValues(String alphanumericValues) {
this.alphanumericValues = alphanumericValues;
}
public Map<MapValues, Map<MapValues, String>> getMapRecordVals() { public Map<MapValues, Map<MapValues, String>> getMapRecordVals() {
return mapRecordVals; return mapRecordVals;
} }

View file

@ -53,6 +53,8 @@ import com.raytheon.uf.common.serialization.SerializationException;
* Date Ticket# Engineer Description * Date Ticket# Engineer Description
* ------------ ---------- ----------- -------------------------- * ------------ ---------- ----------- --------------------------
* Feb 21, 2011 mschenke Initial creation * Feb 21, 2011 mschenke Initial creation
* Mar 18, 2013 1804 bsteffen Remove AlphanumericValues from radar
* HDF5.
* *
* </pre> * </pre>
* *
@ -125,14 +127,6 @@ public class RadarDataRetriever {
SerializationType.Thrift).deserialize(bais); SerializationType.Thrift).deserialize(bais);
radarData radarData
.setProductVals((HashMap<RadarConstants.MapValues, Map<String, Map<RadarConstants.MapValues, String>>>) o); .setProductVals((HashMap<RadarConstants.MapValues, Map<String, Map<RadarConstants.MapValues, String>>>) o);
} else if (record.getName().equals(
RadarStoredData.ALPHANUMERIC_ID)) {
ByteDataRecord byteData = (ByteDataRecord) record;
ByteArrayInputStream bais = new ByteArrayInputStream(
byteData.getByteData());
Object o = DynamicSerializationManager.getManager(
SerializationType.Thrift).deserialize(bais);
radarData.setAlphanumericValues((String) o);
} else if (record.getName().equals( } else if (record.getName().equals(
RadarStoredData.RECORD_VALS_ID)) { RadarStoredData.RECORD_VALS_ID)) {
ByteDataRecord byteData = (ByteDataRecord) record; ByteDataRecord byteData = (ByteDataRecord) record;

View file

@ -22,10 +22,10 @@ package com.raytheon.uf.common.dataplugin.radar.util;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Date; import java.util.Date;
import java.util.HashMap; import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.regex.Matcher; import java.util.regex.Matcher;
import java.util.LinkedHashMap;
import org.geotools.referencing.GeodeticCalculator; import org.geotools.referencing.GeodeticCalculator;
@ -36,6 +36,7 @@ import com.raytheon.uf.common.dataplugin.radar.level3.DMDPacket;
import com.raytheon.uf.common.dataplugin.radar.level3.DMDPacket.DMDAttributeIDs; import com.raytheon.uf.common.dataplugin.radar.level3.DMDPacket.DMDAttributeIDs;
import com.raytheon.uf.common.dataplugin.radar.level3.GraphicBlock; import com.raytheon.uf.common.dataplugin.radar.level3.GraphicBlock;
import com.raytheon.uf.common.dataplugin.radar.level3.Layer; import com.raytheon.uf.common.dataplugin.radar.level3.Layer;
import com.raytheon.uf.common.dataplugin.radar.level3.SymbologyBlock;
import com.raytheon.uf.common.dataplugin.radar.level3.SymbologyPacket; import com.raytheon.uf.common.dataplugin.radar.level3.SymbologyPacket;
import com.raytheon.uf.common.dataplugin.radar.level3.TextSymbolPacket; import com.raytheon.uf.common.dataplugin.radar.level3.TextSymbolPacket;
import com.raytheon.uf.common.dataplugin.radar.level3.generic.AreaComponent; import com.raytheon.uf.common.dataplugin.radar.level3.generic.AreaComponent;
@ -55,6 +56,9 @@ import com.vividsolutions.jts.geom.Coordinate;
* ------------ ---------- ----------- -------------------------- * ------------ ---------- ----------- --------------------------
* Aug 11, 2010 mnash Initial creation * Aug 11, 2010 mnash Initial creation
* Dec 28, 2011 11705 gzhang Fix SCAN missing Rows error * Dec 28, 2011 11705 gzhang Fix SCAN missing Rows error
* Mar 19, 2013 1804 bsteffen Reduce useless data stored in radar hdf5
* Mar 19, 2013 1804 bsteffen Remove empty data structures from radar
* hdf5.
* *
* </pre> * </pre>
* *
@ -83,9 +87,8 @@ public class RadarRecordUtil {
.getTheText())) { .getTheText())) {
Map<GraphicBlockValues, String> map = new HashMap<GraphicBlockValues, String>(); Map<GraphicBlockValues, String> map = new HashMap<GraphicBlockValues, String>();
Matcher m = RadarConstants.graphic_block_pattern Matcher m = RadarConstants.graphic_block_pattern
.matcher( .matcher(getNormalizedGBText(((TextSymbolPacket) packets[j])
getNormalizedGBText( ((TextSymbolPacket) packets[j]).getTheText() ) .getTheText()));
);
if (m.find()) { if (m.find()) {
String storm_id = m.group(1).trim(); String storm_id = m.group(1).trim();
map.put(GraphicBlockValues.AZIMUTH, m map.put(GraphicBlockValues.AZIMUTH, m
@ -146,8 +149,7 @@ public class RadarRecordUtil {
String property) { String property) {
String rval = ""; String rval = "";
for (RadarDataKey curLatLon : record.getSymbologyData() for (RadarDataKey curLatLon : record.getSymbologyData().keySet()) {
.keySet()) {
RadarDataPoint currPoint = record.getSymbologyData().get(curLatLon); RadarDataPoint currPoint = record.getSymbologyData().get(curLatLon);
for (Integer type : currPoint.getDisplayGenericPointData().keySet()) { for (Integer type : currPoint.getDisplayGenericPointData().keySet()) {
@ -167,8 +169,10 @@ public class RadarRecordUtil {
/** /**
* Get the GenericDataComponent. * Get the GenericDataComponent.
* *
* @param record The RadarRecord * @param record
* @param featureId The featureId * The RadarRecord
* @param featureId
* The featureId
* *
* @return The GenericDataComponent, or null if no matches * @return The GenericDataComponent, or null if no matches
*/ */
@ -192,10 +196,12 @@ public class RadarRecordUtil {
public static List<String> getDMDFeatureIDs(RadarRecord record) { public static List<String> getDMDFeatureIDs(RadarRecord record) {
List<String> rval = new ArrayList<String>(); List<String> rval = new ArrayList<String>();
SymbologyBlock sb = record.getSymbologyBlock();
for (Layer layer : record.getSymbologyBlock().getLayers()) { if (sb != null) {
for (SymbologyPacket packet : layer.getPackets()) for (Layer layer : sb.getLayers()) {
rval.addAll(((DMDPacket) packet).getFeatureIDs()); for (SymbologyPacket packet : layer.getPackets())
rval.addAll(((DMDPacket) packet).getFeatureIDs());
}
} }
return rval; return rval;
} }
@ -204,8 +210,7 @@ public class RadarRecordUtil {
String featureId) { String featureId) {
Coordinate rval = null; Coordinate rval = null;
AreaComponent currFeature = null; AreaComponent currFeature = null;
for (RadarDataKey curLatLon : record.getSymbologyData() for (RadarDataKey curLatLon : record.getSymbologyData().keySet()) {
.keySet()) {
RadarDataPoint currPoint = record.getSymbologyData().get(curLatLon); RadarDataPoint currPoint = record.getSymbologyData().get(curLatLon);
for (Integer type : currPoint.getDisplayGenericPointData().keySet()) { for (Integer type : currPoint.getDisplayGenericPointData().keySet()) {
@ -416,20 +421,46 @@ public class RadarRecordUtil {
return record.srmSourceName != null; return record.srmSourceName != null;
} }
private static final DHRValues[] ADAP32_VALUES = { private static final DHRValues[] ADAP32_VALUES = { DHRValues.BEAMWIDTH,
DHRValues.BEAMWIDTH, DHRValues.BLOCKAGETHRESHOLD, DHRValues.CLUTTERTHRESHOLD, DHRValues.WEIGHTTHRESHOLD, DHRValues.BLOCKAGETHRESHOLD, DHRValues.CLUTTERTHRESHOLD,
DHRValues.FULLHYBRIDSCANTHRESH, DHRValues.LOWREFLTHRESHOLD, DHRValues.RAINDETREFLTHRESHOLD, DHRValues.RAINDETAREATHRESHOLD, DHRValues.WEIGHTTHRESHOLD, DHRValues.FULLHYBRIDSCANTHRESH,
DHRValues.RAINDETTIMETHRESHOLD, DHRValues.ZRMULTCOEFF, DHRValues.ZRPOWERCOEFF, DHRValues.MINREFLTORATE, DHRValues.LOWREFLTHRESHOLD, DHRValues.RAINDETREFLTHRESHOLD,
DHRValues.MAXREFLTORATE, DHRValues.NUMEXCLZONE, DHRValues.RANGECUTOFF, DHRValues.RANGEEFFCOEFF1, DHRValues.RAINDETAREATHRESHOLD, DHRValues.RAINDETTIMETHRESHOLD,
DHRValues.RANGEEFFCOEFF2, DHRValues.RANGEEFFCOEFF3, DHRValues.MINPRECIPRATEINCL, DHRValues.MAXPRECIPRATEALLOW, DHRValues.ZRMULTCOEFF, DHRValues.ZRPOWERCOEFF,
DHRValues.THRESHELAPSEDTIME, DHRValues.MAXTIMEFORINTERP, DHRValues.MINTIMEHOURLYPERIOD, DHRValues.THRESHOLDHROUTLIER, DHRValues.MINREFLTORATE, DHRValues.MAXREFLTORATE,
DHRValues.ENDTIMEGAGEACCUM, DHRValues.MAXPERIODACCUMVAL, DHRValues.MAXHOURLYACCUMVAL, DHRValues.TIMEBIASEST, DHRValues.NUMEXCLZONE, DHRValues.RANGECUTOFF,
DHRValues.THRESHNOGAGERADAR, DHRValues.RESETBIASVALUE, DHRValues.LONGESTALLOWLAG, DHRValues.BIASAPPLIEDFLAG DHRValues.RANGEEFFCOEFF1, DHRValues.RANGEEFFCOEFF2,
}; DHRValues.RANGEEFFCOEFF3, DHRValues.MINPRECIPRATEINCL,
DHRValues.MAXPRECIPRATEALLOW, DHRValues.THRESHELAPSEDTIME,
DHRValues.MAXTIMEFORINTERP, DHRValues.MINTIMEHOURLYPERIOD,
DHRValues.THRESHOLDHROUTLIER, DHRValues.ENDTIMEGAGEACCUM,
DHRValues.MAXPERIODACCUMVAL, DHRValues.MAXHOURLYACCUMVAL,
DHRValues.TIMEBIASEST, DHRValues.THRESHNOGAGERADAR,
DHRValues.RESETBIASVALUE, DHRValues.LONGESTALLOWLAG,
DHRValues.BIASAPPLIEDFLAG };
public static Map<DHRValues, Double> getDHRValues(RadarRecord record) { public static Map<DHRValues, Double> getDHRValues(RadarRecord record) {
Map<DHRValues, Double> map = new HashMap<DHRValues, Double>(); Map<DHRValues, Double> map = new HashMap<DHRValues, Double>();
String text = record.getAlphanumericValues(); String text = null;
SymbologyBlock sb = record.getSymbologyBlock();
if (sb != null) {
// According to the ICD the alphanumeric data for DHR can be found
// in the second layer of the symbology block in a TextSymbolPacketn
// with code 1.
for (Layer layer : sb.getLayers()) {
for (SymbologyPacket packet : layer.getPackets()) {
if (packet instanceof TextSymbolPacket) {
TextSymbolPacket tsp = (TextSymbolPacket) packet;
if (tsp.getTheText().contains("PSM")) {
text = tsp.getTheText();
}
}
}
}
}
if (text == null) {
return map;
}
int vi = 0; int vi = 0;
int nv = text.length() / 8; int nv = text.length() / 8;
int precipCat = 0; int precipCat = 0;
@ -439,7 +470,7 @@ public class RadarRecordUtil {
String[] v = new String[nv]; String[] v = new String[nv];
for (vi = 0; vi < nv; ++vi) for (vi = 0; vi < nv; ++vi)
v[vi] = text.substring(vi * 8, (vi+1) * 8); v[vi] = text.substring(vi * 8, (vi + 1) * 8);
vi = 0; vi = 0;
while (vi < nv) { while (vi < nv) {
@ -455,10 +486,12 @@ public class RadarRecordUtil {
while (vi < nv) { while (vi < nv) {
s = v[vi++]; s = v[vi++];
if (s.equals("SUPL(15)")) { if (s.equals("SUPL(15)")) {
/* // average scan date/time are never used... /*
map.put(DHRValues.AVGSCANDATE, parseDHRValue(text, vi + 0)); * // average scan date/time are never used...
map.put(DHRValues.AVGSCANTIME, parseDHRValue(text, vi + 1)); * map.put(DHRValues.AVGSCANDATE, parseDHRValue(text, vi
*/ * + 0)); map.put(DHRValues.AVGSCANTIME,
* parseDHRValue(text, vi + 1));
*/
flagZeroHybrid = (int) parseDHRValue(v[vi + 2]); flagZeroHybrid = (int) parseDHRValue(v[vi + 2]);
if (flagZeroHybrid != 0 && flagZeroHybrid != 1) if (flagZeroHybrid != 0 && flagZeroHybrid != 1)
flagZeroHybrid = 0; // should print warning flagZeroHybrid = 0; // should print warning
@ -469,7 +502,8 @@ public class RadarRecordUtil {
} }
} }
} else if (s.equals("ADAP(38)")) { } else if (s.equals("ADAP(38)")) {
// Don't have documentation for older formats, so copying logic from A1 decodeDHR.C. // Don't have documentation for older formats, so copying logic
// from A1 decodeDHR.C.
map.put(DHRValues.ZRMULTCOEFF, parseDHRValue(v[vi + 9])); map.put(DHRValues.ZRMULTCOEFF, parseDHRValue(v[vi + 9]));
map.put(DHRValues.ZRPOWERCOEFF, parseDHRValue(v[vi + 10])); map.put(DHRValues.ZRPOWERCOEFF, parseDHRValue(v[vi + 10]));
map.put(DHRValues.MAXPRECIPRATEALLOW, parseDHRValue(v[vi + 25])); map.put(DHRValues.MAXPRECIPRATEALLOW, parseDHRValue(v[vi + 25]));
@ -501,7 +535,7 @@ public class RadarRecordUtil {
} }
if (flagZeroHybrid != null) if (flagZeroHybrid != null)
map.put(DHRValues.FLAGZEROHYBRID, (double) flagZeroHybrid); map.put(DHRValues.FLAGZEROHYBRID, (double) flagZeroHybrid);
if (! biasApplied) { if (!biasApplied) {
biasCalculated = 1.0; biasCalculated = 1.0;
} }
map.put(DHRValues.BIAS, biasCalculated); map.put(DHRValues.BIAS, biasCalculated);
@ -529,7 +563,7 @@ public class RadarRecordUtil {
return Double.parseDouble(s); return Double.parseDouble(s);
} }
/** /**
* DR#11705: SCAN missing row(s) comparing to radar Comb Att Table. * DR#11705: SCAN missing row(s) comparing to radar Comb Att Table.
* *
* Error cause: RadarConstants.GRAPHIC_BLOCK as a Regular Expression * Error cause: RadarConstants.GRAPHIC_BLOCK as a Regular Expression
@ -542,27 +576,28 @@ public class RadarRecordUtil {
* @param : Graphic Block Text that may contain ">" and/or "<". * @param : Graphic Block Text that may contain ">" and/or "<".
* @return: String with ">" and/or "<" replaced by space. * @return: String with ">" and/or "<" replaced by space.
*/ */
private static String getNormalizedGBText(String text){ private static String getNormalizedGBText(String text) {
if(text == null || text.isEmpty() || ( (! text.contains(">")) && (! text.contains("<")) ) ) if (text == null || text.isEmpty()
return text; || ((!text.contains(">")) && (!text.contains("<"))))
return text;
/* /*
* contains only ">" * contains only ">"
*/ */
if( ! text.contains("<") ) if (!text.contains("<"))
return text.replaceAll(">", " "); return text.replaceAll(">", " ");
/* /*
* contains only "<" * contains only "<"
*/ */
if( ! text.contains(">") ) if (!text.contains(">"))
return text.replaceAll("<", " "); return text.replaceAll("<", " ");
/* /*
* contains both "<" and ">" * contains both "<" and ">"
*/ */
return text.replaceAll(">"," ").replaceAll("<", " "); return text.replaceAll(">", " ").replaceAll("<", " ");
} }
} }

View file

@ -30,6 +30,7 @@
# Date Ticket# Engineer Description # Date Ticket# Engineer Description
# ------------ ---------- ----------- -------------------------- # ------------ ---------- ----------- --------------------------
# 01/25/13 1447 dgilling Initial Creation. # 01/25/13 1447 dgilling Initial Creation.
# 03/19/13 1447 dgilling Merge A1 DR 21434.
# #
# #
@ -174,6 +175,32 @@ class MergeVTEC(VTECTableUtil.VTECTableUtil):
currentYear = time.gmtime(self._time)[0] currentYear = time.gmtime(self._time)[0]
terminations = ('CAN', 'EXP', 'UPG') terminations = ('CAN', 'EXP', 'UPG')
# Remove all records from the received table for events that
# have been cancelled and compacted in our active table
for rec in activeTable:
if rec['act'] not in terminations:
continue
recYear = time.gmtime(rec['issueTime'])[0]
# check if there are other related records
single = True
for rec2 in activeTable:
if self.hazardCompare(rec2, rec, compare2):
rec2Year = time.gmtime(rec2['issueTime'])[0]
if recYear == rec2Year and rec != rec2:
single = False
break
if single:
# remove all records for this event from the received table
for othRec in otherTable[::-1]:
if self.hazardCompare(rec, othRec, compare2):
othRecYear = time.gmtime(othRec['issueTime'])[0]
if othRecYear == recYear:
otherTable.remove(othRec)
# we process each entry in the other (received) table # we process each entry in the other (received) table
for othRec in otherTable: for othRec in otherTable:
# filter out all other sites we aren't interested in # filter out all other sites we aren't interested in
@ -187,20 +214,6 @@ class MergeVTEC(VTECTableUtil.VTECTableUtil):
othRecYear = time.gmtime(othRec['issueTime'])[0] othRecYear = time.gmtime(othRec['issueTime'])[0]
# check our active table for this event. if there is only one record
# and it is a canceled event, then we keep it that way.
matches = []
for rec in activeTable:
if self.hazardCompare(rec, othRec, compare2):
atRecYear = time.gmtime(rec['issueTime'])[0]
if othRecYear == atRecYear:
matches.append(rec)
if len(matches) == 1 and matches[0]['act'] in terminations:
# done with this remote record
continue
# if the remote table has a single canceled record, # if the remote table has a single canceled record,
# copy the record if needed and remove the rest for the event # copy the record if needed and remove the rest for the event
@ -245,10 +258,7 @@ class MergeVTEC(VTECTableUtil.VTECTableUtil):
if not found: if not found:
# add the remote record # add the remote record
if len(matches) > 0: missingEntriesAct.append(othRec)
newRplaceEntriesAct.append(othRec)
else:
missingEntriesAct.append(othRec)
activeTable.append(othRec) activeTable.append(othRec)
changed = True changed = True
@ -257,12 +267,8 @@ class MergeVTEC(VTECTableUtil.VTECTableUtil):
if chgRec not in changes: if chgRec not in changes:
changes.append(chgRec) changes.append(chgRec)
# done with this remote record
continue
# currently active events # currently active events
if othRec['endTime'] >= self._time: elif othRec['endTime'] >= self._time:
# find a match in otherTable that is in our active table # find a match in otherTable that is in our active table
# and replace it if newer, but only if it is from the same # and replace it if newer, but only if it is from the same
@ -289,8 +295,8 @@ class MergeVTEC(VTECTableUtil.VTECTableUtil):
# if a match wasn't found, then we may need to add the record # if a match wasn't found, then we may need to add the record
# into our active table # into our active table
if found == 0: if found == 0:
activeTable.append(othRec) #add the record
missingEntriesAct.append(othRec) missingEntriesAct.append(othRec)
activeTable.append(othRec) #add the record
chgRec = (othRec['officeid'], othRec['pil'], othRec['phensig']) chgRec = (othRec['officeid'], othRec['pil'], othRec['phensig'])
if chgRec not in changes: if chgRec not in changes:
changes.append(chgRec) changes.append(chgRec)
@ -300,7 +306,7 @@ class MergeVTEC(VTECTableUtil.VTECTableUtil):
othRecYear = time.gmtime(othRec['issueTime'])[0] othRecYear = time.gmtime(othRec['issueTime'])[0]
if currentYear != othRecYear: if currentYear != othRecYear:
continue #only care about this years continue #only care about this year
# find the highest ETN for the current year per phen/sig # find the highest ETN for the current year per phen/sig
# in active table and compare to the other table. If found # in active table and compare to the other table. If found
@ -325,8 +331,8 @@ class MergeVTEC(VTECTableUtil.VTECTableUtil):
#if phen/sig not found, then add it #if phen/sig not found, then add it
if maxETN is None: if maxETN is None:
activeTable.append(othRec) #add the record
missingEntriesPast.append(othRec) missingEntriesPast.append(othRec)
activeTable.append(othRec) #add the record
chgRec = (othRec['officeid'], othRec['pil'], othRec['phensig']) chgRec = (othRec['officeid'], othRec['pil'], othRec['phensig'])
if chgRec not in changes: if chgRec not in changes:
changes.append(chgRec) changes.append(chgRec)

View file

@ -228,7 +228,7 @@
version="0.0.0"/> version="0.0.0"/>
<plugin <plugin
id="org.apache.tools.bzip2" id="org.itadaki.bzip2"
download-size="0" download-size="0"
install-size="0" install-size="0"
version="0.0.0"/> version="0.0.0"/>

View file

@ -70,6 +70,7 @@ import com.raytheon.uf.edex.plugin.grid.dao.GridDao;
* ------------ ---------- ----------- -------------------------- * ------------ ---------- ----------- --------------------------
* Dec 3, 2010 rjpeter Initial creation * Dec 3, 2010 rjpeter Initial creation
* Mar 07, 2013 1587 bsteffen rewrite static data generation. * Mar 07, 2013 1587 bsteffen rewrite static data generation.
* Mar 14, 2013 1587 bsteffen Fix persisting to datastore.
* *
* </pre> * </pre>
* *
@ -267,7 +268,7 @@ public class StaticDataGenerator {
for (GridRecord staticRecord : datastoreRecords) { for (GridRecord staticRecord : datastoreRecords) {
populateMessageData(staticRecord); populateMessageData(staticRecord);
} }
dao.persistToHDF5(databaseRecords.toArray(new PluginDataObject[0])); dao.persistToHDF5(datastoreRecords.toArray(new PluginDataObject[0]));
} }
if (!databaseRecords.isEmpty()) { if (!databaseRecords.isEmpty()) {
dao.persistToDatabase(databaseRecords dao.persistToDatabase(databaseRecords
@ -423,7 +424,8 @@ public class StaticDataGenerator {
datasets = Collections.emptyList(); datasets = Collections.emptyList();
} }
} }
if (datasets.contains(missing)) { if (!datasets.contains(staticRecord.getParameter()
.getAbbreviation())) {
missing.add(staticRecord); missing.add(staticRecord);
} }
} }

View file

@ -8,8 +8,8 @@
<bean id="ffmpThreadPool" <bean id="ffmpThreadPool"
class="org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor"> class="org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor">
<property name="corePoolSize" value="2" /> <property name="corePoolSize" value="1" />
<property name="maxPoolSize" value="4" /> <property name="maxPoolSize" value="1" />
<property name="keepAliveSeconds" value="60000" /> <property name="keepAliveSeconds" value="60000" />
</bean> </bean>

View file

@ -730,11 +730,21 @@ public class FFMPGenerator extends CompositeProductGenerator implements
} }
} }
} }
}
if (!source.getSourceType().equals(
SOURCE_TYPE.GUIDANCE.getSourceType())) {
String sourceSiteDataKey = getSourceSiteDataKey(source,
dataKey, ffmpRec);
ffmpData.remove(sourceSiteDataKey);
statusHandler.info("Removing from memory: "+sourceSiteDataKey);
}
} // ffmp.isFFTI
} // record not null } // record not null
} // end sitekey for loop } // end sitekey for loop
} // end datakey loop } // end datakey loop
} // end process } // end process
} }
/** /**
@ -1816,6 +1826,7 @@ public class FFMPGenerator extends CompositeProductGenerator implements
} }
ffmpData.remove(siteDataKey); ffmpData.remove(siteDataKey);
statusHandler.info("Removing from memory: "+siteDataKey);
accumulator.setReset(false); accumulator.setReset(false);
writeFFTIData(siteDataKey, accumulator); writeFFTIData(siteDataKey, accumulator);
} }

View file

@ -66,6 +66,7 @@ import com.raytheon.uf.edex.database.plugin.PluginDao;
* Date Ticket# Engineer Description * Date Ticket# Engineer Description
* ------------ ---------- ----------- -------------------------- * ------------ ---------- ----------- --------------------------
* 4/7/09 1994 bphillip Initial Creation * 4/7/09 1994 bphillip Initial Creation
* Mar 14, 2013 1587 bsteffen Fix static data persisting to datastore.
* *
* </pre> * </pre>
* *
@ -99,10 +100,13 @@ public class GridDao extends PluginDao {
long[] sizes = new long[] { location.getNx(), location.getNy() }; long[] sizes = new long[] { location.getNx(), location.getNy() };
String abbrev = gridRec.getParameter().getAbbreviation(); String abbrev = gridRec.getParameter().getAbbreviation();
String group = gridRec.getDataURI(); String group = gridRec.getDataURI();
String datasetName = "Data";
if (GridPathProvider.STATIC_PARAMETERS.contains(abbrev)) { if (GridPathProvider.STATIC_PARAMETERS.contains(abbrev)) {
group = "/" + location.getId(); group = "/" + location.getId();
datasetName = abbrev;
} }
AbstractStorageRecord storageRecord = new FloatDataRecord("Data", AbstractStorageRecord storageRecord = new FloatDataRecord(
datasetName,
group, (float[]) messageData, 2, sizes); group, (float[]) messageData, 2, sizes);
storageRecord.setCorrelationObject(gridRec); storageRecord.setCorrelationObject(gridRec);

97
m Normal file
View file

@ -0,0 +1,97 @@
M cave/build/static/common/cave/etc/gfe/userPython/procedures/TCMWindTool.py
M cave/build/static/common/cave/etc/gfe/userPython/procedures/TCMWindTool.py
M cave/build/static/common/cave/etc/gfe/userPython/utilities/SmartScript.py
M cave/build/static/common/cave/etc/gfe/userPython/utilities/SmartScript.py
M cave/com.raytheon.uf.viz.cots.feature/feature.xml
M cave/com.raytheon.uf.viz.cots.feature/feature.xml
M cave/com.raytheon.uf.viz.monitor.ffmp/src/com/raytheon/uf/viz/monitor/ffmp/ui/rsc/FFMPDataGenerator.java
M cave/com.raytheon.uf.viz.monitor.ffmp/src/com/raytheon/uf/viz/monitor/ffmp/ui/rsc/FFMPDataGenerator.java
M cave/com.raytheon.viz.mpe/src/com/raytheon/viz/mpe/core/RegenHrFlds.java
M cave/com.raytheon.viz.mpe/src/com/raytheon/viz/mpe/core/RegenHrFlds.java
M cave/com.raytheon.viz.mpe.ui/plugin.xml
M cave/com.raytheon.viz.mpe.ui/plugin.xml
M cave/com.raytheon.viz.mpe.ui/src/com/raytheon/viz/mpe/MPECommandConstants.java
M cave/com.raytheon.viz.mpe.ui/src/com/raytheon/viz/mpe/MPECommandConstants.java
M cave/com.raytheon.viz.mpe.ui/src/com/raytheon/viz/mpe/ui/actions/ShowDisplay7x7.java
M cave/com.raytheon.viz.mpe.ui/src/com/raytheon/viz/mpe/ui/actions/ShowDisplay7x7.java
M cave/com.raytheon.viz.mpe.ui/src/com/raytheon/viz/mpe/ui/BaseFieldsPopulator.java
M cave/com.raytheon.viz.mpe.ui/src/com/raytheon/viz/mpe/ui/BaseFieldsPopulator.java
M cave/com.raytheon.viz.mpe.ui/src/com/raytheon/viz/mpe/ui/MPEDisplayManager.java
M cave/com.raytheon.viz.mpe.ui/src/com/raytheon/viz/mpe/ui/MPEDisplayManager.java
M cave/com.raytheon.viz.mpe.ui/src/com/raytheon/viz/mpe/ui/rsc/MPEGageResource.java
M cave/com.raytheon.viz.mpe.ui/src/com/raytheon/viz/mpe/ui/rsc/MPEGageResource.java
M cave/com.raytheon.viz.radar/src/com/raytheon/viz/radar/DefaultVizRadarRecord.java
M cave/com.raytheon.viz.radar/src/com/raytheon/viz/radar/DefaultVizRadarRecord.java
M cave/com.raytheon.viz.radar/src/com/raytheon/viz/radar/RadarRecordDataRetriever.java
M cave/com.raytheon.viz.radar/src/com/raytheon/viz/radar/RadarRecordDataRetriever.java
M cave/com.raytheon.viz.radar/src/com/raytheon/viz/radar/ui/xy/RadarXYResource.java
M cave/com.raytheon.viz.radar/src/com/raytheon/viz/radar/ui/xy/RadarXYResource.java
M cave/com.raytheon.viz.warngen/src/com/raytheon/viz/warngen/text/AbstractLockingBehavior.java
M cave/com.raytheon.viz.warngen/src/com/raytheon/viz/warngen/text/FollowUpLockingBehavior.java
M cave/com.raytheon.viz.warngen/src/com/raytheon/viz/warngen/text/ICommonPatterns.java
M cave/com.raytheon.viz.warngen/src/com/raytheon/viz/warngen/util/FipsUtil.java
M cave/com.raytheon.viz.warngen/src/com/raytheon/viz/warngen/util/FollowUpUtil.java
M edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/extremeWindWarningFollowup.vm
M edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/significantWeatherAdvisory.vm
M edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/VM_global_library.vm
M edexOsgi/com.raytheon.edex.plugin.gfe/src/com/raytheon/edex/plugin/gfe/db/dao/GFEDao.java
M edexOsgi/com.raytheon.edex.plugin.gfe/src/com/raytheon/edex/plugin/gfe/db/dao/GFEDao.java
M edexOsgi/com.raytheon.edex.plugin.gfe/src/com/raytheon/edex/plugin/gfe/server/database/GridDatabase.java
M edexOsgi/com.raytheon.edex.plugin.gfe/src/com/raytheon/edex/plugin/gfe/server/database/GridDatabase.java
M edexOsgi/com.raytheon.edex.plugin.gfe/src/com/raytheon/edex/plugin/gfe/server/database/IFPGridDatabase.java
M edexOsgi/com.raytheon.edex.plugin.gfe/src/com/raytheon/edex/plugin/gfe/server/database/IFPGridDatabase.java
M edexOsgi/com.raytheon.edex.plugin.gfe/src/com/raytheon/edex/plugin/gfe/server/GridParm.java
M edexOsgi/com.raytheon.edex.plugin.gfe/src/com/raytheon/edex/plugin/gfe/server/GridParm.java
M edexOsgi/com.raytheon.edex.plugin.gfe/src/com/raytheon/edex/plugin/gfe/server/GridParmManager.java
M edexOsgi/com.raytheon.edex.plugin.gfe/src/com/raytheon/edex/plugin/gfe/server/GridParmManager.java
M edexOsgi/com.raytheon.edex.plugin.radar/META-INF/MANIFEST.MF
M edexOsgi/com.raytheon.edex.plugin.radar/META-INF/MANIFEST.MF
M edexOsgi/com.raytheon.edex.plugin.radar/src/com/raytheon/edex/plugin/radar/dao/RadarDao.java
M edexOsgi/com.raytheon.edex.plugin.radar/src/com/raytheon/edex/plugin/radar/dao/RadarDao.java
M edexOsgi/com.raytheon.edex.plugin.radar/src/com/raytheon/edex/plugin/radar/level3/Level3BaseRadar.java
M edexOsgi/com.raytheon.edex.plugin.radar/src/com/raytheon/edex/plugin/radar/level3/Level3BaseRadar.java
M edexOsgi/com.raytheon.edex.plugin.radar/src/com/raytheon/edex/plugin/radar/RadarDecoder.java
M edexOsgi/com.raytheon.edex.plugin.radar/src/com/raytheon/edex/plugin/radar/RadarDecoder.java
M edexOsgi/com.raytheon.edex.plugin.radar/src/com/raytheon/edex/plugin/radar/util/RadarSpatialUtil.java
M edexOsgi/com.raytheon.edex.plugin.radar/src/com/raytheon/edex/plugin/radar/util/RadarSpatialUtil.java
M edexOsgi/com.raytheon.edex.rpgenvdata/META-INF/MANIFEST.MF
M edexOsgi/com.raytheon.edex.rpgenvdata/META-INF/MANIFEST.MF
M edexOsgi/com.raytheon.edex.rpgenvdata/src/com/raytheon/edex/rpgenvdata/RPGEnvironmentalDataManager.java
M edexOsgi/com.raytheon.edex.rpgenvdata/src/com/raytheon/edex/rpgenvdata/RPGEnvironmentalDataManager.java
M edexOsgi/com.raytheon.uf.common.dataplugin.radar/META-INF/MANIFEST.MF
M edexOsgi/com.raytheon.uf.common.dataplugin.radar/META-INF/MANIFEST.MF
M edexOsgi/com.raytheon.uf.common.dataplugin.radar/src/com/raytheon/uf/common/dataplugin/radar/RadarRecord.java
M edexOsgi/com.raytheon.uf.common.dataplugin.radar/src/com/raytheon/uf/common/dataplugin/radar/RadarRecord.java
M edexOsgi/com.raytheon.uf.common.dataplugin.radar/src/com/raytheon/uf/common/dataplugin/radar/RadarStoredData.java
M edexOsgi/com.raytheon.uf.common.dataplugin.radar/src/com/raytheon/uf/common/dataplugin/radar/RadarStoredData.java
M edexOsgi/com.raytheon.uf.common.dataplugin.radar/src/com/raytheon/uf/common/dataplugin/radar/util/RadarDataRetriever.java
M edexOsgi/com.raytheon.uf.common.dataplugin.radar/src/com/raytheon/uf/common/dataplugin/radar/util/RadarDataRetriever.java
M edexOsgi/com.raytheon.uf.common.dataplugin.radar/src/com/raytheon/uf/common/dataplugin/radar/util/RadarRecordUtil.java
M edexOsgi/com.raytheon.uf.common.dataplugin.radar/src/com/raytheon/uf/common/dataplugin/radar/util/RadarRecordUtil.java
M edexOsgi/com.raytheon.uf.edex.activetable/utility/common_static/base/vtec/MergeVTEC.py
M edexOsgi/com.raytheon.uf.edex.activetable/utility/common_static/base/vtec/MergeVTEC.py
M edexOsgi/com.raytheon.uf.edex.cots.feature/feature.xml
M edexOsgi/com.raytheon.uf.edex.cots.feature/feature.xml
M edexOsgi/com.raytheon.uf.edex.grid.staticdata/src/com/raytheon/uf/edex/grid/staticdata/StaticDataGenerator.java
M edexOsgi/com.raytheon.uf.edex.plugin.ffmp/res/spring/ffmp-ingest.xml
M edexOsgi/com.raytheon.uf.edex.plugin.ffmp/src/com/raytheon/uf/edex/plugin/ffmp/FFMPGenerator.java
M edexOsgi/com.raytheon.uf.edex.plugin.grid/src/com/raytheon/uf/edex/plugin/grid/dao/GridDao.java
M ncep/gov.noaa.nws.ncep.viz.rsc.ncradar/src/gov/noaa/nws/ncep/viz/rsc/ncradar/DefaultVizRadarRecord.java
M ncep/gov.noaa.nws.ncep.viz.rsc.ncradar/src/gov/noaa/nws/ncep/viz/rsc/ncradar/DefaultVizRadarRecord.java
M RadarServer/build.rcm/build.xml
M RadarServer/build.rcm/build.xml
M RadarServer/build.rcm/customTargets.xml
M RadarServer/build.rcm/customTargets.xml
M RadarServer/build.rcm/.project
M RadarServer/build.rcm/.project
M RadarServer/com.raytheon.rcm.feature/feature.xml
M RadarServer/com.raytheon.rcm.feature/feature.xml
M RadarServer/com.raytheon.rcm.server/META-INF/MANIFEST.MF
M RadarServer/com.raytheon.rcm.server/META-INF/MANIFEST.MF
M RadarServer/com.raytheon.rcm.server.mq/META-INF/MANIFEST.MF
M RadarServer/com.raytheon.rcm.server.mq/META-INF/MANIFEST.MF
M RadarServer/com.raytheon.rcm.server.mq/src/com/raytheon/rcm/server/dataarchive/DataArchiveEndpoint.java
M RadarServer/com.raytheon.rcm.server.mq/src/com/raytheon/rcm/server/dataarchive/DataArchiveEndpoint.java
M RadarServer/com.raytheon.rcm.server/src/com/raytheon/rcm/server/Awips2Endpoint.java
M RadarServer/com.raytheon.rcm.server/src/com/raytheon/rcm/server/Awips2Endpoint.java
M rpms/build/i386/build.sh

55
mods Normal file
View file

@ -0,0 +1,55 @@
M cave/build/static/common/cave/etc/gfe/userPython/procedures/TCMWindTool.py
M cave/build/static/common/cave/etc/gfe/userPython/utilities/SmartScript.py
M cave/com.raytheon.uf.viz.cots.feature/feature.xml
M cave/com.raytheon.uf.viz.monitor.ffmp/src/com/raytheon/uf/viz/monitor/ffmp/ui/rsc/FFMPDataGenerator.java
M cave/com.raytheon.viz.mpe/src/com/raytheon/viz/mpe/core/RegenHrFlds.java
M cave/com.raytheon.viz.mpe.ui/plugin.xml
M cave/com.raytheon.viz.mpe.ui/src/com/raytheon/viz/mpe/MPECommandConstants.java
M cave/com.raytheon.viz.mpe.ui/src/com/raytheon/viz/mpe/ui/actions/ShowDisplay7x7.java
M cave/com.raytheon.viz.mpe.ui/src/com/raytheon/viz/mpe/ui/BaseFieldsPopulator.java
M cave/com.raytheon.viz.mpe.ui/src/com/raytheon/viz/mpe/ui/MPEDisplayManager.java
M cave/com.raytheon.viz.mpe.ui/src/com/raytheon/viz/mpe/ui/rsc/MPEGageResource.java
M cave/com.raytheon.viz.radar/src/com/raytheon/viz/radar/DefaultVizRadarRecord.java
M cave/com.raytheon.viz.radar/src/com/raytheon/viz/radar/RadarRecordDataRetriever.java
M cave/com.raytheon.viz.radar/src/com/raytheon/viz/radar/ui/xy/RadarXYResource.java
M cave/com.raytheon.viz.warngen/src/com/raytheon/viz/warngen/text/AbstractLockingBehavior.java
M cave/com.raytheon.viz.warngen/src/com/raytheon/viz/warngen/text/FollowUpLockingBehavior.java
M cave/com.raytheon.viz.warngen/src/com/raytheon/viz/warngen/text/ICommonPatterns.java
M cave/com.raytheon.viz.warngen/src/com/raytheon/viz/warngen/util/FipsUtil.java
M cave/com.raytheon.viz.warngen/src/com/raytheon/viz/warngen/util/FollowUpUtil.java
M edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/extremeWindWarningFollowup.vm
M edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/significantWeatherAdvisory.vm
M edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/VM_global_library.vm
M edexOsgi/com.raytheon.edex.plugin.gfe/src/com/raytheon/edex/plugin/gfe/db/dao/GFEDao.java
M edexOsgi/com.raytheon.edex.plugin.gfe/src/com/raytheon/edex/plugin/gfe/server/database/GridDatabase.java
M edexOsgi/com.raytheon.edex.plugin.gfe/src/com/raytheon/edex/plugin/gfe/server/database/IFPGridDatabase.java
M edexOsgi/com.raytheon.edex.plugin.gfe/src/com/raytheon/edex/plugin/gfe/server/GridParm.java
M edexOsgi/com.raytheon.edex.plugin.gfe/src/com/raytheon/edex/plugin/gfe/server/GridParmManager.java
M edexOsgi/com.raytheon.edex.plugin.radar/META-INF/MANIFEST.MF
M edexOsgi/com.raytheon.edex.plugin.radar/src/com/raytheon/edex/plugin/radar/dao/RadarDao.java
M edexOsgi/com.raytheon.edex.plugin.radar/src/com/raytheon/edex/plugin/radar/level3/Level3BaseRadar.java
M edexOsgi/com.raytheon.edex.plugin.radar/src/com/raytheon/edex/plugin/radar/RadarDecoder.java
M edexOsgi/com.raytheon.edex.plugin.radar/src/com/raytheon/edex/plugin/radar/util/RadarSpatialUtil.java
M edexOsgi/com.raytheon.edex.rpgenvdata/META-INF/MANIFEST.MF
M edexOsgi/com.raytheon.edex.rpgenvdata/src/com/raytheon/edex/rpgenvdata/RPGEnvironmentalDataManager.java
M edexOsgi/com.raytheon.uf.common.dataplugin.radar/META-INF/MANIFEST.MF
M edexOsgi/com.raytheon.uf.common.dataplugin.radar/src/com/raytheon/uf/common/dataplugin/radar/RadarRecord.java
M edexOsgi/com.raytheon.uf.common.dataplugin.radar/src/com/raytheon/uf/common/dataplugin/radar/RadarStoredData.java
M edexOsgi/com.raytheon.uf.common.dataplugin.radar/src/com/raytheon/uf/common/dataplugin/radar/util/RadarDataRetriever.java
M edexOsgi/com.raytheon.uf.common.dataplugin.radar/src/com/raytheon/uf/common/dataplugin/radar/util/RadarRecordUtil.java
M edexOsgi/com.raytheon.uf.edex.activetable/utility/common_static/base/vtec/MergeVTEC.py
M edexOsgi/com.raytheon.uf.edex.cots.feature/feature.xml
M edexOsgi/com.raytheon.uf.edex.grid.staticdata/src/com/raytheon/uf/edex/grid/staticdata/StaticDataGenerator.java
M edexOsgi/com.raytheon.uf.edex.plugin.ffmp/res/spring/ffmp-ingest.xml
M edexOsgi/com.raytheon.uf.edex.plugin.ffmp/src/com/raytheon/uf/edex/plugin/ffmp/FFMPGenerator.java
M edexOsgi/com.raytheon.uf.edex.plugin.grid/src/com/raytheon/uf/edex/plugin/grid/dao/GridDao.java
M ncep/gov.noaa.nws.ncep.viz.rsc.ncradar/src/gov/noaa/nws/ncep/viz/rsc/ncradar/DefaultVizRadarRecord.java
M RadarServer/build.rcm/build.xml
M RadarServer/build.rcm/customTargets.xml
M RadarServer/build.rcm/.project
M RadarServer/com.raytheon.rcm.feature/feature.xml
M RadarServer/com.raytheon.rcm.server/META-INF/MANIFEST.MF
M RadarServer/com.raytheon.rcm.server.mq/META-INF/MANIFEST.MF
M RadarServer/com.raytheon.rcm.server.mq/src/com/raytheon/rcm/server/dataarchive/DataArchiveEndpoint.java
M RadarServer/com.raytheon.rcm.server/src/com/raytheon/rcm/server/Awips2Endpoint.java
M rpms/build/i386/build.sh

View file

@ -71,9 +71,6 @@ public class DefaultVizRadarRecord extends VizRadarRecord {
if (object.getRawShortData() != null) { if (object.getRawShortData() != null) {
size += object.getRawData().length * 2; size += object.getRawData().length * 2;
} }
if (object.getAlphanumericValues() != null) {
size += object.getAlphanumericValues().length() * 2;
}
if (object.getAngleData() != null) { if (object.getAngleData() != null) {
size += object.getAngleData().length * 4; size += object.getAngleData().length * 4;
} }

View file

@ -333,6 +333,7 @@ fi
if [ "${1}" = "-viz" ]; then if [ "${1}" = "-viz" ]; then
buildRPM "awips2" buildRPM "awips2"
buildCAVE buildCAVE
buildRPM "awips2-rcm"
if [ $? -ne 0 ]; then if [ $? -ne 0 ]; then
exit 1 exit 1
fi fi

View file

@ -0,0 +1,418 @@
#!/bin/bash
function buildRPM()
{
# Arguments:
# ${1} == the name of the rpm.
lookupRPM "${1}"
if [ $? -ne 0 ]; then
echo "ERROR: '${1}' is not a recognized AWIPS II RPM."
exit 1
fi
/usr/bin/rpmbuild -ba \
--define '_topdir %(echo ${AWIPSII_TOP_DIR})' \
--define '_baseline_workspace %(echo ${WORKSPACE})' \
--define '_uframe_eclipse %(echo ${UFRAME_ECLIPSE})' \
--define '_awipscm_share %(echo ${AWIPSCM_SHARE})' \
--define '_build_root %(echo ${AWIPSII_BUILD_ROOT})' \
--define '_component_version %(echo ${AWIPSII_VERSION})' \
--define '_component_release %(echo ${AWIPSII_RELEASE})' \
--define '_component_build_date %(echo ${COMPONENT_BUILD_DATE})' \
--define '_component_build_time %(echo ${COMPONENT_BUILD_TIME})' \
--define '_component_build_system %(echo ${COMPONENT_BUILD_SYSTEM})' \
--buildroot ${AWIPSII_BUILD_ROOT} \
${RPM_SPECIFICATION}/component.spec
if [ $? -ne 0 ]; then
echo "ERROR: Failed to build RPM ${1}."
exit 1
fi
return 0
}
# This script will build all of the 32-bit rpms.
# Ensure that we are on a machine with the correct architecture.
architecture=`uname -i`
if [ ! "${architecture}" = "i386" ]; then
echo "ERROR: This build can only be performed on a 32-bit Operating System."
exit 1
fi
# Determine which directory we are running from.
path_to_script=`readlink -f $0`
dir=$(dirname $path_to_script)
common_dir=`cd ${dir}/../common; pwd;`
if [ $? -ne 0 ]; then
echo "ERROR: Unable to find the common functions directory."
exit 1
fi
# source the common functions.
source ${common_dir}/lookupRPM.sh
if [ $? -ne 0 ]; then
echo "ERROR: Unable to source the common functions."
exit 1
fi
source ${common_dir}/usage.sh
if [ $? -ne 0 ]; then
echo "ERROR: Unable to source the common functions."
exit 1
fi
source ${common_dir}/rpms.sh
if [ $? -ne 0 ]; then
echo "ERROR: Unable to source the common functions."
exit 1
fi
source ${common_dir}/systemInfo.sh
if [ $? -ne 0 ]; then
echo "ERROR: Unable to retrieve the system information."
exit 1
fi
# prepare the build environment.
source ${dir}/buildEnvironment.sh
if [ $? -ne 0 ]; then
echo "ERROR: Unable to prepare the build environment."
exit 1
fi
export LIGHTNING=true
# Determine if the optional '-nobinlightning' argument has been specified.
if [ "${2}" = "-nobinlightning" ]; then
LIGHTNING=false
fi
if [ "${1}" = "-python-qpid" ]; then
buildRPM "awips2"
buildRPM "awips2-python-qpid"
buildRPM "awips2-python"
buildRPM "awips2-python-cherrypy"
buildRPM "awips2-python-dynamicserialize"
buildRPM "awips2-python-nose"
buildRPM "awips2-python-numpy"
buildRPM "awips2-python-h5py"
buildRPM "awips2-python-jimporter"
buildRPM "awips2-python-matplotlib"
buildRPM "awips2-python-pil"
buildRPM "awips2-python-pmw"
buildRPM "awips2-python-pupynere"
buildRPM "awips2-python-scientific"
buildRPM "awips2-python-scipy"
buildRPM "awips2-python-tables"
buildRPM "awips2-python-thrift"
buildRPM "awips2-python-tpg"
buildRPM "awips2-python-ufpy"
buildRPM "awips2-python-werkzeug"
buildRPM "awips2-python-pygtk"
buildRPM "awips2-python-pycairo"
if [ $? -ne 0 ]; then
exit 1
fi
buildQPID
if [ $? -ne 0 ]; then
exit 1
fi
#buildRPM "awips2-ant"
#unpackHttpdPypies
if [ $? -ne 0 ]; then
exit 1
fi
#buildRPM "awips2-httpd-pypies"
#buildRPM "awips2-java"
#buildRPM "awips2-ldm"
#buildRPM "awips2-postgresql"
#buildRPM "awips2-psql"
#buildRPM "awips2-tools"
buildRPM "awips2-python-shapely"
exit 0
fi
if [ "${1}" = "-delta" ]; then
buildCAVE
if [ $? -ne 0 ]; then
exit 1
fi
buildRPM "awips2-alertviz"
buildEDEX
if [ $? -ne 0 ]; then
exit 1
fi
buildRPM "awips2"
buildRPM "Installer.ncep-database"
buildRPM "awips2-gfesuite-client"
buildRPM "awips2-gfesuite-server"
buildRPM "awips2-python-dynamicserialize"
buildRPM "awips2-python-ufpy"
buildRPM "awips2-python-qpid"
buildRPM "awips2-adapt-native"
buildRPM "awips2-aviation-shared"
buildRPM "awips2-cli"
buildRPM "awips2-database"
buildRPM "awips2-database-server-configuration"
buildRPM "awips2-database-standalone-configuration"
buildRPM "awips2-data.hdf5-gfe.climo"
buildRPM "awips2-hydroapps-shared"
buildRPM "awips2-localapps-environment"
buildRPM "awips2-maps-database"
buildRPM "awips2-notification"
buildRPM "awips2-pypies"
buildRPM "awips2-data.hdf5-topo"
buildRPM "awips2-data.gfe"
buildRPM "awips2-rcm"
buildRPM "awips2-edex-environment"
buildLocalizationRPMs
if [ $? -ne 0 ]; then
exit 1
fi
exit 0
fi
if [ "${1}" = "-full" ]; then
buildCAVE
if [ $? -ne 0 ]; then
exit 1
fi
buildRPM "Installer.ncep-database"
buildRPM "awips2-alertviz"
buildEDEX
if [ $? -ne 0 ]; then
exit 1
fi
buildRPM "awips2-python"
buildRPM "awips2-python-cherrypy"
buildRPM "awips2-python-dynamicserialize"
buildRPM "awips2-python-h5py"
buildRPM "awips2-python-jimporter"
buildRPM "awips2-python-matplotlib"
buildRPM "awips2-python-nose"
buildRPM "awips2-python-numpy"
buildRPM "awips2-python-pil"
buildRPM "awips2-python-pmw"
buildRPM "awips2-python-pupynere"
buildRPM "awips2-python-qpid"
buildRPM "awips2-python-scientific"
buildRPM "awips2-python-scipy"
buildRPM "awips2-python-tables"
buildRPM "awips2-python-thrift"
buildRPM "awips2-python-tpg"
buildRPM "awips2-python-ufpy"
buildRPM "awips2-python-werkzeug"
buildRPM "awips2-python-pygtk"
buildRPM "awips2-python-pycairo"
buildRPM "awips2"
buildRPM "awips2-adapt-native"
buildRPM "awips2-aviation-shared"
buildRPM "awips2-cli"
buildRPM "awips2-database"
buildRPM "awips2-database-server-configuration"
buildRPM "awips2-database-standalone-configuration"
buildRPM "awips2-data.hdf5-gfe.climo"
buildRPM "awips2-data.gfe"
buildRPM "awips2-gfesuite-client"
buildRPM "awips2-gfesuite-server"
buildRPM "awips2-hydroapps-shared"
buildRPM "awips2-localapps-environment"
buildRPM "awips2-maps-database"
buildRPM "awips2-notification"
buildRPM "awips2-pypies"
buildRPM "awips2-data.hdf5-topo"
buildRPM "awips2-rcm"
buildLocalizationRPMs
if [ $? -ne 0 ]; then
exit 1
fi
buildQPID
if [ $? -ne 0 ]; then
exit 1
fi
buildRPM "awips2-ant"
unpackHttpdPypies
if [ $? -ne 0 ]; then
exit 1
fi
buildRPM "awips2-httpd-pypies"
buildRPM "awips2-java"
#buildRPM "awips2-ldm"
buildRPM "awips2-postgresql"
buildRPM "awips2-psql"
buildRPM "awips2-tools"
buildRPM "awips2-edex-environment"
buildRPM "awips2-openfire"
buildRPM "awips2-httpd-collaboration"
buildRPM "awips2-python-shapely"
exit 0
fi
if [ "${1}" = "-ade" ]; then
buildRPM "awips2-eclipse"
buildRPM "awips2-java"
buildRPM "awips2-ant"
buildRPM "awips2-python"
buildRPM "awips2-python-cherrypy"
buildRPM "awips2-python-dynamicserialize"
buildRPM "awips2-python-h5py"
buildRPM "awips2-python-jimporter"
buildRPM "awips2-python-matplotlib"
buildRPM "awips2-python-nose"
buildRPM "awips2-python-numpy"
buildRPM "awips2-python-pil"
buildRPM "awips2-python-pmw"
buildRPM "awips2-python-pupynere"
buildRPM "awips2-python-qpid"
buildRPM "awips2-python-scientific"
buildRPM "awips2-python-scipy"
buildRPM "awips2-python-tables"
buildRPM "awips2-python-thrift"
buildRPM "awips2-python-tpg"
buildRPM "awips2-python-ufpy"
buildRPM "awips2-python-werkzeug"
buildRPM "awips2-python-pygtk"
buildRPM "awips2-python-pycairo"
buildRPM "awips2-python-shapely"
buildQPID -ade
if [ $? -ne 0 ]; then
exit 1
fi
# Package the ade.
# Create the containing directory.
ade_directory="awips2-ade-${AWIPSII_VERSION}-${AWIPSII_RELEASE}"
if [ -d ${WORKSPACE}/${ade_directory} ]; then
rm -rf ${WORKSPACE}/${ade_directory}
if [ $? -ne 0 ]; then
exit 1
fi
fi
mkdir -p ${WORKSPACE}/${ade_directory}
if [ $? -ne 0 ]; then
exit 1
fi
# Copy the rpms to the directory.
cp -v ${AWIPSII_TOP_DIR}/RPMS/i386/* \
${AWIPSII_TOP_DIR}/RPMS/noarch/* \
${WORKSPACE}/${ade_directory}
if [ $? -ne 0 ]; then
exit 1
fi
awips2_ade_directory="${WORKSPACE}/rpms/awips2.ade"
# Copy the install and uninstall script to the directory.
cp -v ${awips2_ade_directory}/tar.ade/scripts/*.sh \
${WORKSPACE}/${ade_directory}
if [ $? -ne 0 ]; then
exit 1
fi
# Tar the directory.
pushd . > /dev/null 2>&1
cd ${WORKSPACE}
tar -cvf ${ade_directory}.tar ${ade_directory}
popd > /dev/null 2>&1
RC=$?
if [ ${RC} -ne 0 ]; then
exit 1
fi
exit 0
fi
if [ "${1}" = "-viz" ]; then
buildRPM "awips2"
buildCAVE
if [ $? -ne 0 ]; then
exit 1
fi
buildRPM "awips2-alertviz"
exit 0
fi
if [ "${1}" = "-edex" ]; then
buildRPM "awips2"
buildRPM "awips2-cli"
buildRPM "awips2-gfesuite-client"
buildRPM "awips2-gfesuite-server"
buildRPM "Installer.ncep-database"
buildEDEX
if [ $? -ne 0 ]; then
exit 1
fi
exit 0
fi
if [ "${1}" = "-qpid" ]; then
buildQPID
if [ $? -ne 0 ]; then
exit 1
fi
exit 0
fi
if [ "${1}" = "-ldm" ]; then
# Ensure that the user has root privileges.
if [ ! ${UID} = 0 ]; then
echo "ERROR: You must have root privileges to build ldm."
exit 1
fi
buildRPM "awips2-ldm"
exit 0
fi
if [ "${1}" = "-package" ]; then
repository_directory="awips2-repository-${AWIPSII_VERSION}-${AWIPSII_RELEASE}"
if [ -d ${WORKSPACE}/${repository_directory} ]; then
rm -rf ${WORKSPACE}/${repository_directory}
if [ $? -ne 0 ]; then
exit 1
fi
fi
mkdir -p ${WORKSPACE}/${repository_directory}/${AWIPSII_VERSION}-${AWIPSII_RELEASE}
if [ $? -ne 0 ]; then
exit 1
fi
cp -r ${AWIPSII_TOP_DIR}/RPMS/* \
${WORKSPACE}/${repository_directory}/${AWIPSII_VERSION}-${AWIPSII_RELEASE}
if [ $? -ne 0 ]; then
exit 1
fi
rpms_directory="${WORKSPACE}/rpms"
comps_xml="${rpms_directory}/common/yum/arch.x86/comps.xml"
cp -v ${comps_xml} ${WORKSPACE}/${repository_directory}
if [ $? -ne 0 ]; then
exit 1
fi
pushd . > /dev/null
cd ${WORKSPACE}
tar -cvf ${repository_directory}.tar ${repository_directory}
RC=$?
popd > /dev/null
if [ ${RC} -ne 0 ]; then
exit 1
fi
exit 0
fi
usage
exit 0

24
x Normal file
View file

@ -0,0 +1,24 @@
cave/com.raytheon.viz.warngen/src/com/raytheon/viz/warngen/text/AbstractLockingBehavior.java
cave/com.raytheon.viz.warngen/src/com/raytheon/viz/warngen/text/FollowUpLockingBehavior.java
cave/com.raytheon.viz.warngen/src/com/raytheon/viz/warngen/text/ICommonPatterns.java
cave/com.raytheon.viz.warngen/src/com/raytheon/viz/warngen/util/FipsUtil.java
cave/com.raytheon.viz.warngen/src/com/raytheon/viz/warngen/util/FollowUpUtil.java
edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/extremeWindWarningFollowup.vm
edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/significantWeatherAdvisory.vm
edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/VM_global_library.vm
edexOsgi/com.raytheon.uf.edex.grid.staticdata/src/com/raytheon/uf/edex/grid/staticdata/StaticDataGenerator.java
edexOsgi/com.raytheon.uf.edex.plugin.ffmp/res/spring/ffmp-ingest.xml
edexOsgi/com.raytheon.uf.edex.plugin.ffmp/src/com/raytheon/uf/edex/plugin/ffmp/FFMPGenerator.java
edexOsgi/com.raytheon.uf.edex.plugin.grid/src/com/raytheon/uf/edex/plugin/grid/dao/GridDao.java
rpms/build/i386/build.sh
cave/com.raytheon.viz.warngen/src/com/raytheon/viz/warngen/util/FollowUpUtil.java
cave/com.raytheon.viz.warngen/src/com/raytheon/viz/warngen/text/AbstractLockingBehavior.java
cave/com.raytheon.viz.warngen/src/com/raytheon/viz/warngen/text/ICommonPatterns.java
cave/com.raytheon.viz.warngen/src/com/raytheon/viz/warngen/text/FollowUpLockingBehavior.java
edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/significantWeatherAdvisory.vm
edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/VM_global_library.vm
edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/extremeWindWarningFollowup.vm
edexOsgi/com.raytheon.uf.edex.plugin.grid/src/com/raytheon/uf/edex/plugin/grid/dao/GridDao.java
edexOsgi/com.raytheon.uf.edex.plugin.ffmp/src/com/raytheon/uf/edex/plugin/ffmp/FFMPGenerator.java
edexOsgi/com.raytheon.uf.edex.plugin.ffmp/res/spring/ffmp-ingest.xml
edexOsgi/com.raytheon.uf.edex.grid.staticdata/src/com/raytheon/uf/edex/grid/staticdata/StaticDataGenerator.java

24
xs Normal file
View file

@ -0,0 +1,24 @@
cave/com.raytheon.viz.warngen/src/com/raytheon/viz/warngen/text/AbstractLockingBehavior.java
cave/com.raytheon.viz.warngen/src/com/raytheon/viz/warngen/text/AbstractLockingBehavior.java
cave/com.raytheon.viz.warngen/src/com/raytheon/viz/warngen/text/FollowUpLockingBehavior.java
cave/com.raytheon.viz.warngen/src/com/raytheon/viz/warngen/text/FollowUpLockingBehavior.java
cave/com.raytheon.viz.warngen/src/com/raytheon/viz/warngen/text/ICommonPatterns.java
cave/com.raytheon.viz.warngen/src/com/raytheon/viz/warngen/text/ICommonPatterns.java
cave/com.raytheon.viz.warngen/src/com/raytheon/viz/warngen/util/FipsUtil.java
cave/com.raytheon.viz.warngen/src/com/raytheon/viz/warngen/util/FollowUpUtil.java
cave/com.raytheon.viz.warngen/src/com/raytheon/viz/warngen/util/FollowUpUtil.java
edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/extremeWindWarningFollowup.vm
edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/extremeWindWarningFollowup.vm
edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/significantWeatherAdvisory.vm
edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/significantWeatherAdvisory.vm
edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/VM_global_library.vm
edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/VM_global_library.vm
edexOsgi/com.raytheon.uf.edex.grid.staticdata/src/com/raytheon/uf/edex/grid/staticdata/StaticDataGenerator.java
edexOsgi/com.raytheon.uf.edex.grid.staticdata/src/com/raytheon/uf/edex/grid/staticdata/StaticDataGenerator.java
edexOsgi/com.raytheon.uf.edex.plugin.ffmp/res/spring/ffmp-ingest.xml
edexOsgi/com.raytheon.uf.edex.plugin.ffmp/res/spring/ffmp-ingest.xml
edexOsgi/com.raytheon.uf.edex.plugin.ffmp/src/com/raytheon/uf/edex/plugin/ffmp/FFMPGenerator.java
edexOsgi/com.raytheon.uf.edex.plugin.ffmp/src/com/raytheon/uf/edex/plugin/ffmp/FFMPGenerator.java
edexOsgi/com.raytheon.uf.edex.plugin.grid/src/com/raytheon/uf/edex/plugin/grid/dao/GridDao.java
edexOsgi/com.raytheon.uf.edex.plugin.grid/src/com/raytheon/uf/edex/plugin/grid/dao/GridDao.java
rpms/build/i386/build.sh

72
z Normal file
View file

@ -0,0 +1,72 @@
M RadarServer/build.rcm/.project
M RadarServer/build.rcm/build.xml
M RadarServer/build.rcm/customTargets.xml
M RadarServer/com.raytheon.rcm.feature/feature.xml
M RadarServer/com.raytheon.rcm.server.mq/META-INF/MANIFEST.MF
M RadarServer/com.raytheon.rcm.server.mq/src/com/raytheon/rcm/server/dataarchive/DataArchiveEndpoint.java
M RadarServer/com.raytheon.rcm.server/META-INF/MANIFEST.MF
M RadarServer/com.raytheon.rcm.server/src/com/raytheon/rcm/server/Awips2Endpoint.java
M cave/build/static/common/cave/etc/gfe/userPython/procedures/TCMWindTool.py
M cave/build/static/common/cave/etc/gfe/userPython/utilities/SmartScript.py
M cave/com.raytheon.uf.viz.cots.feature/feature.xml
M cave/com.raytheon.uf.viz.monitor.ffmp/src/com/raytheon/uf/viz/monitor/ffmp/ui/rsc/FFMPDataGenerator.java
M cave/com.raytheon.viz.mpe.ui/plugin.xml
M cave/com.raytheon.viz.mpe.ui/src/com/raytheon/viz/mpe/MPECommandConstants.java
M cave/com.raytheon.viz.mpe.ui/src/com/raytheon/viz/mpe/ui/BaseFieldsPopulator.java
M cave/com.raytheon.viz.mpe.ui/src/com/raytheon/viz/mpe/ui/MPEDisplayManager.java
M cave/com.raytheon.viz.mpe.ui/src/com/raytheon/viz/mpe/ui/actions/ShowDisplay7x7.java
D cave/com.raytheon.viz.mpe.ui/src/com/raytheon/viz/mpe/ui/actions/ToggleGageDisplay.java
A cave/com.raytheon.viz.mpe.ui/src/com/raytheon/viz/mpe/ui/actions/ToggleGageIdDisplay.java
A cave/com.raytheon.viz.mpe.ui/src/com/raytheon/viz/mpe/ui/actions/ToggleGageTriangleDisplay.java
A cave/com.raytheon.viz.mpe.ui/src/com/raytheon/viz/mpe/ui/actions/ToggleGageValueDisplay.java
M cave/com.raytheon.viz.mpe.ui/src/com/raytheon/viz/mpe/ui/rsc/MPEGageResource.java
M cave/com.raytheon.viz.mpe/src/com/raytheon/viz/mpe/core/RegenHrFlds.java
M cave/com.raytheon.viz.radar/src/com/raytheon/viz/radar/DefaultVizRadarRecord.java
M cave/com.raytheon.viz.radar/src/com/raytheon/viz/radar/RadarRecordDataRetriever.java
M cave/com.raytheon.viz.radar/src/com/raytheon/viz/radar/ui/xy/RadarXYResource.java
M cave/com.raytheon.viz.warngen/src/com/raytheon/viz/warngen/text/AbstractLockingBehavior.java
M cave/com.raytheon.viz.warngen/src/com/raytheon/viz/warngen/text/FollowUpLockingBehavior.java
M cave/com.raytheon.viz.warngen/src/com/raytheon/viz/warngen/text/ICommonPatterns.java
M cave/com.raytheon.viz.warngen/src/com/raytheon/viz/warngen/util/FipsUtil.java
M cave/com.raytheon.viz.warngen/src/com/raytheon/viz/warngen/util/FollowUpUtil.java
D cots/org.apache.tools.bzip2/.classpath
D cots/org.apache.tools.bzip2/.project
D cots/org.apache.tools.bzip2/META-INF/MANIFEST.MF
D cots/org.apache.tools.bzip2/build.properties
D cots/org.apache.tools.bzip2/bzip2.jar
D cots/org.apache.tools.bzip2/org.apache.tools.bzip2.ecl
A cots/org.itadaki.bzip2/.classpath
A cots/org.itadaki.bzip2/.project
A cots/org.itadaki.bzip2/.settings/org.eclipse.jdt.core.prefs
A cots/org.itadaki.bzip2/META-INF/MANIFEST.MF
A cots/org.itadaki.bzip2/build.properties
A cots/org.itadaki.bzip2/jbzip2-0.9.1.jar
M edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/VM_global_library.vm
M edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/extremeWindWarningFollowup.vm
M edexOsgi/build.edex/esb/data/utility/common_static/base/warngen/significantWeatherAdvisory.vm
M edexOsgi/com.raytheon.edex.plugin.gfe/src/com/raytheon/edex/plugin/gfe/db/dao/GFEDao.java
M edexOsgi/com.raytheon.edex.plugin.gfe/src/com/raytheon/edex/plugin/gfe/server/GridParm.java
M edexOsgi/com.raytheon.edex.plugin.gfe/src/com/raytheon/edex/plugin/gfe/server/GridParmManager.java
M edexOsgi/com.raytheon.edex.plugin.gfe/src/com/raytheon/edex/plugin/gfe/server/database/GridDatabase.java
M edexOsgi/com.raytheon.edex.plugin.gfe/src/com/raytheon/edex/plugin/gfe/server/database/IFPGridDatabase.java
M edexOsgi/com.raytheon.edex.plugin.radar/META-INF/MANIFEST.MF
M edexOsgi/com.raytheon.edex.plugin.radar/src/com/raytheon/edex/plugin/radar/RadarDecoder.java
M edexOsgi/com.raytheon.edex.plugin.radar/src/com/raytheon/edex/plugin/radar/dao/RadarDao.java
M edexOsgi/com.raytheon.edex.plugin.radar/src/com/raytheon/edex/plugin/radar/level3/Level3BaseRadar.java
M edexOsgi/com.raytheon.edex.plugin.radar/src/com/raytheon/edex/plugin/radar/util/RadarSpatialUtil.java
M edexOsgi/com.raytheon.edex.rpgenvdata/META-INF/MANIFEST.MF
M edexOsgi/com.raytheon.edex.rpgenvdata/src/com/raytheon/edex/rpgenvdata/RPGEnvironmentalDataManager.java
M edexOsgi/com.raytheon.uf.common.dataplugin.radar/META-INF/MANIFEST.MF
M edexOsgi/com.raytheon.uf.common.dataplugin.radar/src/com/raytheon/uf/common/dataplugin/radar/RadarRecord.java
M edexOsgi/com.raytheon.uf.common.dataplugin.radar/src/com/raytheon/uf/common/dataplugin/radar/RadarStoredData.java
M edexOsgi/com.raytheon.uf.common.dataplugin.radar/src/com/raytheon/uf/common/dataplugin/radar/util/RadarDataRetriever.java
M edexOsgi/com.raytheon.uf.common.dataplugin.radar/src/com/raytheon/uf/common/dataplugin/radar/util/RadarRecordUtil.java
M edexOsgi/com.raytheon.uf.edex.activetable/utility/common_static/base/vtec/MergeVTEC.py
M edexOsgi/com.raytheon.uf.edex.cots.feature/feature.xml
M edexOsgi/com.raytheon.uf.edex.grid.staticdata/src/com/raytheon/uf/edex/grid/staticdata/StaticDataGenerator.java
M edexOsgi/com.raytheon.uf.edex.plugin.ffmp/res/spring/ffmp-ingest.xml
M edexOsgi/com.raytheon.uf.edex.plugin.ffmp/src/com/raytheon/uf/edex/plugin/ffmp/FFMPGenerator.java
M edexOsgi/com.raytheon.uf.edex.plugin.grid/src/com/raytheon/uf/edex/plugin/grid/dao/GridDao.java
M ncep/gov.noaa.nws.ncep.viz.rsc.ncradar/src/gov/noaa/nws/ncep/viz/rsc/ncradar/DefaultVizRadarRecord.java
M rpms/build/i386/build.sh
A rpms/build/i386/build.sh_preRCM