Merge branch 'master_14.3.1' into master_14.3.2
Conflicts: edexOsgi/com.raytheon.uf.edex.activetable/src/com/raytheon/uf/edex/activetable/ActiveTable.java Former-commit-id:07076f91aa
[formerly 155801c3d418b6deb7e17ffb04c963a80d092c5a] Former-commit-id:1e4522ddd2
This commit is contained in:
commit
3c6247522e
32 changed files with 1872 additions and 1151 deletions
|
@ -58,6 +58,7 @@ import com.vividsolutions.jts.geom.impl.PackedCoordinateSequenceFactory;
|
|||
* ------------ ---------- ----------- --------------------------
|
||||
* Aug 10, 2011 randerso Initial creation
|
||||
* Apr 17, 2014 #2997 randerso Moved buildBoundingGeometry up from DbMapResource
|
||||
* Jan 29, 2015 #4062 randerso Added a buffer to bounding Geometry
|
||||
*
|
||||
* </pre>
|
||||
*
|
||||
|
@ -272,6 +273,10 @@ public abstract class AbstractDbMapResource<T extends AbstractDbMapResourceData,
|
|||
.handle(Priority.PROBLEM, e1.getLocalizedMessage(), e1);
|
||||
}
|
||||
|
||||
// Add just a little buffer to get past EnvelopeIntersection limiting
|
||||
// us to 179.99999 instead of going clear to 180
|
||||
g = g.buffer(0.0001);
|
||||
|
||||
// long t1 = System.currentTimeMillis();
|
||||
// System.out.println("buildBoundingGeometry took: " + (t1 - t0));
|
||||
return g;
|
||||
|
|
|
@ -20,6 +20,7 @@
|
|||
package com.raytheon.viz.core.rsc.jts;
|
||||
|
||||
import org.eclipse.swt.graphics.RGB;
|
||||
import org.geotools.referencing.operation.projection.ProjectionException;
|
||||
import org.opengis.referencing.FactoryException;
|
||||
|
||||
import com.raytheon.uf.common.geospatial.ReferencedGeometry;
|
||||
|
@ -54,6 +55,7 @@ import com.vividsolutions.jts.geom.prep.PreparedGeometryFactory;
|
|||
* Oct 24, 2006 chammack Initial Creation.
|
||||
* Feb 14, 2014 2804 mschenke Rewrote to move clipping from GLWireframeShape2D to here
|
||||
* Apr 21, 2014 2997 randerso Improved error handling in handle(ReferencedGeometry, JTSGeometryData)
|
||||
* Jan 29, 2015 4062 randerso Don't throw errors for ProjectionExceptions
|
||||
*
|
||||
* </pre>
|
||||
*
|
||||
|
@ -476,6 +478,8 @@ public class JTSCompiler {
|
|||
corrector.correct(geom.asLatLon()));
|
||||
} catch (FactoryException e) {
|
||||
throw new VizException("Error creating transform to Lat/Lon", e);
|
||||
} catch (ProjectionException e) {
|
||||
// ignore this exception so it doesn't cause pop ups
|
||||
} catch (Exception e) {
|
||||
throw new VizException(
|
||||
"Error transforming geometry into Lat/Lon", e);
|
||||
|
@ -487,6 +491,8 @@ public class JTSCompiler {
|
|||
} catch (FactoryException e) {
|
||||
throw new VizException(
|
||||
"Error creating transform to descriptor pixel space", e);
|
||||
} catch (ProjectionException e) {
|
||||
// ignore this exception so it doesn't cause pop ups
|
||||
} catch (Exception e) {
|
||||
throw new VizException(
|
||||
"Error transforming geometry into descriptor pixel space",
|
||||
|
|
|
@ -43,6 +43,7 @@ import com.raytheon.viz.mpe.util.ReadTemperatureStationList;
|
|||
* Date Ticket# Engineer Description
|
||||
* ------------ ---------- ----------- --------------------------
|
||||
* Mar 31, 2009 snaples Initial creation
|
||||
* Feb 5, 2015 17101 snaples Updated max_stations to use size of dqc.precip_stations.
|
||||
*
|
||||
* </pre>
|
||||
*
|
||||
|
@ -72,13 +73,9 @@ public class GroupEditCalls {
|
|||
|
||||
int pcpn_time = dqc.pcpn_time;
|
||||
|
||||
ReadPrecipStationList rp = new ReadPrecipStationList();
|
||||
int max_stations = dqc.precip_stations.size();
|
||||
|
||||
ReadTemperatureStationList rt = new ReadTemperatureStationList();
|
||||
|
||||
int max_stations = rp.getNumPstations();
|
||||
|
||||
int max_tstations = rt.getNumTstations();
|
||||
int max_tstations = dqc.temperature_stations.size();
|
||||
|
||||
public void apply_group()
|
||||
|
||||
|
|
|
@ -23,6 +23,7 @@
|
|||
* Date Ticket# Engineer Description
|
||||
* ------------ ---------- ----------- --------------------------
|
||||
* Jan 7, 2015 16954 cgobs Fix for cv_use issue - using getFieldName() in certain parts.
|
||||
* Feb 4, 2015 17094 cgobs Fix for fieldType being too long for mapx_field_type column in RWResult table.
|
||||
* </pre>
|
||||
**/
|
||||
package com.raytheon.viz.mpe.ui.actions;
|
||||
|
@ -33,8 +34,10 @@ import java.io.IOException;
|
|||
import java.text.SimpleDateFormat;
|
||||
import java.util.Arrays;
|
||||
import java.util.Date;
|
||||
import java.util.HashMap;
|
||||
import java.util.Iterator;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import javax.imageio.ImageIO;
|
||||
import javax.imageio.ImageWriter;
|
||||
|
@ -337,7 +340,10 @@ public class SaveBestEstimate {
|
|||
Rwresult pRWResultNode = pRWResultHead.get(0);
|
||||
|
||||
/* Update the elements in the RWResult node. */
|
||||
pRWResultNode.setMapxFieldType(fldtype);
|
||||
|
||||
fldtype = checkAndModifyMapxFieldType(fldtype);
|
||||
|
||||
pRWResultNode.setMapxFieldType(fldtype.toLowerCase());
|
||||
pRWResultNode.setAutoSave(asave);
|
||||
pRWResultNode.setDrawPrecip(drpr);
|
||||
pRWResultNode.setLastSaveTime(SimulatedTime.getSystemTime()
|
||||
|
@ -359,4 +365,32 @@ public class SaveBestEstimate {
|
|||
}
|
||||
|
||||
}
|
||||
|
||||
private static String checkAndModifyMapxFieldType(String fieldType) {
|
||||
|
||||
// This method changes fieldType to lowercase.
|
||||
// It also shortens fieldTypes as needed to fit into the mapx_field_type column in the RWResult table.
|
||||
// Note: the mapx_field_type column is informational only. It is not used by the code
|
||||
// other than reading and writing from and to the database.
|
||||
|
||||
String newFieldType = null;
|
||||
String lowerCaseFieldType = fieldType.toLowerCase();
|
||||
|
||||
final Map<String,String> conversionTable = new HashMap<String , String>();
|
||||
|
||||
conversionTable.put("localfield1", "localfld1");
|
||||
conversionTable.put("localfield2", "localfld2");
|
||||
conversionTable.put("localfield3", "localfld3");
|
||||
|
||||
conversionTable.put("avgrdmosaic", "avgrdmos");
|
||||
conversionTable.put("maxrdmosaic", "maxrdmos");
|
||||
|
||||
|
||||
newFieldType = conversionTable.get(lowerCaseFieldType);
|
||||
if (newFieldType == null)
|
||||
{
|
||||
newFieldType = lowerCaseFieldType;
|
||||
}
|
||||
return newFieldType;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -41,6 +41,7 @@ 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.
|
||||
*
|
||||
* </pre>
|
||||
*
|
||||
|
@ -51,8 +52,7 @@ import com.raytheon.viz.mpe.util.DailyQcUtils.Station;
|
|||
public class BadValues {
|
||||
BufferedReader in = null;
|
||||
DailyQcUtils dqc = DailyQcUtils.getInstance();
|
||||
ReadPrecipStationList rp = new ReadPrecipStationList();
|
||||
private int max_stations = rp.getNumPstations();
|
||||
private int max_stations = dqc.precip_stations.size();
|
||||
|
||||
|
||||
public void read_bad_values(String precd, int m) {
|
||||
|
@ -194,7 +194,7 @@ public class BadValues {
|
|||
// 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 %f", bad_values[i].hb5,
|
||||
ibuf = String.format("%s %s %d %4.2f", bad_values[i].hb5,
|
||||
bad_values[i].parm, bad_values[i].quart,
|
||||
bad_values[i].fvalue);
|
||||
out.write(ibuf);
|
||||
|
|
|
@ -41,6 +41,7 @@ import com.raytheon.viz.mpe.util.DailyQcUtils.Station;
|
|||
* Date Ticket# Engineer Description
|
||||
* ------------ ---------- ----------- --------------------------
|
||||
* Mar 11, 2009 snaples Initial creation
|
||||
* Feb 5, 2015 17101 snaples Updated max_stations to use size of dqc.precip_stations.
|
||||
*
|
||||
* </pre>
|
||||
*
|
||||
|
@ -68,8 +69,7 @@ public class GetBadSnotel {
|
|||
/* Retrieve the number of days to QC data for. */
|
||||
num_qc_days = dqc.qcDays;
|
||||
|
||||
ReadPrecipStationList pl = new ReadPrecipStationList();
|
||||
int max_stations = pl.getNumPstations();
|
||||
int max_stations = dqc.precip_stations.size();
|
||||
// Pdata[] pdata = DailyQcUtils.pdata;
|
||||
|
||||
for (j = 0; j < num_qc_days; j++) {
|
||||
|
|
|
@ -36,6 +36,7 @@ import com.raytheon.viz.mpe.util.DailyQcUtils.Station;
|
|||
* Date Ticket# Engineer Description
|
||||
* ------------ ---------- ----------- --------------------------
|
||||
* Feb 23, 2009 snaples Initial creation
|
||||
* Feb 3, 2015 16993 snaples Fixed if condition on cparm.
|
||||
*
|
||||
* </pre>
|
||||
*
|
||||
|
@ -133,8 +134,8 @@ public class InitPrecipClimo {
|
|||
continue;
|
||||
}
|
||||
|
||||
if (tokens[1].equalsIgnoreCase("PPMPBCM")
|
||||
&& tokens[1].equalsIgnoreCase("PPMRZCM")) {
|
||||
if (!(tokens[1].equalsIgnoreCase("PPMPBCM"))
|
||||
&& !(tokens[1].equalsIgnoreCase("PPMRZCM"))) {
|
||||
line = in.readLine();
|
||||
++record_count;
|
||||
continue;
|
||||
|
|
|
@ -44,6 +44,7 @@ import com.raytheon.viz.mpe.core.MPEDataManager;
|
|||
* ------------ ---------- ----------- --------------------------
|
||||
* Feb 24, 2009 snaples Initial creation
|
||||
* April , 2012 8672 lbousaidi fixed the reading of the PRISM data.
|
||||
* Feb 3, 2015 16993 snaples fixed color scale data conversion issue.
|
||||
* </pre>
|
||||
*
|
||||
* @author snaples
|
||||
|
@ -90,9 +91,8 @@ public class MeanMonthlyPrecip {
|
|||
displayUnit = NonSI.INCH;
|
||||
dataUnit = SI.MILLIMETER;
|
||||
cmc.setDisplayUnit(displayUnit);
|
||||
cmc.setColorMapUnit(SI.MILLIMETER);
|
||||
cmc.setDataUnit(dataUnit);
|
||||
UnitConverter dataToImage = cmc.getColorMapToDisplayConverter();//cmc.getDataToImageConverter();
|
||||
UnitConverter dataToImage = cmc.getDataToImageConverter();
|
||||
|
||||
/*
|
||||
* Loop over the months. Determine for which months PRISM data are
|
||||
|
|
|
@ -73,8 +73,7 @@ public class ReadPrecipStationList {
|
|||
e.printStackTrace();
|
||||
}
|
||||
|
||||
ReadPrecipStationList.max_pstations = dqc.precip_stations
|
||||
.size();
|
||||
max_pstations = dqc.precip_stations.size();
|
||||
|
||||
return dqc.precip_stations;
|
||||
|
||||
|
|
71
edexOsgi/build.edex/esb/bin/ndmMenuIngester.sh
Normal file
71
edexOsgi/build.edex/esb/bin/ndmMenuIngester.sh
Normal file
|
@ -0,0 +1,71 @@
|
|||
#!/bin/bash
|
||||
##
|
||||
# This software was developed and / or modified by Raytheon Company,
|
||||
# pursuant to Contract DG133W-05-CQ-1067 with the US Government.
|
||||
#
|
||||
# U.S. EXPORT CONTROLLED TECHNICAL DATA
|
||||
# This software product contains export-restricted data whose
|
||||
# export/transfer/disclosure is restricted by U.S. law. Dissemination
|
||||
# to non-U.S. persons whether in the United States or abroad requires
|
||||
# an export license or other authorization.
|
||||
#
|
||||
# Contractor Name: Raytheon Company
|
||||
# Contractor Address: 6825 Pine Street, Suite 340
|
||||
# Mail Stop B8
|
||||
# Omaha, NE 68106
|
||||
# 402.291.0100
|
||||
#
|
||||
# See the AWIPS II Master Rights File ("Master Rights File.pdf") for
|
||||
# further licensing information.
|
||||
##
|
||||
# NDM Menu File Ingester
|
||||
|
||||
if [ "$1" == "-help" ];
|
||||
then
|
||||
echo ""
|
||||
echo "ndmMenuIngester.sh <ndmFileDirectory> <ndmMenuFileName>"
|
||||
echo " ndmFileDirectory is the directory holding the ndm files"
|
||||
echo " ndmMenuFileName is the name of the ndm menu file to convert"
|
||||
echo ""
|
||||
echo " Required files: redbookDataKeys.txt, redbookDepictKeys.txt,"
|
||||
echo " redbookProductButtons.txt, and the menu file to convert"
|
||||
exit;
|
||||
fi
|
||||
if [ ! -d "$1" ];
|
||||
then
|
||||
echo "Directory [$1] does not exist!"
|
||||
exit
|
||||
fi
|
||||
|
||||
if [ ! -f "$1/$2" ];
|
||||
then
|
||||
echo "File [$2] does not exist!"
|
||||
exit
|
||||
fi
|
||||
SRC_DIR=$1
|
||||
MENU_FILE=$2
|
||||
path_to_script=`readlink -f $0`
|
||||
dir=$(dirname $path_to_script)
|
||||
dir=$(dirname $dir)
|
||||
AWIPS_HOME=$(dirname $dir)
|
||||
|
||||
# Search for jars
|
||||
EDEX_PLUGINS="$AWIPS_HOME/edex/lib/"
|
||||
JARS=$(find $EDEX_PLUGINS -name "*.jar")
|
||||
|
||||
# Add jars to classpath
|
||||
addSep=false
|
||||
for i in $JARS
|
||||
do
|
||||
if [[ "$addSep" == true ]];
|
||||
then
|
||||
LOCAL_CLASSPATH=$LOCAL_CLASSPATH":"$i
|
||||
else
|
||||
LOCAL_CLASSPATH=$i
|
||||
addSep=true
|
||||
fi
|
||||
done
|
||||
|
||||
JAVA_INSTALL=/awips2/java/
|
||||
${JAVA_INSTALL}/bin/java -classpath $LOCAL_CLASSPATH com.raytheon.uf.edex.plugin.redbook.menu.NdmMenuConverter $SRC_DIR $MENU_FILE
|
||||
|
|
@ -23,7 +23,7 @@
|
|||
</model>
|
||||
|
||||
<model>
|
||||
<name>MPE-Local</name>
|
||||
<name>MPE-Mosaic</name>
|
||||
<center>9</center>
|
||||
<subcenter>0</subcenter>
|
||||
<grid>304</grid>
|
||||
|
@ -50,7 +50,6 @@
|
|||
</process>
|
||||
</model>
|
||||
|
||||
|
||||
<!-- END SUBCENTER 0 -->
|
||||
|
||||
<!-- SUBCENTER 105: San Juan PR WFO -->
|
||||
|
|
|
@ -1201,7 +1201,7 @@ C | 1 | 0 | 4 | | |..|8000F0FF| | 0 | 2
|
|||
<parameter>PLI</parameter>
|
||||
</paramLevelMatches>
|
||||
<contourStyle>
|
||||
<displayUnits label="C">K</displayUnits>
|
||||
<displayUnits>C</displayUnits>
|
||||
<contourLabeling labelSpacing="4">
|
||||
<increment>2</increment>
|
||||
</contourLabeling>
|
||||
|
@ -1212,7 +1212,7 @@ C | 1 | 0 | 4 | | |..|8000F0FF| | 0 | 2
|
|||
<parameter>SLI</parameter>
|
||||
</paramLevelMatches>
|
||||
<contourStyle>
|
||||
<displayUnits label="C">K</displayUnits>
|
||||
<displayUnits>C</displayUnits>
|
||||
<displayFlags>NoPlane</displayFlags>
|
||||
<contourLabeling labelSpacing="4">
|
||||
<increment>2</increment>
|
||||
|
@ -1229,7 +1229,7 @@ C | 1 | 0 | 4 | | |..|8000F0FF|,900| 0 | 2
|
|||
<creatingEntity>Laps</creatingEntity>
|
||||
</paramLevelMatches>
|
||||
<contourStyle>
|
||||
<displayUnits label="C">K</displayUnits>
|
||||
<displayUnits>C</displayUnits>
|
||||
<displayFlags>NoPlane</displayFlags>
|
||||
<contourLabeling labelSpacing="4">
|
||||
<increment>2</increment>
|
||||
|
@ -1244,7 +1244,7 @@ C | 1 | 0 | 4 | | |..|8000F0FF| | 0 | 2
|
|||
<parameter>BLI</parameter>
|
||||
</paramLevelMatches>
|
||||
<contourStyle>
|
||||
<displayUnits label="C">K</displayUnits>
|
||||
<displayUnits>C</displayUnits>
|
||||
<contourLabeling labelSpacing="4">
|
||||
<increment>2</increment>
|
||||
</contourLabeling>
|
||||
|
@ -2771,7 +2771,7 @@ C | 1 | 0 | 4 | | |..|8000F0FF|,,,80 | 0 | 2
|
|||
</paramLevelMatches>
|
||||
<contourStyle>
|
||||
<smoothingDistance>80</smoothingDistance>
|
||||
<displayUnits label="C">K</displayUnits>
|
||||
<displayUnits>C</displayUnits>
|
||||
<displayFlags>NoPlane</displayFlags>
|
||||
<contourLabeling labelSpacing="4">
|
||||
<increment>2</increment>
|
||||
|
|
|
@ -347,7 +347,7 @@
|
|||
<parameter>shWlt</parameter>
|
||||
</paramLevelMatches>
|
||||
<graphStyle>
|
||||
<displayUnits label="C">K</displayUnits>
|
||||
<displayUnits>C</displayUnits>
|
||||
</graphStyle>
|
||||
</styleRule>
|
||||
|
||||
|
|
|
@ -1780,7 +1780,7 @@
|
|||
<parameter>PLI</parameter>
|
||||
</paramLevelMatches>
|
||||
<imageStyle>
|
||||
<displayUnits label="C">K</displayUnits>
|
||||
<displayUnits>C</displayUnits>
|
||||
<range scale="LINEAR">
|
||||
<minValue>-15</minValue>
|
||||
<maxValue>15</maxValue>
|
||||
|
@ -1800,7 +1800,7 @@
|
|||
<parameter>BLI</parameter>
|
||||
</paramLevelMatches>
|
||||
<imageStyle>
|
||||
<displayUnits label="C">K</displayUnits>
|
||||
<displayUnits>C</displayUnits>
|
||||
<range scale="LINEAR">
|
||||
<minValue>-15</minValue>
|
||||
<maxValue>15</maxValue>
|
||||
|
|
|
@ -92,6 +92,11 @@ import com.raytheon.uf.edex.database.query.DatabaseQuery;
|
|||
* Added performance logging
|
||||
* Nov 14, 2014 4953 randerso Moved dumpProductToTempFile into PracticeVtecDecoder
|
||||
* since it had no reason to be in this class
|
||||
* Feb 05, 2015 16942 ryu Fix update of records for sites other than
|
||||
* the home site and its neighbors.
|
||||
* Pass issuance site id to getActiveTable()
|
||||
* in updateActiveTable() so records will
|
||||
* be updated correctly.
|
||||
*
|
||||
* </pre>
|
||||
*
|
||||
|
@ -286,11 +291,13 @@ public class ActiveTable {
|
|||
mode = ActiveTableMode.OPERATIONAL;
|
||||
}
|
||||
|
||||
String issueSiteId = newRecords.get(0).getOfficeid();
|
||||
|
||||
IPerformanceStatusHandler perfStat = PerformanceStatus
|
||||
.getHandler("ActiveTable");
|
||||
ITimer timer = TimeUtil.getTimer();
|
||||
timer.start();
|
||||
List<ActiveTableRecord> activeTable = getActiveTable(siteId, mode);
|
||||
List<ActiveTableRecord> activeTable = getActiveTable(issueSiteId, mode);
|
||||
timer.stop();
|
||||
perfStat.logDuration("getActiveTable", timer.getElapsedTime());
|
||||
|
||||
|
|
|
@ -29,6 +29,7 @@
|
|||
* Dec 12, 2013 2624 rferrel Document Julian time stamp.
|
||||
* May 14, 2014 2881 rferrel Change retention times and data set modifications.
|
||||
* Aug 25, 2014 3537 rferrel Fixed dirPattern in Category Local.
|
||||
* Feb 02, 2015 4066 rferrel Added lightning to Observation category.
|
||||
*
|
||||
* @author rferrel
|
||||
* @version 1.0
|
||||
|
@ -208,7 +209,7 @@
|
|||
<name>Observation</name>
|
||||
<extRetentionHours>168</extRetentionHours>
|
||||
<dataSet>
|
||||
<dirPattern>(airep|binlightning|bufrascat|bufrhdw|bufrmthdw|bufrssmi|lsr|MAROB|maritime|metar|misc_sfc_obs|pirep|sfcobs|shef|svrwx|synoptic)/(\d{4})(\d{2})(\d{2})/(\d{2})</dirPattern>
|
||||
<dirPattern>(airep|binlightning|bufrascat|bufrhdw|bufrmthdw|bufrssmi|entlightning|lsr|MAROB|maritime|metar|misc_sfc_obs|pirep|sfcobs|shef|svrwx|synoptic)/(\d{4})(\d{2})(\d{2})/(\d{2})</dirPattern>
|
||||
<displayLabel>{1}</displayLabel>
|
||||
<dateGroupIndices>2,3,4,5</dateGroupIndices>
|
||||
</dataSet>
|
||||
|
|
|
@ -12,7 +12,8 @@ Require-Bundle: com.raytheon.edex.common,
|
|||
com.raytheon.uf.common.status;bundle-version="1.12.1174",
|
||||
com.raytheon.uf.edex.ndm;bundle-version="1.14.0",
|
||||
com.raytheon.uf.edex.menus;bundle-version="1.0.0",
|
||||
com.raytheon.uf.common.dataplugin.redbook;bundle-version="1.14.0"
|
||||
com.raytheon.uf.common.dataplugin.redbook;bundle-version="1.14.0",
|
||||
org.apache.commons.lang;bundle-version="2.3.0"
|
||||
Export-Package: com.raytheon.uf.edex.plugin.redbook,
|
||||
com.raytheon.uf.edex.plugin.redbook.decoder
|
||||
Bundle-RequiredExecutionEnvironment: JavaSE-1.6
|
||||
|
|
|
@ -47,6 +47,7 @@ import com.raytheon.uf.edex.plugin.redbook.menu.RedbookUaMenuUtil;
|
|||
* Mar 19, 2014 2857 mpduff Implement NCO.
|
||||
* Mar 19, 2014 2859 mpduff Implement MPC.
|
||||
* Mar 19, 2014 2860 mpduff Implement Upper Air.
|
||||
* Jan 28, 2015 4030 mpduff Changed constants to public.
|
||||
*
|
||||
* </pre>
|
||||
*
|
||||
|
@ -60,22 +61,22 @@ public class RedbookMenuSubscriber implements INationalDatasetSubscriber {
|
|||
.getHandler(RedbookMenuSubscriber.class);
|
||||
|
||||
/** Hazard menu file */
|
||||
private static final String HAZARD_MENU_FILE = "RedbookHazardMenus.xml";
|
||||
public static final String HAZARD_MENU_FILE = "RedbookHazardMenus.xml";
|
||||
|
||||
/** HPC menu file */
|
||||
private static final String HPC_MENU_FILE = "RedbookHPCMenus.xml";
|
||||
public static final String HPC_MENU_FILE = "RedbookHPCMenus.xml";
|
||||
|
||||
/** CPC menu file */
|
||||
private static final String CPC_MENU_FILE = "RedbookCPCMenus.xml";
|
||||
public static final String CPC_MENU_FILE = "RedbookCPCMenus.xml";
|
||||
|
||||
/** MPC menu file */
|
||||
private static final String MPC_MENU_FILE = "RedbookMPCMenus.xml";
|
||||
public static final String MPC_MENU_FILE = "RedbookMPCMenus.xml";
|
||||
|
||||
/** NCO menu file */
|
||||
private static final String NCO_MENU_FILE = "RedbookNCOMenus.xml";
|
||||
public static final String NCO_MENU_FILE = "RedbookNCOMenus.xml";
|
||||
|
||||
/** Upper air menu file */
|
||||
private static final String UA_MENU_FILE = "RedbookUAMenus.xml";
|
||||
public static final String UA_MENU_FILE = "RedbookUAMenus.xml";
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
|
|
|
@ -39,6 +39,7 @@ import javax.xml.bind.annotation.XmlElements;
|
|||
* ------------ ---------- ----------- --------------------------
|
||||
* Mar 12, 2014 2855 mpduff Initial creation
|
||||
* Mar 19, 2014 2860 mpduff Added DataUri.
|
||||
* Jan 28, 2015 4030 mpduff Added addMenuEntry method.
|
||||
*
|
||||
* </pre>
|
||||
*
|
||||
|
@ -208,7 +209,7 @@ public class MenuEntry {
|
|||
* @param menuEntryList
|
||||
* the menuEntryList to set
|
||||
*/
|
||||
public void setMenuEntryyList(List<MenuEntry> menuEntryList) {
|
||||
public void setMenuEntryList(List<MenuEntry> menuEntryList) {
|
||||
this.menuEntryList = menuEntryList;
|
||||
}
|
||||
|
||||
|
@ -227,6 +228,18 @@ public class MenuEntry {
|
|||
this.dataUri = dataUri;
|
||||
}
|
||||
|
||||
/**
|
||||
* Add a {@link MenuEntry}
|
||||
*
|
||||
* @param entry
|
||||
*/
|
||||
public void addMenuEntry(MenuEntry entry) {
|
||||
if (this.menuEntryList == null) {
|
||||
menuEntryList = new ArrayList<MenuEntry>();
|
||||
}
|
||||
menuEntryList.add(entry);
|
||||
}
|
||||
|
||||
/*
|
||||
* (non-Javadoc)
|
||||
*
|
||||
|
|
|
@ -39,6 +39,7 @@ import javax.xml.bind.annotation.XmlRootElement;
|
|||
* ------------ ---------- ----------- --------------------------
|
||||
* Mar 07, 2014 2858 mpduff Initial creation.
|
||||
* Mar 17, 2014 2855 mpduff Renamed to RedbookMenusXML.java.
|
||||
* Jan 28, 2015 4030 mpduff Added addMenuEntry method.
|
||||
*
|
||||
* </pre>
|
||||
*
|
||||
|
@ -78,6 +79,10 @@ public class RedbookMenusXML {
|
|||
this.menuEntryList = menuEntryList;
|
||||
}
|
||||
|
||||
public void addMenuEntry(MenuEntry entry) {
|
||||
menuEntryList.add(entry);
|
||||
}
|
||||
|
||||
/*
|
||||
* (non-Javadoc)
|
||||
*
|
||||
|
|
|
@ -0,0 +1,360 @@
|
|||
/**
|
||||
* This software was developed and / or modified by Raytheon Company,
|
||||
* pursuant to Contract DG133W-05-CQ-1067 with the US Government.
|
||||
*
|
||||
* U.S. EXPORT CONTROLLED TECHNICAL DATA
|
||||
* This software product contains export-restricted data whose
|
||||
* export/transfer/disclosure is restricted by U.S. law. Dissemination
|
||||
* to non-U.S. persons whether in the United States or abroad requires
|
||||
* an export license or other authorization.
|
||||
*
|
||||
* Contractor Name: Raytheon Company
|
||||
* Contractor Address: 6825 Pine Street, Suite 340
|
||||
* Mail Stop B8
|
||||
* Omaha, NE 68106
|
||||
* 402.291.0100
|
||||
*
|
||||
* See the AWIPS II Master Rights File ("Master Rights File.pdf") for
|
||||
* further licensing information.
|
||||
**/
|
||||
package com.raytheon.uf.edex.plugin.redbook.menu;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.nio.charset.Charset;
|
||||
import java.nio.file.Files;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import javax.xml.bind.JAXBContext;
|
||||
import javax.xml.bind.Marshaller;
|
||||
|
||||
import org.apache.commons.lang.StringUtils;
|
||||
|
||||
import com.raytheon.uf.edex.plugin.redbook.ingest.RedbookMenuSubscriber;
|
||||
import com.raytheon.uf.edex.plugin.redbook.ingest.xml.MenuEntry;
|
||||
import com.raytheon.uf.edex.plugin.redbook.ingest.xml.MenuEntryType;
|
||||
import com.raytheon.uf.edex.plugin.redbook.ingest.xml.RedbookMenusXML;
|
||||
|
||||
/**
|
||||
* This class is called from /awips2/edex/bin/ndmMenuIngester.sh.
|
||||
*
|
||||
* It reads in the NDM menu files and outputs an A2 version into the NDM
|
||||
* endpoint on edex.
|
||||
*
|
||||
* <pre>
|
||||
*
|
||||
* SOFTWARE HISTORY
|
||||
*
|
||||
* Date Ticket# Engineer Description
|
||||
* ------------ ---------- ----------- --------------------------
|
||||
* Jan 30, 2015 4030 mpduff Initial creation
|
||||
*
|
||||
* </pre>
|
||||
*
|
||||
* @author mpduff
|
||||
* @version 1.0
|
||||
*/
|
||||
|
||||
public class NdmMenuConverter {
|
||||
private static final String WMO = "wmo";
|
||||
|
||||
private static final String OUTPUT_PATH = File.separator + "awips2"
|
||||
+ File.separator + "edex" + File.separator + "data"
|
||||
+ File.separator + "ndm" + File.separator;
|
||||
|
||||
private static final String HPC_FILE = "redbookHPCMenus.txt";
|
||||
|
||||
private static final String CPC_FILE = "redbookCPCMenus.txt";
|
||||
|
||||
private static final String NCO_FILE = "redbookNCOMenus.txt";
|
||||
|
||||
private static final String HAZARDS_FILE = "redbookHazardMenus.txt";
|
||||
|
||||
private static final String MARINE_FILE = "redbookMarineMenus.txt";
|
||||
|
||||
private static final String UPPER_AIR_FILE = "redbookUpperAirMenus.txt";
|
||||
|
||||
private String dataKeysPath;
|
||||
|
||||
private String depictKeysPath;
|
||||
|
||||
private String menuFilePath;
|
||||
|
||||
private String productButtonPath;
|
||||
|
||||
private JAXBContext jax;
|
||||
|
||||
private Marshaller marshaller;
|
||||
|
||||
private File depictFile;
|
||||
|
||||
public NdmMenuConverter() {
|
||||
createContext();
|
||||
}
|
||||
|
||||
public void convert() {
|
||||
RedbookMenusXML menuXml = new RedbookMenusXML();
|
||||
MenuEntry titleMenuEntry;
|
||||
int sepCounter = 0;
|
||||
List<MenuEntry> subMenuList = new ArrayList<MenuEntry>();
|
||||
|
||||
try {
|
||||
File dataFile = new File(this.dataKeysPath);
|
||||
File menuFile = new File(this.menuFilePath);
|
||||
depictFile = new File(this.depictKeysPath);
|
||||
File productButtonFile = new File(this.productButtonPath);
|
||||
|
||||
List<String> dataKeys = Files.readAllLines(dataFile.toPath(),
|
||||
Charset.defaultCharset());
|
||||
List<String> depictKeys = Files.readAllLines(depictFile.toPath(),
|
||||
Charset.defaultCharset());
|
||||
List<String> lines = Files.readAllLines(menuFile.toPath(),
|
||||
Charset.defaultCharset());
|
||||
List<String> productButtonKeys = Files.readAllLines(
|
||||
productButtonFile.toPath(), Charset.defaultCharset());
|
||||
Map<String, String> menuTextMap = getMenuTextMap(productButtonKeys);
|
||||
Map<String, String> dataKeyMap = getSubstitutionMap(dataKeys);
|
||||
|
||||
MenuEntry subMenuEntry = null;
|
||||
|
||||
int subMenuCount = -1;
|
||||
for (String line : lines) {
|
||||
line = line.trim();
|
||||
if (line.startsWith("submenu")) {
|
||||
subMenuCount++;
|
||||
if (line.contains("&")) {
|
||||
line = line.replace("&", "&&");
|
||||
}
|
||||
|
||||
String[] parts = line.split(":");
|
||||
String text = parts[1].replace("\"", "");
|
||||
|
||||
subMenuEntry = new MenuEntry();
|
||||
subMenuEntry.setFile(null);
|
||||
subMenuEntry.setType(MenuEntryType.Submenu);
|
||||
subMenuEntry.setText(text.trim());
|
||||
|
||||
subMenuList.add(subMenuEntry);
|
||||
} else if (line.startsWith("title")) {
|
||||
String[] parts = line.split(":");
|
||||
String text = parts[1].replace("\"", "");
|
||||
titleMenuEntry = new MenuEntry();
|
||||
titleMenuEntry.setFile(null);
|
||||
titleMenuEntry.setType(MenuEntryType.Title);
|
||||
titleMenuEntry.setText(text);
|
||||
titleMenuEntry.setId(text);
|
||||
subMenuList.get(subMenuCount).addMenuEntry(titleMenuEntry);
|
||||
} else if (line.startsWith("productButton")) {
|
||||
String[] parts = line.split(":");
|
||||
MenuEntry me = new MenuEntry();
|
||||
me.setFile(null);
|
||||
me.setType(MenuEntryType.ProductButton);
|
||||
/*
|
||||
* There are certain productButtons in the NCO menu data
|
||||
* keys in the (25000 range) that have data keys that don't
|
||||
* map to anything. This results in those menu items not
|
||||
* being created. The site will need to fix this after
|
||||
* generating the new menus.
|
||||
*/
|
||||
String dataKey = parts[1].trim().substring(0, 4);
|
||||
StringBuilder subValue = new StringBuilder();
|
||||
// Find the matching value
|
||||
for (String depictKeyLine : depictKeys) {
|
||||
if (depictKeyLine.trim().startsWith(dataKey)) {
|
||||
String[] depictKeyParts = depictKeyLine
|
||||
.split("\\|");
|
||||
me.setText(menuTextMap.get(dataKey));
|
||||
me.setId(depictKeyParts[6].trim());
|
||||
subMenuList.get(subMenuCount).addMenuEntry(me);
|
||||
|
||||
String[] subParts = depictKeyParts[2].split(",");
|
||||
MenuEntry subEntry = new MenuEntry();
|
||||
subEntry.setFile(null);
|
||||
subEntry.setType(MenuEntryType.Substitute);
|
||||
subEntry.setKey(WMO);
|
||||
|
||||
for (String subPart : subParts) {
|
||||
for (String key : dataKeyMap.keySet()) {
|
||||
if (key.startsWith(subPart)) {
|
||||
subValue.append(dataKeyMap.get(key))
|
||||
.append(",");
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
String subValueStr = subValue.toString();
|
||||
subValueStr = StringUtils.removeEnd(subValueStr,
|
||||
",");
|
||||
subEntry.setValue(subValueStr);
|
||||
me.addMenuEntry(subEntry);
|
||||
break;
|
||||
}
|
||||
}
|
||||
} else if (line.startsWith("endSubmenu")) {
|
||||
// subMenuList.add(subMenuEntry);
|
||||
MenuEntry closedSubMenu = subMenuList.remove(subMenuCount);
|
||||
subMenuCount--;
|
||||
if (subMenuCount == -1) {
|
||||
menuXml.addMenuEntry(closedSubMenu);
|
||||
} else {
|
||||
subMenuList.get(subMenuCount).addMenuEntry(
|
||||
closedSubMenu);
|
||||
}
|
||||
} else if (line.startsWith("separator")) {
|
||||
MenuEntry sep = new MenuEntry();
|
||||
sep.setFile(null);
|
||||
sep.setType(MenuEntryType.Separator);
|
||||
sep.setId("Separator" + sepCounter++);
|
||||
subMenuList.get(subMenuCount).addMenuEntry(sep);
|
||||
}
|
||||
}
|
||||
|
||||
// Set output file name
|
||||
String inputFileName = menuFile.getName();
|
||||
String outputFileName = null;
|
||||
if (inputFileName.equals(CPC_FILE)) {
|
||||
outputFileName = RedbookMenuSubscriber.CPC_MENU_FILE;
|
||||
} else if (inputFileName.equals(HPC_FILE)) {
|
||||
outputFileName = RedbookMenuSubscriber.HPC_MENU_FILE;
|
||||
} else if (inputFileName.equals(NCO_FILE)) {
|
||||
outputFileName = RedbookMenuSubscriber.NCO_MENU_FILE;
|
||||
} else if (inputFileName.equals(HAZARDS_FILE)) {
|
||||
outputFileName = RedbookMenuSubscriber.HAZARD_MENU_FILE;
|
||||
} else if (inputFileName.equals(MARINE_FILE)) {
|
||||
outputFileName = RedbookMenuSubscriber.MPC_MENU_FILE;
|
||||
} else if (inputFileName.equals(UPPER_AIR_FILE)) {
|
||||
outputFileName = RedbookMenuSubscriber.UA_MENU_FILE;
|
||||
} else {
|
||||
throw new IOException("Error processing file");
|
||||
}
|
||||
|
||||
marshaller.marshal(menuXml, new File(OUTPUT_PATH + outputFileName));
|
||||
} catch (Exception e) {
|
||||
System.err.println("Error occurred processing file: "
|
||||
+ menuFilePath);
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Get a map of menu keys to menu text.
|
||||
*
|
||||
* @param productButtonKeys
|
||||
* List of strings from redbookProductButtons.txt
|
||||
*
|
||||
* @return Map for key -> menu text
|
||||
*/
|
||||
private Map<String, String> getMenuTextMap(List<String> productButtonKeys) {
|
||||
Map<String, String> menuTextMap = new HashMap<String, String>();
|
||||
for (String line : productButtonKeys) {
|
||||
line = line.trim();
|
||||
// Skip comment lines
|
||||
if (line.startsWith("#") || line.trim().length() == 0) {
|
||||
continue;
|
||||
}
|
||||
|
||||
String[] parts = line.split("\\|");
|
||||
menuTextMap.put(parts[0].trim(), parts[2].trim());
|
||||
}
|
||||
|
||||
return menuTextMap;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get a map of key to substitution values.
|
||||
*
|
||||
* @param dataKeys
|
||||
* List of strings from the redbookDataKeys.txt file
|
||||
* @returnMap for key -> substitution string
|
||||
*/
|
||||
private Map<String, String> getSubstitutionMap(List<String> dataKeys) {
|
||||
Map<String, String> dataKeyMap = new HashMap<String, String>();
|
||||
for (String line : dataKeys) {
|
||||
line = line.trim();
|
||||
// Skip comment lines
|
||||
if (line.startsWith("#") || line.trim().length() == 0) {
|
||||
continue;
|
||||
}
|
||||
String[] parts = line.split("\\|");
|
||||
dataKeyMap.put(parts[0].trim(), parts[10].substring(0, 6));
|
||||
}
|
||||
|
||||
return dataKeyMap;
|
||||
}
|
||||
|
||||
public String getDataKeysPath() {
|
||||
return dataKeysPath;
|
||||
}
|
||||
|
||||
public void setDataKeysPath(String dataKeysPath) {
|
||||
this.dataKeysPath = dataKeysPath;
|
||||
}
|
||||
|
||||
public String getDepictKeysPath() {
|
||||
return depictKeysPath;
|
||||
}
|
||||
|
||||
public void setDepictKeysPath(String depictKeysPath) {
|
||||
this.depictKeysPath = depictKeysPath;
|
||||
}
|
||||
|
||||
public String getMenuFilePath() {
|
||||
return menuFilePath;
|
||||
}
|
||||
|
||||
public void setMenuFilePath(String menuFilePath) {
|
||||
this.menuFilePath = menuFilePath;
|
||||
}
|
||||
|
||||
public void setProductButtonPath(String productButtonPath) {
|
||||
this.productButtonPath = productButtonPath;
|
||||
}
|
||||
|
||||
public String getProductButtonPath() {
|
||||
return this.productButtonPath;
|
||||
}
|
||||
|
||||
private void createContext() {
|
||||
Class[] classes = new Class[] { MenuEntry.class, MenuEntryType.class,
|
||||
RedbookMenusXML.class };
|
||||
|
||||
try {
|
||||
jax = JAXBContext.newInstance(classes);
|
||||
this.marshaller = jax.createMarshaller();
|
||||
this.marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
public static void main(String[] args) {
|
||||
|
||||
if (args.length != 2) {
|
||||
System.err.println("Unexpected Arguments");
|
||||
System.err
|
||||
.println("Expecting local NDM directory and NDM File Menu Name");
|
||||
return;
|
||||
}
|
||||
|
||||
String dirPath = args[0];
|
||||
if (!dirPath.endsWith(File.separator)) {
|
||||
dirPath = dirPath.concat(File.separator);
|
||||
}
|
||||
String menuFile = dirPath + args[1];
|
||||
String dataKeysFile = dirPath + "redbookDataKeys.txt";
|
||||
String depictKeysFile = dirPath + "redbookDepictKeys.txt";
|
||||
String productButtonFile = dirPath + "redbookProductButtons.txt";
|
||||
|
||||
NdmMenuConverter converter = new NdmMenuConverter();
|
||||
converter.setDataKeysPath(dataKeysFile);
|
||||
converter.setMenuFilePath(menuFile);
|
||||
converter.setDepictKeysPath(depictKeysFile);
|
||||
converter.setProductButtonPath(productButtonFile);
|
||||
converter.convert();
|
||||
|
||||
}
|
||||
}
|
|
@ -27,6 +27,7 @@
|
|||
# ------------ ---------- ----------- --------------------------
|
||||
# 03/20/14 #2933 randerso Changed PRDDIR and LOGDIR to use
|
||||
# Backup site's configuration
|
||||
# 01/30/15 #17081 lshi Added backup vtec
|
||||
##############################################################################
|
||||
|
||||
import_file=${1}
|
||||
|
@ -175,6 +176,9 @@ log_msg 80
|
|||
cp -r GFEconfig/edex_static/site/smartinit ${edex_site_si_dest}
|
||||
log_msg 90
|
||||
cp -r GFEconfig/cave_static/site/* ${cave_site_dest}
|
||||
# DR 17081
|
||||
log_msg 91
|
||||
cp -r GFEconfig/common_static/site/vtec ${common_site_dest}
|
||||
log_msg 93
|
||||
# DR 16464
|
||||
cp -a GFEConfig/site/rsync_parms.${SITE_CAPS} ${rsync_parms_dest}.${SITE_CAPS}
|
||||
|
|
|
@ -1 +1 @@
|
|||
198d9e1b995f9fcf55686c0992f4bb0612f429e0
|
||||
409f53ec4cfa407ad0854b18dafce4521e2bb99a
|
|
@ -1 +1 @@
|
|||
198d9e1b995f9fcf55686c0992f4bb0612f429e0
|
||||
409f53ec4cfa407ad0854b18dafce4521e2bb99a
|
|
@ -30,6 +30,7 @@
|
|||
* new local fields to
|
||||
* mpe_qpe_fields and
|
||||
* mpe_qpe_dependencies
|
||||
* 2/4/2015 C Gobs DR 17069 - mpe_generate_list - token value too short
|
||||
********************************************************************************
|
||||
*/
|
||||
#include <stdlib.h>
|
||||
|
@ -130,6 +131,7 @@ const static char * mpe_qpe_dependencies [ NUM_BEST_PRODUCTS ] =
|
|||
/* GageOnly Generation rule in case mpe_del_gage_zeros token is OFF. */
|
||||
const static char * gageonly_del_gages_off = "" ;
|
||||
|
||||
#define MPE_GENERATE_LIST_REPLY_LEN 512
|
||||
|
||||
/*******************************************************************************
|
||||
* MODULE NUMBER: 1
|
||||
|
@ -514,7 +516,7 @@ void get_mpe_product_state ( const char * product , const int * product_len ,
|
|||
char mpe_del_gage_zeros_reply [ MPE_PRODUCT_REPLY_LEN ] = { '\0' } ;
|
||||
char mpe_generate_areal_qpe_reply [ MPE_PRODUCT_REPLY_LEN ] = {'\0'};
|
||||
static char * mpe_generate_list_token = MPE_GENERATE_LIST_TOKEN ;
|
||||
char mpe_generate_list_reply [ MPE_PRODUCT_REPLY_LEN ] = { '\0' } ;
|
||||
char mpe_generate_list_reply [ MPE_GENERATE_LIST_REPLY_LEN ] = { '\0' } ;
|
||||
static char mpe_qpe_fieldtype [ BESTFIELD_LEN] = { '\0' } ;
|
||||
char * pChar = NULL ;
|
||||
char * pString = NULL ;
|
||||
|
@ -598,9 +600,10 @@ void get_mpe_product_state ( const char * product , const int * product_len ,
|
|||
"empty.\n" , mpe_generate_list_token ) ;
|
||||
}
|
||||
|
||||
memset ( mpe_generate_list_reply , '\0' , MPE_PRODUCT_REPLY_LEN ) ;
|
||||
memset ( mpe_generate_list_reply , '\0' , MPE_GENERATE_LIST_REPLY_LEN ) ;
|
||||
}
|
||||
printf("get_mpe_product_state(): mpe_generate_list_reply = :%s: \n", mpe_generate_list_reply);
|
||||
printf("get_mpe_product_state(): mpe_generate_list_reply = :%s: characters in mpe_generate_list_reply = %d max = %d\n", mpe_generate_list_reply,
|
||||
strlen(mpe_generate_list_reply), MPE_GENERATE_LIST_REPLY_LEN);
|
||||
|
||||
/* Get the value of the mpe_del_gage_zeros token. */
|
||||
request_len = strlen ( mpe_del_gage_zeros_token ) ;
|
||||
|
|
|
@ -33,6 +33,7 @@ Import-Package: com.raytheon.uf.common.dataplugin.bufrua,
|
|||
com.raytheon.uf.common.dataplugin.level,
|
||||
com.raytheon.uf.common.pointdata,
|
||||
com.raytheon.uf.common.pointdata.spatial,
|
||||
com.raytheon.uf.common.topo,
|
||||
com.raytheon.uf.edex.pointdata,
|
||||
gov.noaa.nws.ncep.common.tools,
|
||||
gov.noaa.nws.ncep.edex.common.metparameters,
|
||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -18,6 +18,8 @@
|
|||
* 01/27/2015 DR#17006,
|
||||
* Task#5929 Chin Chen NSHARP freezes when loading a sounding from MDCRS products
|
||||
* in Volume Browser
|
||||
* 02/03/2015 DR#17079 Chin Chen Soundings listed out of order if frames go into new month
|
||||
* 02/05/2015 DR16888 CHin Chen merge 12/11/2014 fixes at version 14.2.2 and check in again to 14.3.1
|
||||
* </pre>
|
||||
*
|
||||
* @author Chin Chen
|
||||
|
@ -581,12 +583,14 @@ public class NsharpResourceHandler {
|
|||
* The following code is to create a list of stns within the range
|
||||
* of user defined radius (minimum distance) to "current" station
|
||||
* and also has data loaded with same time line as "current" time
|
||||
* line. Note that we have two time line formats, MM.DDVxxx(day)
|
||||
* and MM.DD(day). A same time line is compared by MM.DD
|
||||
* only. All qualified stations, including current station, found
|
||||
* will be listed and used for SND comparison.
|
||||
* line. Note that we have two time line formats, YYMMDD/HHVxxx(day)
|
||||
* and YYMMDD/HH(day) saved in NsharpSoundingElementStateProperty.
|
||||
* A same time line is compared by "YYMMDD/HH" only. All qualified
|
||||
* stations, including current station, found will be listed and used
|
||||
* for SND comparison.
|
||||
*/
|
||||
String TIME_COMPARE_STRING = "MM.DD";
|
||||
//DR#17079
|
||||
String TIME_COMPARE_STRING = "YYMMDD/HH";
|
||||
compSndSelectedElemList.clear();
|
||||
// CompSndSelectedElem curStnTimeIndexCouple = new
|
||||
// CompSndSelectedElem(currentStnElementListIndex,currentTimeElementListIndex,currentSndElementListIndex);
|
||||
|
@ -1074,13 +1078,14 @@ public class NsharpResourceHandler {
|
|||
|
||||
private class NsharpOperationElementComparator implements
|
||||
Comparator<NsharpOperationElement> {
|
||||
@Override
|
||||
|
||||
@Override
|
||||
public int compare(NsharpOperationElement o1, NsharpOperationElement o2) {
|
||||
|
||||
String s1tok1 = "";// , s1tok2="";
|
||||
String s2tok1 = "";// , s2tok2="";
|
||||
StringTokenizer st1 = new StringTokenizer(
|
||||
o1.getElementDescription());
|
||||
String o1Desc = o1.getElementDescription();
|
||||
StringTokenizer st1 = new StringTokenizer(o1Desc);
|
||||
int tkCount1 = st1.countTokens();
|
||||
// System.out.println("ElementComparatorTimeLine o1="+o1.elementDescription+"c1 = "+tkCount1);
|
||||
if (tkCount1 >= 1) {
|
||||
|
@ -1090,8 +1095,8 @@ public class NsharpResourceHandler {
|
|||
|
||||
}
|
||||
// System.out.println("t1="+s1tok1+" t2="+s2tok1);
|
||||
StringTokenizer st2 = new StringTokenizer(
|
||||
o2.getElementDescription());
|
||||
String o2Desc = o2.getElementDescription();
|
||||
StringTokenizer st2 = new StringTokenizer(o2Desc);
|
||||
int tkCount2 = st2.countTokens();
|
||||
// System.out.println("ElementComparatorTimeLine o2="+o2.elementDescription+"c2 = "+tkCount2);
|
||||
if (tkCount2 >= 1) {
|
||||
|
@ -1890,21 +1895,22 @@ public class NsharpResourceHandler {
|
|||
Map<String, List<NcSoundingLayer>> soundMap,
|
||||
NsharpStationInfo stnInfo, boolean fromArchive) {
|
||||
|
||||
// // testing code // stnInfo.setStnId("KUKI");
|
||||
// Set<String> keysettest = new HashSet<String>(soundMap.keySet());
|
||||
// for (String key : keysettest) {
|
||||
// List<NcSoundingLayer> sndLy = soundMap.remove(key); // String
|
||||
// // newkey=
|
||||
// String newkey =key.replace("NCUAIR", "gpduair"); // String newkey =
|
||||
// String newkey= key.replace("NAMS", "SSS");
|
||||
// String newkey = key.replace("130925/17(Wed)V017", "131001/00(Thu)V000");
|
||||
// soundMap.put(newkey, sndLy);
|
||||
// }
|
||||
/*
|
||||
* testing code : this is helpful code. do not remove.
|
||||
*
|
||||
Set<String> keysettest = new HashSet<String>(soundMap.keySet());
|
||||
for (String key : keysettest) {
|
||||
List<NcSoundingLayer> sndLy = soundMap.remove(key);
|
||||
String newkey= key.replace("NAMS", "SSS");
|
||||
//String newkey = key.replace("130925", "150102");
|
||||
soundMap.put(newkey, sndLy);
|
||||
}
|
||||
// // stnInfo.setSndType(stnInfo.getSndType().replace("NCUAIR", //
|
||||
// // "gpduair")); // stnInfo.setSndType(stnInfo.getSndType().replace(
|
||||
// // "NAMS","SSS"));
|
||||
// //
|
||||
|
||||
*
|
||||
* END testing code
|
||||
*/
|
||||
if (stnInfo.getStnId() != null && stnInfo.getStnId().indexOf(" ") >= 0) {
|
||||
// take care stnId with SPACE case.
|
||||
String stnId = stnInfo.getStnId();
|
||||
|
@ -2022,10 +2028,18 @@ public class NsharpResourceHandler {
|
|||
}
|
||||
|
||||
/*
|
||||
* As of 2014 April 9, current time description string is
|
||||
* Chin: 04092014, current time description string is
|
||||
* defined as "YYMMDD/HH(DOW)" or "YYMMDD/HH(DOW)Vxxx". Convert
|
||||
* them to "DD.HH(DOW)" or "DD.HHVxxx(DOW)" for GUI display.
|
||||
*/
|
||||
/*
|
||||
* Chin: 02032015
|
||||
* "DR17079: Soundings listed out of order if frames go into new month"
|
||||
* To fix DR17079, keep time line format as yymmdd/hh(day)Vxxx to be saved
|
||||
* in NsharpSoundingElementStateProperty.
|
||||
* We will convert display string while drawing.
|
||||
* This chunk code is to convert time line format from yymmdd/hh(day)Vxxx to dd.hh(day)Vxxx
|
||||
*
|
||||
timeLine = timeLine.substring(4); // get rid of YYMM
|
||||
if (timeLine.contains("V")) {
|
||||
String[] s1Str = timeLine.split("V"); // split
|
||||
|
@ -2042,6 +2056,9 @@ public class NsharpResourceHandler {
|
|||
// "DD/HHVxxx(DOW)"
|
||||
}
|
||||
timeLine = timeLine.replace("/", "."); // replace "/" with "."
|
||||
*
|
||||
* end DR17079
|
||||
*/
|
||||
}
|
||||
// recreate stnId_timeLine_sndType
|
||||
stnId_timeLine_sndType = stnId + " " + timeLine + " " + sndType;
|
||||
|
@ -2657,7 +2674,10 @@ public class NsharpResourceHandler {
|
|||
|
||||
break;
|
||||
}
|
||||
|
||||
if (compareSndIsOn) {
|
||||
handleUserPickNewTimeLine(currentTimeElementListIndex) ;
|
||||
return;
|
||||
}
|
||||
curTimeLinePage = currentTimeElementListIndex / numTimeLinePerPage
|
||||
+ 1;
|
||||
setCurSndProfileProp();
|
||||
|
@ -2794,7 +2814,10 @@ public class NsharpResourceHandler {
|
|||
// we should get out of here
|
||||
break;
|
||||
} else if (compareSndIsOn) {
|
||||
boolean found = false;
|
||||
handleUserPickNewTimeLine(targetIndex) ;
|
||||
return;
|
||||
/* DR16888 02052015
|
||||
* boolean found = false;
|
||||
if (currentStnElementListIndex >= 0
|
||||
&& currentSndElementListIndex >= 0
|
||||
&& stnTimeSndTable
|
||||
|
@ -2839,6 +2862,7 @@ public class NsharpResourceHandler {
|
|||
// not
|
||||
// we should get out of here
|
||||
break;
|
||||
*/
|
||||
} else {
|
||||
break;
|
||||
}
|
||||
|
|
|
@ -17,7 +17,9 @@ package gov.noaa.nws.ncep.ui.nsharp.display.rsc;
|
|||
* 01/27/2015 DR#17006,
|
||||
* Task#5929 Chin Chen NSHARP freezes when loading a sounding from MDCRS products
|
||||
* in Volume Browser
|
||||
*
|
||||
* 02/03/2015 DR#17084 Chin Chen Model soundings being interpolated below the surface for elevated sites
|
||||
* 02/05/2015 DR16888 Chin Chen fixed issue that "Comp(Src) button not functioning properly in NSHARP display"
|
||||
* merged 12/11/2014 fixes at version 14.2.2 and check in again to 14.3.1
|
||||
* </pre>
|
||||
*
|
||||
* @author Chin Chen
|
||||
|
@ -38,6 +40,7 @@ import gov.noaa.nws.ncep.ui.nsharp.background.NsharpSkewTPaneBackground;
|
|||
import gov.noaa.nws.ncep.ui.nsharp.background.NsharpTurbulencePaneBackground;
|
||||
import gov.noaa.nws.ncep.ui.nsharp.display.NsharpSkewTPaneDescriptor;
|
||||
import gov.noaa.nws.ncep.ui.nsharp.natives.NsharpNative;
|
||||
import gov.noaa.nws.ncep.ui.nsharp.natives.NsharpNative.NsharpLibrary;
|
||||
import gov.noaa.nws.ncep.ui.nsharp.natives.NsharpNative.NsharpLibrary._lplvalues;
|
||||
import gov.noaa.nws.ncep.ui.nsharp.natives.NsharpNative.NsharpLibrary._parcel;
|
||||
import gov.noaa.nws.ncep.ui.nsharp.natives.NsharpNativeConstants;
|
||||
|
@ -1256,32 +1259,40 @@ public class NsharpSkewTPaneResource extends NsharpAbstractPaneResource {
|
|||
double p_mb = c.y;
|
||||
double temp = c.x;
|
||||
float htFt, htM, relh = -1;
|
||||
String curStrFormat, curStrFormat1;
|
||||
String curStrFormat, curStrFormat1, htMStr, htFtStr;
|
||||
String curStr, curStr1;// , curStr2,curStr3;
|
||||
VerticalAlignment vAli;
|
||||
HorizontalAlignment hAli;
|
||||
|
||||
// curStr3 = rscHandler.getPickedStnInfoStr()+"\n";
|
||||
|
||||
htM = nsharpNative.nsharpLib.agl(nsharpNative.nsharpLib
|
||||
//Chin, DR17084
|
||||
if(soundingLys.get(0).getGeoHeight() <0){
|
||||
htMStr="M";
|
||||
htFtStr="M";
|
||||
}
|
||||
else {
|
||||
htM = nsharpNative.nsharpLib.agl(nsharpNative.nsharpLib
|
||||
.ihght((float) p_mb));
|
||||
htFt = nsharpNative.nsharpLib.mtof(htM);
|
||||
htFt = nsharpNative.nsharpLib.mtof(htM);
|
||||
htMStr = Integer.toString(Math.round(htM));
|
||||
htFtStr = Integer.toString(Math.round(htFt));
|
||||
}
|
||||
if (nsharpNative.nsharpLib.itemp((float) p_mb) > -9998.0
|
||||
&& nsharpNative.nsharpLib.idwpt((float) p_mb) > -9998.0) {
|
||||
FloatByReference parm = new FloatByReference(0);
|
||||
relh = nsharpNative.nsharpLib.relh((float) p_mb, parm);
|
||||
curStrFormat = "%4.0f/%.0fkt %4.0fmb %5.0fft/%.0fm agl %2.0f%%\n";
|
||||
curStrFormat = "%4.0f/%.0fkt %4.0fmb %sft/%sm agl %2.0f%%\n";
|
||||
curStr = String.format(curStrFormat,
|
||||
nsharpNative.nsharpLib.iwdir((float) p_mb),
|
||||
nsharpNative.nsharpLib.iwspd((float) p_mb), p_mb, htFt,
|
||||
htM, relh);
|
||||
nsharpNative.nsharpLib.iwspd((float) p_mb), p_mb, htFtStr,
|
||||
htMStr, relh);
|
||||
} else {
|
||||
curStrFormat = "%4.0f/%.0fkt %4.0fmb %5.0fft/%.0fm agl\n";
|
||||
curStrFormat = "%4.0f/%.0fkt %4.0fmb %sft/%sm agl\n";
|
||||
curStr = String
|
||||
.format(curStrFormat,
|
||||
nsharpNative.nsharpLib.iwdir((float) p_mb),
|
||||
nsharpNative.nsharpLib.iwspd((float) p_mb), p_mb,
|
||||
htFt, htM);
|
||||
htFtStr, htMStr);
|
||||
}
|
||||
/*
|
||||
* curStrFormat1 = "%s/%s %4.1f/%4.1f%cC %4.0f/%.0f kt\n"; curStr1 =
|
||||
|
@ -1866,7 +1877,7 @@ public class NsharpSkewTPaneResource extends NsharpAbstractPaneResource {
|
|||
boolean overlayIsOn = rscHandler.isOverlayIsOn();
|
||||
if (graphConfigProperty != null) {
|
||||
if (graphConfigProperty.isTemp() == true && !compareStnIsOn
|
||||
&& !compareTmIsOn) {
|
||||
&& !compareTmIsOn && !compareSndIsOn) {
|
||||
if (editGraphOn)
|
||||
plotPressureTempEditPoints(target, world,
|
||||
NsharpConstants.color_red, TEMP_TYPE,
|
||||
|
@ -1874,7 +1885,7 @@ public class NsharpSkewTPaneResource extends NsharpAbstractPaneResource {
|
|||
}
|
||||
// dew point curve
|
||||
if (graphConfigProperty.isDewp() == true && !compareStnIsOn
|
||||
&& !compareTmIsOn) {
|
||||
&& !compareTmIsOn && !compareSndIsOn) {
|
||||
if (editGraphOn)
|
||||
plotPressureTempEditPoints(target, world,
|
||||
NsharpConstants.color_green, DEWPOINT_TYPE,
|
||||
|
@ -1882,7 +1893,7 @@ public class NsharpSkewTPaneResource extends NsharpAbstractPaneResource {
|
|||
}
|
||||
// plot wet bulb trace
|
||||
if (graphConfigProperty.isWetBulb() == true && rscHandler.isGoodData() //#5929
|
||||
&& !compareStnIsOn && !compareTmIsOn) {
|
||||
&& !compareStnIsOn && !compareTmIsOn && !compareSndIsOn) {
|
||||
NsharpLineProperty lp = linePropertyMap
|
||||
.get(NsharpConstants.lineNameArray[NsharpConstants.LINE_WETBULB]);
|
||||
target.drawWireframeShape(wetBulbTraceRscShape,
|
||||
|
@ -1891,7 +1902,7 @@ public class NsharpSkewTPaneResource extends NsharpAbstractPaneResource {
|
|||
}
|
||||
// plot virtual temperature trace
|
||||
if (graphConfigProperty.isVTemp() == true && rscHandler.isGoodData() //#5929
|
||||
&& !compareStnIsOn && !compareTmIsOn) {
|
||||
&& !compareStnIsOn && !compareTmIsOn && !compareSndIsOn) {
|
||||
NsharpLineProperty lp = linePropertyMap
|
||||
.get(NsharpConstants.lineNameArray[NsharpConstants.LINE_VIRTUAL_TEMP]);
|
||||
target.drawWireframeShape(vtempTraceCurveRscShape,
|
||||
|
@ -1900,7 +1911,7 @@ public class NsharpSkewTPaneResource extends NsharpAbstractPaneResource {
|
|||
}
|
||||
// virtual temperature parcel trace curve
|
||||
if (graphConfigProperty.isParcelTv() == true && rscHandler.isGoodData() //#5929
|
||||
&& !compareStnIsOn && !compareTmIsOn
|
||||
&& !compareStnIsOn && !compareTmIsOn && !compareSndIsOn
|
||||
&& !overlayIsOn) {
|
||||
if (soundingLys.size() > 0) {
|
||||
NsharpLineProperty lp = linePropertyMap
|
||||
|
@ -1912,7 +1923,7 @@ public class NsharpSkewTPaneResource extends NsharpAbstractPaneResource {
|
|||
}
|
||||
|
||||
if (graphConfigProperty.isDcape() == true && rscHandler.isGoodData() //#5929
|
||||
&& dacpeTraceRscShape != null && !compareStnIsOn
|
||||
&& dacpeTraceRscShape != null && !compareStnIsOn && !compareSndIsOn
|
||||
&& !compareTmIsOn && !overlayIsOn) {
|
||||
if (soundingLys.size() > 0) {
|
||||
NsharpLineProperty lp = linePropertyMap
|
||||
|
@ -1924,7 +1935,7 @@ public class NsharpSkewTPaneResource extends NsharpAbstractPaneResource {
|
|||
}
|
||||
}
|
||||
if (graphConfigProperty.isEffLayer() == true && rscHandler.isGoodData() //#5929
|
||||
&& !compareStnIsOn && !compareTmIsOn) {
|
||||
&& !compareStnIsOn && !compareTmIsOn && !compareSndIsOn) {
|
||||
// draw effective layer lines
|
||||
// drawEffectiveLayerLines(target);
|
||||
target.drawWireframeShape(effectiveLayerLineShape,
|
||||
|
@ -1933,7 +1944,7 @@ public class NsharpSkewTPaneResource extends NsharpAbstractPaneResource {
|
|||
}
|
||||
// cloud
|
||||
if (graphConfigProperty.isCloud() == true && rscHandler.isGoodData() //#5929
|
||||
&& !compareStnIsOn && !compareTmIsOn) {
|
||||
&& !compareStnIsOn && !compareTmIsOn && !compareSndIsOn) {
|
||||
if (cloudFMShape != null)
|
||||
target.drawShadedShape(cloudFMShape, 1f);
|
||||
if (cloudFMLabelShape != null)
|
||||
|
@ -1944,7 +1955,7 @@ public class NsharpSkewTPaneResource extends NsharpAbstractPaneResource {
|
|||
target.drawShadedShape(cloudCEShape, 1f);
|
||||
}
|
||||
if (graphConfigProperty.isOmega() == true
|
||||
&& !compareStnIsOn && !compareTmIsOn) {
|
||||
&& !compareStnIsOn && !compareTmIsOn && !compareSndIsOn) {
|
||||
if (NsharpLoadDialog.getAccess() != null
|
||||
&& (NsharpLoadDialog.getAccess()
|
||||
.getActiveLoadSoundingType() == NsharpLoadDialog.MODEL_SND || NsharpLoadDialog
|
||||
|
@ -1956,7 +1967,7 @@ public class NsharpSkewTPaneResource extends NsharpAbstractPaneResource {
|
|||
}
|
||||
} else {
|
||||
// by default, draw everything
|
||||
if (!compareStnIsOn && !compareTmIsOn) {
|
||||
if (!compareStnIsOn && !compareTmIsOn && !compareSndIsOn) {
|
||||
if (editGraphOn)
|
||||
plotPressureTempEditPoints(target, world,
|
||||
NsharpConstants.color_red, TEMP_TYPE,
|
||||
|
@ -2695,11 +2706,11 @@ public class NsharpSkewTPaneResource extends NsharpAbstractPaneResource {
|
|||
// Chin 08/04/2014, fixed surface height plotting bug
|
||||
// also fixed to draw height mraker based on AGL (i.e. above surface
|
||||
// level)
|
||||
int sfcIndex = nsharpNative.nsharpLib.sfc();
|
||||
int sfcIndex = 0; ////DR#17084 nnsharpNative.nsharpLib.sfc();
|
||||
int sfcAsl = 0;
|
||||
if (sfcIndex >= 0
|
||||
&& sfcIndex < soundingLys.size()
|
||||
&& soundingLys.get(sfcIndex).getGeoHeight() != NsharpNativeConstants.NSHARP_NATIVE_INVALID_DATA) {
|
||||
if (//DR#17084 sfcIndex >= 0
|
||||
//DR#17084 && sfcIndex < soundingLys.size()
|
||||
soundingLys.get(sfcIndex).getGeoHeight() != NsharpNativeConstants.NSHARP_NATIVE_INVALID_DATA) {
|
||||
double y = world.mapY(NsharpWxMath.getSkewTXY(
|
||||
soundingLys.get(sfcIndex).getPressure(), 0).y);
|
||||
try {
|
||||
|
|
|
@ -11,6 +11,7 @@ package gov.noaa.nws.ncep.ui.nsharp.display.rsc;
|
|||
* Date Ticket# Engineer Description
|
||||
* ------- ------- -------- -----------
|
||||
* 04/23/2012 229 Chin Chen Initial coding
|
||||
* 02/03/2015 DR#17079 Chin Chen Soundings listed out of order if frames go into new month
|
||||
*
|
||||
* </pre>
|
||||
*
|
||||
|
@ -244,6 +245,32 @@ public class NsharpTimeStnPaneResource extends NsharpAbstractPaneResource {
|
|||
target.clearClippingPlane();
|
||||
|
||||
}
|
||||
/*
|
||||
* Chin 02032015 - DR17079
|
||||
* currently time line description is YYMMDD/HHVxxx(day) or
|
||||
* YYMMDD/HH(day) saved in NsharpSoundingElementStateProperty
|
||||
* convert it to DD.HH for displaying
|
||||
*/
|
||||
private String convertTimeLineForDisplay(String tl){
|
||||
String timeLine = tl;
|
||||
timeLine = timeLine.substring(4); // get rid of YYMM
|
||||
if (timeLine.contains("V")) {
|
||||
String[] s1Str = timeLine.split("V"); // split
|
||||
// DD/HH(DOW)Vxxx to
|
||||
// "DD/HH(DOW)" and
|
||||
// "xxx"
|
||||
String[] s2Str = s1Str[0].split("\\("); // split
|
||||
// "DD/HH(DOW)" to
|
||||
// "DD/HH" and
|
||||
// "DOW)"
|
||||
timeLine = s2Str[0] + "V" + s1Str[1] + "(" + s2Str[1]; // put
|
||||
// together
|
||||
// to
|
||||
// "DD/HHVxxx(DOW)"
|
||||
}
|
||||
timeLine = timeLine.replace("/", "."); // replace "/" with "."
|
||||
return timeLine;
|
||||
}
|
||||
|
||||
@SuppressWarnings("deprecation")
|
||||
private void drawNsharpTimelinBox(IGraphicsTarget target, Rectangle rect)
|
||||
|
@ -344,8 +371,8 @@ public class NsharpTimeStnPaneResource extends NsharpAbstractPaneResource {
|
|||
x = x + xGap;
|
||||
RGB tmLnColor = rscHandler.getElementColorMap().get(sta.name());
|
||||
String tmDesStr = elm.getElementDescription();
|
||||
// d2dlite - convert timeDesStr for GUI display
|
||||
|
||||
// DR17079: convert timeDesStr for GUI display
|
||||
tmDesStr = convertTimeLineForDisplay(tmDesStr);
|
||||
double tmX = x;
|
||||
|
||||
if (compareTmIsOn
|
||||
|
|
|
@ -17,6 +17,7 @@
|
|||
* 01/13/2014 Chin Chen TTR829- when interpolation, edit graph is allowed
|
||||
* 01/22/2014 Chin Chen DR17003 issue: NSHARP sounding display throws errors when swapping into main pane when show text is turned on.
|
||||
* 10/20/2014 Chin Chen DR16864, D2D does not use unload button. Check to make sure not D2D instance before access unload button.
|
||||
* 02/04/2015 DR16888 Chin Chen do not allow swap between Skewt and hodo when comparison is on, check in with DR17079
|
||||
* </pre>
|
||||
*
|
||||
* @author Chin Chen
|
||||
|
@ -185,10 +186,13 @@ public class NsharpPaletteWindow extends ViewPart implements SelectionListener,
|
|||
graphModeBtnSkew.setEnabled(true);
|
||||
graphModeBtnIcing.setEnabled(true);
|
||||
graphModeBtnTurb.setEnabled(true);
|
||||
if(graphModeBtnHodo!=null)
|
||||
graphModeBtnHodo.setEnabled(true);
|
||||
if (currentGraphMode == NsharpConstants.GRAPH_SKEWT) {
|
||||
graphModeBtnSkew.setBackground(colorBlue);
|
||||
graphModeBtnTurb.setBackground(colorGrey);
|
||||
graphModeBtnIcing.setBackground(colorGrey);
|
||||
if(graphModeBtnHodo!=null) graphModeBtnHodo.setBackground(colorGrey);
|
||||
graphEditBtn.setEnabled(true);
|
||||
dataEditBtn.setEnabled(true);
|
||||
compareTmBtn.setEnabled(true);
|
||||
|
@ -219,6 +223,7 @@ public class NsharpPaletteWindow extends ViewPart implements SelectionListener,
|
|||
compareStnBtn.setEnabled(false);
|
||||
interpBtn.setEnabled(false);
|
||||
graphModeBtnIcing.setEnabled(false);
|
||||
if(graphModeBtnHodo!=null) graphModeBtnHodo.setEnabled(false);
|
||||
graphModeBtnTurb.setEnabled(false);
|
||||
if (!imD2d)
|
||||
unloadBtn.setEnabled(false); // FixMark:nearByStnCompSnd
|
||||
|
@ -232,6 +237,7 @@ public class NsharpPaletteWindow extends ViewPart implements SelectionListener,
|
|||
interpBtn.setEnabled(false);
|
||||
graphModeBtnIcing.setEnabled(false);
|
||||
graphModeBtnTurb.setEnabled(false);
|
||||
if(graphModeBtnHodo!=null) graphModeBtnHodo.setEnabled(false);
|
||||
if (!imD2d)
|
||||
unloadBtn.setEnabled(false); // FixMark:nearByStnCompSnd
|
||||
} else if (compareSndIsOn) {
|
||||
|
@ -243,6 +249,7 @@ public class NsharpPaletteWindow extends ViewPart implements SelectionListener,
|
|||
overlayBtn.setEnabled(false);
|
||||
interpBtn.setEnabled(false);
|
||||
graphModeBtnIcing.setEnabled(false);
|
||||
if(graphModeBtnHodo!=null) graphModeBtnHodo.setEnabled(false);
|
||||
graphModeBtnTurb.setEnabled(false);
|
||||
if (!imD2d)
|
||||
unloadBtn.setEnabled(false); // FixMark:nearByStnCompSnd
|
||||
|
@ -255,6 +262,7 @@ public class NsharpPaletteWindow extends ViewPart implements SelectionListener,
|
|||
overlayBtn.setEnabled(false);
|
||||
interpBtn.setEnabled(false);
|
||||
graphModeBtnIcing.setEnabled(false);
|
||||
if(graphModeBtnHodo!=null) graphModeBtnHodo.setEnabled(false);
|
||||
graphModeBtnTurb.setEnabled(false);
|
||||
if (!imD2d)
|
||||
unloadBtn.setEnabled(false); // FixMark:nearByStnCompSnd
|
||||
|
@ -268,6 +276,7 @@ public class NsharpPaletteWindow extends ViewPart implements SelectionListener,
|
|||
interpBtn.setEnabled(false);
|
||||
graphModeBtnIcing.setEnabled(false);
|
||||
graphModeBtnTurb.setEnabled(false);
|
||||
if(graphModeBtnHodo!=null) graphModeBtnHodo.setEnabled(false);
|
||||
if (!imD2d)
|
||||
unloadBtn.setEnabled(false); // FixMark:nearByStnCompSnd
|
||||
}
|
||||
|
@ -707,6 +716,7 @@ public class NsharpPaletteWindow extends ViewPart implements SelectionListener,
|
|||
dataEditBtn.setEnabled(true);
|
||||
graphModeBtnIcing.setEnabled(true);
|
||||
graphModeBtnTurb.setEnabled(true);
|
||||
if(graphModeBtnHodo!=null) graphModeBtnHodo.setEnabled(true);
|
||||
graphEditBtn.setText(EDIT_GRAPH_OFF);
|
||||
currentGraphMode = NsharpConstants.GRAPH_SKEWT;
|
||||
NsharpEditor editor = NsharpEditor.getActiveNsharpEditor();
|
||||
|
@ -948,6 +958,7 @@ public class NsharpPaletteWindow extends ViewPart implements SelectionListener,
|
|||
dataEditBtn.setEnabled(false);
|
||||
graphModeBtnTurb.setEnabled(false);
|
||||
graphModeBtnIcing.setEnabled(false);
|
||||
if(graphModeBtnHodo!=null) graphModeBtnHodo.setEnabled(false);
|
||||
interpBtn.setEnabled(false);
|
||||
cfgBtn.setEnabled(false);
|
||||
if (!imD2d)
|
||||
|
@ -962,6 +973,7 @@ public class NsharpPaletteWindow extends ViewPart implements SelectionListener,
|
|||
dataEditBtn.setEnabled(true);
|
||||
graphModeBtnTurb.setEnabled(true);
|
||||
graphModeBtnIcing.setEnabled(true);
|
||||
if(graphModeBtnHodo!=null) graphModeBtnHodo.setEnabled(true);
|
||||
interpBtn.setEnabled(true);
|
||||
cfgBtn.setEnabled(true);
|
||||
if (!imD2d)
|
||||
|
@ -1006,6 +1018,7 @@ public class NsharpPaletteWindow extends ViewPart implements SelectionListener,
|
|||
dataEditBtn.setEnabled(false);
|
||||
graphModeBtnTurb.setEnabled(false);
|
||||
graphModeBtnIcing.setEnabled(false);
|
||||
if(graphModeBtnHodo!=null)graphModeBtnHodo.setEnabled(false);
|
||||
interpBtn.setEnabled(false);
|
||||
cfgBtn.setEnabled(false);
|
||||
if (!imD2d)
|
||||
|
@ -1020,6 +1033,7 @@ public class NsharpPaletteWindow extends ViewPart implements SelectionListener,
|
|||
dataEditBtn.setEnabled(true);
|
||||
graphModeBtnTurb.setEnabled(true);
|
||||
graphModeBtnIcing.setEnabled(true);
|
||||
if(graphModeBtnHodo!=null)graphModeBtnHodo.setEnabled(true);
|
||||
interpBtn.setEnabled(true);
|
||||
cfgBtn.setEnabled(true);
|
||||
if (!imD2d)
|
||||
|
@ -1066,6 +1080,7 @@ public class NsharpPaletteWindow extends ViewPart implements SelectionListener,
|
|||
dataEditBtn.setEnabled(false);
|
||||
graphModeBtnTurb.setEnabled(false);
|
||||
graphModeBtnIcing.setEnabled(false);
|
||||
if(graphModeBtnHodo!=null)graphModeBtnHodo.setEnabled(false);
|
||||
interpBtn.setEnabled(false);
|
||||
cfgBtn.setEnabled(false);
|
||||
if (!imD2d)
|
||||
|
@ -1080,6 +1095,7 @@ public class NsharpPaletteWindow extends ViewPart implements SelectionListener,
|
|||
dataEditBtn.setEnabled(true);
|
||||
graphModeBtnTurb.setEnabled(true);
|
||||
graphModeBtnIcing.setEnabled(true);
|
||||
if(graphModeBtnHodo!=null)graphModeBtnHodo.setEnabled(true);
|
||||
interpBtn.setEnabled(true);
|
||||
cfgBtn.setEnabled(true);
|
||||
if (!imD2d)
|
||||
|
@ -1124,6 +1140,7 @@ public class NsharpPaletteWindow extends ViewPart implements SelectionListener,
|
|||
dataEditBtn.setEnabled(false);
|
||||
graphModeBtnTurb.setEnabled(false);
|
||||
graphModeBtnIcing.setEnabled(false);
|
||||
if(graphModeBtnHodo!=null)graphModeBtnHodo.setEnabled(false);
|
||||
interpBtn.setEnabled(false);
|
||||
cfgBtn.setEnabled(false);
|
||||
if (!imD2d)
|
||||
|
@ -1138,6 +1155,7 @@ public class NsharpPaletteWindow extends ViewPart implements SelectionListener,
|
|||
dataEditBtn.setEnabled(true);
|
||||
graphModeBtnTurb.setEnabled(true);
|
||||
graphModeBtnIcing.setEnabled(true);
|
||||
if(graphModeBtnHodo!=null)graphModeBtnHodo.setEnabled(true);
|
||||
interpBtn.setEnabled(true);
|
||||
cfgBtn.setEnabled(true);
|
||||
if (!imD2d)
|
||||
|
|
|
@ -36,6 +36,7 @@
|
|||
#20130624 1966 rferrel The acars pattern changed to place files in the proper subdirectories.
|
||||
# Name changes to reflect plugin names for modelsounding, goessounding, poessounding.
|
||||
#20140424 3068 dgilling Add pattern for MetOp-B ASCAT T winds.
|
||||
#20150202 4066 rferrel Add pattern form Earth Networks Total Lightning: SFPA42
|
||||
#***************************************************************
|
||||
# AWIPS 1 PATTERN GRAPHIC ^[PQ].* /redbook/Raw
|
||||
# PGNA00 KWNS 010001 !redbook 1_1/NMCGPHMCD/MCDSUM/PXSF001CN/20110201 0001
|
||||
|
@ -384,6 +385,11 @@ HDS ^(IUS(Z[0-9]|Y4)[0-9]) ([A-Z]{4}) (..)(..)(..)
|
|||
HDS ^(SF(US|PA)41) ([A-Z]{4}) (..)(..)(..)
|
||||
FILE -overwrite -log -edex -close /data_store/binlightning/(\4:yyyy)(\4:mm)\4/\5/\1_\3_\4\5\6_(seq).nldn.%Y%m%d%H
|
||||
|
||||
# WMO Heading for Earth Networks Total Lightning
|
||||
|
||||
HDS ^(SF(US|PA)42) ([A-Z]{4}) (..)(..)(..)
|
||||
FILE -overwrite -log -edex -close /data_store/entlightning/(\4:yyyy)(\4:mm)\4/\5/\1_\3_\4\5\6_(seq).nldn.%Y%m%d%H
|
||||
|
||||
# AWIPS1: TEXT ^[ABCFMNRSUVW]......[KPTMC] /text/NO_STORE
|
||||
# TEXT ^[ABCFMNRSUVW].....[KPTMC] /text/NO_STORE
|
||||
# TEXT ^DF.* /text/NO_STORE
|
||||
|
|
Loading…
Add table
Reference in a new issue