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:
Fay.Liang 2015-02-10 10:59:16 -05:00
commit 3c6247522e
32 changed files with 1872 additions and 1151 deletions

View file

@ -58,6 +58,7 @@ import com.vividsolutions.jts.geom.impl.PackedCoordinateSequenceFactory;
* ------------ ---------- ----------- -------------------------- * ------------ ---------- ----------- --------------------------
* Aug 10, 2011 randerso Initial creation * Aug 10, 2011 randerso Initial creation
* Apr 17, 2014 #2997 randerso Moved buildBoundingGeometry up from DbMapResource * Apr 17, 2014 #2997 randerso Moved buildBoundingGeometry up from DbMapResource
* Jan 29, 2015 #4062 randerso Added a buffer to bounding Geometry
* *
* </pre> * </pre>
* *
@ -272,6 +273,10 @@ public abstract class AbstractDbMapResource<T extends AbstractDbMapResourceData,
.handle(Priority.PROBLEM, e1.getLocalizedMessage(), e1); .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(); // long t1 = System.currentTimeMillis();
// System.out.println("buildBoundingGeometry took: " + (t1 - t0)); // System.out.println("buildBoundingGeometry took: " + (t1 - t0));
return g; return g;

View file

@ -20,6 +20,7 @@
package com.raytheon.viz.core.rsc.jts; package com.raytheon.viz.core.rsc.jts;
import org.eclipse.swt.graphics.RGB; import org.eclipse.swt.graphics.RGB;
import org.geotools.referencing.operation.projection.ProjectionException;
import org.opengis.referencing.FactoryException; import org.opengis.referencing.FactoryException;
import com.raytheon.uf.common.geospatial.ReferencedGeometry; import com.raytheon.uf.common.geospatial.ReferencedGeometry;
@ -54,6 +55,7 @@ import com.vividsolutions.jts.geom.prep.PreparedGeometryFactory;
* Oct 24, 2006 chammack Initial Creation. * Oct 24, 2006 chammack Initial Creation.
* Feb 14, 2014 2804 mschenke Rewrote to move clipping from GLWireframeShape2D to here * 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) * Apr 21, 2014 2997 randerso Improved error handling in handle(ReferencedGeometry, JTSGeometryData)
* Jan 29, 2015 4062 randerso Don't throw errors for ProjectionExceptions
* *
* </pre> * </pre>
* *
@ -476,6 +478,8 @@ public class JTSCompiler {
corrector.correct(geom.asLatLon())); corrector.correct(geom.asLatLon()));
} catch (FactoryException e) { } catch (FactoryException e) {
throw new VizException("Error creating transform to Lat/Lon", 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) { } catch (Exception e) {
throw new VizException( throw new VizException(
"Error transforming geometry into Lat/Lon", e); "Error transforming geometry into Lat/Lon", e);
@ -487,6 +491,8 @@ public class JTSCompiler {
} catch (FactoryException e) { } catch (FactoryException e) {
throw new VizException( throw new VizException(
"Error creating transform to descriptor pixel space", e); "Error creating transform to descriptor pixel space", e);
} catch (ProjectionException e) {
// ignore this exception so it doesn't cause pop ups
} catch (Exception e) { } catch (Exception e) {
throw new VizException( throw new VizException(
"Error transforming geometry into descriptor pixel space", "Error transforming geometry into descriptor pixel space",

View file

@ -43,6 +43,7 @@ import com.raytheon.viz.mpe.util.ReadTemperatureStationList;
* Date Ticket# Engineer Description * Date Ticket# Engineer Description
* ------------ ---------- ----------- -------------------------- * ------------ ---------- ----------- --------------------------
* Mar 31, 2009 snaples Initial creation * Mar 31, 2009 snaples Initial creation
* Feb 5, 2015 17101 snaples Updated max_stations to use size of dqc.precip_stations.
* *
* </pre> * </pre>
* *
@ -72,13 +73,9 @@ public class GroupEditCalls {
int pcpn_time = dqc.pcpn_time; int pcpn_time = dqc.pcpn_time;
ReadPrecipStationList rp = new ReadPrecipStationList(); int max_stations = dqc.precip_stations.size();
ReadTemperatureStationList rt = new ReadTemperatureStationList(); int max_tstations = dqc.temperature_stations.size();
int max_stations = rp.getNumPstations();
int max_tstations = rt.getNumTstations();
public void apply_group() public void apply_group()

View file

@ -23,6 +23,7 @@
* Date Ticket# Engineer Description * Date Ticket# Engineer Description
* ------------ ---------- ----------- -------------------------- * ------------ ---------- ----------- --------------------------
* Jan 7, 2015 16954 cgobs Fix for cv_use issue - using getFieldName() in certain parts. * 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> * </pre>
**/ **/
package com.raytheon.viz.mpe.ui.actions; package com.raytheon.viz.mpe.ui.actions;
@ -33,8 +34,10 @@ import java.io.IOException;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.util.Arrays; import java.util.Arrays;
import java.util.Date; import java.util.Date;
import java.util.HashMap;
import java.util.Iterator; import java.util.Iterator;
import java.util.List; import java.util.List;
import java.util.Map;
import javax.imageio.ImageIO; import javax.imageio.ImageIO;
import javax.imageio.ImageWriter; import javax.imageio.ImageWriter;
@ -337,7 +340,10 @@ public class SaveBestEstimate {
Rwresult pRWResultNode = pRWResultHead.get(0); Rwresult pRWResultNode = pRWResultHead.get(0);
/* Update the elements in the RWResult node. */ /* Update the elements in the RWResult node. */
pRWResultNode.setMapxFieldType(fldtype);
fldtype = checkAndModifyMapxFieldType(fldtype);
pRWResultNode.setMapxFieldType(fldtype.toLowerCase());
pRWResultNode.setAutoSave(asave); pRWResultNode.setAutoSave(asave);
pRWResultNode.setDrawPrecip(drpr); pRWResultNode.setDrawPrecip(drpr);
pRWResultNode.setLastSaveTime(SimulatedTime.getSystemTime() 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;
}
} }

View file

@ -41,6 +41,7 @@ import com.raytheon.viz.mpe.util.DailyQcUtils.Station;
* Date Ticket# Engineer Description * Date Ticket# Engineer Description
* ------------ ---------- ----------- -------------------------- * ------------ ---------- ----------- --------------------------
* Mar 9, 2009 snaples Initial creation * Mar 9, 2009 snaples Initial creation
* Feb 5, 2015 17101 snaples Fixed issue with writing zero length bad values file.
* *
* </pre> * </pre>
* *
@ -51,8 +52,7 @@ import com.raytheon.viz.mpe.util.DailyQcUtils.Station;
public class BadValues { public class BadValues {
BufferedReader in = null; BufferedReader in = null;
DailyQcUtils dqc = DailyQcUtils.getInstance(); DailyQcUtils dqc = DailyQcUtils.getInstance();
ReadPrecipStationList rp = new ReadPrecipStationList(); private int max_stations = dqc.precip_stations.size();
private int max_stations = rp.getNumPstations();
public void read_bad_values(String precd, int m) { 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, // ier=sprintf(ibuf,"%s %s %d %f\n",bad_values[i].hb5,bad_values[i].parm,
// bad_values[i].quart,bad_values[i].fvalue); // 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].parm, bad_values[i].quart,
bad_values[i].fvalue); bad_values[i].fvalue);
out.write(ibuf); out.write(ibuf);

View file

@ -41,6 +41,7 @@ import com.raytheon.viz.mpe.util.DailyQcUtils.Station;
* Date Ticket# Engineer Description * Date Ticket# Engineer Description
* ------------ ---------- ----------- -------------------------- * ------------ ---------- ----------- --------------------------
* Mar 11, 2009 snaples Initial creation * Mar 11, 2009 snaples Initial creation
* Feb 5, 2015 17101 snaples Updated max_stations to use size of dqc.precip_stations.
* *
* </pre> * </pre>
* *
@ -68,8 +69,7 @@ public class GetBadSnotel {
/* Retrieve the number of days to QC data for. */ /* Retrieve the number of days to QC data for. */
num_qc_days = dqc.qcDays; num_qc_days = dqc.qcDays;
ReadPrecipStationList pl = new ReadPrecipStationList(); int max_stations = dqc.precip_stations.size();
int max_stations = pl.getNumPstations();
// Pdata[] pdata = DailyQcUtils.pdata; // Pdata[] pdata = DailyQcUtils.pdata;
for (j = 0; j < num_qc_days; j++) { for (j = 0; j < num_qc_days; j++) {

View file

@ -36,6 +36,7 @@ import com.raytheon.viz.mpe.util.DailyQcUtils.Station;
* Date Ticket# Engineer Description * Date Ticket# Engineer Description
* ------------ ---------- ----------- -------------------------- * ------------ ---------- ----------- --------------------------
* Feb 23, 2009 snaples Initial creation * Feb 23, 2009 snaples Initial creation
* Feb 3, 2015 16993 snaples Fixed if condition on cparm.
* *
* </pre> * </pre>
* *
@ -133,8 +134,8 @@ public class InitPrecipClimo {
continue; continue;
} }
if (tokens[1].equalsIgnoreCase("PPMPBCM") if (!(tokens[1].equalsIgnoreCase("PPMPBCM"))
&& tokens[1].equalsIgnoreCase("PPMRZCM")) { && !(tokens[1].equalsIgnoreCase("PPMRZCM"))) {
line = in.readLine(); line = in.readLine();
++record_count; ++record_count;
continue; continue;

View file

@ -44,6 +44,7 @@ import com.raytheon.viz.mpe.core.MPEDataManager;
* ------------ ---------- ----------- -------------------------- * ------------ ---------- ----------- --------------------------
* Feb 24, 2009 snaples Initial creation * Feb 24, 2009 snaples Initial creation
* April , 2012 8672 lbousaidi fixed the reading of the PRISM data. * April , 2012 8672 lbousaidi fixed the reading of the PRISM data.
* Feb 3, 2015 16993 snaples fixed color scale data conversion issue.
* </pre> * </pre>
* *
* @author snaples * @author snaples
@ -90,9 +91,8 @@ public class MeanMonthlyPrecip {
displayUnit = NonSI.INCH; displayUnit = NonSI.INCH;
dataUnit = SI.MILLIMETER; dataUnit = SI.MILLIMETER;
cmc.setDisplayUnit(displayUnit); cmc.setDisplayUnit(displayUnit);
cmc.setColorMapUnit(SI.MILLIMETER);
cmc.setDataUnit(dataUnit); cmc.setDataUnit(dataUnit);
UnitConverter dataToImage = cmc.getColorMapToDisplayConverter();//cmc.getDataToImageConverter(); UnitConverter dataToImage = cmc.getDataToImageConverter();
/* /*
* Loop over the months. Determine for which months PRISM data are * Loop over the months. Determine for which months PRISM data are

View file

@ -73,8 +73,7 @@ public class ReadPrecipStationList {
e.printStackTrace(); e.printStackTrace();
} }
ReadPrecipStationList.max_pstations = dqc.precip_stations max_pstations = dqc.precip_stations.size();
.size();
return dqc.precip_stations; return dqc.precip_stations;

View 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

View file

@ -23,7 +23,7 @@
</model> </model>
<model> <model>
<name>MPE-Local</name> <name>MPE-Mosaic</name>
<center>9</center> <center>9</center>
<subcenter>0</subcenter> <subcenter>0</subcenter>
<grid>304</grid> <grid>304</grid>
@ -50,7 +50,6 @@
</process> </process>
</model> </model>
<!-- END SUBCENTER 0 --> <!-- END SUBCENTER 0 -->
<!-- SUBCENTER 105: San Juan PR WFO --> <!-- SUBCENTER 105: San Juan PR WFO -->

View file

@ -1201,7 +1201,7 @@ C | 1 | 0 | 4 | | |..|8000F0FF| | 0 | 2
<parameter>PLI</parameter> <parameter>PLI</parameter>
</paramLevelMatches> </paramLevelMatches>
<contourStyle> <contourStyle>
<displayUnits label="C">K</displayUnits> <displayUnits>C</displayUnits>
<contourLabeling labelSpacing="4"> <contourLabeling labelSpacing="4">
<increment>2</increment> <increment>2</increment>
</contourLabeling> </contourLabeling>
@ -1212,7 +1212,7 @@ C | 1 | 0 | 4 | | |..|8000F0FF| | 0 | 2
<parameter>SLI</parameter> <parameter>SLI</parameter>
</paramLevelMatches> </paramLevelMatches>
<contourStyle> <contourStyle>
<displayUnits label="C">K</displayUnits> <displayUnits>C</displayUnits>
<displayFlags>NoPlane</displayFlags> <displayFlags>NoPlane</displayFlags>
<contourLabeling labelSpacing="4"> <contourLabeling labelSpacing="4">
<increment>2</increment> <increment>2</increment>
@ -1229,7 +1229,7 @@ C | 1 | 0 | 4 | | |..|8000F0FF|,900| 0 | 2
<creatingEntity>Laps</creatingEntity> <creatingEntity>Laps</creatingEntity>
</paramLevelMatches> </paramLevelMatches>
<contourStyle> <contourStyle>
<displayUnits label="C">K</displayUnits> <displayUnits>C</displayUnits>
<displayFlags>NoPlane</displayFlags> <displayFlags>NoPlane</displayFlags>
<contourLabeling labelSpacing="4"> <contourLabeling labelSpacing="4">
<increment>2</increment> <increment>2</increment>
@ -1244,7 +1244,7 @@ C | 1 | 0 | 4 | | |..|8000F0FF| | 0 | 2
<parameter>BLI</parameter> <parameter>BLI</parameter>
</paramLevelMatches> </paramLevelMatches>
<contourStyle> <contourStyle>
<displayUnits label="C">K</displayUnits> <displayUnits>C</displayUnits>
<contourLabeling labelSpacing="4"> <contourLabeling labelSpacing="4">
<increment>2</increment> <increment>2</increment>
</contourLabeling> </contourLabeling>
@ -2771,7 +2771,7 @@ C | 1 | 0 | 4 | | |..|8000F0FF|,,,80 | 0 | 2
</paramLevelMatches> </paramLevelMatches>
<contourStyle> <contourStyle>
<smoothingDistance>80</smoothingDistance> <smoothingDistance>80</smoothingDistance>
<displayUnits label="C">K</displayUnits> <displayUnits>C</displayUnits>
<displayFlags>NoPlane</displayFlags> <displayFlags>NoPlane</displayFlags>
<contourLabeling labelSpacing="4"> <contourLabeling labelSpacing="4">
<increment>2</increment> <increment>2</increment>

View file

@ -347,7 +347,7 @@
<parameter>shWlt</parameter> <parameter>shWlt</parameter>
</paramLevelMatches> </paramLevelMatches>
<graphStyle> <graphStyle>
<displayUnits label="C">K</displayUnits> <displayUnits>C</displayUnits>
</graphStyle> </graphStyle>
</styleRule> </styleRule>

View file

@ -1780,7 +1780,7 @@
<parameter>PLI</parameter> <parameter>PLI</parameter>
</paramLevelMatches> </paramLevelMatches>
<imageStyle> <imageStyle>
<displayUnits label="C">K</displayUnits> <displayUnits>C</displayUnits>
<range scale="LINEAR"> <range scale="LINEAR">
<minValue>-15</minValue> <minValue>-15</minValue>
<maxValue>15</maxValue> <maxValue>15</maxValue>
@ -1800,7 +1800,7 @@
<parameter>BLI</parameter> <parameter>BLI</parameter>
</paramLevelMatches> </paramLevelMatches>
<imageStyle> <imageStyle>
<displayUnits label="C">K</displayUnits> <displayUnits>C</displayUnits>
<range scale="LINEAR"> <range scale="LINEAR">
<minValue>-15</minValue> <minValue>-15</minValue>
<maxValue>15</maxValue> <maxValue>15</maxValue>

View file

@ -92,6 +92,11 @@ import com.raytheon.uf.edex.database.query.DatabaseQuery;
* Added performance logging * Added performance logging
* Nov 14, 2014 4953 randerso Moved dumpProductToTempFile into PracticeVtecDecoder * Nov 14, 2014 4953 randerso Moved dumpProductToTempFile into PracticeVtecDecoder
* since it had no reason to be in this class * 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> * </pre>
* *
@ -286,11 +291,13 @@ public class ActiveTable {
mode = ActiveTableMode.OPERATIONAL; mode = ActiveTableMode.OPERATIONAL;
} }
String issueSiteId = newRecords.get(0).getOfficeid();
IPerformanceStatusHandler perfStat = PerformanceStatus IPerformanceStatusHandler perfStat = PerformanceStatus
.getHandler("ActiveTable"); .getHandler("ActiveTable");
ITimer timer = TimeUtil.getTimer(); ITimer timer = TimeUtil.getTimer();
timer.start(); timer.start();
List<ActiveTableRecord> activeTable = getActiveTable(siteId, mode); List<ActiveTableRecord> activeTable = getActiveTable(issueSiteId, mode);
timer.stop(); timer.stop();
perfStat.logDuration("getActiveTable", timer.getElapsedTime()); perfStat.logDuration("getActiveTable", timer.getElapsedTime());

View file

@ -29,6 +29,7 @@
* Dec 12, 2013 2624 rferrel Document Julian time stamp. * Dec 12, 2013 2624 rferrel Document Julian time stamp.
* May 14, 2014 2881 rferrel Change retention times and data set modifications. * May 14, 2014 2881 rferrel Change retention times and data set modifications.
* Aug 25, 2014 3537 rferrel Fixed dirPattern in Category Local. * Aug 25, 2014 3537 rferrel Fixed dirPattern in Category Local.
* Feb 02, 2015 4066 rferrel Added lightning to Observation category.
* *
* @author rferrel * @author rferrel
* @version 1.0 * @version 1.0
@ -208,7 +209,7 @@
<name>Observation</name> <name>Observation</name>
<extRetentionHours>168</extRetentionHours> <extRetentionHours>168</extRetentionHours>
<dataSet> <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> <displayLabel>{1}</displayLabel>
<dateGroupIndices>2,3,4,5</dateGroupIndices> <dateGroupIndices>2,3,4,5</dateGroupIndices>
</dataSet> </dataSet>

View file

@ -12,7 +12,8 @@ Require-Bundle: com.raytheon.edex.common,
com.raytheon.uf.common.status;bundle-version="1.12.1174", com.raytheon.uf.common.status;bundle-version="1.12.1174",
com.raytheon.uf.edex.ndm;bundle-version="1.14.0", com.raytheon.uf.edex.ndm;bundle-version="1.14.0",
com.raytheon.uf.edex.menus;bundle-version="1.0.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, Export-Package: com.raytheon.uf.edex.plugin.redbook,
com.raytheon.uf.edex.plugin.redbook.decoder com.raytheon.uf.edex.plugin.redbook.decoder
Bundle-RequiredExecutionEnvironment: JavaSE-1.6 Bundle-RequiredExecutionEnvironment: JavaSE-1.6

View file

@ -47,6 +47,7 @@ import com.raytheon.uf.edex.plugin.redbook.menu.RedbookUaMenuUtil;
* Mar 19, 2014 2857 mpduff Implement NCO. * Mar 19, 2014 2857 mpduff Implement NCO.
* Mar 19, 2014 2859 mpduff Implement MPC. * Mar 19, 2014 2859 mpduff Implement MPC.
* Mar 19, 2014 2860 mpduff Implement Upper Air. * Mar 19, 2014 2860 mpduff Implement Upper Air.
* Jan 28, 2015 4030 mpduff Changed constants to public.
* *
* </pre> * </pre>
* *
@ -60,22 +61,22 @@ public class RedbookMenuSubscriber implements INationalDatasetSubscriber {
.getHandler(RedbookMenuSubscriber.class); .getHandler(RedbookMenuSubscriber.class);
/** Hazard menu file */ /** Hazard menu file */
private static final String HAZARD_MENU_FILE = "RedbookHazardMenus.xml"; public static final String HAZARD_MENU_FILE = "RedbookHazardMenus.xml";
/** HPC menu file */ /** HPC menu file */
private static final String HPC_MENU_FILE = "RedbookHPCMenus.xml"; public static final String HPC_MENU_FILE = "RedbookHPCMenus.xml";
/** CPC menu file */ /** CPC menu file */
private static final String CPC_MENU_FILE = "RedbookCPCMenus.xml"; public static final String CPC_MENU_FILE = "RedbookCPCMenus.xml";
/** MPC menu file */ /** MPC menu file */
private static final String MPC_MENU_FILE = "RedbookMPCMenus.xml"; public static final String MPC_MENU_FILE = "RedbookMPCMenus.xml";
/** NCO menu file */ /** 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 */ /** Upper air menu file */
private static final String UA_MENU_FILE = "RedbookUAMenus.xml"; public static final String UA_MENU_FILE = "RedbookUAMenus.xml";
/** /**
* {@inheritDoc} * {@inheritDoc}

View file

@ -39,6 +39,7 @@ import javax.xml.bind.annotation.XmlElements;
* ------------ ---------- ----------- -------------------------- * ------------ ---------- ----------- --------------------------
* Mar 12, 2014 2855 mpduff Initial creation * Mar 12, 2014 2855 mpduff Initial creation
* Mar 19, 2014 2860 mpduff Added DataUri. * Mar 19, 2014 2860 mpduff Added DataUri.
* Jan 28, 2015 4030 mpduff Added addMenuEntry method.
* *
* </pre> * </pre>
* *
@ -208,7 +209,7 @@ public class MenuEntry {
* @param menuEntryList * @param menuEntryList
* the menuEntryList to set * the menuEntryList to set
*/ */
public void setMenuEntryyList(List<MenuEntry> menuEntryList) { public void setMenuEntryList(List<MenuEntry> menuEntryList) {
this.menuEntryList = menuEntryList; this.menuEntryList = menuEntryList;
} }
@ -227,6 +228,18 @@ public class MenuEntry {
this.dataUri = dataUri; 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) * (non-Javadoc)
* *

View file

@ -39,6 +39,7 @@ import javax.xml.bind.annotation.XmlRootElement;
* ------------ ---------- ----------- -------------------------- * ------------ ---------- ----------- --------------------------
* Mar 07, 2014 2858 mpduff Initial creation. * Mar 07, 2014 2858 mpduff Initial creation.
* Mar 17, 2014 2855 mpduff Renamed to RedbookMenusXML.java. * Mar 17, 2014 2855 mpduff Renamed to RedbookMenusXML.java.
* Jan 28, 2015 4030 mpduff Added addMenuEntry method.
* *
* </pre> * </pre>
* *
@ -78,6 +79,10 @@ public class RedbookMenusXML {
this.menuEntryList = menuEntryList; this.menuEntryList = menuEntryList;
} }
public void addMenuEntry(MenuEntry entry) {
menuEntryList.add(entry);
}
/* /*
* (non-Javadoc) * (non-Javadoc)
* *

View file

@ -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();
}
}

View file

@ -27,6 +27,7 @@
# ------------ ---------- ----------- -------------------------- # ------------ ---------- ----------- --------------------------
# 03/20/14 #2933 randerso Changed PRDDIR and LOGDIR to use # 03/20/14 #2933 randerso Changed PRDDIR and LOGDIR to use
# Backup site's configuration # Backup site's configuration
# 01/30/15 #17081 lshi Added backup vtec
############################################################################## ##############################################################################
import_file=${1} import_file=${1}
@ -175,6 +176,9 @@ log_msg 80
cp -r GFEconfig/edex_static/site/smartinit ${edex_site_si_dest} cp -r GFEconfig/edex_static/site/smartinit ${edex_site_si_dest}
log_msg 90 log_msg 90
cp -r GFEconfig/cave_static/site/* ${cave_site_dest} 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 log_msg 93
# DR 16464 # DR 16464
cp -a GFEConfig/site/rsync_parms.${SITE_CAPS} ${rsync_parms_dest}.${SITE_CAPS} cp -a GFEConfig/site/rsync_parms.${SITE_CAPS} ${rsync_parms_dest}.${SITE_CAPS}

View file

@ -1 +1 @@
198d9e1b995f9fcf55686c0992f4bb0612f429e0 409f53ec4cfa407ad0854b18dafce4521e2bb99a

View file

@ -1 +1 @@
198d9e1b995f9fcf55686c0992f4bb0612f429e0 409f53ec4cfa407ad0854b18dafce4521e2bb99a

View file

@ -30,6 +30,7 @@
* new local fields to * new local fields to
* mpe_qpe_fields and * mpe_qpe_fields and
* mpe_qpe_dependencies * mpe_qpe_dependencies
* 2/4/2015 C Gobs DR 17069 - mpe_generate_list - token value too short
******************************************************************************** ********************************************************************************
*/ */
#include <stdlib.h> #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. */ /* GageOnly Generation rule in case mpe_del_gage_zeros token is OFF. */
const static char * gageonly_del_gages_off = "" ; const static char * gageonly_del_gages_off = "" ;
#define MPE_GENERATE_LIST_REPLY_LEN 512
/******************************************************************************* /*******************************************************************************
* MODULE NUMBER: 1 * 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_del_gage_zeros_reply [ MPE_PRODUCT_REPLY_LEN ] = { '\0' } ;
char mpe_generate_areal_qpe_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 ; 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' } ; static char mpe_qpe_fieldtype [ BESTFIELD_LEN] = { '\0' } ;
char * pChar = NULL ; char * pChar = NULL ;
char * pString = 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 ) ; "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. */ /* Get the value of the mpe_del_gage_zeros token. */
request_len = strlen ( mpe_del_gage_zeros_token ) ; request_len = strlen ( mpe_del_gage_zeros_token ) ;

View file

@ -33,6 +33,7 @@ Import-Package: com.raytheon.uf.common.dataplugin.bufrua,
com.raytheon.uf.common.dataplugin.level, com.raytheon.uf.common.dataplugin.level,
com.raytheon.uf.common.pointdata, com.raytheon.uf.common.pointdata,
com.raytheon.uf.common.pointdata.spatial, com.raytheon.uf.common.pointdata.spatial,
com.raytheon.uf.common.topo,
com.raytheon.uf.edex.pointdata, com.raytheon.uf.edex.pointdata,
gov.noaa.nws.ncep.common.tools, gov.noaa.nws.ncep.common.tools,
gov.noaa.nws.ncep.edex.common.metparameters, gov.noaa.nws.ncep.edex.common.metparameters,

View file

@ -18,6 +18,8 @@
* 01/27/2015 DR#17006, * 01/27/2015 DR#17006,
* Task#5929 Chin Chen NSHARP freezes when loading a sounding from MDCRS products * Task#5929 Chin Chen NSHARP freezes when loading a sounding from MDCRS products
* in Volume Browser * 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> * </pre>
* *
* @author Chin Chen * @author Chin Chen
@ -581,12 +583,14 @@ public class NsharpResourceHandler {
* The following code is to create a list of stns within the range * The following code is to create a list of stns within the range
* of user defined radius (minimum distance) to "current" station * of user defined radius (minimum distance) to "current" station
* and also has data loaded with same time line as "current" time * and also has data loaded with same time line as "current" time
* line. Note that we have two time line formats, MM.DDVxxx(day) * line. Note that we have two time line formats, YYMMDD/HHVxxx(day)
* and MM.DD(day). A same time line is compared by MM.DD * and YYMMDD/HH(day) saved in NsharpSoundingElementStateProperty.
* only. All qualified stations, including current station, found * A same time line is compared by "YYMMDD/HH" only. All qualified
* will be listed and used for SND comparison. * 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(); compSndSelectedElemList.clear();
// CompSndSelectedElem curStnTimeIndexCouple = new // CompSndSelectedElem curStnTimeIndexCouple = new
// CompSndSelectedElem(currentStnElementListIndex,currentTimeElementListIndex,currentSndElementListIndex); // CompSndSelectedElem(currentStnElementListIndex,currentTimeElementListIndex,currentSndElementListIndex);
@ -1074,13 +1078,14 @@ public class NsharpResourceHandler {
private class NsharpOperationElementComparator implements private class NsharpOperationElementComparator implements
Comparator<NsharpOperationElement> { Comparator<NsharpOperationElement> {
@Override
@Override
public int compare(NsharpOperationElement o1, NsharpOperationElement o2) { public int compare(NsharpOperationElement o1, NsharpOperationElement o2) {
String s1tok1 = "";// , s1tok2=""; String s1tok1 = "";// , s1tok2="";
String s2tok1 = "";// , s2tok2=""; String s2tok1 = "";// , s2tok2="";
StringTokenizer st1 = new StringTokenizer( String o1Desc = o1.getElementDescription();
o1.getElementDescription()); StringTokenizer st1 = new StringTokenizer(o1Desc);
int tkCount1 = st1.countTokens(); int tkCount1 = st1.countTokens();
// System.out.println("ElementComparatorTimeLine o1="+o1.elementDescription+"c1 = "+tkCount1); // System.out.println("ElementComparatorTimeLine o1="+o1.elementDescription+"c1 = "+tkCount1);
if (tkCount1 >= 1) { if (tkCount1 >= 1) {
@ -1090,8 +1095,8 @@ public class NsharpResourceHandler {
} }
// System.out.println("t1="+s1tok1+" t2="+s2tok1); // System.out.println("t1="+s1tok1+" t2="+s2tok1);
StringTokenizer st2 = new StringTokenizer( String o2Desc = o2.getElementDescription();
o2.getElementDescription()); StringTokenizer st2 = new StringTokenizer(o2Desc);
int tkCount2 = st2.countTokens(); int tkCount2 = st2.countTokens();
// System.out.println("ElementComparatorTimeLine o2="+o2.elementDescription+"c2 = "+tkCount2); // System.out.println("ElementComparatorTimeLine o2="+o2.elementDescription+"c2 = "+tkCount2);
if (tkCount2 >= 1) { if (tkCount2 >= 1) {
@ -1890,21 +1895,22 @@ public class NsharpResourceHandler {
Map<String, List<NcSoundingLayer>> soundMap, Map<String, List<NcSoundingLayer>> soundMap,
NsharpStationInfo stnInfo, boolean fromArchive) { NsharpStationInfo stnInfo, boolean fromArchive) {
// // testing code // stnInfo.setStnId("KUKI"); /*
// Set<String> keysettest = new HashSet<String>(soundMap.keySet()); * testing code : this is helpful code. do not remove.
// for (String key : keysettest) { *
// List<NcSoundingLayer> sndLy = soundMap.remove(key); // String Set<String> keysettest = new HashSet<String>(soundMap.keySet());
// // newkey= for (String key : keysettest) {
// String newkey =key.replace("NCUAIR", "gpduair"); // String newkey = List<NcSoundingLayer> sndLy = soundMap.remove(key);
// String newkey= key.replace("NAMS", "SSS"); String newkey= key.replace("NAMS", "SSS");
// String newkey = key.replace("130925/17(Wed)V017", "131001/00(Thu)V000"); //String newkey = key.replace("130925", "150102");
// soundMap.put(newkey, sndLy); soundMap.put(newkey, sndLy);
// } }
// // stnInfo.setSndType(stnInfo.getSndType().replace("NCUAIR", // // // stnInfo.setSndType(stnInfo.getSndType().replace("NCUAIR", //
// // "gpduair")); // stnInfo.setSndType(stnInfo.getSndType().replace( // // "gpduair")); // stnInfo.setSndType(stnInfo.getSndType().replace(
// // "NAMS","SSS")); // // "NAMS","SSS"));
// // *
* END testing code
*/
if (stnInfo.getStnId() != null && stnInfo.getStnId().indexOf(" ") >= 0) { if (stnInfo.getStnId() != null && stnInfo.getStnId().indexOf(" ") >= 0) {
// take care stnId with SPACE case. // take care stnId with SPACE case.
String stnId = stnInfo.getStnId(); 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 * defined as "YYMMDD/HH(DOW)" or "YYMMDD/HH(DOW)Vxxx". Convert
* them to "DD.HH(DOW)" or "DD.HHVxxx(DOW)" for GUI display. * 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 timeLine = timeLine.substring(4); // get rid of YYMM
if (timeLine.contains("V")) { if (timeLine.contains("V")) {
String[] s1Str = timeLine.split("V"); // split String[] s1Str = timeLine.split("V"); // split
@ -2042,6 +2056,9 @@ public class NsharpResourceHandler {
// "DD/HHVxxx(DOW)" // "DD/HHVxxx(DOW)"
} }
timeLine = timeLine.replace("/", "."); // replace "/" with "." timeLine = timeLine.replace("/", "."); // replace "/" with "."
*
* end DR17079
*/
} }
// recreate stnId_timeLine_sndType // recreate stnId_timeLine_sndType
stnId_timeLine_sndType = stnId + " " + timeLine + " " + sndType; stnId_timeLine_sndType = stnId + " " + timeLine + " " + sndType;
@ -2657,7 +2674,10 @@ public class NsharpResourceHandler {
break; break;
} }
if (compareSndIsOn) {
handleUserPickNewTimeLine(currentTimeElementListIndex) ;
return;
}
curTimeLinePage = currentTimeElementListIndex / numTimeLinePerPage curTimeLinePage = currentTimeElementListIndex / numTimeLinePerPage
+ 1; + 1;
setCurSndProfileProp(); setCurSndProfileProp();
@ -2794,7 +2814,10 @@ public class NsharpResourceHandler {
// we should get out of here // we should get out of here
break; break;
} else if (compareSndIsOn) { } else if (compareSndIsOn) {
boolean found = false; handleUserPickNewTimeLine(targetIndex) ;
return;
/* DR16888 02052015
* boolean found = false;
if (currentStnElementListIndex >= 0 if (currentStnElementListIndex >= 0
&& currentSndElementListIndex >= 0 && currentSndElementListIndex >= 0
&& stnTimeSndTable && stnTimeSndTable
@ -2839,6 +2862,7 @@ public class NsharpResourceHandler {
// not // not
// we should get out of here // we should get out of here
break; break;
*/
} else { } else {
break; break;
} }

View file

@ -17,7 +17,9 @@ package gov.noaa.nws.ncep.ui.nsharp.display.rsc;
* 01/27/2015 DR#17006, * 01/27/2015 DR#17006,
* Task#5929 Chin Chen NSHARP freezes when loading a sounding from MDCRS products * Task#5929 Chin Chen NSHARP freezes when loading a sounding from MDCRS products
* in Volume Browser * 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> * </pre>
* *
* @author Chin Chen * @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.background.NsharpTurbulencePaneBackground;
import gov.noaa.nws.ncep.ui.nsharp.display.NsharpSkewTPaneDescriptor; 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;
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._lplvalues;
import gov.noaa.nws.ncep.ui.nsharp.natives.NsharpNative.NsharpLibrary._parcel; import gov.noaa.nws.ncep.ui.nsharp.natives.NsharpNative.NsharpLibrary._parcel;
import gov.noaa.nws.ncep.ui.nsharp.natives.NsharpNativeConstants; import gov.noaa.nws.ncep.ui.nsharp.natives.NsharpNativeConstants;
@ -1256,32 +1259,40 @@ public class NsharpSkewTPaneResource extends NsharpAbstractPaneResource {
double p_mb = c.y; double p_mb = c.y;
double temp = c.x; double temp = c.x;
float htFt, htM, relh = -1; float htFt, htM, relh = -1;
String curStrFormat, curStrFormat1; String curStrFormat, curStrFormat1, htMStr, htFtStr;
String curStr, curStr1;// , curStr2,curStr3; String curStr, curStr1;// , curStr2,curStr3;
VerticalAlignment vAli; VerticalAlignment vAli;
HorizontalAlignment hAli; HorizontalAlignment hAli;
// curStr3 = rscHandler.getPickedStnInfoStr()+"\n"; // curStr3 = rscHandler.getPickedStnInfoStr()+"\n";
//Chin, DR17084
htM = nsharpNative.nsharpLib.agl(nsharpNative.nsharpLib if(soundingLys.get(0).getGeoHeight() <0){
htMStr="M";
htFtStr="M";
}
else {
htM = nsharpNative.nsharpLib.agl(nsharpNative.nsharpLib
.ihght((float) p_mb)); .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 if (nsharpNative.nsharpLib.itemp((float) p_mb) > -9998.0
&& nsharpNative.nsharpLib.idwpt((float) p_mb) > -9998.0) { && nsharpNative.nsharpLib.idwpt((float) p_mb) > -9998.0) {
FloatByReference parm = new FloatByReference(0); FloatByReference parm = new FloatByReference(0);
relh = nsharpNative.nsharpLib.relh((float) p_mb, parm); 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, curStr = String.format(curStrFormat,
nsharpNative.nsharpLib.iwdir((float) p_mb), nsharpNative.nsharpLib.iwdir((float) p_mb),
nsharpNative.nsharpLib.iwspd((float) p_mb), p_mb, htFt, nsharpNative.nsharpLib.iwspd((float) p_mb), p_mb, htFtStr,
htM, relh); htMStr, relh);
} else { } else {
curStrFormat = "%4.0f/%.0fkt %4.0fmb %5.0fft/%.0fm agl\n"; curStrFormat = "%4.0f/%.0fkt %4.0fmb %sft/%sm agl\n";
curStr = String curStr = String
.format(curStrFormat, .format(curStrFormat,
nsharpNative.nsharpLib.iwdir((float) p_mb), nsharpNative.nsharpLib.iwdir((float) p_mb),
nsharpNative.nsharpLib.iwspd((float) p_mb), 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 = * 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(); boolean overlayIsOn = rscHandler.isOverlayIsOn();
if (graphConfigProperty != null) { if (graphConfigProperty != null) {
if (graphConfigProperty.isTemp() == true && !compareStnIsOn if (graphConfigProperty.isTemp() == true && !compareStnIsOn
&& !compareTmIsOn) { && !compareTmIsOn && !compareSndIsOn) {
if (editGraphOn) if (editGraphOn)
plotPressureTempEditPoints(target, world, plotPressureTempEditPoints(target, world,
NsharpConstants.color_red, TEMP_TYPE, NsharpConstants.color_red, TEMP_TYPE,
@ -1874,7 +1885,7 @@ public class NsharpSkewTPaneResource extends NsharpAbstractPaneResource {
} }
// dew point curve // dew point curve
if (graphConfigProperty.isDewp() == true && !compareStnIsOn if (graphConfigProperty.isDewp() == true && !compareStnIsOn
&& !compareTmIsOn) { && !compareTmIsOn && !compareSndIsOn) {
if (editGraphOn) if (editGraphOn)
plotPressureTempEditPoints(target, world, plotPressureTempEditPoints(target, world,
NsharpConstants.color_green, DEWPOINT_TYPE, NsharpConstants.color_green, DEWPOINT_TYPE,
@ -1882,7 +1893,7 @@ public class NsharpSkewTPaneResource extends NsharpAbstractPaneResource {
} }
// plot wet bulb trace // plot wet bulb trace
if (graphConfigProperty.isWetBulb() == true && rscHandler.isGoodData() //#5929 if (graphConfigProperty.isWetBulb() == true && rscHandler.isGoodData() //#5929
&& !compareStnIsOn && !compareTmIsOn) { && !compareStnIsOn && !compareTmIsOn && !compareSndIsOn) {
NsharpLineProperty lp = linePropertyMap NsharpLineProperty lp = linePropertyMap
.get(NsharpConstants.lineNameArray[NsharpConstants.LINE_WETBULB]); .get(NsharpConstants.lineNameArray[NsharpConstants.LINE_WETBULB]);
target.drawWireframeShape(wetBulbTraceRscShape, target.drawWireframeShape(wetBulbTraceRscShape,
@ -1891,7 +1902,7 @@ public class NsharpSkewTPaneResource extends NsharpAbstractPaneResource {
} }
// plot virtual temperature trace // plot virtual temperature trace
if (graphConfigProperty.isVTemp() == true && rscHandler.isGoodData() //#5929 if (graphConfigProperty.isVTemp() == true && rscHandler.isGoodData() //#5929
&& !compareStnIsOn && !compareTmIsOn) { && !compareStnIsOn && !compareTmIsOn && !compareSndIsOn) {
NsharpLineProperty lp = linePropertyMap NsharpLineProperty lp = linePropertyMap
.get(NsharpConstants.lineNameArray[NsharpConstants.LINE_VIRTUAL_TEMP]); .get(NsharpConstants.lineNameArray[NsharpConstants.LINE_VIRTUAL_TEMP]);
target.drawWireframeShape(vtempTraceCurveRscShape, target.drawWireframeShape(vtempTraceCurveRscShape,
@ -1900,7 +1911,7 @@ public class NsharpSkewTPaneResource extends NsharpAbstractPaneResource {
} }
// virtual temperature parcel trace curve // virtual temperature parcel trace curve
if (graphConfigProperty.isParcelTv() == true && rscHandler.isGoodData() //#5929 if (graphConfigProperty.isParcelTv() == true && rscHandler.isGoodData() //#5929
&& !compareStnIsOn && !compareTmIsOn && !compareStnIsOn && !compareTmIsOn && !compareSndIsOn
&& !overlayIsOn) { && !overlayIsOn) {
if (soundingLys.size() > 0) { if (soundingLys.size() > 0) {
NsharpLineProperty lp = linePropertyMap NsharpLineProperty lp = linePropertyMap
@ -1912,7 +1923,7 @@ public class NsharpSkewTPaneResource extends NsharpAbstractPaneResource {
} }
if (graphConfigProperty.isDcape() == true && rscHandler.isGoodData() //#5929 if (graphConfigProperty.isDcape() == true && rscHandler.isGoodData() //#5929
&& dacpeTraceRscShape != null && !compareStnIsOn && dacpeTraceRscShape != null && !compareStnIsOn && !compareSndIsOn
&& !compareTmIsOn && !overlayIsOn) { && !compareTmIsOn && !overlayIsOn) {
if (soundingLys.size() > 0) { if (soundingLys.size() > 0) {
NsharpLineProperty lp = linePropertyMap NsharpLineProperty lp = linePropertyMap
@ -1924,7 +1935,7 @@ public class NsharpSkewTPaneResource extends NsharpAbstractPaneResource {
} }
} }
if (graphConfigProperty.isEffLayer() == true && rscHandler.isGoodData() //#5929 if (graphConfigProperty.isEffLayer() == true && rscHandler.isGoodData() //#5929
&& !compareStnIsOn && !compareTmIsOn) { && !compareStnIsOn && !compareTmIsOn && !compareSndIsOn) {
// draw effective layer lines // draw effective layer lines
// drawEffectiveLayerLines(target); // drawEffectiveLayerLines(target);
target.drawWireframeShape(effectiveLayerLineShape, target.drawWireframeShape(effectiveLayerLineShape,
@ -1933,7 +1944,7 @@ public class NsharpSkewTPaneResource extends NsharpAbstractPaneResource {
} }
// cloud // cloud
if (graphConfigProperty.isCloud() == true && rscHandler.isGoodData() //#5929 if (graphConfigProperty.isCloud() == true && rscHandler.isGoodData() //#5929
&& !compareStnIsOn && !compareTmIsOn) { && !compareStnIsOn && !compareTmIsOn && !compareSndIsOn) {
if (cloudFMShape != null) if (cloudFMShape != null)
target.drawShadedShape(cloudFMShape, 1f); target.drawShadedShape(cloudFMShape, 1f);
if (cloudFMLabelShape != null) if (cloudFMLabelShape != null)
@ -1944,7 +1955,7 @@ public class NsharpSkewTPaneResource extends NsharpAbstractPaneResource {
target.drawShadedShape(cloudCEShape, 1f); target.drawShadedShape(cloudCEShape, 1f);
} }
if (graphConfigProperty.isOmega() == true if (graphConfigProperty.isOmega() == true
&& !compareStnIsOn && !compareTmIsOn) { && !compareStnIsOn && !compareTmIsOn && !compareSndIsOn) {
if (NsharpLoadDialog.getAccess() != null if (NsharpLoadDialog.getAccess() != null
&& (NsharpLoadDialog.getAccess() && (NsharpLoadDialog.getAccess()
.getActiveLoadSoundingType() == NsharpLoadDialog.MODEL_SND || NsharpLoadDialog .getActiveLoadSoundingType() == NsharpLoadDialog.MODEL_SND || NsharpLoadDialog
@ -1956,7 +1967,7 @@ public class NsharpSkewTPaneResource extends NsharpAbstractPaneResource {
} }
} else { } else {
// by default, draw everything // by default, draw everything
if (!compareStnIsOn && !compareTmIsOn) { if (!compareStnIsOn && !compareTmIsOn && !compareSndIsOn) {
if (editGraphOn) if (editGraphOn)
plotPressureTempEditPoints(target, world, plotPressureTempEditPoints(target, world,
NsharpConstants.color_red, TEMP_TYPE, NsharpConstants.color_red, TEMP_TYPE,
@ -2695,11 +2706,11 @@ public class NsharpSkewTPaneResource extends NsharpAbstractPaneResource {
// Chin 08/04/2014, fixed surface height plotting bug // Chin 08/04/2014, fixed surface height plotting bug
// also fixed to draw height mraker based on AGL (i.e. above surface // also fixed to draw height mraker based on AGL (i.e. above surface
// level) // level)
int sfcIndex = nsharpNative.nsharpLib.sfc(); int sfcIndex = 0; ////DR#17084 nnsharpNative.nsharpLib.sfc();
int sfcAsl = 0; int sfcAsl = 0;
if (sfcIndex >= 0 if (//DR#17084 sfcIndex >= 0
&& sfcIndex < soundingLys.size() //DR#17084 && sfcIndex < soundingLys.size()
&& soundingLys.get(sfcIndex).getGeoHeight() != NsharpNativeConstants.NSHARP_NATIVE_INVALID_DATA) { soundingLys.get(sfcIndex).getGeoHeight() != NsharpNativeConstants.NSHARP_NATIVE_INVALID_DATA) {
double y = world.mapY(NsharpWxMath.getSkewTXY( double y = world.mapY(NsharpWxMath.getSkewTXY(
soundingLys.get(sfcIndex).getPressure(), 0).y); soundingLys.get(sfcIndex).getPressure(), 0).y);
try { try {

View file

@ -11,6 +11,7 @@ package gov.noaa.nws.ncep.ui.nsharp.display.rsc;
* Date Ticket# Engineer Description * Date Ticket# Engineer Description
* ------- ------- -------- ----------- * ------- ------- -------- -----------
* 04/23/2012 229 Chin Chen Initial coding * 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> * </pre>
* *
@ -244,6 +245,32 @@ public class NsharpTimeStnPaneResource extends NsharpAbstractPaneResource {
target.clearClippingPlane(); 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") @SuppressWarnings("deprecation")
private void drawNsharpTimelinBox(IGraphicsTarget target, Rectangle rect) private void drawNsharpTimelinBox(IGraphicsTarget target, Rectangle rect)
@ -344,8 +371,8 @@ public class NsharpTimeStnPaneResource extends NsharpAbstractPaneResource {
x = x + xGap; x = x + xGap;
RGB tmLnColor = rscHandler.getElementColorMap().get(sta.name()); RGB tmLnColor = rscHandler.getElementColorMap().get(sta.name());
String tmDesStr = elm.getElementDescription(); String tmDesStr = elm.getElementDescription();
// d2dlite - convert timeDesStr for GUI display // DR17079: convert timeDesStr for GUI display
tmDesStr = convertTimeLineForDisplay(tmDesStr);
double tmX = x; double tmX = x;
if (compareTmIsOn if (compareTmIsOn

View file

@ -17,6 +17,7 @@
* 01/13/2014 Chin Chen TTR829- when interpolation, edit graph is allowed * 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. * 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. * 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> * </pre>
* *
* @author Chin Chen * @author Chin Chen
@ -185,10 +186,13 @@ public class NsharpPaletteWindow extends ViewPart implements SelectionListener,
graphModeBtnSkew.setEnabled(true); graphModeBtnSkew.setEnabled(true);
graphModeBtnIcing.setEnabled(true); graphModeBtnIcing.setEnabled(true);
graphModeBtnTurb.setEnabled(true); graphModeBtnTurb.setEnabled(true);
if(graphModeBtnHodo!=null)
graphModeBtnHodo.setEnabled(true);
if (currentGraphMode == NsharpConstants.GRAPH_SKEWT) { if (currentGraphMode == NsharpConstants.GRAPH_SKEWT) {
graphModeBtnSkew.setBackground(colorBlue); graphModeBtnSkew.setBackground(colorBlue);
graphModeBtnTurb.setBackground(colorGrey); graphModeBtnTurb.setBackground(colorGrey);
graphModeBtnIcing.setBackground(colorGrey); graphModeBtnIcing.setBackground(colorGrey);
if(graphModeBtnHodo!=null) graphModeBtnHodo.setBackground(colorGrey);
graphEditBtn.setEnabled(true); graphEditBtn.setEnabled(true);
dataEditBtn.setEnabled(true); dataEditBtn.setEnabled(true);
compareTmBtn.setEnabled(true); compareTmBtn.setEnabled(true);
@ -219,6 +223,7 @@ public class NsharpPaletteWindow extends ViewPart implements SelectionListener,
compareStnBtn.setEnabled(false); compareStnBtn.setEnabled(false);
interpBtn.setEnabled(false); interpBtn.setEnabled(false);
graphModeBtnIcing.setEnabled(false); graphModeBtnIcing.setEnabled(false);
if(graphModeBtnHodo!=null) graphModeBtnHodo.setEnabled(false);
graphModeBtnTurb.setEnabled(false); graphModeBtnTurb.setEnabled(false);
if (!imD2d) if (!imD2d)
unloadBtn.setEnabled(false); // FixMark:nearByStnCompSnd unloadBtn.setEnabled(false); // FixMark:nearByStnCompSnd
@ -232,6 +237,7 @@ public class NsharpPaletteWindow extends ViewPart implements SelectionListener,
interpBtn.setEnabled(false); interpBtn.setEnabled(false);
graphModeBtnIcing.setEnabled(false); graphModeBtnIcing.setEnabled(false);
graphModeBtnTurb.setEnabled(false); graphModeBtnTurb.setEnabled(false);
if(graphModeBtnHodo!=null) graphModeBtnHodo.setEnabled(false);
if (!imD2d) if (!imD2d)
unloadBtn.setEnabled(false); // FixMark:nearByStnCompSnd unloadBtn.setEnabled(false); // FixMark:nearByStnCompSnd
} else if (compareSndIsOn) { } else if (compareSndIsOn) {
@ -243,6 +249,7 @@ public class NsharpPaletteWindow extends ViewPart implements SelectionListener,
overlayBtn.setEnabled(false); overlayBtn.setEnabled(false);
interpBtn.setEnabled(false); interpBtn.setEnabled(false);
graphModeBtnIcing.setEnabled(false); graphModeBtnIcing.setEnabled(false);
if(graphModeBtnHodo!=null) graphModeBtnHodo.setEnabled(false);
graphModeBtnTurb.setEnabled(false); graphModeBtnTurb.setEnabled(false);
if (!imD2d) if (!imD2d)
unloadBtn.setEnabled(false); // FixMark:nearByStnCompSnd unloadBtn.setEnabled(false); // FixMark:nearByStnCompSnd
@ -255,6 +262,7 @@ public class NsharpPaletteWindow extends ViewPart implements SelectionListener,
overlayBtn.setEnabled(false); overlayBtn.setEnabled(false);
interpBtn.setEnabled(false); interpBtn.setEnabled(false);
graphModeBtnIcing.setEnabled(false); graphModeBtnIcing.setEnabled(false);
if(graphModeBtnHodo!=null) graphModeBtnHodo.setEnabled(false);
graphModeBtnTurb.setEnabled(false); graphModeBtnTurb.setEnabled(false);
if (!imD2d) if (!imD2d)
unloadBtn.setEnabled(false); // FixMark:nearByStnCompSnd unloadBtn.setEnabled(false); // FixMark:nearByStnCompSnd
@ -268,6 +276,7 @@ public class NsharpPaletteWindow extends ViewPart implements SelectionListener,
interpBtn.setEnabled(false); interpBtn.setEnabled(false);
graphModeBtnIcing.setEnabled(false); graphModeBtnIcing.setEnabled(false);
graphModeBtnTurb.setEnabled(false); graphModeBtnTurb.setEnabled(false);
if(graphModeBtnHodo!=null) graphModeBtnHodo.setEnabled(false);
if (!imD2d) if (!imD2d)
unloadBtn.setEnabled(false); // FixMark:nearByStnCompSnd unloadBtn.setEnabled(false); // FixMark:nearByStnCompSnd
} }
@ -707,6 +716,7 @@ public class NsharpPaletteWindow extends ViewPart implements SelectionListener,
dataEditBtn.setEnabled(true); dataEditBtn.setEnabled(true);
graphModeBtnIcing.setEnabled(true); graphModeBtnIcing.setEnabled(true);
graphModeBtnTurb.setEnabled(true); graphModeBtnTurb.setEnabled(true);
if(graphModeBtnHodo!=null) graphModeBtnHodo.setEnabled(true);
graphEditBtn.setText(EDIT_GRAPH_OFF); graphEditBtn.setText(EDIT_GRAPH_OFF);
currentGraphMode = NsharpConstants.GRAPH_SKEWT; currentGraphMode = NsharpConstants.GRAPH_SKEWT;
NsharpEditor editor = NsharpEditor.getActiveNsharpEditor(); NsharpEditor editor = NsharpEditor.getActiveNsharpEditor();
@ -948,6 +958,7 @@ public class NsharpPaletteWindow extends ViewPart implements SelectionListener,
dataEditBtn.setEnabled(false); dataEditBtn.setEnabled(false);
graphModeBtnTurb.setEnabled(false); graphModeBtnTurb.setEnabled(false);
graphModeBtnIcing.setEnabled(false); graphModeBtnIcing.setEnabled(false);
if(graphModeBtnHodo!=null) graphModeBtnHodo.setEnabled(false);
interpBtn.setEnabled(false); interpBtn.setEnabled(false);
cfgBtn.setEnabled(false); cfgBtn.setEnabled(false);
if (!imD2d) if (!imD2d)
@ -962,6 +973,7 @@ public class NsharpPaletteWindow extends ViewPart implements SelectionListener,
dataEditBtn.setEnabled(true); dataEditBtn.setEnabled(true);
graphModeBtnTurb.setEnabled(true); graphModeBtnTurb.setEnabled(true);
graphModeBtnIcing.setEnabled(true); graphModeBtnIcing.setEnabled(true);
if(graphModeBtnHodo!=null) graphModeBtnHodo.setEnabled(true);
interpBtn.setEnabled(true); interpBtn.setEnabled(true);
cfgBtn.setEnabled(true); cfgBtn.setEnabled(true);
if (!imD2d) if (!imD2d)
@ -1006,6 +1018,7 @@ public class NsharpPaletteWindow extends ViewPart implements SelectionListener,
dataEditBtn.setEnabled(false); dataEditBtn.setEnabled(false);
graphModeBtnTurb.setEnabled(false); graphModeBtnTurb.setEnabled(false);
graphModeBtnIcing.setEnabled(false); graphModeBtnIcing.setEnabled(false);
if(graphModeBtnHodo!=null)graphModeBtnHodo.setEnabled(false);
interpBtn.setEnabled(false); interpBtn.setEnabled(false);
cfgBtn.setEnabled(false); cfgBtn.setEnabled(false);
if (!imD2d) if (!imD2d)
@ -1020,6 +1033,7 @@ public class NsharpPaletteWindow extends ViewPart implements SelectionListener,
dataEditBtn.setEnabled(true); dataEditBtn.setEnabled(true);
graphModeBtnTurb.setEnabled(true); graphModeBtnTurb.setEnabled(true);
graphModeBtnIcing.setEnabled(true); graphModeBtnIcing.setEnabled(true);
if(graphModeBtnHodo!=null)graphModeBtnHodo.setEnabled(true);
interpBtn.setEnabled(true); interpBtn.setEnabled(true);
cfgBtn.setEnabled(true); cfgBtn.setEnabled(true);
if (!imD2d) if (!imD2d)
@ -1066,6 +1080,7 @@ public class NsharpPaletteWindow extends ViewPart implements SelectionListener,
dataEditBtn.setEnabled(false); dataEditBtn.setEnabled(false);
graphModeBtnTurb.setEnabled(false); graphModeBtnTurb.setEnabled(false);
graphModeBtnIcing.setEnabled(false); graphModeBtnIcing.setEnabled(false);
if(graphModeBtnHodo!=null)graphModeBtnHodo.setEnabled(false);
interpBtn.setEnabled(false); interpBtn.setEnabled(false);
cfgBtn.setEnabled(false); cfgBtn.setEnabled(false);
if (!imD2d) if (!imD2d)
@ -1080,6 +1095,7 @@ public class NsharpPaletteWindow extends ViewPart implements SelectionListener,
dataEditBtn.setEnabled(true); dataEditBtn.setEnabled(true);
graphModeBtnTurb.setEnabled(true); graphModeBtnTurb.setEnabled(true);
graphModeBtnIcing.setEnabled(true); graphModeBtnIcing.setEnabled(true);
if(graphModeBtnHodo!=null)graphModeBtnHodo.setEnabled(true);
interpBtn.setEnabled(true); interpBtn.setEnabled(true);
cfgBtn.setEnabled(true); cfgBtn.setEnabled(true);
if (!imD2d) if (!imD2d)
@ -1124,6 +1140,7 @@ public class NsharpPaletteWindow extends ViewPart implements SelectionListener,
dataEditBtn.setEnabled(false); dataEditBtn.setEnabled(false);
graphModeBtnTurb.setEnabled(false); graphModeBtnTurb.setEnabled(false);
graphModeBtnIcing.setEnabled(false); graphModeBtnIcing.setEnabled(false);
if(graphModeBtnHodo!=null)graphModeBtnHodo.setEnabled(false);
interpBtn.setEnabled(false); interpBtn.setEnabled(false);
cfgBtn.setEnabled(false); cfgBtn.setEnabled(false);
if (!imD2d) if (!imD2d)
@ -1138,6 +1155,7 @@ public class NsharpPaletteWindow extends ViewPart implements SelectionListener,
dataEditBtn.setEnabled(true); dataEditBtn.setEnabled(true);
graphModeBtnTurb.setEnabled(true); graphModeBtnTurb.setEnabled(true);
graphModeBtnIcing.setEnabled(true); graphModeBtnIcing.setEnabled(true);
if(graphModeBtnHodo!=null)graphModeBtnHodo.setEnabled(true);
interpBtn.setEnabled(true); interpBtn.setEnabled(true);
cfgBtn.setEnabled(true); cfgBtn.setEnabled(true);
if (!imD2d) if (!imD2d)

View file

@ -36,6 +36,7 @@
#20130624 1966 rferrel The acars pattern changed to place files in the proper subdirectories. #20130624 1966 rferrel The acars pattern changed to place files in the proper subdirectories.
# Name changes to reflect plugin names for modelsounding, goessounding, poessounding. # Name changes to reflect plugin names for modelsounding, goessounding, poessounding.
#20140424 3068 dgilling Add pattern for MetOp-B ASCAT T winds. #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 # AWIPS 1 PATTERN GRAPHIC ^[PQ].* /redbook/Raw
# PGNA00 KWNS 010001 !redbook 1_1/NMCGPHMCD/MCDSUM/PXSF001CN/20110201 0001 # 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}) (..)(..)(..) 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 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 # AWIPS1: TEXT ^[ABCFMNRSUVW]......[KPTMC] /text/NO_STORE
# TEXT ^[ABCFMNRSUVW].....[KPTMC] /text/NO_STORE # TEXT ^[ABCFMNRSUVW].....[KPTMC] /text/NO_STORE
# TEXT ^DF.* /text/NO_STORE # TEXT ^DF.* /text/NO_STORE