Merge tag 'OB_16.1.1-2' into omaha_16.2.1

16.1.1-2

 Conflicts:
	cave/com.raytheon.viz.gfe/localization/gfe/userPython/utilities/SmartScript.py
	cave/com.raytheon.viz.gfe/src/com/raytheon/viz/gfe/BaseGfePyController.java
	cave/com.raytheon.viz.gfe/src/com/raytheon/viz/gfe/smarttool/SmartUtil.java
	cave/com.raytheon.viz.gfe/src/com/raytheon/viz/gfe/smarttool/Tool.java
	cave/com.raytheon.viz.gfe/src/com/raytheon/viz/gfe/smarttool/script/SmartToolJobPool.java


Former-commit-id: 8053621c46adc8813128ecfa81c0834f670db64f
This commit is contained in:
Steve Harris 2015-08-03 17:06:31 -05:00
commit f696d5731d
122 changed files with 60599 additions and 551275 deletions

View file

@ -371,6 +371,23 @@
</ini-substitutions>
</memory-setting>
<memory-setting>
<command-line-args>
<first-arg>-component</first-arg>
<second-arg>hydroXdat</second-arg>
</command-line-args>
<ini-substitutions>
<max-memory>
<value>256M</value>
</max-memory>
<max-perm>
<value>64M</value>
</max-perm>
</ini-substitutions>
</memory-setting>
<memory-setting>
<command-line-args>
<first-arg>-component</first-arg>

View file

@ -27,6 +27,7 @@
# ------------ ---------- ----------- --------------------------
# Oct 09, 2014 #3675 bclement added cleanExit signal trap
# Jun 17, 2015 #4148 rferrel Logback needs fewer environment variables.
# Jul 23, 2015 ASM#13849 D. Friedman Use a unique Eclipse configuration directory
#
user=`/usr/bin/whoami`
@ -103,6 +104,32 @@ if [ ! -d $LOGDIR ]; then
mkdir -p $LOGDIR
fi
SWITCHES=()
function deleteEclipseConfigurationDir()
{
if [[ -n $eclipseConfigurationDir ]]; then
rm -rf "$eclipseConfigurationDir"
fi
}
function createEclipseConfigurationDir()
{
local d dir id=$(hostname)-$(whoami)
for d in "/local/cave-eclipse/" "$HOME/.cave-eclipse/"; do
if dir=$(mktemp -d -p "$d" "${id}-XXXX"); then
eclipseConfigurationDir=$dir
trap deleteEclipseConfigurationDir EXIT
SWITCHES+=(-configuration "$eclipseConfigurationDir")
return 0
fi
done
echo "Unable to create a unique Eclipse configuration directory. Will proceed with default." >&2
return 1
}
createEclipseConfigurationDir
# takes in a process id
# kills spawned subprocesses of pid
# and then kills the process itself and exits
@ -130,9 +157,9 @@ do
exitVal=0
else
if [ -w ${LOGDIR} ] ; then
${dir}/alertviz $* > /dev/null 2>&1 &
${dir}/alertviz "${SWITCHES[@]}" $* > /dev/null 2>&1 &
else
${dir}/alertviz $* &
${dir}/alertviz "${SWITCHES[@]}" $* &
fi
pid=$!
wait $pid

View file

@ -35,6 +35,7 @@
# Oct 13, 2014 #3675 bclement startup shutdown log includes both launching pid and placeholder
# Jan 28, 2015 #4018 randerso Added a productEditor log file to changes in the GFE product editor
# Jun 17, 2015 #4148 rferrel Logback needs fewer environment variables.
# Jul 23, 2015 ASM#13849 D. Friedman Use a unique Eclipse configuration directory
#
@ -91,6 +92,7 @@ if [ $? -ne 0 ]; then
fi
export apps_dir=${HYDRO_APPS_DIR}
SWITCHES=()
TESTCHECK="$TMCP_HOME/bin/getTestMode"
if [ -x ${TESTCHECK} ]; then
echo "Calling getTestMode()"
@ -98,16 +100,15 @@ if [ -x ${TESTCHECK} ]; then
status=${?}
if [ $status -eq 11 ]; then
MODE="TEST"
SWITCHES="${SWITCHES} -mode TEST "
SWITCHES+=(-mode TEST)
elif [ $status -eq 12 ];then
MODE="PRACTICE"
SWITCHES="${SWITCHES} -mode PRACTICE "
SWITCHES+=(-mode PRACTICE)
elif [ $status -eq 15 ];then
MODE="OPERATIONAL"
SWITCHES="${SWITCHES} -mode OPERATIONAL"
SWITCHES+=(-mode OPERATIONAL)
else
MODE="OPERATIONAL (no response)"
SWITCHES="${SWITCHES} "
fi
echo "getTestMode() returned ${MODE}"
else
@ -210,6 +211,8 @@ curTime=`date +%Y%m%d_%H%M%S`
pid=$!
export LOGFILE_STARTUP_SHUTDOWN="${LOGDIR}/${PROGRAM_NAME}_${pid}_${curTime}_pid_%PID%_startup-shutdown.log"
createEclipseConfigurationDir
# At this point fork so that log files can be set up with the process pid and
# this process can log the exit status of cave.
(
@ -235,20 +238,25 @@ export LOGFILE_STARTUP_SHUTDOWN="${LOGDIR}/${PROGRAM_NAME}_${pid}_${curTime}_pid
lookupINI "${USER_ARGS[@]}"
# Make it easy to determine which process is using the directory
if [[ -n $eclipseConfigurationDir ]]; then
echo "$$" > "$eclipseConfigurationDir"/pid
fi
if [[ "${runMonitorThreads}" == "true" ]] ; then
# nohup to allow tar process to continue after user has logged out
nohup ${CAVE_INSTALL}/monitorThreads.sh $pid >> /dev/null 2>&1 &
fi
echo "Launching cave application using the following command: " >> ${LOGFILE_STARTUP_SHUTDOWN}
echo "${CAVE_INSTALL}/cave ${CAVE_INI_ARG} ${SWITCHES} ${USER_ARGS[@]}" >> ${LOGFILE_STARTUP_SHUTDOWN}
echo "${CAVE_INSTALL}/cave ${CAVE_INI_ARG} ${SWITCHES[@]} ${USER_ARGS[@]}" >> ${LOGFILE_STARTUP_SHUTDOWN}
if [[ "${redirect}" == "true" ]] ; then
# send output to /dev/null because the logback CaveConsoleAppender will capture that output
exec ${CAVE_INSTALL}/cave ${CAVE_INI_ARG} ${SWITCHES} "${USER_ARGS[@]}" >> /dev/null 2>&1
exec ${CAVE_INSTALL}/cave ${CAVE_INI_ARG} "${SWITCHES[@]}" "${USER_ARGS[@]}" >> /dev/null 2>&1
else
# allow output to print to the console/terminal that launched CAVE
exec ${CAVE_INSTALL}/cave ${CAVE_INI_ARG} ${SWITCHES} "${USER_ARGS[@]}" 2>&1
exec ${CAVE_INSTALL}/cave ${CAVE_INI_ARG} "${SWITCHES[@]}" "${USER_ARGS[@]}" 2>&1
fi
) &

View file

@ -37,6 +37,7 @@
# Jul 10, 2014 #3363 bclement fixed precedence order for ini file lookup
# Jul 11, 2014 #3371 bclement added killSpawn()
# Oct 13, 2014 #3675 bclement logExitStatus() waits for child to start and renames log with child PID
# Jul 23, 2015 ASM#13849 D. Friedman Use a unique Eclipse configuration directory
source /awips2/cave/iniLookup.sh
@ -391,3 +392,25 @@ function deleteOldCaveLogs()
}
function deleteEclipseConfigurationDir()
{
if [[ -n $eclipseConfigurationDir ]]; then
rm -rf "$eclipseConfigurationDir"
fi
}
function createEclipseConfigurationDir()
{
local d dir id=$(hostname)-$(whoami)
for d in "/local/cave-eclipse/" "$HOME/.cave-eclipse/"; do
if dir=$(mktemp -d -p "$d" "${id}-XXXX"); then
eclipseConfigurationDir=$dir
trap deleteEclipseConfigurationDir EXIT
SWITCHES+=(-configuration "$eclipseConfigurationDir")
return 0
fi
done
echo "Unable to create a unique Eclipse configuration directory. Will proceed with default." >&2
return 1
}

View file

@ -74,12 +74,13 @@ import com.raytheon.uf.viz.core.VizApp;
* SOFTWARE HISTORY
*
* Date Ticket# Engineer Description
* ------------ ---------- ----------- --------------------------
* Sep 04, 2008 1433 chammack Initial creation
* Jun 03, 2013 2026 randerso Improve error handling
* May 05, 2015 4473 mschenke Major refactor
* Jun 01, 2015 4473 njensen Major refactor, removed send ability
* Jun 29, 2015 4473 njensen Register notification observer on start
* ------------ ---------- ----------- ---------------------------------
* Sep 4, 2008 1433 chammack Initial creation
* Jun 3, 2013 2026 randerso Improve error handling
* May 05, 2015 4473 mschenke Major refactor
* Jun 01, 2015 4473 njensen Major refactor, removed send ability
* Jun 29, 2015 4473 njensen Register notification observer on start
* Jul 4, 2015 DR 17167 dhuffman Remove nulls from incoming xml
*
* </pre>
*
@ -260,7 +261,7 @@ public class AlertvizJob extends Job implements AlertService {
if (message instanceof TextMessage) {
String xml = null;
try {
xml = ((TextMessage) message).getText();
xml = ((TextMessage) message).getText().replace("\u0000", "");
StatusMessage sm = jaxb.unmarshalFromXml(StatusMessage.class,
xml);
if (sm.getEventTime() == null) {

View file

@ -73,6 +73,7 @@ import com.raytheon.viz.ui.actions.DummyAction;
* when magnification set to 0
* Aug 2, 2013 DR 16427 Qinglu Lin (David's approach) Changing InputPriority.SYSTEM_RESOURCE to
* InputPriority.SYSTEM_RESOURCE_LOW in initInternal().
* Jun 30, 2015 RM14663 kshresth Font size increased for Contour labels.
*
* </pre>
*
@ -571,7 +572,7 @@ public class D2DLegendResource extends
private float getScaledMagnification() {
float magnification = getCapability(MagnificationCapability.class)
.getMagnification().floatValue();
if (magnification < 0.6f) {
if (magnification < 0.9f) {
magnification = 1.0f;
} else if (magnification > 1.0f) {
magnification = 1 + (magnification / 4.0f);

View file

@ -83,6 +83,8 @@ import com.raytheon.uf.viz.d2d.core.D2DLoadProperties;
* null dataTimes.
* May 13, 2015 4461 bsteffen Move the logic to change frames into the
* FrameCoordinator.
* Jul 14, 2015 DR 13900 D. Friedman Validate descriptor of time match basis
* before time matching it.
*
* </pre>
*
@ -246,8 +248,13 @@ public class D2DTimeMatcher extends AbstractTimeMatcher {
if (timeMatchBasis != null) {
IDescriptor tmDescriptor = timeMatchBasis.getDescriptor();
if (tmDescriptor != null) {
if (tmDescriptor != descriptor) {
redoTimeMatching(tmDescriptor);
if (tmDescriptor != descriptor
&& tmDescriptor.getTimeMatcher() == this) {
if (validateDescriptor(tmDescriptor)) {
redoTimeMatching(tmDescriptor);
} else {
changeTimeMatchBasis(null);
}
} else if (contained(tmDescriptor, timeMatchBasis) == false) {
// Checks to ensure the timeMatchBasis is not "orphaned"
timeMatchBasis = null;
@ -1052,4 +1059,23 @@ public class D2DTimeMatcher extends AbstractTimeMatcher {
return false;
}
boolean rocket = true;
private boolean validateDescriptor(IDescriptor descriptor) {
if (! rocket)
return true;
IRenderableDisplay display = descriptor.getRenderableDisplay();
IDisplayPaneContainer container = display != null ? display
.getContainer() : null;
if (container != null) {
for (IDisplayPane pane : container.getDisplayPanes()) {
IRenderableDisplay paneDisplay = pane.getRenderableDisplay();
IDescriptor paneDescriptor = paneDisplay != null ? paneDisplay
.getDescriptor() : null;
if (paneDescriptor == descriptor)
return true;
}
}
return false;
}
}

View file

@ -99,6 +99,7 @@ import com.raytheon.viz.ui.dialogs.ICloseCallback;
* (background/foreground colors) since the Redhat
* 6 upgrade causes the check in the checkbox to be
* colored the same as the background.
* Jul, 20 2015 #17584 lshi The SCAN Cell table quit updating caused by NPE
*
* </pre>
*
@ -1173,6 +1174,7 @@ public class SCANCellTableDlg extends AbstractTableDlg implements
}
}
if (((scanTable == ScanTables.CELL) || (scanTable == ScanTables.DMD))
&& (EditorUtil.getActiveVizContainer() != null)
&& !(EditorUtil.getActiveVizContainer()
.getLoopProperties().isLooping())
&& (mgr.getScheduledAlarms(site, scanTable).size() > 0)

View file

@ -36,7 +36,7 @@
<constraint constraintValue="grid"/>
</mapping>
<mapping key="info.datasetId">
<constraint constraintValue="RUC236"/>
<constraint constraintValue="RUC130"/>
</mapping>
</constraints>
</source>
@ -47,7 +47,7 @@
<constraint constraintValue="grid"/>
</mapping>
<mapping key="info.datasetId">
<constraint constraintValue="Laps"/>
<constraint constraintValue="LAPS"/>
</mapping>
</constraints>
</source>

View file

@ -44,6 +44,7 @@ import com.raytheon.uf.viz.core.exception.VizException;
* Feb 16, 2011 7878 rferrel Modifications for create ident/site.
* May 10, 2011 9059 rferrel Extended times outs on executes
* Jun 01, 2011 7878 rferrel Adjusted time out when creating nc files
* Jul 10, 2015 16907 zhao Changed time limit from 600 to 6000 for processData() & assessData()
*
* </pre>
*
@ -174,7 +175,7 @@ public class ClimateDataManager implements PyProcessListener {
args.put("climateDir", ishDir);
numSites = items.size();
pythonScript.execute("start", args,
ClimateDataManager.this, 600 * numSites);
ClimateDataManager.this, 6000 * numSites);
long t1 = System.currentTimeMillis();
System.out.println("assessData() running time: "
+ (t1 - t0));
@ -210,7 +211,7 @@ public class ClimateDataManager implements PyProcessListener {
Map<String, Object> args = new HashMap<String, Object>();
args.put("stnPickle", stnPickle);
pythonScript.execute("process", args,
ClimateDataManager.this, 600 * numSites);
ClimateDataManager.this, 6000 * numSites);
long t1 = System.currentTimeMillis();
System.out.println("processData() running time: "
+ (t1 - t0));

View file

@ -102,6 +102,7 @@ import com.raytheon.viz.ui.dialogs.ICloseCallback;
* Oct 09, 2012 #1229 rferrel Changes for non-blocking CigVisTrendDlg.
* Oct 15, 2012 #1229 rferrel Changes for non-blocking HelpUsageDlg.
* Mar 04, 2015 #15639 zhao Added 'heightHint' to 'Idents' list so GUI won't become too large
* Jul 07, 2015 16907 zhao Changed 'ish-' to 'isd-'
*
* </pre>
*
@ -367,7 +368,7 @@ public class ClimateDataMenuDlg extends CaveSWTDialog {
// Update NCDC menu item
MenuItem updateNcdcMI = new MenuItem(commandsMenu, SWT.NONE);
updateNcdcMI.setText("&Update NCDC \"ish\" Files...");
updateNcdcMI.setText("&Update NCDC \"isd\" Files...");
updateNcdcMI.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent event) {
@ -508,7 +509,7 @@ public class ClimateDataMenuDlg extends CaveSWTDialog {
if (mustCreate(usageDlg)) {
String description = "CLimate Data Update Dialog Help";
String helpText = "This dialog is used to create and append climatology data files.\n\nMenu Bar\nFile:\n\tQuit: Close the dialog immediately\n\nCommands:\n\tShow observations history: Opens a graphical display showing the current\n\t\t\t\t\tinventory of climate data available.\n\tUpdate NCDC \"ish\" files: Opens a dialog allowing the user to generate\n\t\t\t\t\tautomated scripts for downloading the Integrated\n\t\t\t\t\tSurface Hourly (ISH) Database.\n\nTools:\n\tPulldown menu consist of the AvnFPS Climate Tools that read the HDF5 climate\n\t\tfiles.\n\nOptions:\n\tAppend: Add new data to existing climate data file\n\tCreate: Generate new climate data files, regardless of whether a file for\n\t\t\tthat site already exists\n\nFields:\n\tSITE ID: Site ID of the site currently selected, or \n\t\t\ta user entered site ID if creating a new data file\n\tMETAR AFOS ID: The AFOS ID used to retrieve location's METAR product for\n\t\t\tuse in AvnFPS's climate Cig/Vis Trend tool.\n\nIdents:\n\tList of current site IDs.\n\nSite info list:\n\tList of IDs and years of data available for each selected site\n\nMonitor area:\n\tArea where all informative messages are displayed.\n\nButtons:\n\n\tAssess Data:\n\tAfter sites are selected, click this to start the creation\n\t\tor append process\n\n\tGenerate Scripts:\n\tGenerate download scripts to retrieve data files from NCDC\n\n\tProcess Data:\n\tIncorporate NCDC data into HDF5 file(s).\n\n\tValidate Data:\n\tTemporarily move newly changed/created files to a location\n\t\tso that AvnFPS climate tools can examine the new climate\n\t\tfile.\n\n\tCommit:\n\tMove newly changed/created files to its permanent location. \n\tClicking this will also generate new station climate qc \n\t\tfiles (files that end in .nc in the data/climate directory)\n\n\tReject:\n\tReject the newly created files in favor of the original file(s),\n\t\tif available. This action deletes newly created files.\n\n\tSave Log:\n\tSave all output in the Monitor area to a file";
String helpText = "This dialog is used to create and append climatology data files.\n\nMenu Bar\nFile:\n\tQuit: Close the dialog immediately\n\nCommands:\n\tShow observations history: Opens a graphical display showing the current\n\t\t\t\t\tinventory of climate data available.\n\tUpdate NCDC \"isd\" files: Opens a dialog allowing the user to generate\n\t\t\t\t\tautomated scripts for downloading the Integrated\n\t\t\t\t\tSurface Hourly (ISH) Database.\n\nTools:\n\tPulldown menu consist of the AvnFPS Climate Tools that read the HDF5 climate\n\t\tfiles.\n\nOptions:\n\tAppend: Add new data to existing climate data file\n\tCreate: Generate new climate data files, regardless of whether a file for\n\t\t\tthat site already exists\n\nFields:\n\tSITE ID: Site ID of the site currently selected, or \n\t\t\ta user entered site ID if creating a new data file\n\tMETAR AFOS ID: The AFOS ID used to retrieve location's METAR product for\n\t\t\tuse in AvnFPS's climate Cig/Vis Trend tool.\n\nIdents:\n\tList of current site IDs.\n\nSite info list:\n\tList of IDs and years of data available for each selected site\n\nMonitor area:\n\tArea where all informative messages are displayed.\n\nButtons:\n\n\tAssess Data:\n\tAfter sites are selected, click this to start the creation\n\t\tor append process\n\n\tGenerate Scripts:\n\tGenerate download scripts to retrieve data files from NCDC\n\n\tProcess Data:\n\tIncorporate NCDC data into HDF5 file(s).\n\n\tValidate Data:\n\tTemporarily move newly changed/created files to a location\n\t\tso that AvnFPS climate tools can examine the new climate\n\t\tfile.\n\n\tCommit:\n\tMove newly changed/created files to its permanent location. \n\tClicking this will also generate new station climate qc \n\t\tfiles (files that end in .nc in the data/climate directory)\n\n\tReject:\n\tReject the newly created files in favor of the original file(s),\n\t\tif available. This action deletes newly created files.\n\n\tSave Log:\n\tSave all output in the Monitor area to a file";
usageDlg = new HelpUsageDlg(shell, description, helpText);
usageDlg.open();
} else {
@ -1320,10 +1321,10 @@ public class ClimateDataMenuDlg extends CaveSWTDialog {
Pattern usaf_wbanPat = Pattern.compile(expr.toString());
// Parse the ish file and get the lines of interest.
// Parse the isd file and get the lines of interest.
java.util.List<String> lines = new ArrayList<String>();
File invFile = new File(ClimateDataPython.getIshFilePath()
+ "/ish-inventory.txt");
+ "/isd-inventory.txt");
BufferedReader input = new BufferedReader(new FileReader(invFile));
try {
String line = null;

View file

@ -44,6 +44,7 @@ import com.raytheon.viz.aviation.monitor.AvnPyUtil;
* ------------ ---------- ----------- --------------------------
* Nov 17, 2009 avarani Initial creation
* Feb 16, 2011 7878 rferrel Modifications for create ident/site.
* Jul 07, 2015 16907 zhao Changed 'ish-' to 'isd-'
*
* </pre>
*
@ -80,12 +81,12 @@ public class ClimateDataPython {
}
/**
* Obtain path name of the directory with the ISH files and verify the files
* Obtain path name of the directory with the ISD files and verify the files
* exist.
*
* @return dataDir
* @throws VizException
* when unable to find ISH files
* when unable to find ISD files
*/
public static String getIshFilePath() throws VizException {
String dataDirStr = VizApp.getDataDir();
@ -95,17 +96,17 @@ public class ClimateDataPython {
"Directory: \"%s\" does not exist.", dataDir.getPath()));
}
File histFile = new File(dataDir, "ish-history.txt");
File histFile = new File(dataDir, "isd-history.txt");
if (histFile == null || !histFile.exists()) {
throw new VizException(String.format(
"ISH history file: \"%s\" does not exist.",
"ISD history file: \"%s\" does not exist.",
histFile.getPath()));
}
File invFile = new File(dataDir, "ish-inventory.txt");
File invFile = new File(dataDir, "isd-inventory.txt");
if (invFile == null || !invFile.exists()) {
throw new VizException(String.format(
"ISH inventory file: \"%s\" does not exist.",
"ISD inventory file: \"%s\" does not exist.",
invFile.getPath()));
}

View file

@ -72,6 +72,8 @@ import com.raytheon.viz.ui.dialogs.CaveSWTDialog;
* to save a script.
* Oct 08, 2012 #1229 rferrel Made non-blocking.
* Aug 09, 2013 #2033 mschenke Switched File.separator to IPathManager.SEPARATOR
* Jul 10, 2015 16907 zhao Changed 'ish-' to 'isd-'
*
*
* </pre>
*
@ -272,9 +274,9 @@ public class GenScriptsDlg extends CaveSWTDialog {
String fname = null;
if (style.equals("inv")) {
fname = "ish-inventory.txt";
fname = "isd-inventory.txt";
} else {
fname = "ish-history.txt";
fname = "isd-history.txt";
}
scriptMsg.append(wgetStart).append(ftpIshDir).append("/")
@ -316,9 +318,9 @@ public class GenScriptsDlg extends CaveSWTDialog {
String fname = null;
if (style.equals("inv")) {
fname = "ish-inventory.txt";
fname = "isd-inventory.txt";
} else {
fname = "ish-history.txt";
fname = "isd-history.txt";
}
scriptMsg.append(">> script.ftp ECHO get ").append(fname)
@ -368,8 +370,7 @@ public class GenScriptsDlg extends CaveSWTDialog {
} else {
instructions = "==================================================\n";
instructions += "Please move this just-downloaded NCDC file to an\n";
instructions += "AWIPS machine into the " + targetPath
+ "/etc\n";
instructions += "AWIPS machine into the " + targetPath + "\n";
instructions += "directory.\n";
instructions += "==================================================\n";
}
@ -409,7 +410,7 @@ public class GenScriptsDlg extends CaveSWTDialog {
sb.append(ext);
scriptFile = sb.toString();
} else {
scriptFile = "getNCDC-ISHFile" + ext;
scriptFile = "getNCDC-ISDFile" + ext;
}
FileDialog dlg = new FileDialog(shell, SWT.SAVE);

View file

@ -56,7 +56,8 @@ import com.raytheon.viz.ui.dialogs.ICloseCallback;
* Nov 16, 2009 #3438 lvenable Initial creation
* Oct 08, 2012 #1229 rferrel Changes for non-blocking GenScriptsDlg.
* Oct 08, 2012 #1229 rferrel Make dialog non-blocking.
*
* Jul 07, 2015 16907 zhao changed 'ish-' to 'isd-'
*
* </pre>
*
* @author lvenable
@ -121,9 +122,9 @@ public class NCDCInvHistDlg extends CaveSWTDialog {
*/
private GenScriptsDlg generateScriptsDlg;
private String invFilename = "ish-inventory.txt";
private String invFilename = "isd-inventory.txt";
private String histFilename = "ish-history.txt";
private String histFilename = "isd-history.txt";
private File invFile;

View file

@ -19,7 +19,7 @@
further_licensing_information.
-->
<ClimateDataFTPArgs>
<Site>ftp3.ncdc.noaa.gov</Site>
<Site>ftp.ncdc.noaa.gov</Site>
<DataDir>pub///data/noaa</DataDir>
<IshDir>/pub/data/noaa</IshDir>
<User>anonymous</User>

View file

@ -31,6 +31,10 @@
# Change Document History:
# %PIRC%
#
# Date Ticket# Engineer Description
# ------------ ---------- ----------- --------------------------
# Jul 07, 2015 16907 zhao Modified to work with new ids- files
import sys
sys.argv = [__name__]
@ -50,7 +54,7 @@ _Logger = logging.getLogger(ClimateProcessLogger.CLIMATE_CATEGORY)
# Variables set for now, but to be replaced with cfg vars
# ..before integrating this program
#
ish_inv = 'ish-inventory.txt'
ish_inv = 'isd-inventory.txt'
ftp_site = 'ftp.ncdc.noaa.gov'
ftp_dir = '/pub/data/noaa'
climo_dir = '/data/adapt/avnfps/climate'

View file

@ -32,6 +32,10 @@
# %PIRC%
#
# TODO: make the # climate years configurable
# Date Ticket# Engineer Description
# ------------ ---------- ----------- --------------------------
# Jul 07, 2015 16907 zhao Modified to work with new ids- files
#
import ConfigParser
import logging, time, os
@ -40,8 +44,8 @@ sys.argv = [__name__]
import tables
ish_inv = 'ish-inventory.txt'
ish_his = 'ish-history.txt'
ish_inv = 'isd-inventory.txt'
ish_his = 'isd-history.txt'
_Logger=logging.getLogger('CLIMATE')
def get_climo_years(climateFilePath, stn='', lines = []):
@ -140,5 +144,5 @@ def getIdnumsList(ishDirPath, climateFilePath, stn=''):
def getHistory(ishDirPath, stn=''):
if stn == '': return []
fh = open(os.path.join(ishDirPath, ish_his), 'r')
return [line[:12] for line in fh.readlines() if stn == line[52:56] and line[:6] != '999999']
return [line[:12] for line in fh.readlines() if stn == line[51:55] and line[:6] != '999999']

View file

@ -320,6 +320,7 @@
# 02APR2014 17211 zhao (code obtained from the listserver via Virgil that implements a new rule regarding CB, TS etc)
# May 12, 2014 16928 zhao Modified check_prev_time()
# Sep 17, 2014 16928 zhao Added a line break "\n" to message 25 (since it appears together with message 49)
# Jul 07, 2015 16973 zhao Added 'DRSN' as valid value of sig weather
#
#
import exceptions, re, time, types
@ -477,14 +478,14 @@ _ValidVsby = { \
_ValidObvis = dict.fromkeys(['BR', 'FG', 'FZFG', 'MIFG', 'PRFG', 'BCFG', \
'FU', 'VA', 'HZ', 'BLPY', \
'DU', 'DRDU', 'BLDU', \
'SA', 'DRSA', 'BLSA', \
'SA', 'DRSA', 'BLSA', 'DRSN', \
'BLSN', 'BLSA', 'BLDU', \
'PO', 'SQ', 'FC', '+FC', 'SS', '+SS', 'DS', '+DS'])
_ValidPcp = dict.fromkeys(['-DZ', 'DZ', '+DZ', '-FZDZ', 'FZDZ', '+FZDZ', \
'-RA', 'RA', '+RA', '-SHRA', 'SHRA', '+SHRA', \
'-TSRA', 'TSRA', '+TSRA', '-FZRA', 'FZRA', '+FZRA', \
'-SN', 'SN', '+SN', '-SHSN', 'SHSN', '+SHSN', \
'-SN', 'SN', '+SN', '-SHSN', 'SHSN', '+SHSN', 'DRSN', \
'-TSSN', 'TSSN', '+TSSN', \
'-PL', 'PL', '+PL', '+SHPL', 'SHPL', '+SHPL', \
'-TSPL', 'TSPL', '+TSPL', \

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -17,13 +17,6 @@ then
echo "CAVE and/or gfeclient not installed on this workstation ..exiting"
exit 1
else
CONFDIR=${HOME}/.runProc-$(hostname)-$$
cleanup() {
rm -rf "$CONFDIR"
}
mkdir -p "$CONFDIR" || exit 1
trap cleanup EXIT
$_GFECLI -configuration $CONFDIR $_MODULE "$@"
$_GFECLI $_MODULE "$@"
fi

View file

@ -29,6 +29,7 @@
# Version Date: 4 January 2006
# Version: 6.5
#
# 7/27/2015 yteng Call CheckTandTd and CheckWindGust for processing
# ----------------------------------------------------------------------------
# The MenuItems list defines the GFE menu item(s) under which the
@ -42,117 +43,12 @@ VariableList = [("Check or Force:" , "Check Only", "radio",
import SmartScript
import TimeRange
import AbsTime
from JUtil import JavaWrapperClass
from numpy import *
MODEL = "Fcst"
LEVEL = "SFC"
DAY_IN_SECS = 24 * 3600
class Procedure (SmartScript.SmartScript):
def __init__(self, dbss):
SmartScript.SmartScript.__init__(self, dbss)
##
# Get the list of time ranges at the grid whose element name is WEName
# contains grids. The model and level of the weather element are assumed
# to be MODEL and LEVEL, respectively.
#
# @param WEName: Name of a weather element
# @type WEName: string
# @return: time ranges at which WEName has data.
# @rtype: Python list of Python TimeRange objects
def getWEInventory(self, WEName, timeRange=None):
if timeRange is None:
yesterday = self._gmtime() - (2 * DAY_IN_SECS) # two days ago
later = self._gmtime() + (10 * DAY_IN_SECS) # 10 days from now
timeRange = TimeRange.TimeRange(yesterday, later)
if isinstance(timeRange, JavaWrapperClass):
timeRange = timeRange.toJavaObj()
parm = self.getParm(MODEL, WEName, LEVEL);
inv = parm.getGridInventory(timeRange)
trList = []
for gd in inv:
tr = TimeRange.TimeRange(gd.getGridTime())
trList.append(tr)
return trList
##
# Get time ranges locked by other workstations for the weather element named
# weName. The model for weName is taken from this object's mutableID() method;
# the level is LEVEL.
# @param weName: Name of a weather element.
# @type weName: string
# @return: time ranges locked by others
# @rtype: Python list of TimeRanges; if asJava is True, these are Java
# TimeRanges, otherwise they are Python TimeRanges.
def getLocksByOthers(self, weName):
# returns list of time ranges locked by others for this weather element
parm = self.getParm(self.mutableID(), weName, LEVEL)
if parm is None:
return []
lt = parm.getLockTable()
jlok = lt.lockedByOther();
lbo = []
for i in xrange(jlok.size()):
tr = jlok.get(i)
tr = TimeRange.TimeRange(tr)
lbo.append(tr)
return lbo
##
# Filter trList, returning only the time ranges that overlap timeRange.
# @param timeRange: the time range to test against
# @type timeRange: a Python TimeRange
# @param trList: the list of time ranges to filter
# @type trList: Python list of Python TimeRanges
# @return: The time ranges in trList that overlap timeRange.
# @rtype: a Python list of Python time ranges
def overlappingTRs(self, timeRange, trList):
newTRList = []
for tr in trList:
if timeRange.overlaps(tr):
newTRList.append(tr)
return newTRList
##
# method so that timeRanges will be sorted earliest to latest
# @param first: The first time range to compare
# @type first: Python TimeRange
# @param last: The second time range to compare
# @type last: Python TimeRange
# @return: -1 if first starts before last, 1 if first starts after last,
# and 0 if first and last start at the same time.
# @rtype: integer
def trSortMethod(self, first, last):
if first.startTime() < last.startTime():
return -1
elif first.startTime() == last.startTime():
return 0
else:
return 1
##
# Concatenate minTRList and maxTRList and sort by starting times.
# Duplicate time ranges are NOT eliminated.
# @param minTRList: time ranges of the minT grid
# @type minTRList: Python list of Python TimeRange objects.
# @param maxTRList: time ranges of the maxT grid
# @type maxTRList: Python list of Python TimeRange objects.
# @return: The combined and sorted collection.
# @rtype: Python list of Python TimeRange objects
def combineInventoryLists(self, minTRList, maxTRList):
bigList = minTRList + maxTRList
bigList.sort(self.trSortMethod)
return bigList
##
# Main entry point of this procedure. If varDict["Check or Force"] is
# "Check Only", temporary grids will be created. Otherwise, the minT, maxT,
@ -161,304 +57,5 @@ class Procedure (SmartScript.SmartScript):
# temperature grids are modified.
# @type varDict: Python dictionary of strings to strings
def execute(self, timeRange, varDict):
checkOnly = varDict["Check or Force:"] == "Check Only"
# remove any temporary WEs we created
weList = ["TLessThanMin", "TGreaterThanMax", "TdGreaterThanT",
"MinGreaterThanMax", "MaxLessThanMin", "WindGreaterThanGust"]
for we in weList:
parm = self.getParm(MODEL, we, LEVEL)
if parm is not None:
self.unloadWE(MODEL, we, LEVEL)
self.setToolType("numeric")
# Added for OAX: if no timeRange selected then make a big timeRange
if not timeRange.isValid():
start = self._gmtime() - (2 * DAY_IN_SECS) # two days ago
end = self._gmtime() + (10 * DAY_IN_SECS) # 10 days from now
timeRange = TimeRange.TimeRange(start, end)
# get all the grids for all elements upfront and update as we modify
# any grids. We need to do this because the GFE caches the original
# version of all grids and there's no way yet to turn this off.
minTDict = {}
maxTDict = {}
tDict = {}
tdDict = {}
windDict = {}
gustDict = {}
minTRList = self.getWEInventory("MinT", timeRange)
for tr in minTRList:
grid = self.getGrids(MODEL, "MinT", LEVEL, tr, mode = "First")
minTDict[tr] = grid
maxTRList = self.getWEInventory("MaxT", timeRange)
for tr in maxTRList:
grid = self.getGrids(MODEL, "MaxT", LEVEL, tr, mode = "First")
maxTDict[tr] = grid
TTRList = self.getWEInventory("T", timeRange)
for tr in TTRList:
grid = self.getGrids(MODEL, "T", LEVEL, tr, mode = "First")
tDict[tr] = grid
TdTRList = self.getWEInventory("Td", timeRange)
for tr in TdTRList:
grid = self.getGrids(MODEL, "Td", LEVEL, tr, mode = "First")
tdDict[tr] = grid
WindTRList = self.getWEInventory("Wind", timeRange)
for tr in WindTRList:
grid = self.getGrids(MODEL, "Wind", LEVEL, tr, mode = "First")
windDict[tr] = grid
GustTRList = self.getWEInventory("WindGust", timeRange)
for tr in GustTRList:
grid = self.getGrids(MODEL, "WindGust", LEVEL, tr, mode = "First")
gustDict[tr] = grid
# get the all locks by other users, so we can detect they are locked
# before attempting to modify them
minTLocks = self.getLocksByOthers("MinT")
maxTLocks = self.getLocksByOthers("MaxT")
tLocks = self.getLocksByOthers("T")
tdLocks = self.getLocksByOthers("Td")
windLocks = self.getLocksByOthers("Wind")
gustLocks = self.getLocksByOthers("WindGust")
# get the list of edit areas
eaList = self.editAreaList()
# get the local WFO domain and make a mask with it
# local sites may wish to use a different maks so that a larger area
# is operated on by the tool - for example marine sites may wish to
# expand it to marine zones as well as land.
# To change the area, simply use a locally-defined edit area instead
# of self.getSiteID(). Example: siteID = "CWAPlusMarineZones"
siteID = "ISC_Send_Area"
if siteID in eaList: # make sure the edit area is there
siteEA = self.getEditArea(siteID) # get the edit area
siteMask = self.encodeEditArea(siteEA) # make a mask with siteEA
siteMask = siteMask.astype(bool8)
else:
topo = self.getGridShape() # get the topo grid just for its shape
siteMask = ones(topo, bool8)
print siteID, "edit area not found. Using entire GFE domain."
# Ensure that MinT <= MaxT first
minMaxList = self.combineInventoryLists(minTRList, maxTRList)
foundProblem = False
for i in xrange(len(minMaxList) - 1):
if minMaxList[i+1] in minTRList: # previous max modifies min
maxTR = minMaxList[i]
minTR = minMaxList[i+1]
# Make sure these TRs really exist in the inventory
if maxTR not in maxTRList:
continue
if minTR not in minTRList:
continue
minGrid = minTDict[minTR]
maxGrid = maxTDict[maxTR]
mask = (minGrid > maxGrid)
mask &= siteMask
if not sometrue(mask): # make sure some points are set
continue
foundProblem = True
if checkOnly:
self.createGrid(MODEL, "MinGreaterThanMax", "SCALAR", mask,
minTR, minAllowedValue=0.0, maxAllowedValue= 1.0)
else: # force the change
if minTR in minTLocks:
msg = "Can't modify MinT grid at " + str(minTR) + \
" locked by another user."
self.statusBarMsg(msg, "S")
continue
# calculate and modify the MinT grid
minGrid[mask] = maxGrid[mask]
self.createGrid(MODEL, "MinT", "SCALAR", minGrid, minTR)
minTDict[minTR] = minGrid # update the minT dictionary
elif minMaxList[i+1] in maxTRList: # previous min modifies max
minTR = minMaxList[i]
maxTR = minMaxList[i+1]
# Make sure these TRs really exist in the inventory
if maxTR not in maxTRList:
continue
if minTR not in minTRList:
continue
maxGrid = maxTDict[maxTR]
minGrid = minTDict[minTR]
mask = (maxGrid < minGrid)
mask &= siteMask
if not sometrue(mask): # make sure some points are set
continue
foundProblem = True
if checkOnly:
self.createGrid(MODEL, "MaxLessThanMin", "SCALAR", mask,
maxTR, minAllowedValue=0.0, maxAllowedValue= 1.0)
else: # force the change
if maxTR in maxTLocks:
msg = "Can't modify MaxT grid at " + str(maxTR) + \
" locked by another user."
self.statusBarMsg(msg, "S")
continue
# calculate and modify the MaxT grid
maxGrid[mask] = minGrid[mask]
self.createGrid(MODEL, "MaxT", "SCALAR", maxGrid, maxTR)
# update the minT dictionary with the modified minT grid
maxTDict[maxTR] = maxGrid
# Now check for T < MinT
for tr in minTRList:
minTGrid = minTDict[tr]
tInv = self.overlappingTRs(tr, TTRList)
if tInv == []: # empty list, keep going
continue
for tymeRng in tInv:
# find points in the siteMask where T < MinT
tGrid = tDict[tymeRng]
tTooLow = (tGrid < minTGrid)
tTooLow &= siteMask
if not sometrue(tTooLow):
continue
foundProblem = True
if checkOnly: # just make a grid showing the mask where T < MinT
self.createGrid(MODEL, "TLessThanMin", "SCALAR", tTooLow, tymeRng,
minAllowedValue=0.0, maxAllowedValue= 1.0)
else: # force T to the MinT value
if tymeRng in tLocks:
msg = "Can't modify T grid at " + str(tymeRng) + \
" locked by another user."
self.statusBarMsg(msg, "S")
continue
tGrid[tTooLow] = minTGrid[tTooLow]
self.createGrid(MODEL, "T", "SCALAR", tGrid, tymeRng)
tDict[tymeRng] = tGrid # update the tDict
# check for T > MaxT
for tr in maxTRList:
# get the grid first
maxTGrid = maxTDict[tr]
# then warp the end time so we include T grids ending at 01z
startTime = tr.startTime()
endTime = tr.endTime().unixTime()
roundedTime = int((endTime + 43200) / 86400) * 86400 + 3600
endTime = max(endTime, roundedTime)
endTime = AbsTime.AbsTime(endTime)
timeRange = TimeRange.TimeRange(startTime, endTime)
# use the warpedTR to fetch the T inventory
tInv = self.overlappingTRs(timeRange, TTRList)
if tInv == []: # empty list, keep going
continue
for tymeRng in tInv:
# find points in the siteMask where T > MaxT
tGrid = tDict[tymeRng]
tTooHigh = (tGrid > maxTGrid)
tTooHigh &= siteMask
if not sometrue(tTooHigh): # make sure some points are set
continue
foundProblem = True
if checkOnly: # just make a grid
self.createGrid(MODEL, "TGreaterThanMax", "SCALAR", tTooHigh, tymeRng,
minAllowedValue=0.0, maxAllowedValue= 1.0)
else: # force T to the MaxT value
if tymeRng in tLocks:
msg = "Can't modify T grid at " + str(tymeRng) + \
" locked by another user."
self.statusBarMsg(msg, "S")
continue
tGrid[tTooHigh] = maxTGrid[tTooHigh]
self.createGrid(MODEL, "T", "SCALAR", tGrid, tymeRng)
tDict[tymeRng] = tGrid # update the tDict
# Now check T < Td
for tr in TTRList:
# make sure there's a matching Td grid
if not tr in TdTRList:
continue
tGrid = tDict[tr]
tdGrid = tdDict[tr]
# find points in the siteMask where Td > T
TdTooHigh = (tdGrid > tGrid)
TdTooHigh &= siteMask
if not sometrue(TdTooHigh): # make sure some points are set
continue
foundProblem = True
if checkOnly: # just make a grid
self.createGrid(MODEL, "TdGreaterThanT", "SCALAR", TdTooHigh, tr,
minAllowedValue=0.0, maxAllowedValue= 1.0)
else: # force Td <= T
if tr in tdLocks:
msg = "Can't modify Td grid at " + str(tInv[i]) + \
" locked by another user."
self.statusBarMsg(msg, "S")
continue
tdGrid[TdTooHigh] = tGrid[TdTooHigh]
self.createGrid(MODEL, "Td", "SCALAR", tdGrid, tr)
tdDict[tr] = tdGrid # update the tdDict
#---------------------------------------------------------
# Now check Wind <= WindGust
for tr in WindTRList:
# make sure there's a matching Td grid
if not tr in GustTRList:
continue
windGrid = windDict[tr][0] # just need the speed component
gustGrid = gustDict[tr]
# find points in the siteMask where wind > windGust
windTooHigh = (windGrid > gustGrid)
windTooHigh &= siteMask
if not sometrue(windTooHigh): # make sure some points are set
continue
foundProblem = True
if checkOnly: # just make a grid
self.createGrid(MODEL, "WindGreaterThanGust", "SCALAR", windTooHigh, tr,
minAllowedValue=0.0, maxAllowedValue= 1.0)
else: # force wind <= windGust
if tr in gustLocks:
msg = "Can't modify WindGust grid at " + str(tr) + \
" locked by another user."
self.statusBarMsg(msg, "S")
continue
gustGrid = where(windTooHigh, windGrid, gustGrid)
self.createGrid(MODEL, "WindGust", "SCALAR", gustGrid, tr)
gustDict[tr] = gustGrid # update the gustDict
if not foundProblem:
msg = "CheckTTdWind found no inconsistencies."
self.statusBarMsg(msg, "R")
self.callProcedure("CheckTandTd", timeRange=timeRange, varDict=varDict)
self.callProcedure("CheckWindGust", timeRange=timeRange, varDict=varDict)

View file

@ -29,6 +29,8 @@
# Version Date: 4 January 2006
# Version: 6.5
#
# 7/27/2015 yteng Use the time range selected in the Grid Manager if any
#
# ----------------------------------------------------------------------------
# The MenuItems list defines the GFE menu item(s) under which the
@ -43,10 +45,12 @@ VariableList = [("Check or Force:" , "Check Only", "radio",
import SmartScript
import TimeRange
import AbsTime
from JUtil import JavaWrapperClass
from numpy import *
MODEL = "Fcst"
LEVEL = "SFC"
DAY_IN_SECS = 24 * 3600
class Procedure (SmartScript.SmartScript):
def __init__(self, dbss):
@ -61,16 +65,20 @@ class Procedure (SmartScript.SmartScript):
# @type WEName: string
# @return: time ranges at which WEName has data.
# @rtype: Python list of Python TimeRange objects
def getWEInventory(self, WEName):
yesterday = self._gmtime() - (2 * 24 * 3600) # two days ago
later = self._gmtime() + 10 * 24 * 3600 # 10 days from now
allTimes = TimeRange.TimeRange(yesterday, later)
def getWEInventory(self, WEName, timeRange=None):
if timeRange is None:
yesterday = self._gmtime() - (2 * DAY_IN_SECS) # two days ago
later = self._gmtime() + 10 * DAY_IN_SECS # 10 days from now
timeRange = TimeRange.TimeRange(yesterday, later)
if isinstance(timeRange, JavaWrapperClass):
timeRange = timeRange.toJavaObj()
parm = self.getParm(MODEL, WEName, LEVEL);
inv = parm.getGridInventory(allTimes.toJavaObj())
inv = parm.getGridInventory(timeRange)
trList = []
for gd in inv:
tr = TimeRange.TimeRange(gd.getGridTime())
trList.append(tr)
return trList
##
@ -150,7 +158,7 @@ class Procedure (SmartScript.SmartScript):
# @param varDict: Determines whether temporary grids are created or
# temperature grids are modified.
# @type varDict: Python dictionary of strings to strings
def execute(self, varDict):
def execute(self, timeRange, varDict):
checkOnly = varDict["Check or Force:"] == "Check Only"
# remove any temporary WEs we created
@ -163,20 +171,25 @@ class Procedure (SmartScript.SmartScript):
self.setToolType("numeric")
if timeRange is None or not timeRange.isValid():
start = self._gmtime() - (2 * DAY_IN_SECS) # two days ago
end = self._gmtime() + (10 * DAY_IN_SECS) # 10 days from now
timeRange = TimeRange.TimeRange(start, end)
# get all the grids for all elements upfront and update as we modify
# any grids. We need to do this because the GFE caches the original
# version of all grids and there's no way yet to turn this off.
minTRList = self.getWEInventory("MinT")
minTRList = self.getWEInventory("MinT", timeRange)
minTDict = self.getGrids(MODEL, "MinT", LEVEL, minTRList, mode = "First")
maxTRList = self.getWEInventory("MaxT")
maxTRList = self.getWEInventory("MaxT", timeRange)
maxTDict = self.getGrids(MODEL, "MaxT", LEVEL, maxTRList, mode = "First")
TTRList = self.getWEInventory("T")
TTRList = self.getWEInventory("T", timeRange)
tDict = self.getGrids(MODEL, "T", LEVEL, TTRList, mode = "First")
TdTRList = self.getWEInventory("Td")
TdTRList = self.getWEInventory("Td", timeRange)
tdDict = self.getGrids(MODEL, "Td", LEVEL, TdTRList, mode = "First")
# get the all locks by other users, so we can detect they are locked

View file

@ -1,222 +1,232 @@
##
# 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
# 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
#
# 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.
##
# ----------------------------------------------------------------------------
# This software is in the public domain, furnished "as is", without technical
# support, and with no warranty, express or implied, as to its usefulness for
# any purpose.
#
# CheckWindGust
#
# Author: Tom Mazza, based on Tom LeFebvre's CheckTandTd
#
# Version Date: 6 Oct 2006
# Version: 1.0
#
# Modified by Tom Mazza 6 Jun 2005 to use local ISC_Send_Area
# and to redo RH, and, if loaded in GE at the ttime, HeatIndex and WindChill,
# on "Force: TMin<=T<=TMax\n and Td<=T" option anytime T and / or Td are
# changed (change on Td only does not affect WindChill).
#
# ----------------------------------------------------------------------------
# ----------------------------------------------------------------------------
# This software is in the public domain, furnished "as is", without technical
# support, and with no warranty, express or implied, as to its usefulness for
# any purpose.
#
# CheckWindGust
#
# Author: Tom Mazza, based on Tom LeFebvre's CheckTandTd
#
# Version Date: 6 Oct 2006
# Version: 1.0
#
# Modified by Tom Mazza 6 Jun 2005 to use local ISC_Send_Area
# and to redo RH, and, if loaded in GE at the ttime, HeatIndex and WindChill,
# on "Force: TMin<=T<=TMax\n and Td<=T" option anytime T and / or Td are
# changed (change on Td only does not affect WindChill).
#
# 7/27/2015 yteng Use the time range selected in the Grid Manager if any,
# and retrived teh necessary grids for improved efficiency
#
# ----------------------------------------------------------------------------
# The MenuItems list defines the GFE menu item(s) under which the
# Procedure is to appear.
# Possible items are: Populate, Edit, Consistency, Verify
MenuItems = ["Consistency"]
VariableList = [("Check or Force:" , "Check Only", "radio",
["Check Only", "Force: WindGust>=Wind"])]
import SmartScript
import time
import TimeRange
import AbsTime
from numpy import *
MODEL = "Fcst"
LEVEL = "SFC"
class Procedure (SmartScript.SmartScript):
def __init__(self, dbss):
SmartScript.SmartScript.__init__(self, dbss)
def getWEInventory(self, WEName):
yesterday = self._gmtime() - (2 * 24 * 3600) # two days ago
later = self._gmtime() + 10 * 24 * 3600 # 10 days from now
allTimes = TimeRange.TimeRange(yesterday, later)
parm = self.getParm(MODEL, WEName, LEVEL);
inv = parm.getGridInventory(allTimes.toJavaObj())
trList = []
for gd in inv:
tr = TimeRange.TimeRange(gd.getGridTime())
trList.append(tr)
return trList
def getLocksByOthers(self, weName):
# returns list of time ranges locked by others for this weather element
parm = self.getParm(self.mutableID(), weName, LEVEL)
if parm is None:
return []
lt = parm.getLockTable()
jlok = lt.lockedByOther()
lbo = []
for i in xrange(jlok.size()):
tr = jlok.get(i)
tr = TimeRange.TimeRange(tr)
lbo.append( tr )
return lbo
def overlappingTRs(self, timeRange, trList):
newTRList = []
for tr in trList:
if timeRange.overlaps(tr):
newTRList.append(tr)
return newTRList
# method so that timeRanges will be sorted earliest to latest
def trSortMethod(self, first, last):
if first.startTime() < last.startTime():
return -1
elif first.startTime() == last.startTime():
return 0
else:
return 1
def combineInventoryLists(self, minTRList, maxTRList):
bigList = minTRList + maxTRList
bigList.sort(self.trSortMethod)
return bigList
def execute(self, varDict):
checkOnly = varDict["Check or Force:"] == "Check Only"
startWindChill = 10 ## First month to report wind chill
endWindChill = 4 ## Last month to report wind chill
# Get local edit area simply by using the baseline edit area
eaList = self.editAreaList()
siteID = self.getSiteID()
if siteID in eaList: # make sure the edit area is there
siteEA = self.getEditArea(siteID) # get the edit area
siteMask = self.encodeEditArea(siteEA) # make a mask with siteEA
siteMask = siteMask.astype(bool8)
else:
topo = self.getGridShape()
siteMask = ones(topo, bool8)
print siteID, "edit area not found. Using entire GFE domain."
errorsFound = "no" # To keep track of any errors found for
# status bar message at the end.
# remove any temporary WEs we created
weList = ["WindGustLessThanWindSpeed"]
for we in weList:
parm = self.getParm(MODEL, we, LEVEL)
if parm is not None:
self.unloadWE(MODEL, we, LEVEL)
self.setToolType("numeric")
# get all the grids for all elements upfront and update as we modify
# any grids. We need to do this because the GFE caches the original
# version of all grids and there's no way yet to turn this off.
WindDirDict = {}
WindSpeedDict = {}
WindGustDict = {}
WindTRList = self.getWEInventory("Wind")
for tr in WindTRList:
grid = self.getGrids(MODEL, "Wind", LEVEL, tr, mode = "First")
WindDirDict[tr] = grid[1]
WindSpeedDict[tr] = grid[0]
WindGustTRList = self.getWEInventory("WindGust")
for tr in WindGustTRList:
grid = self.getGrids(MODEL, "WindGust", LEVEL, tr, mode = "First")
WindGustDict[tr] = grid
# get the all locks by other users, so we can detect they are locked
# before attempting to modify them
WindLocks = self.getLocksByOthers("Wind")
WindGustLocks = self.getLocksByOthers("WindGust")
nowZ = time.gmtime(time.time())
curMon = nowZ[1]
WindChangeTools = []
if curMon >= startWindChill or curMon <= endWindChill:
WindChangeTools.append(("WindChillTool", "WindChill"))
WindGustOnlyChangeTools = []
databaseID = self.findDatabase(MODEL)
# Now check WindGust >= WindSpeed # was T < Td
for tr in WindTRList:
# make sure there's a matching WindGust grid
if not tr in WindGustTRList:
continue
WindSpeedGrid = WindSpeedDict[tr]
WindGustGrid = WindGustDict[tr]
# find points in the siteMask where WindGust < Wind
mask = (WindGustGrid < WindSpeedGrid) & siteMask
if not sometrue(mask): # make sure some points are set
continue
errorsFound = "yes"
if checkOnly: # just make a grid
self.createGrid(MODEL, "WindGustLessThanWindSpeed", "SCALAR", mask.astype('float32'), tr, minAllowedValue=0.0, maxAllowedValue= 1.0)
else: # force WindGust >= WindSpeed
if tr in WindGustLocks:
msg = "Can't modify WindGust grid at " + str(tInv[i]) + \
" locked by another user."
self.statusBarMsg(msg, "S")
continue
editArea = self.decodeEditArea(mask.astype('float32'))
WindGustGrid = where(mask, WindSpeedGrid, WindGustGrid)
self.createGrid(MODEL, "WindGust", "SCALAR", WindGustGrid, tr)
WindGustDict[tr] = WindGustGrid # update the tdDict
for toolName, elementName in WindChangeTools:
parm = (elementName, LEVEL, databaseID)
if (toolName in WindGustOnlyChangeTools) and (parm in self.loadedParms()):
gridInfo = self.getGridInfo(MODEL, elementName, LEVEL, tr)
if gridInfo == []:
self.createFromScratchCmd([elementName], tr,
repeat=1, duration=1)
error = self.callSmartTool(toolName, elementName,
editArea, tr)
if error is not None:
break
# Send a message to the status bar
if errorsFound == "yes":
self.statusBarMsg('CheckWindGust completed - One or more Flags on the play.', 'R')
else:
self.statusBarMsg('CheckWindGust completed - No Flags!', 'R')
MenuItems = ["Consistency"]
VariableList = [("Check or Force:" , "Check Only", "radio",
["Check Only", "Force: WindGust>=Wind"])]
import SmartScript
import time
import TimeRange
import AbsTime
from JUtil import JavaWrapperClass
from numpy import *
MODEL = "Fcst"
LEVEL = "SFC"
DAY_IN_SECS = 24 * 3600
class Procedure (SmartScript.SmartScript):
def __init__(self, dbss):
SmartScript.SmartScript.__init__(self, dbss)
def getWEInventory(self, WEName, timeRange=None):
if timeRange is None:
yesterday = self._gmtime() - (2 * DAY_IN_SECS) # two days ago
later = self._gmtime() + 10 * DAY_IN_SECS # 10 days from now
timeRange = TimeRange.TimeRange(yesterday, later)
if isinstance(timeRange, JavaWrapperClass):
timeRange = timeRange.toJavaObj()
parm = self.getParm(MODEL, WEName, LEVEL);
inv = parm.getGridInventory(timeRange)
trList = []
for gd in inv:
tr = TimeRange.TimeRange(gd.getGridTime())
trList.append(tr)
return trList
def getLocksByOthers(self, weName):
# returns list of time ranges locked by others for this weather element
parm = self.getParm(self.mutableID(), weName, LEVEL)
if parm is None:
return []
lt = parm.getLockTable()
jlok = lt.lockedByOther()
lbo = []
for i in xrange(jlok.size()):
tr = jlok.get(i)
tr = TimeRange.TimeRange(tr)
lbo.append( tr )
return lbo
def overlappingTRs(self, timeRange, trList):
newTRList = []
for tr in trList:
if timeRange.overlaps(tr):
newTRList.append(tr)
return newTRList
# method so that timeRanges will be sorted earliest to latest
def trSortMethod(self, first, last):
if first.startTime() < last.startTime():
return -1
elif first.startTime() == last.startTime():
return 0
else:
return 1
def combineInventoryLists(self, minTRList, maxTRList):
bigList = minTRList + maxTRList
bigList.sort(self.trSortMethod)
return bigList
def execute(self, timeRange, varDict):
checkOnly = varDict["Check or Force:"] == "Check Only"
startWindChill = 10 ## First month to report wind chill
endWindChill = 4 ## Last month to report wind chill
# Get local edit area simply by using the baseline edit area
eaList = self.editAreaList()
siteID = self.getSiteID()
if siteID in eaList: # make sure the edit area is there
siteEA = self.getEditArea(siteID) # get the edit area
siteMask = self.encodeEditArea(siteEA) # make a mask with siteEA
siteMask = siteMask.astype(bool8)
else:
topo = self.getGridShape()
siteMask = ones(topo, bool8)
print siteID, "edit area not found. Using entire GFE domain."
errorsFound = "no" # To keep track of any errors found for
# status bar message at the end.
# remove any temporary WEs we created
weList = ["WindGustLessThanWindSpeed"]
for we in weList:
parm = self.getParm(MODEL, we, LEVEL)
if parm is not None:
self.unloadWE(MODEL, we, LEVEL)
self.setToolType("numeric")
# if no timeRange selected then make a big timeRange
if timeRange is None or not timeRange.isValid():
start = self._gmtime() - (2 * DAY_IN_SECS) # two days ago
end = self._gmtime() + (10 * DAY_IN_SECS) # 10 days from now
timeRange = TimeRange.TimeRange(start, end)
# get all the grids for all elements upfront and update as we modify
# any grids. We need to do this because the GFE caches the original
# version of all grids and there's no way yet to turn this off.
WindDirDict = {}
WindSpeedDict = {}
WindGustDict = {}
WindTRList = self.getWEInventory("Wind", timeRange)
for tr in WindTRList:
grid = self.getGrids(MODEL, "Wind", LEVEL, tr, mode = "First")
WindDirDict[tr] = grid[1]
WindSpeedDict[tr] = grid[0]
WindGustTRList = self.getWEInventory("WindGust", timeRange)
WindGustDict = self.getGrids(MODEL, "WindGust", LEVEL, WindGustTRList, mode = "First")
# get the all locks by other users, so we can detect they are locked
# before attempting to modify them
WindLocks = self.getLocksByOthers("Wind")
WindGustLocks = self.getLocksByOthers("WindGust")
nowZ = time.gmtime(time.time())
curMon = nowZ[1]
WindChangeTools = []
if curMon >= startWindChill or curMon <= endWindChill:
WindChangeTools.append(("WindChillTool", "WindChill"))
WindGustOnlyChangeTools = []
databaseID = self.findDatabase(MODEL)
# Now check WindGust >= WindSpeed # was T < Td
for tr in WindTRList:
# make sure there's a matching WindGust grid
if not tr in WindGustTRList:
continue
WindSpeedGrid = WindSpeedDict[tr]
WindGustGrid = WindGustDict[tr]
# find points in the siteMask where WindGust < Wind
mask = (WindGustGrid < WindSpeedGrid) & siteMask
if not sometrue(mask): # make sure some points are set
continue
errorsFound = "yes"
if checkOnly: # just make a grid
self.createGrid(MODEL, "WindGustLessThanWindSpeed", "SCALAR", mask.astype('float32'), tr, minAllowedValue=0.0, maxAllowedValue= 1.0)
else: # force WindGust >= WindSpeed
if tr in WindGustLocks:
msg = "Can't modify WindGust grid at " + str(tInv[i]) + \
" locked by another user."
self.statusBarMsg(msg, "S")
continue
editArea = self.decodeEditArea(mask.astype('float32'))
WindGustGrid = where(mask, WindSpeedGrid, WindGustGrid)
self.createGrid(MODEL, "WindGust", "SCALAR", WindGustGrid, tr)
WindGustDict[tr] = WindGustGrid # update the tdDict
for toolName, elementName in WindChangeTools:
parm = (elementName, LEVEL, databaseID)
if (toolName in WindGustOnlyChangeTools) and (parm in self.loadedParms()):
gridInfo = self.getGridInfo(MODEL, elementName, LEVEL, tr)
if gridInfo == []:
self.createFromScratchCmd([elementName], tr,
repeat=1, duration=1)
error = self.callSmartTool(toolName, elementName,
editArea, tr)
if error is not None:
break
# Send a message to the status bar
if errorsFound == "yes":
self.statusBarMsg('CheckWindGust completed - One or more Flags on the play.', 'R')
else:
self.statusBarMsg('CheckWindGust completed - No Flags!', 'R')

View file

@ -2787,7 +2787,7 @@ class SampleAnalysis(CommonUtils.CommonUtils):
if self.temporalCoverage_flag(
parmHisto, timeRange, componentName, histSample) == 0:
continue
mode = histSample.mostCommonValueBinned(binRes).scalar()
mode = histSample.mostCommonValueBinned(float(binRes)).scalar()
if mode > maxMode:
maxMode = mode

View file

@ -105,6 +105,7 @@ import com.vividsolutions.jts.geom.MultiPolygon;
* Changes for non-blocking DiscreteDialog.
* Feb 14, 2013 mnash Move QueryScript to use new Python concurrency implementation
* Jan 13, 2015 3955 randerso Improve handling of Topo parm for Standard Terrain editing
* Jun 24, 2015 14401 yteng Check whether activeDisplay is disposed before update
*
* </pre>
*
@ -874,11 +875,15 @@ public class DefineRefSetDialog extends CaveJFACEDialog implements
@Override
public void run() {
if (result != null) {
activeDisplay.setText(s);
refSetMgr.incomingRefSet(result,
RefSetMode.USE_CURRENT);
addToHistory(s);
queryField.setText("");
if (activeDisplay != null || !activeDisplay.isDisposed())
activeDisplay.setText(s);
if (queryField != null && !queryField.isDisposed())
queryField.setText("");
}
};
});

View file

@ -167,6 +167,8 @@ import com.raytheon.viz.ui.dialogs.ICloseCallback;
* 02/04/2014 17039 ryu Removed menu item related to the HighlighFramingCodes feature.
* 04/20/2015 4027 randerso Renamed ProductStateEnum with an initial capital
* Expunged Calendar from ActiveTableRecord
* 07/02/2015 13753 lshi Update times for products in Product Editor
* 07/22/2015 13753 lshi Keeps issue time unchanged
* </pre>
*
* @author lvenable
@ -373,6 +375,7 @@ public class ProductEditorComp extends Composite implements
private ChangeTimesJob timeUpdater;
private Listener visibilityListener;
/**
* Enumeration of product types.
@ -420,6 +423,8 @@ public class ProductEditorComp extends Composite implements
private String prodEditorDirectory = null;
private final DataManager dm;
private boolean updateTime = false;
/**
* Constructor.
@ -1186,16 +1191,16 @@ public class ProductEditorComp extends Composite implements
return true;
}
private boolean changeTimes() {
private synchronized boolean changeTimes() {
Calendar GMT = Calendar.getInstance(TimeZone.getTimeZone("GMT"));
GMT.setTime(SimulatedTime.getSystemTime().getTime());
GMT.set(Calendar.SECOND, 0);
Date tt = GMT.getTime();
updateTime = true;
tweakVTEC(tt);
updateIssueExpireTimes(tt);
updateTime = false;
return true;
}
@ -1943,7 +1948,7 @@ public class ProductEditorComp extends Composite implements
this.expireDate = cal.getTime();
dateTimeLbl.setText(expireLabelFmt.format(expireDate));
if (!dead && !editorCorrectionMode) { // && !spellDialog) {
if (!dead) { //&& !editorCorrectionMode) { // && !spellDialog) {
changeTimes();
}
}
@ -1960,18 +1965,17 @@ public class ProductEditorComp extends Composite implements
// I know this time string has been replaced. If the lengths of the
// before and after strings are different, a reParse() will be made,
// else it will continue on.
if (textComp != null) {
// Update Issue time -- removed
// Update MND time
try {
textComp.startUpdate();
ProductDataStruct pds = textComp.getProductDataStruct();
if (pds != null) {
TextIndexPoints pit = pds.getPIT();
if (pit != null) {
String time = purgeTimeFmt.format(now);
textComp.replaceText(pit, time);
}
TextIndexPoints tip = pds.getMndMap().get("nwstime");
if (tip != null) {
SimpleDateFormat fmt = new SimpleDateFormat(
@ -1980,7 +1984,7 @@ public class ProductEditorComp extends Composite implements
String issueTime = fmt.format(now).toUpperCase();
if (tip != null) {
textComp.replaceText(tip, issueTime);
textComp.replaceText(tip, issueTime);
}
}
}
@ -1994,6 +1998,8 @@ public class ProductEditorComp extends Composite implements
// StyledTextComp to re-evaluate whether a reParse() is needed and
// ask it for the segment information each time through the loop (in
// case we're at one of the 4 transition points).
// Update segments' time
try {
ProductDataStruct pds = textComp.getProductDataStruct();
@ -2005,6 +2011,7 @@ public class ProductEditorComp extends Composite implements
fmt.setTimeZone(localTimeZone);
String officeIssueTime = fmt.format(now).toUpperCase();
for (int i = 0; i < numSegments; i++) {
textComp.startUpdate();
HashMap<String, TextIndexPoints> segMap = pds
@ -3055,4 +3062,9 @@ public class ProductEditorComp extends Composite implements
callToActionsMI.setMenu(callToActionsSubMenu);
createCallToActionsMenu(callToActionsSubMenu);
}
protected boolean isUpdateTime() {
return updateTime;
}
}

View file

@ -89,6 +89,7 @@ import com.raytheon.viz.gfe.textformatter.TextFmtParserUtil;
* Added logging of text changes to help diagnose future issues.
* 04 FEB 2015 17039 ryu Removed HighlightFramingCodes feature which prevented
* editing of framing codes.
* 07/02/2015 13753 lshi Update times for products in Product Editor
*
* </pre>
*
@ -625,7 +626,11 @@ public class StyledTextComp extends Composite {
}
private void makeCorrections() {
parent.setPTypeCategory(PTypeCategory.COR);
if (!parent.isUpdateTime()) {
parent.setPTypeCategory(PTypeCategory.COR);
}
if (prodDataStruct == null)
return;
List<SegmentData> segs = prodDataStruct.getSegmentsArray();
for (SegmentData seg : segs) {
if (seg.getSementMap().keySet().contains("vtec")) {

View file

@ -64,6 +64,7 @@ import com.raytheon.viz.gfe.types.MutableInteger;
* May 24, 2012 673 randerso Added defaulted method calls
* Jun 17, 2013 15951 ryu Fix index to wx/discrete key array
* Oct 31, 2013 2508 randerso Change to use DiscreteGridSlice.getKeys()
* Jun 30, 2015 14552 yteng Fix binnedHistogram method for SCALAR data
*
* </pre>
*
@ -199,6 +200,7 @@ public class HistSample {
_stdDevMaxD = 0.0f;
_stdDevMinD = 0.0f;
_binnedMostCommonValue = new HistValue(0.0f);
_binnedHistPairs = new ArrayList<HistPair>();
_binnedHistPairsValue = 0.0f;
// count up the number of sample points
@ -509,7 +511,7 @@ public class HistSample {
* @param resolution
* @return
*/
public final HistValue mostCommonValue(float resolution) {
public final HistValue mostCommonValueBinned(float resolution) {
if (_histPairs.size() == 0) {
return _mostCommonValue; // default HistValue()
}
@ -1190,19 +1192,17 @@ public class HistSample {
if (_histPairs.get(0).value().dataType().equals(GridType.SCALAR)) {
Map<Float, Integer> hp = new HashMap<Float, Integer>();
for (int i = 0; i < _histPairs.size(); i++) {
hp.put(binit(_histPairs.get(i).value().scalar(), resolution),
hp.get(binit(_histPairs.get(i).value().scalar(),
resolution)) + _histPairs.get(i).count());
float value = binit(_histPairs.get(i).value().scalar(), resolution);
hp.put(value, (hp.get(value)==null?0:(int)hp.get(value))
+ _histPairs.get(i).count());
}
int i = 0;
Iterator<?> pos = hp.entrySet().iterator();
Iterator<?> pos1 = hp.entrySet().iterator();
hs._binnedHistPairs = new ArrayList<HistPair>();
Iterator<Map.Entry<Float, Integer>> pos = hp.entrySet().iterator();
while (pos.hasNext()) {
pos1.next();
hs._binnedHistPairs.set(i++,
_histPairs.get(pos.next().hashCode()));
pos.next();
Entry<Float, Integer> p = pos.next();
hs._binnedHistPairs.add(
new HistPair(p.getValue(), new HistValue(p.getKey())));
}
}
// calculate the binned histogram for VECTOR

View file

@ -73,6 +73,7 @@ import com.raytheon.viz.hydro.pointdatacontrol.db.PDCDataManager;
import com.raytheon.viz.hydro.pointdatacontrol.util.PDCUtils;
import com.raytheon.viz.hydro.resource.MultiPointResource;
import com.raytheon.viz.hydrocommon.HydroConstants;
import com.raytheon.viz.hydrocommon.HydroConstants.TimeStepDataElementType;
import com.raytheon.viz.hydrocommon.HydroDisplayManager;
import com.raytheon.viz.hydrocommon.colorscalemgr.HydroColorManager;
import com.raytheon.viz.hydrocommon.colorscalemgr.NamedColorSetGroup;
@ -104,19 +105,23 @@ import com.raytheon.viz.ui.dialogs.ICloseCallback;
* 09 OCT 2012 #15396 Fixed Instantaneous precip index so legend and map display
* will change each time duration is incremented or decremented
* for the "30 minutes Instantaneous" rainfall map .
* 04 Dec 2012 15602 wkwock Fix Hrs hour capped at 100.
* 04 Dec 2012 15602 wkwock Fix Hrs hour capped at 100.
* 07 Feb 2013 1578 rferrel Changes for non-blocking FilteringDlg.
* Changes for non-blocking PDC_SaveDlg.
* 13 Mar 2013 1790 rferrel Changes for non-blocking dialog.
* Changes for non-blocking TabularDisplayDlg.
* Bug fix for non-blocking dialogs.
* 09 Mar 2015 13998 lbousaidi Changes to fix the precipitation data display.
* 09 Mar 2015 13998 lbousaidi Changes to fix the precipitation data display.
* 22 Jun 2015 13892 lbousaidi Fixed the saved the preset String selection.
* 01 July 2015 17002 xwei Added drop down button for PC and PP
*
* </pre>
*
* @author lvenable
* @version 1.0
*
*/
public class PointDataControlDlg extends CaveSWTDialog {
/** Singleton instance. */
private static PointDataControlDlg instance = null;
@ -363,12 +368,12 @@ public class PointDataControlDlg extends CaveSWTDialog {
/**
* Stations label.
*/
private Label stationsLbl;
private Label stationsOrPELbl;
/**
* Stations label.
*/
private Combo stationsCbo;
private Combo stationsOrPECbo;
/**
* Service area check box.
@ -546,6 +551,9 @@ public class PointDataControlDlg extends CaveSWTDialog {
/** The tabular display dialog. */
TabularDisplayDlg tabDisplay;
/** Flag indicating to save PE Elements */
private boolean loadSaved = true;
/**
* Obtain the singleton instance.
@ -658,6 +666,8 @@ public class PointDataControlDlg extends CaveSWTDialog {
* Initialize the dialog components.
*/
private void initializeComponents() {
loadSaved = true;
createPresetsQueryModeGroup();
createElementsGroup();
createValueTimeGroup();
@ -691,7 +701,8 @@ public class PointDataControlDlg extends CaveSWTDialog {
shell.setCursor(null);
}
loadSaved = false;
}
/**
@ -725,11 +736,14 @@ public class PointDataControlDlg extends CaveSWTDialog {
selPresetCbo.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent event) {
loadSaved = true;
handlePresetSelection();
shell.setCursor(waitCursor);
updateData = true;
drawMap();
shell.setCursor(null);
loadSaved = false;
}
});
@ -835,6 +849,9 @@ public class PointDataControlDlg extends CaveSWTDialog {
handleTimeStepElementComboSelection();
handleTsPhysicalElementSelection(physicalElementCbo
.getItem(physicalElementCbo.getSelectionIndex()));
handleStationsOrPE();
if ((physicalElementCbo.getSelectionIndex() == 0)
&& (elementTypeCbo.getSelectionIndex() == 1)) {
stackLayout.topControl = precipGroup;
@ -874,6 +891,9 @@ public class PointDataControlDlg extends CaveSWTDialog {
}
handleTsPhysicalElementSelection(physicalElementCbo
.getItem(physicalElementCbo.getSelectionIndex()));
handleStationsOrPE();
loadTimeInfo();
}
HydroDisplayManager.getInstance().setDataChanged(true);
@ -1204,23 +1224,28 @@ public class PointDataControlDlg extends CaveSWTDialog {
stationsComp.setLayoutData(gd);
gd = new GridData(70, SWT.DEFAULT);
stationsLbl = new Label(stationsComp, SWT.NONE | SWT.RIGHT);
stationsLbl.setText("Stations: ");
stationsLbl.setLayoutData(gd);
stationsOrPELbl = new Label(stationsComp, SWT.NONE | SWT.RIGHT);
stationsOrPELbl.setText("Stations: ");
stationsOrPELbl.setLayoutData(gd);
gd = new GridData(110, SWT.DEFAULT);
stationsCbo = new Combo(stationsComp, SWT.DROP_DOWN | SWT.READ_ONLY);
stationsCbo.add("All");
stationsCbo.add("Stream");
stationsCbo.add("Reservoir");
stationsCbo.select(0);
stationsCbo.setLayoutData(gd);
stationsCbo.addSelectionListener(new SelectionAdapter() {
stationsOrPECbo = new Combo(stationsComp, SWT.DROP_DOWN | SWT.READ_ONLY);
stationsOrPECbo.add("All");
stationsOrPECbo.add("Stream");
stationsOrPECbo.add("Reservoir");
stationsOrPECbo.select(0);
stationsOrPECbo.setLayoutData(gd);
stationsOrPECbo.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent event) {
PDCOptionData pcOptions = PDCOptionData.getInstance();
pcOptions.setRiverStationFilter(stationsCbo.getSelectionIndex());
setStationsOrPE( pcOptions );
shell.setCursor(waitCursor);
updateData = true;
drawMap();
shell.setCursor(null);
}
@ -1800,6 +1825,8 @@ public class PointDataControlDlg extends CaveSWTDialog {
* The preset id
*/
protected void populatePresetData(String id) {
loadSaved = true;
selPresetCbo.removeAll();
try {
@ -1826,6 +1853,8 @@ public class PointDataControlDlg extends CaveSWTDialog {
// TODO Auto-generated catch block
e.printStackTrace();
}
loadSaved = false;
}
/**
@ -1909,7 +1938,79 @@ public class PointDataControlDlg extends CaveSWTDialog {
// physicalElementCbo.select(pcOptions.getPeSelection());
physicalElementCbo.select(0);
}
private void handleStationsOrPE() {
if ( elementTypeCbo.getSelectionIndex() != TimeStepDataElementType.RAIN_TIME_STEP_TYPE.ordinal() ) {
stationsOrPELbl.setVisible(true);
stationsOrPECbo.setVisible(true);
stationsOrPELbl.setText("Stations: ");
stationsOrPECbo.removeAll();
stationsOrPECbo.add("All");
stationsOrPECbo.add("Stream");
stationsOrPECbo.add("Reservoir");
stationsOrPECbo.select(0);
}else{
if ( physicalElementCbo.getSelectionIndex() == 0 ) { // See TIMESTEP_DATA_ELEMENT_STRING_ARRAY for position
stationsOrPELbl.setVisible(false);
stationsOrPECbo.setVisible(false);
}else{
stationsOrPELbl.setVisible(true);
stationsOrPECbo.setVisible(true);
stationsOrPELbl.setText("Use PE: ");
stationsOrPECbo.removeAll();
stationsOrPECbo.add("PC and PP");
stationsOrPECbo.add("PC Only");
stationsOrPECbo.add("PP Only");
stationsOrPECbo.select(0);
}
}
}
private void setStationsOrPE( PDCOptionData pcOptions ) {
if ( elementTypeCbo.getSelectionIndex() != TimeStepDataElementType.RAIN_TIME_STEP_TYPE.ordinal() ) {
pcOptions.setRiverStationFilter( stationsOrPECbo.getSelectionIndex() );
}else{
if ( physicalElementCbo.getSelectionIndex() != 0 ) { // See TIMESTEP_DATA_ELEMENT_STRING_ARRAY for position
pcOptions.setPrecipPeFilter( stationsOrPECbo.getSelectionIndex() );
}
}
}
private void selectStationsOrPE( PDCOptionData pcOptions ) {
if ( elementTypeCbo.getSelectionIndex() != TimeStepDataElementType.RAIN_TIME_STEP_TYPE.ordinal() ) {
stationsOrPECbo.select(pcOptions.getRiverStationFilter());
}else{
if ( physicalElementCbo.getSelectionIndex() != 0 ) { // See TIMESTEP_DATA_ELEMENT_STRING_ARRAY for position
stationsOrPECbo.select(pcOptions.getPrecipPeFilter());
}
}
}
/**
* Perform updates for currently selected element type.
*/
@ -1928,7 +2029,12 @@ public class PointDataControlDlg extends CaveSWTDialog {
physicalElementCbo.add(elementStr);
}
physicalElementCbo.select(0);
if ( loadSaved == true ) {
physicalElementCbo.select( pcOptions.getPeSelection() );
}else{
physicalElementCbo.select(0);
}
handlePeSelection();
}
@ -1979,8 +2085,8 @@ public class PointDataControlDlg extends CaveSWTDialog {
*/
private void showAdHocControls(boolean flag) {
// Time Step control
stationsLbl.setVisible(!flag);
stationsCbo.setVisible(!flag);
stationsOrPELbl.setVisible(!flag);
stationsOrPECbo.setVisible(!flag);
// Ad Hoc control
dataSourceChk.setVisible(flag);
@ -2286,6 +2392,9 @@ public class PointDataControlDlg extends CaveSWTDialog {
handleTimeStepElementComboSelection();
handleTsPhysicalElementSelection(physicalElementCbo
.getItem(physicalElementCbo.getSelectionIndex()));
handleStationsOrPE();
if ((physicalElementCbo.getSelectionIndex() == 0)
&& (elementTypeCbo.getSelectionIndex() == 1)) {
stackLayout.topControl = precipGroup;
@ -2876,8 +2985,8 @@ public class PointDataControlDlg extends CaveSWTDialog {
}
/* set the pc_pc_riverStationFilterOM based on river_station_filter */
stationsCbo.select(pcOptions.getRiverStationFilter());
selectStationsOrPE( pcOptions );
/* set the pc_precipPeOM based on precip_pe_filter */
pcOptions.getPrecipPeFilter();
// TODO - This is invisible if not a rain PE Verify with the vpn

View file

@ -131,6 +131,7 @@ import com.vividsolutions.jts.index.strtree.STRtree;
* Feb 02, 2015 4075 ccody Added getSelectedGage for HS issue #3961
* Mar 09, 2015 13998 lbousaidi changed the dur display when it is null to match A1.
* Apr 09, 2015 4215 mpduff Check strTree before removing items.
* Jun 26, 2015 17386 xwei Fixed : HydroView crashes in when Refresh Data after loading saved display files
* Jul 06, 2015 4215 mpduff Correct the fact that user's cannot click and view time series.
*
* </pre>
@ -790,6 +791,9 @@ public class MultiPointResource extends
setScaleValues(paintProps);
IExtent extent = paintProps.getView().getExtent();
List<GageData> data = pdcManager.getObsReportList();
resetDataMap();
if (data != null) {
List<PointImage> images = new ArrayList<PointImage>(data.size());
List<DrawableString> strings = new ArrayList<DrawableString>(

View file

@ -41,6 +41,7 @@ import com.raytheon.viz.hydrocommon.datamanager.HydroDataManager;
* Date Ticket# Engineer Description
* ------------ ---------- ----------- --------------------------
* Sep 12, 2009 2772 mpduff Initial creation
* 30 June 2015 17360 xwei Fixed : basins.dat import failed if the first line does not have Lat Lon
*
* </pre>
*
@ -187,7 +188,7 @@ public class GeoDataManager extends HydroDataManager {
*/
for (int i = 0; i < data.getNumberPoints(); i++) {
if (i > 0) {
posWeight = Math.sqrt(Math.pow((lat[i] - lat[i - 2]), 2)
posWeight = Math.sqrt(Math.pow((lat[i] - lat[i - 1]), 2)
+ Math.pow((lon[i] - lon[i - 1]), 2));
}

View file

@ -91,7 +91,9 @@ import com.raytheon.viz.ui.dialogs.ICloseCallback;
* 02 Feb 2015 13372 djingtao change the GMT time to local time for "revise" field
* 08 April 2015 17338 djingtao "Apostrophe" entered into HB text fields are not written to IHFS database
* remove the changes in 15695/15488, move the apostrophe fix into a more central position
* 01 July 2015 15642 xwei Added read-only lat/lon in DMS format
*
*
* </pre>
*
* @author lvenable
@ -191,7 +193,17 @@ public class AddModifyLocationDlg extends CaveSWTDialog implements
* Longitude text control.
*/
private Text lonTF;
/**
* Latitude in DMS text control.
*/
private Text latDMSTF;
/**
* Longitude in DMS text control.
*/
private Text lonDMSTF;
/**
* Elevation text control.
*/
@ -695,6 +707,21 @@ public class AddModifyLocationDlg extends CaveSWTDialog implements
lonTF = new Text(leftComp, SWT.BORDER);
lonTF.setLayoutData(gd);
gd = new GridData(leftCellWidth, SWT.DEFAULT);
Label latLonDMSLbl = new Label(leftComp, SWT.RIGHT);
latLonDMSLbl.setText("Lat/Lon (DMS): ");
latLonDMSLbl.setLayoutData(gd);
gd = new GridData(110, SWT.DEFAULT);
latDMSTF = new Text(leftComp, SWT.BORDER);
latDMSTF.setLayoutData(gd);
latDMSTF.setEnabled(false);
gd = new GridData(110, SWT.DEFAULT);
lonDMSTF = new Text(leftComp, SWT.BORDER);
lonDMSTF.setLayoutData(gd);
lonDMSTF.setEnabled(false);
gd = new GridData(leftCellWidth, SWT.DEFAULT);
Label elevationLbl = new Label(leftComp, SWT.RIGHT);
elevationLbl.setText("Elevation: ");
@ -1393,6 +1420,14 @@ public class AddModifyLocationDlg extends CaveSWTDialog implements
lonTF.setText((locData.getLongitude() != HydroConstants.MISSING_VALUE) ? String
.valueOf(locData.getLongitude()) : "");
latDMSTF.setText(
GeoUtil.getInstance().cvt_latlon_from_double( ( locData.getLatitude() != HydroConstants.MISSING_VALUE ) ? locData.getLatitude() : 0 )
);
lonDMSTF.setText(
GeoUtil.getInstance().cvt_latlon_from_double( ( locData.getLongitude() != HydroConstants.MISSING_VALUE) ? locData.getLongitude() : 0 )
);
// Only display elevation if it isn't missing, i.e. null in DB
elevationTF
.setText((locData.getElevation() != HydroConstants.MISSING_VALUE) ? String

View file

@ -77,6 +77,8 @@ import com.vividsolutions.jts.geom.Coordinate;
* 09 Sep 2009 2772 mpduff Implemented Dialog.
* 16 Apr 2013 1790 rferrel Made dialog non-blocking.
* 16 Jul 2013 2088 rferrel Changes for non-blocking TextEditorDlg.
* 29 June 2015 14630 xwei Fixed : Not able to import basins.dat with apostrophe and incorrect data posted
* 30 June 2015 17360 xwei Fixed : basins.dat import failed if the first line does not have Lat Lon
*
* </pre>
*
@ -692,6 +694,7 @@ public class ArealDefinitionsDlg extends CaveSWTDialog {
/* Remove any excess whitespace. */
str = str.trim();
str = str.replaceAll("\\s{2,}", " ");
str = str.replaceAll("'", "''");
String[] parts = str.split(" ");
int numParts = parts.length;
@ -701,7 +704,7 @@ public class ArealDefinitionsDlg extends CaveSWTDialog {
* point is found then assume this line has two lat/lon values
* at the end.
*/
if (parts[numParts - 2].contains(".")
if (numParts == 6 && parts[numParts - 2].contains(".")
&& parts[numParts - 1].contains(".")) {
intLat = Double.parseDouble(parts[numParts - 2]);
intLon = Double.parseDouble(parts[numParts - 1]);
@ -719,11 +722,17 @@ public class ArealDefinitionsDlg extends CaveSWTDialog {
}
}
int shiftNum = 0;
if ( numParts == 4 ){
shiftNum = 2;
}
/*
* get the number of lat-lon pairs that follow, from the end of
* the line
*/
nPts = Integer.parseInt(parts[numParts - 3]);
nPts = Integer.parseInt(parts[numParts - 3 + shiftNum]);
double[] lonPoints = new double[nPts];
double[] latPoints = new double[nPts];
@ -731,7 +740,7 @@ public class ArealDefinitionsDlg extends CaveSWTDialog {
* get the stream order, which is not always specified, from the
* field preceding the num of lat-lon pairs
*/
int streamOrder = Integer.parseInt(parts[numParts - 4]);
int streamOrder = Integer.parseInt(parts[numParts - 4 + shiftNum]);
if ((streamOrder < -1) || (streamOrder > 50)) {
log("WARNING: Error reading stream order in line "
@ -743,7 +752,7 @@ public class ArealDefinitionsDlg extends CaveSWTDialog {
/* get the identifying name */
StringBuilder name = new StringBuilder();
for (int j = 1; j <= numParts - 5; j++) {
for (int j = 1; j <= numParts - 5 + shiftNum; j++) {
name.append(parts[j] + " ");
}
@ -790,7 +799,7 @@ public class ArealDefinitionsDlg extends CaveSWTDialog {
} else {
double lat = Double.parseDouble(latlon[0]);
double lon = Double.parseDouble(latlon[1]);
lon *= -1;
/* Test the bounds of the longitude value. */
if ((lon < -180) || (lon > 180)) {
log("ERROR reading or invalid lon for id "

View file

@ -37,7 +37,8 @@ import com.vividsolutions.jts.geom.Coordinate;
* Date Ticket# Engineer Description
* ------------ ---------- ----------- --------------------------
* Sep 15, 2009 2772 mpduff Initial creation
* Apr 16, 2013 1790 rferrel Code clean up for non-blocking dialogs.
* Apr 16, 2013 1790 rferrel Code clean up for non-blocking dialogs.
* June 29, 2015 14630 xwei Fixed : Not able to import basins.dat with apostrophe and incorrect data posted
*
* </pre>
*
@ -204,8 +205,7 @@ public class LineSegmentUtil {
* longitude box defined by the max lat/lon and the min lat/lon pairs
* retrieved above.
*/
Coordinate hrap = HrapUtil.latLonToHrap(new Coordinate(minLatLon.x,
maxLatLon.y));
Coordinate hrap = HrapUtil.latLonToHrap(new Coordinate(maxLatLon.x, maxLatLon.y));
minRow = hrap.y;
maxRow = hrap.y;
minCol = hrap.x;
@ -214,18 +214,15 @@ public class LineSegmentUtil {
for (int i = LATLON_NORTHEAST_CORNER; i <= LATLON_SOUTHWEST_CORNER; i++) {
switch (i) {
case LATLON_NORTHEAST_CORNER:
hrap = HrapUtil.latLonToHrap(new Coordinate(maxLatLon.x,
maxLatLon.y));
hrap = HrapUtil.latLonToHrap(new Coordinate(minLatLon.x, maxLatLon.y));
break;
case LATLON_SOUTHEAST_CORNER:
hrap = HrapUtil.latLonToHrap(new Coordinate(maxLatLon.x,
minLatLon.y));
hrap = HrapUtil.latLonToHrap(new Coordinate(minLatLon.x, minLatLon.y));
break;
case LATLON_SOUTHWEST_CORNER:
hrap = HrapUtil.latLonToHrap(new Coordinate(minLatLon.x,
minLatLon.y));
hrap = HrapUtil.latLonToHrap(new Coordinate(maxLatLon.x, minLatLon.y));
break;
default:
@ -295,9 +292,20 @@ public class LineSegmentUtil {
binList.setArea(binList.getArea() + singleBinArea);
} else {
/* previous bin was outside */
binList.getRows().add((long) r);
binList.getBeginCols().add((long) c);
binList.getEndCols().add((long) c);
if ( index >= binList.getRows().size() ){
binList.getRows().add((long) r);
binList.getBeginCols().add((long) c);
binList.getEndCols().add((long) c);
}else{
binList.getRows().set( index, (long) r );
binList.getBeginCols().set( index, (long) c );
binList.getEndCols().set( index, (long) c );
}
binList.setNumBins(binList.getNumBins() + 1);
singleBinArea = HrapUtil.getHrapBinArea(new Coordinate(

View file

@ -80,6 +80,7 @@ import com.raytheon.viz.ui.dialogs.ICloseCallback;
* Changes for non-blocking FcstPointGroupDlg.
* Feb.02, 2015 #13372 djingtao Change from GMT time to local time for "Revise" field
* May 15, 2015 4380 skorolev Added issuanceStage and issuanceFlow text fields.
* Jul 06, 2015 #14104 lbousaidi increased textlimit to 15
*
* </pre>
*
@ -751,7 +752,7 @@ public class RiverGageDlg extends CaveSWTDialog implements
gd = new GridData(120, SWT.DEFAULT);
usgsNoTF = new Text(infoGroup, SWT.BORDER);
usgsNoTF.setLayoutData(gd);
usgsNoTF.setTextLimit(10);
usgsNoTF.setTextLimit(15);
// Lat/Lon Source
gd = new GridData(SWT.FILL, SWT.CENTER, false, false);

View file

@ -29,6 +29,7 @@ import java.util.LinkedHashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.TimeZone;
import javax.measure.converter.UnitConverter;
import javax.measure.unit.Unit;
@ -108,6 +109,8 @@ import com.raytheon.viz.ui.editor.IMultiPaneEditor;
* Feb 04, 2014 16410 lbousaidi changed the first letter of the month to lower case.
* Feb 19, 2014 2628 mpduff Change cast from short to int when creating color bar.
* Jun 30, 2014 17457 snaples Added default case to switch in getXmrgfile.
* Jul 8, 2015 16790 snaples Updated setCurrentEditDate to refresh resources when dateMap is stale.
* Jul 29, 2015 17471 snaples Updated editTime to ensure that it always references "GMT" timezone.
*
* </pre>
*
@ -453,6 +456,9 @@ public class MPEDisplayManager {
throw new RuntimeException("Error time matching MPE", e);
}
editTime = getCurrentDisplayedDate();
Calendar cal = Calendar.getInstance(TimeZone.getTimeZone("GMT"));
cal.setTime(editTime);
editTime = cal.getTime();
// token for default display
String mdd = AppsDefaults.getInstance().getToken("mpe_def_display");
@ -656,13 +662,20 @@ public class MPEDisplayManager {
* @param force
* @return
*/
private boolean setCurrentEditDate(Date newDate, boolean force) {
public boolean setCurrentEditDate(Date newDate, boolean force) {
MPEDataManager dm = MPEDataManager.getInstance();
// check for date in valid range
if (newDate.before(dm.getEarliestDate())
|| newDate.after(dm.getLatestDate())) {
return false;
if ((newDate.before(dm.getEarliestDate())
|| newDate.after(dm.getLatestDate())) || force ) {
IEditorPart editor = EditorUtil.getActiveEditor();
if (editor instanceof IDisplayPaneContainer) {
IDisplayPaneContainer container = (IDisplayPaneContainer) editor;
for (IDisplayPane pane : container.getDisplayPanes()) {
pane.clear();
}
}
}
if (editTime.equals(newDate) == false) {

View file

@ -44,6 +44,7 @@ import com.raytheon.viz.mpe.util.ReadTemperatureStationList;
* ------------ ---------- ----------- --------------------------
* Mar 31, 2009 snaples Initial creation
* Feb 5, 2015 17101 snaples Updated max_stations to use size of dqc.precip_stations.
* Jun 25, 2015 17397 snaples Removed send_expose in apply_group method to prevent screen from blanking.
*
* </pre>
*
@ -163,7 +164,6 @@ public class GroupEditCalls {
bv.restore_bad_values(pcpn_day, dqc.precip_stations,
max_stations);
opo.send_expose();
group_edit = 0;
QcPrecipOptionsDialog.groupEditBtn.setEnabled(true);

View file

@ -46,6 +46,8 @@ import com.raytheon.viz.ui.tools.ModalToolManager;
* Date Ticket# Engineer Description
* ------------ ---------- ----------- --------------------------
* 11Apr2011 8738 jpiatt Initial Creation.
* Jun 30, 2015 14317 snaples Fixed issue when toggling back from Areal Zoom,
* not going to Pan mode.
*
* </pre>
*
@ -61,6 +63,7 @@ public class MPEZoomAction extends AbstractHandler {
private IDisplayPane pane = null;
private IRenderableDisplay display = null;
/*
* (non-Javadoc)
@ -108,6 +111,7 @@ public class MPEZoomAction extends AbstractHandler {
pane.getRenderableDisplay().setExtent(unZoomedExtent);
pane.getDescriptor().getRenderableDisplay().refresh();
mgr.activateToolSet(PAN_ID);
break;
}
}

View file

@ -61,6 +61,7 @@ import com.raytheon.viz.mpe.util.WriteQPFGrids;
* Date Ticket# Engineer Description
* ------------ ---------- ----------- --------------------------
* Mar 30, 2009 snaples Initial creation
* Jul 9, 2015 14618 snaples Updated render_options to be more efficient, and resolve an error.
*
* </pre>
*
@ -130,7 +131,6 @@ public class OtherPrecipOptions {
int map_flag = DailyQcUtils.map_flag;
/* 24 hour or 6 hour time step */
if (MPEDisplayManager.pcpn_time_step == 0) {
time_pos = DailyQcUtils.pcpn_time;
} else {
@ -157,8 +157,6 @@ public class OtherPrecipOptions {
change_rpcpn_flag = -1;
change_pcpn_flag = 1;
rsmode = 1;
// show legend
}
}
@ -287,7 +285,7 @@ public class OtherPrecipOptions {
Calendar tget = Calendar.getInstance(TimeZone.getTimeZone("GMT"));
long offset = (DailyQcUtils.pcpn_day * 86400);
tget.setTime(dqc.btime.getTime());
tget.setTime(DailyQcUtils.btime.getTime());
tget.add(Calendar.SECOND, (int) -offset);
DailyQcUtils.isom = tget.get(Calendar.MONTH);
@ -432,16 +430,11 @@ public class OtherPrecipOptions {
int clientdata = i;
Date old_time = null;
String dbuf = "";
// String[][] timefile = dqc.timefile;
// String[][] ztimefile = dqc.ztimefile;
// String[][] ttimefile = dqc.ttimefile;
WriteQPFGrids wq = new WriteQPFGrids();
RenderPcp rpc = new RenderPcp();
CreateMap cm = new CreateMap();
MakeRsel mr = new MakeRsel();
// Hrap_Grid hrap_grid = DailyQcUtils.getHrap_grid();
Calendar tmtime = Calendar.getInstance(TimeZone.getTimeZone("GMT"));
// ReadPrecipStationList rp = new ReadPrecipStationList();
int num_stations = DailyQcUtils.precip_stations.size();
String s = appsDefaults.getToken(dqc_ending_6hour_obstime_tok);
int dqc_ending_6hour_obstime = ((!(null == s)) ? Integer.parseInt(s)
@ -455,12 +448,8 @@ public class OtherPrecipOptions {
// // do nothing
// }
if (clientdata == 1) {
// do nothing
}
/* Rendering the grids and MAPs. */
else if (clientdata == 0) {
if (clientdata == 0) {
BadValues bv = new BadValues();
bv.update_bad_values(DailyQcUtils.pcpn_day);
@ -1053,7 +1042,6 @@ public class OtherPrecipOptions {
QcTempOptionsDialog.renderGridsBtn.setEnabled(false);
}
send_expose();
// refresh_exposure();
}
public void send_expose() {

View file

@ -78,6 +78,7 @@ import com.raytheon.viz.mpe.util.WriteQPFGrids;
* Nov 06, 2012 15481 wkwock Fix save 6 hours precipitation files
* May 02, 2013 15956 wkwock Fix incorrect contents in precip_LLL_grid_yyyymmdd.nc file
* Mar 10, 2015 14575 snaples Added status check to make sure that we close everything before exiting.
* Jun 25, 2015 17462 snaples Fixed loop of basins for temp and freezing.
*
* </pre>
*
@ -1629,7 +1630,7 @@ public class SaveLevel2Data {
gm.add(Calendar.SECOND, -86400);
/* loop through and write maps to file */
for (m = 0; mean_areal_precip_global[m].hb5 != ""; m++) {
for (m = 0; m < dqc.getMax_basins(); m++) {
numzones = 0;
for (l = 0; l < 4; l++) {
@ -2245,8 +2246,7 @@ public class SaveLevel2Data {
gm.add(Calendar.SECOND, -86400);
/* loop through and write maps to file */
for (m = 0; mean_areal_precip_global[m].hb5 != ""; m++) {
for (m = 0; m < dqc.getMax_basins(); m++) {
numzones = 0;
for (l = 0; l < 4; l++) {

View file

@ -70,6 +70,8 @@ import com.raytheon.viz.ui.editor.IMultiPaneEditor;
* Nov 24, 2014 16911 xwei The day of Hydrologic Date is set to the next day
* if hour is greater than 18Z.
* Jan 05, 2015 14246 lbousaidi enable Transmit Best Estimate QPE.
* Jul 8, 2015 16790 snaples Updated call to setCurrentEditDate to pass force variable.
*
* </pre>
*
* @author randerso
@ -159,7 +161,7 @@ public class ChooseDataPeriodDialog extends CaveJFACEDialog {
displayMgr = MPEDisplayManager.getInstance(pane);
dataMgr = MPEDataManager.getInstance();
dateMap = dataMgr.getDateMap(false);
dateMap = dataMgr.getDateMap(true);
qcEnable = MPEDisplayManager.isMpeQcOptionEnabled();
cal = Calendar.getInstance(TimeZone.getTimeZone("GMT"));
hydroCal = Calendar.getInstance(TimeZone.getTimeZone("GMT"));
@ -328,7 +330,7 @@ public class ChooseDataPeriodDialog extends CaveJFACEDialog {
// Hide so if setCurrentEditDate returns false, we can continue
// to display
hide();
if (displayMgr.setCurrentEditDate(getTime())) {
if (displayMgr.setCurrentEditDate(getTime(), true)) {
close();
} else {
restore();

View file

@ -82,9 +82,11 @@ import com.vividsolutions.jts.geom.Coordinate;
* Date Ticket# Engineer Description
* ------------ ---------- ----------- --------------------------
* Apr 13, 2009 snaples Initial creation
* Jun 27, 2013 15859 wkwock Update this dialog after click Apply button
* Jun 27, 2013 15859 wkwock Update this dialog after click Apply button
* Nov 26, 2014 16889 snaples Updated to fix SNOTEL display
*
* Jun 18, 2015 14298,17388 ptilles Updated to fix problem with mpe_dqc_6hr_24hr_ste_bad token and problem
* with changing a 6hr value in 24hr mode
*
* </pre>
*
* @author snaples
@ -252,7 +254,9 @@ public class EditPrecipStationsDialog extends AbstractMPEDialog implements
int[] allowedQualityCodes = dqc.func;
int pcpn_day = DailyQcUtils.pcpn_day;
int mpe_dqc_6hr_24hr_flag = 1;
Coordinate coord = new Coordinate();
boolean mpe_dqc_warningpopup_flag = false;
@ -1011,15 +1015,20 @@ public class EditPrecipStationsDialog extends AbstractMPEDialog implements
protected void resetStationQuality(Integer data) {
int k;
if (pcpn_time_step == 0) {
if (pcpn_time_step == 0)
{
time_pos = pcpn_time;
} else {
}
else
{
time_pos = HOURS_24;
}
if (data == 1) {
if (data == 1)
{
for (k = 0; k < 5; k++) {
for (k = 0; k < 5; k++)
{
pdata[pcpn_day].stn[isave].frain[k].qual = pdata[pcpn_day].stn[isave].rrain[k].qual;
@ -1030,7 +1039,9 @@ public class EditPrecipStationsDialog extends AbstractMPEDialog implements
reset_value = 1;
new_qual = pdata[pcpn_day].stn[isave].rrain[time_pos].qual;
} else {
}
else
{
reset_value = 0;
}
@ -1047,7 +1058,6 @@ public class EditPrecipStationsDialog extends AbstractMPEDialog implements
new_qual = allowedQualityCodes[data];
pdata[pcpn_day].stn[isave].frain[time_pos].qual = (short) new_qual;
System.out.println(header + " new_qual = " + new_qual);
}
protected void changeCustomFile() {
@ -1076,15 +1086,28 @@ public class EditPrecipStationsDialog extends AbstractMPEDialog implements
custom.setReadable(true, false);
custom.setWritable(true, false);
//token name: mpe_dqc_6hr_24hr_set_bad
// token value = OFF
// mpe_dqc_6hr_24hr_flag = 0
// if user sets 6hr value to Bad, then 24hr value is unaffected
// token value = ON
// mpe_dqc_6hr_24hr_flag = 1
// if user sets 6hr value to Bad, then 24hr value is set to Bad
String mpe_dqc_6hr_24hr_string = AppsDefaults.getInstance().getToken(
"mpe_dqc_6hr_24hr_set_bad", "OFF");
"mpe_dqc_6hr_24hr_set_bad", "ON");
int mpe_dqc_6hr_24hr_flag = 0;
if (mpe_dqc_6hr_24hr_string.equalsIgnoreCase("ON")) {
mpe_dqc_6hr_24hr_flag = 1;
if (mpe_dqc_6hr_24hr_string.equalsIgnoreCase("OFF"))
{
mpe_dqc_6hr_24hr_flag = 0;
System.out.println("mpe_dqc_6hr_24hr_flag = 0 -- token = OFF");
}
else
{
System.out.println("mpe_dqc_6hr_24hr_flag = 1 -- token = ON");
}
if (pcpn_time_step == 0) {
time_pos = pcpn_time;
} else {
@ -1093,7 +1116,7 @@ public class EditPrecipStationsDialog extends AbstractMPEDialog implements
try {
out = new BufferedWriter(new FileWriter(custom));
for (i = 0; i < max_stations; i++) {
Station station = precipStationList.get(i);
String rec = String.format("%s %s %d %d\n", station.hb5,
@ -1123,7 +1146,8 @@ public class EditPrecipStationsDialog extends AbstractMPEDialog implements
/* snotel path */
if (snow == true
&& ((bval == true && pdata[pcpn_day].stn[isave].sflag[HOURS_24] == -1) || (bval == false && pdata[pcpn_day].stn[isave].sflag[HOURS_24] == 1))) {
&& ((bval == true && pdata[pcpn_day].stn[isave].sflag[HOURS_24] == -1) || (bval == false && pdata[pcpn_day].stn[isave].sflag[HOURS_24] == 1)))
{
pdata[pcpn_day].stn[isave].sflag[HOURS_24] = (short) -pdata[pcpn_day].stn[isave].sflag[HOURS_24];
@ -1140,30 +1164,25 @@ public class EditPrecipStationsDialog extends AbstractMPEDialog implements
}
else {
else
{
boolean value_edit_flag = false;
val = pdata[pcpn_day].stn[isave].frain[time_pos].data;
p = -1;
// if (editVal != null) // null unless a value was edited
// {
for (k = 0; k < 5; k++) {
/* other path */
for (k = 0; k < 5; k++)
{
cstr = precipValueStringArray[k];
System.out.println(header + "cstr = " + cstr);
val = Float.parseFloat(cstr);
System.out.println(header + "value = " + val);
p = cstr.indexOf('M');
cstr = null;
// } // end if editVal != null
/* use manually entered data */
/* need to ensure consistency in 6 and 24 hour data??? */
fdif = Math.abs(val
- pdata[pcpn_day].stn[isave].frain[time_pos].data);
if (fdif > .005 && p == -1 && reset_value == 0) {
fdif = Math.abs(val - pdata[pcpn_day].stn[isave].frain[k].data); // changed for DR 17388
if (fdif > .005 && p == -1 && reset_value == 0)
{
pdata[pcpn_day].stn[isave].frain[k].data = val;
pdata[pcpn_day].stn[isave].frain[k].qual = F_MANUAL;
pdata[pcpn_day].stn[isave].sflag[k] = -1;
@ -1171,11 +1190,14 @@ public class EditPrecipStationsDialog extends AbstractMPEDialog implements
}
}
if (value_edit_flag == true && reset_value == 0) {
if (value_edit_flag == true && reset_value == 0)
{
rtotal = 0;
for (m = 0; m < 4; m++) {
if (pdata[pcpn_day].stn[isave].frain[m].data >= 0) {
for (m = 0; m < 4; m++)
{
if (pdata[pcpn_day].stn[isave].frain[m].data >= 0)
{
rtotal = rtotal
+ pdata[pcpn_day].stn[isave].frain[m].data;
}
@ -1186,33 +1208,33 @@ public class EditPrecipStationsDialog extends AbstractMPEDialog implements
* values to zero and set their QC codes to "Manual" as well.
*/
if ((Math
.abs(pdata[pcpn_day].stn[isave].frain[HOURS_24].data - 0.0) < 0.001)
&& (time_pos == HOURS_24)) {
for (m = 0; m < 4; m++) {
if ((Math.abs(pdata[pcpn_day].stn[isave].frain[HOURS_24].data - 0.0) < 0.001) && (time_pos == HOURS_24))
{
for (m = 0; m < 4; m++)
{
pdata[pcpn_day].stn[isave].frain[m].data = 0;
pdata[pcpn_day].stn[isave].frain[m].qual = F_MANUAL;
}
rtotal = 0;
}
if (Math.abs(rtotal
- pdata[pcpn_day].stn[isave].frain[HOURS_24].data) > .005) {
if (Math.abs(rtotal - pdata[pcpn_day].stn[isave].frain[HOURS_24].data) > .005)
{
read_text();
return;
}
} // end if (frain.qual == MANUAL || tcmode == 1)
else {
}
else
{
pdata[pcpn_day].stn[isave].frain[time_pos].qual = (short) new_qual;
/* 24 hour data set bad/good then 6 hourly bad/good also */
if (new_qual == F_BAD && time_pos == HOURS_24
&& pdata[pcpn_day].stn[isave].sflag[time_pos] == 1) {
if (new_qual == F_BAD && time_pos == HOURS_24 && pdata[pcpn_day].stn[isave].sflag[time_pos] == 1)
{
pdata[pcpn_day].stn[isave].frain[time_pos].data = pdata[pcpn_day].stn[isave].rrain[time_pos].data;
@ -1220,69 +1242,72 @@ public class EditPrecipStationsDialog extends AbstractMPEDialog implements
}
if (time_pos == HOURS_24
&& (new_qual == F_BAD || new_qual == F_SCREENED
|| new_qual == F_VERIFIED || new_qual == F_PARTIAL)) {
if (time_pos == HOURS_24 && (new_qual == F_BAD || new_qual == F_SCREENED
|| new_qual == F_VERIFIED || new_qual == F_PARTIAL))
{
for (k = 0; k < 4; k++) {
/* if(pdata[pcpn_day].stn[isave].frain[k].qual!=1) */
for (k = 0; k < 4; k++)
{
pdata[pcpn_day].stn[isave].frain[k].qual = (short) new_qual;
}
}
/*-------------------------------------------------------*/
/*
* if 6 hr QC code set bad by user, then some RFCs want the 24hr
* QC code to be set to Bad
* if 6 hr QC code set Bad by user and token value = ON, then set 24hr QC code to Bad
* following code also allows 24 hr partial data to be set to Bad
*/
/* others want the 24hr QC code to remain unchanged */
/* added token to choose behavior */
/* following code also allows partial data to be set as bad */
/* 6 hour data set bad set 24 hour bad too */
if (time_pos != HOURS_24
&& new_qual == F_BAD
if (time_pos != HOURS_24 && new_qual == F_BAD
&& pdata[pcpn_day].stn[isave].frain[HOURS_24].qual != F_ESTIMATED
&& pdata[pcpn_day].stn[isave].frain[HOURS_24].data >= 0) {
if (mpe_dqc_6hr_24hr_flag == 1) {
System.out
.println("6hr qual code set to Bad - 24hr qual code changed to Bad\n");
// frain24.qual = (short) new_qual;
pdata[pcpn_day].stn[isave].frain[HOURS_24].qual = (short) new_qual;
&& pdata[pcpn_day].stn[isave].frain[HOURS_24].data >= 0)
{
if (mpe_dqc_6hr_24hr_flag == 1)
{
System.out.println(header + "6hr qual code set to Bad - 24hr qual code changed to Bad\n");
pdata[pcpn_day].stn[isave].frain[HOURS_24].qual = F_BAD;
}
else
{
System.out.println(header + "6hr qual code set to Bad - 24hr qual code unchanged\n");
}
}
/*
* --------------------------------------------------------------
* --
*/
if (pdata[pcpn_day].stn[isave].frain[4].qual == F_BAD
|| pdata[pcpn_day].stn[isave].frain[4].data < 0) {
if (tcmode == 0) {
if (pdata[pcpn_day].stn[isave].frain[HOURS_24].qual == F_BAD ||
pdata[pcpn_day].stn[isave].frain[HOURS_24].data < 0)
{
if (tcmode == 0)
{
pdata[pcpn_day].stn[isave].tcons = 1;
} else {
}
else
{
pdata[pcpn_day].stn[isave].tcons = -1;
}
}
} // end else
} // end else
} // end if (value_edit_flag == true && reset_value == 0)
} // end if (snow == true)
for (k = 0; k < 5; k++) {
for (k = 0; k < 5; k++)
{
if (k < 4) {
if (k < 4)
{
time_pos = pcpn_day * 4 + k;
} else {
}
else
{
time_pos = 40 + pcpn_day;
}
// pcp_in_use[time_pos] = -1;
if (pdata[pcpn_day].used[k] != 0) {
if (pdata[pcpn_day].used[k] != 0)
{
pdata[pcpn_day].used[k] = 2;
}
}
QcPrecipOptionsDialog.dataSet.clear();
QcPrecipOptionsDialog.dataSet.addAll(QcPrecipOptionsDialog.dataType);
for (k = 1; k < 7; k++) {
@ -1292,7 +1317,7 @@ public class EditPrecipStationsDialog extends AbstractMPEDialog implements
String[] a = new String[QcPrecipOptionsDialog.dataSet.size()];
QcPrecipOptionsDialog.setDataSetCombo(QcPrecipOptionsDialog.dataSet
.toArray(a));
if (pcpn_time_step == 0) {
time_pos = pcp_flag;
} else {
@ -1320,7 +1345,6 @@ public class EditPrecipStationsDialog extends AbstractMPEDialog implements
}
QcPrecipOptionsDialog.selectDataSetVal(k);
rpbutton.setEnabled(true);
BadValues bv = new BadValues();
@ -1331,20 +1355,21 @@ public class EditPrecipStationsDialog extends AbstractMPEDialog implements
* if run DQC on partial time frame and pcpn_day=0
*/
if (pcpn_day == 0
&& (dqc.curHr00_06 == 1
|| dqc.curHr06_12 == 1 || dqc.curHr18_00 == 1)) {
// do nothing
} else {
EstDailyStations eds = new EstDailyStations();
eds.estimate_daily_stations(pcpn_day, precipStationList,
max_stations);
EstPartStations eps = new EstPartStations();
eps.estimate_partial_stations(pcpn_day, precipStationList,
max_stations);
if (pcpn_day == 0 && (dqc.curHr00_06 == 1 || dqc.curHr06_12 == 1 || dqc.curHr18_00 == 1))
{
// do nothing
}
else
{
EstDailyStations eds = new EstDailyStations();
eds.estimate_daily_stations(pcpn_day, precipStationList,
max_stations);
EstPartStations eps = new EstPartStations();
eps.estimate_partial_stations(pcpn_day, precipStationList,
max_stations);
}
QCStations qcs = new QCStations();
qcs.quality_control_stations(pcpn_day, precipStationList, max_stations);
@ -1353,12 +1378,7 @@ public class EditPrecipStationsDialog extends AbstractMPEDialog implements
bv.restore_bad_values(pcpn_day, precipStationList, max_stations);
// logMessage("new_qual again %d station qual %d\n", new_qual,
// pdata[pcpn_day].stn[isave].frain[4].qual);
if (k == 1 || k == 3) {
grids_flag = 1;
}
if (k == 1 || k == 3) grids_flag = 1;
OtherPrecipOptions op = new OtherPrecipOptions();
op.send_expose();
@ -1485,7 +1505,6 @@ public class EditPrecipStationsDialog extends AbstractMPEDialog implements
int k, p;
String cstr;
float val, fdif;
// int[] pcp_in_use = DailyQcUtils.pcp_in_use;
int pcp_flag = DailyQcUtils.pcp_flag;
Button rpbutton = QcPrecipOptionsDialog.renderGridsBtn;
int grids_flag = DailyQcUtils.grids_flag;
@ -1495,28 +1514,31 @@ public class EditPrecipStationsDialog extends AbstractMPEDialog implements
Rain frain24 = pdata[pcpn_day].stn[isave].frain[HOURS_24];
for (k = 0; k < 5; k++) {
for (k = 0; k < 5; k++)
{
Rain frain = pdata[pcpn_day].stn[isave].frain[k];
cstr = precipValueStringArray[k];
val = 0;
p = cstr.indexOf('M');
if (p == -1) {
if (p == -1)
{
val = Float.parseFloat(cstr);
}
fdif = Math.abs(val - frain.data);
if (p != -1) {
if (p != -1)
{
pdata[pcpn_day].stn[isave].frain[k].data = -1;
p = -1;
} else if (fdif > .005 && p == -1) {
}
else if (fdif > .005 && p == -1)
{
pdata[pcpn_day].stn[isave].frain[k].data = val;
pdata[pcpn_day].stn[isave].frain[k].qual = F_MANUAL;
pdata[pcpn_day].stn[isave].sflag[k] = -1;
}
cstr = null;
}
@ -1549,10 +1571,6 @@ public class EditPrecipStationsDialog extends AbstractMPEDialog implements
QcPrecipOptionsDialog.dataSet.clear();
QcPrecipOptionsDialog.dataSet.addAll(QcPrecipOptionsDialog.dataType);
// for (k = 1; k < 7; k++) {
// QcPrecipOptionsDialog.dataSet.remove(QcPrecipOptionsDialog.dataSet
// .indexOf(QcPrecipOptionsDialog.dataType.get(k)));
// }
if (pcpn_time_step == 0) {
time_pos = pcp_flag;

View file

@ -66,6 +66,7 @@ import com.raytheon.viz.mpe.util.DailyQcUtils;
* when pressed.
* Sep 11, 2013 #2353 lvenable Fixed cursor memory leak.
* Mar 10, 2015 14575 snaples Added additional status flag.
* Jul 9, 2015 14618 snaples Cleaned up code issues.
* </pre>
*
* @author snaples
@ -170,32 +171,32 @@ public class QcPrecipOptionsDialog extends AbstractMPEDialog {
private int getOpts() {
int ik = 0;
if (dqc.points_flag == 1 && dqc.pcp_in_use[time_pos] == -1) {
if (DailyQcUtils.points_flag == 1 && DailyQcUtils.pcp_in_use[time_pos] == -1) {
ik = 0;
} else if (dqc.points_flag == 1
&& dqc.grids_flag == -1 && dqc.map_flag == -1
&& dqc.contour_flag == -1) {
} else if (DailyQcUtils.points_flag == 1
&& DailyQcUtils.grids_flag == -1 && DailyQcUtils.map_flag == -1
&& DailyQcUtils.contour_flag == -1) {
ik = 0;
} else if (dqc.points_flag == -1
&& dqc.grids_flag == 1 && dqc.map_flag == -1) {
} else if (DailyQcUtils.points_flag == -1
&& DailyQcUtils.grids_flag == 1 && DailyQcUtils.map_flag == -1) {
ik = 1;
} else if (dqc.points_flag == -1
&& dqc.grids_flag == -1 && dqc.map_flag == 1) {
} else if (DailyQcUtils.points_flag == -1
&& DailyQcUtils.grids_flag == -1 && DailyQcUtils.map_flag == 1) {
ik = 2;
} else if (dqc.points_flag == 1
&& dqc.grids_flag == 1 && dqc.map_flag == -1) {
} else if (DailyQcUtils.points_flag == 1
&& DailyQcUtils.grids_flag == 1 && DailyQcUtils.map_flag == -1) {
ik = 3;
} else if (dqc.points_flag == 1
&& dqc.grids_flag == -1 && dqc.map_flag == 1) {
} else if (DailyQcUtils.points_flag == 1
&& DailyQcUtils.grids_flag == -1 && DailyQcUtils.map_flag == 1) {
ik = 4;
} else if (dqc.points_flag == -1
&& dqc.contour_flag == 1) {
} else if (DailyQcUtils.points_flag == -1
&& DailyQcUtils.contour_flag == 1) {
ik = 5;
} else if (dqc.points_flag == 1
&& dqc.contour_flag == 1) {
} else if (DailyQcUtils.points_flag == 1
&& DailyQcUtils.contour_flag == 1) {
ik = 6;
} else if (dqc.points_flag == -1
&& dqc.grids_flag == -1 && dqc.map_flag == -1) {
} else if (DailyQcUtils.points_flag == -1
&& DailyQcUtils.grids_flag == -1 && DailyQcUtils.map_flag == -1) {
ik = 7;
}
return ik;
@ -331,11 +332,11 @@ public class QcPrecipOptionsDialog extends AbstractMPEDialog {
*/
private void initializeComponents() {
// pdata = dqc.pdata;
dqc.points_flag = 1;
dqc.grids_flag = -1;
dqc.map_flag = -1;
dqc.contour_flag = -1;
if (dqc.pdata == null || (dqc.pdata.length <= 0)) {
DailyQcUtils.points_flag = 1;
DailyQcUtils.grids_flag = -1;
DailyQcUtils.map_flag = -1;
DailyQcUtils.contour_flag = -1;
if (DailyQcUtils.pdata == null || (DailyQcUtils.pdata.length <= 0)) {
Date currDate = ChooseDataPeriodDialog.prevDate;
String QcArea = ChooseDataPeriodDialog.prevArea;
int qcDays = MPEDisplayManager.getCurrent().getDqcDays();
@ -347,19 +348,19 @@ public class QcPrecipOptionsDialog extends AbstractMPEDialog {
dataSet.clear();
dataSet.addAll(dataType);
dqc.pcp_flag = 3;
dqc.pcpn_day = 0;
dqc.pcpn_time = 0;
DailyQcUtils.pcp_flag = 3;
DailyQcUtils.pcpn_day = 0;
DailyQcUtils.pcpn_time = 0;
for (i = 0; i < 8; i++) {
if (MPEDisplayManager.pcpn_time_step == 0) {
time_pos = dqc.pcp_flag;
time_pos = DailyQcUtils.pcp_flag;
} else {
time_pos = 40 + dqc.pcpn_day;
time_pos = 40 + DailyQcUtils.pcpn_day;
}
if ((i != 0 && i != 7) && dqc.pcp_in_use[time_pos] == -1) {
if ((i != 0 && i != 7) && DailyQcUtils.pcp_in_use[time_pos] == -1) {
dataSet.remove(dataSet.indexOf(dataType.get(i)));
}
}
@ -416,7 +417,7 @@ public class QcPrecipOptionsDialog extends AbstractMPEDialog {
opo.chg_precip_time(selsix24Cbo.getSelectionIndex() + 2);
}
});
if (dqc.qcDays == 1
if (DailyQcUtils.qcDays == 1
&& (dqc.curHr18_00 == 1
|| dqc.curHr00_06 == 1 || dqc.curHr06_12 == 1)) {
selsix24Cbo.setEnabled(false);
@ -498,7 +499,7 @@ public class QcPrecipOptionsDialog extends AbstractMPEDialog {
renderGridsBtn = new Button(renderComp, SWT.PUSH);
renderGridsBtn.setText("Render Grids+MAPs");
renderGridsBtn.setLayoutData(gd);
if (dqc.pcp_in_use[time_pos] == -1 && dqc.pdata[i].used[4] != 0) {
if (DailyQcUtils.pcp_in_use[time_pos] == -1 && DailyQcUtils.pdata[i].used[4] != 0) {
renderGridsBtn.setEnabled(true);
} else {
renderGridsBtn.setEnabled(false);
@ -585,7 +586,7 @@ public class QcPrecipOptionsDialog extends AbstractMPEDialog {
chkBxComp.setLayoutData(gd);
int m;
tsbuttons = new Button[dqc.tsmax + 2];
tsbuttons = new Button[DailyQcUtils.tsmax + 2];
nexChk = new Button(chkBxComp, SWT.CHECK);
nexChk.setEnabled(false);
@ -598,9 +599,9 @@ public class QcPrecipOptionsDialog extends AbstractMPEDialog {
}
});
tsbuttons[0] = nexChk;
for (m = 0; m < dqc.tsmax; m++) {
for (m = 0; m < DailyQcUtils.tsmax; m++) {
final Button bname = new Button(chkBxComp, SWT.CHECK);
bname.setText(dqc.ts[m].name);
bname.setText(DailyQcUtils.ts[m].name);
bname.setData(m + 1);
bname.addSelectionListener(new SelectionAdapter() {
@Override
@ -621,20 +622,20 @@ public class QcPrecipOptionsDialog extends AbstractMPEDialog {
}
});
tsbuttons[m + 1] = allChk;
for (int i = 0; i < dqc.tsmax + 2; i++) {
for (int i = 0; i < DailyQcUtils.tsmax + 2; i++) {
if (i == 0) {
/*
* Do not show the NEXRAD option. Nexrad data are now displayed
* through the MPE portion of MPE Editor.
*/
dqc.dflag[i] = -1;
DailyQcUtils.dflag[i] = -1;
continue;
} else {
dqc.dflag[i] = 1;
DailyQcUtils.dflag[i] = 1;
}
if (dqc.dflag[i] == 1) {
if (DailyQcUtils.dflag[i] == 1) {
tsbuttons[i].setSelection(true);
} else {
tsbuttons[i].setSelection(false);
@ -657,7 +658,7 @@ public class QcPrecipOptionsDialog extends AbstractMPEDialog {
pointQualGroup.setLayoutData(gd);
int i;
int qflag[] = dqc.qflag;
int qflag[] = DailyQcUtils.qflag;
for (i = 0; i < 10; i++) {
qflag[i] = 1;
@ -753,8 +754,8 @@ public class QcPrecipOptionsDialog extends AbstractMPEDialog {
Label pntCharLbl = new Label(pntSetComp, SWT.CENTER);
pntCharLbl.setText("Point character:");
dqc.gage_char[0] = 1;
dqc.gage_char[1] = 1;
DailyQcUtils.gage_char[0] = 1;
DailyQcUtils.gage_char[1] = 1;
gd = new GridData(160, SWT.DEFAULT);
pntCharCbo = new Combo(pntSetComp, SWT.DROP_DOWN | SWT.READ_ONLY);
@ -774,7 +775,7 @@ public class QcPrecipOptionsDialog extends AbstractMPEDialog {
Label pntDispLbl = new Label(pntSetComp, SWT.CENTER);
pntDispLbl.setText("Point display:");
dqc.plot_view = 4;
DailyQcUtils.plot_view = 4;
pntDispCbo = new Combo(pntSetComp, SWT.DROP_DOWN | SWT.READ_ONLY);
pntDispCbo.setTextLimit(30);
@ -797,9 +798,9 @@ public class QcPrecipOptionsDialog extends AbstractMPEDialog {
int i;
final ScreeningOptions so = new ScreeningOptions();
if (dqc.pdata[dqc.pcpn_day].stddev == 5.0) {
if (DailyQcUtils.pdata[DailyQcUtils.pcpn_day].stddev == 5.0) {
i = 0;
} else if (dqc.pdata[dqc.pcpn_day].stddev == 3.0) {
} else if (DailyQcUtils.pdata[DailyQcUtils.pcpn_day].stddev == 3.0) {
i = 1;
} else {
i = 2;
@ -1019,7 +1020,7 @@ public class QcPrecipOptionsDialog extends AbstractMPEDialog {
@Override
public void mouseUp(MouseEvent e) {
int sel = pntElFilter.getSelection();
dqc.elevation_filter_value = sel;
DailyQcUtils.elevation_filter_value = sel;
opo.refresh_exposure();
}
@ -1074,7 +1075,7 @@ public class QcPrecipOptionsDialog extends AbstractMPEDialog {
// initialize the gage filter values
pntFilter.setSelection(0);
pntRevFilter.setSelection(0);
dqc.elevation_filter_value = pntElFilter.getSelection();
DailyQcUtils.elevation_filter_value = pntElFilter.getSelection();
dqc.pxtemp = (pxTempFilter.getSelection() - 100) / 100;
dqc.dmvalue = (int) (dqc.pxtemp * 100 * 3.28 / .55);

View file

@ -79,6 +79,8 @@ import com.raytheon.viz.mpe.ui.radartable.ReadBiasTableParam;
* May 1, 2014 16626 snaples Updated the Manual Bias button to allow revert to original value.
* May 8, 2014 DCS167 cgobs Updated Dialog for DualPol features
* May 23, 2014 DCS167 cgobs Resolved merge conflict
* Jul 29, 2015 17471 snaples Added logging for radar result table query date value.
*
* </pre>
*
* @author snaples
@ -362,6 +364,8 @@ public class RadarBiasTableDialog extends Dialog {
dt = pgsdf.format(dt3);
// This lets us know what date is being requested from radar result tables
System.out.println("Radar Bias table query using time: " + dt3);
radarIdToSPDataMap = MPEDataManager.getInstance().readSPRadarData(dt3);
radarIdToDPDataMap = MPEDataManager.getInstance().readDPRadarData(dt3);

View file

@ -79,6 +79,8 @@ import com.vividsolutions.jts.geom.Coordinate;
* Nov 24, 2008 1748 snaples Added getters to MPEGageData
* Jun 18, 2013 16053 snaples Removed methods set and getRadarEditFlag
* Dec 15 2013 DCS 167 cgobs DualPol capabilities
* Jul 29, 2015 17471 snaples Added logging for Radar Bias results table query.
*
* </pre>
*
* @author randerso
@ -881,6 +883,7 @@ public class MPEDataManager {
StringBuffer sqlQuery = new StringBuffer();
sqlQuery.append("select radid,num_gages, rad_avail, rw_bias_val_used, mem_span_used, edit_bias, ignore_radar from " +
tableName + " where obstime='" + sdf.format(date) + "' and radid in(");
System.out.println("Datestring actually passed in query to radar table: " + sdf.format(date));
for (int i = 0; i < radarList.size(); i++) {
sqlQuery.append("'");
sqlQuery.append(radarList.get(i).getId());

View file

@ -29,6 +29,7 @@ import java.io.IOException;
import java.util.ArrayList;
import java.util.Scanner;
import com.raytheon.uf.common.ohd.AppsDefaults;
import com.raytheon.viz.mpe.util.DailyQcUtils.Bad_Daily_Values;
import com.raytheon.viz.mpe.util.DailyQcUtils.Station;
@ -41,7 +42,8 @@ import com.raytheon.viz.mpe.util.DailyQcUtils.Station;
* Date Ticket# Engineer Description
* ------------ ---------- ----------- --------------------------
* Mar 9, 2009 snaples Initial creation
* Feb 5, 2015 17101 snaples Fixed issue with writing zero length bad values file.
* Jun 17, 2015 17388 ptilles added check on mpe_dqc_6hr_24hr_flag and
* changed definition of max_stations variable
*
* </pre>
*
@ -52,7 +54,31 @@ import com.raytheon.viz.mpe.util.DailyQcUtils.Station;
public class BadValues {
BufferedReader in = null;
DailyQcUtils dqc = DailyQcUtils.getInstance();
private int max_stations = dqc.precip_stations.size();
ReadPrecipStationList rp = new ReadPrecipStationList();
//private int max_stations = rp.getNumPstations();
int max_stations = DailyQcUtils.precip_stations.size();
static int mpe_dqc_6hr_24hr_flag = 1;
static
{
//token name: mpe_dqc_6hr_24hr_set_bad
// token value = OFF
// mpe_dqc_6hr_24hr_flag = 0
// if user sets 6hr value to Bad, then 24hr value is unaffected
// token value = ON
// mpe_dqc_6hr_24hr_flag = 1
// if user sets 6hr value to Bad, then 24hr value is set to Bad
String mpe_dqc_6hr_24hr_string = AppsDefaults.getInstance().getToken(
"mpe_dqc_6hr_24hr_set_bad", "ON");
if (mpe_dqc_6hr_24hr_string.equalsIgnoreCase("OFF"))
{
mpe_dqc_6hr_24hr_flag = 0;
}
}
public void read_bad_values(String precd, int m) {
@ -76,7 +102,6 @@ public class BadValues {
break;
}
// ier=sscanf(ibuf,"%s %s %d %f",hb5,pc,&iquart,&fvalue);
s = new Scanner(vals);
bad_values[i].used = 1;
@ -183,18 +208,19 @@ public class BadValues {
continue;
}
if (iday == bad_values[i].day) {
if (iday == bad_values[i].day)
{
if (bad_values[i].fvalue < 0) {
if (bad_values[i].fvalue < 0)
{
System.out.println("Attempt to write value < 0\n");
continue;
}
// ier=sprintf(ibuf,"%s %s %d %f\n",bad_values[i].hb5,bad_values[i].parm,
// bad_values[i].quart,bad_values[i].fvalue);
ibuf = String.format("%s %s %d %4.2f", bad_values[i].hb5,
System.out.println("In write_bad_values method:" + bad_values[i].hb5 + bad_values[i].parm +
bad_values[i].quart + bad_values[i].fvalue);
ibuf = String.format("%s %s %d %f", bad_values[i].hb5,
bad_values[i].parm, bad_values[i].quart,
bad_values[i].fvalue);
out.write(ibuf);
@ -226,9 +252,9 @@ public class BadValues {
int i, j, h, k;
Bad_Daily_Values bad_values[] = dqc.bad_values;
ArrayList<Station> station = dqc.precip_stations;
// Pdata[] pdata = dqc.pdata;
for (i = 0; i < 6000; i++) {
for (i = 0; i < 6000; i++)
{
if (bad_values[i].used == 0) {
continue;
@ -242,17 +268,22 @@ public class BadValues {
}
for (j = 0; j < max_stations; j++) {
for (j = 0; j < max_stations; j++)
{
for (k = 0; k < 5; k++) {
for (k = 0; k < 5; k++)
{
if (dqc.pdata[iday].stn[j].frain[k].qual != 1) {
if (dqc.pdata[iday].stn[j].frain[k].qual != 1)
{
continue;
}
for (h = 0; h < 6000; h++)
{
for (h = 0; h < 6000; h++) {
if (bad_values[h].used != 0) {
if (bad_values[h].used != 0)
{
continue;
}
@ -266,8 +297,6 @@ public class BadValues {
bad_values[h].fvalue = dqc.pdata[iday].stn[j].frain[k].data;
// bad_values[h].fvalue = pdata[iday].stn[j].rrain[k].data;
bad_values[h].hb5 = station.get(j).hb5;
bad_values[h].parm = station.get(j).parm;
bad_values[h].day = iday;
@ -284,15 +313,16 @@ public class BadValues {
}
public void restore_bad_values(int iday,
ArrayList<Station> precip_stations, int max_stations) {
// Bad_Daily_Values bad_values[] = dqc.bad_values;
public void restore_bad_values(int iday, ArrayList<Station> precip_stations, int max_stations)
{
int i, j, k;
for (k = 0; k < 5; k++) {
for (k = 0; k < 5; k++)
{
for (i = 0; i < 6000; i++) {
for (i = 0; i < 6000; i++)
{
if (dqc.bad_values[i].used == 0) {
continue;
@ -302,24 +332,28 @@ public class BadValues {
continue;
}
for (j = 0; j < max_stations; j++) {
for (j = 0; j < max_stations; j++)
{
if ((dqc.bad_values[i].hb5.equalsIgnoreCase(precip_stations
.get(j).hb5))
&& dqc.bad_values[i].parm.charAt(4) == precip_stations
.get(j).parm.charAt(4)) {
if ((dqc.bad_values[i].hb5.equalsIgnoreCase(precip_stations.get(j).hb5))
&& dqc.bad_values[i].parm.charAt(4) == precip_stations.get(j).parm.charAt(4))
{
dqc.pdata[iday].stn[j].frain[k].data = dqc.bad_values[i].fvalue;
dqc.pdata[iday].stn[j].frain[k].qual = 1;
/* fix for 6 hourly bad but 24 hour good */
// 6hr qual code bad - check how to set 24hr qual code
// added for DR 17388
if(mpe_dqc_6hr_24hr_flag == 1)
{
if (k >= 0
&& k <= 3
&& dqc.pdata[iday].stn[j].rrain[4].data >= 0) {
if (k >= 0 && k <= 3 && dqc.pdata[iday].stn[j].rrain[4].data >= 0)
{
dqc.pdata[iday].stn[j].frain[4].qual = 1;
dqc.pdata[iday].stn[j].frain[4].qual = 1;
}
}
break;
@ -338,7 +372,6 @@ public class BadValues {
public int is_bad(int iday, int iquart, String hb5, String parm)
{
// Bad_Daily_Values bad_values[] = dqc.bad_values;
int i, j;
for (i = 0; i < 6000; i++) {

View file

@ -59,6 +59,7 @@ import com.vividsolutions.jts.geom.Coordinate;
* ------------ ---------- ----------- --------------------------
* Apr 20, 2009 snaples Initial creation
* Mar 2, 2015 15660 snaples Fixed the disagg logging and corrected the procedure.
* Jul 16, 2015 17561 snaples Updated to fix issues with QPE Grid.
*
* </pre>
*
@ -522,20 +523,27 @@ public class Disagg6Hr {
disagg_station_6hr[index].lat = disagg_station_6hr[i].lat;
disagg_station_6hr[index].lon = disagg_station_6hr[i].lon;
for (k = 0; k < max_stations; k++) {
if (!(disagg_station_6hr[index].hb5
.compareToIgnoreCase(station.get(k).hb5) == 0)) {
for (k = 0; k < max_stations; k++)
{
//if (!(disagg_station_6hr[index].hb5.compareToIgnoreCase(station.get(k).hb5) == 0))
if (disagg_station_6hr[index].hb5.compareToIgnoreCase(station.get(k).hb5) == 0) // fixed for DR 17561
{
values6hr[index].ID = disagg_station_6hr[index].hb5;
//disagg_log_fd.write(String.format(" station.get(k).hb5 %s\t\n", station.get(k).hb5));
for (ii = 0; ii < 4; ii++) // for 4 6hr values
{
// we treat "bad" 6hr stations as missing in
// Disagg calculationa
// note that "bad" stations have a quality
// code of '1'
if ((pdata[j].stn[k].frain[ii].data >= 0)
&& (pdata[j].stn[k].frain[ii].data != 1)) {
// we treat "bad" 6hr stations as missing in Disagg calculations
// note that "bad" stations have a quality code of '1'
if ((pdata[j].stn[k].frain[ii].data >= 0) && (pdata[j].stn[k].frain[ii].data != 1))
{
values6hr[index].value[ii] = pdata[j].stn[k].frain[ii].data;
} else {
// print values
//disagg_log_fd.write(String.format(" pdata[].stn[].frain[] %d\t%d\t%d\t%5.2f\n",
// j, k, ii, pdata[j].stn[k].frain[ii].data ));
}
else
{
values6hr[index].value[ii] = -9999.f;
}
}
@ -598,24 +606,26 @@ public class Disagg6Hr {
index = -1;
for (i = 0; i < num_disagg_stations; i++) {
for (j = 0; j < num_days_to_qc; j++) {
for (i = 0; i < num_disagg_stations; i++)
{
for (j = 0; j < num_days_to_qc; j++)
{
index = (j * num_disagg_stations) + i;
if (values6hr[index].ID
.equals(DISAGG_MISSING_STATION_SYMBOL)) {
if (values6hr[index].ID.equals(DISAGG_MISSING_STATION_SYMBOL))
{
continue;
}
if (j == 0) {
disagg_log_fd.write(String.format("%s \n",
disagg_station_6hr[index].hb5));
if (j == 0)
{
disagg_log_fd.write(String.format("%s \n", disagg_station_6hr[index].hb5));
}
for (ii = 0; ii < 4; ii++) {
disagg_log_fd.write(String.format(
" %d\t%d\t%5.2f\n", j, ii,
values6hr[index].value[ii]));
for (ii = 0; ii < 4; ii++)
{
disagg_log_fd.write(String.format(" %d\t%d\t%5.2f\n", j, ii,
values6hr[index].value[ii]));
}
}
@ -672,15 +682,23 @@ public class Disagg6Hr {
/* j = num of rows */
QPEgrids = new double[6][disagg_maxy][disagg_maxx];
for (k = 0; k < 6; k++){
for (i = 0; i < disagg_maxy; i++){
for (j = 0; j < disagg_maxx; j++) {
QPEgrids[k][i][j] = -9.0;
// fixed for DR 17561
for (k = 0; k < 6; k++)
{
for (i = 0; i < disagg_maxy; i++)
{
for (j = 0; j < disagg_maxx; j++)
{
QPEgrids[k][i][j] = -9.0;
}
}
}
}
}
}
else {

View file

@ -43,6 +43,7 @@ import com.raytheon.viz.mpe.util.Disagg6Hr.Values_6hr;
* Date Ticket# Engineer Description
* ------------ ---------- ----------- --------------------------
* Apr 20, 2009 snaples Initial creation
* Jul 16, 2015 17561 snaples Updated to fix issues with QPE Grid.
*
* </pre>
*
@ -109,47 +110,45 @@ public class DisaggGridMethod {
try {
// out = new BufferedWriter(new FileWriter(disagg_log_fd));
for (j = 0; j < num_days_to_qc; j++) {
for (j = 0; j < num_days_to_qc; j++)
{
for (k = 0; k < 4; k++)// loop on 4 6hr periods
{
/*-------------------------------------------*/
/*
* if 6hr value is missing, set all resulting 1hr values to
* missing
*/
/*-------------------------------------------*/
/*-------------------------------------------*/
/* read QPE grids into QPEgrids array */
/*-------------------------------------------*/
out.write(String.format("\n -- 6hr Period %d -- \n", k));
out.flush();
/*---------------------------------------------------*/
/* read QPE grids from files into QPEgrids array */
/* if QPE grids are missing then num_miss set to 99 */
/*---------------------------------------------------*/
num_miss = getQPEGrids(j, k);
if (num_miss > 0) {
if (num_miss > 0)
{
/*---------------------------------------------------------*/
/* case of missing QPE grid(s) */
/* set all 1hr values to missing for all disagg stations */
/* and take next 6hr period */
/*---------------------------------------------------------*/
out.write(String
.format("%d QPE grids missing -- all 1hr values set to missing\n",
num_miss));
out.write(String.format("QPE grids missing -- all 1hr values set to missing\n"));
out.flush();
for (l = 0; l < 6; l++) {
for (i = 0; i < num_disagg_stations; i++) {
disaggValues[j * num_disagg_stations + i].HourlyValues[6
* k + l] = -9999;
for (l = 0; l < 6; l++)
{
for (i = 0; i < num_disagg_stations; i++)
{
disaggValues[j * num_disagg_stations + i].HourlyValues[6 * k + l] = -9999;
}
}
continue;
} else {
}
else
{
/*------------------------------------------------------------*/
/* case of all 6 QPE grids available */
@ -171,61 +170,73 @@ public class DisaggGridMethod {
/* beyond the bounds of the area (array) */
/*------------------------------------------------------------*/
for (i = 0; i < num_disagg_stations; i++) {
for (i = 0; i < num_disagg_stations; i++)
{
index = j * num_disagg_stations + i;
if (values6hr[index].ID
.equals(Disagg6Hr.DISAGG_MISSING_STATION_SYMBOL)) {
if (values6hr[index].ID.equals(Disagg6Hr.DISAGG_MISSING_STATION_SYMBOL))
{
continue;
}
hrapx = values6hr[index].hrapx_local;
hrapy = values6hr[index].hrapy_local;
total_6hr[i] = 0.0;
for (l = 0; l < 6; l++) {
for (l = 0; l < 6; l++)
{
total = 0;
nbox = 0;
for (nn = -1; nn < 2; nn++) {
for (nn = -1; nn < 2; nn++)
{
hynn = hrapy + nn;
if (hynn >= Disagg6Hr.disagg_maxy) {
if (hynn >= Disagg6Hr.disagg_maxy)
{
continue;
}
if (hynn < 0) {
if (hynn < 0)
{
continue;
}
for (mm = -1; mm < 2; mm++) {
for (mm = -1; mm < 2; mm++)
{
hxmm = hrapx + mm;
if (hxmm >= Disagg6Hr.disagg_maxx) {
if (hxmm >= Disagg6Hr.disagg_maxx)
{
continue;
}
if (hxmm < 0) {
if (hxmm < 0)
{
continue;
}
nbox++;
total = total
+ QPEgrids[l][hrapy + nn][hrapx
+ mm];
out.write(String.format("QPEgrids[%d][%d][%d] = %5.2f \n",
l, hynn, hxmm,
QPEgrids[l][hynn][hxmm]));
total = total + QPEgrids[l][hynn][hxmm];
}
}
if (nbox > 0) {
if (nbox > 0)
{
totals_1hr[l][i] = total / 9.;
total_6hr[i] = total_6hr[i] + total / 9.;
out.write(String.format(
" i=%d l=%d avg1hr=%5.2f\n", i,
l, totals_1hr[l][i]));
} else {
out.write(String.format(" i=%d l=%d avg1hr=%5.2f\n", i, l, totals_1hr[l][i]));
}
else
{
totals_1hr[l][i] = -9999.;
total_6hr[i] = -9999.;
out.write(String.format(
" i=%d l=%d avg1hr = missing\n",
i, l));
out.write(String.format(" i=%d l=%d avg1hr = missing\n", i, l));
}
}
@ -252,40 +263,47 @@ public class DisaggGridMethod {
/* (future enhancement) */
/*----------------------------------------------------------*/
for (i = 0; i < num_disagg_stations; i++) {
for (i = 0; i < num_disagg_stations; i++)
{
index = j * num_disagg_stations + i;
if (values6hr[index].ID
.equals(Disagg6Hr.DISAGG_MISSING_STATION_SYMBOL)) {
if (values6hr[index].ID.equals(Disagg6Hr.DISAGG_MISSING_STATION_SYMBOL))
{
continue;
}
out.write(String.format("%s \n",
disagg_station_6hr[i].hb5));
out.write(String.format("%s \n", disagg_station_6hr[i].hb5));
if (values6hr[index].value[k] == -9999.) {
for (l = 0; l < 6; l++) {
disaggValues[j * num_disagg_stations + i].HourlyValues[6
* k + l] = -9999.f;
if (values6hr[index].value[k] == -9999.)
{
for (l = 0; l < 6; l++)
{
disaggValues[j * num_disagg_stations + i].HourlyValues[6 * k + l] = -9999.f;
}
} else if (values6hr[index].value[k] == 0.0
&& total_6hr[i] > 0.0) {
}
else if (values6hr[index].value[k] == 0.0 && total_6hr[i] > 0.0)
{
if (val6hreq0 == 1) {
if (val6hreq0 == 1)
{
out.write("case of 6hr value = 0.0, sum 1hr values > 0.0 -- ");
out.write("ignore 1hr estimates, set all 1hr values = 0.0\n");
for (l = 0; l < 6; l++) {
disaggValues[j * num_disagg_stations
+ i].HourlyValues[6 * k + l] = 0.0f;
for (l = 0; l < 6; l++)
{
disaggValues[j * num_disagg_stations + i].HourlyValues[6 * k + l] = 0.0f;
}
} else {
}
else
{
out.write("case of 6hr value = 0.0, sum 1hr values > 0.0 -- ");
out.write("ignore 6hr value, use 1hr values from grids\n");
for (l = 0; l < 6; l++) {
for (l = 0; l < 6; l++)
{
disaggValues[j * num_disagg_stations
+ i].HourlyValues[6 * k + l] = (float) (totals_1hr[l][i] * disagg_db_factor);
@ -293,18 +311,23 @@ public class DisaggGridMethod {
}
} else if (values6hr[index].value[k] > 0.0
&& total_6hr[i] == 0.0) {
if (val6hrgt0 == 1) {
}
else if (values6hr[index].value[k] > 0.0 && total_6hr[i] == 0.0)
{
if (val6hrgt0 == 1)
{
out.write("case of 6hr value > 0.0, sum 1hr values = 0.0 -- ");
out.write("ignore 6hr gage value, set all 1hr values to 0.0\n");
for (l = 0; l < 6; l++) {
disaggValues[j * num_disagg_stations
+ i].HourlyValues[6 * k + l] = 0.0f;
for (l = 0; l < 6; l++)
{
disaggValues[j * num_disagg_stations + i].HourlyValues[6 * k + l] = 0.0f;
}
} else {
}
else
{
/*
* future enhancement - use nearest neighbor
* method to estimate 1hr values
@ -312,12 +335,15 @@ public class DisaggGridMethod {
out.write("case of 6hr value > 0.0, sum 1hr values = 0.0 -- ");
out.write("ignore 6hr gage value, set all 1hr values to 0.0\n");
for (l = 0; l < 6; l++) {
disaggValues[j * num_disagg_stations
+ i].HourlyValues[6 * k + l] = 0.0f;
for (l = 0; l < 6; l++)
{
disaggValues[j * num_disagg_stations + i].HourlyValues[6 * k + l] = 0.0f;
}
}
} else {
}
else
{
/*-------------------------------------------------*/
/*
* compare 6hr value against sum of six 1hr
@ -331,23 +357,22 @@ public class DisaggGridMethod {
diff_1hr = (values6hr[index].value[k] - total_6hr[i]) / 6.;
for (l = 0; l < 6; l++) {
for (l = 0; l < 6; l++)
{
disaggValues[j * num_disagg_stations + i].HourlyValues[6
* k + l] = (float) ((totals_1hr[l][i] + diff_1hr) * disagg_db_factor);
if (disaggValues[j * num_disagg_stations
+ i].HourlyValues[6 * k + l] < 0.0) {
disaggValues[j * num_disagg_stations
+ i].HourlyValues[6 * k + l] = 0.0f;
if (disaggValues[j * num_disagg_stations + i].HourlyValues[6 * k + l] < 0.0)
{
disaggValues[j * num_disagg_stations + i].HourlyValues[6 * k + l] = 0.0f;
}
}
}
for (l = 0; l < 6; l++) {
for (l = 0; l < 6; l++)
{
hour = (k * 6) + l;
out.write(String.format(" %d %6.1f\n",
hour,
disaggValues[j * num_disagg_stations
+ i].HourlyValues[6 * k + l]));
hour, disaggValues[j * num_disagg_stations + i].HourlyValues[6 * k + l]));
out.flush();
}
@ -364,7 +389,6 @@ public class DisaggGridMethod {
nt.setTime(end_time_temp);
nt.add(Calendar.SECOND, 86400);
end_time_temp = nt.getTime();
// out.close();
} /* end loop on for(j=0;j<num_days_to_qc;j++) */
@ -373,7 +397,8 @@ public class DisaggGridMethod {
}
}
public int getQPEGrids(int j, int k) {
public int getQPEGrids(int j, int k)
{
/*------------------------------------------------*/
/* function to read QPE grids for a 6hr period */
@ -387,13 +412,12 @@ public class DisaggGridMethod {
/* - format of date in filename */
/* */
/* Output: */
/* 1) QPE grid values stored in QPEgrids array */
/* 2) num_miss = number of missing 1hr QPE grids */
/* 1) QPE grid values stored in QPEgrids array */
/* 2) num_miss = number of missing QPE grids */
/*------------------------------------------------*/
int i, l, jj, hour, num_miss;
int i, ii, l, jj, hour, num_miss;
String qpe_filename = "";
String qpe_file_fd = "";
double factor = 2540.;
String qpe_files_dir = Disagg6Hr.qpe_files_dir;
String date_form = Disagg6Hr.date_form;
@ -409,9 +433,9 @@ public class DisaggGridMethod {
/* loop on 6 hours in each period */
/*----------------------------------------------*/
try {
// out = new BufferedWriter(new FileWriter(disagg_log_fd));
for (l = 0; l < 6; l++) {
for (l = 0; l < 6; l++)
{
/*----------------------------------------------*/
/* create file name */
/* filenames are of the form: */
@ -420,17 +444,20 @@ public class DisaggGridMethod {
/*----------------------------------------------*/
hour = 12 + (k * 6) + l + 1;
if (hour == 24) {
if (hour == 24)
{
hour = 0;
jj = j;
} else if (hour > 23) {
} else if (hour > 23)
{
hour = ((k - 2) * 6) + l + 1;
jj = j;
}
if (date_form.charAt(0) == 'm') {
if (date_form.charAt(0) == 'm')
{
qpe_filename = String.format(
"%s/xmrg%c%c%c%c%c%c%c%c%02dz", qpe_files_dir,
obsdate[jj].charAt(5), obsdate[jj].charAt(6),
@ -438,7 +465,9 @@ public class DisaggGridMethod {
obsdate[jj].charAt(0), obsdate[jj].charAt(1),
obsdate[jj].charAt(2), obsdate[jj].charAt(3), hour);
} else {
}
else
{
qpe_filename = String.format(
"%s/xmrg%c%c%c%c%c%c%c%c%02dz", qpe_files_dir,
obsdate[jj].charAt(0), obsdate[jj].charAt(1),
@ -452,66 +481,84 @@ public class DisaggGridMethod {
/* attempt to open the file */
/*----------------------------*/
out.write(String.format("attempting to open file %s\n",
qpe_filename));
out.write(String.format("attempting to open file %s\n", qpe_filename));
out.flush();
in = new BufferedReader(new FileReader(qpe_file_fd));
if (!in.ready()) {
out.write(" could not open file\n");
out.flush();
num_miss++;
continue;
}
/*--------------------------------------*/
/* read QPE file */
/* format of file is xmrg */
/* store values in QPEgrids array */
/*--------------------------------------*/
int xor = (int) MPEDataManager.getInstance().getHRAPExtent()
.getMinX();
int yor = (int) MPEDataManager.getInstance().getHRAPExtent()
.getMinY();
XmrgFile xmFile = new XmrgFile(qpe_filename);
Rectangle rec = new Rectangle();
rec.setRect(xor, yor, disagg_maxx, disagg_maxy);
short[][] tempg = xmFile.getData(rec);
XmrgFile xmrgFile = new XmrgFile(qpe_filename);
if ( xmrgFile.getFile().length() > 0)
{
xmrgFile.load();
if (tempg.length <= 0) {
out.write(" error reading file\n");
Rectangle hrapExtent = xmrgFile.getHrapExtent();
short[][] hourlyShortData = xmrgFile.getData(hrapExtent);
int maxCols = hrapExtent.width;
int maxRows = hrapExtent.height;
double value = 0.0;
for (int row = 0; row < maxRows; row++)
{
int rowValue = maxRows - row - 1;
for (int col = 0; col < maxCols; col++)
{
short shortValue = hourlyShortData[row][col];
if (shortValue >= 0)
{
//convert from hundredths of MM to inches
value = ( ((double) shortValue) / ( 25.4 * 100.0) );
}
else //keep special MISSING value
{
value = shortValue;
}
QPEgrids[l][rowValue][col] = value;
//if (value > 0.99)
//{
// out.write(String.format(" in getQPEGrids -- QPEgrids[l][%d][%d] = %5.2f \n", rowValue, col, QPEgrids[l][rowValue][col]));
//}
} //end for col
} //end for row
}//end if length > 0
else
{
out.write(" error reading file\n" + qpe_filename + "\n" );
num_miss++;
continue;
}
} // end for (l = 0; l < 6; l++)
for (i = 0; i < disagg_maxy; i++) {
for (j = 0; j < disagg_maxx; j++) {
QPEgrids[l][i][j] = tempg[i][j] * 1.0 / factor;
}
}
}
in.close();
return num_miss;
} catch (IOException e) {
return 0;
} //end try
catch (IOException e)
{
return 99;
}
// finally {
// try {
// // if (out != null) {
// // out.close();
//
// }
//
// } catch (IOException e) {
// e.printStackTrace();
//
// }
// }
}
}

View file

@ -33,7 +33,8 @@ import com.raytheon.viz.mpe.util.DailyQcUtils.Station;
* Date Ticket# Engineer Description
* ------------ ---------- ----------- --------------------------
* Mar 31, 2009 snaples Initial creation
* Dec 22, 2014 #16952 lbousaidi fixed the eratic estimate values.
* Dec 22, 2014 #16952 lbousaidi fixed the eratic estimate values.
* Jun 26, 2015 17397 snaples fixed another instance of erratic estimates.
*
* </pre>
*
@ -208,8 +209,8 @@ public class EstMissingStations {
padj = pdata[j].stn[i].frain[h].data;
}
fdist = 1 / (testdist + fdist);
fdata = padj / (testdist + fdata);
fdist += 1 / testdist;
fdata += padj / testdist;
l++;

View file

@ -38,6 +38,7 @@ import com.raytheon.viz.mpe.util.DailyQcUtils.Station;
* ------------ ---------- ----------- --------------------------
* Mar 5, 2009 snaples Initial creation
* Nov 26, 2014 16889 snaples Updated to fix SNOTEL display
* Jun 30, 2015 17229 snaples Fixed error in parsing snow water value.
*
* </pre>
*
@ -164,7 +165,7 @@ public class ReadSnowData {
}
else {
String qbuf = buf.substring(0, buf.indexOf('.')+3);
String qbuf = buf.substring(0, buf.indexOf('.')+2);
dqc.pdata[i].stn[j].srain[kk].data = Float.parseFloat(qbuf);

View file

@ -39,7 +39,7 @@
<vmArgsWin>-Dfile.encoding=UTF-8 -Xmx2560M</vmArgsWin>
</launcherArgs>
<windowImages i16="/com.raytheon.viz.ui.personalities.awips/cave_16x16.png" i32="/com.raytheon.viz.ui.personalities.awips/cave_32x32.png" i48="/com.raytheon.viz.ui.personalities.awips/cave_48x48.png" i64="/com.raytheon.viz.ui.personalities.awips/cave_64x64.png" i128="/com.raytheon.viz.ui.personalities.awips/cave_128x128.png"/>
<windowImages i16="/com.raytheon.viz.product.awips/icons/cave_16x16.png" i32="/com.raytheon.viz.product.awips/icons/cave_32x32.png" i48="/com.raytheon.viz.product.awips/icons/cave_48x48.png" i64="/com.raytheon.viz.product.awips/icons/cave_64x64.png" i128="/com.raytheon.viz.product.awips/icons/cave_128x128.png"/>
<splash
location="com.raytheon.viz.ui.personalities.awips"

View file

@ -39,7 +39,7 @@
<vmArgsWin>-Dfile.encoding=UTF-8</vmArgsWin>
</launcherArgs>
<windowImages i16="/com.raytheon.viz.ui.personalities.awips/cave_16x16.png" i32="/com.raytheon.viz.ui.personalities.awips/cave_32x32.png" i48="/com.raytheon.viz.ui.personalities.awips/cave_48x48.png" i64="/com.raytheon.viz.ui.personalities.awips/cave_64x64.png" i128="/com.raytheon.viz.ui.personalities.awips/cave_128x128.png"/>
<windowImages i16="/com.raytheon.viz.product.awips/icons/cave_16x16.png" i32="/com.raytheon.viz.product.awips/icons/cave_32x32.png" i48="/com.raytheon.viz.product.awips/icons/cave_48x48.png" i64="/com.raytheon.viz.product.awips/icons/cave_64x64.png" i128="/com.raytheon.viz.product.awips/icons/cave_128x128.png"/>
<splash
location="com.raytheon.viz.ui.personalities.awips"

View file

Before

Width:  |  Height:  |  Size: 10 KiB

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 622 B

View file

Before

Width:  |  Height:  |  Size: 842 B

After

Width:  |  Height:  |  Size: 842 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 KiB

View file

Before

Width:  |  Height:  |  Size: 2.2 KiB

After

Width:  |  Height:  |  Size: 2.2 KiB

View file

Before

Width:  |  Height:  |  Size: 3.8 KiB

After

Width:  |  Height:  |  Size: 3.8 KiB

View file

Before

Width:  |  Height:  |  Size: 4.3 KiB

After

Width:  |  Height:  |  Size: 4.3 KiB

View file

@ -59,7 +59,7 @@
</property>
<property
name="windowImages"
value="platform:/plugin/com.raytheon.viz.ui.personalities.awips/cave_16x16.png,platform:/plugin/com.raytheon.viz.ui.personalities.awips/cave_32x32.png,platform:/plugin/com.raytheon.viz.ui.personalities.awips/cave_48x48.png,platform:/plugin/com.raytheon.viz.ui.personalities.awips/cave_64x64.png,platform:/plugin/com.raytheon.viz.ui.personalities.awips/cave_128x128.png">
value="icons/cave_16x16.png,icons/cave_32x32.png,icons/cave_48x48.png,icons/cave_64x64.png,icons/cave_128x128.png">
</property>
</product>
</extension>

View file

@ -37,7 +37,7 @@
<vmArgsWin>-Dfile.encoding=UTF-8 -Xmx2560M</vmArgsWin>
</launcherArgs>
<windowImages i16="/com.raytheon.viz.ui.personalities.awips/cave_16x16.png" i32="/com.raytheon.viz.ui.personalities.awips/cave_32x32.png" i48="/com.raytheon.viz.ui.personalities.awips/cave_48x48.png" i64="/com.raytheon.viz.ui.personalities.awips/cave_64x64.png" i128="/com.raytheon.viz.ui.personalities.awips/cave_128x128.png"/>
<windowImages i16="/com.raytheon.viz.product.awips/icons/cave_16x16.png" i32="/com.raytheon.viz.product.awips/icons/cave_32x32.png" i48="/com.raytheon.viz.product.awips/icons/cave_48x48.png" i64="/com.raytheon.viz.product.awips/icons/cave_64x64.png" i128="/com.raytheon.viz.product.awips/icons/cave_128x128.png"/>
<splash
location="com.raytheon.viz.ui.personalities.awips"

View file

@ -36,12 +36,12 @@ import org.eclipse.swt.widgets.Event;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Layout;
import org.eclipse.swt.widgets.Listener;
import org.eclipse.swt.widgets.MessageBox;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Text;
import com.raytheon.uf.common.dataplugin.text.alarms.AlarmAlertProduct;
import com.raytheon.uf.common.dataplugin.text.alarms.AlarmAlertProduct.ProductType;
import com.raytheon.viz.texteditor.dialogs.TextWSMessageBox;
import com.raytheon.viz.ui.dialogs.CaveSWTDialog;
/**
@ -476,9 +476,8 @@ public class NewAlarmDlg extends CaveSWTDialog {
buildAlarmAlertObject();
shell.dispose();
} else {
MessageBox m = new MessageBox(getShell(), SWT.ERROR);
m.setMessage("ProductID must contain an entry.");
m.open();
TextWSMessageBox.open(getShell(), "",
"ProductID must contain an entry.");
}
}
});

View file

@ -47,7 +47,6 @@ import org.eclipse.swt.widgets.Combo;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Layout;
import org.eclipse.swt.widgets.MessageBox;
import org.eclipse.swt.widgets.Shell;
import com.raytheon.uf.common.dataplugin.text.AfosWmoIdDataContainer;
@ -665,14 +664,14 @@ public class AWIPSHeaderBlockDlg extends CaveSWTDialog implements
// CaveSWTDialog in a similar manner to
// WarnGenConfirmationDlg. Better solution if possible
// change AlermAlertBell so modal MessagBox can be used..
MessageBox mb = new MessageBox(shell, SWT.ICON_QUESTION | SWT.YES
| SWT.NO);
mb.setMessage("Product Designator " + wsfoIdTF.getText()
+ prodCatTF.getText() + prodDesignatorTF.getText()
+ " is not in the list of valid products. Use it anyway?");
if (mb.open() == SWT.NO) {
return;
}
String message = "Product Designator " + wsfoIdTF.getText()
+ prodCatTF.getText() + prodDesignatorTF.getText()
+ " is not in the list of valid products. Use it anyway?";
int response = TextWSMessageBox.open(shell, "", message,
SWT.ICON_QUESTION | SWT.YES | SWT.NO);
if (response == SWT.NO) {
return;
}
parentEditor.enableSend(false);
sendEnabled = false;
if(isAfosPilComplete()) {

View file

@ -32,7 +32,6 @@ import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Layout;
import org.eclipse.swt.widgets.MessageBox;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Text;
@ -307,10 +306,8 @@ public class SearchReplaceDlg extends CaveSWTDialog {
checkForUpdates();
int searchTextLength = searchForTF.getText().length();
if (searchTextLength == 0) {
MessageBox mb = new MessageBox(shell, SWT.ICON_ERROR | SWT.OK);
mb.setText("Search Warning");
mb.setMessage("You do not have text in the 'Search For' field.");
mb.open();
TextWSMessageBox.open(shell, "Search Warning",
"You do not have text in the 'Search For' field.");
return false;
}
@ -319,12 +316,10 @@ public class SearchReplaceDlg extends CaveSWTDialog {
.toUpperCase(), searchOffset++);
if (foundIndex == -1) {
MessageBox searchTopMB = new MessageBox(shell, SWT.ICON_ERROR
int result = TextWSMessageBox.open(shell, "Warning", "\""
+ searchForTF.getText() + "\"" + " not found.\n"
+ "Start from the top of the product?", SWT.ICON_ERROR
| SWT.YES | SWT.NO);
searchTopMB.setText("Warning");
searchTopMB.setMessage("\"" + searchForTF.getText() + "\""
+ " not found.\n" + "Start from the top of the product?");
int result = searchTopMB.open();
if (result == SWT.NO) {
foundIndex = tmpIndex;
@ -337,11 +332,8 @@ public class SearchReplaceDlg extends CaveSWTDialog {
.toUpperCase(), searchOffset++);
if (foundIndex == -1) {
MessageBox mb = new MessageBox(shell, SWT.ICON_ERROR | SWT.OK);
mb.setText("Warning");
mb.setMessage("\"" + searchForTF.getText() + "\""
+ " not found.");
mb.open();
TextWSMessageBox.open(shell, "Warning",
"\"" + searchForTF.getText() + "\"" + " not found.");
return false;
}
}
@ -358,10 +350,9 @@ public class SearchReplaceDlg extends CaveSWTDialog {
*/
private boolean replaceText() {
if (textEditor.getSelectionCount() == 0) {
MessageBox mb = new MessageBox(shell, SWT.ICON_INFORMATION | SWT.OK);
mb.setText("Sorry!");
mb.setMessage("Please select 'search' before 'replace.'");
mb.open();
TextWSMessageBox.open(shell, "Sorry!",
"Please select 'search' before 'replace.'",
SWT.ICON_INFORMATION | SWT.OK);
return false;
}

View file

@ -33,7 +33,6 @@ import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Layout;
import org.eclipse.swt.widgets.MessageBox;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Text;
@ -212,10 +211,7 @@ public class TextCharWrapDlg extends CaveSWTDialog {
}
private void userInformation(String information) {
MessageBox mb = new MessageBox(shell, SWT.ICON_ERROR | SWT.OK);
mb.setText("Sorry!");
mb.setMessage(information);
mb.open();
TextWSMessageBox.open(shell, "Sorry!", information);
}
private boolean isColWidthValid() {

View file

@ -106,7 +106,6 @@ import org.eclipse.swt.widgets.Layout;
import org.eclipse.swt.widgets.Listener;
import org.eclipse.swt.widgets.Menu;
import org.eclipse.swt.widgets.MenuItem;
import org.eclipse.swt.widgets.MessageBox;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Text;
import org.eclipse.ui.PlatformUI;
@ -347,8 +346,9 @@ import com.raytheon.viz.ui.dialogs.SWTMessageBox;
* 15Feb2015 4001 dgilling Ensure all fields are set in SendPracticeProductRequest.
* 05Mar2015 RM 15025 kshrestha Fix to maintain the headers that they are saved with
* 10Mar2015 RM 14866 kshrestha Disable QC GUI pop up for TextWS
* 06Apr2015 RM14968 mgamazaychikov Fix formatting for pathcast section
* 6Apr2015 RM14968 mgamazaychikov Fix formatting for pathcast section
* 15Jun2015 4441 randerso Unconditionally convert text to upper case for QC
* 8Jul2015 DR 15044 dhuffman Implemented tabbing and tabs to spaces.
*
* </pre>
*
@ -3839,10 +3839,6 @@ public class TextEditorDialog extends CaveSWTDialog implements VerifyListener,
});
// TODO - Use this to convert tabs to spaces and extra spaces in the
// middle of a line to a single space?
// textEditor.addVerifyListener(new VerifyListener() {
//
// @Override
// public void verifyText(VerifyEvent e) {
// // TODO Auto-generated method stub
@ -3969,7 +3965,6 @@ public class TextEditorDialog extends CaveSWTDialog implements VerifyListener,
}
isTemplateOverwriteModeSet = true;
}
event.doit = false;
int currentPos = textEditor.getCaretOffset();
String textUpToCaret = textEditor.getText().substring(
@ -3982,6 +3977,24 @@ public class TextEditorDialog extends CaveSWTDialog implements VerifyListener,
|| ((event.keyCode >= 48) && (event.keyCode <= 57))) {
event.doit = true;
}
} else { // (!AFOSParser.isTemplate)
if (event.keyCode == SWT.TAB) {
int lineStartOffset = textEditor
.getOffsetAtLine(textEditor
.getLineAtOffset(textEditor
.getCaretOffset()));
int caretOffsetOnLine = textEditor.getCaretOffset()
- lineStartOffset;
int numberOfSpaces = (textEditor.getTabs() - caretOffsetOnLine
% textEditor.getTabs());
String spaces = "";
for (int x = 0; x < numberOfSpaces; x++)
spaces += ' ';
textEditor.insert(spaces);
textEditor.setCaretOffset(textEditor.getCaretOffset()
+ numberOfSpaces);
event.doit = false;
}
}
}
});
@ -4554,11 +4567,8 @@ public class TextEditorDialog extends CaveSWTDialog implements VerifyListener,
*/
private void cutText() {
if (textEditor.getSelectionCount() == 0) {
MessageBox mb = new MessageBox(shell, SWT.ICON_ERROR | SWT.OK);
mb.setText("Cut Error");
mb.setMessage("You must first select text to\n"
userInformation("Cut Error", "You must first select text to\n"
+ "cut (by dragging, for example).");
mb.open();
return;
}
@ -4573,11 +4583,8 @@ public class TextEditorDialog extends CaveSWTDialog implements VerifyListener,
*/
private void copyText() {
if (textEditor.getSelectionCount() == 0) {
MessageBox mb = new MessageBox(shell, SWT.ICON_ERROR | SWT.OK);
mb.setText("Copy Error");
mb.setMessage("You must first select text to\n"
userInformation("Copy Error", "You must first select text to\n"
+ "copy (by dragging, for example).");
mb.open();
return;
}
@ -4601,18 +4608,16 @@ public class TextEditorDialog extends CaveSWTDialog implements VerifyListener,
*/
private void printSelectedText() {
if (textEditor.getSelectionCount() == 0) {
MessageBox mb = new MessageBox(shell, SWT.ICON_ERROR | SWT.OK);
mb.setText("Print Selection Error");
mb.setMessage("You must first select text to\n"
+ "print (by dragging, for example).");
mb.open();
userInformation("Print Selection Error",
"You must first select text to\n"
+ "print (by dragging, for example).");
return;
}
MessageBox mb = new MessageBox(shell, SWT.ICON_QUESTION | SWT.YES
| SWT.NO);
mb.setMessage("Do you want to print the current selection?");
if (mb.open() == SWT.YES) {
int response = TextWSMessageBox.open(shell, "",
"Do you want to print the current selection?",
SWT.ICON_QUESTION | SWT.YES | SWT.NO);
if (response == SWT.YES) {
String tmpText = textEditor.getText();
Point point = textEditor.getSelection();
FontData fontData = textEditor.getFont().getFontData()[0];
@ -4740,8 +4745,6 @@ public class TextEditorDialog extends CaveSWTDialog implements VerifyListener,
.lastIndexOf(File.separator) + 1);
statusBarLabel.setText("Attachment: " + fn);
} else {
MessageBox mb = new MessageBox(shell, SWT.ICON_ERROR
| SWT.OK);
StringBuilder sb = new StringBuilder();
if (!file.exists()) {
sb.append("File does NOT exist!\n\n");
@ -4750,9 +4753,7 @@ public class TextEditorDialog extends CaveSWTDialog implements VerifyListener,
} else {
sb.append("File is NOT a text file!\n\n");
}
mb.setText("Notice");
mb.setMessage(sb.toString() + fn);
mb.open();
userInformation(sb.toString() + fn);
}
} catch (Exception e) {
statusHandler.handle(Priority.PROBLEM, "Error attaching file",
@ -4871,10 +4872,7 @@ public class TextEditorDialog extends CaveSWTDialog implements VerifyListener,
// when functionality has not been implemented...
//
private void notImplementedYet(String information) {
MessageBox mb = new MessageBox(shell, SWT.ICON_ERROR | SWT.OK);
mb.setText("Notice");
mb.setMessage("Functionality not implemented yet:\n\n" + information);
mb.open();
userInformation("Functionality not implemented yet:\n\n" + information);
}
/**
@ -4884,10 +4882,7 @@ public class TextEditorDialog extends CaveSWTDialog implements VerifyListener,
* @param information
*/
private void userInformation(String title, String information) {
MessageBox mb = new MessageBox(shell, SWT.ICON_ERROR | SWT.OK);
mb.setText(title);
mb.setMessage(information);
mb.open();
TextWSMessageBox.open(shell, title, information);
}
/**
@ -4946,10 +4941,9 @@ public class TextEditorDialog extends CaveSWTDialog implements VerifyListener,
int startIndex = "Attachment:".length() + 1;
sb.append(statusBarLabel.getText().substring(startIndex));
sb.append(") will be transmitted with this message.");
MessageBox mb = new MessageBox(shell, SWT.OK | SWT.CANCEL);
mb.setText("Notice");
mb.setMessage(sb.toString());
if (SWT.OK != mb.open()) {
int response = TextWSMessageBox.open(shell, "Notice", sb.toString(),
SWT.OK | SWT.CANCEL);
if (SWT.OK != response) {
return;
}
}

View file

@ -0,0 +1,130 @@
package com.raytheon.viz.texteditor.dialogs;
import org.eclipse.jface.dialogs.Dialog;
import org.eclipse.jface.dialogs.IDialogConstants;
import org.eclipse.swt.SWT;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Layout;
import org.eclipse.swt.widgets.Shell;
/**
* A message box that is PRIMARY_MODAL. The SWT MessageBox class is
* APPLICATION_MODAL so a message box for a given text window will interfere
* with other text windows. (Namely, the WarnGen text window.) This should be
* replaced with com.raytheon.viz.ui.dialogs.SWTMessageBox once the code has
* been refactored to not depend on the blocking behavior of open().
*
* <pre>
* SOFTWARE HISTORY
* Date Ticket# Engineer Description
* ---------- ---------- ----------- --------------------------
* 2015-07-22 ASM #17534 D. Friedman Initial Creation.
* </pre>
*
* @author David Friedman
* @version 1
*/
public class TextWSMessageBox extends Dialog {
String title;
String information;
int iconAndButtonStyle;
public TextWSMessageBox(Shell parentShell, String title,
String information, int iconAndButtonStyle) {
super(parentShell);
this.title = title;
this.information = information;
this.iconAndButtonStyle = iconAndButtonStyle;
}
@Override
protected void setShellStyle(int newShellStyle) {
final int mask = SWT.SYSTEM_MODAL | SWT.APPLICATION_MODAL
| SWT.PRIMARY_MODAL;
super.setShellStyle((newShellStyle & ~mask) | SWT.PRIMARY_MODAL);
}
@Override
protected void configureShell(Shell newShell) {
super.configureShell(newShell);
newShell.setText(title);
}
@Override
protected void createButtonsForButtonBar(Composite parent) {
if ((iconAndButtonStyle & SWT.YES) != 0) {
createButton(parent, IDialogConstants.YES_ID,
IDialogConstants.YES_LABEL, true);
}
if ((iconAndButtonStyle & SWT.NO) != 0) {
createButton(parent, IDialogConstants.NO_ID,
IDialogConstants.NO_LABEL, true);
}
if ((iconAndButtonStyle & SWT.OK) != 0) {
createButton(parent, IDialogConstants.OK_ID,
IDialogConstants.OK_LABEL, true);
}
if ((iconAndButtonStyle & SWT.CANCEL) != 0) {
createButton(parent, IDialogConstants.CANCEL_ID,
IDialogConstants.CANCEL_LABEL, true);
}
}
@Override
protected Control createDialogArea(Composite parent) {
Composite composite = (Composite) super.createDialogArea(parent);
Layout layout = composite.getLayout();
if (layout instanceof GridLayout) {
((GridLayout) layout).numColumns = 2;
}
Label l;
l = new Label(composite, SWT.LEFT);
int mask = SWT.ICON_ERROR | SWT.ICON_INFORMATION | SWT.ICON_QUESTION
| SWT.ICON_WARNING;
int icon = iconAndButtonStyle & mask;
if (icon == 0) {
icon = SWT.ICON_INFORMATION;
}
l.setImage(l.getDisplay().getSystemImage(icon));
l = new Label(composite, SWT.LEFT);
l.setText(information);
return composite;
}
@Override
protected void buttonPressed(int buttonId) {
int returnCode;
switch (buttonId) {
case IDialogConstants.OK_ID:
returnCode = SWT.OK;
break;
case IDialogConstants.CANCEL_ID:
returnCode = SWT.CANCEL;
break;
case IDialogConstants.YES_ID:
returnCode = SWT.YES;
break;
case IDialogConstants.NO_ID:
returnCode = SWT.NO;
break;
default:
return;
}
setReturnCode(returnCode);
close();
}
public static int open(Shell parentShell, String title, String message) {
return open(parentShell, title, message, SWT.ICON_ERROR | SWT.OK);
}
public static int open(Shell parentShell, String title, String message,
int iconAndButtonStyle) {
TextWSMessageBox mb = new TextWSMessageBox(parentShell, title, message,
iconAndButtonStyle);
return mb.open();
}
}

View file

@ -41,13 +41,13 @@ import org.eclipse.swt.widgets.FileDialog;
import org.eclipse.swt.widgets.Layout;
import org.eclipse.swt.widgets.Menu;
import org.eclipse.swt.widgets.MenuItem;
import org.eclipse.swt.widgets.MessageBox;
import org.eclipse.swt.widgets.Shell;
import com.raytheon.uf.common.status.IUFStatusHandler;
import com.raytheon.uf.common.status.UFStatus;
import com.raytheon.uf.common.status.UFStatus.Priority;
import com.raytheon.viz.texteditor.dialogs.SearchReplaceDlg;
import com.raytheon.viz.texteditor.dialogs.TextWSMessageBox;
import com.raytheon.viz.texteditor.scripting.dialogs.HelpRequestDlg.EnumHelpTypes;
import com.raytheon.viz.texteditor.scripting.dialogs.util.FileUtilities;
import com.raytheon.viz.ui.dialogs.CaveSWTDialog;
@ -896,12 +896,10 @@ public class ScriptEditorDialog extends CaveSWTDialog implements IScriptEditor {
private void dirtyFileHelper(String condition) {
boolean newFile = FILE_DEFAULT.equalsIgnoreCase(this.fileName);
if (scriptEditorDirty || (newFile && !scriptEditor.getText().isEmpty())) {
MessageBox mb = new MessageBox(shell, SWT.ICON_QUESTION | SWT.YES
| SWT.NO);
mb.setText("File Open");
mb.setMessage("Save the changes to document\n\"" + this.fileName
+ "\" " + condition + "?");
int response = mb.open();
int response = TextWSMessageBox.open(shell, "File Open",
"Save the changes to document\n\"" + this.fileName + "\" "
+ condition + "?",
SWT.ICON_QUESTION | SWT.YES | SWT.NO);
if (response == SWT.YES) {
handleFileSave(newFile);
}

View file

@ -30,13 +30,13 @@ import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.MessageBox;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Text;
import com.raytheon.uf.common.localization.LocalizationContext.LocalizationType;
import com.raytheon.uf.common.python.PythonLocalizationPathBuilder;
import com.raytheon.viz.texteditor.command.ICommand;
import com.raytheon.viz.texteditor.dialogs.TextWSMessageBox;
/**
* Text Editor Utilities.
@ -172,9 +172,6 @@ public class TextEditorUtil {
}
public static void userInformation(Shell shell, String information) {
MessageBox mb = new MessageBox(shell, SWT.ICON_ERROR | SWT.OK);
mb.setText("Notice");
mb.setMessage(information);
mb.open();
TextWSMessageBox.open(shell, "Notice", information);
}
}

View file

@ -41,7 +41,7 @@
<loadProperties xsi:type="gridLoadProperties" displayType="CONTOUR" loadWithoutData="true">
<capabilities>
<capability xsi:type="displayTypeCapability" displayType="IMAGE"/>
<capability xsi:type="imagingCapability" alpha="1.0" interpolationState="true" brightness="1.0" contrast="1.0"/>
<capability xsi:type="imagingCapability" alpha="1.0" interpolationState="true" brightness="0.5" contrast="1.0"/>
<!-- <capability xsi:type="outlineCapability" lineStyle="SOLID" outlineOn="true" outlineWidth="1"/> -->
</capabilities>
<resourceType>PLAN_VIEW</resourceType>
@ -244,7 +244,7 @@
<loadProperties xsi:type="gridLoadProperties" displayType="CONTOUR" loadWithoutData="true">
<capabilities>
<capability xsi:type="displayTypeCapability" displayType="IMAGE"/>
<capability xsi:type="imagingCapability" alpha="1.0" interpolationState="true" brightness="1.0" contrast="1.0"/>
<capability xsi:type="imagingCapability" alpha="1.0" interpolationState="true" brightness="0.5" contrast="1.0"/>
</capabilities>
<resourceType>PLAN_VIEW</resourceType>
</loadProperties>

View file

@ -5,7 +5,7 @@
<resource>
<loadProperties xsi:type="gridLoadProperties" displayType="IMAGE" loadWithoutData="false">
<capabilities>
<capability xsi:type="imagingCapability" alpha="1.0" interpolationState="true" brightness="1.0" contrast="1.0"/>
<capability xsi:type="imagingCapability" alpha="1.0" interpolationState="true" brightness="0.5" contrast="1.0"/>
</capabilities>
<resourceType>PLAN_VIEW</resourceType>
</loadProperties>
@ -79,7 +79,7 @@
<resource>
<loadProperties xsi:type="gridLoadProperties" displayType="IMAGE" loadWithoutData="false">
<capabilities>
<capability xsi:type="imagingCapability" alpha="1.0" interpolationState="true" brightness="1.0" contrast="1.0"/>
<capability xsi:type="imagingCapability" alpha="1.0" interpolationState="true" brightness="0.5" contrast="1.0"/>
</capabilities>
<resourceType>PLAN_VIEW</resourceType>
</loadProperties>
@ -152,7 +152,7 @@
<resource>
<loadProperties xsi:type="gridLoadProperties" displayType="IMAGE" loadWithoutData="false">
<capabilities>
<capability xsi:type="imagingCapability" alpha="1.0" interpolationState="true" brightness="1.0" contrast="1.0"/>
<capability xsi:type="imagingCapability" alpha="1.0" interpolationState="true" brightness="0.5" contrast="1.0"/>
</capabilities>
<resourceType>PLAN_VIEW</resourceType>
</loadProperties>
@ -227,7 +227,7 @@
<resource>
<loadProperties xsi:type="gridLoadProperties" displayType="IMAGE" loadWithoutData="false">
<capabilities>
<capability xsi:type="imagingCapability" alpha="1.0" interpolationState="true" brightness="1.0" contrast="1.0"/>
<capability xsi:type="imagingCapability" alpha="1.0" interpolationState="true" brightness="0.5" contrast="1.0"/>
</capabilities>
<resourceType>PLAN_VIEW</resourceType>
</loadProperties>

View file

@ -8,7 +8,7 @@
<perspectiveProperty xsi:type="d2dLoadProperties" timeMatchBasis="true" loadMode="VALID_TIME_SEQ"/>
<capabilities>
<capability xsi:type="displayTypeCapability" displayType="IMAGE"/>
<capability xsi:type="imagingCapability" alpha="1.0" interpolationState="true" brightness="1.0" contrast="1.0"/>
<capability xsi:type="imagingCapability" alpha="1.0" interpolationState="true" brightness="0.5" contrast="1.0"/>
<capability xsi:type="colorMapCapability">
<colorMapParameters colorMapName="SITE/ARX/Radar/Ref/ARX-Radar-Ref X-Section">
<persisted/>

View file

@ -14,7 +14,7 @@
</capability>
<capability xsi:type="displayTypeCapability" displayType="IMAGE"/>
<capability xsi:type="colorableCapability" colorAsString="green"/>
<capability xsi:type="imagingCapability" contrast="1.0" brightness="1.0" interpolationState="true" alpha="1.0"/>
<capability xsi:type="imagingCapability" contrast="1.0" brightness="0.5" interpolationState="true" alpha="1.0"/>
</capabilities>
</loadProperties>
<properties isVisible="true" isHoverOn="false" isMapLayer="false" isBlinking="false" isSystemResource="false" renderingOrderId="IMAGE_WORLD">
@ -95,7 +95,7 @@
<capability xsi:type="displayTypeCapability" displayType="IMAGE"/>
<capability xsi:type="colorableCapability" colorAsString="coral"/>
<capability xsi:type="imagingCapability" contrast="1.0" brightness="1.0" interpolationState="true" alpha="1.0"/>
<capability xsi:type="imagingCapability" contrast="1.0" brightness="0.5" interpolationState="true" alpha="1.0"/>
</capabilities>
</loadProperties>
<properties isVisible="true" isHoverOn="false" isMapLayer="false" isBlinking="false" isSystemResource="false" renderingOrderId="IMAGE_WORLD">
@ -136,7 +136,7 @@
<capabilities>
<capability xsi:type="displayTypeCapability" displayType="IMAGE"/>
<capability xsi:type="colorableCapability" colorAsString="cyan"/>
<capability xsi:type="imagingCapability" contrast="1.0" brightness="1.0" interpolationState="true" alpha="1.0"/>
<capability xsi:type="imagingCapability" contrast="1.0" brightness="0.5" interpolationState="true" alpha="1.0"/>
</capabilities>
</loadProperties>
<properties isVisible="true" isHoverOn="false" isMapLayer="false" isBlinking="false" isSystemResource="false" renderingOrderId="IMAGE_WORLD">
@ -174,7 +174,7 @@
<capabilities>
<capability xsi:type="displayTypeCapability" displayType="IMAGE"/>
<capability xsi:type="colorableCapability" colorAsString="burlywood"/>
<capability xsi:type="imagingCapability" contrast="1.0" brightness="1.0" interpolationState="true" alpha="1.0"/>
<capability xsi:type="imagingCapability" contrast="1.0" brightness="0.5" interpolationState="true" alpha="1.0"/>
</capabilities>
</loadProperties>
<properties isVisible="true" isHoverOn="false" isMapLayer="false" isBlinking="false" isSystemResource="false" renderingOrderId="IMAGE_WORLD">

View file

@ -318,7 +318,7 @@
<loadProperties xsi:type="gridLoadProperties" displayType="IMAGE" loadWithoutData="false">
<capabilities>
<capability xsi:type="imagingCapability" alpha="1.0" interpolationState="false" brightness="1.0" contrast="1.0"/>
<capability xsi:type="imagingCapability" alpha="1.0" interpolationState="false" brightness="0.5" contrast="1.0"/>
</capabilities>
<resourceType>PLAN_VIEW</resourceType>
</loadProperties>
@ -353,7 +353,7 @@
<loadProperties xsi:type="gridLoadProperties" displayType="IMAGE" loadWithoutData="true">
<capabilities>
<capability xsi:type="imagingCapability" alpha="1.0" interpolationState="false" brightness="1.0" contrast="1.0"/>
<capability xsi:type="imagingCapability" alpha="1.0" interpolationState="false" brightness="0.5" contrast="1.0"/>
</capabilities>
<resourceType>PLAN_VIEW</resourceType>
</loadProperties>
@ -388,7 +388,7 @@
<loadProperties xsi:type="gridLoadProperties" displayType="IMAGE" loadWithoutData="true">
<capabilities>
<capability xsi:type="imagingCapability" alpha="1.0" interpolationState="false" brightness="1.0" contrast="1.0"/>
<capability xsi:type="imagingCapability" alpha="1.0" interpolationState="false" brightness="0.5" contrast="1.0"/>
</capabilities>
<resourceType>PLAN_VIEW</resourceType>
</loadProperties>
@ -423,7 +423,7 @@
<loadProperties xsi:type="gridLoadProperties" displayType="IMAGE" loadWithoutData="true">
<capabilities>
<capability xsi:type="imagingCapability" alpha="1.0" interpolationState="false" brightness="1.0" contrast="1.0"/>
<capability xsi:type="imagingCapability" alpha="1.0" interpolationState="false" brightness="0.5" contrast="1.0"/>
</capabilities>
<resourceType>PLAN_VIEW</resourceType>
</loadProperties>

View file

@ -62,7 +62,7 @@
<loadProperties xsi:type="gridLoadProperties" displayType="CONTOUR">
<capabilities>
<capability xsi:type="displayTypeCapability" displayType="IMAGE"/>
<capability xsi:type="imagingCapability" alpha="1.0" interpolationState="true" brightness="1.0" contrast="1.0"/>
<capability xsi:type="imagingCapability" alpha="1.0" interpolationState="true" brightness="0.5" contrast="1.0"/>
</capabilities>
</loadProperties>
<properties isSystemResource="false" isBlinking="false"

View file

@ -5,7 +5,7 @@
<resource>
<loadProperties xsi:type="gridLoadProperties" displayType="IMAGE" loadWithoutData="false">
<capabilities>
<capability xsi:type="imagingCapability" alpha="1.0" interpolationState="true" brightness="1.0" contrast="1.0"/>
<capability xsi:type="imagingCapability" alpha="1.0" interpolationState="true" brightness="0.5" contrast="1.0"/>
</capabilities>
<resourceType>PLAN_VIEW</resourceType>
</loadProperties>
@ -85,7 +85,7 @@
<resource>
<loadProperties xsi:type="gridLoadProperties" displayType="IMAGE" loadWithoutData="false">
<capabilities>
<capability xsi:type="imagingCapability" alpha="1.0" interpolationState="true" brightness="1.0" contrast="1.0"/>
<capability xsi:type="imagingCapability" alpha="1.0" interpolationState="true" brightness="0.5" contrast="1.0"/>
</capabilities>
<resourceType>PLAN_VIEW</resourceType>
</loadProperties>
@ -163,7 +163,7 @@
<resource>
<loadProperties xsi:type="gridLoadProperties" displayType="IMAGE" loadWithoutData="false">
<capabilities>
<capability xsi:type="imagingCapability" alpha="1.0" interpolationState="true" brightness="1.0" contrast="1.0"/>
<capability xsi:type="imagingCapability" alpha="1.0" interpolationState="true" brightness="0.5" contrast="1.0"/>
</capabilities>
<resourceType>PLAN_VIEW</resourceType>
</loadProperties>
@ -232,7 +232,7 @@
<resource>
<loadProperties xsi:type="gridLoadProperties" displayType="IMAGE" loadWithoutData="false">
<capabilities>
<capability xsi:type="imagingCapability" alpha="1.0" interpolationState="true" brightness="1.0" contrast="1.0"/>
<capability xsi:type="imagingCapability" alpha="1.0" interpolationState="true" brightness="0.5" contrast="1.0"/>
</capabilities>
<resourceType>PLAN_VIEW</resourceType>
</loadProperties>

View file

@ -221,7 +221,7 @@
<capability xsi:type="colorMapCapability">
<colorMapParameters colorMapName="HRRR Reflectivity"/>
</capability>
<capability xsi:type="imagingCapability" alpha="1.0" interpolationState="false" brightness="1.0" contrast="1.0"/>
<capability xsi:type="imagingCapability" alpha="1.0" interpolationState="false" brightness="0.5" contrast="1.0"/>
</capabilities>
<resourceType>PLAN_VIEW</resourceType>
</loadProperties>

View file

@ -30,7 +30,7 @@
<loadProperties xsi:type="gridLoadProperties" displayType="IMAGE" loadWithoutData="true">
<capabilities>
<capability xsi:type="imagingCapability" alpha="1.0" interpolationState="false" brightness="1.0" contrast="1.0"/>
<capability xsi:type="imagingCapability" alpha="1.0" interpolationState="false" brightness="0.5" contrast="1.0"/>
</capabilities>
<resourceType>PLAN_VIEW</resourceType>
</loadProperties>

View file

@ -22,7 +22,7 @@
<loadProperties xsi:type="gridLoadProperties" displayType="IMAGE" loadWithoutData="true">
<capabilities>
<capability xsi:type="imagingCapability" alpha="1.0" interpolationState="false" brightness="1.0" contrast="1.0"/>
<capability xsi:type="imagingCapability" alpha="1.0" interpolationState="false" brightness="0.5" contrast="1.0"/>
</capabilities>
<resourceType>PLAN_VIEW</resourceType>
</loadProperties>
@ -57,7 +57,7 @@
<loadProperties xsi:type="gridLoadProperties" displayType="IMAGE" loadWithoutData="true">
<capabilities>
<capability xsi:type="imagingCapability" alpha="1.0" interpolationState="false" brightness="1.0" contrast="1.0"/>
<capability xsi:type="imagingCapability" alpha="1.0" interpolationState="false" brightness="0.5" contrast="1.0"/>
</capabilities>
<resourceType>PLAN_VIEW</resourceType>
</loadProperties>

View file

@ -530,7 +530,7 @@ ModFamD| |N|Winter: Family| |OTHER | | \
<resource>
<loadProperties xsi:type="gridLoadProperties" displayType="IMAGE" loadWithoutData="false">
<capabilities>
<capability xsi:type="imagingCapability" alpha="1.0" interpolationState="true" brightness="1.0" contrast="1.0"/>
<capability xsi:type="imagingCapability" alpha="1.0" interpolationState="true" brightness="0.5" contrast="1.0"/>
</capabilities>
<resourceType>PLAN_VIEW</resourceType>
</loadProperties>

View file

@ -562,7 +562,7 @@ ModFamD| |N|Winter: Family| |OTHER | | \
<resource>
<loadProperties xsi:type="gridLoadProperties" displayType="IMAGE" loadWithoutData="false">
<capabilities>
<capability xsi:type="imagingCapability" alpha="1.0" interpolationState="true" brightness="1.0" contrast="1.0"/>
<capability xsi:type="imagingCapability" alpha="1.0" interpolationState="true" brightness="0.5" contrast="1.0"/>
</capabilities>
<resourceType>PLAN_VIEW</resourceType>
</loadProperties>

View file

@ -89,7 +89,7 @@ ModFamE| |N|Winter: PV/Trop Family| |OTHER | | \
<resource>
<loadProperties xsi:type="gridLoadProperties" displayType="IMAGE" loadWithoutData="false">
<capabilities>
<capability xsi:type="imagingCapability" alpha="1.0" interpolationState="true" brightness="0.8" contrast="1.0"/>
<capability xsi:type="imagingCapability" alpha="1.0" interpolationState="true" brightness="0.5" contrast="1.0"/>
<capability xsi:type="outlineCapability" lineStyle="SOLID" outlineOn="true" outlineWidth="1"/>
</capabilities>
<resourceType>PLAN_VIEW</resourceType>
@ -197,7 +197,7 @@ ModFamE| |N|Winter: PV/Trop Family| |OTHER | | \
<resource>
<loadProperties xsi:type="gridLoadProperties" displayType="IMAGE" loadWithoutData="false">
<capabilities>
<capability xsi:type="imagingCapability" alpha="1.0" interpolationState="true" brightness="0.8" contrast="1.0"/>
<capability xsi:type="imagingCapability" alpha="1.0" interpolationState="true" brightness="0.5" contrast="1.0"/>
<capability xsi:type="outlineCapability" lineStyle="SOLID" outlineOn="true" outlineWidth="1"/>
</capabilities>
<resourceType>PLAN_VIEW</resourceType>
@ -239,7 +239,7 @@ ModFamE| |N|Winter: PV/Trop Family| |OTHER | | \
<resource>
<loadProperties xsi:type="gridLoadProperties" displayType="IMAGE" loadWithoutData="false">
<capabilities>
<capability xsi:type="imagingCapability" alpha="1.0" interpolationState="true" brightness="0.8" contrast="1.0"/>
<capability xsi:type="imagingCapability" alpha="1.0" interpolationState="true" brightness="0.5" contrast="1.0"/>
<capability xsi:type="outlineCapability" lineStyle="SOLID" outlineOn="true" outlineWidth="1"/>
</capabilities>
<resourceType>PLAN_VIEW</resourceType>
@ -380,7 +380,7 @@ ModFamE| |N|Winter: PV/Trop Family| |OTHER | | \
<resource>
<loadProperties xsi:type="gridLoadProperties" displayType="IMAGE" loadWithoutData="false">
<capabilities>
<capability xsi:type="imagingCapability" alpha="1.0" interpolationState="true" brightness="0.8" contrast="1.0"/>
<capability xsi:type="imagingCapability" alpha="1.0" interpolationState="true" brightness="0.5" contrast="1.0"/>
<capability xsi:type="outlineCapability" lineStyle="SOLID" outlineOn="true" outlineWidth="1"/>
</capabilities>
<resourceType>PLAN_VIEW</resourceType>
@ -448,7 +448,7 @@ ModFamE| |N|Winter: PV/Trop Family| |OTHER | | \
<resource>
<loadProperties xsi:type="gridLoadProperties" displayType="IMAGE" loadWithoutData="false">
<capabilities>
<capability xsi:type="imagingCapability" alpha="1.0" interpolationState="true" brightness="0.8" contrast="1.0"/>
<capability xsi:type="imagingCapability" alpha="1.0" interpolationState="true" brightness="0.5" contrast="1.0"/>
<capability xsi:type="outlineCapability" lineStyle="SOLID" outlineOn="true" outlineWidth="1"/>
</capabilities>
<resourceType>PLAN_VIEW</resourceType>

View file

@ -20,7 +20,7 @@
<resource>
<loadProperties xsi:type="gridLoadProperties" displayType="CONTOUR" loadWithoutData="false">
<capabilities>
<capability xsi:type="outlineCapability" alpha="1.0" interpolationState="true" brightness="1.0" contrast="1.0"/>
<capability xsi:type="outlineCapability" alpha="1.0" interpolationState="true" brightness="0.5" contrast="1.0"/>
</capabilities>
<resourceType>PLAN_VIEW</resourceType>
</loadProperties>
@ -55,7 +55,7 @@
<resource>
<loadProperties xsi:type="gridLoadProperties" displayType="IMAGE" loadWithoutData="false">
<capabilities>
<capability xsi:type="imagingCapability" alpha="1.0" interpolationState="true" brightness="1.0" contrast="1.0"/>
<capability xsi:type="imagingCapability" alpha="1.0" interpolationState="true" brightness="0.5" contrast="1.0"/>
<capability xsi:type="blendableCapability" alphaStep="7" resourceIndex="0"/>
</capabilities>
<resourceType>PLAN_VIEW</resourceType>
@ -70,7 +70,7 @@
<loadProperties xsi:type="gridLoadProperties" displayType="CONTOUR" loadWithoutData="false">
<capabilities>
<capability xsi:type="blendedCapability"/>
<capability xsi:type="imagingCapability" alpha="0.5" interpolationState="false" brightness="1.0" contrast="1.0"/>
<capability xsi:type="imagingCapability" alpha="0.5" interpolationState="false" brightness="0.5" contrast="1.0"/>
<capability xsi:type="displayTypeCapability" displayType="IMAGE"/>
</capabilities>
<resourceType>PLAN_VIEW</resourceType>
@ -108,7 +108,7 @@
<loadProperties xsi:type="gridLoadProperties" displayType="CONTOUR" loadWithoutData="false">
<capabilities>
<capability xsi:type="blendedCapability"/>
<capability xsi:type="imagingCapability" alpha="0.5" interpolationState="false" brightness="1.0" contrast="1.0"/>
<capability xsi:type="imagingCapability" alpha="0.5" interpolationState="false" brightness="0.5" contrast="1.0"/>
<capability xsi:type="displayTypeCapability" displayType="IMAGE"/>
</capabilities>
<resourceType>PLAN_VIEW</resourceType>
@ -148,7 +148,7 @@
<loadProperties xsi:type="gridLoadProperties" displayType="BARB" loadWithoutData="false">
<capabilities>
<capability xsi:type="blendedCapability"/>
<capability xsi:type="imagingCapability" alpha="0.5" interpolationState="false" brightness="1.0" contrast="1.0"/>
<capability xsi:type="imagingCapability" alpha="0.5" interpolationState="false" brightness="0.5" contrast="1.0"/>
<capability xsi:type="displayTypeCapability" displayType="IMAGE"/>
</capabilities>
<resourceType>PLAN_VIEW</resourceType>
@ -186,7 +186,7 @@
<loadProperties xsi:type="gridLoadProperties" displayType="CONTOUR" loadWithoutData="false">
<capabilities>
<capability xsi:type="blendedCapability"/>
<capability xsi:type="imagingCapability" alpha="0.5" interpolationState="false" brightness="1.0" contrast="1.0"/>
<capability xsi:type="imagingCapability" alpha="0.5" interpolationState="false" brightness="0.5" contrast="1.0"/>
<capability xsi:type="displayTypeCapability" displayType="IMAGE"/>
</capabilities>
<resourceType>PLAN_VIEW</resourceType>
@ -224,7 +224,7 @@
<loadProperties xsi:type="gridLoadProperties" displayType="CONTOUR" loadWithoutData="false">
<capabilities>
<capability xsi:type="blendedCapability"/>
<capability xsi:type="imagingCapability" alpha="0.5" interpolationState="false" brightness="1.0" contrast="1.0"/>
<capability xsi:type="imagingCapability" alpha="0.5" interpolationState="false" brightness="0.5" contrast="1.0"/>
<capability xsi:type="displayTypeCapability" displayType="IMAGE"/>
</capabilities>
<resourceType>PLAN_VIEW</resourceType>
@ -262,7 +262,7 @@
<loadProperties xsi:type="gridLoadProperties" displayType="CONTOUR" loadWithoutData="false">
<capabilities>
<capability xsi:type="blendedCapability"/>
<capability xsi:type="imagingCapability" alpha="0.5" interpolationState="false" brightness="1.0" contrast="1.0"/>
<capability xsi:type="imagingCapability" alpha="0.5" interpolationState="false" brightness="0.5" contrast="1.0"/>
<capability xsi:type="displayTypeCapability" displayType="IMAGE"/>
</capabilities>
<resourceType>PLAN_VIEW</resourceType>
@ -306,7 +306,7 @@
<resource>
<loadProperties xsi:type="gridLoadProperties" displayType="CONTOUR" loadWithoutData="false">
<capabilities>
<capability xsi:type="outlineCapability" alpha="1.0" interpolationState="true" brightness="1.0" contrast="1.0"/>
<capability xsi:type="outlineCapability" alpha="1.0" interpolationState="true" brightness="0.5" contrast="1.0"/>
</capabilities>
<resourceType>PLAN_VIEW</resourceType>
</loadProperties>
@ -341,7 +341,7 @@
<resource>
<loadProperties xsi:type="gridLoadProperties" displayType="IMAGE" loadWithoutData="false">
<capabilities>
<capability xsi:type="imagingCapability" alpha="1.0" interpolationState="true" brightness="1.0" contrast="1.0"/>
<capability xsi:type="imagingCapability" alpha="1.0" interpolationState="true" brightness="0.5" contrast="1.0"/>
<capability xsi:type="blendableCapability" alphaStep="7" resourceIndex="0"/>
</capabilities>
<resourceType>PLAN_VIEW</resourceType>
@ -356,7 +356,7 @@
<loadProperties xsi:type="gridLoadProperties" displayType="CONTOUR" loadWithoutData="false">
<capabilities>
<capability xsi:type="blendedCapability"/>
<capability xsi:type="imagingCapability" alpha="0.5" interpolationState="false" brightness="1.0" contrast="1.0"/>
<capability xsi:type="imagingCapability" alpha="0.5" interpolationState="false" brightness="0.5" contrast="1.0"/>
<capability xsi:type="displayTypeCapability" displayType="IMAGE"/>
</capabilities>
<resourceType>PLAN_VIEW</resourceType>
@ -394,7 +394,7 @@
<loadProperties xsi:type="gridLoadProperties" displayType="CONTOUR" loadWithoutData="false">
<capabilities>
<capability xsi:type="blendedCapability"/>
<capability xsi:type="imagingCapability" alpha="0.5" interpolationState="false" brightness="1.0" contrast="1.0"/>
<capability xsi:type="imagingCapability" alpha="0.5" interpolationState="false" brightness="0.5" contrast="1.0"/>
<capability xsi:type="displayTypeCapability" displayType="IMAGE"/>
</capabilities>
<resourceType>PLAN_VIEW</resourceType>
@ -434,7 +434,7 @@
<loadProperties xsi:type="gridLoadProperties" displayType="BARB" loadWithoutData="false">
<capabilities>
<capability xsi:type="blendedCapability"/>
<capability xsi:type="imagingCapability" alpha="0.5" interpolationState="false" brightness="1.0" contrast="1.0"/>
<capability xsi:type="imagingCapability" alpha="0.5" interpolationState="false" brightness="0.5" contrast="1.0"/>
<capability xsi:type="displayTypeCapability" displayType="IMAGE"/>
</capabilities>
<resourceType>PLAN_VIEW</resourceType>
@ -472,7 +472,7 @@
<loadProperties xsi:type="gridLoadProperties" displayType="CONTOUR" loadWithoutData="false">
<capabilities>
<capability xsi:type="blendedCapability"/>
<capability xsi:type="imagingCapability" alpha="0.5" interpolationState="false" brightness="1.0" contrast="1.0"/>
<capability xsi:type="imagingCapability" alpha="0.5" interpolationState="false" brightness="0.5" contrast="1.0"/>
<capability xsi:type="displayTypeCapability" displayType="IMAGE"/>
</capabilities>
<resourceType>PLAN_VIEW</resourceType>
@ -510,7 +510,7 @@
<loadProperties xsi:type="gridLoadProperties" displayType="CONTOUR" loadWithoutData="false">
<capabilities>
<capability xsi:type="blendedCapability"/>
<capability xsi:type="imagingCapability" alpha="0.5" interpolationState="false" brightness="1.0" contrast="1.0"/>
<capability xsi:type="imagingCapability" alpha="0.5" interpolationState="false" brightness="0.5" contrast="1.0"/>
<capability xsi:type="displayTypeCapability" displayType="IMAGE"/>
</capabilities>
<resourceType>PLAN_VIEW</resourceType>
@ -548,7 +548,7 @@
<loadProperties xsi:type="gridLoadProperties" displayType="CONTOUR" loadWithoutData="false">
<capabilities>
<capability xsi:type="blendedCapability"/>
<capability xsi:type="imagingCapability" alpha="0.5" interpolationState="false" brightness="1.0" contrast="1.0"/>
<capability xsi:type="imagingCapability" alpha="0.5" interpolationState="false" brightness="0.5" contrast="1.0"/>
<capability xsi:type="displayTypeCapability" displayType="IMAGE"/>
</capabilities>
<resourceType>PLAN_VIEW</resourceType>
@ -592,7 +592,7 @@
<resource>
<loadProperties xsi:type="gridLoadProperties" displayType="CONTOUR" loadWithoutData="false">
<capabilities>
<capability xsi:type="outlineCapability" alpha="1.0" interpolationState="true" brightness="1.0" contrast="1.0"/>
<capability xsi:type="outlineCapability" alpha="1.0" interpolationState="true" brightness="0.5" contrast="1.0"/>
</capabilities>
<resourceType>PLAN_VIEW</resourceType>
</loadProperties>
@ -627,7 +627,7 @@
<resource>
<loadProperties xsi:type="gridLoadProperties" displayType="IMAGE" loadWithoutData="false">
<capabilities>
<capability xsi:type="imagingCapability" alpha="1.0" interpolationState="true" brightness="1.0" contrast="1.0"/>
<capability xsi:type="imagingCapability" alpha="1.0" interpolationState="true" brightness="0.5" contrast="1.0"/>
<capability xsi:type="blendableCapability" alphaStep="7" resourceIndex="0"/>
</capabilities>
<resourceType>PLAN_VIEW</resourceType>
@ -642,7 +642,7 @@
<loadProperties xsi:type="gridLoadProperties" displayType="CONTOUR" loadWithoutData="false">
<capabilities>
<capability xsi:type="blendedCapability"/>
<capability xsi:type="imagingCapability" alpha="0.5" interpolationState="false" brightness="1.0" contrast="1.0"/>
<capability xsi:type="imagingCapability" alpha="0.5" interpolationState="false" brightness="0.5" contrast="1.0"/>
<capability xsi:type="displayTypeCapability" displayType="IMAGE"/>
</capabilities>
<resourceType>PLAN_VIEW</resourceType>
@ -680,7 +680,7 @@
<loadProperties xsi:type="gridLoadProperties" displayType="CONTOUR" loadWithoutData="false">
<capabilities>
<capability xsi:type="blendedCapability"/>
<capability xsi:type="imagingCapability" alpha="0.5" interpolationState="false" brightness="1.0" contrast="1.0"/>
<capability xsi:type="imagingCapability" alpha="0.5" interpolationState="false" brightness="0.5" contrast="1.0"/>
<capability xsi:type="displayTypeCapability" displayType="IMAGE"/>
</capabilities>
<resourceType>PLAN_VIEW</resourceType>
@ -720,7 +720,7 @@
<loadProperties xsi:type="gridLoadProperties" displayType="BARB" loadWithoutData="false">
<capabilities>
<capability xsi:type="blendedCapability"/>
<capability xsi:type="imagingCapability" alpha="0.5" interpolationState="false" brightness="1.0" contrast="1.0"/>
<capability xsi:type="imagingCapability" alpha="0.5" interpolationState="false" brightness="0.5" contrast="1.0"/>
<capability xsi:type="displayTypeCapability" displayType="IMAGE"/>
</capabilities>
<resourceType>PLAN_VIEW</resourceType>
@ -758,7 +758,7 @@
<loadProperties xsi:type="gridLoadProperties" displayType="CONTOUR" loadWithoutData="false">
<capabilities>
<capability xsi:type="blendedCapability"/>
<capability xsi:type="imagingCapability" alpha="0.5" interpolationState="false" brightness="1.0" contrast="1.0"/>
<capability xsi:type="imagingCapability" alpha="0.5" interpolationState="false" brightness="0.5" contrast="1.0"/>
<capability xsi:type="displayTypeCapability" displayType="IMAGE"/>
</capabilities>
<resourceType>PLAN_VIEW</resourceType>
@ -796,7 +796,7 @@
<loadProperties xsi:type="gridLoadProperties" displayType="CONTOUR" loadWithoutData="false">
<capabilities>
<capability xsi:type="blendedCapability"/>
<capability xsi:type="imagingCapability" alpha="0.5" interpolationState="false" brightness="1.0" contrast="1.0"/>
<capability xsi:type="imagingCapability" alpha="0.5" interpolationState="false" brightness="0.5" contrast="1.0"/>
<capability xsi:type="displayTypeCapability" displayType="IMAGE"/>
</capabilities>
<resourceType>PLAN_VIEW</resourceType>
@ -834,7 +834,7 @@
<loadProperties xsi:type="gridLoadProperties" displayType="CONTOUR" loadWithoutData="false">
<capabilities>
<capability xsi:type="blendedCapability"/>
<capability xsi:type="imagingCapability" alpha="0.5" interpolationState="false" brightness="1.0" contrast="1.0"/>
<capability xsi:type="imagingCapability" alpha="0.5" interpolationState="false" brightness="0.5" contrast="1.0"/>
<capability xsi:type="displayTypeCapability" displayType="IMAGE"/>
</capabilities>
<resourceType>PLAN_VIEW</resourceType>
@ -878,7 +878,7 @@
<resource>
<loadProperties xsi:type="gridLoadProperties" displayType="CONTOUR" loadWithoutData="false">
<capabilities>
<capability xsi:type="outlineCapability" alpha="1.0" interpolationState="true" brightness="1.0" contrast="1.0"/>
<capability xsi:type="outlineCapability" alpha="1.0" interpolationState="true" brightness="0.5" contrast="1.0"/>
</capabilities>
<resourceType>PLAN_VIEW</resourceType>
</loadProperties>
@ -913,7 +913,7 @@
<resource>
<loadProperties xsi:type="gridLoadProperties" displayType="IMAGE" loadWithoutData="false">
<capabilities>
<capability xsi:type="imagingCapability" alpha="1.0" interpolationState="true" brightness="1.0" contrast="1.0"/>
<capability xsi:type="imagingCapability" alpha="1.0" interpolationState="true" brightness="0.5" contrast="1.0"/>
<capability xsi:type="blendableCapability" alphaStep="7" resourceIndex="0"/>
</capabilities>
<resourceType>PLAN_VIEW</resourceType>
@ -928,7 +928,7 @@
<loadProperties xsi:type="gridLoadProperties" displayType="CONTOUR" loadWithoutData="false">
<capabilities>
<capability xsi:type="blendedCapability"/>
<capability xsi:type="imagingCapability" alpha="0.5" interpolationState="false" brightness="1.0" contrast="1.0"/>
<capability xsi:type="imagingCapability" alpha="0.5" interpolationState="false" brightness="0.5" contrast="1.0"/>
<capability xsi:type="displayTypeCapability" displayType="IMAGE"/>
</capabilities>
<resourceType>PLAN_VIEW</resourceType>
@ -966,7 +966,7 @@
<loadProperties xsi:type="gridLoadProperties" displayType="CONTOUR" loadWithoutData="false">
<capabilities>
<capability xsi:type="blendedCapability"/>
<capability xsi:type="imagingCapability" alpha="0.5" interpolationState="false" brightness="1.0" contrast="1.0"/>
<capability xsi:type="imagingCapability" alpha="0.5" interpolationState="false" brightness="0.5" contrast="1.0"/>
<capability xsi:type="displayTypeCapability" displayType="IMAGE"/>
</capabilities>
<resourceType>PLAN_VIEW</resourceType>
@ -1006,7 +1006,7 @@
<loadProperties xsi:type="gridLoadProperties" displayType="BARB" loadWithoutData="false">
<capabilities>
<capability xsi:type="blendedCapability"/>
<capability xsi:type="imagingCapability" alpha="0.5" interpolationState="false" brightness="1.0" contrast="1.0"/>
<capability xsi:type="imagingCapability" alpha="0.5" interpolationState="false" brightness="0.5" contrast="1.0"/>
<capability xsi:type="displayTypeCapability" displayType="IMAGE"/>
</capabilities>
<resourceType>PLAN_VIEW</resourceType>
@ -1044,7 +1044,7 @@
<loadProperties xsi:type="gridLoadProperties" displayType="CONTOUR" loadWithoutData="false">
<capabilities>
<capability xsi:type="blendedCapability"/>
<capability xsi:type="imagingCapability" alpha="0.5" interpolationState="false" brightness="1.0" contrast="1.0"/>
<capability xsi:type="imagingCapability" alpha="0.5" interpolationState="false" brightness="0.5" contrast="1.0"/>
<capability xsi:type="displayTypeCapability" displayType="IMAGE"/>
</capabilities>
<resourceType>PLAN_VIEW</resourceType>
@ -1082,7 +1082,7 @@
<loadProperties xsi:type="gridLoadProperties" displayType="CONTOUR" loadWithoutData="false">
<capabilities>
<capability xsi:type="blendedCapability"/>
<capability xsi:type="imagingCapability" alpha="0.5" interpolationState="false" brightness="1.0" contrast="1.0"/>
<capability xsi:type="imagingCapability" alpha="0.5" interpolationState="false" brightness="0.5" contrast="1.0"/>
<capability xsi:type="displayTypeCapability" displayType="IMAGE"/>
</capabilities>
<resourceType>PLAN_VIEW</resourceType>
@ -1120,7 +1120,7 @@
<loadProperties xsi:type="gridLoadProperties" displayType="CONTOUR" loadWithoutData="false">
<capabilities>
<capability xsi:type="blendedCapability"/>
<capability xsi:type="imagingCapability" alpha="0.5" interpolationState="false" brightness="1.0" contrast="1.0"/>
<capability xsi:type="imagingCapability" alpha="0.5" interpolationState="false" brightness="0.5" contrast="1.0"/>
<capability xsi:type="displayTypeCapability" displayType="IMAGE"/>
</capabilities>
<resourceType>PLAN_VIEW</resourceType>

View file

@ -128,7 +128,7 @@ ModFamJ| |N|Winter: Snow Growth Family| |OTHER | | \
<resource>
<loadProperties xsi:type="gridLoadProperties" displayType="IMAGE" loadWithoutData="false">
<capabilities>
<capability xsi:type="imagingCapability" alpha="1.0" interpolationState="true" brightness="0.8" contrast="1.0"/>
<capability xsi:type="imagingCapability" alpha="1.0" interpolationState="true" brightness="0.5" contrast="1.0"/>
<capability xsi:type="outlineCapability" lineStyle="SOLID" outlineOn="true" outlineWidth="1"/>
</capabilities>
<resourceType>PLAN_VIEW</resourceType>
@ -205,7 +205,7 @@ ModFamJ| |N|Winter: Snow Growth Family| |OTHER | | \
<resource>
<loadProperties xsi:type="gridLoadProperties" displayType="IMAGE" loadWithoutData="false">
<capabilities>
<capability xsi:type="imagingCapability" alpha="1.0" interpolationState="true" brightness="0.8" contrast="1.0"/>
<capability xsi:type="imagingCapability" alpha="1.0" interpolationState="true" brightness="0.5" contrast="1.0"/>
<capability xsi:type="outlineCapability" lineStyle="SOLID" outlineOn="true" outlineWidth="1"/>
</capabilities>
<resourceType>PLAN_VIEW</resourceType>
@ -353,7 +353,7 @@ ModFamJ| |N|Winter: Snow Growth Family| |OTHER | | \
<resource>
<loadProperties xsi:type="gridLoadProperties" displayType="IMAGE" loadWithoutData="false">
<capabilities>
<capability xsi:type="imagingCapability" alpha="1.0" interpolationState="true" brightness="0.8" contrast="1.0"/>
<capability xsi:type="imagingCapability" alpha="1.0" interpolationState="true" brightness="0.5" contrast="1.0"/>
<capability xsi:type="outlineCapability" lineStyle="SOLID" outlineOn="true" outlineWidth="1"/>
</capabilities>
<resourceType>PLAN_VIEW</resourceType>
@ -387,7 +387,7 @@ ModFamJ| |N|Winter: Snow Growth Family| |OTHER | | \
<resource>
<loadProperties xsi:type="gridLoadProperties" displayType="IMAGE" loadWithoutData="false">
<capabilities>
<capability xsi:type="imagingCapability" alpha="1.0" interpolationState="true" brightness="0.8" contrast="1.0"/>
<capability xsi:type="imagingCapability" alpha="1.0" interpolationState="true" brightness="0.5" contrast="1.0"/>
<capability xsi:type="outlineCapability" lineStyle="SOLID" outlineOn="true" outlineWidth="1"/>
</capabilities>
<resourceType>PLAN_VIEW</resourceType>
@ -529,7 +529,7 @@ ModFamJ| |N|Winter: Snow Growth Family| |OTHER | | \
<resource>
<loadProperties xsi:type="gridLoadProperties" displayType="IMAGE" loadWithoutData="false">
<capabilities>
<capability xsi:type="imagingCapability" alpha="1.0" interpolationState="true" brightness="0.8" contrast="1.0"/>
<capability xsi:type="imagingCapability" alpha="1.0" interpolationState="true" brightness="0.5" contrast="1.0"/>
<capability xsi:type="outlineCapability" lineStyle="SOLID" outlineOn="true" outlineWidth="1"/>
</capabilities>
<resourceType>PLAN_VIEW</resourceType>

View file

@ -28,7 +28,7 @@ ModFamL| |N|Winter: PType Family| |OTHER | | \
<loadProperties xsi:type="gridLoadProperties" displayType="CONTOUR" loadWithoutData="false">
<capabilities>
<capability xsi:type="outlineCapability" lineStyle="SOLID" outlineOn="true" outlineWidth="1"/>
<capability xsi:type="imagingCapability" alpha="1.0" interpolationState="true" brightness="1.0" contrast="1.0"/>
<capability xsi:type="imagingCapability" alpha="1.0" interpolationState="true" brightness="0.5" contrast="1.0"/>
</capabilities>
<resourceType>PLAN_VIEW</resourceType>
</loadProperties>
@ -63,7 +63,7 @@ ModFamL| |N|Winter: PType Family| |OTHER | | \
<loadProperties xsi:type="gridLoadProperties" displayType="IMAGE" loadWithoutData="false">
<capabilities>
<capability xsi:type="outlineCapability" lineStyle="SOLID" outlineOn="true" outlineWidth="1"/>
<capability xsi:type="imagingCapability" alpha="1.0" interpolationState="true" brightness="1.0" contrast="1.0"/></capabilities>
<capability xsi:type="imagingCapability" alpha="1.0" interpolationState="true" brightness="0.5" contrast="1.0"/></capabilities>
<resourceType>PLAN_VIEW</resourceType>
</loadProperties>
<properties isSystemResource="false" isBlinking="false" isMapLayer="false" isHoverOn="false" isVisible="false">
@ -96,7 +96,7 @@ ModFamL| |N|Winter: PType Family| |OTHER | | \
<loadProperties xsi:type="gridLoadProperties" displayType="CONTOUR" loadWithoutData="false">
<capabilities>
<capability xsi:type="outlineCapability" lineStyle="SOLID" outlineOn="true" outlineWidth="1"/>
<capability xsi:type="imagingCapability" alpha="1.0" interpolationState="true" brightness="1.0" contrast="1.0"/></capabilities>
<capability xsi:type="imagingCapability" alpha="1.0" interpolationState="true" brightness="0.5" contrast="1.0"/></capabilities>
<resourceType>PLAN_VIEW</resourceType>
</loadProperties>
<properties isSystemResource="false" isBlinking="false" isMapLayer="false" isHoverOn="false" isVisible="false">
@ -129,7 +129,7 @@ ModFamL| |N|Winter: PType Family| |OTHER | | \
<loadProperties xsi:type="gridLoadProperties" displayType="IMAGE" loadWithoutData="false">
<capabilities>
<capability xsi:type="outlineCapability" lineStyle="SOLID" outlineOn="true" outlineWidth="1"/>
<capability xsi:type="imagingCapability" alpha="1.0" interpolationState="true" brightness="1.0" contrast="1.0"/></capabilities>
<capability xsi:type="imagingCapability" alpha="1.0" interpolationState="true" brightness="0.5" contrast="1.0"/></capabilities>
<resourceType>PLAN_VIEW</resourceType>
</loadProperties>
<properties isSystemResource="false" isBlinking="false" isMapLayer="false" isHoverOn="false" isVisible="false">
@ -507,7 +507,7 @@ ModFamL| |N|Winter: PType Family| |OTHER | | \
<loadProperties xsi:type="gridLoadProperties" displayType="IMAGE" loadWithoutData="false">
<capabilities>
<capability xsi:type="outlineCapability" lineStyle="SOLID" outlineOn="true" outlineWidth="1"/>
<capability xsi:type="imagingCapability" alpha="1.0" interpolationState="true" brightness="1.0" contrast="1.0"/>
<capability xsi:type="imagingCapability" alpha="1.0" interpolationState="true" brightness="0.5" contrast="1.0"/>
</capabilities>
<resourceType>PLAN_VIEW</resourceType>
</loadProperties>
@ -692,7 +692,7 @@ ModFamL| |N|Winter: PType Family| |OTHER | | \
<resource>
<loadProperties xsi:type="gridLoadProperties" displayType="IMAGE" loadWithoutData="false">
<capabilities>
<capability xsi:type="imagingCapability" alpha="1.0" interpolationState="true" brightness="1.0" contrast="1.0"/>
<capability xsi:type="imagingCapability" alpha="1.0" interpolationState="true" brightness="0.5" contrast="1.0"/>
<capability xsi:type="outlineCapability" lineStyle="SOLID" outlineOn="true" outlineWidth="1"/>
</capabilities>
<resourceType>PLAN_VIEW</resourceType>
@ -982,7 +982,7 @@ ModFamL| |N|Winter: PType Family| |OTHER | | \
<resource>
<loadProperties xsi:type="gridLoadProperties" displayType="IMAGE" loadWithoutData="false">
<capabilities>
<capability xsi:type="imagingCapability" alpha="1.0" interpolationState="true" brightness="1.0" contrast="1.0"/>
<capability xsi:type="imagingCapability" alpha="1.0" interpolationState="true" brightness="0.5" contrast="1.0"/>
<capability xsi:type="outlineCapability" lineStyle="SOLID" outlineOn="true" outlineWidth="1"/>
</capabilities>
<resourceType>PLAN_VIEW</resourceType>

View file

@ -26,7 +26,7 @@ ModFamL| |N|Winter: PType Family| |OTHER | | \
<loadProperties xsi:type="gridLoadProperties" displayType="CONTOUR" loadWithoutData="false">
<capabilities>
<capability xsi:type="outlineCapability" lineStyle="SOLID" outlineOn="true" outlineWidth="1"/>
<capability xsi:type="imagingCapability" alpha="1.0" interpolationState="true" brightness="1.0" contrast="1.0"/>
<capability xsi:type="imagingCapability" alpha="1.0" interpolationState="true" brightness="0.5" contrast="1.0"/>
</capabilities>
<resourceType>PLAN_VIEW</resourceType>
</loadProperties>
@ -61,7 +61,7 @@ ModFamL| |N|Winter: PType Family| |OTHER | | \
<loadProperties xsi:type="gridLoadProperties" displayType="IMAGE" loadWithoutData="true">
<capabilities>
<capability xsi:type="outlineCapability" lineStyle="SOLID" outlineOn="true" outlineWidth="1"/>
<capability xsi:type="imagingCapability" alpha="1.0" interpolationState="true" brightness="1.0" contrast="1.0"/></capabilities>
<capability xsi:type="imagingCapability" alpha="1.0" interpolationState="true" brightness="0.5" contrast="1.0"/></capabilities>
<resourceType>PLAN_VIEW</resourceType>
</loadProperties>
<properties isSystemResource="false" isBlinking="false" isMapLayer="false" isHoverOn="false" isVisible="false">
@ -94,7 +94,7 @@ ModFamL| |N|Winter: PType Family| |OTHER | | \
<loadProperties xsi:type="gridLoadProperties" displayType="CONTOUR" loadWithoutData="true">
<capabilities>
<capability xsi:type="outlineCapability" lineStyle="SOLID" outlineOn="true" outlineWidth="1"/>
<capability xsi:type="imagingCapability" alpha="1.0" interpolationState="true" brightness="1.0" contrast="1.0"/></capabilities>
<capability xsi:type="imagingCapability" alpha="1.0" interpolationState="true" brightness="0.5" contrast="1.0"/></capabilities>
<resourceType>PLAN_VIEW</resourceType>
</loadProperties>
<properties isSystemResource="false" isBlinking="false" isMapLayer="false" isHoverOn="false" isVisible="false">
@ -127,7 +127,7 @@ ModFamL| |N|Winter: PType Family| |OTHER | | \
<loadProperties xsi:type="gridLoadProperties" displayType="IMAGE" loadWithoutData="true">
<capabilities>
<capability xsi:type="outlineCapability" lineStyle="SOLID" outlineOn="true" outlineWidth="1"/>
<capability xsi:type="imagingCapability" alpha="1.0" interpolationState="true" brightness="1.0" contrast="1.0"/></capabilities>
<capability xsi:type="imagingCapability" alpha="1.0" interpolationState="true" brightness="0.5" contrast="1.0"/></capabilities>
<resourceType>PLAN_VIEW</resourceType>
</loadProperties>
<properties isSystemResource="false" isBlinking="false" isMapLayer="false" isHoverOn="false" isVisible="true">
@ -505,7 +505,7 @@ ModFamL| |N|Winter: PType Family| |OTHER | | \
<loadProperties xsi:type="gridLoadProperties" displayType="IMAGE" loadWithoutData="false">
<capabilities>
<capability xsi:type="outlineCapability" lineStyle="SOLID" outlineOn="true" outlineWidth="1"/>
<capability xsi:type="imagingCapability" alpha="1.0" interpolationState="true" brightness="1.0" contrast="1.0"/>
<capability xsi:type="imagingCapability" alpha="1.0" interpolationState="true" brightness="0.5" contrast="1.0"/>
</capabilities>
<resourceType>PLAN_VIEW</resourceType>
</loadProperties>
@ -690,7 +690,7 @@ ModFamL| |N|Winter: PType Family| |OTHER | | \
<resource>
<loadProperties xsi:type="gridLoadProperties" displayType="IMAGE" loadWithoutData="false">
<capabilities>
<capability xsi:type="imagingCapability" alpha="1.0" interpolationState="true" brightness="1.0" contrast="1.0"/>
<capability xsi:type="imagingCapability" alpha="1.0" interpolationState="true" brightness="0.5" contrast="1.0"/>
<capability xsi:type="outlineCapability" lineStyle="SOLID" outlineOn="true" outlineWidth="1"/>
</capabilities>
<resourceType>PLAN_VIEW</resourceType>
@ -977,7 +977,7 @@ ModFamL| |N|Winter: PType Family| |OTHER | | \
<resource>
<loadProperties xsi:type="gridLoadProperties" displayType="IMAGE" loadWithoutData="false">
<capabilities>
<capability xsi:type="imagingCapability" alpha="1.0" interpolationState="true" brightness="1.0" contrast="1.0"/>
<capability xsi:type="imagingCapability" alpha="1.0" interpolationState="true" brightness="0.5" contrast="1.0"/>
<capability xsi:type="outlineCapability" lineStyle="SOLID" outlineOn="true" outlineWidth="1"/>
</capabilities>
<resourceType>PLAN_VIEW</resourceType>

View file

@ -106,7 +106,7 @@ ModFamM| |N|Winter: Big3 Qn Family| |OTHER | | \
<resource>
<loadProperties xsi:type="gridLoadProperties" displayType="IMAGE" loadWithoutData="false">
<capabilities>
<capability xsi:type="imagingCapability" alpha="1.0" interpolationState="true" brightness="0.8" contrast="1.0"/>
<capability xsi:type="imagingCapability" alpha="1.0" interpolationState="true" brightness="0.5" contrast="1.0"/>
<capability xsi:type="outlineCapability" lineStyle="SOLID" outlineOn="true" outlineWidth="1"/>
</capabilities>
<resourceType>PLAN_VIEW</resourceType>
@ -373,7 +373,7 @@ ModFamM| |N|Winter: Big3 Qn Family| |OTHER | | \
<resource>
<loadProperties xsi:type="gridLoadProperties" displayType="IMAGE" loadWithoutData="false">
<capabilities>
<capability xsi:type="imagingCapability" alpha="1.0" interpolationState="true" brightness="0.8" contrast="1.0"/>
<capability xsi:type="imagingCapability" alpha="1.0" interpolationState="true" brightness="0.5" contrast="1.0"/>
<capability xsi:type="outlineCapability" lineStyle="SOLID" outlineOn="true" outlineWidth="1"/>
</capabilities>
<resourceType>PLAN_VIEW</resourceType>
@ -640,7 +640,7 @@ ModFamM| |N|Winter: Big3 Qn Family| |OTHER | | \
<resource>
<loadProperties xsi:type="gridLoadProperties" displayType="IMAGE" loadWithoutData="false">
<capabilities>
<capability xsi:type="imagingCapability" alpha="1.0" interpolationState="true" brightness="0.8" contrast="1.0"/>
<capability xsi:type="imagingCapability" alpha="1.0" interpolationState="true" brightness="0.5" contrast="1.0"/>
<capability xsi:type="outlineCapability" lineStyle="SOLID" outlineOn="true" outlineWidth="1"/>
</capabilities>
<resourceType>PLAN_VIEW</resourceType>
@ -909,7 +909,7 @@ ModFamM| |N|Winter: Big3 Qn Family| |OTHER | | \
<resource>
<loadProperties xsi:type="gridLoadProperties" displayType="IMAGE" loadWithoutData="false">
<capabilities>
<capability xsi:type="imagingCapability" alpha="1.0" interpolationState="true" brightness="0.8" contrast="1.0"/>
<capability xsi:type="imagingCapability" alpha="1.0" interpolationState="true" brightness="0.5" contrast="1.0"/>
<capability xsi:type="outlineCapability" lineStyle="SOLID" outlineOn="true" outlineWidth="1"/>
</capabilities>
<resourceType>PLAN_VIEW</resourceType>

View file

@ -31,7 +31,7 @@ ModFamV | | N|Conv: Severe Type Family| | OTHER| | \
<loadProperties xsi:type="gridLoadProperties" displayType="IMAGE" loadWithoutData="true">
<capabilities>
<capability xsi:type="imagingCapability" alpha="1.0" interpolationState="false" brightness="1.0" contrast="1.0"/>
<capability xsi:type="imagingCapability" alpha="1.0" interpolationState="false" brightness="0.5" contrast="1.0"/>
</capabilities>
<resourceType>PLAN_VIEW</resourceType>
</loadProperties>
@ -66,7 +66,7 @@ ModFamV | | N|Conv: Severe Type Family| | OTHER| | \
<loadProperties xsi:type="gridLoadProperties" displayType="IMAGE" loadWithoutData="true">
<capabilities>
<capability xsi:type="imagingCapability" alpha="1.0" interpolationState="false" brightness="1.0" contrast="1.0"/>
<capability xsi:type="imagingCapability" alpha="1.0" interpolationState="false" brightness="0.5" contrast="1.0"/>
</capabilities>
<resourceType>PLAN_VIEW</resourceType>
</loadProperties>

View file

@ -29,7 +29,7 @@
<loadProperties xsi:type="gridLoadProperties" displayType="IMAGE" loadWithoutData="true">
<capabilities>
<capability xsi:type="imagingCapability" alpha="1.0" interpolationState="false" brightness="1.0" contrast="1.0"/>
<capability xsi:type="imagingCapability" alpha="1.0" interpolationState="false" brightness="0.5" contrast="1.0"/>
</capabilities>
<resourceType>PLAN_VIEW</resourceType>
</loadProperties>
@ -64,7 +64,7 @@
<loadProperties xsi:type="gridLoadProperties" displayType="IMAGE" loadWithoutData="true">
<capabilities>
<capability xsi:type="imagingCapability" alpha="1.0" interpolationState="false" brightness="1.0" contrast="1.0"/>
<capability xsi:type="imagingCapability" alpha="1.0" interpolationState="false" brightness="0.5" contrast="1.0"/>
</capabilities>
<resourceType>PLAN_VIEW</resourceType>
</loadProperties>

View file

@ -75,7 +75,7 @@
<loadProperties xsi:type="gridLoadProperties" displayType="CONTOUR">
<capabilities>
<capability xsi:type="displayTypeCapability" displayType="IMAGE"/>
<capability xsi:type="imagingCapability" alpha="1.0" interpolationState="true" brightness="1.0" contrast="1.0"/>
<capability xsi:type="imagingCapability" alpha="1.0" interpolationState="true" brightness="0.5" contrast="1.0"/>
</capabilities>
</loadProperties>
<properties isSystemResource="false" isBlinking="false"

View file

@ -5,7 +5,7 @@
<resource>
<loadProperties xsi:type="gridLoadProperties" displayType="IMAGE" loadWithoutData="false">
<capabilities>
<capability xsi:type="imagingCapability" alpha="1.0" interpolationState="true" brightness="1.0" contrast="1.0" />
<capability xsi:type="imagingCapability" alpha="1.0" interpolationState="true" brightness="0.5" contrast="1.0" />
</capabilities>
<resourceType>PLAN_VIEW</resourceType>
</loadProperties>
@ -83,7 +83,7 @@
displayType="IMAGE" loadWithoutData="false">
<capabilities>
<capability xsi:type="imagingCapability" alpha="1.0"
interpolationState="true" brightness="1.0" contrast="1.0" />
interpolationState="true" brightness="0.5" contrast="1.0" />
</capabilities>
<resourceType>PLAN_VIEW</resourceType>
</loadProperties>
@ -165,7 +165,7 @@
<resource>
<loadProperties xsi:type="gridLoadProperties" displayType="IMAGE" loadWithoutData="false">
<capabilities>
<capability xsi:type="imagingCapability" alpha="1.0" interpolationState="true" brightness="1.0" contrast="1.0" />
<capability xsi:type="imagingCapability" alpha="1.0" interpolationState="true" brightness="0.5" contrast="1.0" />
</capabilities>
<resourceType>PLAN_VIEW</resourceType>
</loadProperties>
@ -209,7 +209,7 @@
displayType="IMAGE" loadWithoutData="false">
<capabilities>
<capability xsi:type="imagingCapability" alpha="1.0"
interpolationState="true" brightness="1.0" contrast="1.0" />
interpolationState="true" brightness="0.5" contrast="1.0" />
</capabilities>
<resourceType>PLAN_VIEW</resourceType>
</loadProperties>

View file

@ -8,7 +8,7 @@
<resourceType>PLAN_VIEW</resourceType>
<perspectiveProperty xsi:type="d2dLoadProperties" timeMatchBasis="true" loadMode="VALID_TIME_SEQ"/>
<capabilities>
<capability xsi:type="imagingCapability" alpha="1.0" interpolationState="true" brightness="1.0" contrast="1.0"/>
<capability xsi:type="imagingCapability" alpha="1.0" interpolationState="true" brightness="0.5" contrast="1.0"/>
<capability xsi:type="colorableCapability" colorAsString="white"/>
<capability xsi:type="displayTypeCapability" displayType="IMAGE"/>
</capabilities>

View file

@ -57,7 +57,7 @@
</colorMapParameters>
</capability>
<capability xsi:type="displayTypeCapability" displayType="IMAGE"/>
<capability xsi:type="imagingCapability" alpha="1.0" interpolationState="true" brightness="1.0" contrast="1.0"/>
<capability xsi:type="imagingCapability" alpha="1.0" interpolationState="true" brightness="0.5" contrast="1.0"/>
<capability xsi:type="magnificationCapability" magnification="1.0"/>
<capability xsi:type="colorableCapability" colorAsString="violet"/>
<capability xsi:type="outlineCapability" lineStyle="DEFAULT" outlineOn="true" outlineWidth="1"/>

View file

@ -6,6 +6,8 @@ import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
import java.util.HashSet;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.Set;
@ -56,6 +58,7 @@ import com.vividsolutions.jts.geom.Point;
* Mar 5, 2013 1600 jsanchez Used AdjustAngle instead of AbstractStormTrackResource to handle angle adjusting.
* Mar 26, 2013 1819 jsanchez Allowed points to be not be based on point source inclusion constraints.
* May 7, 2015 ASM #17438 D. Friedman Clean up debug and performance logging.
* Jul 9, 2015 ASM #16769 mgamazaychikov Add filtering out pathcast data features based on the inclusion criteria.
*
* </pre>
*
@ -71,7 +74,7 @@ abstract public class AbstractDbSourceDataAdaptor {
private static final String GEOM_FIELD = "the_geom";
private static UnitConverter meterSqToKmSq = SI.METRE.times(SI.METRE)
protected static UnitConverter meterSqToKmSq = SI.METRE.times(SI.METRE)
.getConverterTo(SI.KILOMETRE.times(SI.KILOMETRE));
protected Set<String> undatabasedSortableFields = new HashSet<String>(
@ -240,7 +243,7 @@ abstract public class AbstractDbSourceDataAdaptor {
* @param geom
* @return
*/
private boolean includeArea(PointSourceConfiguration pointConfig,
protected boolean includeArea(PointSourceConfiguration pointConfig,
Geometry geom) {
String inclusionAndOr = pointConfig.getInclusionAndOr();
double inclusionPercent = pointConfig.getInclusionPercent();
@ -296,6 +299,18 @@ abstract public class AbstractDbSourceDataAdaptor {
}
}
// filter out features based on the inclusion criteria
List<SpatialQueryResult> ptFeaturesList = new LinkedList<SpatialQueryResult>(
Arrays.asList(this.ptFeatures));
Iterator<SpatialQueryResult> iter = ptFeaturesList.iterator();
while (iter.hasNext()) {
SpatialQueryResult pf = iter.next();
if (!includeArea(pathcastConfiguration, pf.geometry)) {
iter.remove();
}
}
SpatialQueryResult[] ptFeaturesFiltered = ptFeaturesList.toArray(new SpatialQueryResult[ptFeaturesList.size()]);
Geometry localPCGeom = null;
if (pcGeom != null) {
localPCGeom = JTS.transform(pcGeom, latLonToLocal);
@ -303,8 +318,8 @@ abstract public class AbstractDbSourceDataAdaptor {
// Find closest points
List<ClosestPoint> points = new ArrayList<ClosestPoint>(
ptFeatures.length);
for (SpatialQueryResult pointRslt : ptFeatures) {
ptFeaturesFiltered.length);
for (SpatialQueryResult pointRslt : ptFeaturesFiltered) {
Geometry localPt = (Geometry) pointRslt.attributes
.get(transformedKey);
double minDist = Double.MAX_VALUE;

View file

@ -90,6 +90,7 @@ import com.vividsolutions.jts.geom.Polygon;
* Apr 28, 2015 RODO #4027 randerso Expunged Calendar from ActiveTableRecord
* May 7, 2015 ASM #17438 D. Friedman Clean up debug and performance logging.
* Jun 04, 2015 RODO #4522 randerso Added proper primary key to ActiveTableRecord
* Jul 16, 2015 ASM #17741 D. Friedman Use acceptable timestamp format in query
* </pre>
*
* @author jsanchez
@ -280,10 +281,10 @@ public class WatchUtil {
DbQueryRequest request = new DbQueryRequest();
request.setEntityClass(entityClass);
request.addConstraint(START_TIME_FIELD,
new RequestConstraint(TimeUtil.formatDate(startConstraintTime),
new RequestConstraint(TimeUtil.formatToSqlTimestamp(startConstraintTime),
ConstraintType.LESS_THAN_EQUALS));
request.addConstraint(END_TIME_FIELD,
new RequestConstraint(TimeUtil.formatDate(simulatedTime),
new RequestConstraint(TimeUtil.formatToSqlTimestamp(simulatedTime),
ConstraintType.GREATER_THAN_EQUALS));
request.addConstraint("phensig",
new RequestConstraint(phenSig.toString(), ConstraintType.IN));

View file

@ -58,6 +58,8 @@ import com.raytheon.viz.warngen.gis.AffectedAreas;
* May 1, 2014 DR 16627 Qinglu Lin Added hasStateAbbrev(), isOtherType(), lockListOfNames(), and updated lock().
* May 13, 2014 DR 17177 Qinglu Lin Updated secondBullet().
* May 29, 2015 4442 randerso Fixed WarnGen text locking to work with mixed case
* Jul 10, 2015 DR 17314 Qinglu Lin Updated firstBullet().
* Jul 17, 2015 DR 17314 D. Friedman Fix string replacement in firstBullet().
*
* </pre>
*
@ -213,9 +215,15 @@ abstract public class AbstractLockingBehavior {
// should not be locked. For some reason, this differs from followups as
// stated in DR 15110. Need verification from NWS. This is a variance?
if (!isMarineProduct()) {
StringBuilder newText = new StringBuilder(firstBulletText.length() + 1024);
Matcher m = null;
for (String line : firstBulletText.split("\\n")) {
boolean first = true;
for (String line : firstBulletText.split("\\n", -1)) {
if (first) {
first = false;
} else {
newText.append('\n');
}
if (immediateCausePtrn != null) {
// immediate cause
m = immediateCausePtrn.matcher(line);
@ -223,17 +231,23 @@ abstract public class AbstractLockingBehavior {
String i = line.replace(line,
WarnGenPatterns.LOCK_START + line
+ WarnGenPatterns.LOCK_END);
firstBulletText = firstBulletText.replace(line, i);
newText.append(i);
continue;
}
}
int endIndex = line.indexOf(" IN ");
String textForSearch = null;
if (endIndex == -1)
textForSearch = line;
else
textForSearch = line.substring(0, endIndex);
for (AffectedAreas affectedArea : affectedAreas) {
String name = affectedArea.getName();
String areaNotation = affectedArea.getAreaNotation();
String parentRegion = affectedArea.getParentRegion();
if ((name != null) && (name.trim().length() != 0)
&& line.contains(name)) {
&& textForSearch.contains(name)) {
String t = line;
if (!hasBeenLocked(line, name)) {
t = t.replace(name, WarnGenPatterns.LOCK_START
@ -261,18 +275,20 @@ abstract public class AbstractLockingBehavior {
}
if (validate(t)) {
firstBulletText = firstBulletText.replace(line, t);
line = t;
}
break;
}
}
newText.append(line);
}
firstBulletText = newText.toString();
}
Matcher m = WarnGenPatterns.firstBulletPtrn.matcher(firstBulletText);
firstBulletText = m.replaceAll(WarnGenPatterns.REPLACEMENT);
this.text = text.replace(text.substring(start, end), firstBulletText);
this.text = new StringBuffer(text).replace(start, end, firstBulletText).toString();
}
/**

View file

@ -9,11 +9,15 @@ Require-Bundle: org.eclipse.ui,
com.raytheon.uf.viz.core,
com.raytheon.viz.ui,
com.raytheon.viz.hydrocommon;bundle-version="1.10.13",
org.postgres;bundle-version="9.3.5"
org.postgres;bundle-version="9.3.5",
com.raytheon.uf.viz.application;bundle-version="1.14.0",
com.raytheon.uf.viz.personalities.cave;bundle-version="1.15.0",
com.raytheon.viz.ui.personalities.awips;bundle-version="1.12.1174"
Bundle-ActivationPolicy: lazy
Bundle-RequiredExecutionEnvironment: JavaSE-1.7
Import-Package: com.raytheon.uf.common.ohd,
com.raytheon.uf.common.time,
com.raytheon.uf.common.time.util,
com.raytheon.uf.common.util
com.raytheon.uf.common.util,
com.raytheon.viz.ui.personalities.awips
Bundle-ClassPath: com.raytheon.viz.xdat.jar

Some files were not shown because too many files have changed in this diff Show more