Merge branch 'unidata_16.1.5' of https://github.com/Unidata/awips2 into unidata_16.1.5-osx
This commit is contained in:
commit
749e6e80fc
39 changed files with 779 additions and 335 deletions
|
@ -6,7 +6,7 @@ These scripts should be run as *root*:
|
||||||
|
|
||||||
Download and run `installCAVE.sh`
|
Download and run `installCAVE.sh`
|
||||||
|
|
||||||
wget https://raw.githubusercontent.com/Unidata/awips2/unidata_16.1.4/installCAVE.sh
|
wget http://www.unidata.ucar.edu/software/awips2/installCAVE.sh
|
||||||
chmod 755 ./installCAVE.sh
|
chmod 755 ./installCAVE.sh
|
||||||
./installCAVE.sh
|
./installCAVE.sh
|
||||||
|
|
||||||
|
@ -14,7 +14,7 @@ Download and run `installCAVE.sh`
|
||||||
|
|
||||||
Download and run `installEDEX.sh`:
|
Download and run `installEDEX.sh`:
|
||||||
|
|
||||||
wget https://raw.githubusercontent.com/Unidata/awips2/unidata_16.1.4/installEDEX.sh
|
wget http://www.unidata.ucar.edu/software/awips2/installEDEX.sh
|
||||||
chmod 755 ./installEDEX.sh
|
chmod 755 ./installEDEX.sh
|
||||||
./installEDEX.sh
|
./installEDEX.sh
|
||||||
|
|
||||||
|
|
|
@ -1,75 +0,0 @@
|
||||||
##
|
|
||||||
# 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.
|
|
||||||
##
|
|
||||||
|
|
||||||
#
|
|
||||||
# Globally import and sets up instances of the scripts.
|
|
||||||
# Designed to be used as a master controller for inspecting and running
|
|
||||||
# python scripts from Java. Differs from base MasterInterface class because
|
|
||||||
# it utilizes the rollback importer.
|
|
||||||
#
|
|
||||||
# This class should remain purely python. For Java interactions, extend this class.
|
|
||||||
#
|
|
||||||
#
|
|
||||||
#
|
|
||||||
# SOFTWARE HISTORY
|
|
||||||
#
|
|
||||||
# Date Ticket# Engineer Description
|
|
||||||
# ------------ ---------- ----------- --------------------------
|
|
||||||
# 01/17/13 dgilling Initial Creation.
|
|
||||||
# 10/09/13 16614 njensen Fixed reloadModules()
|
|
||||||
#
|
|
||||||
#
|
|
||||||
#
|
|
||||||
|
|
||||||
import MasterInterface
|
|
||||||
|
|
||||||
class RollbackMasterInterface(MasterInterface.MasterInterface):
|
|
||||||
|
|
||||||
def __init__(self, scriptPath):
|
|
||||||
super(RollbackMasterInterface, self).__init__()
|
|
||||||
self._scriptPath = scriptPath
|
|
||||||
|
|
||||||
def importModules(self):
|
|
||||||
super(RollbackMasterInterface, self).importModules(self._scriptPath)
|
|
||||||
|
|
||||||
def getStartupErrors(self):
|
|
||||||
from java.util import ArrayList
|
|
||||||
errorList = ArrayList()
|
|
||||||
for err in self.getImportErrors():
|
|
||||||
errorList.add(str(err))
|
|
||||||
return errorList
|
|
||||||
|
|
||||||
def addModule(self, moduleName):
|
|
||||||
super(RollbackMasterInterface, self).addModule(moduleName)
|
|
||||||
self.reloadModules()
|
|
||||||
|
|
||||||
def reloadModule(self, moduleName):
|
|
||||||
super(RollbackMasterInterface, self).reloadModule(moduleName)
|
|
||||||
self.reloadModules()
|
|
||||||
|
|
||||||
def removeModule(self, moduleName):
|
|
||||||
super(RollbackMasterInterface, self).removeModule(moduleName)
|
|
||||||
self.reloadModules()
|
|
||||||
|
|
||||||
def reloadModules(self):
|
|
||||||
for script in self.scripts:
|
|
||||||
super(RollbackMasterInterface, self).reloadModule(script)
|
|
||||||
|
|
||||||
|
|
|
@ -101,24 +101,79 @@
|
||||||
label="Save Bundle"
|
label="Save Bundle"
|
||||||
style="push">
|
style="push">
|
||||||
</command>
|
</command>
|
||||||
<command
|
|
||||||
commandId="com.raytheon.viz.ui.saveBundle"
|
|
||||||
label="Save Bundle Locally"
|
|
||||||
style="push">
|
|
||||||
</command>
|
|
||||||
|
|
||||||
<separator
|
<separator
|
||||||
name="importExportSeparator"
|
name="importSeparator"
|
||||||
visible="true">
|
visible="true">
|
||||||
</separator>
|
</separator>
|
||||||
<menu
|
|
||||||
id="import"
|
<command
|
||||||
label="Import">
|
commandId="com.raytheon.uf.viz.image.file.rsc"
|
||||||
</menu>
|
label="Import Image"
|
||||||
<menu
|
style="push">
|
||||||
id="export"
|
</command>
|
||||||
label="Export">
|
<command
|
||||||
</menu>
|
commandId="com.raytheon.uf.viz.image.file.rsc"
|
||||||
|
label="Import Background"
|
||||||
|
style="push">
|
||||||
|
<parameter
|
||||||
|
name="imageImportMode"
|
||||||
|
value="Background">
|
||||||
|
</parameter>
|
||||||
|
</command>
|
||||||
|
<command
|
||||||
|
commandId="com.raytheon.uf.viz.gisdatastore.actions.ImportGis"
|
||||||
|
label="Import GIS Data"
|
||||||
|
style="push">
|
||||||
|
</command>
|
||||||
|
<command
|
||||||
|
commandId="com.raytheon.viz.bcd.openBCD"
|
||||||
|
label="Import BCD File"
|
||||||
|
style="push">
|
||||||
|
</command>
|
||||||
|
<command
|
||||||
|
commandId="com.raytheon.viz.geotiff.openGeoTiff"
|
||||||
|
label="Import GeoTIFF"
|
||||||
|
style="push">
|
||||||
|
</command>
|
||||||
|
<command
|
||||||
|
commandId="com.raytheon.viz.lpi.openLPI"
|
||||||
|
label="Import LPI File"
|
||||||
|
style="push">
|
||||||
|
</command>
|
||||||
|
<command
|
||||||
|
commandId="com.raytheon.viz.spi.openSPI"
|
||||||
|
label="Import SPI File"
|
||||||
|
style="push">
|
||||||
|
</command>
|
||||||
|
|
||||||
|
<separator
|
||||||
|
name="exportSeparator"
|
||||||
|
visible="true">
|
||||||
|
</separator>
|
||||||
|
|
||||||
|
<command
|
||||||
|
commandId="com.raytheon.viz.ui.saveBundle"
|
||||||
|
label="Export Bundle"
|
||||||
|
style="push">
|
||||||
|
</command>
|
||||||
|
<command
|
||||||
|
commandId="com.raytheon.uf.viz.image.export.save"
|
||||||
|
label="Export Image"
|
||||||
|
style="push">
|
||||||
|
</command>
|
||||||
|
<command
|
||||||
|
commandId="com.raytheon.uf.viz.kml.export.exportKML"
|
||||||
|
label="Export KML"
|
||||||
|
style="push">
|
||||||
|
</command>
|
||||||
|
<command
|
||||||
|
commandId="com.raytheon.uf.viz.image.export.print"
|
||||||
|
label="Print Screen"
|
||||||
|
style="push">
|
||||||
|
<parameter name="frameSelection" value="current">
|
||||||
|
</parameter>
|
||||||
|
</command>
|
||||||
</menu>
|
</menu>
|
||||||
<menu
|
<menu
|
||||||
id="view"
|
id="view"
|
||||||
|
@ -573,11 +628,11 @@
|
||||||
label="Browser"
|
label="Browser"
|
||||||
mode="FORCE_TEXT"
|
mode="FORCE_TEXT"
|
||||||
style="push">
|
style="push">
|
||||||
<visibleWhen>
|
<visibleWhen>
|
||||||
<reference
|
<reference
|
||||||
definitionId="com.raytheon.uf.viz.d2d.ui.inD2DActionSet">
|
definitionId="com.raytheon.uf.viz.d2d.ui.inD2DActionSet">
|
||||||
</reference>
|
</reference>
|
||||||
</visibleWhen>
|
</visibleWhen>
|
||||||
</command>
|
</command>
|
||||||
|
|
||||||
</toolbar>
|
</toolbar>
|
||||||
|
|
|
@ -37,20 +37,7 @@
|
||||||
point="org.eclipse.ui.menus">
|
point="org.eclipse.ui.menus">
|
||||||
<menuContribution
|
<menuContribution
|
||||||
locationURI="menu:import">
|
locationURI="menu:import">
|
||||||
<command
|
|
||||||
commandId="com.raytheon.uf.viz.image.file.rsc"
|
|
||||||
label="Background..."
|
|
||||||
style="push">
|
|
||||||
<parameter
|
|
||||||
name="imageImportMode"
|
|
||||||
value="Background">
|
|
||||||
</parameter>
|
|
||||||
</command>
|
|
||||||
<command
|
|
||||||
commandId="com.raytheon.uf.viz.image.file.rsc"
|
|
||||||
label="Image..."
|
|
||||||
style="push">
|
|
||||||
</command>
|
|
||||||
|
|
||||||
|
|
||||||
</menuContribution>
|
</menuContribution>
|
||||||
|
|
|
@ -21,11 +21,6 @@
|
||||||
<menuContribution
|
<menuContribution
|
||||||
allPopups="false"
|
allPopups="false"
|
||||||
locationURI="menu:import">
|
locationURI="menu:import">
|
||||||
<command
|
|
||||||
commandId="com.raytheon.uf.viz.gisdatastore.actions.ImportGis"
|
|
||||||
label="GIS Data..."
|
|
||||||
style="push">
|
|
||||||
</command>
|
|
||||||
</menuContribution>
|
</menuContribution>
|
||||||
</extension>
|
</extension>
|
||||||
<extension
|
<extension
|
||||||
|
|
|
@ -66,20 +66,7 @@
|
||||||
point="org.eclipse.ui.menus">
|
point="org.eclipse.ui.menus">
|
||||||
<menuContribution
|
<menuContribution
|
||||||
locationURI="menu:export">
|
locationURI="menu:export">
|
||||||
<command
|
|
||||||
commandId="com.raytheon.uf.viz.image.export.save"
|
|
||||||
label="Image"
|
|
||||||
style="push">
|
|
||||||
</command>
|
|
||||||
<command
|
|
||||||
commandId="com.raytheon.uf.viz.image.export.print"
|
|
||||||
label="Print Screen"
|
|
||||||
style="push">
|
|
||||||
<parameter
|
|
||||||
name="frameSelection"
|
|
||||||
value="current">
|
|
||||||
</parameter>
|
|
||||||
</command>
|
|
||||||
</menuContribution>
|
</menuContribution>
|
||||||
</extension>
|
</extension>
|
||||||
<extension
|
<extension
|
||||||
|
|
|
@ -1,17 +1,6 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<?eclipse version="3.4"?>
|
<?eclipse version="3.4"?>
|
||||||
<plugin>
|
<plugin>
|
||||||
<extension
|
|
||||||
point="org.eclipse.ui.menus">
|
|
||||||
<menuContribution
|
|
||||||
locationURI="menu:export">
|
|
||||||
<command
|
|
||||||
commandId="com.raytheon.uf.viz.kml.export.exportKML"
|
|
||||||
label="KML"
|
|
||||||
style="push">
|
|
||||||
</command>
|
|
||||||
</menuContribution>
|
|
||||||
</extension>
|
|
||||||
<extension
|
<extension
|
||||||
point="org.eclipse.ui.commands">
|
point="org.eclipse.ui.commands">
|
||||||
<command
|
<command
|
||||||
|
|
|
@ -38,11 +38,6 @@
|
||||||
point="org.eclipse.ui.menus">
|
point="org.eclipse.ui.menus">
|
||||||
<menuContribution
|
<menuContribution
|
||||||
locationURI="menu:import">
|
locationURI="menu:import">
|
||||||
<command
|
|
||||||
commandId="com.raytheon.viz.bcd.openBCD"
|
|
||||||
label="BCD File..."
|
|
||||||
style="push">
|
|
||||||
</command>
|
|
||||||
</menuContribution>
|
</menuContribution>
|
||||||
</extension>
|
</extension>
|
||||||
<extension
|
<extension
|
||||||
|
|
|
@ -46,11 +46,6 @@
|
||||||
point="org.eclipse.ui.menus">
|
point="org.eclipse.ui.menus">
|
||||||
<menuContribution
|
<menuContribution
|
||||||
locationURI="menu:import">
|
locationURI="menu:import">
|
||||||
<command
|
|
||||||
commandId="com.raytheon.viz.geotiff.openGeoTiff"
|
|
||||||
label="GeoTIFF..."
|
|
||||||
style="push">
|
|
||||||
</command>
|
|
||||||
</menuContribution>
|
</menuContribution>
|
||||||
</extension>
|
</extension>
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,36 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
||||||
|
<!-- Created by config_local_shapefiles of config_awips2.sh on Tue Jul 28
|
||||||
|
19:26:09 GMT 2015 -->
|
||||||
|
<bundle>
|
||||||
|
<displayList>
|
||||||
|
<displays xsi:type="mapRenderableDisplay"
|
||||||
|
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
|
||||||
|
<descriptor xsi:type="mapDescriptor">
|
||||||
|
<resource>
|
||||||
|
<loadProperties>
|
||||||
|
<capabilities>
|
||||||
|
<capability xsi:type="colorableCapability"
|
||||||
|
colorAsString="#9b9b9b" />
|
||||||
|
<capability xsi:type="outlineCapability"
|
||||||
|
lineStyle="SOLID" outlineOn="true"
|
||||||
|
outlineWidth="1" />
|
||||||
|
<capability xsi:type="pointCapability"
|
||||||
|
pointStyle="NONE" />
|
||||||
|
</capabilities>
|
||||||
|
<resourceType>PLAN_VIEW</resourceType>
|
||||||
|
</loadProperties>
|
||||||
|
<properties isSystemResource="false"
|
||||||
|
isBlinking="false" isMapLayer="true" isHoverOn="false"
|
||||||
|
isVisible="true">
|
||||||
|
<pdProps maxDisplayWidth="100000000"
|
||||||
|
minDisplayWidth="0" />
|
||||||
|
</properties>
|
||||||
|
<resourceData xsi:type="dbMapResourceData">
|
||||||
|
<table>mapdata.nhadomain</table>
|
||||||
|
<mapName>NHAdomain</mapName>
|
||||||
|
</resourceData>
|
||||||
|
</resource>
|
||||||
|
</descriptor>
|
||||||
|
</displays>
|
||||||
|
</displayList>
|
||||||
|
</bundle>
|
|
@ -0,0 +1,36 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
||||||
|
<!-- Created by config_local_shapefiles of config_awips2.sh on Wed Jul 29
|
||||||
|
19:20:36 GMT 2015 -->
|
||||||
|
<bundle>
|
||||||
|
<displayList>
|
||||||
|
<displays xsi:type="mapRenderableDisplay"
|
||||||
|
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
|
||||||
|
<descriptor xsi:type="mapDescriptor">
|
||||||
|
<resource>
|
||||||
|
<loadProperties>
|
||||||
|
<capabilities>
|
||||||
|
<capability xsi:type="colorableCapability"
|
||||||
|
colorAsString="#9b9b9b" />
|
||||||
|
<capability xsi:type="outlineCapability"
|
||||||
|
lineStyle="SOLID" outlineOn="true"
|
||||||
|
outlineWidth="1" />
|
||||||
|
<capability xsi:type="pointCapability"
|
||||||
|
pointStyle="NONE" />
|
||||||
|
</capabilities>
|
||||||
|
<resourceType>PLAN_VIEW</resourceType>
|
||||||
|
</loadProperties>
|
||||||
|
<properties isSystemResource="false"
|
||||||
|
isBlinking="false" isMapLayer="true" isHoverOn="false"
|
||||||
|
isVisible="true">
|
||||||
|
<pdProps maxDisplayWidth="100000000"
|
||||||
|
minDisplayWidth="0" />
|
||||||
|
</properties>
|
||||||
|
<resourceData xsi:type="dbMapResourceData">
|
||||||
|
<table>mapdata.stormsurgeww</table>
|
||||||
|
<mapName>StormSurgeWW</mapName>
|
||||||
|
</resourceData>
|
||||||
|
</resource>
|
||||||
|
</descriptor>
|
||||||
|
</displays>
|
||||||
|
</displayList>
|
||||||
|
</bundle>
|
|
@ -37,7 +37,7 @@
|
||||||
from gfeConfig import *
|
from gfeConfig import *
|
||||||
|
|
||||||
# Hide this configuration file from users
|
# Hide this configuration file from users
|
||||||
HideConfigFile = 1
|
#HideConfigFile = 1
|
||||||
|
|
||||||
# Auto-load the group containing the geo weight weather elements
|
# Auto-load the group containing the geo weight weather elements
|
||||||
DefaultGroup = "EditTopo"
|
DefaultGroup = "EditTopo"
|
||||||
|
|
|
@ -11,7 +11,7 @@
|
||||||
|
|
||||||
from gfeConfig import *
|
from gfeConfig import *
|
||||||
|
|
||||||
HideConfigFile = 1
|
#HideConfigFile = 1
|
||||||
|
|
||||||
#------------------------------------------------------------------------
|
#------------------------------------------------------------------------
|
||||||
# GIF/PNG Graphic Product Generation (ifpIMAGE program)
|
# GIF/PNG Graphic Product Generation (ifpIMAGE program)
|
||||||
|
|
|
@ -44,7 +44,7 @@
|
||||||
from gfeConfig import *
|
from gfeConfig import *
|
||||||
|
|
||||||
# Hide this configuration file from users
|
# Hide this configuration file from users
|
||||||
HideConfigFile = 1
|
#HideConfigFile = 1
|
||||||
|
|
||||||
DefaultGroup = "NewTerrain"
|
DefaultGroup = "NewTerrain"
|
||||||
|
|
||||||
|
|
|
@ -10,7 +10,7 @@
|
||||||
|
|
||||||
from gfeConfig import *
|
from gfeConfig import *
|
||||||
|
|
||||||
HideConfigFile = 1
|
#HideConfigFile = 1
|
||||||
|
|
||||||
#------------------------------------------------------------------------
|
#------------------------------------------------------------------------
|
||||||
# GIF/PNG Graphic Product Generation (ifpIMAGE program)
|
# GIF/PNG Graphic Product Generation (ifpIMAGE program)
|
||||||
|
|
|
@ -11,7 +11,7 @@
|
||||||
|
|
||||||
from gfeConfig import *
|
from gfeConfig import *
|
||||||
|
|
||||||
HideConfigFile = 1
|
#HideConfigFile = 1
|
||||||
|
|
||||||
#------------------------------------------------------------------------
|
#------------------------------------------------------------------------
|
||||||
# GIF/PNG Graphic Product Generation (ifpIMAGE program)
|
# GIF/PNG Graphic Product Generation (ifpIMAGE program)
|
||||||
|
|
|
@ -11,7 +11,7 @@
|
||||||
|
|
||||||
from gfeConfig import *
|
from gfeConfig import *
|
||||||
|
|
||||||
HideConfigFile = 1
|
#HideConfigFile = 1
|
||||||
|
|
||||||
#------------------------------------------------------------------------
|
#------------------------------------------------------------------------
|
||||||
# GIF/PNG Graphic Product Generation (ifpIMAGE program)
|
# GIF/PNG Graphic Product Generation (ifpIMAGE program)
|
||||||
|
|
|
@ -46,7 +46,7 @@ no = False
|
||||||
# The gfe configuration file can be hidden in the Start Up Dialog by
|
# The gfe configuration file can be hidden in the Start Up Dialog by
|
||||||
# using the HideConfigFile keyword and setting it to 1, or by commenting
|
# using the HideConfigFile keyword and setting it to 1, or by commenting
|
||||||
# out the following line.
|
# out the following line.
|
||||||
# HideConfigFile = 1
|
# #HideConfigFile = 1
|
||||||
|
|
||||||
#------------------------------------------------------------------------
|
#------------------------------------------------------------------------
|
||||||
# Mutable Parameter and Viewable Database Configurations
|
# Mutable Parameter and Viewable Database Configurations
|
||||||
|
|
|
@ -22,7 +22,7 @@
|
||||||
from gfeConfig import *
|
from gfeConfig import *
|
||||||
import gfeConfig
|
import gfeConfig
|
||||||
|
|
||||||
HideConfigFile = 1
|
#HideConfigFile = 1
|
||||||
|
|
||||||
# Defines the T as the displayable weather element
|
# Defines the T as the displayable weather element
|
||||||
Png_parms = ['T_SFC:_Fcst -1', 'Td_SFC:_Fcst -1', 'Wind_SFC:_Fcst -1']
|
Png_parms = ['T_SFC:_Fcst -1', 'Td_SFC:_Fcst -1', 'Wind_SFC:_Fcst -1']
|
||||||
|
|
|
@ -148,6 +148,7 @@ import com.raytheon.viz.gfe.types.MutableInteger;
|
||||||
* 10/30/2014 #3775 randerso Changed to createMutableDb before getting initial database inventory
|
* 10/30/2014 #3775 randerso Changed to createMutableDb before getting initial database inventory
|
||||||
* 01/13/2015 #3955 randerso Changed getProductDatabase() to return mutableDb for EditTopo
|
* 01/13/2015 #3955 randerso Changed getProductDatabase() to return mutableDb for EditTopo
|
||||||
* 03/12/2015 #4246 randerso Changes to support VCModules at base, site, and user levels
|
* 03/12/2015 #4246 randerso Changes to support VCModules at base, site, and user levels
|
||||||
|
* 06/06/2016 mjames@ucar Force localization of GFE/vcmodule/vtec Python files
|
||||||
* </pre>
|
* </pre>
|
||||||
*
|
*
|
||||||
* @author chammack
|
* @author chammack
|
||||||
|
@ -3119,6 +3120,36 @@ public class ParmManager implements IParmManager, IMessageClient {
|
||||||
e);
|
e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
files = pathMgr.listFiles(context, FileUtil.join(
|
||||||
|
"gfe"), new String[] { "py" },
|
||||||
|
true, true);
|
||||||
|
for (LocalizationFile lf : files) {
|
||||||
|
try {
|
||||||
|
lf.getFile(true);
|
||||||
|
} catch (LocalizationException e) {
|
||||||
|
statusHandler.error("Error getting local file " + lf, e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
files = pathMgr.listFiles(context, FileUtil.join(
|
||||||
|
"python"), new String[] { "py" },
|
||||||
|
true, true);
|
||||||
|
for (LocalizationFile lf : files) {
|
||||||
|
try {
|
||||||
|
lf.getFile(true);
|
||||||
|
} catch (LocalizationException e) {
|
||||||
|
statusHandler.error("Error getting local file " + lf, e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
files = pathMgr.listFiles(context, FileUtil.join(
|
||||||
|
"vtec"), new String[] { "py" },
|
||||||
|
true, true);
|
||||||
|
for (LocalizationFile lf : files) {
|
||||||
|
try {
|
||||||
|
lf.getFile(true);
|
||||||
|
} catch (LocalizationException e) {
|
||||||
|
statusHandler.error("Error getting local file " + lf, e);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
List<VCModule> definitions = new ArrayList<VCModule>(modMap.size());
|
List<VCModule> definitions = new ArrayList<VCModule>(modMap.size());
|
||||||
|
|
|
@ -39,11 +39,6 @@
|
||||||
point="org.eclipse.ui.menus">
|
point="org.eclipse.ui.menus">
|
||||||
<menuContribution
|
<menuContribution
|
||||||
locationURI="menu:import">
|
locationURI="menu:import">
|
||||||
<command
|
|
||||||
commandId="com.raytheon.viz.lpi.openLPI"
|
|
||||||
label="LPI File..."
|
|
||||||
style="push">
|
|
||||||
</command>
|
|
||||||
</menuContribution>
|
</menuContribution>
|
||||||
</extension>
|
</extension>
|
||||||
<extension
|
<extension
|
||||||
|
|
|
@ -43,14 +43,14 @@
|
||||||
<substitute key="interpolate" value="false"/>
|
<substitute key="interpolate" value="false"/>
|
||||||
</contribute>
|
</contribute>
|
||||||
<contribute xsi:type="bundleItem" file="bundles/DefaultRadarComposite.xml"
|
<contribute xsi:type="bundleItem" file="bundles/DefaultRadarComposite.xml"
|
||||||
menuText="N1P - One-Hour Precipitation (4-bit)" id="N1P">
|
menuText="DAA - One-Hour Precipitation" id="DAA">
|
||||||
<substitute key="element" value="N1P"/>
|
<substitute key="element" value="DAA"/>
|
||||||
<substitute key="colormap" value="Radar/8-bit STP"/>
|
<substitute key="colormap" value="Radar/8-bit STP"/>
|
||||||
<substitute key="interpolate" value="true"/>
|
<substitute key="interpolate" value="true"/>
|
||||||
</contribute>
|
</contribute>
|
||||||
<contribute xsi:type="bundleItem" file="bundles/DefaultRadarComposite.xml"
|
<contribute xsi:type="bundleItem" file="bundles/DefaultRadarComposite.xml"
|
||||||
menuText="NTP - Storm-Total Precipitation (4-bit)" id="N1P">
|
menuText="DTA - Storm-Total Precipitation" id="DTA">
|
||||||
<substitute key="element" value="NTP"/>
|
<substitute key="element" value="DTA"/>
|
||||||
<substitute key="colormap" value="Radar/8-bit STP"/>
|
<substitute key="colormap" value="Radar/8-bit STP"/>
|
||||||
<substitute key="interpolate" value="true"/>
|
<substitute key="interpolate" value="true"/>
|
||||||
</contribute>
|
</contribute>
|
||||||
|
|
|
@ -38,11 +38,6 @@
|
||||||
point="org.eclipse.ui.menus">
|
point="org.eclipse.ui.menus">
|
||||||
<menuContribution
|
<menuContribution
|
||||||
locationURI="menu:import">
|
locationURI="menu:import">
|
||||||
<command
|
|
||||||
commandId="com.raytheon.viz.spi.openSPI"
|
|
||||||
label="SPI File..."
|
|
||||||
style="push">
|
|
||||||
</command>
|
|
||||||
</menuContribution>
|
</menuContribution>
|
||||||
</extension>
|
</extension>
|
||||||
<extension
|
<extension
|
||||||
|
|
|
@ -1,75 +0,0 @@
|
||||||
##
|
|
||||||
# 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.
|
|
||||||
##
|
|
||||||
|
|
||||||
#
|
|
||||||
# Globally import and sets up instances of the scripts.
|
|
||||||
# Designed to be used as a master controller for inspecting and running
|
|
||||||
# python scripts from Java. Differs from base MasterInterface class because
|
|
||||||
# it utilizes the rollback importer.
|
|
||||||
#
|
|
||||||
# This class should remain purely python. For Java interactions, extend this class.
|
|
||||||
#
|
|
||||||
#
|
|
||||||
#
|
|
||||||
# SOFTWARE HISTORY
|
|
||||||
#
|
|
||||||
# Date Ticket# Engineer Description
|
|
||||||
# ------------ ---------- ----------- --------------------------
|
|
||||||
# 01/17/13 dgilling Initial Creation.
|
|
||||||
# 10/09/13 16614 njensen Fixed reloadModules()
|
|
||||||
#
|
|
||||||
#
|
|
||||||
#
|
|
||||||
|
|
||||||
import MasterInterface
|
|
||||||
|
|
||||||
class RollbackMasterInterface(MasterInterface.MasterInterface):
|
|
||||||
|
|
||||||
def __init__(self, scriptPath):
|
|
||||||
super(RollbackMasterInterface, self).__init__()
|
|
||||||
self._scriptPath = scriptPath
|
|
||||||
|
|
||||||
def importModules(self):
|
|
||||||
super(RollbackMasterInterface, self).importModules(self._scriptPath)
|
|
||||||
|
|
||||||
def getStartupErrors(self):
|
|
||||||
from java.util import ArrayList
|
|
||||||
errorList = ArrayList()
|
|
||||||
for err in self.getImportErrors():
|
|
||||||
errorList.add(str(err))
|
|
||||||
return errorList
|
|
||||||
|
|
||||||
def addModule(self, moduleName):
|
|
||||||
super(RollbackMasterInterface, self).addModule(moduleName)
|
|
||||||
self.reloadModules()
|
|
||||||
|
|
||||||
def reloadModule(self, moduleName):
|
|
||||||
super(RollbackMasterInterface, self).reloadModule(moduleName)
|
|
||||||
self.reloadModules()
|
|
||||||
|
|
||||||
def removeModule(self, moduleName):
|
|
||||||
super(RollbackMasterInterface, self).removeModule(moduleName)
|
|
||||||
self.reloadModules()
|
|
||||||
|
|
||||||
def reloadModules(self):
|
|
||||||
for script in self.scripts:
|
|
||||||
super(RollbackMasterInterface, self).reloadModule(script)
|
|
||||||
|
|
||||||
|
|
|
@ -1,75 +0,0 @@
|
||||||
##
|
|
||||||
# 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.
|
|
||||||
##
|
|
||||||
|
|
||||||
#
|
|
||||||
# Globally import and sets up instances of the scripts.
|
|
||||||
# Designed to be used as a master controller for inspecting and running
|
|
||||||
# python scripts from Java. Differs from base MasterInterface class because
|
|
||||||
# it utilizes the rollback importer.
|
|
||||||
#
|
|
||||||
# This class should remain purely python. For Java interactions, extend this class.
|
|
||||||
#
|
|
||||||
#
|
|
||||||
#
|
|
||||||
# SOFTWARE HISTORY
|
|
||||||
#
|
|
||||||
# Date Ticket# Engineer Description
|
|
||||||
# ------------ ---------- ----------- --------------------------
|
|
||||||
# 01/17/13 dgilling Initial Creation.
|
|
||||||
# 10/09/13 16614 njensen Fixed reloadModules()
|
|
||||||
#
|
|
||||||
#
|
|
||||||
#
|
|
||||||
|
|
||||||
import MasterInterface
|
|
||||||
|
|
||||||
class RollbackMasterInterface(MasterInterface.MasterInterface):
|
|
||||||
|
|
||||||
def __init__(self, scriptPath):
|
|
||||||
super(RollbackMasterInterface, self).__init__()
|
|
||||||
self._scriptPath = scriptPath
|
|
||||||
|
|
||||||
def importModules(self):
|
|
||||||
super(RollbackMasterInterface, self).importModules(self._scriptPath)
|
|
||||||
|
|
||||||
def getStartupErrors(self):
|
|
||||||
from java.util import ArrayList
|
|
||||||
errorList = ArrayList()
|
|
||||||
for err in self.getImportErrors():
|
|
||||||
errorList.add(str(err))
|
|
||||||
return errorList
|
|
||||||
|
|
||||||
def addModule(self, moduleName):
|
|
||||||
super(RollbackMasterInterface, self).addModule(moduleName)
|
|
||||||
self.reloadModules()
|
|
||||||
|
|
||||||
def reloadModule(self, moduleName):
|
|
||||||
super(RollbackMasterInterface, self).reloadModule(moduleName)
|
|
||||||
self.reloadModules()
|
|
||||||
|
|
||||||
def removeModule(self, moduleName):
|
|
||||||
super(RollbackMasterInterface, self).removeModule(moduleName)
|
|
||||||
self.reloadModules()
|
|
||||||
|
|
||||||
def reloadModules(self):
|
|
||||||
for script in self.scripts:
|
|
||||||
super(RollbackMasterInterface, self).reloadModule(script)
|
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,107 @@
|
||||||
|
# -*-python-*-
|
||||||
|
import time
|
||||||
|
from numpy import *
|
||||||
|
|
||||||
|
SCALAR = 'Scalar'
|
||||||
|
VECTOR = 'Vector'
|
||||||
|
WEATHER = 'Weather'
|
||||||
|
DISCRETE = 'Discrete'
|
||||||
|
YES = True
|
||||||
|
NO = False
|
||||||
|
|
||||||
|
class VCParm:
|
||||||
|
|
||||||
|
def splitTR(self, tr, inv):
|
||||||
|
for btr in inv:
|
||||||
|
if self._overlaps(btr, tr):
|
||||||
|
if self._containsTR(btr, tr):
|
||||||
|
return []
|
||||||
|
else:
|
||||||
|
splitlst = []
|
||||||
|
if not self._contains(btr, tr[0]):
|
||||||
|
splitlst = splitlst + self.splitTR((tr[0], btr[0]),
|
||||||
|
inv)
|
||||||
|
if not self._contains(btr, tr[1]):
|
||||||
|
splitlst = splitlst + self.splitTR((btr[1], tr[1]),
|
||||||
|
inv)
|
||||||
|
return splitlst
|
||||||
|
return [tr]
|
||||||
|
|
||||||
|
def tcmp(self, t1, t2):
|
||||||
|
return cmp(t1[0], t2[0])
|
||||||
|
|
||||||
|
def getInventory(self, QPF, QPF_ISC):
|
||||||
|
# all Fcst grids get included if they overlap an ISC grid
|
||||||
|
rval = []
|
||||||
|
for tr in QPF:
|
||||||
|
lst = []
|
||||||
|
for itr in QPF_ISC:
|
||||||
|
if self._overlaps(tr, itr):
|
||||||
|
lst.append(itr)
|
||||||
|
if len(lst):
|
||||||
|
rval.append((tr, [tr], lst))
|
||||||
|
|
||||||
|
# Any ISC grid which does not overlap
|
||||||
|
# or any portion that does not overlap
|
||||||
|
# goes in as well
|
||||||
|
for tr in QPF_ISC:
|
||||||
|
for ntr in self.splitTR(tr, QPF):
|
||||||
|
for ftr in QPF:
|
||||||
|
if self._overlaps(ntr, ftr):
|
||||||
|
break
|
||||||
|
else:
|
||||||
|
rval.append((ntr, [], [tr]))
|
||||||
|
|
||||||
|
#must sort in ascending order
|
||||||
|
rval.sort(lambda x,y:cmp(x[0][0], y[0][0]))
|
||||||
|
|
||||||
|
return rval
|
||||||
|
|
||||||
|
# returns the percentage of tr1 that overlaps tr2
|
||||||
|
def poverlap(self, tr1, tr2):
|
||||||
|
itr = self._intersect(tr1, tr2)
|
||||||
|
return (itr[1] - itr[0]) / float(tr1[1] - tr1[0])
|
||||||
|
|
||||||
|
def calcGrid(self, QPF, QPF_ISC):
|
||||||
|
# If getInventory() works right
|
||||||
|
# we either get 0 or 1 QPF grids.
|
||||||
|
# And if 0 then only 1 QPF_ISC
|
||||||
|
if len(QPF) == 0:
|
||||||
|
return QPF_ISC[0][1]
|
||||||
|
rval = QPF[0][1] * 0.0
|
||||||
|
for i in QPF_ISC:
|
||||||
|
rval = rval + i[1] * self.poverlap(i[0], QPF[0][0])
|
||||||
|
return rval
|
||||||
|
|
||||||
|
def calcHistory(self, QPF_ISC):
|
||||||
|
rval = []
|
||||||
|
for t in QPF_ISC:
|
||||||
|
for i in t[1]:
|
||||||
|
rval.append(i)
|
||||||
|
return rval
|
||||||
|
|
||||||
|
def getWEInfo(self):
|
||||||
|
# For some reason, setting time dependent to YES
|
||||||
|
# makes the GFE loose this ???
|
||||||
|
return (("QPF", SCALAR, "in", "QPF", 5.0, 0.0, 2, YES),
|
||||||
|
("ISC", "V"), (3600, 3600, 0))
|
||||||
|
|
||||||
|
def _containsTR(self, tr1, tr2):
|
||||||
|
if tr1 == tr2:
|
||||||
|
return True
|
||||||
|
return self._contains(tr1, tr2[0]) and self._contains(tr1, tr2[1])
|
||||||
|
|
||||||
|
def _contains(self, timerange, time):
|
||||||
|
if timerange[1] - timerange[0]:
|
||||||
|
return ((time >= timerange[0]) and (time < timerange[1]))
|
||||||
|
return time == timerange[0]
|
||||||
|
|
||||||
|
def _overlaps(self, tr1, tr2):
|
||||||
|
if self._contains(tr2, tr1[0]) or self._contains(tr1, tr2[0]):
|
||||||
|
return True
|
||||||
|
return False
|
||||||
|
|
||||||
|
def _intersect(self, t1, t2):
|
||||||
|
if self._overlaps(t1, t2):
|
||||||
|
return (max(t1[0], t2[0]), min(t1[1], t2[1]))
|
||||||
|
return None
|
|
@ -0,0 +1,108 @@
|
||||||
|
# -*-python-*-
|
||||||
|
import time
|
||||||
|
from numpy import *
|
||||||
|
|
||||||
|
SCALAR = 'Scalar'
|
||||||
|
VECTOR = 'Vector'
|
||||||
|
WEATHER = 'Weather'
|
||||||
|
DISCRETE = 'Discrete'
|
||||||
|
YES = True
|
||||||
|
NO = False
|
||||||
|
|
||||||
|
class VCParm:
|
||||||
|
def splitTR(self, tr, inv):
|
||||||
|
for btr in inv:
|
||||||
|
if self._overlaps(btr, tr):
|
||||||
|
if self._containsTR(btr, tr):
|
||||||
|
return []
|
||||||
|
else:
|
||||||
|
splitlst = []
|
||||||
|
if not self._contains(btr, tr[0]):
|
||||||
|
splitlst = splitlst + self.splitTR((tr[0], btr[0]),
|
||||||
|
inv)
|
||||||
|
if not self._contains(btr, tr[1]):
|
||||||
|
splitlst = splitlst + self.splitTR((btr[1], tr[1]),
|
||||||
|
inv)
|
||||||
|
return splitlst
|
||||||
|
return [tr]
|
||||||
|
|
||||||
|
def tcmp(self, t1, t2):
|
||||||
|
return cmp(t1[0], t2[0])
|
||||||
|
|
||||||
|
def getInventory(self, SnowAmt, SnowAmt_ISC):
|
||||||
|
# all Fcst grids get included if they overlap an ISC grid
|
||||||
|
rval = []
|
||||||
|
for tr in SnowAmt:
|
||||||
|
lst = []
|
||||||
|
for itr in SnowAmt_ISC:
|
||||||
|
if self._overlaps(tr, itr):
|
||||||
|
lst.append(itr)
|
||||||
|
if len(lst):
|
||||||
|
rval.append((tr, [tr], lst))
|
||||||
|
|
||||||
|
# Any ISC grid which does not overlap
|
||||||
|
# or any portion that does not overlap
|
||||||
|
# goes in as well
|
||||||
|
for tr in SnowAmt_ISC:
|
||||||
|
for ntr in self.splitTR(tr, SnowAmt):
|
||||||
|
for ftr in SnowAmt:
|
||||||
|
if self._overlaps(ntr, ftr):
|
||||||
|
break
|
||||||
|
else:
|
||||||
|
rval.append((ntr, [], [tr]))
|
||||||
|
|
||||||
|
#must sort in ascending order
|
||||||
|
rval.sort(lambda x,y:cmp(x[0][0], y[0][0]))
|
||||||
|
|
||||||
|
return rval
|
||||||
|
|
||||||
|
|
||||||
|
# returns the percentage of tr1 that overlaps tr2
|
||||||
|
def poverlap(self, tr1, tr2):
|
||||||
|
itr = self._intersect(tr1, tr2)
|
||||||
|
return (itr[1] - itr[0]) / float(tr1[1] - tr1[0])
|
||||||
|
|
||||||
|
def calcGrid(self, SnowAmt, SnowAmt_ISC):
|
||||||
|
# If getInventory() works right
|
||||||
|
# we either get 0 or 1 SnowAmt grids.
|
||||||
|
# And if 0 then only 1 SnowAmt_ISC
|
||||||
|
if len(SnowAmt) == 0:
|
||||||
|
return SnowAmt_ISC[0][1]
|
||||||
|
rval = SnowAmt[0][1] * 0.0
|
||||||
|
for i in SnowAmt_ISC:
|
||||||
|
rval = rval + i[1] * self.poverlap(i[0], SnowAmt[0][0])
|
||||||
|
return rval
|
||||||
|
|
||||||
|
def calcHistory(self, SnowAmt_ISC):
|
||||||
|
rval = []
|
||||||
|
for t in SnowAmt_ISC:
|
||||||
|
for i in t[1]:
|
||||||
|
rval.append(i)
|
||||||
|
return rval
|
||||||
|
|
||||||
|
def getWEInfo(self):
|
||||||
|
# For some reason, setting time dependent to YES
|
||||||
|
# makes the GFE loose this ???
|
||||||
|
|
||||||
|
return (("SnowAmt", SCALAR, "in","Snowfall amount", 20.0, 0.0, 1, YES),
|
||||||
|
("ISC", "V"), (3600, 3600, 0))
|
||||||
|
|
||||||
|
def _containsTR(self, tr1, tr2):
|
||||||
|
if tr1 == tr2:
|
||||||
|
return True
|
||||||
|
return self._contains(tr1, tr2[0]) and self._contains(tr1, tr2[1])
|
||||||
|
|
||||||
|
def _contains(self, timerange, time):
|
||||||
|
if timerange[1] - timerange[0]:
|
||||||
|
return ((time >= timerange[0]) and (time < timerange[1]))
|
||||||
|
return time == timerange[0]
|
||||||
|
|
||||||
|
def _overlaps(self, tr1, tr2):
|
||||||
|
if self._contains(tr2, tr1[0]) or self._contains(tr1, tr2[0]):
|
||||||
|
return True
|
||||||
|
return False
|
||||||
|
|
||||||
|
def _intersect(self, t1, t2):
|
||||||
|
if self._overlaps(t1, t2):
|
||||||
|
return (max(t1[0], t2[0]), min(t1[1], t2[1]))
|
||||||
|
return None
|
|
@ -0,0 +1,95 @@
|
||||||
|
# -*-python-*-
|
||||||
|
import time
|
||||||
|
from numpy import *
|
||||||
|
|
||||||
|
SCALAR = 'Scalar'
|
||||||
|
VECTOR = 'Vector'
|
||||||
|
WEATHER = 'Weather'
|
||||||
|
DISCRETE = 'Discrete'
|
||||||
|
YES = True
|
||||||
|
NO = False
|
||||||
|
|
||||||
|
class VCParm:
|
||||||
|
def splitTR(self, tr, inv):
|
||||||
|
for btr in inv:
|
||||||
|
if self._overlaps(btr, tr):
|
||||||
|
if self._containsTR(btr, tr):
|
||||||
|
return []
|
||||||
|
else:
|
||||||
|
splitlst = []
|
||||||
|
if not self._contains(btr, tr[0]):
|
||||||
|
splitlst = splitlst + self.splitTR((tr[0], btr[0]),
|
||||||
|
inv)
|
||||||
|
if not self._contains(btr, tr[1]):
|
||||||
|
splitlst = splitlst + self.splitTR((btr[1], tr[1]),
|
||||||
|
inv)
|
||||||
|
return splitlst
|
||||||
|
return [tr]
|
||||||
|
|
||||||
|
def tcmp(self, t1, t2):
|
||||||
|
return cmp(t1[0], t2[0])
|
||||||
|
|
||||||
|
def getInventory(self, MaxT, MaxT_ISC):
|
||||||
|
# all Fcst grids get included if they overlap an ISC grid
|
||||||
|
# return list is sorted in ascending time
|
||||||
|
|
||||||
|
rval = []
|
||||||
|
for tr in MaxT:
|
||||||
|
lst = []
|
||||||
|
for itr in MaxT_ISC:
|
||||||
|
if self._overlaps(tr, itr):
|
||||||
|
lst.append(itr)
|
||||||
|
if len(lst):
|
||||||
|
rval.append((tr, [tr], lst))
|
||||||
|
|
||||||
|
return rval
|
||||||
|
|
||||||
|
# returns the percentage of tr1 that overlaps tr2
|
||||||
|
def poverlap(self, tr1, tr2):
|
||||||
|
itr = self._intersect(tr1, tr2)
|
||||||
|
return (itr[1] - itr[0]) / float(tr1[1] - tr1[0])
|
||||||
|
|
||||||
|
def calcGrid(self, MaxT, MaxT_ISC):
|
||||||
|
# If getInventory() works right
|
||||||
|
# we either get 0 or 1 MaxT grids.
|
||||||
|
# And if 0 then only 1 MaxT_ISC
|
||||||
|
if len(MaxT) == 0:
|
||||||
|
return MaxT_ISC[0][1]
|
||||||
|
rval = MaxT_ISC[0][1]
|
||||||
|
for i in MaxT_ISC:
|
||||||
|
rval = maximum(i[1], rval)
|
||||||
|
return rval
|
||||||
|
|
||||||
|
def calcHistory(self, MaxT_ISC):
|
||||||
|
rval = []
|
||||||
|
for t in MaxT_ISC:
|
||||||
|
for i in t[1]:
|
||||||
|
rval.append(i)
|
||||||
|
return rval
|
||||||
|
|
||||||
|
def getWEInfo(self):
|
||||||
|
# For some reason, setting time dependent to YES
|
||||||
|
# makes the GFE loose this ???
|
||||||
|
|
||||||
|
return (("MaxT", SCALAR,"F","Maximum Temperature",120.0, -60.0, 0, NO),
|
||||||
|
("ISC", "V"), (3600, 3600, 0))
|
||||||
|
|
||||||
|
def _containsTR(self, tr1, tr2):
|
||||||
|
if tr1 == tr2:
|
||||||
|
return True
|
||||||
|
return self._contains(tr1, tr2[0]) and self._contains(tr1, tr2[1])
|
||||||
|
|
||||||
|
def _contains(self, timerange, time):
|
||||||
|
if timerange[1] - timerange[0]:
|
||||||
|
return ((time >= timerange[0]) and (time < timerange[1]))
|
||||||
|
return time == timerange[0]
|
||||||
|
|
||||||
|
def _overlaps(self, tr1, tr2):
|
||||||
|
if self._contains(tr2, tr1[0]) or self._contains(tr1, tr2[0]):
|
||||||
|
return True
|
||||||
|
return False
|
||||||
|
|
||||||
|
def _intersect(self, t1, t2):
|
||||||
|
if self._overlaps(t1, t2):
|
||||||
|
return (max(t1[0], t2[0]), min(t1[1], t2[1]))
|
||||||
|
return None
|
|
@ -0,0 +1,94 @@
|
||||||
|
# -*-python-*-
|
||||||
|
import time
|
||||||
|
from numpy import *
|
||||||
|
|
||||||
|
SCALAR = 'Scalar'
|
||||||
|
VECTOR = 'Vector'
|
||||||
|
WEATHER = 'Weather'
|
||||||
|
DISCRETE = 'Discrete'
|
||||||
|
YES = True
|
||||||
|
NO = False
|
||||||
|
|
||||||
|
class VCParm:
|
||||||
|
def splitTR(self, tr, inv):
|
||||||
|
for btr in inv:
|
||||||
|
if self._overlaps(btr, tr):
|
||||||
|
if self._containsTR(btr, tr):
|
||||||
|
return []
|
||||||
|
else:
|
||||||
|
splitlst = []
|
||||||
|
if not self._contains(btr, tr[0]):
|
||||||
|
splitlst = splitlst + self.splitTR((tr[0], btr[0]),
|
||||||
|
inv)
|
||||||
|
if not self._contains(btr, tr[1]):
|
||||||
|
splitlst = splitlst + self.splitTR((btr[1], tr[1]),
|
||||||
|
inv)
|
||||||
|
return splitlst
|
||||||
|
return [tr]
|
||||||
|
|
||||||
|
def tcmp(self, t1, t2):
|
||||||
|
return cmp(t1[0], t2[0])
|
||||||
|
|
||||||
|
def getInventory(self, MinT, MinT_ISC):
|
||||||
|
# all Fcst grids get included if they overlap an ISC grid
|
||||||
|
# list is returned in ascending time
|
||||||
|
rval = []
|
||||||
|
for tr in MinT:
|
||||||
|
lst = []
|
||||||
|
for itr in MinT_ISC:
|
||||||
|
if self._overlaps(tr, itr):
|
||||||
|
lst.append(itr)
|
||||||
|
if len(lst):
|
||||||
|
rval.append((tr, [tr], lst))
|
||||||
|
|
||||||
|
return rval
|
||||||
|
|
||||||
|
# returns the percentage of tr1 that overlaps tr2
|
||||||
|
def poverlap(self, tr1, tr2):
|
||||||
|
itr = self._intersect(tr1, tr2)
|
||||||
|
return (itr[1] - itr[0]) / float(tr1[1] - tr1[0])
|
||||||
|
|
||||||
|
def calcGrid(self, MinT, MinT_ISC):
|
||||||
|
# If getInventory() works right
|
||||||
|
# we either get 0 or 1 MinT grids.
|
||||||
|
# And if 0 then only 1 MinT_ISC
|
||||||
|
# [(intr, grid, mask), ...]
|
||||||
|
if len(MinT) == 0:
|
||||||
|
return MinT_ISC[0][1]
|
||||||
|
#max value for this parm
|
||||||
|
maxV = self.getWEInfo()[0][4]
|
||||||
|
rval = where(MinT_ISC[0][2], MinT_ISC[0][1], maxV)
|
||||||
|
for i in MinT_ISC:
|
||||||
|
rval = where(i[2], minimum(i[1], rval), rval)
|
||||||
|
return rval
|
||||||
|
|
||||||
|
def calcHistory(self, MinT_ISC):
|
||||||
|
rval = []
|
||||||
|
for t in MinT_ISC:
|
||||||
|
for i in t[1]:
|
||||||
|
rval.append(i)
|
||||||
|
return rval
|
||||||
|
|
||||||
|
def getWEInfo(self):
|
||||||
|
return (("MinT", SCALAR,"F","Minimum Temperature",120.0, -60.0, 0, NO),
|
||||||
|
("ISC", "V"), (3600, 3600, 0))
|
||||||
|
|
||||||
|
def _containsTR(self, tr1, tr2):
|
||||||
|
if tr1 == tr2:
|
||||||
|
return True
|
||||||
|
return self._contains(tr1, tr2[0]) and self._contains(tr1, tr2[1])
|
||||||
|
|
||||||
|
def _contains(self, timerange, time):
|
||||||
|
if timerange[1] - timerange[0]:
|
||||||
|
return ((time >= timerange[0]) and (time < timerange[1]))
|
||||||
|
return time == timerange[0]
|
||||||
|
|
||||||
|
def _overlaps(self, tr1, tr2):
|
||||||
|
if self._contains(tr2, tr1[0]) or self._contains(tr1, tr2[0]):
|
||||||
|
return True
|
||||||
|
return False
|
||||||
|
|
||||||
|
def _intersect(self, t1, t2):
|
||||||
|
if self._overlaps(t1, t2):
|
||||||
|
return (max(t1[0], t2[0]), min(t1[1], t2[1]))
|
||||||
|
return None
|
|
@ -0,0 +1,108 @@
|
||||||
|
# -*-python-*-
|
||||||
|
import time
|
||||||
|
from numpy import *
|
||||||
|
|
||||||
|
SCALAR = 'Scalar'
|
||||||
|
VECTOR = 'Vector'
|
||||||
|
WEATHER = 'Weather'
|
||||||
|
DISCRETE = 'Discrete'
|
||||||
|
YES = True
|
||||||
|
NO = False
|
||||||
|
|
||||||
|
class VCParm:
|
||||||
|
def splitTR(self, tr, inv):
|
||||||
|
for btr in inv:
|
||||||
|
if self._overlaps(btr, tr):
|
||||||
|
if self._containsTR(btr, tr):
|
||||||
|
return []
|
||||||
|
else:
|
||||||
|
splitlst = []
|
||||||
|
if not self._contains(btr, tr[0]):
|
||||||
|
splitlst = splitlst + self.splitTR((tr[0], btr[0]),
|
||||||
|
inv)
|
||||||
|
if not self._contains(btr, tr[1]):
|
||||||
|
splitlst = splitlst + self.splitTR((btr[1], tr[1]),
|
||||||
|
inv)
|
||||||
|
return splitlst
|
||||||
|
return [tr]
|
||||||
|
|
||||||
|
def tcmp(self, t1, t2):
|
||||||
|
return cmp(t1[0], t2[0])
|
||||||
|
|
||||||
|
def getInventory(self, PoP, PoP_ISC):
|
||||||
|
# all Fcst grids get included if they overlap an ISC grid
|
||||||
|
# list is sorted in ascending time.
|
||||||
|
rval = []
|
||||||
|
for tr in PoP:
|
||||||
|
lst = []
|
||||||
|
for itr in PoP_ISC:
|
||||||
|
if self._overlaps(tr, itr):
|
||||||
|
lst.append(itr)
|
||||||
|
if len(lst):
|
||||||
|
rval.append((tr, [tr], lst))
|
||||||
|
|
||||||
|
# Any ISC grid which does not overlap
|
||||||
|
# or any portion that does not overlap
|
||||||
|
# goes in as well
|
||||||
|
for tr in PoP_ISC:
|
||||||
|
for ntr in self.splitTR(tr, PoP):
|
||||||
|
for ftr in PoP:
|
||||||
|
if self._overlaps(ntr, ftr):
|
||||||
|
break
|
||||||
|
else:
|
||||||
|
rval.append((ntr, [], [tr]))
|
||||||
|
|
||||||
|
#sort the times by starting times
|
||||||
|
rval.sort(lambda x,y:cmp(x[0][0], y[0][0]))
|
||||||
|
return rval
|
||||||
|
|
||||||
|
|
||||||
|
# returns the percentage of tr1 that overlaps tr2
|
||||||
|
def poverlap(self, tr1, tr2):
|
||||||
|
itr = self._intersect(tr1, tr2)
|
||||||
|
return (itr[1] - itr[0]) / float(tr1[1] - tr1[0])
|
||||||
|
|
||||||
|
def calcGrid(self, PoP, PoP_ISC):
|
||||||
|
# If getInventory() works right
|
||||||
|
# we either get 0 or 1 PoP grids.
|
||||||
|
# And if 0 then only 1 PoP_ISC
|
||||||
|
if len(PoP) == 0:
|
||||||
|
return PoP_ISC[0][1]
|
||||||
|
rval = PoP_ISC[0][1]
|
||||||
|
for i in PoP_ISC:
|
||||||
|
rval = maximum(i[1], rval)
|
||||||
|
return rval
|
||||||
|
|
||||||
|
def calcHistory(self, PoP_ISC):
|
||||||
|
rval = []
|
||||||
|
for t in PoP_ISC:
|
||||||
|
for i in t[1]:
|
||||||
|
rval.append(i)
|
||||||
|
return rval
|
||||||
|
|
||||||
|
def getWEInfo(self):
|
||||||
|
# For some reason, setting time dependent to YES
|
||||||
|
# makes the GFE loose this ???
|
||||||
|
|
||||||
|
return (("PoP", SCALAR, "%", "Prob of Precip", 100.0, 0.0, 0, NO),
|
||||||
|
("ISC", "V"), (3600, 3600, 0))
|
||||||
|
|
||||||
|
def _containsTR(self, tr1, tr2):
|
||||||
|
if tr1 == tr2:
|
||||||
|
return True
|
||||||
|
return self._contains(tr1, tr2[0]) and self._contains(tr1, tr2[1])
|
||||||
|
|
||||||
|
def _contains(self, timerange, time):
|
||||||
|
if timerange[1] - timerange[0]:
|
||||||
|
return ((time >= timerange[0]) and (time < timerange[1]))
|
||||||
|
return time == timerange[0]
|
||||||
|
|
||||||
|
def _overlaps(self, tr1, tr2):
|
||||||
|
if self._contains(tr2, tr1[0]) or self._contains(tr1, tr2[0]):
|
||||||
|
return True
|
||||||
|
return False
|
||||||
|
|
||||||
|
def _intersect(self, t1, t2):
|
||||||
|
if self._overlaps(t1, t2):
|
||||||
|
return (max(t1[0], t2[0]), min(t1[1], t2[1]))
|
||||||
|
return None
|
|
@ -0,0 +1,59 @@
|
||||||
|
##
|
||||||
|
# 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.
|
||||||
|
##
|
||||||
|
|
||||||
|
#
|
||||||
|
# Globally import and sets up instances of the smart tool scripts.
|
||||||
|
# Designed to be used as a master controller for inspecting and running
|
||||||
|
# smart tools from Java.
|
||||||
|
#
|
||||||
|
#
|
||||||
|
#
|
||||||
|
# SOFTWARE HISTORY
|
||||||
|
#
|
||||||
|
# Date Ticket# Engineer Description
|
||||||
|
# ------------ ---------- ----------- --------------------------
|
||||||
|
# 10/21/08 njensen Initial Creation.
|
||||||
|
#
|
||||||
|
#
|
||||||
|
#
|
||||||
|
|
||||||
|
import numpy
|
||||||
|
import sys
|
||||||
|
|
||||||
|
import JUtil
|
||||||
|
import MasterInterface
|
||||||
|
|
||||||
|
|
||||||
|
class VCModuleInterface(MasterInterface.MasterInterface):
|
||||||
|
|
||||||
|
def __init__(self, scriptPath):
|
||||||
|
MasterInterface.MasterInterface.__init__(self)
|
||||||
|
self.importModules(scriptPath)
|
||||||
|
|
||||||
|
def getMethodArgNames(self, moduleName, className, methodName):
|
||||||
|
from java.util import ArrayList
|
||||||
|
args = self.getMethodArgs(moduleName, className, methodName)
|
||||||
|
argList = ArrayList()
|
||||||
|
for a in args:
|
||||||
|
argList.add(a)
|
||||||
|
return argList
|
||||||
|
|
||||||
|
def getMethodArgs(self, moduleName, className, methodName):
|
||||||
|
return MasterInterface.MasterInterface.getMethodArgs(self, moduleName, className, methodName)[1:]
|
|
@ -93,8 +93,7 @@ public class GfePyIncludeUtil extends PythonIncludePathUtil {
|
||||||
|
|
||||||
public static final String VCMODULES = FileUtil.join(GFE, "vcmodule");
|
public static final String VCMODULES = FileUtil.join(GFE, "vcmodule");
|
||||||
|
|
||||||
public static final String VCMOD_UTILS = FileUtil
|
public static final String VCMOD_UTILS = FileUtil.join(GFE, "utility");
|
||||||
.join(VCMODULES, "utility");
|
|
||||||
|
|
||||||
public static LocalizationFile getCommonGfeLF(LocalizationContext ctx) {
|
public static LocalizationFile getCommonGfeLF(LocalizationContext ctx) {
|
||||||
return PATH_MANAGER.getLocalizationFile(ctx, COMMON_GFE);
|
return PATH_MANAGER.getLocalizationFile(ctx, COMMON_GFE);
|
||||||
|
@ -367,7 +366,8 @@ public class GfePyIncludeUtil extends PythonIncludePathUtil {
|
||||||
String userDir = getPath(PATH_MANAGER.getContext(
|
String userDir = getPath(PATH_MANAGER.getContext(
|
||||||
LocalizationType.COMMON_STATIC, LocalizationLevel.USER),
|
LocalizationType.COMMON_STATIC, LocalizationLevel.USER),
|
||||||
VCMODULES);
|
VCMODULES);
|
||||||
return PyUtil.buildJepIncludePath(userDir, siteDir, baseDir);
|
return PyUtil.buildJepIncludePath(userDir, siteDir, baseDir,
|
||||||
|
"/awips2/python/lib/python2.7/site-packages/gfe");
|
||||||
}
|
}
|
||||||
|
|
||||||
public static String getVCModUtilsIncludePath() {
|
public static String getVCModUtilsIncludePath() {
|
||||||
|
|
|
@ -11,7 +11,7 @@ then
|
||||||
fi
|
fi
|
||||||
|
|
||||||
export PATH=$PATH:$GFESUITE_HOME/bin:$GFESUITE_HOME/ServiceBackup/scripts:/awips2/fxa/bin/
|
export PATH=$PATH:$GFESUITE_HOME/bin:$GFESUITE_HOME/ServiceBackup/scripts:/awips2/fxa/bin/
|
||||||
source /etc/profile.d/awips2Python.sh
|
source /etc/profile.d/awips2.sh
|
||||||
|
|
||||||
# Make the directories
|
# Make the directories
|
||||||
[ ! -d ${SVCBU_HOME} ] && (umask 000;mkdir -p ${SVCBU_HOME})
|
[ ! -d ${SVCBU_HOME} ] && (umask 000;mkdir -p ${SVCBU_HOME})
|
||||||
|
|
|
@ -379,7 +379,7 @@ edex_users(){
|
||||||
if [ "${args[1]}" != '' ]; then
|
if [ "${args[1]}" != '' ]; then
|
||||||
YMD=${args[1]}
|
YMD=${args[1]}
|
||||||
fi
|
fi
|
||||||
userList=$(cat ${LOG_PATH}/edex-request-thriftSrv-${YMD}.log |grep ":CAVE:"|cut -d "[" -f 3| cut -d ":" -f 1|sort | uniq)
|
userList=$(cat ${LOG_PATH}/edex-request-${YMD}.log |grep ":CAVE:"|cut -d "[" -f 3| cut -d ":" -f 1|sort | uniq)
|
||||||
echo ""
|
echo ""
|
||||||
echo " -- EDEX Users ${YMD} --"
|
echo " -- EDEX Users ${YMD} --"
|
||||||
echo "$userList"
|
echo "$userList"
|
||||||
|
|
|
@ -42,7 +42,7 @@ function lookupRPM()
|
||||||
return 0
|
return 0
|
||||||
fi
|
fi
|
||||||
if [ "${1}" = "awips2-python" ]; then
|
if [ "${1}" = "awips2-python" ]; then
|
||||||
export RPM_SPECIFICATION="${installer_dir}/python-2.7.9/"
|
export RPM_SPECIFICATION="${installer_dir}/python-2.7.10/"
|
||||||
return 0
|
return 0
|
||||||
fi
|
fi
|
||||||
if [ "${1}" = "awips2-python-cherrypy" ]; then
|
if [ "${1}" = "awips2-python-cherrypy" ]; then
|
||||||
|
|
|
@ -124,6 +124,7 @@ if [ "${1}" = "-jep" ]; then
|
||||||
fi
|
fi
|
||||||
if [ "${1}" = "-pydev" ]; then
|
if [ "${1}" = "-pydev" ]; then
|
||||||
#buildRPM "awips2-python"
|
#buildRPM "awips2-python"
|
||||||
|
buildRPM "awips2-python-scientific"
|
||||||
#buildRPM "awips2-python-awips"
|
#buildRPM "awips2-python-awips"
|
||||||
#buildRPM "awips2-python-jep"
|
#buildRPM "awips2-python-jep"
|
||||||
#buildRPM "awips2-python-gfe"
|
#buildRPM "awips2-python-gfe"
|
||||||
|
@ -136,7 +137,7 @@ if [ "${1}" = "-pydev" ]; then
|
||||||
|
|
||||||
#buildRPM "awips2-python-cycler"
|
#buildRPM "awips2-python-cycler"
|
||||||
#buildRPM "awips2-python-shapely"
|
#buildRPM "awips2-python-shapely"
|
||||||
buildRPM "awips2-python-cython"
|
#buildRPM "awips2-python-cython"
|
||||||
|
|
||||||
#buildRPM "awips2-python-metpy"
|
#buildRPM "awips2-python-metpy"
|
||||||
#buildRPM "awips2-python-cartopy"
|
#buildRPM "awips2-python-cartopy"
|
||||||
|
@ -577,8 +578,8 @@ if [ "${1}" = "-viz" ]; then
|
||||||
if [ $? -ne 0 ]; then
|
if [ $? -ne 0 ]; then
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
buildRPM "awips2-alertviz"
|
#buildRPM "awips2-alertviz"
|
||||||
buildRPM "awips2-notification"
|
#buildRPM "awips2-notification"
|
||||||
exit 0
|
exit 0
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|
|
@ -9,7 +9,7 @@
|
||||||
Name: awips2-python-scientific
|
Name: awips2-python-scientific
|
||||||
Summary: AWIPS II Python scientific Distribution
|
Summary: AWIPS II Python scientific Distribution
|
||||||
Version: 2.8
|
Version: 2.8
|
||||||
Release: 4
|
Release: 5
|
||||||
Group: AWIPSII
|
Group: AWIPSII
|
||||||
BuildRoot: %{_build_root}
|
BuildRoot: %{_build_root}
|
||||||
BuildArch: %{_build_arch}
|
BuildArch: %{_build_arch}
|
||||||
|
|
|
@ -44,6 +44,7 @@ echo WORKSPACE is ${WORKSPACE}
|
||||||
# prepare the baseline
|
# prepare the baseline
|
||||||
pushd . > /dev/null 2>&1
|
pushd . > /dev/null 2>&1
|
||||||
cd ${BASELINE}
|
cd ${BASELINE}
|
||||||
|
mkdir -p ${WORKSPACE}
|
||||||
RSYNC_DIRS=`cat $dir/rsync.dirs`
|
RSYNC_DIRS=`cat $dir/rsync.dirs`
|
||||||
rsync -ruql --delete --exclude-from=${dir}/excludes ${RSYNC_DIRS} ${WORKSPACE}
|
rsync -ruql --delete --exclude-from=${dir}/excludes ${RSYNC_DIRS} ${WORKSPACE}
|
||||||
|
|
||||||
|
|
|
@ -13,7 +13,7 @@ export BUILD_WORKSPACE=${BUILD_DIR}/workspace
|
||||||
# baseline is...
|
# baseline is...
|
||||||
export BASELINE="${JENKINS_WORKSPACE}"
|
export BASELINE="${JENKINS_WORKSPACE}"
|
||||||
export AWIPSII_VERSION="16.1.5"
|
export AWIPSII_VERSION="16.1.5"
|
||||||
export AWIPSII_RELEASE="1"
|
export AWIPSII_RELEASE="3"
|
||||||
|
|
||||||
export AWIPSII_TOP_DIR="${BUILD_WORKSPACE}/tmp/rpms_built_dir"
|
export AWIPSII_TOP_DIR="${BUILD_WORKSPACE}/tmp/rpms_built_dir"
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue