diff --git a/RadarServer/build.rcm/.project b/RadarServer/build.rcm/.project deleted file mode 100644 index c7ecd07ebf..0000000000 --- a/RadarServer/build.rcm/.project +++ /dev/null @@ -1,15 +0,0 @@ - - - build.rcm - - - org.apache.activemq - org.itadaki.bzip2 - RadarServer - RadarServerWithMQ - - - - - - diff --git a/RadarServer/build.rcm/bits/bin/importAwips1 b/RadarServer/build.rcm/bits/bin/importAwips1 deleted file mode 100644 index 24f42e0145..0000000000 --- a/RadarServer/build.rcm/bits/bin/importAwips1 +++ /dev/null @@ -1,49 +0,0 @@ -#!/bin/sh -exe=$0 -while test -L "$exe"; do - exe=`readlink "$exe"` -done -bin_dir=`dirname "$exe"` -bin_dir=`cd "$bin_dir";pwd` -rs_home_dir=`cd "$bin_dir/..";pwd` - -props=com.raytheon.rcm - -lib_dir="$rs_home_dir/lib" -cfg_dir="$rs_home_dir/data/config" -cp= - -for jar in "$lib_dir"/*.jar; do - cp=$cp:$jar -done - -java=/awips2/java/bin/java -decompress_products=yes - -config_file="$cfg_dir/start-config" -. "$config_file" || { echo "could not read $config_file"; exit 1 ;} - -if test -n "$edex_endpoint_arg"; then - edex_endpoint_arg_2="-D$props.edexRadarEndpoint=$edex_endpoint_arg" -fi -if test -z "$log_file"; then - log_file=/dev/null -fi -if test -n "$configuration_provider"; then - cfg_provider_arg_2="-D$props.server.RadarServer.configurationProviderClass=$configuration_provider" -fi -if test -n "$awips1_root"; then - awips1_root_arg_2="-D$props.awips1.resourceRoot=$awips1_root" -fi -if test -n "$awips1_site"; then - awips1_site_arg_2="-D$props.awips1.FXA_LOCAL_SITE=$awips1_site" -fi - -exec $java -cp "$cp" \ - "-D$props.configDir=$cfg_dir" \ - "-D$props.awips1.decompressRadarProducts=$decompress_products" \ - $edex_endpoint_arg_2 \ - $cfg_provider_arg_2 \ - $awips1_root_arg_2 \ - $awips1_site_arg_2 \ - com.raytheon.rcm.config.importer.Importer diff --git a/RadarServer/build.rcm/bits/bin/start b/RadarServer/build.rcm/bits/bin/start deleted file mode 100644 index f1a490ea5b..0000000000 --- a/RadarServer/build.rcm/bits/bin/start +++ /dev/null @@ -1,76 +0,0 @@ -#!/bin/sh -exe=$0 -while test -L "$exe"; do - exe=`readlink "$exe"` -done -bin_dir=`dirname "$exe"` -bin_dir=`cd "$bin_dir";pwd` -rs_home_dir=`cd "$bin_dir/..";pwd` - -props=com.raytheon.rcm - -lib_dir="$rs_home_dir/lib" -cfg_dir="$rs_home_dir/data/config" -cp= - -for jar in "$lib_dir"/*.jar; do - cp=$cp:$jar -done - -cp="$cfg_dir/res:$cp" - -JAVA_INSTALL="/awips2/java" -java=${JAVA_INSTALL}/bin/java -decompress_products=yes - -config_file="$cfg_dir/start-config" -. "$config_file" || { echo "could not read $config_file"; exit 1 ;} - -if test -n "$edex_endpoint_arg"; then - edex_endpoint_arg_2="-D$props.edexRadarEndpoint=$edex_endpoint_arg" -fi -if test -z "$log_dir"; then - log_dir=$rs_home_dir/data/logs - echo "Writing logs at $log_dir" -fi -if test -n "$configuration_provider"; then - cfg_provider_arg_2="-D$props.server.RadarServer.configurationProviderClass=$configuration_provider" -fi -if test -n "$awips1_root"; then - awips1_root_arg_2="-D$props.awips1.resourceRoot=$awips1_root" -fi -if test -n "$awips1_site"; then - awips1_site_arg_2="-D$props.awips1.FXA_LOCAL_SITE=$awips1_site" -fi -if [ ! -f "$java" ]; then - echo "Java is not correct : $java" - exit -fi - -if [ -f "$rs_home_dir/data/radarserver-pid" ]; then - pid=`cat $rs_home_dir/data/radarserver-pid` - echo "Radar Server already started at process $pid. Run stop before restarting." - exit 0 -fi - -# giving rw permissions to all users -umask 000 - -$java -cp "$cp" \ - "-D$props.configDir=$cfg_dir" \ - "-D$props.awips1.decompressRadarProducts=$decompress_products" \ - "-D$props.logDir=$log_dir" \ - "-Dlogback.configurationFile=logback.xml" \ - "-Dqpid.dest_syntax=BURL" \ - "-Dawips2_fxa=$awips2_fxa" \ - $edex_endpoint_arg_2 \ - $cfg_provider_arg_2 \ - $awips1_root_arg_2 \ - $awips1_site_arg_2 \ - com.raytheon.rcm.mqsrvr.MQServer > /dev/null 2>&1 & - -pid=$! - -echo "RadarServer started at process $pid" -echo "$pid" > "$rs_home_dir/data/radarserver-pid" - diff --git a/RadarServer/build.rcm/bits/bin/stop b/RadarServer/build.rcm/bits/bin/stop deleted file mode 100644 index c3eddbf9dd..0000000000 --- a/RadarServer/build.rcm/bits/bin/stop +++ /dev/null @@ -1,26 +0,0 @@ -#!/bin/sh -exe=$0 -while test -L "$exe"; do - exe=`readlink "$exe"` -done -bin_dir=`dirname "$exe"` -bin_dir=`cd "$bin_dir";pwd` -rs_home_dir=`cd "$bin_dir/..";pwd` - -pid_file=$rs_home_dir/data/radarserver-pid -if [ -f $pid_file ] -then - pid=`cat "$pid_file"` - if test -n "$pid"; then - rm -f "$pid_file" - if kill "$pid"; then - echo "Killing radar server at process $pid, also removing pid file." - exit 0 - fi - else - echo "Cannot find pid of radar server, please kill it manually." - fi -else - echo "File does not exist to find pid. It may not be running or it might need to be killed manually." -fi -exit 1 diff --git a/RadarServer/build.rcm/build.bat b/RadarServer/build.rcm/build.bat deleted file mode 100644 index 1843edad49..0000000000 --- a/RadarServer/build.rcm/build.bat +++ /dev/null @@ -1,18 +0,0 @@ -setlocal - -SET ECLIPSE_HOME=%CD%\eclipse -SET BUILDER=%CD% - -cd %ECLIPSE_HOME%\plugins\org.eclipse.pde.build_* -SET PDE_BUILD=%CD% -cd %BUILDER% - -java -jar %ECLIPSE_HOME%\plugins\org.eclipse.equinox.launcher_*.jar ^ --application org.eclipse.ant.core.antRunner ^ --buildfile %PDE_BUILD%\scripts\productBuild\productBuild.xml ^ --DbaseLocation=%ECLIPSE_HOME% ^ --Dbuilder=%BUILDER% ^ --DbuildDirectory=%BUILDER%\tmp ^ --Dbase=%BUILDER% - -endlocal \ No newline at end of file diff --git a/RadarServer/build.rcm/build.properties b/RadarServer/build.rcm/build.properties deleted file mode 100644 index 83ae4779e2..0000000000 --- a/RadarServer/build.rcm/build.properties +++ /dev/null @@ -1,213 +0,0 @@ -############################################################################### -# Copyright (c) 2003, 2006 IBM Corporation and others. -# All rights reserved. This program and the accompanying materials -# are made available under the terms of the Eclipse Public License v1.0 -# which accompanies this distribution, and is available at -# http://www.eclipse.org/legal/epl-v10.html -# -# Contributors: -# IBM Corporation - initial API and implementation -############################################################################### -##################### -# Parameters describing how and where to execute the build. -# Typical users need only update the following properties: -# baseLocation - where things you are building against are installed -# bootclasspath - The base jars to compile against (typicaly rt.jar) -# configs - the list of {os, ws, arch} configurations to build. -# -# Of course any of the settings here can be overridden by spec'ing -# them on the command line (e.g., -DbaseLocation=d:/eclipse - -############# PRODUCT/PACKAGING CONTROL ############# -product=/com.raytheon.rcm.product/rcm.product -runPackager=false - -#Set the name of the archive that will result from the product build. -#archiveNamePrefix= - -# The prefix that will be used in the generated archive. -archivePrefix=rcm - -# The location underwhich all of the build output will be collected. -collectingFolder=${archivePrefix} - -# The list of {os, ws, arch} configurations to build. This -# value is a '&' separated list of ',' separate triples. For example, -# configs=win32,win32,x86 & linux,motif,x86 -# By default the value is *,*,* -#configs = *, *, * -configs=linux, gtk, x86 -# linux, gtk, x86_64 & \ -# linux, motif, x86 & \ -# solaris, motif, sparc & \ -# solaris, gtk, sparc & \ -# aix, motif, ppc & \ -# hpux, motif, PA_RISC & \ -# macosx, carbon, ppc - -# By default PDE creates one archive (result) per entry listed in the configs property. -# Setting this value to try will cause PDE to only create one output containing all -# artifacts for all the platforms listed in the configs property. -#groupConfigurations=true - -#The format of the archive. By default a zip is created using antZip. -#The list can only contain the configuration for which the desired format is different than zip. -archivesFormat=linux, gtk, x86 - folder -# linux, gtk, ppc - antZip &\ -# linux, gtk, x86 - antZip& \ -# linux, gtk, x86_64 - antZip& \ -# linux, motif, x86 - antZip& \ -# solaris, motif, sparc - antZip& \ -# solaris, gtk, sparc - antZip& \ -# aix, motif, ppc - antZip& \ -# hpux, motif, PA_RISC - antZip& \ -# macosx, carbon, ppc - antZip - -#Set to true if you want the output to be ready for an update jar (no site.xml generated) -#outputUpdateJars = false - -#Set to true for Jnlp generation -#codebase should be a URL that will be used as the root of all relative URLs in the output. -#generateJnlp=false -#jnlp.codebase= -#jnlp.j2se= -#jnlp.locale= - -#Set to true if you want to sign jars -#signJars=false -#sign.alias= -#sign.keystore= -#sign.storepass= - -#Arguments to send to the zip executable -zipargs= - -#Arguments to send to the tar executable -tarargs= - -#Control the creation of a file containing the version included in each configuration - on by default -#generateVersionsLists=false - -############## BUILD NAMING CONTROL ################ - -# Type of build. Used in naming the build output. Typically this value is -# one of I, N, M, S, ... -buildType=I - -# ID of the build. Used in naming the build output. -buildId=RCM - -# Label for the build. Used in naming the build output -buildLabel=${buildType}.${buildId} - -# Timestamp for the build. Used in naming the build output -timestamp=007 - -#The value to be used for the qualifier of a plugin or feature when you want to override the value computed by pde. -#The value will only be applied to plugin or features indicating build.properties, qualifier = context -#forceContextQualifier= - -#Enable / disable the generation of a suffix for the features that use .qualifier. -#The generated suffix is computed according to the content of the feature -#generateFeatureVersionSuffix=true - -############# BASE CONTROL ############# -# Settings for the base Eclipse components and Java class libraries -# against which you are building. -# Base location for anything the build needs to compile against. For example, -# in most RCP app or a plug-in, the baseLocation should be the location of a previously -# installed Eclipse against which the application or plug-in code will be compiled and the RCP delta pack. - -baseLocation=${base}/eclipse -#Os/Ws/Arch/nl of the eclipse specified by baseLocation -baseos=linux -basews=gtk -basearch=x86 - -#this property indicates whether you want the set of plug-ins and features to be considered during the build to be limited to the ones reachable from the features / plugins being built -filteredDependencyCheck=false - -#pluginPath is a list of locations in which to find plugins and features. This list is separated by the platform file separator (; or :) -#a location is one of: -#- the location of the jar or folder that is the plugin or feature : /path/to/foo.jar or /path/to/foo -#- a directory that contains a /plugins or /features subdirectory -#- the location of a feature.xml, or for 2.1 style plugins, the plugin.xml or fragment.xml -#pluginPath= - -skipBase=true -eclipseURL= -eclipseBuildId= -eclipseBaseURL=${eclipseURL}/eclipse-platform-${eclipseBuildId}-win32.zip - - -############# MAP FILE CONTROL ################ -# This section defines CVS tags to use when fetching the map files from the repository. -# If you want to fetch the map file from repository / location, change the getMapFiles target in the customTargets.xml - -skipMaps=true -mapsRepo=:pserver:anonymous@example.com/path/to/repo -mapsRoot=path/to/maps -mapsCheckoutTag=HEAD - -#tagMaps=true -mapsTagTag=v${buildId} - - -############ REPOSITORY CONTROL ############### -# This section defines properties parameterizing the repositories where plugins, fragments -# bundles and features are being obtained from. - -# The tags to use when fetching elements to build. -# By default thebuilder will use whatever is in the maps. -# This value takes the form of a comma separated list of repository identifier (like used in the map files) and the -# overriding value -# For example fetchTag=CVS=HEAD, SVN=v20050101 -# fetchTag=HEAD -skipFetch=true - - -############# JAVA COMPILER OPTIONS ############## -# The location of the Java jars to compile against. Typically the rt.jar for your JDK/JRE -#bootclasspath=${java.home}/lib/rt.jar - -# specific JRE locations to compile against. These values are used to compile bundles specifying a -# Bundle-RequiredExecutionEnvironment. Uncomment and set values for environments that you support -#CDC-1.0/Foundation-1.0= /path/to/rt.jar -#CDC-1.1/Foundation-1.1= -#OSGi/Minimum-1.0= -#OSGi/Minimum-1.1= -#JRE-1.1= -#J2SE-1.2= -#J2SE-1.3= -#J2SE-1.4= -#J2SE-1.5= -#JavaSE-1.6= -#PersonalJava-1.1= -#PersonalJava-1.2= -#CDC-1.0/PersonalBasis-1.0= -#CDC-1.0/PersonalJava-1.0= -#CDC-1.1/PersonalBasis-1.1= -#CDC-1.1/PersonalJava-1.1= - -# Specify the output format of the compiler log when eclipse jdt is used -logExtension=.log - -# Whether or not to include debug info in the output jars -javacDebugInfo=false - -# Whether or not to fail the build if there are compiler errors -javacFailOnError=true - -# Enable or disable verbose mode of the compiler -javacVerbose=true - -# Extra arguments for the compiler. These are specific to the java compiler being used. -#compilerArg= - -# Default value for the version of the source code. This value is used when compiling plug-ins that do not set the Bundle-RequiredExecutionEnvironment or set javacSource in build.properties -javacSource=1.7 - -# Default value for the version of the byte code targeted. This value is used when compiling plug-ins that do not set the Bundle-RequiredExecutionEnvironment or set javacTarget in build.properties. -javacTarget=1.7 - - diff --git a/RadarServer/build.rcm/build.rcm.ecl b/RadarServer/build.rcm/build.rcm.ecl deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/RadarServer/build.rcm/build.sh b/RadarServer/build.rcm/build.sh deleted file mode 100644 index 66acbc60be..0000000000 --- a/RadarServer/build.rcm/build.sh +++ /dev/null @@ -1,70 +0,0 @@ -#!/bin/sh -## -# 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. -## -USAGE="Usage: `basename $0` [options]\nOptions:\n -\t-eclipse=ECLIPSEPATH\tSets the full path to the eclipse directory REQUIRED\n" - -OPTS_FOR_ANT="" - -for i in $* -do - case $i in - -D*) - OPTS_FOR_ANT=`echo "$OPTS_FOR_ANT $i "` - ;; - -eclipse=*) - ECLIPSE_HOME=`echo $i | sed 's/[-a-zA-Z0-9]*=//'` - ;; - -vvv) - VERBOSE=true - ;; - *) - # unknown option - ;; - esac -done - -if [ -z $ECLIPSE_HOME ]; then - echo -e $USAGE - exit 1 -fi - -if [ -n $VERBOSE ]; then - echo "AntOpts: '$OPTS_FOR_ANT'" -fi - -rm -rf tmp - -export BUILDER=`pwd` - -#get name of org.eclipse.equinox.launcher_*.jar in ECLIPSE_HOME with version label -export LAUNCHER_JAR=`ls $ECLIPSE_HOME/plugins/org.eclipse.equinox.launcher_*.jar` - -#get name of org.eclipse.pde.build in ECLIPSE_HOME with version label -export PDE_BUILD=`ls -d $ECLIPSE_HOME/plugins/org.eclipse.pde.build_*` - -#Execute the build -java -jar $LAUNCHER_JAR -application org.eclipse.ant.core.antRunner \ --buildfile ${PDE_BUILD}/scripts/productBuild/productBuild.xml \ --DbaseLocation=$ECLIPSE_HOME \ --Dbuilder=$BUILDER \ --DbuildDirectory=${BUILDER}/tmp \ --Dbase=$BUILDER \ -$OPTS_FOR_ANT diff --git a/RadarServer/build.rcm/build.xml b/RadarServer/build.rcm/build.xml deleted file mode 100644 index b02eaf8803..0000000000 --- a/RadarServer/build.rcm/build.xml +++ /dev/null @@ -1,285 +0,0 @@ - - - -]> - - - - - - - - - - - - - - - - - - &substitute-targets; - - - - Builds a deployment of the RCM for packaging - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/RadarServer/build.rcm/cfgbits/data/config/drop-ins/KOUN.clear-air.dual-pol.VCP31 b/RadarServer/build.rcm/cfgbits/data/config/drop-ins/KOUN.clear-air.dual-pol.VCP31 deleted file mode 100644 index 1b376cec7b..0000000000 --- a/RadarServer/build.rcm/cfgbits/data/config/drop-ins/KOUN.clear-air.dual-pol.VCP31 +++ /dev/null @@ -1,76 +0,0 @@ -RPS List dp_vcp32.VCP32.rps created 2007:12:05:19:06:12 ... 76 products - An RPS list contains the fields: Prod-Name, Mnemonic, Prod-Code - Number of Data Levels, Resolution, Layer Code, Elevation, Contour Interval, - Priority, Req Interval, Map, Lower Layer, Upper Layer, multCut, endHour, timeSpan - The record format is: '%-39s %-3s%4d%4d%6d %c%6d%7d%2d%2d%c%3d%3d %c%7d%7d' -Reflectivity (Z) Z 19 16 100 - 5 -1 0 1N -1 -1 N -1 0 -Reflectivity (Z) Z 19 16 100 - 15 -1 0 1N -1 -1 N -1 0 -Reflectivity (Z) Z 19 16 100 - 25 -1 0 1N -1 -1 N -1 0 -Reflectivity (Z) Z 19 16 100 - 35 -1 0 1N -1 -1 N -1 0 -Reflectivity (Z) Z 20 16 200 - 5 -1 0 1N -1 -1 N -1 0 -Velocity (V) V 27 16 100 - 5 -1 0 1N -1 -1 N -1 0 -Velocity (V) V 27 16 100 - 15 -1 0 1N -1 -1 N -1 0 -Velocity (V) V 27 16 100 - 25 -1 0 1N -1 -1 N -1 0 -Velocity (V) V 27 16 100 - 35 -1 0 1N -1 -1 N -1 0 -Storm Rel Velocity (SRM) SRM 56 16 100 - 5 -1 0 1N -1 -1 N -1 0 -Storm Rel Velocity (SRM) SRM 56 16 100 - 15 -1 0 1N -1 -1 N -1 0 -Storm Rel Velocity (SRM) SRM 56 16 100 - 25 -1 0 1N -1 -1 N -1 0 -Storm Rel Velocity (SRM) SRM 56 16 100 - 35 -1 0 1N -1 -1 N -1 0 -Composite Ref (CZ) CZ 37 16 100 - -1 -1 0 1N 2 -1 N -1 0 -Composite Ref (CZ) CZ 38 16 400 - -1 -1 0 1N 2 -1 N -1 0 -Lyr Comp Ref Max (LRM) Level 1 LRM 65 8 0 L -1 -1 0 1N -1 -1 N -1 0 -Lyr Comp Ref Max (LRM) Level 2 LRM 66 8 0 M -1 -1 0 1N -1 -1 N -1 0 -Lyr Comp Ref Max (LRM) Level 3 LRM 90 8 0 H -1 -1 0 1N -1 -1 N -1 0 -Lyr Comp Ref MAX (APR) APR 67 16 0 L -1 -1 0 1N -1 -1 N -1 0 -Echo Tops (ET) ET 41 16 0 - -1 -1 0 1N 2 -1 N -1 0 -Vert Integ Liq (VIL) VIL 57 16 0 - -1 -1 0 1N 2 -1 N -1 0 -One Hour Precip (OHP) OHP 78 16 0 - -1 -1 0 1N -1 -1 N -1 0 -Storm Total Precip (STP) STP 80 16 0 - -1 -1 0 1N -1 -1 N -1 0 -VAD Wind Profile (VWP) VWP 48 0 0 - -1 -1 0 1N -1 -1 N -1 0 -Digital Precip Array (DPA) DPA 81 256 400 - -1 -1 0 1N -1 -1 N -1 0 -Velocity (V) V 25 16 100 - 5 -1 0 1N -1 -1 N -1 0 -Base Spectrum Width (SW) SW 28 8 100 - 5 -1 0 1N -1 -1 N -1 0 -Base Spectrum Width (SW) SW 30 8 100 - 5 -1 0 1N -1 -1 N -1 0 -Reflectivity (Z) Z 94 256 100 - 5 -1 0 1N -1 -1 N -1 0 -Reflectivity (Z) Z 94 256 100 - 15 -1 0 1N -1 -1 N -1 0 -Reflectivity (Z) Z 94 256 100 - 25 -1 0 1N -1 -1 N -1 0 -Reflectivity (Z) Z 94 256 100 - 35 -1 0 1N -1 -1 N -1 0 -Reflectivity (Z) Z 94 256 100 - 45 -1 0 1N -1 -1 N -1 0 -Velocity (V) V 99 256 25 - 5 -1 0 1N -1 -1 N -1 0 -Velocity (V) V 99 256 25 - 15 -1 0 1N -1 -1 N -1 0 -Velocity (V) V 99 256 25 - 25 -1 0 1N -1 -1 N -1 0 -Velocity (V) V 99 256 25 - 35 -1 0 1N -1 -1 N -1 0 -Velocity (V) V 99 256 25 - 45 -1 0 1N -1 -1 N -1 0 -Super Res Reflectivity (Z) HZ 153 256 25 - 5 -1 0 1N -1 -1 N -1 0 -Super Res Reflectivity (Z) HZ 153 256 25 - 15 -1 0 1N -1 -1 N -1 0 -Super Res Velocity (V) HV 154 256 25 - 5 -1 0 1N -1 -1 N -1 0 -Super Res Velocity (V) HV 154 256 25 - 15 -1 0 1N -1 -1 N -1 0 -Super Res Spec Width (SW) HSW 155 256 25 - 5 -1 0 1N -1 -1 N -1 0 -Super Res Spec Width (SW) HSW 155 256 25 - 15 -1 0 1N -1 -1 N -1 0 -Spectrum Width (SW) SW 30 8 100 - 15 -1 0 1N -1 -1 N -1 0 -Spectrum Width (SW) SW 28 8 25 - 15 -1 0 1N -1 -1 N -1 0 -Digital Vert Integ Liq (DVL) DVL 134 256 100 - -1 -1 0 1N -1 -1 N -1 0 -Digital Hybrid Scan Refl (DHR) DHR 32 256 100 - -1 -1 0 1N -1 -1 N -1 0 -Enhanced Echo Tops (EET) EET 135 256 100 - -1 -1 0 1N -1 -1 N -1 0 -Digital Meso Detection (DMD) DMD 149 0 0 - 16384 -1 0 1N 2 -1 N -1 0 -TVS Rapid Update (TRU) TRU 143 0 0 - 16384 -1 0 1N -1 -1 N -1 0 -User Selectable Lyr Refl (ULR) ULR 137 16 100 - -1 -1 0 1N 14 70 N -1 0 -Storm Total Precip (STP) STP 138 256 200 - -1 -1 0 1N -1 -1 N -1 0 -1-Hour Snow-Water Equiv (OSW) OSW 144 16 100 - -1 -1 0 1N -1 -1 N -1 0 -1-Hour Snow Depth (OSD) OSD 145 16 100 - -1 -1 0 1N -1 -1 N -1 0 -Storm Tot Snow Depth (SSD) SSD 147 16 100 - -1 -1 0 1N -1 -1 N -1 0 -Storm Tot Snow-Water Equiv (SSW) SSW 146 16 100 - -1 -1 0 1N -1 -1 N -1 0 -Differential Refl (ZDR) ZDR 159 256 25 - 16384 -1 0 1N -1 -1 N -1 0 -Correlation Coeff (CC) CC 161 256 25 - 16384 -1 0 1N -1 -1 N -1 0 -Specific Diff Phase (KDP) KDP 163 256 25 - 16384 -1 0 1N -1 -1 N -1 0 -Hydrometeor Class (HC) HC 165 256 25 - 16384 -1 0 1N -1 -1 N -1 0 -Melting Layer (ML) ML 166 0 0 - 16384 -1 0 1N -1 -1 N -1 0 -Hybrid Hydrometeor Class (HHC) HHC 177 256 25 - -1 -1 0 1N -1 -1 N -1 0 -Digital Inst Precip Rate (DPR) DPR 176 0 25 - -1 -1 0 1N -1 -1 N -1 0 -One Hour Accum (OHA) OHA 169 16 200 - -1 -1 0 1N -1 -1 N -1 0 -User Select Accum (DUA) DUA 173 256 25 - -1 -1 0 1N -1 -1 N -1 60 -User Select Accum (DUA) DUA 173 256 25 - -1 -1 0 1N -1 -1 N -1 180 -Storm Total Accum (STA) STA 171 16 200 - -1 -1 0 1N -1 -1 N -1 0 -Storm Total Accum (DSA) STA 172 256 25 - -1 -1 0 1N -1 -1 N -1 0 -One Hour Diff (DOD) DOD 174 256 25 - -1 -1 0 1N -1 -1 N -1 0 -Storm Total Diff (DSD) DSD 175 256 25 - -1 -1 0 1N -1 -1 N -1 0 diff --git a/RadarServer/build.rcm/cfgbits/data/config/drop-ins/KOUN.clear-air.dual-pol.VCP32 b/RadarServer/build.rcm/cfgbits/data/config/drop-ins/KOUN.clear-air.dual-pol.VCP32 deleted file mode 100644 index 1b376cec7b..0000000000 --- a/RadarServer/build.rcm/cfgbits/data/config/drop-ins/KOUN.clear-air.dual-pol.VCP32 +++ /dev/null @@ -1,76 +0,0 @@ -RPS List dp_vcp32.VCP32.rps created 2007:12:05:19:06:12 ... 76 products - An RPS list contains the fields: Prod-Name, Mnemonic, Prod-Code - Number of Data Levels, Resolution, Layer Code, Elevation, Contour Interval, - Priority, Req Interval, Map, Lower Layer, Upper Layer, multCut, endHour, timeSpan - The record format is: '%-39s %-3s%4d%4d%6d %c%6d%7d%2d%2d%c%3d%3d %c%7d%7d' -Reflectivity (Z) Z 19 16 100 - 5 -1 0 1N -1 -1 N -1 0 -Reflectivity (Z) Z 19 16 100 - 15 -1 0 1N -1 -1 N -1 0 -Reflectivity (Z) Z 19 16 100 - 25 -1 0 1N -1 -1 N -1 0 -Reflectivity (Z) Z 19 16 100 - 35 -1 0 1N -1 -1 N -1 0 -Reflectivity (Z) Z 20 16 200 - 5 -1 0 1N -1 -1 N -1 0 -Velocity (V) V 27 16 100 - 5 -1 0 1N -1 -1 N -1 0 -Velocity (V) V 27 16 100 - 15 -1 0 1N -1 -1 N -1 0 -Velocity (V) V 27 16 100 - 25 -1 0 1N -1 -1 N -1 0 -Velocity (V) V 27 16 100 - 35 -1 0 1N -1 -1 N -1 0 -Storm Rel Velocity (SRM) SRM 56 16 100 - 5 -1 0 1N -1 -1 N -1 0 -Storm Rel Velocity (SRM) SRM 56 16 100 - 15 -1 0 1N -1 -1 N -1 0 -Storm Rel Velocity (SRM) SRM 56 16 100 - 25 -1 0 1N -1 -1 N -1 0 -Storm Rel Velocity (SRM) SRM 56 16 100 - 35 -1 0 1N -1 -1 N -1 0 -Composite Ref (CZ) CZ 37 16 100 - -1 -1 0 1N 2 -1 N -1 0 -Composite Ref (CZ) CZ 38 16 400 - -1 -1 0 1N 2 -1 N -1 0 -Lyr Comp Ref Max (LRM) Level 1 LRM 65 8 0 L -1 -1 0 1N -1 -1 N -1 0 -Lyr Comp Ref Max (LRM) Level 2 LRM 66 8 0 M -1 -1 0 1N -1 -1 N -1 0 -Lyr Comp Ref Max (LRM) Level 3 LRM 90 8 0 H -1 -1 0 1N -1 -1 N -1 0 -Lyr Comp Ref MAX (APR) APR 67 16 0 L -1 -1 0 1N -1 -1 N -1 0 -Echo Tops (ET) ET 41 16 0 - -1 -1 0 1N 2 -1 N -1 0 -Vert Integ Liq (VIL) VIL 57 16 0 - -1 -1 0 1N 2 -1 N -1 0 -One Hour Precip (OHP) OHP 78 16 0 - -1 -1 0 1N -1 -1 N -1 0 -Storm Total Precip (STP) STP 80 16 0 - -1 -1 0 1N -1 -1 N -1 0 -VAD Wind Profile (VWP) VWP 48 0 0 - -1 -1 0 1N -1 -1 N -1 0 -Digital Precip Array (DPA) DPA 81 256 400 - -1 -1 0 1N -1 -1 N -1 0 -Velocity (V) V 25 16 100 - 5 -1 0 1N -1 -1 N -1 0 -Base Spectrum Width (SW) SW 28 8 100 - 5 -1 0 1N -1 -1 N -1 0 -Base Spectrum Width (SW) SW 30 8 100 - 5 -1 0 1N -1 -1 N -1 0 -Reflectivity (Z) Z 94 256 100 - 5 -1 0 1N -1 -1 N -1 0 -Reflectivity (Z) Z 94 256 100 - 15 -1 0 1N -1 -1 N -1 0 -Reflectivity (Z) Z 94 256 100 - 25 -1 0 1N -1 -1 N -1 0 -Reflectivity (Z) Z 94 256 100 - 35 -1 0 1N -1 -1 N -1 0 -Reflectivity (Z) Z 94 256 100 - 45 -1 0 1N -1 -1 N -1 0 -Velocity (V) V 99 256 25 - 5 -1 0 1N -1 -1 N -1 0 -Velocity (V) V 99 256 25 - 15 -1 0 1N -1 -1 N -1 0 -Velocity (V) V 99 256 25 - 25 -1 0 1N -1 -1 N -1 0 -Velocity (V) V 99 256 25 - 35 -1 0 1N -1 -1 N -1 0 -Velocity (V) V 99 256 25 - 45 -1 0 1N -1 -1 N -1 0 -Super Res Reflectivity (Z) HZ 153 256 25 - 5 -1 0 1N -1 -1 N -1 0 -Super Res Reflectivity (Z) HZ 153 256 25 - 15 -1 0 1N -1 -1 N -1 0 -Super Res Velocity (V) HV 154 256 25 - 5 -1 0 1N -1 -1 N -1 0 -Super Res Velocity (V) HV 154 256 25 - 15 -1 0 1N -1 -1 N -1 0 -Super Res Spec Width (SW) HSW 155 256 25 - 5 -1 0 1N -1 -1 N -1 0 -Super Res Spec Width (SW) HSW 155 256 25 - 15 -1 0 1N -1 -1 N -1 0 -Spectrum Width (SW) SW 30 8 100 - 15 -1 0 1N -1 -1 N -1 0 -Spectrum Width (SW) SW 28 8 25 - 15 -1 0 1N -1 -1 N -1 0 -Digital Vert Integ Liq (DVL) DVL 134 256 100 - -1 -1 0 1N -1 -1 N -1 0 -Digital Hybrid Scan Refl (DHR) DHR 32 256 100 - -1 -1 0 1N -1 -1 N -1 0 -Enhanced Echo Tops (EET) EET 135 256 100 - -1 -1 0 1N -1 -1 N -1 0 -Digital Meso Detection (DMD) DMD 149 0 0 - 16384 -1 0 1N 2 -1 N -1 0 -TVS Rapid Update (TRU) TRU 143 0 0 - 16384 -1 0 1N -1 -1 N -1 0 -User Selectable Lyr Refl (ULR) ULR 137 16 100 - -1 -1 0 1N 14 70 N -1 0 -Storm Total Precip (STP) STP 138 256 200 - -1 -1 0 1N -1 -1 N -1 0 -1-Hour Snow-Water Equiv (OSW) OSW 144 16 100 - -1 -1 0 1N -1 -1 N -1 0 -1-Hour Snow Depth (OSD) OSD 145 16 100 - -1 -1 0 1N -1 -1 N -1 0 -Storm Tot Snow Depth (SSD) SSD 147 16 100 - -1 -1 0 1N -1 -1 N -1 0 -Storm Tot Snow-Water Equiv (SSW) SSW 146 16 100 - -1 -1 0 1N -1 -1 N -1 0 -Differential Refl (ZDR) ZDR 159 256 25 - 16384 -1 0 1N -1 -1 N -1 0 -Correlation Coeff (CC) CC 161 256 25 - 16384 -1 0 1N -1 -1 N -1 0 -Specific Diff Phase (KDP) KDP 163 256 25 - 16384 -1 0 1N -1 -1 N -1 0 -Hydrometeor Class (HC) HC 165 256 25 - 16384 -1 0 1N -1 -1 N -1 0 -Melting Layer (ML) ML 166 0 0 - 16384 -1 0 1N -1 -1 N -1 0 -Hybrid Hydrometeor Class (HHC) HHC 177 256 25 - -1 -1 0 1N -1 -1 N -1 0 -Digital Inst Precip Rate (DPR) DPR 176 0 25 - -1 -1 0 1N -1 -1 N -1 0 -One Hour Accum (OHA) OHA 169 16 200 - -1 -1 0 1N -1 -1 N -1 0 -User Select Accum (DUA) DUA 173 256 25 - -1 -1 0 1N -1 -1 N -1 60 -User Select Accum (DUA) DUA 173 256 25 - -1 -1 0 1N -1 -1 N -1 180 -Storm Total Accum (STA) STA 171 16 200 - -1 -1 0 1N -1 -1 N -1 0 -Storm Total Accum (DSA) STA 172 256 25 - -1 -1 0 1N -1 -1 N -1 0 -One Hour Diff (DOD) DOD 174 256 25 - -1 -1 0 1N -1 -1 N -1 0 -Storm Total Diff (DSD) DSD 175 256 25 - -1 -1 0 1N -1 -1 N -1 0 diff --git a/RadarServer/build.rcm/cfgbits/data/config/drop-ins/KOUN.clear-air.dual-pol.VCP35 b/RadarServer/build.rcm/cfgbits/data/config/drop-ins/KOUN.clear-air.dual-pol.VCP35 deleted file mode 100644 index e9e8a477c0..0000000000 --- a/RadarServer/build.rcm/cfgbits/data/config/drop-ins/KOUN.clear-air.dual-pol.VCP35 +++ /dev/null @@ -1,63 +0,0 @@ -RPS List dp_vcp35.VCP35.rps created 2016:01:28:19:06:12 ... 62 products - An RPS list contains the fields: Prod-Name, Mnemonic, Prod-Code - Number of Data Levels, Resolution, Layer Code, Elevation, Contour Interval, - Priority, Req Interval, Map, Lower Layer, Upper Layer, multCut, endHour, timeSpan - The record format is: '%-39s %-3s%4d%4d%6d %c%6d%7d%2d%2d%c%3d%3d %c%7d%7d' -Storm Rel Velocity (SRM) SRM 56 16 100 - 8227 -1 0 1N -1 -1 N -1 0 -Composite Ref (CZ) CZ 37 16 100 - -1 -1 0 1N 2 -1 N -1 0 -Composite Ref (CZ) CZ 38 16 400 - -1 -1 0 1N 2 -1 N -1 0 -Lyr Comp Ref Max (LRM) Level 2 LRM 66 8 0 M -1 -1 0 1N -1 -1 N -1 0 -Lyr Comp Ref Max (LRM) Level 3 LRM 90 8 0 H -1 -1 0 1N -1 -1 N -1 0 -Lyr Comp Ref MAX (APR) APR 67 16 0 L -1 -1 0 1N -1 -1 N -1 0 -Echo Tops (ET) ET 41 16 0 - -1 -1 0 1N 2 -1 N -1 0 -Vert Integ Liq (VIL) VIL 57 16 0 - -1 -1 0 1N 2 -1 N -1 0 -One Hour Precip (OHP) OHP 78 16 0 - -1 -1 0 1N -1 -1 N -1 0 -Storm Total Precip (STP) STP 80 16 0 - -1 -1 0 1N -1 -1 N -1 0 -VAD Wind Profile (VWP) VWP 48 0 0 - -1 -1 0 1N -1 -1 N -1 0 -Digital Precip Array (DPA) DPA 81 256 400 - -1 -1 0 1N -1 -1 N -1 0 -Reflectivity (Z) Z 94 256 100 - 18 -1 0 1N -1 -1 N -1 0 -Reflectivity (Z) Z 94 256 100 - 24 -1 0 1N -1 -1 N -1 0 -Reflectivity (Z) Z 94 256 100 - 31 -1 0 1N -1 -1 N -1 0 -Reflectivity (Z) Z 94 256 100 - 40 -1 0 1N -1 -1 N -1 0 -Reflectivity (Z) Z 94 256 100 - 51 -1 0 1N -1 -1 N -1 0 -Reflectivity (Z) Z 94 256 100 - 64 -1 0 1N -1 -1 N -1 0 -Velocity (V) V 99 256 25 - 18 -1 0 1N -1 -1 N -1 0 -Velocity (V) V 99 256 25 - 24 -1 0 1N -1 -1 N -1 0 -Velocity (V) V 99 256 25 - 31 -1 0 1N -1 -1 N -1 0 -Velocity (V) V 99 256 25 - 40 -1 0 1N -1 -1 N -1 0 -Velocity (V) V 99 256 25 - 51 -1 0 1N -1 -1 N -1 0 -Velocity (V) V 99 256 25 - 64 -1 0 1N -1 -1 N -1 0 -Super Res Reflectivity (Z) HZ 153 256 25 - 5 -1 0 1N -1 -1 N -1 0 -Super Res Reflectivity (Z) HZ 153 256 25 - 9 -1 0 1N -1 -1 N -1 0 -Super Res Reflectivity (Z) HZ 153 256 25 - 13 -1 0 1N -1 -1 N -1 0 -Super Res Velocity (V) HV 154 256 25 - 5 -1 0 1N -1 -1 N -1 0 -Super Res Velocity (V) HV 154 256 25 - 9 -1 0 1N -1 -1 N -1 0 -Super Res Velocity (V) HV 154 256 25 - 13 -1 0 1N -1 -1 N -1 0 -Super Res Spec Width (SW) HSW 155 256 25 - 5 -1 0 1N -1 -1 N -1 0 -Super Res Spec Width (SW) HSW 155 256 25 - 9 -1 0 1N -1 -1 N -1 0 -Super Res Spec Width (SW) HSW 155 256 25 - 13 -1 0 1N -1 -1 N -1 0 -Digital Vert Integ Liq (DVL) DVL 134 256 100 - -1 -1 0 1N -1 -1 N -1 0 -Digital Hybrid Scan Refl (DHR) DHR 32 256 100 - -1 -1 0 1N -1 -1 N -1 0 -Enhanced Echo Tops (EET) EET 135 256 100 - -1 -1 0 1N -1 -1 N -1 0 -Digital Meso Detection (DMD) DMD 149 0 0 - 16384 -1 0 1N 2 -1 N -1 0 -TVS Rapid Update (TRU) TRU 143 0 0 - 16384 -1 0 1N -1 -1 N -1 0 -User Selectable Lyr Refl (ULR) ULR 137 16 100 - -1 -1 0 1N 14 70 N -1 0 -Storm Total Precip (STP) STP 138 256 200 - -1 -1 0 1N -1 -1 N -1 0 -1-Hour Snow-Water Equiv (OSW) OSW 144 16 100 - -1 -1 0 1N -1 -1 N -1 0 -1-Hour Snow Depth (OSD) OSD 145 16 100 - -1 -1 0 1N -1 -1 N -1 0 -Storm Tot Snow Depth (SSD) SSD 147 16 100 - -1 -1 0 1N -1 -1 N -1 0 -Storm Tot Snow-Water Equiv (SSW) SSW 146 16 100 - -1 -1 0 1N -1 -1 N -1 0 -Differential Refl (ZDR) ZDR 159 256 25 - 16384 -1 0 1N -1 -1 N -1 0 -Correlation Coeff (CC) CC 161 256 25 - 16384 -1 0 1N -1 -1 N -1 0 -Specific Diff Phase (KDP) KDP 163 256 25 - 16384 -1 0 1N -1 -1 N -1 0 -Hydrometeor Class (HC) HC 165 256 25 - 16384 -1 0 1N -1 -1 N -1 0 -Melting Layer (ML) ML 166 0 0 - 16384 -1 0 1N -1 -1 N -1 0 -Hybrid Hydrometeor Class (HHC) HHC 177 256 25 - -1 -1 0 1N -1 -1 N -1 0 -Digital Inst Precip Rate (DPR) DPR 176 0 25 - -1 -1 0 1N -1 -1 N -1 0 -One Hour Accum (OHA) OHA 169 16 200 - -1 -1 0 1N -1 -1 N -1 0 -User Select Accum (DUA) DUA 173 256 25 - -1 -1 0 1N -1 -1 N -1 60 -User Select Accum (DUA) DUA 173 256 25 - -1 -1 0 1N -1 -1 N -1 180 -Storm Total Accum (STA) STA 171 16 200 - -1 -1 0 1N -1 -1 N -1 0 -Storm Total Accum (DSA) STA 172 256 25 - -1 -1 0 1N -1 -1 N -1 0 -One Hour Diff (DOD) DOD 174 256 25 - -1 -1 0 1N -1 -1 N -1 0 -Storm Total Diff (DSD) DSD 175 256 25 - -1 -1 0 1N -1 -1 N -1 0 diff --git a/RadarServer/build.rcm/cfgbits/data/config/drop-ins/KOUN.storm.dual-pol.VCP11 b/RadarServer/build.rcm/cfgbits/data/config/drop-ins/KOUN.storm.dual-pol.VCP11 deleted file mode 100644 index 4a78cc0505..0000000000 --- a/RadarServer/build.rcm/cfgbits/data/config/drop-ins/KOUN.storm.dual-pol.VCP11 +++ /dev/null @@ -1,102 +0,0 @@ -RPS List dp_vcp11.VCP11.rps created 2007:12:05:19:05:16 ... 101 products - An RPS list contains the fields: Prod-Name, Mnemonic, Prod-Code - Number of Data Levels, Resolution, Layer Code, Elevation, Contour Interval, - Priority, Req Interval, Map, Lower Layer, Upper Layer, multCut, endHour, timeSpan - The record format is: '%-39s %-3s%4d%4d%6d %c%6d%7d%2d%2d%c%3d%3d %c%7d%7d' -Reflectivity (Z) Z 19 16 100 - 5 -1 0 1N -1 -1 N -1 0 -Reflectivity (Z) Z 19 16 100 - 15 -1 0 1N -1 -1 N -1 0 -Reflectivity (Z) Z 19 16 100 - 25 -1 0 1N -1 -1 N -1 0 -Reflectivity (Z) Z 19 16 100 - 35 -1 0 1N -1 -1 N -1 0 -Reflectivity (Z) Z 20 16 200 - 5 -1 0 1N -1 -1 N -1 0 -Velocity (V) V 27 16 100 - 5 -1 0 1N -1 -1 N -1 0 -Velocity (V) V 27 16 100 - 15 -1 0 1N -1 -1 N -1 0 -Velocity (V) V 27 16 100 - 25 -1 0 1N -1 -1 N -1 0 -Velocity (V) V 27 16 100 - 35 -1 0 1N -1 -1 N -1 0 -Storm Rel Velocity (SRM) SRM 56 16 100 - 5 -1 0 1N -1 -1 N -1 0 -Storm Rel Velocity (SRM) SRM 56 16 100 - 15 -1 0 1N -1 -1 N -1 0 -Storm Rel Velocity (SRM) SRM 56 16 100 - 25 -1 0 1N -1 -1 N -1 0 -Storm Rel Velocity (SRM) SRM 56 16 100 - 35 -1 0 1N -1 -1 N -1 0 -Composite Ref (CZ) CZ 37 16 100 - -1 -1 0 1N 2 -1 N -1 0 -Composite Ref (CZ) CZ 38 16 400 - -1 -1 0 1N 2 -1 N -1 0 -Lyr Comp Ref Max (LRM) Level 1 LRM 65 8 0 L -1 -1 0 1N -1 -1 N -1 0 -Lyr Comp Ref Max (LRM) Level 2 LRM 66 8 0 M -1 -1 0 1N -1 -1 N -1 0 -Lyr Comp Ref Max (LRM) Level 3 LRM 90 8 0 H -1 -1 0 1N -1 -1 N -1 0 -Lyr Comp Ref MAX (APR) APR 67 16 0 L -1 -1 0 1N -1 -1 N -1 0 -Echo Tops (ET) ET 41 16 0 - -1 -1 0 1N 2 -1 N -1 0 -Vert Integ Liq (VIL) VIL 57 16 0 - -1 -1 0 1N 2 -1 N -1 0 -One Hour Precip (OHP) OHP 78 16 0 - -1 -1 0 1N -1 -1 N -1 0 -Storm Total Precip (STP) STP 80 16 0 - -1 -1 0 1N -1 -1 N -1 0 -VAD Wind Profile (VWP) VWP 48 0 0 - -1 -1 0 1N -1 -1 N -1 0 -Digital Precip Array (DPA) DPA 81 256 400 - -1 -1 0 1N -1 -1 N -1 0 -Velocity (V) V 25 16 100 - 5 -1 0 1N -1 -1 N -1 0 -Base Spectrum Width (SW) SW 28 8 100 - 5 -1 0 1N -1 -1 N -1 0 -Base Spectrum Width (SW) SW 30 8 100 - 5 -1 0 1N -1 -1 N -1 0 -Severe Weather Probablilty (SWP) SWP 47 0 100 - -1 -1 0 1N -1 -1 N -1 0 -Storm Tracking Information (STI) STI 58 0 100 - -1 -1 0 1N 2 -1 N -1 0 -Hail Index (HI) HI 59 0 100 - -1 -1 0 1N 2 -1 N -1 0 -Mesocyclone (M) M 60 0 100 - -1 -1 0 1N -1 -1 N -1 0 -Mesocyclone (MD) MD 141 0 0 - 1 -1 0 1N 2 -1 N -1 0 -Tornadic Vortex Signature (TVS) TVS 61 0 100 - -1 -1 0 1N 2 -1 N -1 0 -Storm Structure (SS) SS 62 0 100 - -1 -1 0 1N -1 -1 N -1 0 -Supplemental Precipitation Data (SPD) SPD 82 0 100 - -1 -1 0 1N -1 -1 N -1 0 -Reflectivity (Z) Z 94 256 100 - 5 -1 0 1N -1 -1 N -1 0 -Reflectivity (Z) Z 94 256 100 - 15 -1 0 1N -1 -1 N -1 0 -Reflectivity (Z) Z 94 256 100 - 24 -1 0 1N -1 -1 N -1 0 -Reflectivity (Z) Z 94 256 100 - 34 -1 0 1N -1 -1 N -1 0 -Reflectivity (Z) Z 94 256 100 - 43 -1 0 1N -1 -1 N -1 0 -Reflectivity (Z) Z 94 256 100 - 53 -1 0 1N -1 -1 N -1 0 -Reflectivity (Z) Z 94 256 100 - 62 -1 0 1N -1 -1 N -1 0 -Reflectivity (Z) Z 94 256 100 - 75 -1 0 1N -1 -1 N -1 0 -Reflectivity (Z) Z 94 256 100 - 87 -1 0 1N -1 -1 N -1 0 -Reflectivity (Z) Z 94 256 100 - 100 -1 0 1N -1 -1 N -1 0 -Reflectivity (Z) Z 94 256 100 - 120 -1 0 1N -1 -1 N -1 0 -Reflectivity (Z) Z 94 256 100 - 140 -1 0 1N -1 -1 N -1 0 -Reflectivity (Z) Z 94 256 100 - 167 -1 0 1N -1 -1 N -1 0 -Reflectivity (Z) Z 94 256 100 - 195 -1 0 1N -1 -1 N -1 0 -Velocity (V) V 99 256 25 - 5 -1 0 1N -1 -1 N -1 0 -Velocity (V) V 99 256 25 - 15 -1 0 1N -1 -1 N -1 0 -Velocity (V) V 99 256 25 - 24 -1 0 1N -1 -1 N -1 0 -Velocity (V) V 99 256 25 - 34 -1 0 1N -1 -1 N -1 0 -Velocity (V) V 99 256 25 - 43 -1 0 1N -1 -1 N -1 0 -Velocity (V) V 99 256 25 - 53 -1 0 1N -1 -1 N -1 0 -Velocity (V) V 99 256 25 - 62 -1 0 1N -1 -1 N -1 0 -Velocity (V) V 99 256 25 - 75 -1 0 1N -1 -1 N -1 0 -Velocity (V) V 99 256 25 - 87 -1 0 1N -1 -1 N -1 0 -Velocity (V) V 99 256 25 - 100 -1 0 1N -1 -1 N -1 0 -Velocity (V) V 99 256 25 - 120 -1 0 1N -1 -1 N -1 0 -Velocity (V) V 99 256 25 - 140 -1 0 1N -1 -1 N -1 0 -Velocity (V) V 99 256 25 - 167 -1 0 1N -1 -1 N -1 0 -Velocity (V) V 99 256 25 - 195 -1 0 1N -1 -1 N -1 0 -Super Res Reflectivity (Z) HZ 153 256 25 - 5 -1 0 1N -1 -1 N -1 0 -Super Res Reflectivity (Z) HZ 153 256 25 - 15 -1 0 1N -1 -1 N -1 0 -Super Res Velocity (V) HV 154 256 25 - 5 -1 0 1N -1 -1 N -1 0 -Super Res Velocity (V) HV 154 256 25 - 15 -1 0 1N -1 -1 N -1 0 -Super Res Spec Width (SW) HSW 155 256 25 - 5 -1 0 1N -1 -1 N -1 0 -Super Res Spec Width (SW) HSW 155 256 25 - 15 -1 0 1N -1 -1 N -1 0 -Spectrum Width (SW) SW 30 8 100 - 15 -1 0 1N -1 -1 N -1 0 -Spectrum Width (SW) SW 28 8 25 - 15 -1 0 1N -1 -1 N -1 0 -Digital Vert Integ Liq (DVL) DVL 134 256 100 - -1 -1 0 1N -1 -1 N -1 0 -Digital Hybrid Scan Refl (DHR) DHR 32 256 100 - -1 -1 0 1N -1 -1 N -1 0 -Enhanced Echo Tops (EET) EET 135 256 100 - -1 -1 0 1N -1 -1 N -1 0 -Digital Meso Detection (DMD) DMD 149 0 0 - 16384 -1 0 1N 2 -1 N -1 0 -TVS Rapid Update (TRU) TRU 143 0 0 - 16384 -1 0 1N -1 -1 N -1 0 -User Selectable Lyr Refl (ULR) ULR 137 16 100 - -1 -1 0 1N 14 70 N -1 0 -Storm Total Precip (STP) STP 138 256 200 - -1 -1 0 1N -1 -1 N -1 0 -1-Hour Snow-Water Equiv (OSW) OSW 144 16 100 - -1 -1 0 1N -1 -1 N -1 0 -1-Hour Snow Depth (OSD) OSD 145 16 100 - -1 -1 0 1N -1 -1 N -1 0 -Storm Tot Snow Depth (SSD) SSD 147 16 100 - -1 -1 0 1N -1 -1 N -1 0 -Storm Tot Snow-Water Equiv (SSW) SSW 146 16 100 - -1 -1 0 1N -1 -1 N -1 0 -Differential Refl (ZDR) ZDR 159 256 25 - 16384 -1 0 1N -1 -1 N -1 0 -Correlation Coeff (CC) CC 161 256 25 - 16384 -1 0 1N -1 -1 N -1 0 -Specific Diff Phase (KDP) KDP 163 256 25 - 16384 -1 0 1N -1 -1 N -1 0 -Hydrometeor Class (HC) HC 165 256 25 - 16384 -1 0 1N -1 -1 N -1 0 -Melting Layer (ML) ML 166 0 0 - 16384 -1 0 1N -1 -1 N -1 0 -Hybrid Hydrometeor Class (HHC) HHC 177 256 25 - -1 -1 0 1N -1 -1 N -1 0 -Digital Inst Precip Rate (DPR) DPR 176 0 25 - -1 -1 0 1N -1 -1 N -1 0 -One Hour Accum (OHA) OHA 169 16 200 - -1 -1 0 1N -1 -1 N -1 0 -User Select Accum (DUA) DUA 173 256 25 - -1 -1 0 1N -1 -1 N -1 60 -User Select Accum (DUA) DUA 173 256 25 - -1 -1 0 1N -1 -1 N -1 180 -Storm Total Accum (STA) STA 171 16 200 - -1 -1 0 1N -1 -1 N -1 0 -Storm Total Accum (DSA) STA 172 256 25 - -1 -1 0 1N -1 -1 N -1 0 -One Hour Diff (DOD) DOD 174 256 25 - -1 -1 0 1N -1 -1 N -1 0 -Storm Total Diff (DSD) DSD 175 256 25 - -1 -1 0 1N -1 -1 N -1 0 diff --git a/RadarServer/build.rcm/cfgbits/data/config/drop-ins/KOUN.storm.dual-pol.VCP112 b/RadarServer/build.rcm/cfgbits/data/config/drop-ins/KOUN.storm.dual-pol.VCP112 deleted file mode 100644 index 2fd568b46c..0000000000 --- a/RadarServer/build.rcm/cfgbits/data/config/drop-ins/KOUN.storm.dual-pol.VCP112 +++ /dev/null @@ -1,107 +0,0 @@ -RPS List dp_vcp12.VCP12.rps created 2007:12:05:19:05:40 ... 106 products - An RPS list contains the fields: Prod-Name, Mnemonic, Prod-Code - Number of Data Levels, Resolution, Layer Code, Elevation, Contour Interval, - Priority, Req Interval, Map, Lower Layer, Upper Layer, multCut, endHour, timeSpan - The record format is: '%-39s %-3s%4d%4d%6d %c%6d%7d%2d%2d%c%3d%3d %c%7d%7d' -Reflectivity (Z) Z 19 16 100 - 5 -1 0 1N -1 -1 N -1 0 -Reflectivity (Z) Z 19 16 100 - 15 -1 0 1N -1 -1 N -1 0 -Reflectivity (Z) Z 19 16 100 - 25 -1 0 1N -1 -1 N -1 0 -Reflectivity (Z) Z 19 16 100 - 35 -1 0 1N -1 -1 N -1 0 -Reflectivity (Z) Z 20 16 200 - 5 -1 0 1N -1 -1 N -1 0 -Velocity (V) V 27 16 100 - 5 -1 0 1N -1 -1 N -1 0 -Velocity (V) V 27 16 100 - 15 -1 0 1N -1 -1 N -1 0 -Velocity (V) V 27 16 100 - 25 -1 0 1N -1 -1 N -1 0 -Velocity (V) V 27 16 100 - 35 -1 0 1N -1 -1 N -1 0 -Storm Rel Velocity (SRM) SRM 56 16 100 - 5 -1 0 1N -1 -1 N -1 0 -Storm Rel Velocity (SRM) SRM 56 16 100 - 15 -1 0 1N -1 -1 N -1 0 -Storm Rel Velocity (SRM) SRM 56 16 100 - 25 -1 0 1N -1 -1 N -1 0 -Storm Rel Velocity (SRM) SRM 56 16 100 - 35 -1 0 1N -1 -1 N -1 0 -Composite Ref (CZ) CZ 37 16 100 - -1 -1 0 1N 2 -1 N -1 0 -Composite Ref (CZ) CZ 38 16 400 - -1 -1 0 1N 2 -1 N -1 0 -Lyr Comp Ref Max (LRM) Level 1 LRM 65 8 0 L -1 -1 0 1N -1 -1 N -1 0 -Lyr Comp Ref Max (LRM) Level 2 LRM 66 8 0 M -1 -1 0 1N -1 -1 N -1 0 -Lyr Comp Ref Max (LRM) Level 3 LRM 90 8 0 H -1 -1 0 1N -1 -1 N -1 0 -Lyr Comp Ref MAX (APR) APR 67 16 0 L -1 -1 0 1N -1 -1 N -1 0 -Echo Tops (ET) ET 41 16 0 - -1 -1 0 1N 2 -1 N -1 0 -Vert Integ Liq (VIL) VIL 57 16 0 - -1 -1 0 1N 2 -1 N -1 0 -One Hour Precip (OHP) OHP 78 16 0 - -1 -1 0 1N -1 -1 N -1 0 -Storm Total Precip (STP) STP 80 16 0 - -1 -1 0 1N -1 -1 N -1 0 -VAD Wind Profile (VWP) VWP 48 0 0 - -1 -1 0 1N -1 -1 N -1 0 -Digital Precip Array (DPA) DPA 81 256 400 - -1 -1 0 1N -1 -1 N -1 0 -Velocity (V) V 25 16 100 - 5 -1 0 1N -1 -1 N -1 0 -Base Spectrum Width (SW) SW 28 8 100 - 5 -1 0 1N -1 -1 N -1 0 -Base Spectrum Width (SW) SW 30 8 100 - 5 -1 0 1N -1 -1 N -1 0 -Severe Weather Probablilty (SWP) SWP 47 0 100 - -1 -1 0 1N -1 -1 N -1 0 -Storm Tracking Information (STI) STI 58 0 100 - -1 -1 0 1N 2 -1 N -1 0 -Hail Index (HI) HI 59 0 100 - -1 -1 0 1N 2 -1 N -1 0 -Mesocyclone (M) M 60 0 100 - -1 -1 0 1N -1 -1 N -1 0 -Mesocyclone (MD) MD 141 0 0 - 1 -1 0 1N 2 -1 N -1 0 -Tornadic Vortex Signature (TVS) TVS 61 0 100 - -1 -1 0 1N 2 -1 N -1 0 -Storm Structure (SS) SS 62 0 100 - -1 -1 0 1N -1 -1 N -1 0 -Supplemental Precipitation Data (SPD) SPD 82 0 100 - -1 -1 0 1N -1 -1 N -1 0 -Reflectivity (Z) Z 94 256 100 - 5 -1 0 1N -1 -1 N -1 0 -Reflectivity (Z) Z 94 256 100 - 9 -1 0 1N -1 -1 N -1 0 -Reflectivity (Z) Z 94 256 100 - 13 -1 0 1N -1 -1 N -1 0 -Reflectivity (Z) Z 94 256 100 - 18 -1 0 1N -1 -1 N -1 0 -Reflectivity (Z) Z 94 256 100 - 24 -1 0 1N -1 -1 N -1 0 -Reflectivity (Z) Z 94 256 100 - 31 -1 0 1N -1 -1 N -1 0 -Reflectivity (Z) Z 94 256 100 - 40 -1 0 1N -1 -1 N -1 0 -Reflectivity (Z) Z 94 256 100 - 51 -1 0 1N -1 -1 N -1 0 -Reflectivity (Z) Z 94 256 100 - 64 -1 0 1N -1 -1 N -1 0 -Reflectivity (Z) Z 94 256 100 - 80 -1 0 1N -1 -1 N -1 0 -Reflectivity (Z) Z 94 256 100 - 100 -1 0 1N -1 -1 N -1 0 -Reflectivity (Z) Z 94 256 100 - 125 -1 0 1N -1 -1 N -1 0 -Reflectivity (Z) Z 94 256 100 - 156 -1 0 1N -1 -1 N -1 0 -Reflectivity (Z) Z 94 256 100 - 195 -1 0 1N -1 -1 N -1 0 -Velocity (V) V 99 256 25 - 5 -1 0 1N -1 -1 N -1 0 -Velocity (V) V 99 256 25 - 9 -1 0 1N -1 -1 N -1 0 -Velocity (V) V 99 256 25 - 13 -1 0 1N -1 -1 N -1 0 -Velocity (V) V 99 256 25 - 18 -1 0 1N -1 -1 N -1 0 -Velocity (V) V 99 256 25 - 24 -1 0 1N -1 -1 N -1 0 -Velocity (V) V 99 256 25 - 31 -1 0 1N -1 -1 N -1 0 -Velocity (V) V 99 256 25 - 40 -1 0 1N -1 -1 N -1 0 -Velocity (V) V 99 256 25 - 51 -1 0 1N -1 -1 N -1 0 -Velocity (V) V 99 256 25 - 64 -1 0 1N -1 -1 N -1 0 -Velocity (V) V 99 256 25 - 80 -1 0 1N -1 -1 N -1 0 -Velocity (V) V 99 256 25 - 100 -1 0 1N -1 -1 N -1 0 -Velocity (V) V 99 256 25 - 125 -1 0 1N -1 -1 N -1 0 -Velocity (V) V 99 256 25 - 156 -1 0 1N -1 -1 N -1 0 -Velocity (V) V 99 256 25 - 195 -1 0 1N -1 -1 N -1 0 -Super Res Reflectivity (Z) HZ 153 256 25 - 5 -1 0 1N -1 -1 N -1 0 -Super Res Reflectivity (Z) HZ 153 256 25 - 9 -1 0 1N -1 -1 N -1 0 -Super Res Reflectivity (Z) HZ 153 256 25 - 13 -1 0 1N -1 -1 N -1 0 -Super Res Velocity (V) HV 154 256 25 - 5 -1 0 1N -1 -1 N -1 0 -Super Res Velocity (V) HV 154 256 25 - 9 -1 0 1N -1 -1 N -1 0 -Super Res Velocity (V) HV 154 256 25 - 13 -1 0 1N -1 -1 N -1 0 -Super Res Spec Width (SW) HSW 155 256 25 - 5 -1 0 1N -1 -1 N -1 0 -Super Res Spec Width (SW) HSW 155 256 25 - 9 -1 0 1N -1 -1 N -1 0 -Super Res Spec Width (SW) HSW 155 256 25 - 13 -1 0 1N -1 -1 N -1 0 -Spectrum Width (SW) SW 30 8 100 - 9 -1 0 1N -1 -1 N -1 0 -Spectrum Width (SW) SW 30 8 100 - 13 -1 0 1N -1 -1 N -1 0 -Spectrum Width (SW) SW 28 8 25 - 13 -1 0 1N -1 -1 N -1 0 -Spectrum Width (SW) SW 28 8 25 - 9 -1 0 1N -1 -1 N -1 0 -Digital Vert Integ Liq (DVL) DVL 134 256 100 - -1 -1 0 1N -1 -1 N -1 0 -Digital Hybrid Scan Refl (DHR) DHR 32 256 100 - -1 -1 0 1N -1 -1 N -1 0 -Enhanced Echo Tops (EET) EET 135 256 100 - -1 -1 0 1N -1 -1 N -1 0 -Digital Meso Detection (DMD) DMD 149 0 0 - 16384 -1 0 1N 2 -1 N -1 0 -TVS Rapid Update (TRU) TRU 143 0 0 - 16384 -1 0 1N -1 -1 N -1 0 -User Selectable Lyr Refl (ULR) ULR 137 16 100 - -1 -1 0 1N 14 70 N -1 0 -Storm Total Precip (STP) STP 138 256 200 - -1 -1 0 1N -1 -1 N -1 0 -1-Hour Snow-Water Equiv (OSW) OSW 144 16 100 - -1 -1 0 1N -1 -1 N -1 0 -1-Hour Snow Depth (OSD) OSD 145 16 100 - -1 -1 0 1N -1 -1 N -1 0 -Storm Tot Snow Depth (SSD) SSD 147 16 100 - -1 -1 0 1N -1 -1 N -1 0 -Storm Tot Snow-Water Equiv (SSW) SSW 146 16 100 - -1 -1 0 1N -1 -1 N -1 0 -Differential Refl (ZDR) ZDR 159 256 25 - 16384 -1 0 1N -1 -1 N -1 0 -Correlation Coeff (CC) CC 161 256 25 - 16384 -1 0 1N -1 -1 N -1 0 -Specific Diff Phase (KDP) KDP 163 256 25 - 16384 -1 0 1N -1 -1 N -1 0 -Hydrometeor Class (HC) HC 165 256 25 - 16384 -1 0 1N -1 -1 N -1 0 -Melting Layer (ML) ML 166 0 0 - 16384 -1 0 1N -1 -1 N -1 0 -Hybrid Hydrometeor Class (HHC) HHC 177 256 25 - -1 -1 0 1N -1 -1 N -1 0 -Digital Inst Precip Rate (DPR) DPR 176 0 25 - -1 -1 0 1N -1 -1 N -1 0 -One Hour Accum (OHA) OHA 169 16 200 - -1 -1 0 1N -1 -1 N -1 0 -User Select Accum (DUA) DUA 173 256 25 - -1 -1 0 1N -1 -1 N -1 60 -User Select Accum (DUA) DUA 173 256 25 - -1 -1 0 1N -1 -1 N -1 180 -Storm Total Accum (STA) STA 171 16 200 - -1 -1 0 1N -1 -1 N -1 0 -Storm Total Accum (DSA) STA 172 256 25 - -1 -1 0 1N -1 -1 N -1 0 -One Hour Diff (DOD) DOD 174 256 25 - -1 -1 0 1N -1 -1 N -1 0 -Storm Total Diff (DSD) DSD 175 256 25 - -1 -1 0 1N -1 -1 N -1 0 diff --git a/RadarServer/build.rcm/cfgbits/data/config/drop-ins/KOUN.storm.dual-pol.VCP12 b/RadarServer/build.rcm/cfgbits/data/config/drop-ins/KOUN.storm.dual-pol.VCP12 deleted file mode 100644 index 2fd568b46c..0000000000 --- a/RadarServer/build.rcm/cfgbits/data/config/drop-ins/KOUN.storm.dual-pol.VCP12 +++ /dev/null @@ -1,107 +0,0 @@ -RPS List dp_vcp12.VCP12.rps created 2007:12:05:19:05:40 ... 106 products - An RPS list contains the fields: Prod-Name, Mnemonic, Prod-Code - Number of Data Levels, Resolution, Layer Code, Elevation, Contour Interval, - Priority, Req Interval, Map, Lower Layer, Upper Layer, multCut, endHour, timeSpan - The record format is: '%-39s %-3s%4d%4d%6d %c%6d%7d%2d%2d%c%3d%3d %c%7d%7d' -Reflectivity (Z) Z 19 16 100 - 5 -1 0 1N -1 -1 N -1 0 -Reflectivity (Z) Z 19 16 100 - 15 -1 0 1N -1 -1 N -1 0 -Reflectivity (Z) Z 19 16 100 - 25 -1 0 1N -1 -1 N -1 0 -Reflectivity (Z) Z 19 16 100 - 35 -1 0 1N -1 -1 N -1 0 -Reflectivity (Z) Z 20 16 200 - 5 -1 0 1N -1 -1 N -1 0 -Velocity (V) V 27 16 100 - 5 -1 0 1N -1 -1 N -1 0 -Velocity (V) V 27 16 100 - 15 -1 0 1N -1 -1 N -1 0 -Velocity (V) V 27 16 100 - 25 -1 0 1N -1 -1 N -1 0 -Velocity (V) V 27 16 100 - 35 -1 0 1N -1 -1 N -1 0 -Storm Rel Velocity (SRM) SRM 56 16 100 - 5 -1 0 1N -1 -1 N -1 0 -Storm Rel Velocity (SRM) SRM 56 16 100 - 15 -1 0 1N -1 -1 N -1 0 -Storm Rel Velocity (SRM) SRM 56 16 100 - 25 -1 0 1N -1 -1 N -1 0 -Storm Rel Velocity (SRM) SRM 56 16 100 - 35 -1 0 1N -1 -1 N -1 0 -Composite Ref (CZ) CZ 37 16 100 - -1 -1 0 1N 2 -1 N -1 0 -Composite Ref (CZ) CZ 38 16 400 - -1 -1 0 1N 2 -1 N -1 0 -Lyr Comp Ref Max (LRM) Level 1 LRM 65 8 0 L -1 -1 0 1N -1 -1 N -1 0 -Lyr Comp Ref Max (LRM) Level 2 LRM 66 8 0 M -1 -1 0 1N -1 -1 N -1 0 -Lyr Comp Ref Max (LRM) Level 3 LRM 90 8 0 H -1 -1 0 1N -1 -1 N -1 0 -Lyr Comp Ref MAX (APR) APR 67 16 0 L -1 -1 0 1N -1 -1 N -1 0 -Echo Tops (ET) ET 41 16 0 - -1 -1 0 1N 2 -1 N -1 0 -Vert Integ Liq (VIL) VIL 57 16 0 - -1 -1 0 1N 2 -1 N -1 0 -One Hour Precip (OHP) OHP 78 16 0 - -1 -1 0 1N -1 -1 N -1 0 -Storm Total Precip (STP) STP 80 16 0 - -1 -1 0 1N -1 -1 N -1 0 -VAD Wind Profile (VWP) VWP 48 0 0 - -1 -1 0 1N -1 -1 N -1 0 -Digital Precip Array (DPA) DPA 81 256 400 - -1 -1 0 1N -1 -1 N -1 0 -Velocity (V) V 25 16 100 - 5 -1 0 1N -1 -1 N -1 0 -Base Spectrum Width (SW) SW 28 8 100 - 5 -1 0 1N -1 -1 N -1 0 -Base Spectrum Width (SW) SW 30 8 100 - 5 -1 0 1N -1 -1 N -1 0 -Severe Weather Probablilty (SWP) SWP 47 0 100 - -1 -1 0 1N -1 -1 N -1 0 -Storm Tracking Information (STI) STI 58 0 100 - -1 -1 0 1N 2 -1 N -1 0 -Hail Index (HI) HI 59 0 100 - -1 -1 0 1N 2 -1 N -1 0 -Mesocyclone (M) M 60 0 100 - -1 -1 0 1N -1 -1 N -1 0 -Mesocyclone (MD) MD 141 0 0 - 1 -1 0 1N 2 -1 N -1 0 -Tornadic Vortex Signature (TVS) TVS 61 0 100 - -1 -1 0 1N 2 -1 N -1 0 -Storm Structure (SS) SS 62 0 100 - -1 -1 0 1N -1 -1 N -1 0 -Supplemental Precipitation Data (SPD) SPD 82 0 100 - -1 -1 0 1N -1 -1 N -1 0 -Reflectivity (Z) Z 94 256 100 - 5 -1 0 1N -1 -1 N -1 0 -Reflectivity (Z) Z 94 256 100 - 9 -1 0 1N -1 -1 N -1 0 -Reflectivity (Z) Z 94 256 100 - 13 -1 0 1N -1 -1 N -1 0 -Reflectivity (Z) Z 94 256 100 - 18 -1 0 1N -1 -1 N -1 0 -Reflectivity (Z) Z 94 256 100 - 24 -1 0 1N -1 -1 N -1 0 -Reflectivity (Z) Z 94 256 100 - 31 -1 0 1N -1 -1 N -1 0 -Reflectivity (Z) Z 94 256 100 - 40 -1 0 1N -1 -1 N -1 0 -Reflectivity (Z) Z 94 256 100 - 51 -1 0 1N -1 -1 N -1 0 -Reflectivity (Z) Z 94 256 100 - 64 -1 0 1N -1 -1 N -1 0 -Reflectivity (Z) Z 94 256 100 - 80 -1 0 1N -1 -1 N -1 0 -Reflectivity (Z) Z 94 256 100 - 100 -1 0 1N -1 -1 N -1 0 -Reflectivity (Z) Z 94 256 100 - 125 -1 0 1N -1 -1 N -1 0 -Reflectivity (Z) Z 94 256 100 - 156 -1 0 1N -1 -1 N -1 0 -Reflectivity (Z) Z 94 256 100 - 195 -1 0 1N -1 -1 N -1 0 -Velocity (V) V 99 256 25 - 5 -1 0 1N -1 -1 N -1 0 -Velocity (V) V 99 256 25 - 9 -1 0 1N -1 -1 N -1 0 -Velocity (V) V 99 256 25 - 13 -1 0 1N -1 -1 N -1 0 -Velocity (V) V 99 256 25 - 18 -1 0 1N -1 -1 N -1 0 -Velocity (V) V 99 256 25 - 24 -1 0 1N -1 -1 N -1 0 -Velocity (V) V 99 256 25 - 31 -1 0 1N -1 -1 N -1 0 -Velocity (V) V 99 256 25 - 40 -1 0 1N -1 -1 N -1 0 -Velocity (V) V 99 256 25 - 51 -1 0 1N -1 -1 N -1 0 -Velocity (V) V 99 256 25 - 64 -1 0 1N -1 -1 N -1 0 -Velocity (V) V 99 256 25 - 80 -1 0 1N -1 -1 N -1 0 -Velocity (V) V 99 256 25 - 100 -1 0 1N -1 -1 N -1 0 -Velocity (V) V 99 256 25 - 125 -1 0 1N -1 -1 N -1 0 -Velocity (V) V 99 256 25 - 156 -1 0 1N -1 -1 N -1 0 -Velocity (V) V 99 256 25 - 195 -1 0 1N -1 -1 N -1 0 -Super Res Reflectivity (Z) HZ 153 256 25 - 5 -1 0 1N -1 -1 N -1 0 -Super Res Reflectivity (Z) HZ 153 256 25 - 9 -1 0 1N -1 -1 N -1 0 -Super Res Reflectivity (Z) HZ 153 256 25 - 13 -1 0 1N -1 -1 N -1 0 -Super Res Velocity (V) HV 154 256 25 - 5 -1 0 1N -1 -1 N -1 0 -Super Res Velocity (V) HV 154 256 25 - 9 -1 0 1N -1 -1 N -1 0 -Super Res Velocity (V) HV 154 256 25 - 13 -1 0 1N -1 -1 N -1 0 -Super Res Spec Width (SW) HSW 155 256 25 - 5 -1 0 1N -1 -1 N -1 0 -Super Res Spec Width (SW) HSW 155 256 25 - 9 -1 0 1N -1 -1 N -1 0 -Super Res Spec Width (SW) HSW 155 256 25 - 13 -1 0 1N -1 -1 N -1 0 -Spectrum Width (SW) SW 30 8 100 - 9 -1 0 1N -1 -1 N -1 0 -Spectrum Width (SW) SW 30 8 100 - 13 -1 0 1N -1 -1 N -1 0 -Spectrum Width (SW) SW 28 8 25 - 13 -1 0 1N -1 -1 N -1 0 -Spectrum Width (SW) SW 28 8 25 - 9 -1 0 1N -1 -1 N -1 0 -Digital Vert Integ Liq (DVL) DVL 134 256 100 - -1 -1 0 1N -1 -1 N -1 0 -Digital Hybrid Scan Refl (DHR) DHR 32 256 100 - -1 -1 0 1N -1 -1 N -1 0 -Enhanced Echo Tops (EET) EET 135 256 100 - -1 -1 0 1N -1 -1 N -1 0 -Digital Meso Detection (DMD) DMD 149 0 0 - 16384 -1 0 1N 2 -1 N -1 0 -TVS Rapid Update (TRU) TRU 143 0 0 - 16384 -1 0 1N -1 -1 N -1 0 -User Selectable Lyr Refl (ULR) ULR 137 16 100 - -1 -1 0 1N 14 70 N -1 0 -Storm Total Precip (STP) STP 138 256 200 - -1 -1 0 1N -1 -1 N -1 0 -1-Hour Snow-Water Equiv (OSW) OSW 144 16 100 - -1 -1 0 1N -1 -1 N -1 0 -1-Hour Snow Depth (OSD) OSD 145 16 100 - -1 -1 0 1N -1 -1 N -1 0 -Storm Tot Snow Depth (SSD) SSD 147 16 100 - -1 -1 0 1N -1 -1 N -1 0 -Storm Tot Snow-Water Equiv (SSW) SSW 146 16 100 - -1 -1 0 1N -1 -1 N -1 0 -Differential Refl (ZDR) ZDR 159 256 25 - 16384 -1 0 1N -1 -1 N -1 0 -Correlation Coeff (CC) CC 161 256 25 - 16384 -1 0 1N -1 -1 N -1 0 -Specific Diff Phase (KDP) KDP 163 256 25 - 16384 -1 0 1N -1 -1 N -1 0 -Hydrometeor Class (HC) HC 165 256 25 - 16384 -1 0 1N -1 -1 N -1 0 -Melting Layer (ML) ML 166 0 0 - 16384 -1 0 1N -1 -1 N -1 0 -Hybrid Hydrometeor Class (HHC) HHC 177 256 25 - -1 -1 0 1N -1 -1 N -1 0 -Digital Inst Precip Rate (DPR) DPR 176 0 25 - -1 -1 0 1N -1 -1 N -1 0 -One Hour Accum (OHA) OHA 169 16 200 - -1 -1 0 1N -1 -1 N -1 0 -User Select Accum (DUA) DUA 173 256 25 - -1 -1 0 1N -1 -1 N -1 60 -User Select Accum (DUA) DUA 173 256 25 - -1 -1 0 1N -1 -1 N -1 180 -Storm Total Accum (STA) STA 171 16 200 - -1 -1 0 1N -1 -1 N -1 0 -Storm Total Accum (DSA) STA 172 256 25 - -1 -1 0 1N -1 -1 N -1 0 -One Hour Diff (DOD) DOD 174 256 25 - -1 -1 0 1N -1 -1 N -1 0 -Storm Total Diff (DSD) DSD 175 256 25 - -1 -1 0 1N -1 -1 N -1 0 diff --git a/RadarServer/build.rcm/cfgbits/data/config/drop-ins/KOUN.storm.dual-pol.VCP121 b/RadarServer/build.rcm/cfgbits/data/config/drop-ins/KOUN.storm.dual-pol.VCP121 deleted file mode 100644 index 5363501240..0000000000 --- a/RadarServer/build.rcm/cfgbits/data/config/drop-ins/KOUN.storm.dual-pol.VCP121 +++ /dev/null @@ -1,92 +0,0 @@ -RPS List dp_mji21.VCP21.rps created 2007:12:05:19:02:48 ... 91 products - An RPS list contains the fields: Prod-Name, Mnemonic, Prod-Code - Number of Data Levels, Resolution, Layer Code, Elevation, Contour Interval, - Priority, Req Interval, Map, Lower Layer, Upper Layer, multCut, endHour, timeSpan - The record format is: '%-39s %-3s%4d%4d%6d %c%6d%7d%2d%2d%c%3d%3d %c%7d%7d' -Reflectivity (Z) Z 19 16 100 - 5 -1 0 1N -1 -1 N -1 0 -Reflectivity (Z) Z 19 16 100 - 15 -1 0 1N -1 -1 N -1 0 -Reflectivity (Z) Z 19 16 100 - 25 -1 0 1N -1 -1 N -1 0 -Reflectivity (Z) Z 19 16 100 - 35 -1 0 1N -1 -1 N -1 0 -Reflectivity (Z) Z 20 16 200 - 5 -1 0 1N -1 -1 N -1 0 -Velocity (V) V 27 16 100 - 5 -1 0 1N -1 -1 N -1 0 -Velocity (V) V 27 16 100 - 15 -1 0 1N -1 -1 N -1 0 -Velocity (V) V 27 16 100 - 25 -1 0 1N -1 -1 N -1 0 -Velocity (V) V 27 16 100 - 35 -1 0 1N -1 -1 N -1 0 -Storm Rel Velocity (SRM) SRM 56 16 100 - 5 -1 0 1N -1 -1 N -1 0 -Storm Rel Velocity (SRM) SRM 56 16 100 - 15 -1 0 1N -1 -1 N -1 0 -Storm Rel Velocity (SRM) SRM 56 16 100 - 25 -1 0 1N -1 -1 N -1 0 -Storm Rel Velocity (SRM) SRM 56 16 100 - 35 -1 0 1N -1 -1 N -1 0 -Composite Ref (CZ) CZ 37 16 100 - -1 -1 0 1N 2 -1 N -1 0 -Composite Ref (CZ) CZ 38 16 400 - -1 -1 0 1N 2 -1 N -1 0 -Lyr Comp Ref Max (LRM) Level 1 LRM 65 8 0 L -1 -1 0 1N -1 -1 N -1 0 -Lyr Comp Ref Max (LRM) Level 2 LRM 66 8 0 M -1 -1 0 1N -1 -1 N -1 0 -Lyr Comp Ref Max (LRM) Level 3 LRM 90 8 0 H -1 -1 0 1N -1 -1 N -1 0 -Lyr Comp Ref MAX (APR) APR 67 16 0 L -1 -1 0 1N -1 -1 N -1 0 -Echo Tops (ET) ET 41 16 0 - -1 -1 0 1N 2 -1 N -1 0 -Vert Integ Liq (VIL) VIL 57 16 0 - -1 -1 0 1N 2 -1 N -1 0 -One Hour Precip (OHP) OHP 78 16 0 - -1 -1 0 1N -1 -1 N -1 0 -Storm Total Precip (STP) STP 80 16 0 - -1 -1 0 1N -1 -1 N -1 0 -VAD Wind Profile (VWP) VWP 48 0 0 - -1 -1 0 1N -1 -1 N -1 0 -Digital Precip Array (DPA) DPA 81 256 400 - -1 -1 0 1N -1 -1 N -1 0 -Velocity (V) V 25 16 100 - 5 -1 0 1N -1 -1 N -1 0 -Base Spectrum Width (SW) SW 28 8 100 - 5 -1 0 1N -1 -1 N -1 0 -Base Spectrum Width (SW) SW 30 8 100 - 5 -1 0 1N -1 -1 N -1 0 -Severe Weather Probablilty (SWP) SWP 47 0 100 - -1 -1 0 1N -1 -1 N -1 0 -Storm Tracking Information (STI) STI 58 0 100 - -1 -1 0 1N 2 -1 N -1 0 -Hail Index (HI) HI 59 0 100 - -1 -1 0 1N 2 -1 N -1 0 -Mesocyclone (M) M 60 0 100 - -1 -1 0 1N -1 -1 N -1 0 -Mesocyclone (MD) MD 141 0 0 - 1 -1 0 1N 2 -1 N -1 0 -Tornadic Vortex Signature (TVS) TVS 61 0 100 - -1 -1 0 1N 2 -1 N -1 0 -Storm Structure (SS) SS 62 0 100 - -1 -1 0 1N -1 -1 N -1 0 -Supplemental Precipitation Data (SPD) SPD 82 0 100 - -1 -1 0 1N -1 -1 N -1 0 -Reflectivity (Z) Z 94 256 100 - 5 -1 0 1N -1 -1 N -1 0 -Reflectivity (Z) Z 94 256 100 - 15 -1 0 1N -1 -1 N -1 0 -Reflectivity (Z) Z 94 256 100 - 24 -1 0 1N -1 -1 N -1 0 -Reflectivity (Z) Z 94 256 100 - 34 -1 0 1N -1 -1 N -1 0 -Reflectivity (Z) Z 94 256 100 - 43 -1 0 1N -1 -1 N -1 0 -Reflectivity (Z) Z 94 256 100 - 60 -1 0 1N -1 -1 N -1 0 -Reflectivity (Z) Z 94 256 100 - 99 -1 0 1N -1 -1 N -1 0 -Reflectivity (Z) Z 94 256 100 - 146 -1 0 1N -1 -1 N -1 0 -Reflectivity (Z) Z 94 256 100 - 195 -1 0 1N -1 -1 N -1 0 -Velocity (V) V 99 256 25 - 5 -1 0 1N -1 -1 N -1 0 -Velocity (V) V 99 256 25 - 15 -1 0 1N -1 -1 N -1 0 -Velocity (V) V 99 256 25 - 24 -1 0 1N -1 -1 N -1 0 -Velocity (V) V 99 256 25 - 34 -1 0 1N -1 -1 N -1 0 -Velocity (V) V 99 256 25 - 43 -1 0 1N -1 -1 N -1 0 -Velocity (V) V 99 256 25 - 60 -1 0 1N -1 -1 N -1 0 -Velocity (V) V 99 256 25 - 99 -1 0 1N -1 -1 N -1 0 -Velocity (V) V 99 256 25 - 146 -1 0 1N -1 -1 N -1 0 -Velocity (V) V 99 256 25 - 195 -1 0 1N -1 -1 N -1 0 -Super Res Reflectivity (Z) HZ 153 256 25 - 5 -1 0 1N -1 -1 N -1 0 -Super Res Reflectivity (Z) HZ 153 256 25 - 15 -1 0 1N -1 -1 N -1 0 -Super Res Velocity (V) HV 154 256 25 - 5 -1 0 1N -1 -1 N -1 0 -Super Res Velocity (V) HV 154 256 25 - 15 -1 0 1N -1 -1 N -1 0 -Spectrum Width (SW) SW 28 8 50 - 15 -1 0 1N -1 -1 N -1 0 -Spectrum Width (SW) SW 30 8 100 - 15 -1 0 1N -1 -1 N -1 0 -Super Res Spec Width (SW) HSW 155 256 25 - 5 -1 0 1N -1 -1 N -1 0 -Super Res Spec Width (SW) HSW 155 256 25 - 15 -1 0 1N -1 -1 N -1 0 -Digital Vert Integ Liq (DVL) DVL 134 256 100 - -1 -1 0 1N -1 -1 N -1 0 -Digital Hybrid Scan Refl (DHR) DHR 32 256 100 - -1 -1 0 1N -1 -1 N -1 0 -Enhanced Echo Tops (EET) EET 135 256 100 - -1 -1 0 1N -1 -1 N -1 0 -Digital Meso Detection (DMD) DMD 149 0 0 - 16384 -1 0 1N 2 -1 N -1 0 -TVS Rapid Update (TRU) TRU 143 0 0 - 16384 -1 0 1N -1 -1 N -1 0 -User Selectable Lyr Refl (ULR) ULR 137 16 100 - -1 -1 0 1N 14 70 N -1 0 -Storm Total Precip (STP) STP 138 256 200 - -1 -1 0 1N -1 -1 N -1 0 -1-Hour Snow Depth (OSD) OSD 145 16 100 - -1 -1 0 1N -1 -1 N -1 0 -1-Hour Snow-Water Equiv (OSW) OSW 144 16 100 - -1 -1 0 1N -1 -1 N -1 0 -Storm Tot Snow Depth (SSD) SSD 147 16 100 - -1 -1 0 1N -1 -1 N -1 0 -Storm Tot Snow-Water Equiv (SSW) SSW 146 16 100 - -1 -1 0 1N -1 -1 N -1 0 -Differential Refl (ZDR) ZDR 159 256 25 - 16384 -1 0 1N -1 -1 N -1 0 -Correlation Coeff (CC) CC 161 256 25 - 16384 -1 0 1N -1 -1 N -1 0 -Specific Diff Phase (KDP) KDP 163 256 25 - 16384 -1 0 1N -1 -1 N -1 0 -Hydrometeor Class (HC) HC 165 256 25 - 16384 -1 0 1N -1 -1 N -1 0 -Melting Layer (ML) ML 166 0 0 - 16384 -1 0 1N -1 -1 N -1 0 -Hybrid Hydrometeor Class (HHC) HHC 177 256 25 - -1 -1 0 1N -1 -1 N -1 0 -Digital Inst Precip Rate (DPR) DPR 176 0 25 - -1 -1 0 1N -1 -1 N -1 0 -One Hour Accum (OHA) OHA 169 16 200 - -1 -1 0 1N -1 -1 N -1 0 -User Select Accum (DUA) DUA 173 256 25 - -1 -1 0 1N -1 -1 N -1 60 -User Select Accum (DUA) DUA 173 256 25 - -1 -1 0 1N -1 -1 N -1 180 -Storm Total Accum (STA) STA 171 16 200 - -1 -1 0 1N -1 -1 N -1 0 -Storm Total Accum (DSA) STA 172 256 25 - -1 -1 0 1N -1 -1 N -1 0 -One Hour Diff (DOD) DOD 174 256 25 - -1 -1 0 1N -1 -1 N -1 0 -Storm Total Diff (DSD) DSD 175 256 25 - -1 -1 0 1N -1 -1 N -1 0 diff --git a/RadarServer/build.rcm/cfgbits/data/config/drop-ins/KOUN.storm.dual-pol.VCP21 b/RadarServer/build.rcm/cfgbits/data/config/drop-ins/KOUN.storm.dual-pol.VCP21 deleted file mode 100644 index 5363501240..0000000000 --- a/RadarServer/build.rcm/cfgbits/data/config/drop-ins/KOUN.storm.dual-pol.VCP21 +++ /dev/null @@ -1,92 +0,0 @@ -RPS List dp_mji21.VCP21.rps created 2007:12:05:19:02:48 ... 91 products - An RPS list contains the fields: Prod-Name, Mnemonic, Prod-Code - Number of Data Levels, Resolution, Layer Code, Elevation, Contour Interval, - Priority, Req Interval, Map, Lower Layer, Upper Layer, multCut, endHour, timeSpan - The record format is: '%-39s %-3s%4d%4d%6d %c%6d%7d%2d%2d%c%3d%3d %c%7d%7d' -Reflectivity (Z) Z 19 16 100 - 5 -1 0 1N -1 -1 N -1 0 -Reflectivity (Z) Z 19 16 100 - 15 -1 0 1N -1 -1 N -1 0 -Reflectivity (Z) Z 19 16 100 - 25 -1 0 1N -1 -1 N -1 0 -Reflectivity (Z) Z 19 16 100 - 35 -1 0 1N -1 -1 N -1 0 -Reflectivity (Z) Z 20 16 200 - 5 -1 0 1N -1 -1 N -1 0 -Velocity (V) V 27 16 100 - 5 -1 0 1N -1 -1 N -1 0 -Velocity (V) V 27 16 100 - 15 -1 0 1N -1 -1 N -1 0 -Velocity (V) V 27 16 100 - 25 -1 0 1N -1 -1 N -1 0 -Velocity (V) V 27 16 100 - 35 -1 0 1N -1 -1 N -1 0 -Storm Rel Velocity (SRM) SRM 56 16 100 - 5 -1 0 1N -1 -1 N -1 0 -Storm Rel Velocity (SRM) SRM 56 16 100 - 15 -1 0 1N -1 -1 N -1 0 -Storm Rel Velocity (SRM) SRM 56 16 100 - 25 -1 0 1N -1 -1 N -1 0 -Storm Rel Velocity (SRM) SRM 56 16 100 - 35 -1 0 1N -1 -1 N -1 0 -Composite Ref (CZ) CZ 37 16 100 - -1 -1 0 1N 2 -1 N -1 0 -Composite Ref (CZ) CZ 38 16 400 - -1 -1 0 1N 2 -1 N -1 0 -Lyr Comp Ref Max (LRM) Level 1 LRM 65 8 0 L -1 -1 0 1N -1 -1 N -1 0 -Lyr Comp Ref Max (LRM) Level 2 LRM 66 8 0 M -1 -1 0 1N -1 -1 N -1 0 -Lyr Comp Ref Max (LRM) Level 3 LRM 90 8 0 H -1 -1 0 1N -1 -1 N -1 0 -Lyr Comp Ref MAX (APR) APR 67 16 0 L -1 -1 0 1N -1 -1 N -1 0 -Echo Tops (ET) ET 41 16 0 - -1 -1 0 1N 2 -1 N -1 0 -Vert Integ Liq (VIL) VIL 57 16 0 - -1 -1 0 1N 2 -1 N -1 0 -One Hour Precip (OHP) OHP 78 16 0 - -1 -1 0 1N -1 -1 N -1 0 -Storm Total Precip (STP) STP 80 16 0 - -1 -1 0 1N -1 -1 N -1 0 -VAD Wind Profile (VWP) VWP 48 0 0 - -1 -1 0 1N -1 -1 N -1 0 -Digital Precip Array (DPA) DPA 81 256 400 - -1 -1 0 1N -1 -1 N -1 0 -Velocity (V) V 25 16 100 - 5 -1 0 1N -1 -1 N -1 0 -Base Spectrum Width (SW) SW 28 8 100 - 5 -1 0 1N -1 -1 N -1 0 -Base Spectrum Width (SW) SW 30 8 100 - 5 -1 0 1N -1 -1 N -1 0 -Severe Weather Probablilty (SWP) SWP 47 0 100 - -1 -1 0 1N -1 -1 N -1 0 -Storm Tracking Information (STI) STI 58 0 100 - -1 -1 0 1N 2 -1 N -1 0 -Hail Index (HI) HI 59 0 100 - -1 -1 0 1N 2 -1 N -1 0 -Mesocyclone (M) M 60 0 100 - -1 -1 0 1N -1 -1 N -1 0 -Mesocyclone (MD) MD 141 0 0 - 1 -1 0 1N 2 -1 N -1 0 -Tornadic Vortex Signature (TVS) TVS 61 0 100 - -1 -1 0 1N 2 -1 N -1 0 -Storm Structure (SS) SS 62 0 100 - -1 -1 0 1N -1 -1 N -1 0 -Supplemental Precipitation Data (SPD) SPD 82 0 100 - -1 -1 0 1N -1 -1 N -1 0 -Reflectivity (Z) Z 94 256 100 - 5 -1 0 1N -1 -1 N -1 0 -Reflectivity (Z) Z 94 256 100 - 15 -1 0 1N -1 -1 N -1 0 -Reflectivity (Z) Z 94 256 100 - 24 -1 0 1N -1 -1 N -1 0 -Reflectivity (Z) Z 94 256 100 - 34 -1 0 1N -1 -1 N -1 0 -Reflectivity (Z) Z 94 256 100 - 43 -1 0 1N -1 -1 N -1 0 -Reflectivity (Z) Z 94 256 100 - 60 -1 0 1N -1 -1 N -1 0 -Reflectivity (Z) Z 94 256 100 - 99 -1 0 1N -1 -1 N -1 0 -Reflectivity (Z) Z 94 256 100 - 146 -1 0 1N -1 -1 N -1 0 -Reflectivity (Z) Z 94 256 100 - 195 -1 0 1N -1 -1 N -1 0 -Velocity (V) V 99 256 25 - 5 -1 0 1N -1 -1 N -1 0 -Velocity (V) V 99 256 25 - 15 -1 0 1N -1 -1 N -1 0 -Velocity (V) V 99 256 25 - 24 -1 0 1N -1 -1 N -1 0 -Velocity (V) V 99 256 25 - 34 -1 0 1N -1 -1 N -1 0 -Velocity (V) V 99 256 25 - 43 -1 0 1N -1 -1 N -1 0 -Velocity (V) V 99 256 25 - 60 -1 0 1N -1 -1 N -1 0 -Velocity (V) V 99 256 25 - 99 -1 0 1N -1 -1 N -1 0 -Velocity (V) V 99 256 25 - 146 -1 0 1N -1 -1 N -1 0 -Velocity (V) V 99 256 25 - 195 -1 0 1N -1 -1 N -1 0 -Super Res Reflectivity (Z) HZ 153 256 25 - 5 -1 0 1N -1 -1 N -1 0 -Super Res Reflectivity (Z) HZ 153 256 25 - 15 -1 0 1N -1 -1 N -1 0 -Super Res Velocity (V) HV 154 256 25 - 5 -1 0 1N -1 -1 N -1 0 -Super Res Velocity (V) HV 154 256 25 - 15 -1 0 1N -1 -1 N -1 0 -Spectrum Width (SW) SW 28 8 50 - 15 -1 0 1N -1 -1 N -1 0 -Spectrum Width (SW) SW 30 8 100 - 15 -1 0 1N -1 -1 N -1 0 -Super Res Spec Width (SW) HSW 155 256 25 - 5 -1 0 1N -1 -1 N -1 0 -Super Res Spec Width (SW) HSW 155 256 25 - 15 -1 0 1N -1 -1 N -1 0 -Digital Vert Integ Liq (DVL) DVL 134 256 100 - -1 -1 0 1N -1 -1 N -1 0 -Digital Hybrid Scan Refl (DHR) DHR 32 256 100 - -1 -1 0 1N -1 -1 N -1 0 -Enhanced Echo Tops (EET) EET 135 256 100 - -1 -1 0 1N -1 -1 N -1 0 -Digital Meso Detection (DMD) DMD 149 0 0 - 16384 -1 0 1N 2 -1 N -1 0 -TVS Rapid Update (TRU) TRU 143 0 0 - 16384 -1 0 1N -1 -1 N -1 0 -User Selectable Lyr Refl (ULR) ULR 137 16 100 - -1 -1 0 1N 14 70 N -1 0 -Storm Total Precip (STP) STP 138 256 200 - -1 -1 0 1N -1 -1 N -1 0 -1-Hour Snow Depth (OSD) OSD 145 16 100 - -1 -1 0 1N -1 -1 N -1 0 -1-Hour Snow-Water Equiv (OSW) OSW 144 16 100 - -1 -1 0 1N -1 -1 N -1 0 -Storm Tot Snow Depth (SSD) SSD 147 16 100 - -1 -1 0 1N -1 -1 N -1 0 -Storm Tot Snow-Water Equiv (SSW) SSW 146 16 100 - -1 -1 0 1N -1 -1 N -1 0 -Differential Refl (ZDR) ZDR 159 256 25 - 16384 -1 0 1N -1 -1 N -1 0 -Correlation Coeff (CC) CC 161 256 25 - 16384 -1 0 1N -1 -1 N -1 0 -Specific Diff Phase (KDP) KDP 163 256 25 - 16384 -1 0 1N -1 -1 N -1 0 -Hydrometeor Class (HC) HC 165 256 25 - 16384 -1 0 1N -1 -1 N -1 0 -Melting Layer (ML) ML 166 0 0 - 16384 -1 0 1N -1 -1 N -1 0 -Hybrid Hydrometeor Class (HHC) HHC 177 256 25 - -1 -1 0 1N -1 -1 N -1 0 -Digital Inst Precip Rate (DPR) DPR 176 0 25 - -1 -1 0 1N -1 -1 N -1 0 -One Hour Accum (OHA) OHA 169 16 200 - -1 -1 0 1N -1 -1 N -1 0 -User Select Accum (DUA) DUA 173 256 25 - -1 -1 0 1N -1 -1 N -1 60 -User Select Accum (DUA) DUA 173 256 25 - -1 -1 0 1N -1 -1 N -1 180 -Storm Total Accum (STA) STA 171 16 200 - -1 -1 0 1N -1 -1 N -1 0 -Storm Total Accum (DSA) STA 172 256 25 - -1 -1 0 1N -1 -1 N -1 0 -One Hour Diff (DOD) DOD 174 256 25 - -1 -1 0 1N -1 -1 N -1 0 -Storm Total Diff (DSD) DSD 175 256 25 - -1 -1 0 1N -1 -1 N -1 0 diff --git a/RadarServer/build.rcm/cfgbits/data/config/drop-ins/KOUN.storm.dual-pol.VCP211 b/RadarServer/build.rcm/cfgbits/data/config/drop-ins/KOUN.storm.dual-pol.VCP211 deleted file mode 100644 index 4a78cc0505..0000000000 --- a/RadarServer/build.rcm/cfgbits/data/config/drop-ins/KOUN.storm.dual-pol.VCP211 +++ /dev/null @@ -1,102 +0,0 @@ -RPS List dp_vcp11.VCP11.rps created 2007:12:05:19:05:16 ... 101 products - An RPS list contains the fields: Prod-Name, Mnemonic, Prod-Code - Number of Data Levels, Resolution, Layer Code, Elevation, Contour Interval, - Priority, Req Interval, Map, Lower Layer, Upper Layer, multCut, endHour, timeSpan - The record format is: '%-39s %-3s%4d%4d%6d %c%6d%7d%2d%2d%c%3d%3d %c%7d%7d' -Reflectivity (Z) Z 19 16 100 - 5 -1 0 1N -1 -1 N -1 0 -Reflectivity (Z) Z 19 16 100 - 15 -1 0 1N -1 -1 N -1 0 -Reflectivity (Z) Z 19 16 100 - 25 -1 0 1N -1 -1 N -1 0 -Reflectivity (Z) Z 19 16 100 - 35 -1 0 1N -1 -1 N -1 0 -Reflectivity (Z) Z 20 16 200 - 5 -1 0 1N -1 -1 N -1 0 -Velocity (V) V 27 16 100 - 5 -1 0 1N -1 -1 N -1 0 -Velocity (V) V 27 16 100 - 15 -1 0 1N -1 -1 N -1 0 -Velocity (V) V 27 16 100 - 25 -1 0 1N -1 -1 N -1 0 -Velocity (V) V 27 16 100 - 35 -1 0 1N -1 -1 N -1 0 -Storm Rel Velocity (SRM) SRM 56 16 100 - 5 -1 0 1N -1 -1 N -1 0 -Storm Rel Velocity (SRM) SRM 56 16 100 - 15 -1 0 1N -1 -1 N -1 0 -Storm Rel Velocity (SRM) SRM 56 16 100 - 25 -1 0 1N -1 -1 N -1 0 -Storm Rel Velocity (SRM) SRM 56 16 100 - 35 -1 0 1N -1 -1 N -1 0 -Composite Ref (CZ) CZ 37 16 100 - -1 -1 0 1N 2 -1 N -1 0 -Composite Ref (CZ) CZ 38 16 400 - -1 -1 0 1N 2 -1 N -1 0 -Lyr Comp Ref Max (LRM) Level 1 LRM 65 8 0 L -1 -1 0 1N -1 -1 N -1 0 -Lyr Comp Ref Max (LRM) Level 2 LRM 66 8 0 M -1 -1 0 1N -1 -1 N -1 0 -Lyr Comp Ref Max (LRM) Level 3 LRM 90 8 0 H -1 -1 0 1N -1 -1 N -1 0 -Lyr Comp Ref MAX (APR) APR 67 16 0 L -1 -1 0 1N -1 -1 N -1 0 -Echo Tops (ET) ET 41 16 0 - -1 -1 0 1N 2 -1 N -1 0 -Vert Integ Liq (VIL) VIL 57 16 0 - -1 -1 0 1N 2 -1 N -1 0 -One Hour Precip (OHP) OHP 78 16 0 - -1 -1 0 1N -1 -1 N -1 0 -Storm Total Precip (STP) STP 80 16 0 - -1 -1 0 1N -1 -1 N -1 0 -VAD Wind Profile (VWP) VWP 48 0 0 - -1 -1 0 1N -1 -1 N -1 0 -Digital Precip Array (DPA) DPA 81 256 400 - -1 -1 0 1N -1 -1 N -1 0 -Velocity (V) V 25 16 100 - 5 -1 0 1N -1 -1 N -1 0 -Base Spectrum Width (SW) SW 28 8 100 - 5 -1 0 1N -1 -1 N -1 0 -Base Spectrum Width (SW) SW 30 8 100 - 5 -1 0 1N -1 -1 N -1 0 -Severe Weather Probablilty (SWP) SWP 47 0 100 - -1 -1 0 1N -1 -1 N -1 0 -Storm Tracking Information (STI) STI 58 0 100 - -1 -1 0 1N 2 -1 N -1 0 -Hail Index (HI) HI 59 0 100 - -1 -1 0 1N 2 -1 N -1 0 -Mesocyclone (M) M 60 0 100 - -1 -1 0 1N -1 -1 N -1 0 -Mesocyclone (MD) MD 141 0 0 - 1 -1 0 1N 2 -1 N -1 0 -Tornadic Vortex Signature (TVS) TVS 61 0 100 - -1 -1 0 1N 2 -1 N -1 0 -Storm Structure (SS) SS 62 0 100 - -1 -1 0 1N -1 -1 N -1 0 -Supplemental Precipitation Data (SPD) SPD 82 0 100 - -1 -1 0 1N -1 -1 N -1 0 -Reflectivity (Z) Z 94 256 100 - 5 -1 0 1N -1 -1 N -1 0 -Reflectivity (Z) Z 94 256 100 - 15 -1 0 1N -1 -1 N -1 0 -Reflectivity (Z) Z 94 256 100 - 24 -1 0 1N -1 -1 N -1 0 -Reflectivity (Z) Z 94 256 100 - 34 -1 0 1N -1 -1 N -1 0 -Reflectivity (Z) Z 94 256 100 - 43 -1 0 1N -1 -1 N -1 0 -Reflectivity (Z) Z 94 256 100 - 53 -1 0 1N -1 -1 N -1 0 -Reflectivity (Z) Z 94 256 100 - 62 -1 0 1N -1 -1 N -1 0 -Reflectivity (Z) Z 94 256 100 - 75 -1 0 1N -1 -1 N -1 0 -Reflectivity (Z) Z 94 256 100 - 87 -1 0 1N -1 -1 N -1 0 -Reflectivity (Z) Z 94 256 100 - 100 -1 0 1N -1 -1 N -1 0 -Reflectivity (Z) Z 94 256 100 - 120 -1 0 1N -1 -1 N -1 0 -Reflectivity (Z) Z 94 256 100 - 140 -1 0 1N -1 -1 N -1 0 -Reflectivity (Z) Z 94 256 100 - 167 -1 0 1N -1 -1 N -1 0 -Reflectivity (Z) Z 94 256 100 - 195 -1 0 1N -1 -1 N -1 0 -Velocity (V) V 99 256 25 - 5 -1 0 1N -1 -1 N -1 0 -Velocity (V) V 99 256 25 - 15 -1 0 1N -1 -1 N -1 0 -Velocity (V) V 99 256 25 - 24 -1 0 1N -1 -1 N -1 0 -Velocity (V) V 99 256 25 - 34 -1 0 1N -1 -1 N -1 0 -Velocity (V) V 99 256 25 - 43 -1 0 1N -1 -1 N -1 0 -Velocity (V) V 99 256 25 - 53 -1 0 1N -1 -1 N -1 0 -Velocity (V) V 99 256 25 - 62 -1 0 1N -1 -1 N -1 0 -Velocity (V) V 99 256 25 - 75 -1 0 1N -1 -1 N -1 0 -Velocity (V) V 99 256 25 - 87 -1 0 1N -1 -1 N -1 0 -Velocity (V) V 99 256 25 - 100 -1 0 1N -1 -1 N -1 0 -Velocity (V) V 99 256 25 - 120 -1 0 1N -1 -1 N -1 0 -Velocity (V) V 99 256 25 - 140 -1 0 1N -1 -1 N -1 0 -Velocity (V) V 99 256 25 - 167 -1 0 1N -1 -1 N -1 0 -Velocity (V) V 99 256 25 - 195 -1 0 1N -1 -1 N -1 0 -Super Res Reflectivity (Z) HZ 153 256 25 - 5 -1 0 1N -1 -1 N -1 0 -Super Res Reflectivity (Z) HZ 153 256 25 - 15 -1 0 1N -1 -1 N -1 0 -Super Res Velocity (V) HV 154 256 25 - 5 -1 0 1N -1 -1 N -1 0 -Super Res Velocity (V) HV 154 256 25 - 15 -1 0 1N -1 -1 N -1 0 -Super Res Spec Width (SW) HSW 155 256 25 - 5 -1 0 1N -1 -1 N -1 0 -Super Res Spec Width (SW) HSW 155 256 25 - 15 -1 0 1N -1 -1 N -1 0 -Spectrum Width (SW) SW 30 8 100 - 15 -1 0 1N -1 -1 N -1 0 -Spectrum Width (SW) SW 28 8 25 - 15 -1 0 1N -1 -1 N -1 0 -Digital Vert Integ Liq (DVL) DVL 134 256 100 - -1 -1 0 1N -1 -1 N -1 0 -Digital Hybrid Scan Refl (DHR) DHR 32 256 100 - -1 -1 0 1N -1 -1 N -1 0 -Enhanced Echo Tops (EET) EET 135 256 100 - -1 -1 0 1N -1 -1 N -1 0 -Digital Meso Detection (DMD) DMD 149 0 0 - 16384 -1 0 1N 2 -1 N -1 0 -TVS Rapid Update (TRU) TRU 143 0 0 - 16384 -1 0 1N -1 -1 N -1 0 -User Selectable Lyr Refl (ULR) ULR 137 16 100 - -1 -1 0 1N 14 70 N -1 0 -Storm Total Precip (STP) STP 138 256 200 - -1 -1 0 1N -1 -1 N -1 0 -1-Hour Snow-Water Equiv (OSW) OSW 144 16 100 - -1 -1 0 1N -1 -1 N -1 0 -1-Hour Snow Depth (OSD) OSD 145 16 100 - -1 -1 0 1N -1 -1 N -1 0 -Storm Tot Snow Depth (SSD) SSD 147 16 100 - -1 -1 0 1N -1 -1 N -1 0 -Storm Tot Snow-Water Equiv (SSW) SSW 146 16 100 - -1 -1 0 1N -1 -1 N -1 0 -Differential Refl (ZDR) ZDR 159 256 25 - 16384 -1 0 1N -1 -1 N -1 0 -Correlation Coeff (CC) CC 161 256 25 - 16384 -1 0 1N -1 -1 N -1 0 -Specific Diff Phase (KDP) KDP 163 256 25 - 16384 -1 0 1N -1 -1 N -1 0 -Hydrometeor Class (HC) HC 165 256 25 - 16384 -1 0 1N -1 -1 N -1 0 -Melting Layer (ML) ML 166 0 0 - 16384 -1 0 1N -1 -1 N -1 0 -Hybrid Hydrometeor Class (HHC) HHC 177 256 25 - -1 -1 0 1N -1 -1 N -1 0 -Digital Inst Precip Rate (DPR) DPR 176 0 25 - -1 -1 0 1N -1 -1 N -1 0 -One Hour Accum (OHA) OHA 169 16 200 - -1 -1 0 1N -1 -1 N -1 0 -User Select Accum (DUA) DUA 173 256 25 - -1 -1 0 1N -1 -1 N -1 60 -User Select Accum (DUA) DUA 173 256 25 - -1 -1 0 1N -1 -1 N -1 180 -Storm Total Accum (STA) STA 171 16 200 - -1 -1 0 1N -1 -1 N -1 0 -Storm Total Accum (DSA) STA 172 256 25 - -1 -1 0 1N -1 -1 N -1 0 -One Hour Diff (DOD) DOD 174 256 25 - -1 -1 0 1N -1 -1 N -1 0 -Storm Total Diff (DSD) DSD 175 256 25 - -1 -1 0 1N -1 -1 N -1 0 diff --git a/RadarServer/build.rcm/cfgbits/data/config/drop-ins/KOUN.storm.dual-pol.VCP212 b/RadarServer/build.rcm/cfgbits/data/config/drop-ins/KOUN.storm.dual-pol.VCP212 deleted file mode 100644 index 2fd568b46c..0000000000 --- a/RadarServer/build.rcm/cfgbits/data/config/drop-ins/KOUN.storm.dual-pol.VCP212 +++ /dev/null @@ -1,107 +0,0 @@ -RPS List dp_vcp12.VCP12.rps created 2007:12:05:19:05:40 ... 106 products - An RPS list contains the fields: Prod-Name, Mnemonic, Prod-Code - Number of Data Levels, Resolution, Layer Code, Elevation, Contour Interval, - Priority, Req Interval, Map, Lower Layer, Upper Layer, multCut, endHour, timeSpan - The record format is: '%-39s %-3s%4d%4d%6d %c%6d%7d%2d%2d%c%3d%3d %c%7d%7d' -Reflectivity (Z) Z 19 16 100 - 5 -1 0 1N -1 -1 N -1 0 -Reflectivity (Z) Z 19 16 100 - 15 -1 0 1N -1 -1 N -1 0 -Reflectivity (Z) Z 19 16 100 - 25 -1 0 1N -1 -1 N -1 0 -Reflectivity (Z) Z 19 16 100 - 35 -1 0 1N -1 -1 N -1 0 -Reflectivity (Z) Z 20 16 200 - 5 -1 0 1N -1 -1 N -1 0 -Velocity (V) V 27 16 100 - 5 -1 0 1N -1 -1 N -1 0 -Velocity (V) V 27 16 100 - 15 -1 0 1N -1 -1 N -1 0 -Velocity (V) V 27 16 100 - 25 -1 0 1N -1 -1 N -1 0 -Velocity (V) V 27 16 100 - 35 -1 0 1N -1 -1 N -1 0 -Storm Rel Velocity (SRM) SRM 56 16 100 - 5 -1 0 1N -1 -1 N -1 0 -Storm Rel Velocity (SRM) SRM 56 16 100 - 15 -1 0 1N -1 -1 N -1 0 -Storm Rel Velocity (SRM) SRM 56 16 100 - 25 -1 0 1N -1 -1 N -1 0 -Storm Rel Velocity (SRM) SRM 56 16 100 - 35 -1 0 1N -1 -1 N -1 0 -Composite Ref (CZ) CZ 37 16 100 - -1 -1 0 1N 2 -1 N -1 0 -Composite Ref (CZ) CZ 38 16 400 - -1 -1 0 1N 2 -1 N -1 0 -Lyr Comp Ref Max (LRM) Level 1 LRM 65 8 0 L -1 -1 0 1N -1 -1 N -1 0 -Lyr Comp Ref Max (LRM) Level 2 LRM 66 8 0 M -1 -1 0 1N -1 -1 N -1 0 -Lyr Comp Ref Max (LRM) Level 3 LRM 90 8 0 H -1 -1 0 1N -1 -1 N -1 0 -Lyr Comp Ref MAX (APR) APR 67 16 0 L -1 -1 0 1N -1 -1 N -1 0 -Echo Tops (ET) ET 41 16 0 - -1 -1 0 1N 2 -1 N -1 0 -Vert Integ Liq (VIL) VIL 57 16 0 - -1 -1 0 1N 2 -1 N -1 0 -One Hour Precip (OHP) OHP 78 16 0 - -1 -1 0 1N -1 -1 N -1 0 -Storm Total Precip (STP) STP 80 16 0 - -1 -1 0 1N -1 -1 N -1 0 -VAD Wind Profile (VWP) VWP 48 0 0 - -1 -1 0 1N -1 -1 N -1 0 -Digital Precip Array (DPA) DPA 81 256 400 - -1 -1 0 1N -1 -1 N -1 0 -Velocity (V) V 25 16 100 - 5 -1 0 1N -1 -1 N -1 0 -Base Spectrum Width (SW) SW 28 8 100 - 5 -1 0 1N -1 -1 N -1 0 -Base Spectrum Width (SW) SW 30 8 100 - 5 -1 0 1N -1 -1 N -1 0 -Severe Weather Probablilty (SWP) SWP 47 0 100 - -1 -1 0 1N -1 -1 N -1 0 -Storm Tracking Information (STI) STI 58 0 100 - -1 -1 0 1N 2 -1 N -1 0 -Hail Index (HI) HI 59 0 100 - -1 -1 0 1N 2 -1 N -1 0 -Mesocyclone (M) M 60 0 100 - -1 -1 0 1N -1 -1 N -1 0 -Mesocyclone (MD) MD 141 0 0 - 1 -1 0 1N 2 -1 N -1 0 -Tornadic Vortex Signature (TVS) TVS 61 0 100 - -1 -1 0 1N 2 -1 N -1 0 -Storm Structure (SS) SS 62 0 100 - -1 -1 0 1N -1 -1 N -1 0 -Supplemental Precipitation Data (SPD) SPD 82 0 100 - -1 -1 0 1N -1 -1 N -1 0 -Reflectivity (Z) Z 94 256 100 - 5 -1 0 1N -1 -1 N -1 0 -Reflectivity (Z) Z 94 256 100 - 9 -1 0 1N -1 -1 N -1 0 -Reflectivity (Z) Z 94 256 100 - 13 -1 0 1N -1 -1 N -1 0 -Reflectivity (Z) Z 94 256 100 - 18 -1 0 1N -1 -1 N -1 0 -Reflectivity (Z) Z 94 256 100 - 24 -1 0 1N -1 -1 N -1 0 -Reflectivity (Z) Z 94 256 100 - 31 -1 0 1N -1 -1 N -1 0 -Reflectivity (Z) Z 94 256 100 - 40 -1 0 1N -1 -1 N -1 0 -Reflectivity (Z) Z 94 256 100 - 51 -1 0 1N -1 -1 N -1 0 -Reflectivity (Z) Z 94 256 100 - 64 -1 0 1N -1 -1 N -1 0 -Reflectivity (Z) Z 94 256 100 - 80 -1 0 1N -1 -1 N -1 0 -Reflectivity (Z) Z 94 256 100 - 100 -1 0 1N -1 -1 N -1 0 -Reflectivity (Z) Z 94 256 100 - 125 -1 0 1N -1 -1 N -1 0 -Reflectivity (Z) Z 94 256 100 - 156 -1 0 1N -1 -1 N -1 0 -Reflectivity (Z) Z 94 256 100 - 195 -1 0 1N -1 -1 N -1 0 -Velocity (V) V 99 256 25 - 5 -1 0 1N -1 -1 N -1 0 -Velocity (V) V 99 256 25 - 9 -1 0 1N -1 -1 N -1 0 -Velocity (V) V 99 256 25 - 13 -1 0 1N -1 -1 N -1 0 -Velocity (V) V 99 256 25 - 18 -1 0 1N -1 -1 N -1 0 -Velocity (V) V 99 256 25 - 24 -1 0 1N -1 -1 N -1 0 -Velocity (V) V 99 256 25 - 31 -1 0 1N -1 -1 N -1 0 -Velocity (V) V 99 256 25 - 40 -1 0 1N -1 -1 N -1 0 -Velocity (V) V 99 256 25 - 51 -1 0 1N -1 -1 N -1 0 -Velocity (V) V 99 256 25 - 64 -1 0 1N -1 -1 N -1 0 -Velocity (V) V 99 256 25 - 80 -1 0 1N -1 -1 N -1 0 -Velocity (V) V 99 256 25 - 100 -1 0 1N -1 -1 N -1 0 -Velocity (V) V 99 256 25 - 125 -1 0 1N -1 -1 N -1 0 -Velocity (V) V 99 256 25 - 156 -1 0 1N -1 -1 N -1 0 -Velocity (V) V 99 256 25 - 195 -1 0 1N -1 -1 N -1 0 -Super Res Reflectivity (Z) HZ 153 256 25 - 5 -1 0 1N -1 -1 N -1 0 -Super Res Reflectivity (Z) HZ 153 256 25 - 9 -1 0 1N -1 -1 N -1 0 -Super Res Reflectivity (Z) HZ 153 256 25 - 13 -1 0 1N -1 -1 N -1 0 -Super Res Velocity (V) HV 154 256 25 - 5 -1 0 1N -1 -1 N -1 0 -Super Res Velocity (V) HV 154 256 25 - 9 -1 0 1N -1 -1 N -1 0 -Super Res Velocity (V) HV 154 256 25 - 13 -1 0 1N -1 -1 N -1 0 -Super Res Spec Width (SW) HSW 155 256 25 - 5 -1 0 1N -1 -1 N -1 0 -Super Res Spec Width (SW) HSW 155 256 25 - 9 -1 0 1N -1 -1 N -1 0 -Super Res Spec Width (SW) HSW 155 256 25 - 13 -1 0 1N -1 -1 N -1 0 -Spectrum Width (SW) SW 30 8 100 - 9 -1 0 1N -1 -1 N -1 0 -Spectrum Width (SW) SW 30 8 100 - 13 -1 0 1N -1 -1 N -1 0 -Spectrum Width (SW) SW 28 8 25 - 13 -1 0 1N -1 -1 N -1 0 -Spectrum Width (SW) SW 28 8 25 - 9 -1 0 1N -1 -1 N -1 0 -Digital Vert Integ Liq (DVL) DVL 134 256 100 - -1 -1 0 1N -1 -1 N -1 0 -Digital Hybrid Scan Refl (DHR) DHR 32 256 100 - -1 -1 0 1N -1 -1 N -1 0 -Enhanced Echo Tops (EET) EET 135 256 100 - -1 -1 0 1N -1 -1 N -1 0 -Digital Meso Detection (DMD) DMD 149 0 0 - 16384 -1 0 1N 2 -1 N -1 0 -TVS Rapid Update (TRU) TRU 143 0 0 - 16384 -1 0 1N -1 -1 N -1 0 -User Selectable Lyr Refl (ULR) ULR 137 16 100 - -1 -1 0 1N 14 70 N -1 0 -Storm Total Precip (STP) STP 138 256 200 - -1 -1 0 1N -1 -1 N -1 0 -1-Hour Snow-Water Equiv (OSW) OSW 144 16 100 - -1 -1 0 1N -1 -1 N -1 0 -1-Hour Snow Depth (OSD) OSD 145 16 100 - -1 -1 0 1N -1 -1 N -1 0 -Storm Tot Snow Depth (SSD) SSD 147 16 100 - -1 -1 0 1N -1 -1 N -1 0 -Storm Tot Snow-Water Equiv (SSW) SSW 146 16 100 - -1 -1 0 1N -1 -1 N -1 0 -Differential Refl (ZDR) ZDR 159 256 25 - 16384 -1 0 1N -1 -1 N -1 0 -Correlation Coeff (CC) CC 161 256 25 - 16384 -1 0 1N -1 -1 N -1 0 -Specific Diff Phase (KDP) KDP 163 256 25 - 16384 -1 0 1N -1 -1 N -1 0 -Hydrometeor Class (HC) HC 165 256 25 - 16384 -1 0 1N -1 -1 N -1 0 -Melting Layer (ML) ML 166 0 0 - 16384 -1 0 1N -1 -1 N -1 0 -Hybrid Hydrometeor Class (HHC) HHC 177 256 25 - -1 -1 0 1N -1 -1 N -1 0 -Digital Inst Precip Rate (DPR) DPR 176 0 25 - -1 -1 0 1N -1 -1 N -1 0 -One Hour Accum (OHA) OHA 169 16 200 - -1 -1 0 1N -1 -1 N -1 0 -User Select Accum (DUA) DUA 173 256 25 - -1 -1 0 1N -1 -1 N -1 60 -User Select Accum (DUA) DUA 173 256 25 - -1 -1 0 1N -1 -1 N -1 180 -Storm Total Accum (STA) STA 171 16 200 - -1 -1 0 1N -1 -1 N -1 0 -Storm Total Accum (DSA) STA 172 256 25 - -1 -1 0 1N -1 -1 N -1 0 -One Hour Diff (DOD) DOD 174 256 25 - -1 -1 0 1N -1 -1 N -1 0 -Storm Total Diff (DSD) DSD 175 256 25 - -1 -1 0 1N -1 -1 N -1 0 diff --git a/RadarServer/build.rcm/cfgbits/data/config/drop-ins/KOUN.storm.dual-pol.VCP215 b/RadarServer/build.rcm/cfgbits/data/config/drop-ins/KOUN.storm.dual-pol.VCP215 deleted file mode 100644 index 1f74531b34..0000000000 --- a/RadarServer/build.rcm/cfgbits/data/config/drop-ins/KOUN.storm.dual-pol.VCP215 +++ /dev/null @@ -1,82 +0,0 @@ -RPS List dp_VCP215.rps created 2016:01:28:19:05:40 ... 81 products - An RPS list contains the fields: Prod-Name, Mnemonic, Prod-Code - Number of Data Levels, Resolution, Layer Code, Elevation, Contour Interval, - Priority, Req Interval, Map, Lower Layer, Upper Layer, multCut, endHour, timeSpan - The record format is: '%-39s %-3s%4d%4d%6d %c%6d%7d%2d%2d%c%3d%3d %c%7d%7d' -Storm Rel Velocity (SRM) SRM 56 16 100 - 8227 -1 0 1N -1 -1 N -1 0 -Composite Ref (CZ) CZ 37 16 100 - -1 -1 0 1N 2 -1 N -1 0 -Composite Ref (CZ) CZ 38 16 400 - -1 -1 0 1N 2 -1 N -1 0 -Lyr Comp Ref Max (LRM) Level 2 LRM 66 8 0 M -1 -1 0 1N -1 -1 N -1 0 -Lyr Comp Ref Max (LRM) Level 3 LRM 90 8 0 H -1 -1 0 1N -1 -1 N -1 0 -Lyr Comp Ref MAX (APR) APR 67 16 0 L -1 -1 0 1N -1 -1 N -1 0 -Echo Tops (ET) ET 41 16 0 - -1 -1 0 1N 2 -1 N -1 0 -Vert Integ Liq (VIL) VIL 57 16 0 - -1 -1 0 1N 2 -1 N -1 0 -One Hour Precip (OHP) OHP 78 16 0 - -1 -1 0 1N -1 -1 N -1 0 -Storm Total Precip (STP) STP 80 16 0 - -1 -1 0 1N -1 -1 N -1 0 -VAD Wind Profile (VWP) VWP 48 0 0 - -1 -1 0 1N -1 -1 N -1 0 -Digital Precip Array (DPA) DPA 81 256 400 - -1 -1 0 1N -1 -1 N -1 0 -Base Spectrum Width (SW) SW 30 8 100 - 5 -1 0 1N -1 -1 N -1 0 -Storm Tracking Information (STI) STI 58 0 100 - -1 -1 0 1N 2 -1 N -1 0 -Hail Index (HI) HI 59 0 100 - -1 -1 0 1N 2 -1 N -1 0 -Mesocyclone (MD) MD 141 0 0 - 1 -1 0 1N 2 -1 N -1 0 -Tornadic Vortex Signature (TVS) TVS 61 0 100 - -1 -1 0 1N 2 -1 N -1 0 -Storm Structure (SS) SS 62 0 100 - -1 -1 0 1N -1 -1 N -1 0 -Supplemental Precipitation Data (SPD) SPD 82 0 100 - -1 -1 0 1N -1 -1 N -1 0 -Reflectivity (Z) Z 94 256 100 - 18 -1 0 1N -1 -1 N -1 0 -Reflectivity (Z) Z 94 256 100 - 24 -1 0 1N -1 -1 N -1 0 -Reflectivity (Z) Z 94 256 100 - 31 -1 0 1N -1 -1 N -1 0 -Reflectivity (Z) Z 94 256 100 - 40 -1 0 1N -1 -1 N -1 0 -Reflectivity (Z) Z 94 256 100 - 51 -1 0 1N -1 -1 N -1 0 -Reflectivity (Z) Z 94 256 100 - 64 -1 0 1N -1 -1 N -1 0 -Reflectivity (Z) Z 94 256 100 - 80 -1 0 1N -1 -1 N -1 0 -Reflectivity (Z) Z 94 256 100 - 100 -1 0 1N -1 -1 N -1 0 -Reflectivity (Z) Z 94 256 100 - 125 -1 0 1N -1 -1 N -1 0 -Reflectivity (Z) Z 94 256 100 - 156 -1 0 1N -1 -1 N -1 0 -Reflectivity (Z) Z 94 256 100 - 167 -1 0 1N -1 -1 N -1 0 -Reflectivity (Z) Z 94 256 100 - 195 -1 0 1N -1 -1 N -1 0 -Velocity (V) V 99 256 25 - 18 -1 0 1N -1 -1 N -1 0 -Velocity (V) V 99 256 25 - 24 -1 0 1N -1 -1 N -1 0 -Velocity (V) V 99 256 25 - 31 -1 0 1N -1 -1 N -1 0 -Velocity (V) V 99 256 25 - 40 -1 0 1N -1 -1 N -1 0 -Velocity (V) V 99 256 25 - 51 -1 0 1N -1 -1 N -1 0 -Velocity (V) V 99 256 25 - 64 -1 0 1N -1 -1 N -1 0 -Velocity (V) V 99 256 25 - 80 -1 0 1N -1 -1 N -1 0 -Velocity (V) V 99 256 25 - 100 -1 0 1N -1 -1 N -1 0 -Velocity (V) V 99 256 25 - 125 -1 0 1N -1 -1 N -1 0 -Velocity (V) V 99 256 25 - 156 -1 0 1N -1 -1 N -1 0 -Velocity (V) V 99 256 25 - 167 -1 0 1N -1 -1 N -1 0 -Velocity (V) V 99 256 25 - 195 -1 0 1N -1 -1 N -1 0 -Super Res Reflectivity (Z) HZ 153 256 25 - 5 -1 0 1N -1 -1 N -1 0 -Super Res Reflectivity (Z) HZ 153 256 25 - 9 -1 0 1N -1 -1 N -1 0 -Super Res Reflectivity (Z) HZ 153 256 25 - 13 -1 0 1N -1 -1 N -1 0 -Super Res Velocity (V) HV 154 256 25 - 5 -1 0 1N -1 -1 N -1 0 -Super Res Velocity (V) HV 154 256 25 - 9 -1 0 1N -1 -1 N -1 0 -Super Res Velocity (V) HV 154 256 25 - 13 -1 0 1N -1 -1 N -1 0 -Super Res Spec Width (SW) HSW 155 256 25 - 5 -1 0 1N -1 -1 N -1 0 -Super Res Spec Width (SW) HSW 155 256 25 - 9 -1 0 1N -1 -1 N -1 0 -Super Res Spec Width (SW) HSW 155 256 25 - 13 -1 0 1N -1 -1 N -1 0 -Digital Vert Integ Liq (DVL) DVL 134 256 100 - -1 -1 0 1N -1 -1 N -1 0 -Digital Hybrid Scan Refl (DHR) DHR 32 256 100 - -1 -1 0 1N -1 -1 N -1 0 -Enhanced Echo Tops (EET) EET 135 256 100 - -1 -1 0 1N -1 -1 N -1 0 -Digital Meso Detection (DMD) DMD 149 0 0 - 16384 -1 0 1N 2 -1 N -1 0 -TVS Rapid Update (TRU) TRU 143 0 0 - 16384 -1 0 1N -1 -1 N -1 0 -User Selectable Lyr Refl (ULR) ULR 137 16 100 - -1 -1 0 1N 14 70 N -1 0 -Storm Total Precip (STP) STP 138 256 200 - -1 -1 0 1N -1 -1 N -1 0 -1-Hour Snow-Water Equiv (OSW) OSW 144 16 100 - -1 -1 0 1N -1 -1 N -1 0 -1-Hour Snow Depth (OSD) OSD 145 16 100 - -1 -1 0 1N -1 -1 N -1 0 -Storm Tot Snow Depth (SSD) SSD 147 16 100 - -1 -1 0 1N -1 -1 N -1 0 -Storm Tot Snow-Water Equiv (SSW) SSW 146 16 100 - -1 -1 0 1N -1 -1 N -1 0 -Differential Refl (ZDR) ZDR 159 256 25 - 16384 -1 0 1N -1 -1 N -1 0 -Correlation Coeff (CC) CC 161 256 25 - 16384 -1 0 1N -1 -1 N -1 0 -Specific Diff Phase (KDP) KDP 163 256 25 - 16384 -1 0 1N -1 -1 N -1 0 -Hydrometeor Class (HC) HC 165 256 25 - 16384 -1 0 1N -1 -1 N -1 0 -Melting Layer (ML) ML 166 0 0 - 16384 -1 0 1N -1 -1 N -1 0 -Hybrid Hydrometeor Class (HHC) HHC 177 256 25 - -1 -1 0 1N -1 -1 N -1 0 -Digital Inst Precip Rate (DPR) DPR 176 0 25 - -1 -1 0 1N -1 -1 N -1 0 -One Hour Accum (OHA) OHA 169 16 200 - -1 -1 0 1N -1 -1 N -1 0 -User Select Accum (DUA) DUA 173 256 25 - -1 -1 0 1N -1 -1 N -1 60 -User Select Accum (DUA) DUA 173 256 25 - -1 -1 0 1N -1 -1 N -1 180 -Storm Total Accum (STA) STA 171 16 200 - -1 -1 0 1N -1 -1 N -1 0 -Storm Total Accum (DSA) STA 172 256 25 - -1 -1 0 1N -1 -1 N -1 0 -One Hour Diff (DOD) DOD 174 256 25 - -1 -1 0 1N -1 -1 N -1 0 -Storm Total Diff (DSD) DSD 175 256 25 - -1 -1 0 1N -1 -1 N -1 0 diff --git a/RadarServer/build.rcm/cfgbits/data/config/drop-ins/KOUN.storm.dual-pol.VCP221 b/RadarServer/build.rcm/cfgbits/data/config/drop-ins/KOUN.storm.dual-pol.VCP221 deleted file mode 100644 index 5363501240..0000000000 --- a/RadarServer/build.rcm/cfgbits/data/config/drop-ins/KOUN.storm.dual-pol.VCP221 +++ /dev/null @@ -1,92 +0,0 @@ -RPS List dp_mji21.VCP21.rps created 2007:12:05:19:02:48 ... 91 products - An RPS list contains the fields: Prod-Name, Mnemonic, Prod-Code - Number of Data Levels, Resolution, Layer Code, Elevation, Contour Interval, - Priority, Req Interval, Map, Lower Layer, Upper Layer, multCut, endHour, timeSpan - The record format is: '%-39s %-3s%4d%4d%6d %c%6d%7d%2d%2d%c%3d%3d %c%7d%7d' -Reflectivity (Z) Z 19 16 100 - 5 -1 0 1N -1 -1 N -1 0 -Reflectivity (Z) Z 19 16 100 - 15 -1 0 1N -1 -1 N -1 0 -Reflectivity (Z) Z 19 16 100 - 25 -1 0 1N -1 -1 N -1 0 -Reflectivity (Z) Z 19 16 100 - 35 -1 0 1N -1 -1 N -1 0 -Reflectivity (Z) Z 20 16 200 - 5 -1 0 1N -1 -1 N -1 0 -Velocity (V) V 27 16 100 - 5 -1 0 1N -1 -1 N -1 0 -Velocity (V) V 27 16 100 - 15 -1 0 1N -1 -1 N -1 0 -Velocity (V) V 27 16 100 - 25 -1 0 1N -1 -1 N -1 0 -Velocity (V) V 27 16 100 - 35 -1 0 1N -1 -1 N -1 0 -Storm Rel Velocity (SRM) SRM 56 16 100 - 5 -1 0 1N -1 -1 N -1 0 -Storm Rel Velocity (SRM) SRM 56 16 100 - 15 -1 0 1N -1 -1 N -1 0 -Storm Rel Velocity (SRM) SRM 56 16 100 - 25 -1 0 1N -1 -1 N -1 0 -Storm Rel Velocity (SRM) SRM 56 16 100 - 35 -1 0 1N -1 -1 N -1 0 -Composite Ref (CZ) CZ 37 16 100 - -1 -1 0 1N 2 -1 N -1 0 -Composite Ref (CZ) CZ 38 16 400 - -1 -1 0 1N 2 -1 N -1 0 -Lyr Comp Ref Max (LRM) Level 1 LRM 65 8 0 L -1 -1 0 1N -1 -1 N -1 0 -Lyr Comp Ref Max (LRM) Level 2 LRM 66 8 0 M -1 -1 0 1N -1 -1 N -1 0 -Lyr Comp Ref Max (LRM) Level 3 LRM 90 8 0 H -1 -1 0 1N -1 -1 N -1 0 -Lyr Comp Ref MAX (APR) APR 67 16 0 L -1 -1 0 1N -1 -1 N -1 0 -Echo Tops (ET) ET 41 16 0 - -1 -1 0 1N 2 -1 N -1 0 -Vert Integ Liq (VIL) VIL 57 16 0 - -1 -1 0 1N 2 -1 N -1 0 -One Hour Precip (OHP) OHP 78 16 0 - -1 -1 0 1N -1 -1 N -1 0 -Storm Total Precip (STP) STP 80 16 0 - -1 -1 0 1N -1 -1 N -1 0 -VAD Wind Profile (VWP) VWP 48 0 0 - -1 -1 0 1N -1 -1 N -1 0 -Digital Precip Array (DPA) DPA 81 256 400 - -1 -1 0 1N -1 -1 N -1 0 -Velocity (V) V 25 16 100 - 5 -1 0 1N -1 -1 N -1 0 -Base Spectrum Width (SW) SW 28 8 100 - 5 -1 0 1N -1 -1 N -1 0 -Base Spectrum Width (SW) SW 30 8 100 - 5 -1 0 1N -1 -1 N -1 0 -Severe Weather Probablilty (SWP) SWP 47 0 100 - -1 -1 0 1N -1 -1 N -1 0 -Storm Tracking Information (STI) STI 58 0 100 - -1 -1 0 1N 2 -1 N -1 0 -Hail Index (HI) HI 59 0 100 - -1 -1 0 1N 2 -1 N -1 0 -Mesocyclone (M) M 60 0 100 - -1 -1 0 1N -1 -1 N -1 0 -Mesocyclone (MD) MD 141 0 0 - 1 -1 0 1N 2 -1 N -1 0 -Tornadic Vortex Signature (TVS) TVS 61 0 100 - -1 -1 0 1N 2 -1 N -1 0 -Storm Structure (SS) SS 62 0 100 - -1 -1 0 1N -1 -1 N -1 0 -Supplemental Precipitation Data (SPD) SPD 82 0 100 - -1 -1 0 1N -1 -1 N -1 0 -Reflectivity (Z) Z 94 256 100 - 5 -1 0 1N -1 -1 N -1 0 -Reflectivity (Z) Z 94 256 100 - 15 -1 0 1N -1 -1 N -1 0 -Reflectivity (Z) Z 94 256 100 - 24 -1 0 1N -1 -1 N -1 0 -Reflectivity (Z) Z 94 256 100 - 34 -1 0 1N -1 -1 N -1 0 -Reflectivity (Z) Z 94 256 100 - 43 -1 0 1N -1 -1 N -1 0 -Reflectivity (Z) Z 94 256 100 - 60 -1 0 1N -1 -1 N -1 0 -Reflectivity (Z) Z 94 256 100 - 99 -1 0 1N -1 -1 N -1 0 -Reflectivity (Z) Z 94 256 100 - 146 -1 0 1N -1 -1 N -1 0 -Reflectivity (Z) Z 94 256 100 - 195 -1 0 1N -1 -1 N -1 0 -Velocity (V) V 99 256 25 - 5 -1 0 1N -1 -1 N -1 0 -Velocity (V) V 99 256 25 - 15 -1 0 1N -1 -1 N -1 0 -Velocity (V) V 99 256 25 - 24 -1 0 1N -1 -1 N -1 0 -Velocity (V) V 99 256 25 - 34 -1 0 1N -1 -1 N -1 0 -Velocity (V) V 99 256 25 - 43 -1 0 1N -1 -1 N -1 0 -Velocity (V) V 99 256 25 - 60 -1 0 1N -1 -1 N -1 0 -Velocity (V) V 99 256 25 - 99 -1 0 1N -1 -1 N -1 0 -Velocity (V) V 99 256 25 - 146 -1 0 1N -1 -1 N -1 0 -Velocity (V) V 99 256 25 - 195 -1 0 1N -1 -1 N -1 0 -Super Res Reflectivity (Z) HZ 153 256 25 - 5 -1 0 1N -1 -1 N -1 0 -Super Res Reflectivity (Z) HZ 153 256 25 - 15 -1 0 1N -1 -1 N -1 0 -Super Res Velocity (V) HV 154 256 25 - 5 -1 0 1N -1 -1 N -1 0 -Super Res Velocity (V) HV 154 256 25 - 15 -1 0 1N -1 -1 N -1 0 -Spectrum Width (SW) SW 28 8 50 - 15 -1 0 1N -1 -1 N -1 0 -Spectrum Width (SW) SW 30 8 100 - 15 -1 0 1N -1 -1 N -1 0 -Super Res Spec Width (SW) HSW 155 256 25 - 5 -1 0 1N -1 -1 N -1 0 -Super Res Spec Width (SW) HSW 155 256 25 - 15 -1 0 1N -1 -1 N -1 0 -Digital Vert Integ Liq (DVL) DVL 134 256 100 - -1 -1 0 1N -1 -1 N -1 0 -Digital Hybrid Scan Refl (DHR) DHR 32 256 100 - -1 -1 0 1N -1 -1 N -1 0 -Enhanced Echo Tops (EET) EET 135 256 100 - -1 -1 0 1N -1 -1 N -1 0 -Digital Meso Detection (DMD) DMD 149 0 0 - 16384 -1 0 1N 2 -1 N -1 0 -TVS Rapid Update (TRU) TRU 143 0 0 - 16384 -1 0 1N -1 -1 N -1 0 -User Selectable Lyr Refl (ULR) ULR 137 16 100 - -1 -1 0 1N 14 70 N -1 0 -Storm Total Precip (STP) STP 138 256 200 - -1 -1 0 1N -1 -1 N -1 0 -1-Hour Snow Depth (OSD) OSD 145 16 100 - -1 -1 0 1N -1 -1 N -1 0 -1-Hour Snow-Water Equiv (OSW) OSW 144 16 100 - -1 -1 0 1N -1 -1 N -1 0 -Storm Tot Snow Depth (SSD) SSD 147 16 100 - -1 -1 0 1N -1 -1 N -1 0 -Storm Tot Snow-Water Equiv (SSW) SSW 146 16 100 - -1 -1 0 1N -1 -1 N -1 0 -Differential Refl (ZDR) ZDR 159 256 25 - 16384 -1 0 1N -1 -1 N -1 0 -Correlation Coeff (CC) CC 161 256 25 - 16384 -1 0 1N -1 -1 N -1 0 -Specific Diff Phase (KDP) KDP 163 256 25 - 16384 -1 0 1N -1 -1 N -1 0 -Hydrometeor Class (HC) HC 165 256 25 - 16384 -1 0 1N -1 -1 N -1 0 -Melting Layer (ML) ML 166 0 0 - 16384 -1 0 1N -1 -1 N -1 0 -Hybrid Hydrometeor Class (HHC) HHC 177 256 25 - -1 -1 0 1N -1 -1 N -1 0 -Digital Inst Precip Rate (DPR) DPR 176 0 25 - -1 -1 0 1N -1 -1 N -1 0 -One Hour Accum (OHA) OHA 169 16 200 - -1 -1 0 1N -1 -1 N -1 0 -User Select Accum (DUA) DUA 173 256 25 - -1 -1 0 1N -1 -1 N -1 60 -User Select Accum (DUA) DUA 173 256 25 - -1 -1 0 1N -1 -1 N -1 180 -Storm Total Accum (STA) STA 171 16 200 - -1 -1 0 1N -1 -1 N -1 0 -Storm Total Accum (DSA) STA 172 256 25 - -1 -1 0 1N -1 -1 N -1 0 -One Hour Diff (DOD) DOD 174 256 25 - -1 -1 0 1N -1 -1 N -1 0 -Storm Total Diff (DSD) DSD 175 256 25 - -1 -1 0 1N -1 -1 N -1 0 diff --git a/RadarServer/build.rcm/cfgbits/data/config/drop-ins/KXXX.clear-air.VCP31 b/RadarServer/build.rcm/cfgbits/data/config/drop-ins/KXXX.clear-air.VCP31 deleted file mode 100644 index eec410803a..0000000000 --- a/RadarServer/build.rcm/cfgbits/data/config/drop-ins/KXXX.clear-air.VCP31 +++ /dev/null @@ -1,68 +0,0 @@ -RPS List super_res_vcp31_mji.VCP31.rps created 2007:06:06:19%:04:00 ... 64 products - An RPS list contains the fields: Prod-Name, Mnemonic, Prod-Code - Number of Data Levels, Resolution, Layer Code, Elevation, Contour Interval, - Priority, Req Interval, Map, Lower Layer, Upper Layer, and multCut - The record format is: '%-39s %-3s%4d%4d%6d %c%6d%7d%2d%2d%c%3d%3d %c' -Reflectivity (Z) Z 19 16 100 - 5 -1 0 1N -Reflectivity (Z) Z 19 16 100 - 15 -1 0 1N -Reflectivity (Z) Z 19 16 100 - 25 -1 0 1N -Reflectivity (Z) Z 19 16 100 - 35 -1 0 1N -Reflectivity (Z) Z 20 16 200 - 5 -1 0 1N -Velocity (V) V 27 16 100 - 5 -1 0 1N -Velocity (V) V 27 16 100 - 15 -1 0 1N -Velocity (V) V 27 16 100 - 25 -1 0 1N -Velocity (V) V 27 16 100 - 35 -1 0 1N -Storm Rel Velocity (SRM) SRM 56 16 100 - 5 -1 0 1N -Storm Rel Velocity (SRM) SRM 56 16 100 - 15 -1 0 1N -Storm Rel Velocity (SRM) SRM 56 16 100 - 25 -1 0 1N -Storm Rel Velocity (SRM) SRM 56 16 100 - 35 -1 0 1N -Composite Ref (CZ) CZ 37 16 100 - -1 -1 0 1N -Composite Ref (CZ) CZ 38 16 400 - -1 -1 0 1N -Lyr Comp Ref Max (LRM) Level 1 LRM 65 8 0 L -1 -1 0 1N -Lyr Comp Ref Max (LRM) Level 2 LRM 66 8 0 M -1 -1 0 1N -Lyr Comp Ref Max (LRM) Level 3 LRM 90 8 0 H -1 -1 0 1N -Lyr Comp Ref MAX (APR) APR 67 16 0 L -1 -1 0 1N -Echo Tops (ET) ET 41 16 0 - -1 -1 0 1N -Vert Integ Liq (VIL) VIL 57 16 0 - -1 -1 0 1N -One Hour Precip (OHP) OHP 78 16 0 - -1 -1 0 1N -Storm Total Precip (STP) STP 80 16 0 - -1 -1 0 1N -VAD Wind Profile (VWP) VWP 48 0 0 - -1 -1 0 1N -Digital Precip Array (DPA) DPA 81 256 400 - -1 -1 0 1N -Velocity (V) V 25 16 100 - 5 -1 0 1N -Base Spectrum Width (SW) SW 28 8 100 - 5 -1 0 1N -Base Spectrum Width (SW) SW 30 8 100 - 5 -1 0 1N -Reflectivity (Z) Z 94 256 100 - 5 -1 0 1N -1 -1 N -Reflectivity (Z) Z 94 256 100 - 15 -1 0 1N -1 -1 N -Reflectivity (Z) Z 94 256 100 - 25 -1 0 1N -1 -1 N -Reflectivity (Z) Z 94 256 100 - 35 -1 0 1N -1 -1 N -Reflectivity (Z) Z 94 256 100 - 45 -1 0 1N -1 -1 N -Velocity (V) V 99 256 25 - 5 -1 0 1N -1 -1 N -Velocity (V) V 99 256 25 - 15 -1 0 1N -1 -1 N -Velocity (V) V 99 256 25 - 25 -1 0 1N -1 -1 N -Velocity (V) V 99 256 25 - 35 -1 0 1N -1 -1 N -Velocity (V) V 99 256 25 - 45 -1 0 1N -1 -1 N -Super Res Reflectivity (Z) HZ 153 256 25 - 5 -1 0 1N -1 -1 N -Super Res Reflectivity (Z) HZ 153 256 25 - 15 -1 0 1N -1 -1 N -Super Res Reflectivity (Z) HZ 153 256 25 - 25 -1 0 1N -1 -1 N -Super Res Velocity (V) HV 154 256 25 - 5 -1 0 1N -1 -1 N -Super Res Velocity (V) HV 154 256 25 - 15 -1 0 1N -1 -1 N -Super Res Velocity (V) HV 154 256 25 - 25 -1 0 1N -1 -1 N -Super Res Spec Width (SW) HSW 155 256 25 - 5 -1 0 1N -1 -1 N -Super Res Spec Width (SW) HSW 155 256 25 - 15 -1 0 1N -1 -1 N -Super Res Spec Width (SW) HSW 155 256 25 - 25 -1 0 1N -1 -1 N -Spectrum Width (SW) SW 30 8 100 - 15 -1 0 1N -1 -1 N -Spectrum Width (SW) SW 30 8 100 - 25 -1 0 1N -1 -1 N -Spectrum Width (SW) SW 28 8 25 - 15 -1 0 1N -1 -1 N -Spectrum Width (SW) SW 28 8 25 - 25 -1 0 1N -1 -1 N -Digital Vert Integ Liq (DVL) DVL 134 256 100 - -1 -1 0 1N -1 -1 N -Digital Hybrid Scan Refl (DHR) DHR 32 256 100 - -1 -1 0 1N -1 -1 N -Enhanced Echo Tops (EET) EET 135 256 100 - -1 -1 0 1N -1 -1 N -Digital Meso Detection (DMD) DMD 149 0 0 - 16384 -1 0 1N 2 -1 N -TVS Rapid Update (TRU) TRU 143 0 0 - 16384 -1 0 1N -1 -1 N -User Selectable Lyr Refl (ULR) ULR 137 16 100 - -1 -1 0 1N 14 70 N -Storm Total Precip (STP) STP 138 256 200 - -1 -1 0 1N -1 -1 N -1-Hour Snow-Water Equiv (OSW) OSW 144 16 100 - -1 -1 0 1N -1 -1 N -1-Hour Snow Depth (OSD) OSD 145 16 100 - -1 -1 0 1N -1 -1 N -Storm Tot Snow Depth (SSD) SSD 147 16 100 - -1 -1 0 1N -1 -1 N -Storm Tot Snow-Water Equiv (SSW) SSW 146 16 100 - -1 -1 0 1N -1 -1 N -Storm Tot Snow-Water Equiv (SSW) SSW 146 16 100 - -1 -1 0 1N -1 -1 N diff --git a/RadarServer/build.rcm/cfgbits/data/config/drop-ins/KXXX.clear-air.VCP32 b/RadarServer/build.rcm/cfgbits/data/config/drop-ins/KXXX.clear-air.VCP32 deleted file mode 100644 index 14518b3163..0000000000 --- a/RadarServer/build.rcm/cfgbits/data/config/drop-ins/KXXX.clear-air.VCP32 +++ /dev/null @@ -1,63 +0,0 @@ -RPS List super_res_vcp32_mji.VCP32.rps created 2007:06:06:19%:04:00 ... 59 products - An RPS list contains the fields: Prod-Name, Mnemonic, Prod-Code - Number of Data Levels, Resolution, Layer Code, Elevation, Contour Interval, - Priority, Req Interval, Map, Lower Layer, Upper Layer, and multCut - The record format is: '%-39s %-3s%4d%4d%6d %c%6d%7d%2d%2d%c%3d%3d %c' -Reflectivity (Z) Z 19 16 100 - 5 -1 0 1N -Reflectivity (Z) Z 19 16 100 - 15 -1 0 1N -Reflectivity (Z) Z 19 16 100 - 25 -1 0 1N -Reflectivity (Z) Z 19 16 100 - 35 -1 0 1N -Reflectivity (Z) Z 20 16 200 - 5 -1 0 1N -Velocity (V) V 27 16 100 - 5 -1 0 1N -Velocity (V) V 27 16 100 - 15 -1 0 1N -Velocity (V) V 27 16 100 - 25 -1 0 1N -Velocity (V) V 27 16 100 - 35 -1 0 1N -Storm Rel Velocity (SRM) SRM 56 16 100 - 5 -1 0 1N -Storm Rel Velocity (SRM) SRM 56 16 100 - 15 -1 0 1N -Storm Rel Velocity (SRM) SRM 56 16 100 - 25 -1 0 1N -Storm Rel Velocity (SRM) SRM 56 16 100 - 35 -1 0 1N -Composite Ref (CZ) CZ 37 16 100 - -1 -1 0 1N -Composite Ref (CZ) CZ 38 16 400 - -1 -1 0 1N -Lyr Comp Ref Max (LRM) Level 1 LRM 65 8 0 L -1 -1 0 1N -Lyr Comp Ref Max (LRM) Level 2 LRM 66 8 0 M -1 -1 0 1N -Lyr Comp Ref Max (LRM) Level 3 LRM 90 8 0 H -1 -1 0 1N -Lyr Comp Ref MAX (APR) APR 67 16 0 L -1 -1 0 1N -Echo Tops (ET) ET 41 16 0 - -1 -1 0 1N -Vert Integ Liq (VIL) VIL 57 16 0 - -1 -1 0 1N -One Hour Precip (OHP) OHP 78 16 0 - -1 -1 0 1N -Storm Total Precip (STP) STP 80 16 0 - -1 -1 0 1N -VAD Wind Profile (VWP) VWP 48 0 0 - -1 -1 0 1N -Digital Precip Array (DPA) DPA 81 256 400 - -1 -1 0 1N -Velocity (V) V 25 16 100 - 5 -1 0 1N -Base Spectrum Width (SW) SW 28 8 100 - 5 -1 0 1N -Base Spectrum Width (SW) SW 30 8 100 - 5 -1 0 1N -Reflectivity (Z) Z 94 256 100 - 5 -1 0 1N -1 -1 N -Reflectivity (Z) Z 94 256 100 - 15 -1 0 1N -1 -1 N -Reflectivity (Z) Z 94 256 100 - 25 -1 0 1N -1 -1 N -Reflectivity (Z) Z 94 256 100 - 35 -1 0 1N -1 -1 N -Reflectivity (Z) Z 94 256 100 - 45 -1 0 1N -1 -1 N -Velocity (V) V 99 256 25 - 5 -1 0 1N -1 -1 N -Velocity (V) V 99 256 25 - 15 -1 0 1N -1 -1 N -Velocity (V) V 99 256 25 - 25 -1 0 1N -1 -1 N -Velocity (V) V 99 256 25 - 35 -1 0 1N -1 -1 N -Velocity (V) V 99 256 25 - 45 -1 0 1N -1 -1 N -Super Res Reflectivity (Z) HZ 153 256 25 - 5 -1 0 1N -1 -1 N -Super Res Reflectivity (Z) HZ 153 256 25 - 15 -1 0 1N -1 -1 N -Super Res Velocity (V) HV 154 256 25 - 5 -1 0 1N -1 -1 N -Super Res Velocity (V) HV 154 256 25 - 15 -1 0 1N -1 -1 N -Super Res Spec Width (SW) HSW 155 256 25 - 5 -1 0 1N -1 -1 N -Super Res Spec Width (SW) HSW 155 256 25 - 15 -1 0 1N -1 -1 N -Spectrum Width (SW) SW 30 8 100 - 15 -1 0 1N -1 -1 N -Spectrum Width (SW) SW 28 8 25 - 15 -1 0 1N -1 -1 N -Digital Vert Integ Liq (DVL) DVL 134 256 100 - -1 -1 0 1N -1 -1 N -Digital Hybrid Scan Refl (DHR) DHR 32 256 100 - -1 -1 0 1N -1 -1 N -Enhanced Echo Tops (EET) EET 135 256 100 - -1 -1 0 1N -1 -1 N -Digital Meso Detection (DMD) DMD 149 0 0 - 16384 -1 0 1N 2 -1 N -TVS Rapid Update (TRU) TRU 143 0 0 - 16384 -1 0 1N -1 -1 N -User Selectable Lyr Refl (ULR) ULR 137 16 100 - -1 -1 0 1N 14 70 N -Storm Total Precip (STP) STP 138 256 200 - -1 -1 0 1N -1 -1 N -1-Hour Snow-Water Equiv (OSW) OSW 144 16 100 - -1 -1 0 1N -1 -1 N -1-Hour Snow Depth (OSD) OSD 145 16 100 - -1 -1 0 1N -1 -1 N -Storm Tot Snow Depth (SSD) SSD 147 16 100 - -1 -1 0 1N -1 -1 N -Storm Tot Snow-Water Equiv (SSW) SSW 146 16 100 - -1 -1 0 1N -1 -1 N -Storm Tot Snow-Water Equiv (SSW) SSW 146 16 100 - -1 -1 0 1N -1 -1 N diff --git a/RadarServer/build.rcm/cfgbits/data/config/drop-ins/KXXX.clear-air.VCP35 b/RadarServer/build.rcm/cfgbits/data/config/drop-ins/KXXX.clear-air.VCP35 deleted file mode 100644 index eaec7f8275..0000000000 --- a/RadarServer/build.rcm/cfgbits/data/config/drop-ins/KXXX.clear-air.VCP35 +++ /dev/null @@ -1,50 +0,0 @@ -RPS List VCP35.rps created 2016:01:28:15%:09:53 ... 45 products - An RPS list contains the fields: Prod-Name, Mnemonic, Prod-Code - Number of Data Levels, Resolution, Layer Code, Elevation, Contour Interval, - Priority, Req Interval, Map, Lower Layer, Upper Layer, and multCut - The record format is: '%-39s %-3s%4d%4d%6d %c%6d%7d%2d%2d%c%3d%3d %c' -Storm Rel Velocity (SRM) SRM 56 16 100 - 8227 -1 0 1N -Composite Ref (CZ) CZ 37 16 100 - -1 -1 0 1N -Composite Ref (CZ) CZ 38 16 400 - -1 -1 0 1N -Lyr Comp Ref Max (LRM) Level 2 LRM 66 8 0 M -1 -1 0 1N -Lyr Comp Ref Max (LRM) Level 3 LRM 90 8 0 H -1 -1 0 1N -Lyr Comp Ref MAX (APR) APR 67 16 0 L -1 -1 0 1N -Echo Tops (ET) ET 41 16 0 - -1 -1 0 1N -Vert Integ Liq (VIL) VIL 57 16 0 - -1 -1 0 1N -One Hour Precip (OHP) OHP 78 16 0 - -1 -1 0 1N -Storm Total Precip (STP) STP 80 16 0 - -1 -1 0 1N -VAD Wind Profile (VWP) VWP 48 0 0 - -1 -1 0 1N -Digital Precip Array (DPA) DPA 81 256 400 - -1 -1 0 1N -Reflectivity (Z) Z 94 256 100 - 18 -1 0 1N -1 -1 N -Reflectivity (Z) Z 94 256 100 - 24 -1 0 1N -1 -1 N -Reflectivity (Z) Z 94 256 100 - 31 -1 0 1N -1 -1 N -Reflectivity (Z) Z 94 256 100 - 40 -1 0 1N -1 -1 N -Reflectivity (Z) Z 94 256 100 - 51 -1 0 1N -1 -1 N -Reflectivity (Z) Z 94 256 100 - 64 -1 0 1N -1 -1 N -Velocity (V) V 99 256 25 - 18 -1 0 1N -1 -1 N -Velocity (V) V 99 256 25 - 24 -1 0 1N -1 -1 N -Velocity (V) V 99 256 25 - 31 -1 0 1N -1 -1 N -Velocity (V) V 99 256 25 - 40 -1 0 1N -1 -1 N -Velocity (V) V 99 256 25 - 51 -1 0 1N -1 -1 N -Velocity (V) V 99 256 25 - 64 -1 0 1N -1 -1 N -Super Res Reflectivity (Z) HZ 153 256 25 - 5 -1 0 1N -1 -1 N -Super Res Reflectivity (Z) HZ 153 256 25 - 9 -1 0 1N -1 -1 N -Super Res Reflectivity (Z) HZ 153 256 25 - 13 -1 0 1N -1 -1 N -Super Res Velocity (V) HV 154 256 25 - 5 -1 0 1N -1 -1 N -Super Res Velocity (V) HV 154 256 25 - 9 -1 0 1N -1 -1 N -Super Res Velocity (V) HV 154 256 25 - 13 -1 0 1N -1 -1 N -Super Res Spec Width (SW) HSW 155 256 25 - 5 -1 0 1N -1 -1 N -Super Res Spec Width (SW) HSW 155 256 25 - 9 -1 0 1N -1 -1 N -Super Res Spec Width (SW) HSW 155 256 25 - 13 -1 0 1N -1 -1 N -Digital Vert Integ Liq (DVL) DVL 134 256 100 - -1 -1 0 1N -1 -1 N -Digital Hybrid Scan Refl (DHR) DHR 32 256 100 - -1 -1 0 1N -1 -1 N -Enhanced Echo Tops (EET) EET 135 256 100 - -1 -1 0 1N -1 -1 N -Digital Meso Detection (DMD) DMD 149 0 0 - 16384 -1 0 1N 2 -1 N -TVS Rapid Update (TRU) TRU 143 0 0 - 16384 -1 0 1N -1 -1 N -User Selectable Lyr Refl (ULR) ULR 137 16 100 - -1 -1 0 1N 14 70 N -Storm Total Precip (STP) STP 138 256 200 - -1 -1 0 1N -1 -1 N -1-Hour Snow-Water Equiv (OSW) OSW 144 16 100 - -1 -1 0 1N -1 -1 N -1-Hour Snow Depth (OSD) OSD 145 16 100 - -1 -1 0 1N -1 -1 N -Storm Tot Snow Depth (SSD) SSD 147 16 100 - -1 -1 0 1N -1 -1 N -Storm Tot Snow-Water Equiv (SSW) SSW 146 16 100 - -1 -1 0 1N -1 -1 N -Storm Tot Snow-Water Equiv (SSW) SSW 146 16 100 - -1 -1 0 1N -1 -1 N diff --git a/RadarServer/build.rcm/cfgbits/data/config/drop-ins/KXXX.maint b/RadarServer/build.rcm/cfgbits/data/config/drop-ins/KXXX.maint deleted file mode 100644 index dc818db31a..0000000000 --- a/RadarServer/build.rcm/cfgbits/data/config/drop-ins/KXXX.maint +++ /dev/null @@ -1,14 +0,0 @@ -RPS List KXXX.maint created 24-MAY-1995 19:51:48... 19 products - An RPS list contains the following fields: Product Name, Product - Mnemonic, Product Code, Number of Data Levels, Resolution, Elevation, - Layer Code, Contour Interval, Priority, Req Interval, and Map - The record format is: '%-39s %-3s%4d%4d%6d %c%6d%7d%2d%2d%c' -Base Reflectivity (Z) Z 19 16 100 - 5 0 0 1N -Base Reflectivity (Z) Z 19 16 100 - 24 0 0 1N -Base Reflectivity (Z) Z 19 16 100 - 99 0 0 1N -Base Velocity (V) V 27 16 100 - 5 0 0 1N -Base Velocity (V) V 27 16 100 - 24 0 0 1N -Base Velocity (V) V 27 16 100 - 99 0 0 1N -Spectrum Width (SW) SW 30 8 100 - 5 0 0 1N -Spectrum Width (SW) SW 30 8 100 - 24 0 0 1N -Spectrum Width (SW) SW 30 8 100 - 99 0 0 1N diff --git a/RadarServer/build.rcm/cfgbits/data/config/drop-ins/KXXX.storm.VCP11 b/RadarServer/build.rcm/cfgbits/data/config/drop-ins/KXXX.storm.VCP11 deleted file mode 100644 index d6507fc858..0000000000 --- a/RadarServer/build.rcm/cfgbits/data/config/drop-ins/KXXX.storm.VCP11 +++ /dev/null @@ -1,89 +0,0 @@ -RPS List super_res_vcp11_mji.VCP11.rps created 2007:06:06:19%:04:00 ... 84 products - An RPS list contains the fields: Prod-Name, Mnemonic, Prod-Code - Number of Data Levels, Resolution, Layer Code, Elevation, Contour Interval, - Priority, Req Interval, Map, Lower Layer, Upper Layer, and multCut - The record format is: '%-39s %-3s%4d%4d%6d %c%6d%7d%2d%2d%c%3d%3d %c' -Reflectivity (Z) Z 19 16 100 - 5 -1 0 1N -Reflectivity (Z) Z 19 16 100 - 15 -1 0 1N -Reflectivity (Z) Z 19 16 100 - 25 -1 0 1N -Reflectivity (Z) Z 19 16 100 - 35 -1 0 1N -Reflectivity (Z) Z 20 16 200 - 5 -1 0 1N -Velocity (V) V 27 16 100 - 5 -1 0 1N -Velocity (V) V 27 16 100 - 15 -1 0 1N -Velocity (V) V 27 16 100 - 25 -1 0 1N -Velocity (V) V 27 16 100 - 35 -1 0 1N -Storm Rel Velocity (SRM) SRM 56 16 100 - 5 -1 0 1N -Storm Rel Velocity (SRM) SRM 56 16 100 - 15 -1 0 1N -Storm Rel Velocity (SRM) SRM 56 16 100 - 25 -1 0 1N -Storm Rel Velocity (SRM) SRM 56 16 100 - 35 -1 0 1N -Composite Ref (CZ) CZ 37 16 100 - -1 -1 0 1N -Composite Ref (CZ) CZ 38 16 400 - -1 -1 0 1N -Lyr Comp Ref Max (LRM) Level 1 LRM 65 8 0 L -1 -1 0 1N -Lyr Comp Ref Max (LRM) Level 2 LRM 66 8 0 M -1 -1 0 1N -Lyr Comp Ref Max (LRM) Level 3 LRM 90 8 0 H -1 -1 0 1N -Lyr Comp Ref MAX (APR) APR 67 16 0 L -1 -1 0 1N -Echo Tops (ET) ET 41 16 0 - -1 -1 0 1N -Vert Integ Liq (VIL) VIL 57 16 0 - -1 -1 0 1N -One Hour Precip (OHP) OHP 78 16 0 - -1 -1 0 1N -Storm Total Precip (STP) STP 80 16 0 - -1 -1 0 1N -VAD Wind Profile (VWP) VWP 48 0 0 - -1 -1 0 1N -Digital Precip Array (DPA) DPA 81 256 400 - -1 -1 0 1N -Velocity (V) V 25 16 100 - 5 -1 0 1N -Base Spectrum Width (SW) SW 28 8 100 - 5 -1 0 1N -Base Spectrum Width (SW) SW 30 8 100 - 5 -1 0 1N -Severe Weather Probablilty (SWP) SWP 47 0 100 - -1 -1 0 1N -Storm Tracking Information (STI) STI 58 0 100 - -1 -1 0 1N -Hail Index (HI) HI 59 0 100 - -1 -1 0 1N -Mesocyclone (M) M 60 0 100 - -1 -1 0 1N -Mesocyclone (MD) MD 141 0 0 -1 -1 0 1N -Tornadic Vortex Signature (TVS) TVS 61 0 100 - -1 -1 0 1N -Storm Structure (SS) SS 62 0 100 - -1 -1 0 1N -Supplemental Precipitation Data (SPD) SPD 82 0 100 - -1 -1 0 1N -Reflectivity (Z) Z 94 256 100 - 5 -1 0 1N -1 -1 -Reflectivity (Z) Z 94 256 100 - 15 -1 0 1N -1 -1 -Reflectivity (Z) Z 94 256 100 - 24 -1 0 1N -1 -1 -Reflectivity (Z) Z 94 256 100 - 34 -1 0 1N -1 -1 -Reflectivity (Z) Z 94 256 100 - 43 -1 0 1N -1 -1 -Reflectivity (Z) Z 94 256 100 - 53 -1 0 1N -1 -1 -Reflectivity (Z) Z 94 256 100 - 62 -1 0 1N -1 -1 -Reflectivity (Z) Z 94 256 100 - 75 -1 0 1N -1 -1 -Reflectivity (Z) Z 94 256 100 - 87 -1 0 1N -1 -1 -Reflectivity (Z) Z 94 256 100 - 100 -1 0 1N -1 -1 -Reflectivity (Z) Z 94 256 100 - 120 -1 0 1N -1 -1 -Reflectivity (Z) Z 94 256 100 - 140 -1 0 1N -1 -1 -Reflectivity (Z) Z 94 256 100 - 167 -1 0 1N -1 -1 -Reflectivity (Z) Z 94 256 100 - 195 -1 0 1N -1 -1 -Velocity (V) V 99 256 25 - 5 -1 0 1N -1 -1 -Velocity (V) V 99 256 25 - 15 -1 0 1N -1 -1 -Velocity (V) V 99 256 25 - 24 -1 0 1N -1 -1 -Velocity (V) V 99 256 25 - 34 -1 0 1N -1 -1 -Velocity (V) V 99 256 25 - 43 -1 0 1N -1 -1 -Velocity (V) V 99 256 25 - 53 -1 0 1N -1 -1 -Velocity (V) V 99 256 25 - 62 -1 0 1N -1 -1 -Velocity (V) V 99 256 25 - 75 -1 0 1N -1 -1 -Velocity (V) V 99 256 25 - 87 -1 0 1N -1 -1 -Velocity (V) V 99 256 25 - 100 -1 0 1N -1 -1 -Velocity (V) V 99 256 25 - 120 -1 0 1N -1 -1 -Velocity (V) V 99 256 25 - 140 -1 0 1N -1 -1 -Velocity (V) V 99 256 25 - 167 -1 0 1N -1 -1 -Velocity (V) V 99 256 25 - 195 -1 0 1N -1 -1 -Super Res Reflectivity (Z) HZ 153 256 25 - 5 -1 0 1N -1 -1 N -Super Res Reflectivity (Z) HZ 153 256 25 - 15 -1 0 1N -1 -1 N -Super Res Velocity (V) HV 154 256 25 - 5 -1 0 1N -1 -1 N -Super Res Velocity (V) HV 154 256 25 - 15 -1 0 1N -1 -1 N -Super Res Spec Width (SW) HSW 155 256 25 - 5 -1 0 1N -1 -1 N -Super Res Spec Width (SW) HSW 155 256 25 - 15 -1 0 1N -1 -1 N -Spectrum Width (SW) SW 30 8 100 - 15 -1 0 1N -1 -1 N -Spectrum Width (SW) SW 28 8 25 - 15 -1 0 1N -1 -1 N -Digital Vert Integ Liq (DVL) DVL 134 256 100 - -1 -1 0 1N -1 -1 N -Digital Hybrid Scan Refl (DHR) DHR 32 256 100 - -1 -1 0 1N -1 -1 N -Enhanced Echo Tops (EET) EET 135 256 100 - -1 -1 0 1N -1 -1 N -Digital Meso Detection (DMD) DMD 149 0 0 - 16384 -1 0 1N 2 -1 N -TVS Rapid Update (TRU) TRU 143 0 0 - 16384 -1 0 1N -1 -1 N -User Selectable Lyr Refl (ULR) ULR 137 16 100 - -1 -1 0 1N 14 70 N -Storm Total Precip (STP) STP 138 256 200 - -1 -1 0 1N -1 -1 N -1-Hour Snow-Water Equiv (OSW) OSW 144 16 100 - -1 -1 0 1N -1 -1 N -1-Hour Snow Depth (OSD) OSD 145 16 100 - -1 -1 0 1N -1 -1 N -Storm Tot Snow Depth (SSD) SSD 147 16 100 - -1 -1 0 1N -1 -1 N -Storm Tot Snow-Water Equiv (SSW) SSW 146 16 100 - -1 -1 0 1N -1 -1 N -Storm Tot Snow-Water Equiv (SSW) SSW 146 16 100 - -1 -1 0 1N -1 -1 N diff --git a/RadarServer/build.rcm/cfgbits/data/config/drop-ins/KXXX.storm.VCP112 b/RadarServer/build.rcm/cfgbits/data/config/drop-ins/KXXX.storm.VCP112 deleted file mode 100644 index 416cc07769..0000000000 --- a/RadarServer/build.rcm/cfgbits/data/config/drop-ins/KXXX.storm.VCP112 +++ /dev/null @@ -1,94 +0,0 @@ -RPS List super_res_vcp12_mji.VCP12.rps created 2007:06:06:19%:04:00 ... 89 products - An RPS list contains the fields: Prod-Name, Mnemonic, Prod-Code - Number of Data Levels, Resolution, Layer Code, Elevation, Contour Interval, - Priority, Req Interval, Map, Lower Layer, Upper Layer, and multCut - The record format is: '%-39s %-3s%4d%4d%6d %c%6d%7d%2d%2d%c%3d%3d %c' -Reflectivity (Z) Z 19 16 100 - 5 -1 0 1N -Reflectivity (Z) Z 19 16 100 - 15 -1 0 1N -Reflectivity (Z) Z 19 16 100 - 25 -1 0 1N -Reflectivity (Z) Z 19 16 100 - 35 -1 0 1N -Reflectivity (Z) Z 20 16 200 - 5 -1 0 1N -Velocity (V) V 27 16 100 - 5 -1 0 1N -Velocity (V) V 27 16 100 - 15 -1 0 1N -Velocity (V) V 27 16 100 - 25 -1 0 1N -Velocity (V) V 27 16 100 - 35 -1 0 1N -Storm Rel Velocity (SRM) SRM 56 16 100 - 5 -1 0 1N -Storm Rel Velocity (SRM) SRM 56 16 100 - 15 -1 0 1N -Storm Rel Velocity (SRM) SRM 56 16 100 - 25 -1 0 1N -Storm Rel Velocity (SRM) SRM 56 16 100 - 35 -1 0 1N -Composite Ref (CZ) CZ 37 16 100 - -1 -1 0 1N -Composite Ref (CZ) CZ 38 16 400 - -1 -1 0 1N -Lyr Comp Ref Max (LRM) Level 1 LRM 65 8 0 L -1 -1 0 1N -Lyr Comp Ref Max (LRM) Level 2 LRM 66 8 0 M -1 -1 0 1N -Lyr Comp Ref Max (LRM) Level 3 LRM 90 8 0 H -1 -1 0 1N -Lyr Comp Ref MAX (APR) APR 67 16 0 L -1 -1 0 1N -Echo Tops (ET) ET 41 16 0 - -1 -1 0 1N -Vert Integ Liq (VIL) VIL 57 16 0 - -1 -1 0 1N -One Hour Precip (OHP) OHP 78 16 0 - -1 -1 0 1N -Storm Total Precip (STP) STP 80 16 0 - -1 -1 0 1N -VAD Wind Profile (VWP) VWP 48 0 0 - -1 -1 0 1N -Digital Precip Array (DPA) DPA 81 256 400 - -1 -1 0 1N -Velocity (V) V 25 16 100 - 5 -1 0 1N -Base Spectrum Width (SW) SW 28 8 100 - 5 -1 0 1N -Base Spectrum Width (SW) SW 30 8 100 - 5 -1 0 1N -Severe Weather Probablilty (SWP) SWP 47 0 100 - -1 -1 0 1N -Storm Tracking Information (STI) STI 58 0 100 - -1 -1 0 1N -Hail Index (HI) HI 59 0 100 - -1 -1 0 1N -Mesocyclone (M) M 60 0 100 - -1 -1 0 1N -Mesocyclone (MD) MD 141 0 0 -1 -1 0 1N -Tornadic Vortex Signature (TVS) TVS 61 0 100 - -1 -1 0 1N -Storm Structure (SS) SS 62 0 100 - -1 -1 0 1N -Supplemental Precipitation Data (SPD) SPD 82 0 100 - -1 -1 0 1N -Reflectivity (Z) Z 94 256 100 - 5 -1 0 1N -1 -1 N -Reflectivity (Z) Z 94 256 100 - 9 -1 0 1N -1 -1 N -Reflectivity (Z) Z 94 256 100 - 13 -1 0 1N -1 -1 N -Reflectivity (Z) Z 94 256 100 - 18 -1 0 1N -1 -1 N -Reflectivity (Z) Z 94 256 100 - 24 -1 0 1N -1 -1 N -Reflectivity (Z) Z 94 256 100 - 31 -1 0 1N -1 -1 N -Reflectivity (Z) Z 94 256 100 - 40 -1 0 1N -1 -1 N -Reflectivity (Z) Z 94 256 100 - 51 -1 0 1N -1 -1 N -Reflectivity (Z) Z 94 256 100 - 64 -1 0 1N -1 -1 N -Reflectivity (Z) Z 94 256 100 - 80 -1 0 1N -1 -1 N -Reflectivity (Z) Z 94 256 100 - 100 -1 0 1N -1 -1 N -Reflectivity (Z) Z 94 256 100 - 125 -1 0 1N -1 -1 N -Reflectivity (Z) Z 94 256 100 - 156 -1 0 1N -1 -1 N -Reflectivity (Z) Z 94 256 100 - 195 -1 0 1N -1 -1 N -Velocity (V) V 99 256 25 - 5 -1 0 1N -1 -1 N -Velocity (V) V 99 256 25 - 9 -1 0 1N -1 -1 N -Velocity (V) V 99 256 25 - 13 -1 0 1N -1 -1 N -Velocity (V) V 99 256 25 - 18 -1 0 1N -1 -1 N -Velocity (V) V 99 256 25 - 24 -1 0 1N -1 -1 N -Velocity (V) V 99 256 25 - 31 -1 0 1N -1 -1 N -Velocity (V) V 99 256 25 - 40 -1 0 1N -1 -1 N -Velocity (V) V 99 256 25 - 51 -1 0 1N -1 -1 N -Velocity (V) V 99 256 25 - 64 -1 0 1N -1 -1 N -Velocity (V) V 99 256 25 - 80 -1 0 1N -1 -1 N -Velocity (V) V 99 256 25 - 100 -1 0 1N -1 -1 N -Velocity (V) V 99 256 25 - 125 -1 0 1N -1 -1 N -Velocity (V) V 99 256 25 - 156 -1 0 1N -1 -1 N -Velocity (V) V 99 256 25 - 195 -1 0 1N -1 -1 N -Super Res Reflectivity (Z) HZ 153 256 25 - 5 -1 0 1N -1 -1 N -Super Res Reflectivity (Z) HZ 153 256 25 - 9 -1 0 1N -1 -1 N -Super Res Reflectivity (Z) HZ 153 256 25 - 13 -1 0 1N -1 -1 N -Super Res Velocity (V) HV 154 256 25 - 5 -1 0 1N -1 -1 N -Super Res Velocity (V) HV 154 256 25 - 9 -1 0 1N -1 -1 N -Super Res Velocity (V) HV 154 256 25 - 13 -1 0 1N -1 -1 N -Super Res Spec Width (SW) HSW 155 256 25 - 5 -1 0 1N -1 -1 N -Super Res Spec Width (SW) HSW 155 256 25 - 9 -1 0 1N -1 -1 N -Super Res Spec Width (SW) HSW 155 256 25 - 13 -1 0 1N -1 -1 N -Spectrum Width (SW) SW 30 8 100 - 9 -1 0 1N -1 -1 N -Spectrum Width (SW) SW 30 8 100 - 13 -1 0 1N -1 -1 N -Spectrum Width (SW) SW 28 8 25 - 13 -1 0 1N -1 -1 N -Spectrum Width (SW) SW 28 8 25 - 9 -1 0 1N -1 -1 N -Digital Vert Integ Liq (DVL) DVL 134 256 100 - -1 -1 0 1N -1 -1 N -Digital Hybrid Scan Refl (DHR) DHR 32 256 100 - -1 -1 0 1N -1 -1 N -Enhanced Echo Tops (EET) EET 135 256 100 - -1 -1 0 1N -1 -1 N -Digital Meso Detection (DMD) DMD 149 0 0 - 16384 -1 0 1N 2 -1 N -TVS Rapid Update (TRU) TRU 143 0 0 - 16384 -1 0 1N -1 -1 N -User Selectable Lyr Refl (ULR) ULR 137 16 100 - -1 -1 0 1N 14 70 N -Storm Total Precip (STP) STP 138 256 200 - -1 -1 0 1N -1 -1 N -1-Hour Snow-Water Equiv (OSW) OSW 144 16 100 - -1 -1 0 1N -1 -1 N -1-Hour Snow Depth (OSD) OSD 145 16 100 - -1 -1 0 1N -1 -1 N -Storm Tot Snow Depth (SSD) SSD 147 16 100 - -1 -1 0 1N -1 -1 N -Storm Tot Snow-Water Equiv (SSW) SSW 146 16 100 - -1 -1 0 1N -1 -1 N -Storm Tot Snow-Water Equiv (SSW) SSW 146 16 100 - -1 -1 0 1N -1 -1 N diff --git a/RadarServer/build.rcm/cfgbits/data/config/drop-ins/KXXX.storm.VCP12 b/RadarServer/build.rcm/cfgbits/data/config/drop-ins/KXXX.storm.VCP12 deleted file mode 100644 index 416cc07769..0000000000 --- a/RadarServer/build.rcm/cfgbits/data/config/drop-ins/KXXX.storm.VCP12 +++ /dev/null @@ -1,94 +0,0 @@ -RPS List super_res_vcp12_mji.VCP12.rps created 2007:06:06:19%:04:00 ... 89 products - An RPS list contains the fields: Prod-Name, Mnemonic, Prod-Code - Number of Data Levels, Resolution, Layer Code, Elevation, Contour Interval, - Priority, Req Interval, Map, Lower Layer, Upper Layer, and multCut - The record format is: '%-39s %-3s%4d%4d%6d %c%6d%7d%2d%2d%c%3d%3d %c' -Reflectivity (Z) Z 19 16 100 - 5 -1 0 1N -Reflectivity (Z) Z 19 16 100 - 15 -1 0 1N -Reflectivity (Z) Z 19 16 100 - 25 -1 0 1N -Reflectivity (Z) Z 19 16 100 - 35 -1 0 1N -Reflectivity (Z) Z 20 16 200 - 5 -1 0 1N -Velocity (V) V 27 16 100 - 5 -1 0 1N -Velocity (V) V 27 16 100 - 15 -1 0 1N -Velocity (V) V 27 16 100 - 25 -1 0 1N -Velocity (V) V 27 16 100 - 35 -1 0 1N -Storm Rel Velocity (SRM) SRM 56 16 100 - 5 -1 0 1N -Storm Rel Velocity (SRM) SRM 56 16 100 - 15 -1 0 1N -Storm Rel Velocity (SRM) SRM 56 16 100 - 25 -1 0 1N -Storm Rel Velocity (SRM) SRM 56 16 100 - 35 -1 0 1N -Composite Ref (CZ) CZ 37 16 100 - -1 -1 0 1N -Composite Ref (CZ) CZ 38 16 400 - -1 -1 0 1N -Lyr Comp Ref Max (LRM) Level 1 LRM 65 8 0 L -1 -1 0 1N -Lyr Comp Ref Max (LRM) Level 2 LRM 66 8 0 M -1 -1 0 1N -Lyr Comp Ref Max (LRM) Level 3 LRM 90 8 0 H -1 -1 0 1N -Lyr Comp Ref MAX (APR) APR 67 16 0 L -1 -1 0 1N -Echo Tops (ET) ET 41 16 0 - -1 -1 0 1N -Vert Integ Liq (VIL) VIL 57 16 0 - -1 -1 0 1N -One Hour Precip (OHP) OHP 78 16 0 - -1 -1 0 1N -Storm Total Precip (STP) STP 80 16 0 - -1 -1 0 1N -VAD Wind Profile (VWP) VWP 48 0 0 - -1 -1 0 1N -Digital Precip Array (DPA) DPA 81 256 400 - -1 -1 0 1N -Velocity (V) V 25 16 100 - 5 -1 0 1N -Base Spectrum Width (SW) SW 28 8 100 - 5 -1 0 1N -Base Spectrum Width (SW) SW 30 8 100 - 5 -1 0 1N -Severe Weather Probablilty (SWP) SWP 47 0 100 - -1 -1 0 1N -Storm Tracking Information (STI) STI 58 0 100 - -1 -1 0 1N -Hail Index (HI) HI 59 0 100 - -1 -1 0 1N -Mesocyclone (M) M 60 0 100 - -1 -1 0 1N -Mesocyclone (MD) MD 141 0 0 -1 -1 0 1N -Tornadic Vortex Signature (TVS) TVS 61 0 100 - -1 -1 0 1N -Storm Structure (SS) SS 62 0 100 - -1 -1 0 1N -Supplemental Precipitation Data (SPD) SPD 82 0 100 - -1 -1 0 1N -Reflectivity (Z) Z 94 256 100 - 5 -1 0 1N -1 -1 N -Reflectivity (Z) Z 94 256 100 - 9 -1 0 1N -1 -1 N -Reflectivity (Z) Z 94 256 100 - 13 -1 0 1N -1 -1 N -Reflectivity (Z) Z 94 256 100 - 18 -1 0 1N -1 -1 N -Reflectivity (Z) Z 94 256 100 - 24 -1 0 1N -1 -1 N -Reflectivity (Z) Z 94 256 100 - 31 -1 0 1N -1 -1 N -Reflectivity (Z) Z 94 256 100 - 40 -1 0 1N -1 -1 N -Reflectivity (Z) Z 94 256 100 - 51 -1 0 1N -1 -1 N -Reflectivity (Z) Z 94 256 100 - 64 -1 0 1N -1 -1 N -Reflectivity (Z) Z 94 256 100 - 80 -1 0 1N -1 -1 N -Reflectivity (Z) Z 94 256 100 - 100 -1 0 1N -1 -1 N -Reflectivity (Z) Z 94 256 100 - 125 -1 0 1N -1 -1 N -Reflectivity (Z) Z 94 256 100 - 156 -1 0 1N -1 -1 N -Reflectivity (Z) Z 94 256 100 - 195 -1 0 1N -1 -1 N -Velocity (V) V 99 256 25 - 5 -1 0 1N -1 -1 N -Velocity (V) V 99 256 25 - 9 -1 0 1N -1 -1 N -Velocity (V) V 99 256 25 - 13 -1 0 1N -1 -1 N -Velocity (V) V 99 256 25 - 18 -1 0 1N -1 -1 N -Velocity (V) V 99 256 25 - 24 -1 0 1N -1 -1 N -Velocity (V) V 99 256 25 - 31 -1 0 1N -1 -1 N -Velocity (V) V 99 256 25 - 40 -1 0 1N -1 -1 N -Velocity (V) V 99 256 25 - 51 -1 0 1N -1 -1 N -Velocity (V) V 99 256 25 - 64 -1 0 1N -1 -1 N -Velocity (V) V 99 256 25 - 80 -1 0 1N -1 -1 N -Velocity (V) V 99 256 25 - 100 -1 0 1N -1 -1 N -Velocity (V) V 99 256 25 - 125 -1 0 1N -1 -1 N -Velocity (V) V 99 256 25 - 156 -1 0 1N -1 -1 N -Velocity (V) V 99 256 25 - 195 -1 0 1N -1 -1 N -Super Res Reflectivity (Z) HZ 153 256 25 - 5 -1 0 1N -1 -1 N -Super Res Reflectivity (Z) HZ 153 256 25 - 9 -1 0 1N -1 -1 N -Super Res Reflectivity (Z) HZ 153 256 25 - 13 -1 0 1N -1 -1 N -Super Res Velocity (V) HV 154 256 25 - 5 -1 0 1N -1 -1 N -Super Res Velocity (V) HV 154 256 25 - 9 -1 0 1N -1 -1 N -Super Res Velocity (V) HV 154 256 25 - 13 -1 0 1N -1 -1 N -Super Res Spec Width (SW) HSW 155 256 25 - 5 -1 0 1N -1 -1 N -Super Res Spec Width (SW) HSW 155 256 25 - 9 -1 0 1N -1 -1 N -Super Res Spec Width (SW) HSW 155 256 25 - 13 -1 0 1N -1 -1 N -Spectrum Width (SW) SW 30 8 100 - 9 -1 0 1N -1 -1 N -Spectrum Width (SW) SW 30 8 100 - 13 -1 0 1N -1 -1 N -Spectrum Width (SW) SW 28 8 25 - 13 -1 0 1N -1 -1 N -Spectrum Width (SW) SW 28 8 25 - 9 -1 0 1N -1 -1 N -Digital Vert Integ Liq (DVL) DVL 134 256 100 - -1 -1 0 1N -1 -1 N -Digital Hybrid Scan Refl (DHR) DHR 32 256 100 - -1 -1 0 1N -1 -1 N -Enhanced Echo Tops (EET) EET 135 256 100 - -1 -1 0 1N -1 -1 N -Digital Meso Detection (DMD) DMD 149 0 0 - 16384 -1 0 1N 2 -1 N -TVS Rapid Update (TRU) TRU 143 0 0 - 16384 -1 0 1N -1 -1 N -User Selectable Lyr Refl (ULR) ULR 137 16 100 - -1 -1 0 1N 14 70 N -Storm Total Precip (STP) STP 138 256 200 - -1 -1 0 1N -1 -1 N -1-Hour Snow-Water Equiv (OSW) OSW 144 16 100 - -1 -1 0 1N -1 -1 N -1-Hour Snow Depth (OSD) OSD 145 16 100 - -1 -1 0 1N -1 -1 N -Storm Tot Snow Depth (SSD) SSD 147 16 100 - -1 -1 0 1N -1 -1 N -Storm Tot Snow-Water Equiv (SSW) SSW 146 16 100 - -1 -1 0 1N -1 -1 N -Storm Tot Snow-Water Equiv (SSW) SSW 146 16 100 - -1 -1 0 1N -1 -1 N diff --git a/RadarServer/build.rcm/cfgbits/data/config/drop-ins/KXXX.storm.VCP121 b/RadarServer/build.rcm/cfgbits/data/config/drop-ins/KXXX.storm.VCP121 deleted file mode 100644 index b48a2689df..0000000000 --- a/RadarServer/build.rcm/cfgbits/data/config/drop-ins/KXXX.storm.VCP121 +++ /dev/null @@ -1,78 +0,0 @@ -RPS List super_res_vcp21_mji.VCP21.rps created 2007:06:06:18%:58:00 ... 73 products - An RPS list contains the fields: Prod-Name, Mnemonic, Prod-Code - Number of Data Levels, Resolution, Layer Code, Elevation, Contour Interval, - Priority, Req Interval, Map, Lower Layer, Upper Layer, and multCut - The record format is: '%-39s %-3s%4d%4d%6d %c%6d%7d%2d%2d%c%3d%3d %c' -Reflectivity (Z) Z 19 16 100 - 5 -1 0 1N -Reflectivity (Z) Z 19 16 100 - 15 -1 0 1N -Reflectivity (Z) Z 19 16 100 - 25 -1 0 1N -Reflectivity (Z) Z 19 16 100 - 35 -1 0 1N -Reflectivity (Z) Z 20 16 200 - 5 -1 0 1N -Velocity (V) V 27 16 100 - 5 -1 0 1N -Velocity (V) V 27 16 100 - 15 -1 0 1N -Velocity (V) V 27 16 100 - 25 -1 0 1N -Velocity (V) V 27 16 100 - 35 -1 0 1N -Storm Rel Velocity (SRM) SRM 56 16 100 - 5 -1 0 1N -Storm Rel Velocity (SRM) SRM 56 16 100 - 15 -1 0 1N -Storm Rel Velocity (SRM) SRM 56 16 100 - 25 -1 0 1N -Storm Rel Velocity (SRM) SRM 56 16 100 - 35 -1 0 1N -Composite Ref (CZ) CZ 37 16 100 - -1 -1 0 1N -Composite Ref (CZ) CZ 38 16 400 - -1 -1 0 1N -Lyr Comp Ref Max (LRM) Level 1 LRM 65 8 0 L -1 -1 0 1N -Lyr Comp Ref Max (LRM) Level 2 LRM 66 8 0 M -1 -1 0 1N -Lyr Comp Ref Max (LRM) Level 3 LRM 90 8 0 H -1 -1 0 1N -Lyr Comp Ref MAX (APR) APR 67 16 0 L -1 -1 0 1N -Echo Tops (ET) ET 41 16 0 - -1 -1 0 1N -Vert Integ Liq (VIL) VIL 57 16 0 - -1 -1 0 1N -One Hour Precip (OHP) OHP 78 16 0 - -1 -1 0 1N -Storm Total Precip (STP) STP 80 16 0 - -1 -1 0 1N -VAD Wind Profile (VWP) VWP 48 0 0 - -1 -1 0 1N -Digital Precip Array (DPA) DPA 81 256 400 - -1 -1 0 1N -Velocity (V) V 25 16 100 - 5 -1 0 1N -Base Spectrum Width (SW) SW 28 8 100 - 5 -1 0 1N -Base Spectrum Width (SW) SW 30 8 100 - 5 -1 0 1N -Severe Weather Probablilty (SWP) SWP 47 0 100 - -1 -1 0 1N -Storm Tracking Information (STI) STI 58 0 100 - -1 -1 0 1N -Hail Index (HI) HI 59 0 100 - -1 -1 0 1N -Mesocyclone (M) M 60 0 100 - -1 -1 0 1N -Mesocyclone (MD) MD 141 0 0 -1 -1 0 1N -Tornadic Vortex Signature (TVS) TVS 61 0 100 - -1 -1 0 1N -Storm Structure (SS) SS 62 0 100 - -1 -1 0 1N -Supplemental Precipitation Data (SPD) SPD 82 0 100 - -1 -1 0 1N -Reflectivity (Z) Z 94 256 100 - 5 -1 0 1N -1 -1 N -Reflectivity (Z) Z 94 256 100 - 15 -1 0 1N -1 -1 N -Reflectivity (Z) Z 94 256 100 - 24 -1 0 1N -1 -1 N -Reflectivity (Z) Z 94 256 100 - 34 -1 0 1N -1 -1 N -Reflectivity (Z) Z 94 256 100 - 43 -1 0 1N -1 -1 N -Reflectivity (Z) Z 94 256 100 - 60 -1 0 1N -1 -1 N -Reflectivity (Z) Z 94 256 100 - 99 -1 0 1N -1 -1 N -Reflectivity (Z) Z 94 256 100 - 146 -1 0 1N -1 -1 N -Reflectivity (Z) Z 94 256 100 - 195 -1 0 1N -1 -1 N -Velocity (V) V 99 256 25 - 5 -1 0 1N -1 -1 N -Velocity (V) V 99 256 25 - 15 -1 0 1N -1 -1 N -Velocity (V) V 99 256 25 - 24 -1 0 1N -1 -1 N -Velocity (V) V 99 256 25 - 34 -1 0 1N -1 -1 N -Velocity (V) V 99 256 25 - 43 -1 0 1N -1 -1 N -Velocity (V) V 99 256 25 - 60 -1 0 1N -1 -1 N -Velocity (V) V 99 256 25 - 99 -1 0 1N -1 -1 N -Velocity (V) V 99 256 25 - 146 -1 0 1N -1 -1 N -Velocity (V) V 99 256 25 - 195 -1 0 1N -1 -1 N -Super Res Reflectivity (Z) HZ 153 256 25 - 5 -1 0 1N -1 -1 N -Super Res Reflectivity (Z) HZ 153 256 25 - 15 -1 0 1N -1 -1 N -Super Res Velocity (V) HV 154 256 25 - 5 -1 0 1N -1 -1 N -Super Res Velocity (V) HV 154 256 25 - 15 -1 0 1N -1 -1 N -Spectrum Width (SW) SW 28 8 50 - 15 -1 0 1N -1 -1 N -Spectrum Width (SW) SW 30 8 100 - 15 -1 0 1N -1 -1 N -Super Res Spec Width (SW) HSW 155 256 25 - 5 -1 0 1N -1 -1 N -Super Res Spec Width (SW) HSW 155 256 25 - 15 -1 0 1N -1 -1 N -Digital Vert Integ Liq (DVL) DVL 134 256 100 - -1 -1 0 1N -1 -1 N -Digital Hybrid Scan Refl (DHR) DHR 32 256 100 - -1 -1 0 1N -1 -1 N -Enhanced Echo Tops (EET) EET 135 256 100 - -1 -1 0 1N -1 -1 N -Digital Meso Detection (DMD) DMD 149 0 0 - 16384 -1 0 1N 2 -1 N -TVS Rapid Update (TRU) TRU 143 0 0 - 16384 -1 0 1N -1 -1 N -User Selectable Lyr Refl (ULR) ULR 137 16 100 - -1 -1 0 1N 14 70 N -Storm Total Precip (STP) STP 138 256 200 - -1 -1 0 1N -1 -1 N -1-Hour Snow Depth (OSD) OSD 145 16 100 - -1 -1 0 1N -1 -1 N -1-Hour Snow Depth (OSD) OSD 145 16 100 - -1 -1 0 1N -1 -1 N -Storm Tot Snow Depth (SSD) SSD 147 16 100 - -1 -1 0 1N -1 -1 N -Storm Tot Snow-Water Equiv (SSW) SSW 146 16 100 - -1 -1 0 1N -1 -1 N diff --git a/RadarServer/build.rcm/cfgbits/data/config/drop-ins/KXXX.storm.VCP21 b/RadarServer/build.rcm/cfgbits/data/config/drop-ins/KXXX.storm.VCP21 deleted file mode 100644 index b48a2689df..0000000000 --- a/RadarServer/build.rcm/cfgbits/data/config/drop-ins/KXXX.storm.VCP21 +++ /dev/null @@ -1,78 +0,0 @@ -RPS List super_res_vcp21_mji.VCP21.rps created 2007:06:06:18%:58:00 ... 73 products - An RPS list contains the fields: Prod-Name, Mnemonic, Prod-Code - Number of Data Levels, Resolution, Layer Code, Elevation, Contour Interval, - Priority, Req Interval, Map, Lower Layer, Upper Layer, and multCut - The record format is: '%-39s %-3s%4d%4d%6d %c%6d%7d%2d%2d%c%3d%3d %c' -Reflectivity (Z) Z 19 16 100 - 5 -1 0 1N -Reflectivity (Z) Z 19 16 100 - 15 -1 0 1N -Reflectivity (Z) Z 19 16 100 - 25 -1 0 1N -Reflectivity (Z) Z 19 16 100 - 35 -1 0 1N -Reflectivity (Z) Z 20 16 200 - 5 -1 0 1N -Velocity (V) V 27 16 100 - 5 -1 0 1N -Velocity (V) V 27 16 100 - 15 -1 0 1N -Velocity (V) V 27 16 100 - 25 -1 0 1N -Velocity (V) V 27 16 100 - 35 -1 0 1N -Storm Rel Velocity (SRM) SRM 56 16 100 - 5 -1 0 1N -Storm Rel Velocity (SRM) SRM 56 16 100 - 15 -1 0 1N -Storm Rel Velocity (SRM) SRM 56 16 100 - 25 -1 0 1N -Storm Rel Velocity (SRM) SRM 56 16 100 - 35 -1 0 1N -Composite Ref (CZ) CZ 37 16 100 - -1 -1 0 1N -Composite Ref (CZ) CZ 38 16 400 - -1 -1 0 1N -Lyr Comp Ref Max (LRM) Level 1 LRM 65 8 0 L -1 -1 0 1N -Lyr Comp Ref Max (LRM) Level 2 LRM 66 8 0 M -1 -1 0 1N -Lyr Comp Ref Max (LRM) Level 3 LRM 90 8 0 H -1 -1 0 1N -Lyr Comp Ref MAX (APR) APR 67 16 0 L -1 -1 0 1N -Echo Tops (ET) ET 41 16 0 - -1 -1 0 1N -Vert Integ Liq (VIL) VIL 57 16 0 - -1 -1 0 1N -One Hour Precip (OHP) OHP 78 16 0 - -1 -1 0 1N -Storm Total Precip (STP) STP 80 16 0 - -1 -1 0 1N -VAD Wind Profile (VWP) VWP 48 0 0 - -1 -1 0 1N -Digital Precip Array (DPA) DPA 81 256 400 - -1 -1 0 1N -Velocity (V) V 25 16 100 - 5 -1 0 1N -Base Spectrum Width (SW) SW 28 8 100 - 5 -1 0 1N -Base Spectrum Width (SW) SW 30 8 100 - 5 -1 0 1N -Severe Weather Probablilty (SWP) SWP 47 0 100 - -1 -1 0 1N -Storm Tracking Information (STI) STI 58 0 100 - -1 -1 0 1N -Hail Index (HI) HI 59 0 100 - -1 -1 0 1N -Mesocyclone (M) M 60 0 100 - -1 -1 0 1N -Mesocyclone (MD) MD 141 0 0 -1 -1 0 1N -Tornadic Vortex Signature (TVS) TVS 61 0 100 - -1 -1 0 1N -Storm Structure (SS) SS 62 0 100 - -1 -1 0 1N -Supplemental Precipitation Data (SPD) SPD 82 0 100 - -1 -1 0 1N -Reflectivity (Z) Z 94 256 100 - 5 -1 0 1N -1 -1 N -Reflectivity (Z) Z 94 256 100 - 15 -1 0 1N -1 -1 N -Reflectivity (Z) Z 94 256 100 - 24 -1 0 1N -1 -1 N -Reflectivity (Z) Z 94 256 100 - 34 -1 0 1N -1 -1 N -Reflectivity (Z) Z 94 256 100 - 43 -1 0 1N -1 -1 N -Reflectivity (Z) Z 94 256 100 - 60 -1 0 1N -1 -1 N -Reflectivity (Z) Z 94 256 100 - 99 -1 0 1N -1 -1 N -Reflectivity (Z) Z 94 256 100 - 146 -1 0 1N -1 -1 N -Reflectivity (Z) Z 94 256 100 - 195 -1 0 1N -1 -1 N -Velocity (V) V 99 256 25 - 5 -1 0 1N -1 -1 N -Velocity (V) V 99 256 25 - 15 -1 0 1N -1 -1 N -Velocity (V) V 99 256 25 - 24 -1 0 1N -1 -1 N -Velocity (V) V 99 256 25 - 34 -1 0 1N -1 -1 N -Velocity (V) V 99 256 25 - 43 -1 0 1N -1 -1 N -Velocity (V) V 99 256 25 - 60 -1 0 1N -1 -1 N -Velocity (V) V 99 256 25 - 99 -1 0 1N -1 -1 N -Velocity (V) V 99 256 25 - 146 -1 0 1N -1 -1 N -Velocity (V) V 99 256 25 - 195 -1 0 1N -1 -1 N -Super Res Reflectivity (Z) HZ 153 256 25 - 5 -1 0 1N -1 -1 N -Super Res Reflectivity (Z) HZ 153 256 25 - 15 -1 0 1N -1 -1 N -Super Res Velocity (V) HV 154 256 25 - 5 -1 0 1N -1 -1 N -Super Res Velocity (V) HV 154 256 25 - 15 -1 0 1N -1 -1 N -Spectrum Width (SW) SW 28 8 50 - 15 -1 0 1N -1 -1 N -Spectrum Width (SW) SW 30 8 100 - 15 -1 0 1N -1 -1 N -Super Res Spec Width (SW) HSW 155 256 25 - 5 -1 0 1N -1 -1 N -Super Res Spec Width (SW) HSW 155 256 25 - 15 -1 0 1N -1 -1 N -Digital Vert Integ Liq (DVL) DVL 134 256 100 - -1 -1 0 1N -1 -1 N -Digital Hybrid Scan Refl (DHR) DHR 32 256 100 - -1 -1 0 1N -1 -1 N -Enhanced Echo Tops (EET) EET 135 256 100 - -1 -1 0 1N -1 -1 N -Digital Meso Detection (DMD) DMD 149 0 0 - 16384 -1 0 1N 2 -1 N -TVS Rapid Update (TRU) TRU 143 0 0 - 16384 -1 0 1N -1 -1 N -User Selectable Lyr Refl (ULR) ULR 137 16 100 - -1 -1 0 1N 14 70 N -Storm Total Precip (STP) STP 138 256 200 - -1 -1 0 1N -1 -1 N -1-Hour Snow Depth (OSD) OSD 145 16 100 - -1 -1 0 1N -1 -1 N -1-Hour Snow Depth (OSD) OSD 145 16 100 - -1 -1 0 1N -1 -1 N -Storm Tot Snow Depth (SSD) SSD 147 16 100 - -1 -1 0 1N -1 -1 N -Storm Tot Snow-Water Equiv (SSW) SSW 146 16 100 - -1 -1 0 1N -1 -1 N diff --git a/RadarServer/build.rcm/cfgbits/data/config/drop-ins/KXXX.storm.VCP211 b/RadarServer/build.rcm/cfgbits/data/config/drop-ins/KXXX.storm.VCP211 deleted file mode 100644 index d6507fc858..0000000000 --- a/RadarServer/build.rcm/cfgbits/data/config/drop-ins/KXXX.storm.VCP211 +++ /dev/null @@ -1,89 +0,0 @@ -RPS List super_res_vcp11_mji.VCP11.rps created 2007:06:06:19%:04:00 ... 84 products - An RPS list contains the fields: Prod-Name, Mnemonic, Prod-Code - Number of Data Levels, Resolution, Layer Code, Elevation, Contour Interval, - Priority, Req Interval, Map, Lower Layer, Upper Layer, and multCut - The record format is: '%-39s %-3s%4d%4d%6d %c%6d%7d%2d%2d%c%3d%3d %c' -Reflectivity (Z) Z 19 16 100 - 5 -1 0 1N -Reflectivity (Z) Z 19 16 100 - 15 -1 0 1N -Reflectivity (Z) Z 19 16 100 - 25 -1 0 1N -Reflectivity (Z) Z 19 16 100 - 35 -1 0 1N -Reflectivity (Z) Z 20 16 200 - 5 -1 0 1N -Velocity (V) V 27 16 100 - 5 -1 0 1N -Velocity (V) V 27 16 100 - 15 -1 0 1N -Velocity (V) V 27 16 100 - 25 -1 0 1N -Velocity (V) V 27 16 100 - 35 -1 0 1N -Storm Rel Velocity (SRM) SRM 56 16 100 - 5 -1 0 1N -Storm Rel Velocity (SRM) SRM 56 16 100 - 15 -1 0 1N -Storm Rel Velocity (SRM) SRM 56 16 100 - 25 -1 0 1N -Storm Rel Velocity (SRM) SRM 56 16 100 - 35 -1 0 1N -Composite Ref (CZ) CZ 37 16 100 - -1 -1 0 1N -Composite Ref (CZ) CZ 38 16 400 - -1 -1 0 1N -Lyr Comp Ref Max (LRM) Level 1 LRM 65 8 0 L -1 -1 0 1N -Lyr Comp Ref Max (LRM) Level 2 LRM 66 8 0 M -1 -1 0 1N -Lyr Comp Ref Max (LRM) Level 3 LRM 90 8 0 H -1 -1 0 1N -Lyr Comp Ref MAX (APR) APR 67 16 0 L -1 -1 0 1N -Echo Tops (ET) ET 41 16 0 - -1 -1 0 1N -Vert Integ Liq (VIL) VIL 57 16 0 - -1 -1 0 1N -One Hour Precip (OHP) OHP 78 16 0 - -1 -1 0 1N -Storm Total Precip (STP) STP 80 16 0 - -1 -1 0 1N -VAD Wind Profile (VWP) VWP 48 0 0 - -1 -1 0 1N -Digital Precip Array (DPA) DPA 81 256 400 - -1 -1 0 1N -Velocity (V) V 25 16 100 - 5 -1 0 1N -Base Spectrum Width (SW) SW 28 8 100 - 5 -1 0 1N -Base Spectrum Width (SW) SW 30 8 100 - 5 -1 0 1N -Severe Weather Probablilty (SWP) SWP 47 0 100 - -1 -1 0 1N -Storm Tracking Information (STI) STI 58 0 100 - -1 -1 0 1N -Hail Index (HI) HI 59 0 100 - -1 -1 0 1N -Mesocyclone (M) M 60 0 100 - -1 -1 0 1N -Mesocyclone (MD) MD 141 0 0 -1 -1 0 1N -Tornadic Vortex Signature (TVS) TVS 61 0 100 - -1 -1 0 1N -Storm Structure (SS) SS 62 0 100 - -1 -1 0 1N -Supplemental Precipitation Data (SPD) SPD 82 0 100 - -1 -1 0 1N -Reflectivity (Z) Z 94 256 100 - 5 -1 0 1N -1 -1 -Reflectivity (Z) Z 94 256 100 - 15 -1 0 1N -1 -1 -Reflectivity (Z) Z 94 256 100 - 24 -1 0 1N -1 -1 -Reflectivity (Z) Z 94 256 100 - 34 -1 0 1N -1 -1 -Reflectivity (Z) Z 94 256 100 - 43 -1 0 1N -1 -1 -Reflectivity (Z) Z 94 256 100 - 53 -1 0 1N -1 -1 -Reflectivity (Z) Z 94 256 100 - 62 -1 0 1N -1 -1 -Reflectivity (Z) Z 94 256 100 - 75 -1 0 1N -1 -1 -Reflectivity (Z) Z 94 256 100 - 87 -1 0 1N -1 -1 -Reflectivity (Z) Z 94 256 100 - 100 -1 0 1N -1 -1 -Reflectivity (Z) Z 94 256 100 - 120 -1 0 1N -1 -1 -Reflectivity (Z) Z 94 256 100 - 140 -1 0 1N -1 -1 -Reflectivity (Z) Z 94 256 100 - 167 -1 0 1N -1 -1 -Reflectivity (Z) Z 94 256 100 - 195 -1 0 1N -1 -1 -Velocity (V) V 99 256 25 - 5 -1 0 1N -1 -1 -Velocity (V) V 99 256 25 - 15 -1 0 1N -1 -1 -Velocity (V) V 99 256 25 - 24 -1 0 1N -1 -1 -Velocity (V) V 99 256 25 - 34 -1 0 1N -1 -1 -Velocity (V) V 99 256 25 - 43 -1 0 1N -1 -1 -Velocity (V) V 99 256 25 - 53 -1 0 1N -1 -1 -Velocity (V) V 99 256 25 - 62 -1 0 1N -1 -1 -Velocity (V) V 99 256 25 - 75 -1 0 1N -1 -1 -Velocity (V) V 99 256 25 - 87 -1 0 1N -1 -1 -Velocity (V) V 99 256 25 - 100 -1 0 1N -1 -1 -Velocity (V) V 99 256 25 - 120 -1 0 1N -1 -1 -Velocity (V) V 99 256 25 - 140 -1 0 1N -1 -1 -Velocity (V) V 99 256 25 - 167 -1 0 1N -1 -1 -Velocity (V) V 99 256 25 - 195 -1 0 1N -1 -1 -Super Res Reflectivity (Z) HZ 153 256 25 - 5 -1 0 1N -1 -1 N -Super Res Reflectivity (Z) HZ 153 256 25 - 15 -1 0 1N -1 -1 N -Super Res Velocity (V) HV 154 256 25 - 5 -1 0 1N -1 -1 N -Super Res Velocity (V) HV 154 256 25 - 15 -1 0 1N -1 -1 N -Super Res Spec Width (SW) HSW 155 256 25 - 5 -1 0 1N -1 -1 N -Super Res Spec Width (SW) HSW 155 256 25 - 15 -1 0 1N -1 -1 N -Spectrum Width (SW) SW 30 8 100 - 15 -1 0 1N -1 -1 N -Spectrum Width (SW) SW 28 8 25 - 15 -1 0 1N -1 -1 N -Digital Vert Integ Liq (DVL) DVL 134 256 100 - -1 -1 0 1N -1 -1 N -Digital Hybrid Scan Refl (DHR) DHR 32 256 100 - -1 -1 0 1N -1 -1 N -Enhanced Echo Tops (EET) EET 135 256 100 - -1 -1 0 1N -1 -1 N -Digital Meso Detection (DMD) DMD 149 0 0 - 16384 -1 0 1N 2 -1 N -TVS Rapid Update (TRU) TRU 143 0 0 - 16384 -1 0 1N -1 -1 N -User Selectable Lyr Refl (ULR) ULR 137 16 100 - -1 -1 0 1N 14 70 N -Storm Total Precip (STP) STP 138 256 200 - -1 -1 0 1N -1 -1 N -1-Hour Snow-Water Equiv (OSW) OSW 144 16 100 - -1 -1 0 1N -1 -1 N -1-Hour Snow Depth (OSD) OSD 145 16 100 - -1 -1 0 1N -1 -1 N -Storm Tot Snow Depth (SSD) SSD 147 16 100 - -1 -1 0 1N -1 -1 N -Storm Tot Snow-Water Equiv (SSW) SSW 146 16 100 - -1 -1 0 1N -1 -1 N -Storm Tot Snow-Water Equiv (SSW) SSW 146 16 100 - -1 -1 0 1N -1 -1 N diff --git a/RadarServer/build.rcm/cfgbits/data/config/drop-ins/KXXX.storm.VCP212 b/RadarServer/build.rcm/cfgbits/data/config/drop-ins/KXXX.storm.VCP212 deleted file mode 100644 index 416cc07769..0000000000 --- a/RadarServer/build.rcm/cfgbits/data/config/drop-ins/KXXX.storm.VCP212 +++ /dev/null @@ -1,94 +0,0 @@ -RPS List super_res_vcp12_mji.VCP12.rps created 2007:06:06:19%:04:00 ... 89 products - An RPS list contains the fields: Prod-Name, Mnemonic, Prod-Code - Number of Data Levels, Resolution, Layer Code, Elevation, Contour Interval, - Priority, Req Interval, Map, Lower Layer, Upper Layer, and multCut - The record format is: '%-39s %-3s%4d%4d%6d %c%6d%7d%2d%2d%c%3d%3d %c' -Reflectivity (Z) Z 19 16 100 - 5 -1 0 1N -Reflectivity (Z) Z 19 16 100 - 15 -1 0 1N -Reflectivity (Z) Z 19 16 100 - 25 -1 0 1N -Reflectivity (Z) Z 19 16 100 - 35 -1 0 1N -Reflectivity (Z) Z 20 16 200 - 5 -1 0 1N -Velocity (V) V 27 16 100 - 5 -1 0 1N -Velocity (V) V 27 16 100 - 15 -1 0 1N -Velocity (V) V 27 16 100 - 25 -1 0 1N -Velocity (V) V 27 16 100 - 35 -1 0 1N -Storm Rel Velocity (SRM) SRM 56 16 100 - 5 -1 0 1N -Storm Rel Velocity (SRM) SRM 56 16 100 - 15 -1 0 1N -Storm Rel Velocity (SRM) SRM 56 16 100 - 25 -1 0 1N -Storm Rel Velocity (SRM) SRM 56 16 100 - 35 -1 0 1N -Composite Ref (CZ) CZ 37 16 100 - -1 -1 0 1N -Composite Ref (CZ) CZ 38 16 400 - -1 -1 0 1N -Lyr Comp Ref Max (LRM) Level 1 LRM 65 8 0 L -1 -1 0 1N -Lyr Comp Ref Max (LRM) Level 2 LRM 66 8 0 M -1 -1 0 1N -Lyr Comp Ref Max (LRM) Level 3 LRM 90 8 0 H -1 -1 0 1N -Lyr Comp Ref MAX (APR) APR 67 16 0 L -1 -1 0 1N -Echo Tops (ET) ET 41 16 0 - -1 -1 0 1N -Vert Integ Liq (VIL) VIL 57 16 0 - -1 -1 0 1N -One Hour Precip (OHP) OHP 78 16 0 - -1 -1 0 1N -Storm Total Precip (STP) STP 80 16 0 - -1 -1 0 1N -VAD Wind Profile (VWP) VWP 48 0 0 - -1 -1 0 1N -Digital Precip Array (DPA) DPA 81 256 400 - -1 -1 0 1N -Velocity (V) V 25 16 100 - 5 -1 0 1N -Base Spectrum Width (SW) SW 28 8 100 - 5 -1 0 1N -Base Spectrum Width (SW) SW 30 8 100 - 5 -1 0 1N -Severe Weather Probablilty (SWP) SWP 47 0 100 - -1 -1 0 1N -Storm Tracking Information (STI) STI 58 0 100 - -1 -1 0 1N -Hail Index (HI) HI 59 0 100 - -1 -1 0 1N -Mesocyclone (M) M 60 0 100 - -1 -1 0 1N -Mesocyclone (MD) MD 141 0 0 -1 -1 0 1N -Tornadic Vortex Signature (TVS) TVS 61 0 100 - -1 -1 0 1N -Storm Structure (SS) SS 62 0 100 - -1 -1 0 1N -Supplemental Precipitation Data (SPD) SPD 82 0 100 - -1 -1 0 1N -Reflectivity (Z) Z 94 256 100 - 5 -1 0 1N -1 -1 N -Reflectivity (Z) Z 94 256 100 - 9 -1 0 1N -1 -1 N -Reflectivity (Z) Z 94 256 100 - 13 -1 0 1N -1 -1 N -Reflectivity (Z) Z 94 256 100 - 18 -1 0 1N -1 -1 N -Reflectivity (Z) Z 94 256 100 - 24 -1 0 1N -1 -1 N -Reflectivity (Z) Z 94 256 100 - 31 -1 0 1N -1 -1 N -Reflectivity (Z) Z 94 256 100 - 40 -1 0 1N -1 -1 N -Reflectivity (Z) Z 94 256 100 - 51 -1 0 1N -1 -1 N -Reflectivity (Z) Z 94 256 100 - 64 -1 0 1N -1 -1 N -Reflectivity (Z) Z 94 256 100 - 80 -1 0 1N -1 -1 N -Reflectivity (Z) Z 94 256 100 - 100 -1 0 1N -1 -1 N -Reflectivity (Z) Z 94 256 100 - 125 -1 0 1N -1 -1 N -Reflectivity (Z) Z 94 256 100 - 156 -1 0 1N -1 -1 N -Reflectivity (Z) Z 94 256 100 - 195 -1 0 1N -1 -1 N -Velocity (V) V 99 256 25 - 5 -1 0 1N -1 -1 N -Velocity (V) V 99 256 25 - 9 -1 0 1N -1 -1 N -Velocity (V) V 99 256 25 - 13 -1 0 1N -1 -1 N -Velocity (V) V 99 256 25 - 18 -1 0 1N -1 -1 N -Velocity (V) V 99 256 25 - 24 -1 0 1N -1 -1 N -Velocity (V) V 99 256 25 - 31 -1 0 1N -1 -1 N -Velocity (V) V 99 256 25 - 40 -1 0 1N -1 -1 N -Velocity (V) V 99 256 25 - 51 -1 0 1N -1 -1 N -Velocity (V) V 99 256 25 - 64 -1 0 1N -1 -1 N -Velocity (V) V 99 256 25 - 80 -1 0 1N -1 -1 N -Velocity (V) V 99 256 25 - 100 -1 0 1N -1 -1 N -Velocity (V) V 99 256 25 - 125 -1 0 1N -1 -1 N -Velocity (V) V 99 256 25 - 156 -1 0 1N -1 -1 N -Velocity (V) V 99 256 25 - 195 -1 0 1N -1 -1 N -Super Res Reflectivity (Z) HZ 153 256 25 - 5 -1 0 1N -1 -1 N -Super Res Reflectivity (Z) HZ 153 256 25 - 9 -1 0 1N -1 -1 N -Super Res Reflectivity (Z) HZ 153 256 25 - 13 -1 0 1N -1 -1 N -Super Res Velocity (V) HV 154 256 25 - 5 -1 0 1N -1 -1 N -Super Res Velocity (V) HV 154 256 25 - 9 -1 0 1N -1 -1 N -Super Res Velocity (V) HV 154 256 25 - 13 -1 0 1N -1 -1 N -Super Res Spec Width (SW) HSW 155 256 25 - 5 -1 0 1N -1 -1 N -Super Res Spec Width (SW) HSW 155 256 25 - 9 -1 0 1N -1 -1 N -Super Res Spec Width (SW) HSW 155 256 25 - 13 -1 0 1N -1 -1 N -Spectrum Width (SW) SW 30 8 100 - 9 -1 0 1N -1 -1 N -Spectrum Width (SW) SW 30 8 100 - 13 -1 0 1N -1 -1 N -Spectrum Width (SW) SW 28 8 25 - 13 -1 0 1N -1 -1 N -Spectrum Width (SW) SW 28 8 25 - 9 -1 0 1N -1 -1 N -Digital Vert Integ Liq (DVL) DVL 134 256 100 - -1 -1 0 1N -1 -1 N -Digital Hybrid Scan Refl (DHR) DHR 32 256 100 - -1 -1 0 1N -1 -1 N -Enhanced Echo Tops (EET) EET 135 256 100 - -1 -1 0 1N -1 -1 N -Digital Meso Detection (DMD) DMD 149 0 0 - 16384 -1 0 1N 2 -1 N -TVS Rapid Update (TRU) TRU 143 0 0 - 16384 -1 0 1N -1 -1 N -User Selectable Lyr Refl (ULR) ULR 137 16 100 - -1 -1 0 1N 14 70 N -Storm Total Precip (STP) STP 138 256 200 - -1 -1 0 1N -1 -1 N -1-Hour Snow-Water Equiv (OSW) OSW 144 16 100 - -1 -1 0 1N -1 -1 N -1-Hour Snow Depth (OSD) OSD 145 16 100 - -1 -1 0 1N -1 -1 N -Storm Tot Snow Depth (SSD) SSD 147 16 100 - -1 -1 0 1N -1 -1 N -Storm Tot Snow-Water Equiv (SSW) SSW 146 16 100 - -1 -1 0 1N -1 -1 N -Storm Tot Snow-Water Equiv (SSW) SSW 146 16 100 - -1 -1 0 1N -1 -1 N diff --git a/RadarServer/build.rcm/cfgbits/data/config/drop-ins/KXXX.storm.VCP215 b/RadarServer/build.rcm/cfgbits/data/config/drop-ins/KXXX.storm.VCP215 deleted file mode 100644 index 142d9024c8..0000000000 --- a/RadarServer/build.rcm/cfgbits/data/config/drop-ins/KXXX.storm.VCP215 +++ /dev/null @@ -1,69 +0,0 @@ -RPS List VCP215.rps created 2016:01:28:39%:09:52 ... 64 products - An RPS list contains the fields: Prod-Name, Mnemonic, Prod-Code - Number of Data Levels, Resolution, Layer Code, Elevation, Contour Interval, - Priority, Req Interval, Map, Lower Layer, Upper Layer, and multCut - The record format is: '%-39s %-3s%4d%4d%6d %c%6d%7d%2d%2d%c%3d%3d %c' -Storm Rel Velocity (SRM) SRM 56 16 100 - 8227 -1 0 1N -Composite Ref (CZ) CZ 37 16 100 - -1 -1 0 1N -Composite Ref (CZ) CZ 38 16 400 - -1 -1 0 1N -Lyr Comp Ref Max (LRM) Level 2 LRM 66 8 0 M -1 -1 0 1N -Lyr Comp Ref Max (LRM) Level 3 LRM 90 8 0 H -1 -1 0 1N -Lyr Comp Ref MAX (APR) APR 67 16 0 L -1 -1 0 1N -Echo Tops (ET) ET 41 16 0 - -1 -1 0 1N -Vert Integ Liq (VIL) VIL 57 16 0 - -1 -1 0 1N -One Hour Precip (OHP) OHP 78 16 0 - -1 -1 0 1N -Storm Total Precip (STP) STP 80 16 0 - -1 -1 0 1N -VAD Wind Profile (VWP) VWP 48 0 0 - -1 -1 0 1N -Digital Precip Array (DPA) DPA 81 256 400 - -1 -1 0 1N -Base Spectrum Width (SW) SW 30 8 100 - 5 -1 0 1N -Storm Tracking Information (STI) STI 58 0 100 - -1 -1 0 1N -Hail Index (HI) HI 59 0 100 - -1 -1 0 1N -Mesocyclone (MD) MD 141 0 0 -1 -1 0 1N -Tornadic Vortex Signature (TVS) TVS 61 0 100 - -1 -1 0 1N -Storm Structure (SS) SS 62 0 100 - -1 -1 0 1N -Supplemental Precipitation Data (SPD) SPD 82 0 100 - -1 -1 0 1N -Reflectivity (Z) Z 94 256 100 - 18 -1 0 1N -1 -1 N -Reflectivity (Z) Z 94 256 100 - 24 -1 0 1N -1 -1 N -Reflectivity (Z) Z 94 256 100 - 31 -1 0 1N -1 -1 N -Reflectivity (Z) Z 94 256 100 - 40 -1 0 1N -1 -1 N -Reflectivity (Z) Z 94 256 100 - 51 -1 0 1N -1 -1 N -Reflectivity (Z) Z 94 256 100 - 64 -1 0 1N -1 -1 N -Reflectivity (Z) Z 94 256 100 - 80 -1 0 1N -1 -1 N -Reflectivity (Z) Z 94 256 100 - 100 -1 0 1N -1 -1 N -Reflectivity (Z) Z 94 256 100 - 125 -1 0 1N -1 -1 N -Reflectivity (Z) Z 94 256 100 - 156 -1 0 1N -1 -1 N -Reflectivity (Z) Z 94 256 100 - 167 -1 0 1N -1 -1 N -Reflectivity (Z) Z 94 256 100 - 195 -1 0 1N -1 -1 N -Velocity (V) V 99 256 25 - 18 -1 0 1N -1 -1 N -Velocity (V) V 99 256 25 - 24 -1 0 1N -1 -1 N -Velocity (V) V 99 256 25 - 31 -1 0 1N -1 -1 N -Velocity (V) V 99 256 25 - 40 -1 0 1N -1 -1 N -Velocity (V) V 99 256 25 - 51 -1 0 1N -1 -1 N -Velocity (V) V 99 256 25 - 64 -1 0 1N -1 -1 N -Velocity (V) V 99 256 25 - 80 -1 0 1N -1 -1 N -Velocity (V) V 99 256 25 - 100 -1 0 1N -1 -1 N -Velocity (V) V 99 256 25 - 125 -1 0 1N -1 -1 N -Velocity (V) V 99 256 25 - 156 -1 0 1N -1 -1 N -Velocity (V) V 99 256 25 - 167 -1 0 1N -1 -1 N -Velocity (V) V 99 256 25 - 195 -1 0 1N -1 -1 N -Super Res Reflectivity (Z) HZ 153 256 25 - 5 -1 0 1N -1 -1 N -Super Res Reflectivity (Z) HZ 153 256 25 - 9 -1 0 1N -1 -1 N -Super Res Reflectivity (Z) HZ 153 256 25 - 13 -1 0 1N -1 -1 N -Super Res Velocity (V) HV 154 256 25 - 5 -1 0 1N -1 -1 N -Super Res Velocity (V) HV 154 256 25 - 9 -1 0 1N -1 -1 N -Super Res Velocity (V) HV 154 256 25 - 13 -1 0 1N -1 -1 N -Super Res Spec Width (SW) HSW 155 256 25 - 5 -1 0 1N -1 -1 N -Super Res Spec Width (SW) HSW 155 256 25 - 9 -1 0 1N -1 -1 N -Super Res Spec Width (SW) HSW 155 256 25 - 13 -1 0 1N -1 -1 N -Digital Vert Integ Liq (DVL) DVL 134 256 100 - -1 -1 0 1N -1 -1 N -Digital Hybrid Scan Refl (DHR) DHR 32 256 100 - -1 -1 0 1N -1 -1 N -Enhanced Echo Tops (EET) EET 135 256 100 - -1 -1 0 1N -1 -1 N -Digital Meso Detection (DMD) DMD 149 0 0 - 16384 -1 0 1N 2 -1 N -TVS Rapid Update (TRU) TRU 143 0 0 - 16384 -1 0 1N -1 -1 N -User Selectable Lyr Refl (ULR) ULR 137 16 100 - -1 -1 0 1N 14 70 N -Storm Total Precip (STP) STP 138 256 200 - -1 -1 0 1N -1 -1 N -1-Hour Snow-Water Equiv (OSW) OSW 144 16 100 - -1 -1 0 1N -1 -1 N -1-Hour Snow Depth (OSD) OSD 145 16 100 - -1 -1 0 1N -1 -1 N -Storm Tot Snow Depth (SSD) SSD 147 16 100 - -1 -1 0 1N -1 -1 N -Storm Tot Snow-Water Equiv (SSW) SSW 146 16 100 - -1 -1 0 1N -1 -1 N -Storm Tot Snow-Water Equiv (SSW) SSW 146 16 100 - -1 -1 0 1N -1 -1 N diff --git a/RadarServer/build.rcm/cfgbits/data/config/drop-ins/KXXX.storm.VCP221 b/RadarServer/build.rcm/cfgbits/data/config/drop-ins/KXXX.storm.VCP221 deleted file mode 100644 index b48a2689df..0000000000 --- a/RadarServer/build.rcm/cfgbits/data/config/drop-ins/KXXX.storm.VCP221 +++ /dev/null @@ -1,78 +0,0 @@ -RPS List super_res_vcp21_mji.VCP21.rps created 2007:06:06:18%:58:00 ... 73 products - An RPS list contains the fields: Prod-Name, Mnemonic, Prod-Code - Number of Data Levels, Resolution, Layer Code, Elevation, Contour Interval, - Priority, Req Interval, Map, Lower Layer, Upper Layer, and multCut - The record format is: '%-39s %-3s%4d%4d%6d %c%6d%7d%2d%2d%c%3d%3d %c' -Reflectivity (Z) Z 19 16 100 - 5 -1 0 1N -Reflectivity (Z) Z 19 16 100 - 15 -1 0 1N -Reflectivity (Z) Z 19 16 100 - 25 -1 0 1N -Reflectivity (Z) Z 19 16 100 - 35 -1 0 1N -Reflectivity (Z) Z 20 16 200 - 5 -1 0 1N -Velocity (V) V 27 16 100 - 5 -1 0 1N -Velocity (V) V 27 16 100 - 15 -1 0 1N -Velocity (V) V 27 16 100 - 25 -1 0 1N -Velocity (V) V 27 16 100 - 35 -1 0 1N -Storm Rel Velocity (SRM) SRM 56 16 100 - 5 -1 0 1N -Storm Rel Velocity (SRM) SRM 56 16 100 - 15 -1 0 1N -Storm Rel Velocity (SRM) SRM 56 16 100 - 25 -1 0 1N -Storm Rel Velocity (SRM) SRM 56 16 100 - 35 -1 0 1N -Composite Ref (CZ) CZ 37 16 100 - -1 -1 0 1N -Composite Ref (CZ) CZ 38 16 400 - -1 -1 0 1N -Lyr Comp Ref Max (LRM) Level 1 LRM 65 8 0 L -1 -1 0 1N -Lyr Comp Ref Max (LRM) Level 2 LRM 66 8 0 M -1 -1 0 1N -Lyr Comp Ref Max (LRM) Level 3 LRM 90 8 0 H -1 -1 0 1N -Lyr Comp Ref MAX (APR) APR 67 16 0 L -1 -1 0 1N -Echo Tops (ET) ET 41 16 0 - -1 -1 0 1N -Vert Integ Liq (VIL) VIL 57 16 0 - -1 -1 0 1N -One Hour Precip (OHP) OHP 78 16 0 - -1 -1 0 1N -Storm Total Precip (STP) STP 80 16 0 - -1 -1 0 1N -VAD Wind Profile (VWP) VWP 48 0 0 - -1 -1 0 1N -Digital Precip Array (DPA) DPA 81 256 400 - -1 -1 0 1N -Velocity (V) V 25 16 100 - 5 -1 0 1N -Base Spectrum Width (SW) SW 28 8 100 - 5 -1 0 1N -Base Spectrum Width (SW) SW 30 8 100 - 5 -1 0 1N -Severe Weather Probablilty (SWP) SWP 47 0 100 - -1 -1 0 1N -Storm Tracking Information (STI) STI 58 0 100 - -1 -1 0 1N -Hail Index (HI) HI 59 0 100 - -1 -1 0 1N -Mesocyclone (M) M 60 0 100 - -1 -1 0 1N -Mesocyclone (MD) MD 141 0 0 -1 -1 0 1N -Tornadic Vortex Signature (TVS) TVS 61 0 100 - -1 -1 0 1N -Storm Structure (SS) SS 62 0 100 - -1 -1 0 1N -Supplemental Precipitation Data (SPD) SPD 82 0 100 - -1 -1 0 1N -Reflectivity (Z) Z 94 256 100 - 5 -1 0 1N -1 -1 N -Reflectivity (Z) Z 94 256 100 - 15 -1 0 1N -1 -1 N -Reflectivity (Z) Z 94 256 100 - 24 -1 0 1N -1 -1 N -Reflectivity (Z) Z 94 256 100 - 34 -1 0 1N -1 -1 N -Reflectivity (Z) Z 94 256 100 - 43 -1 0 1N -1 -1 N -Reflectivity (Z) Z 94 256 100 - 60 -1 0 1N -1 -1 N -Reflectivity (Z) Z 94 256 100 - 99 -1 0 1N -1 -1 N -Reflectivity (Z) Z 94 256 100 - 146 -1 0 1N -1 -1 N -Reflectivity (Z) Z 94 256 100 - 195 -1 0 1N -1 -1 N -Velocity (V) V 99 256 25 - 5 -1 0 1N -1 -1 N -Velocity (V) V 99 256 25 - 15 -1 0 1N -1 -1 N -Velocity (V) V 99 256 25 - 24 -1 0 1N -1 -1 N -Velocity (V) V 99 256 25 - 34 -1 0 1N -1 -1 N -Velocity (V) V 99 256 25 - 43 -1 0 1N -1 -1 N -Velocity (V) V 99 256 25 - 60 -1 0 1N -1 -1 N -Velocity (V) V 99 256 25 - 99 -1 0 1N -1 -1 N -Velocity (V) V 99 256 25 - 146 -1 0 1N -1 -1 N -Velocity (V) V 99 256 25 - 195 -1 0 1N -1 -1 N -Super Res Reflectivity (Z) HZ 153 256 25 - 5 -1 0 1N -1 -1 N -Super Res Reflectivity (Z) HZ 153 256 25 - 15 -1 0 1N -1 -1 N -Super Res Velocity (V) HV 154 256 25 - 5 -1 0 1N -1 -1 N -Super Res Velocity (V) HV 154 256 25 - 15 -1 0 1N -1 -1 N -Spectrum Width (SW) SW 28 8 50 - 15 -1 0 1N -1 -1 N -Spectrum Width (SW) SW 30 8 100 - 15 -1 0 1N -1 -1 N -Super Res Spec Width (SW) HSW 155 256 25 - 5 -1 0 1N -1 -1 N -Super Res Spec Width (SW) HSW 155 256 25 - 15 -1 0 1N -1 -1 N -Digital Vert Integ Liq (DVL) DVL 134 256 100 - -1 -1 0 1N -1 -1 N -Digital Hybrid Scan Refl (DHR) DHR 32 256 100 - -1 -1 0 1N -1 -1 N -Enhanced Echo Tops (EET) EET 135 256 100 - -1 -1 0 1N -1 -1 N -Digital Meso Detection (DMD) DMD 149 0 0 - 16384 -1 0 1N 2 -1 N -TVS Rapid Update (TRU) TRU 143 0 0 - 16384 -1 0 1N -1 -1 N -User Selectable Lyr Refl (ULR) ULR 137 16 100 - -1 -1 0 1N 14 70 N -Storm Total Precip (STP) STP 138 256 200 - -1 -1 0 1N -1 -1 N -1-Hour Snow Depth (OSD) OSD 145 16 100 - -1 -1 0 1N -1 -1 N -1-Hour Snow Depth (OSD) OSD 145 16 100 - -1 -1 0 1N -1 -1 N -Storm Tot Snow Depth (SSD) SSD 147 16 100 - -1 -1 0 1N -1 -1 N -Storm Tot Snow-Water Equiv (SSW) SSW 146 16 100 - -1 -1 0 1N -1 -1 N diff --git a/RadarServer/build.rcm/cfgbits/data/config/drop-ins/KXXX.storm.VCP80 b/RadarServer/build.rcm/cfgbits/data/config/drop-ins/KXXX.storm.VCP80 deleted file mode 100644 index d1b4b09f14..0000000000 --- a/RadarServer/build.rcm/cfgbits/data/config/drop-ins/KXXX.storm.VCP80 +++ /dev/null @@ -1,26 +0,0 @@ -RPS List defaultRPS.VCP80.rps created 2007:06:20:15%:52:19 ... 21 products - An RPS list contains the fields: Prod-Name, Mnemonic, Prod-Code - Number of Data Levels, Resolution, Layer Code, Elevation, Contour Interval, - Priority, Req Interval, Map, Lower Layer, Upper Layer, and multCut - The record format is: '%-39s %-3s%4d%4d%6d %c%6d%7d%2d%2d%c%3d%3d %c' -Reflectivity (Z) Z 180 256 15 - 5 -1 0 1N -1 -1 Y -Reflectivity (Z) Z 180 256 15 - 10 -1 0 1N -1 -1 N -Reflectivity (Z) Z 180 256 15 - 30 -1 0 1N -1 -1 Y -Reflectivity (Z) Z 180 256 15 - 60 -1 0 1N -1 -1 Y -Velocity (V) V 182 256 15 - 5 -1 0 1N -1 -1 Y -Velocity (V) V 182 256 15 - 10 -1 0 1N -1 -1 N -Velocity (V) V 182 256 15 - 30 -1 0 1N -1 -1 Y -Velocity (V) V 182 256 15 - 60 -1 0 1N -1 -1 Y -Reflectivity (Z) Z 186 256 30 - 6 -1 0 1N -1 -1 N -Digital Hybrid Scan Refl (DHR) DHR 32 256 100 - -1 -1 0 1N -1 -1 N -Composite Ref (CZ) CZ 37 16 100 - -1 -1 0 1N 2 -1 N -Echo Tops (ET) ET 41 16 400 - -1 -1 0 1N 2 -1 N -VAD Wind Profile (VWP) VWP 48 8 0 - -1 -1 0 1N -1 -1 N -Vert Integ Liq (VIL) VIL 57 16 400 - -1 -1 0 1N 2 -1 N -Storm Track (STI) STI 58 0 0 - -1 -1 0 1N 2 -1 N -Hail Index (HI) HI 59 0 0 - -1 -1 0 1N 2 -1 N -Tornadic Vortex Sig (TVS) TVS 61 0 0 - -1 -1 0 1N 2 -1 N -One Hour Precip (OHP) OHP 78 16 200 - -1 -1 0 1N -1 -1 N -Storm Total Precip (STP) STP 80 16 200 - -1 -1 0 1N -1 -1 N -Mesocyclone (MD) MD 141 0 0 - -1 -1 0 1N 2 -1 N -Digital Meso Detection (DMD) DMD 149 0 0 - -1 -1 0 1N 2 -1 N diff --git a/RadarServer/build.rcm/cfgbits/data/config/drop-ins/KXXX.storm.VCP90 b/RadarServer/build.rcm/cfgbits/data/config/drop-ins/KXXX.storm.VCP90 deleted file mode 100644 index 1f951b21dc..0000000000 --- a/RadarServer/build.rcm/cfgbits/data/config/drop-ins/KXXX.storm.VCP90 +++ /dev/null @@ -1,26 +0,0 @@ -RPS List defaultRPS.VCP90.rps created 2007:06:20:15%:52:19 ... 21 products - An RPS list contains the fields: Prod-Name, Mnemonic, Prod-Code - Number of Data Levels, Resolution, Layer Code, Elevation, Contour Interval, - Priority, Req Interval, Map, Lower Layer, Upper Layer, and multCut - The record format is: '%-39s %-3s%4d%4d%6d %c%6d%7d%2d%2d%c%3d%3d %c' -Reflectivity (Z) Z 180 256 15 - 5 -1 0 1N -1 -1 N -Reflectivity (Z) Z 180 256 15 - 10 -1 0 1N -1 -1 N -Reflectivity (Z) Z 180 256 15 - 30 -1 0 1N -1 -1 N -Reflectivity (Z) Z 180 256 15 - 60 -1 0 1N -1 -1 N -Velocity (V) V 182 256 15 - 5 -1 0 1N -1 -1 N -Velocity (V) V 182 256 15 - 10 -1 0 1N -1 -1 N -Velocity (V) V 182 256 15 - 30 -1 0 1N -1 -1 N -Velocity (V) V 182 256 15 - 60 -1 0 1N -1 -1 N -Reflectivity (Z) Z 186 256 30 - 6 -1 0 1N -1 -1 N -Digital Hybrid Scan Refl (DHR) DHR 32 256 100 - -1 -1 0 1N -1 -1 N -Composite Ref (CZ) CZ 37 16 100 - -1 -1 0 1N 2 -1 N -Echo Tops (ET) ET 41 16 400 - -1 -1 0 1N 2 -1 N -VAD Wind Profile (VWP) VWP 48 8 0 - -1 -1 0 1N -1 -1 N -Vert Integ Liq (VIL) VIL 57 16 400 - -1 -1 0 1N 2 -1 N -Storm Track (STI) STI 58 0 0 - -1 -1 0 1N 2 -1 N -Hail Index (HI) HI 59 0 0 - -1 -1 0 1N 2 -1 N -Tornadic Vortex Sig (TVS) TVS 61 0 0 - -1 -1 0 1N 2 -1 N -One Hour Precip (OHP) OHP 78 16 200 - -1 -1 0 1N -1 -1 N -Storm Total Precip (STP) STP 80 16 200 - -1 -1 0 1N -1 -1 N -Mesocyclone (MD) MD 141 0 0 - -1 -1 0 1N 2 -1 N -Digital Meso Detection (DMD) DMD 149 0 0 - -1 -1 0 1N 2 -1 N diff --git a/RadarServer/build.rcm/cfgbits/data/config/drop-ins/cronOTRs.xml b/RadarServer/build.rcm/cfgbits/data/config/drop-ins/cronOTRs.xml deleted file mode 100644 index 5b5eedd807..0000000000 --- a/RadarServer/build.rcm/cfgbits/data/config/drop-ins/cronOTRs.xml +++ /dev/null @@ -1,36 +0,0 @@ - - - - - - - - - 34 2 - 34 4 - 34 8 - 34 16 - 34 32 - - - - - diff --git a/RadarServer/build.rcm/cfgbits/data/config/drop-ins/prodList.txt b/RadarServer/build.rcm/cfgbits/data/config/drop-ins/prodList.txt deleted file mode 100644 index 640c819d0d..0000000000 --- a/RadarServer/build.rcm/cfgbits/data/config/drop-ins/prodList.txt +++ /dev/null @@ -1,123 +0,0 @@ -# productId elevAngle prodCategory Partial WMO Id - 2 0 GSM NXUS6 - 19 5 N0R SDUS5 - 20 5 N0Z SDUS7 - 27 5 N0V SDUS5 - 28 5 NSP SDUS6 - 30 5 NSW SDUS6 - 32 0 DHR SDUS5 - 34 -10 NC1 SDUS6 - 34 -20 NC2 SDUS6 - 34 -30 NC3 SDUS6 - 34 -40 NC4 SDUS6 - 34 -50 NC5 SDUS6 - 37 0 NCR SDUS5 - 38 0 NCZ SDUS6 - 41 0 NET SDUS7 - 48 0 NVW SDUS3 - 56 5 N0S SDUS5 - 56 13 N1S SDUS2 - 56 15 N1S SDUS2 - 56 24 N2S SDUS2 - 56 25 N2S SDUS2 - 56 31 N3S SDUS3 - 56 34 N3S SDUS3 - 56 35 N3S SDUS3 - 57 0 NVL SDUS5 - 58 0 NST SDUS3 - 59 0 NHI SDUS6 - 61 0 NTV SDUS6 - 62 0 NSS SDUS6 - 65 0 NLL SDUS6 - 66 0 NML SDUS6 - 67 0 NLA SDUS6 - 75 0 FTM NOUS6 - 78 0 N1P SDUS3 - 80 0 NTP SDUS5 - 81 0 DPA SDUS5 - 82 0 SPD SDUS6 - 90 0 NHL SDUS6 - 136 0 RWO SDUS9 - 138 0 DSP SDUS5 - 141 0 NMD SDUS3 - 152 0 RSL SDUS4 - 94 5 N0Q SDUS5 - 94 9 NAQ SDUS5 - 94 13 N1Q SDUS2 - 94 15 N1Q SDUS2 - 94 18 NBQ SDUS2 - 94 24 N2Q SDUS2 - 94 25 N2Q SDUS2 - 94 31 N3Q SDUS2 - 94 34 N3Q SDUS2 - 94 35 N3Q SDUS2 - 99 5 N0U SDUS5 - 99 9 NAU SDUS5 - 99 13 N1U SDUS2 - 99 15 N1U SDUS2 - 99 18 NBU SDUS2 - 99 24 N2U SDUS2 - 99 25 N2U SDUS2 - 99 31 N3U SDUS2 - 99 34 N3U SDUS2 - 99 35 N3U SDUS2 - 134 0 DVL SDUS5 - 135 0 EET SDUS7 - 159 5 N0X SDUS8 - 159 9 NAX SDUS8 - 159 13 N1X SDUS8 - 159 15 N1X SDUS8 - 159 18 NBX SDUS8 - 159 24 N2X SDUS8 - 159 25 N2X SDUS8 - 159 31 N3X SDUS8 - 159 34 N3X SDUS8 - 159 35 N3X SDUS8 - 161 5 N0C SDUS8 - 161 9 NAC SDUS8 - 161 13 N1C SDUS8 - 161 15 N1C SDUS8 - 161 18 NBC SDUS8 - 161 24 N2C SDUS8 - 161 25 N2C SDUS8 - 161 31 N3C SDUS8 - 161 34 N3C SDUS8 - 161 35 N3C SDUS8 - 163 5 N0K SDUS8 - 163 9 NAK SDUS8 - 163 13 N1K SDUS8 - 163 15 N1K SDUS8 - 163 18 NBK SDUS8 - 163 24 N2K SDUS8 - 163 25 N2K SDUS8 - 163 31 N3K SDUS8 - 163 34 N3K SDUS8 - 163 35 N3K SDUS8 - 165 5 N0H SDUS8 - 165 9 NAH SDUS8 - 165 13 N1H SDUS8 - 165 15 N1H SDUS8 - 165 18 NBH SDUS8 - 165 24 N2H SDUS8 - 165 25 N2H SDUS8 - 165 31 N3H SDUS8 - 165 34 N3H SDUS8 - 165 35 N3H SDUS8 - 166 5 N0M SDUS8 - 166 9 NAM SDUS8 - 166 13 N1M SDUS8 - 166 15 N1M SDUS8 - 166 18 NBM SDUS8 - 166 24 N2M SDUS8 - 166 25 N2M SDUS8 - 166 31 N3M SDUS8 - 166 34 N3M SDUS8 - 166 35 N3M SDUS8 - 169 0 OHA SDUS8 - 170 0 DAA SDUS8 - 171 0 PTA SDUS3 - 172 0 DTA SDUS8 - 174 0 DOD SDUS8 - 175 0 DSD SDUS8 - 176 0 DPR SDUS8 - 177 0 HHC SDUS8 diff --git a/RadarServer/build.rcm/cfgbits/data/config/drop-ins/radarWatchdog.txt b/RadarServer/build.rcm/cfgbits/data/config/drop-ins/radarWatchdog.txt deleted file mode 100644 index 55d6b132b8..0000000000 --- a/RadarServer/build.rcm/cfgbits/data/config/drop-ins/radarWatchdog.txt +++ /dev/null @@ -1,30 +0,0 @@ -# radarWatchdog.txt -# -# Controls how long to wait for products specified on the RPS list before -# sounding an alarm. There are two sections: One defines VCP durations -# and one that lists products to monitor. -# -# VCP duration format: | -# -# Product format: -# -# is a mnemonic found in radarInfo.txt. -# -# -# If a product is listed, but is not actually in the current RPS list, -# it will not be monitored. -[VCP] - 11 | 300 -211 | 300 - 12 | 270 -212 | 270 - 21 | 360 -121 | 360 -221 | 360 - 31 | 600 - 32 | 600 - 80 | 360 - 90 | 360 -[Products] -V -Z \ No newline at end of file diff --git a/RadarServer/build.rcm/cfgbits/data/config/drop-ins/rps-RPGOP-tcp.clear-air b/RadarServer/build.rcm/cfgbits/data/config/drop-ins/rps-RPGOP-tcp.clear-air deleted file mode 100644 index 697169f5d9..0000000000 --- a/RadarServer/build.rcm/cfgbits/data/config/drop-ins/rps-RPGOP-tcp.clear-air +++ /dev/null @@ -1,49 +0,0 @@ -RPS List rps-RPGOP-tcp.VCP32.rps created 2010:11:18:17:32:56 ... 45 products - An RPS list contains the fields: Prod-Name, Mnemonic, Prod-Code - Number of Data Levels, Resolution, Layer Code, Elevation, Contour Interval, - Priority, Req Interval, Map, Lower Layer, Upper Layer, multCut, endHour, timeSpan - The record format is: '%-39s %-3s%4d%4d%6d %c%6d%7d%2d%2d%c%3d%3d %c%7d%7d' -Reflectivity (Z) Z 94 256 100 - 8227 -1 0 1N -1 -1 N -1 0 -Reflectivity (Z) Z 94 256 100 - 5 -1 0 1N -1 -1 Y -1 0 -Velocity (V) V 99 256 25 - 8227 -1 0 1N -1 -1 N -1 0 -Velocity (V) V 99 256 25 - 5 -1 0 1N -1 -1 Y -1 0 -Reflectivity (Z) Z 19 16 100 - 5 -1 0 1N -1 -1 N -1 0 -Reflectivity (Z) Z 20 16 200 - 5 -1 0 1N -1 -1 N -1 0 -Velocity (V) V 27 16 100 - 5 -1 0 1N -1 -1 N -1 0 -Storm Rel Velocity (SRM) SRM 56 16 100 - 8227 -1 0 1N -1 -1 N -1 0 -Composite Ref (CZ) CZ 37 16 100 - -1 -1 0 1N 2 -1 N -1 0 -Composite Ref (CZ) CZ 38 16 400 - -1 -1 0 1N 2 -1 N -1 0 -Lyr Comp Ref Max (LRM) Level 1 LRM 65 8 0 L -1 -1 0 1N -1 -1 N -1 0 -Lyr Comp Ref Max (LRM) Level 2 LRM 66 8 0 M -1 -1 0 1N -1 -1 N -1 0 -Lyr Comp Ref Max (LRM) Level 3 LRM 90 8 0 H -1 -1 0 1N -1 -1 N -1 0 -Lyr Comp Ref MAX (APR) APR 67 16 0 L -1 -1 0 1N -1 -1 N -1 0 -Echo Tops (ET) ET 41 16 0 - -1 -1 0 1N 2 -1 N -1 0 -Vert Integ Liq (VIL) VIL 57 16 0 - -1 -1 0 1N 2 -1 N -1 0 -Enhanced Echo Tops (EET) EET 135 256 100 - -1 -1 0 1N -1 -1 N -1 0 -Digital Vert Integ Liq (DVL) DVL 134 256 100 - -1 -1 0 1N -1 -1 N -1 0 -One Hour Precip (OHP) OHP 78 16 0 - -1 -1 0 1N -1 -1 N -1 0 -Storm Total Precip (STP) STP 80 16 0 - -1 -1 0 1N -1 -1 N -1 0 -VAD Wind Profile (VWP) VWP 48 0 0 - -1 -1 0 1N -1 -1 N -1 0 -Digital Precip Array (DPA) DPA 81 256 400 - -1 -1 0 1N -1 -1 N -1 0 -Base Spectrum Width (SW) SW 28 8 100 - 5 -1 0 1N -1 -1 N -1 0 -Base Spectrum Width (SW) SW 30 8 100 - 5 -1 0 1N -1 -1 N -1 0 -Digital Hybrid Scan Refl (DHR) DHR 32 256 100 - -1 -1 0 1N -1 -1 N -1 0 -Storm Total Precip (STP) STP 138 256 200 - -1 -1 0 1N -1 -1 N -1 0 -Differential Refl (ZDR) ZDR 159 256 25 - 8227 -1 0 1N -1 -1 N -1 0 -Correlation Coeff (CC) CC 161 256 25 - 8227 -1 0 1N -1 -1 N -1 0 -Specific Diff Phase (KDP) KDP 163 256 25 - 8227 -1 0 1N -1 -1 N -1 0 -Hydrometeor Class (HC) HC 165 256 25 - 8227 -1 0 1N -1 -1 N -1 0 -Melting Layer (ML) ML 166 0 0 - 8227 -1 0 1N -1 -1 N -1 0 -Differential Refl (ZDR) ZDR 159 256 25 - 5 -1 0 1N -1 -1 Y -1 0 -Correlation Coeff (CC) CC 161 256 25 - 5 -1 0 1N -1 -1 Y -1 0 -Specific Diff Phase (KDP) KDP 163 256 25 - 5 -1 0 1N -1 -1 Y -1 0 -Hydrometeor Class (HC) HC 165 256 25 - 5 -1 0 1N -1 -1 Y -1 0 -Melting Layer (ML) ML 166 0 0 - 5 -1 0 1N -1 -1 Y -1 0 -Digital Inst Precip Rate (DPR) DPR 176 0 25 - -1 -1 0 1N -1 -1 N -1 0 -Hybrid Hydrometeor Class (HHC) HHC 177 256 25 - -1 -1 0 1N -1 -1 N -1 0 -One Hour Accum (OHA) OHA 169 16 200 - -1 -1 0 1N -1 -1 N -1 0 -One Hour Unbiased Accum (DAA) DAA 170 256 25 - -1 -1 0 1N -1 -1 N -1 0 -Storm Total Accum (STA) STA 171 16 200 - -1 -1 0 1N -1 -1 N -1 0 -Storm Total Accum (STA) STA 172 256 25 - -1 -1 0 1N -1 -1 N -1 0 -One Hour Diff (DOD) DOD 174 256 25 - -1 -1 0 1N -1 -1 N -1 0 -Storm Total Diff (DSD) DSD 175 256 25 - -1 -1 0 1N -1 -1 N -1 0 diff --git a/RadarServer/build.rcm/cfgbits/data/config/drop-ins/rps-RPGOP-tcp.storm b/RadarServer/build.rcm/cfgbits/data/config/drop-ins/rps-RPGOP-tcp.storm deleted file mode 100644 index 0d730fdf27..0000000000 --- a/RadarServer/build.rcm/cfgbits/data/config/drop-ins/rps-RPGOP-tcp.storm +++ /dev/null @@ -1,55 +0,0 @@ -RPS List rps-RPGOP-tcp.VCP11.rps created 2014:02:18:17:28:33 ... 48 products - An RPS list contains the fields: Prod-Name, Mnemonic, Prod-Code - Number of Data Levels, Resolution, Layer Code, Elevation, Contour Interval, - Priority, Req Interval, Map, Lower Layer, Upper Layer, multCut, endHour, timeSpan - The record format is: '%-39s %-3s%4d%4d%6d %c%6d%7d%2d%2d%c%3d%3d %c%7d%7d' -Reflectivity (Z) Z 94 256 100 - 8226 -1 0 1N -1 -1 N -1 0 -Reflectivity (Z) Z 94 256 100 - 5 -1 0 1N -1 -1 Y -1 0 -Velocity (V) V 99 256 25 - 8226 -1 0 1N -1 -1 N -1 0 -Velocity (V) V 99 256 25 - 5 -1 0 1N -1 -1 Y -1 0 -Reflectivity (Z) Z 19 16 100 - 5 -1 0 1N -1 -1 N -1 0 -Reflectivity (Z) Z 20 16 200 - 5 -1 0 1N -1 -1 N -1 0 -Velocity (V) V 27 16 100 - 5 -1 0 1N -1 -1 N -1 0 -Storm Rel Velocity (SRM) SRM 56 16 100 - 8226 -1 0 1N -1 -1 N -1 0 -Composite Ref (CZ) CZ 37 16 100 - -1 -1 0 1N 2 -1 N -1 0 -Composite Ref (CZ) CZ 38 16 400 - -1 -1 0 1N 2 -1 N -1 0 -Lyr Comp Ref Max (LRM) Level 1 LRM 65 8 0 L -1 -1 0 1N -1 -1 N -1 0 -Lyr Comp Ref Max (LRM) Level 2 LRM 66 8 0 M -1 -1 0 1N -1 -1 N -1 0 -Lyr Comp Ref Max (LRM) Level 3 LRM 90 8 0 H -1 -1 0 1N -1 -1 N -1 0 -Lyr Comp Ref MAX (APR) APR 67 16 0 L -1 -1 0 1N -1 -1 N -1 0 -Echo Tops (ET) ET 41 16 0 - -1 -1 0 1N 2 -1 N -1 0 -Vert Integ Liq (VIL) VIL 57 16 0 - -1 -1 0 1N 2 -1 N -1 0 -Enhanced Echo Tops (EET) EET 135 256 100 - -1 -1 0 1N -1 -1 N -1 0 -Digital Vert Integ Liq (DVL) DVL 134 256 100 - -1 -1 0 1N -1 -1 N -1 0 -One Hour Precip (OHP) OHP 78 16 0 - -1 -1 0 1N -1 -1 N -1 0 -Storm Total Precip (STP) STP 80 16 0 - -1 -1 0 1N -1 -1 N -1 0 -VAD Wind Profile (VWP) VWP 48 0 0 - -1 -1 0 1N -1 -1 N -1 0 -Digital Precip Array (DPA) DPA 81 256 400 - -1 -1 0 1N -1 -1 N -1 0 -Base Spectrum Width (SW) SW 28 8 100 - 5 -1 0 1N -1 -1 N -1 0 -Base Spectrum Width (SW) SW 30 8 100 - 5 -1 0 1N -1 -1 N -1 0 -Storm Tracking Information (STI) STI 58 0 100 - -1 -1 0 1N 2 -1 N -1 0 -Hail Index (HI) HI 59 0 100 - -1 -1 0 1N 2 -1 N -1 0 -Mesocyclone (MD) MD 141 0 0 - 1 -1 0 1N 2 -1 N -1 0 -Tornadic Vortex Signature (TVS) TVS 61 0 100 - -1 -1 0 1N 2 -1 N -1 0 -Storm Structure (SS) SS 62 0 100 - -1 -1 0 1N -1 -1 N -1 0 -Supplemental Precipitation Data (SPD) SPD 82 0 100 - -1 -1 0 1N -1 -1 N -1 0 -Digital Hybrid Scan Refl (DHR) DHR 32 256 100 - -1 -1 0 1N -1 -1 N -1 0 -Storm Total Precip (STP) STP 138 256 200 - -1 -1 0 1N -1 -1 N -1 0 -Differential Refl (ZDR) ZDR 159 256 25 - 8226 -1 0 1N -1 -1 N -1 0 -Correlation Coeff (CC) CC 161 256 25 - 8226 -1 0 1N -1 -1 N -1 0 -Specific Diff Phase (KDP) KDP 163 256 25 - 8226 -1 0 1N -1 -1 N -1 0 -Hydrometeor Class (HC) HC 165 256 25 - 8226 -1 0 1N -1 -1 N -1 0 -Melting Layer (ML) ML 166 0 0 - 8226 -1 0 1N -1 -1 N -1 0 -Differential Refl (ZDR) ZDR 159 256 25 - 5 -1 0 1N -1 -1 Y -1 0 -Correlation Coeff (CC) CC 161 256 25 - 5 -1 0 1N -1 -1 Y -1 0 -Specific Diff Phase (KDP) KDP 163 256 25 - 5 -1 0 1N -1 -1 Y -1 0 -Hydrometeor Class (HC) HC 165 256 25 - 5 -1 0 1N -1 -1 Y -1 0 -Melting Layer (ML) ML 166 0 0 - 5 -1 0 1N -1 -1 Y -1 0 -Digital Inst Precip Rate (DPR) DPR 176 0 25 - -1 -1 0 1N -1 -1 N -1 0 -Hybrid Hydrometeor Class (HHC) HHC 177 256 25 - -1 -1 0 1N -1 -1 N -1 0 -One Hour Accum (OHA) OHA 169 16 200 - -1 -1 0 1N -1 -1 N -1 0 -One Hour Unbiased Accum (DAA) DAA 170 256 25 - -1 -1 0 1N -1 -1 N -1 0 -Storm Total Accum (STA) STA 171 16 200 - -1 -1 0 1N -1 -1 N -1 0 -Storm Total Accum (STA) STA 172 256 25 - -1 -1 0 1N -1 -1 N -1 0 -One Hour Diff (DOD) DOD 174 256 25 - -1 -1 0 1N -1 -1 N -1 0 -Storm Total Diff (DSD) DSD 175 256 25 - -1 -1 0 1N -1 -1 N -1 0 diff --git a/RadarServer/build.rcm/cfgbits/data/config/drop-ins/rps-SPGOP-tcp.storm b/RadarServer/build.rcm/cfgbits/data/config/drop-ins/rps-SPGOP-tcp.storm deleted file mode 100644 index cfb25544ea..0000000000 --- a/RadarServer/build.rcm/cfgbits/data/config/drop-ins/rps-SPGOP-tcp.storm +++ /dev/null @@ -1,26 +0,0 @@ -RPS List rps-SPGOP-tcp.storm created 2008:05:12:18%:33:35 ... 21 products - An RPS list contains the fields: Prod-Name, Mnemonic, Prod-Code - Number of Data Levels, Resolution, Layer Code, Elevation, Contour Interval, - Priority, Req Interval, Map, Lower Layer, Upper Layer, and multCut - The record format is: '%-39s %-3s%4d%4d%6d %c%6d%7d%2d%2d%c%3d%3d %c' -Reflectivity (Z) Z 186 256 30 - 6 -1 0 1N -1 -1 N -Reflectivity (Z) Z 181 16 15 - 5 -1 0 1N -1 -1 Y -Reflectivity (Z) Z 181 16 15 - 10 -1 0 1N -1 -1 N -Reflectivity (Z) Z 181 16 15 - 30 -1 0 1N -1 -1 Y -Velocity (V) V 182 256 15 - 5 -1 0 1N -1 -1 Y -Velocity (V) V 182 256 15 - 10 -1 0 1N -1 -1 N -Velocity (V) V 182 256 15 - 30 -1 0 1N -1 -1 Y -Composite Ref (CZ) CZ 37 16 100 - -1 -1 0 1N 2 -1 N -Echo Tops (ET) ET 41 16 400 - -1 -1 0 1N 2 -1 N -VAD Wind Profile (VWP) VWP 48 8 0 - -1 -1 0 1N -1 -1 N -Vert Integ Liq (VIL) VIL 57 16 400 - -1 -1 0 1N 2 -1 N -Storm Track (STI) STI 58 0 0 - -1 -1 0 1N 2 -1 N -Hail Index (HI) HI 59 0 0 - -1 -1 0 1N 2 -1 N -Tornadic Vortex Sig (TVS) TVS 61 0 0 - -1 -1 0 1N 2 -1 N -One Hour Precip (OHP) OHP 78 16 200 - -1 -1 0 1N -1 -1 N -Storm Total Precip (STP) STP 80 16 200 - -1 -1 0 1N -1 -1 N -Digital Precip Array (DPA) DPA 81 256 400 - -1 -1 0 1N -1 -1 N -Supplemental Precipitation Data (SPD) SPD 82 0 100 - -1 -1 0 1N -1 -1 N -Digital Hybrid Scan Refl (DHR) DHR 32 256 100 - -1 -1 0 1N -1 -1 N -Storm Total Precip (STP) STP 138 256 200 - -1 -1 0 1N -1 -1 N -Mesocyclone (MD) MD 141 0 0 - -1 -1 0 1N 2 -1 N diff --git a/RadarServer/build.rcm/cfgbits/data/config/drop-ins/tdwrProdList.txt b/RadarServer/build.rcm/cfgbits/data/config/drop-ins/tdwrProdList.txt deleted file mode 100644 index 06fbe65ef7..0000000000 --- a/RadarServer/build.rcm/cfgbits/data/config/drop-ins/tdwrProdList.txt +++ /dev/null @@ -1,35 +0,0 @@ -# productId elevAngle prodCategory Partial WMO Id - 2 0 GSM NXUS6 - 75 0 FTM NOUS6 - 152 0 RSL SDUS4 - 186 6 TZL SDUS5 - 181 0 TR0 SDUS5 - 181 5 TR0 SDUS5 - 181 9 TR1 SDUS2 - 181 15 TR2 SDUS2 - 181 18 TR2 SDUS2 - 181 24 TR2 SDUS2 - 181 34 TR2 SDUS2 - 181 43 TR2 SDUS2 - 182 0 TV0 SDUS5 - 182 5 TV0 SDUS5 - 182 9 TV1 SDUS7 - 182 15 TV2 SDUS7 - 182 18 TV2 SDUS7 - 182 24 TV2 SDUS7 - 182 34 TV2 SDUS7 - 182 43 TV2 SDUS7 - 32 0 DHR SDUS5 - 37 0 NCR SDUS5 - 41 0 NET SDUS7 - 48 0 NVW SDUS3 - 57 0 NVL SDUS5 - 58 0 NST SDUS3 - 59 0 NHI SDUS6 - 61 0 NTV SDUS6 - 78 0 N1P SDUS3 - 80 0 NTP SDUS5 - 81 0 DPA SDUS5 - 82 0 SPD SDUS6 - 138 0 DSP SDUS5 - 141 0 NMD SDUS3 diff --git a/RadarServer/build.rcm/cfgbits/data/config/drop-ins/wmoSiteInfo.txt b/RadarServer/build.rcm/cfgbits/data/config/drop-ins/wmoSiteInfo.txt deleted file mode 100644 index bc687e5739..0000000000 --- a/RadarServer/build.rcm/cfgbits/data/config/drop-ins/wmoSiteInfo.txt +++ /dev/null @@ -1,155 +0,0 @@ -#Radar Connection Characteristic D'n' Key -#D1 - LAN 10 mbps -#D2 - FR DoD 1.54 mbps -#D3 - FAA FR 256 kbps -#D4 - NWS & DoD Supplemental FR 128 kbps -#D5 - NWS & DoD Supplemental FR 256 kbps -#D6 - TDWR LAN 10 mbps -#D7 - Dedicated Backup Across WAN 128 kbps Aggregate -#D8 - ASR-4/ARSR-11 radars -# -#Site ID Region numRpgs RPGs 071911 -KABQ 5 5 ABXYD1 FDXYD2 EPZND7 HDXND7 AMAND7 -KABR 3 4 ABRYD1 FSDND7 BISND7 MBXND7 -KAKQ 1 4 AKQYD1 DOXYD2 MHXND7 RAXND7 -KALR 2 1 FFCND1 -KALY 1 4 ENXYD1 CXXND7 TYXND7 BGMND7 -KAMA 4 4 AMAYD1 LBBND7 ABXND7 FDXND7 -KAPX 3 3 APXYD1 MQTND7 DTXND7 -KARX 3 3 ARXYD1 DVNND7 MPXND7 -KBCQ 3 1 EAXND1 -KBGM 1 3 BGMYD1 CCXND7 ENXND7 -KBIS 3 5 BISYD1 MBXYD2 MVXND7 ABRND7 QWAND8 -KBMX 4 6 BMXYD1 MXXYD2 HTXND4 GWXND4 FFCND7 JGXND7 -KBOI 5 3 CBXYD1 SFXND7 LRXND7 -KBOU 5 4 FTGYD1 DENYD6 PUXND7 GJXND7 -KBOX 1 4 BOXYD1 BOSYD6 OKXND7 GYXND7 -KBRO 4 3 BROYD1 EWXND7 DFXND7 -KBTV 1 4 CXXYD1 TYXYD2 ENXND7 CBWND7 -KBUF 1 4 BUFYD1 TYXND4 CLEND7 PBZND7 -KBYZ 5 3 BLXYD1 GGWND7 RIWND7 -KCAE 2 3 CAEYD1 GSPND7 CLXND7 -KCAR 1 4 CBWYD1 GYXND7 CXXND7 TYXND7 -KCHS 2 3 CLXYD1 LTXND7 CAEND7 -KCLE 1 5 CLEYD1 BUFND4 LVEYD6 ILNND7 ERIND8 -KCRP 4 4 CRPYD1 EWXND7 DFXND7 HGXND7 -KCTP 1 3 CCXYD1 LWXND4 BGMND7 -KCYS 5 3 CYSYD1 RIWND7 UDXND7 -KDDC 3 3 DDCYD1 GLDND7 ICTND7 -KDLH 3 3 DLHYD1 MPXND7 MVXND7 -KDMX 3 3 DMXYD1 ARXND7 DVNND7 -KDTX 3 4 DTXYD1 DTWYD6 GRRND7 APXND7 -KDVN 3 3 DVNYD1 DMXND7 ARXND7 -KEAX 3 4 EAXYD1 MCIYD6 LSXND7 TWXND7 -KEHU 4 1 FWSND5 -KEKA 6 3 BHXYD1 MAXND7 MUXND7 -KEPZ 4 5 EPZYD1 HDXYD2 ABXND7 FDXND7 MAFND7 -KEWX 4 4 EWXYD1 DFXYD2 CRPND7 BROND7 -KFFC 2 7 FFCYD1 JGXYD2 ATLYD6 BMXND7 MXXND7 MRXND7 HTXND7 -KFGF 3 4 MVXYD1 BISND7 MBXND7 DLHND7 -KFGZ 5 5 FSXYD1 ICXND4 ESXND7 EYXND7 EMXND7 -KFSD 3 3 FSDYD1 ABRND7 OAXND7 -KFWD 4 9 FWSYD1 GRKYD2 DYXND4 DALYD6 DFWYD6 SHVND7 TLXND7 FDRND7 VNXND7 -KFWR 4 1 FWSND1 -KGGW 5 3 GGWYD1 BLXND7 TFXND7 -KGID 3 3 UEXYD1 OAXND7 LNXND7 -KGJT 5 4 GJXYD1 MTXND7 ICXND7 FTGND7 -KGLD 3 3 GLDYD1 DDCND7 PUXND7 -KGRB 3 3 GRBYD1 MKXND7 MQTND7 -KGRR 3 3 GRRYD1 DTXND7 IWXND7 -KGSP 2 4 GSPYD1 CLTYD6 CAEND7 FCXND7 -KGYX 1 3 GYXYD1 CBWND7 BOXND7 -KHGX 4 6 HGXYD1 IAHYD6 HOUYD6 LCHND7 POEND7 CRPND7 -KHNX 6 4 HNXYD1 EYXND5 DAXND7 BBXND7 -KHUN 4 5 HTXYD1 GWXND4 DGXND7 BMXND7 MXXND7 -KICT 3 5 ICTYD1 VNXND4 ICHYD6 TWXND7 DDCND7 -KILM 2 3 LTXYD1 CLXND7 MHXND7 -KILN 1 6 ILNYD1 CVGYD6 DAYYD6 CMHYD6 JKLND7 CLEND7 -KILX 3 3 ILXYD1 LOTND7 LSXND7 -KIND 3 4 INDYD1 IDSYD6 IWXND7 LVXND7 -KIWX 3 3 IWXYD1 INDND7 GRRND7 -KJAN 4 5 DGXYD1 GWXYD2 MOBND4 HTXND7 SHVND7 -KJAX 2 5 JAXYD1 VAXYD2 TLHND7 EOXND7 BYXND7 -KJKL 3 4 JKLYD1 ILNND7 RLXND7 LVXND7 -KKEY 2 4 BYXYD1 AMXND5 JAXND7 VAXND7 -KKRF 3 1 EAXND1 -KLBF 3 3 LNXYD1 UDXND7 UEXND7 -KLCH 4 5 LCHYD1 POEYD2 BROND7 HGXND7 LIXND7 -KLIX 4 6 LIXYD1 MSYYD6 MOBND7 EVXND7 LCHND7 POEND7 -KLKN 5 2 LRXYD1 RGXND7 -KLMK 3 6 LVXYD1 PAHND5 SDFYD6 VWXND7 HPXND7 INDND7 -KLOT 3 5 LOTYD1 ORDYD6 MDWYD6 ILXND7 MKXND7 -KLOX 6 6 VTXYD1 VBXYD2 SOXND4 EYXND5 MUXND7 NKXND7 -KLSX 3 4 LSXYD1 STLYD6 SGFND7 ILXND7 -KLUB 4 4 LBBYD1 AMAND7 SJTND7 DYXND7 -KLWX 1 7 LWXYD1 BWIYD6 DCAYD6 IADYD6 ADWYD6 DIXND7 CCXND7 -KLZK 4 4 LZKYD1 SRXND4 NQAND7 INXND7 -KMAF 4 5 MAFYD1 SJTND7 DYXND7 EPZND7 HDXND7 -KMEG 4 7 NQAYD1 GWXND4 MEMYD6 LZKND7 OHXND7 PAHND7 SRXND7 -KMFL 2 7 AMXYD1 BYXND4 FLLYD6 MIAYD6 PBIYD6 JUAND7 TBWND7 -KMFR 6 5 MAXYD1 BHXND7 ATXND7 LGXND7 RTXND7 -KMHX 2 4 MHXYD1 AKQND7 DOXND7 LTXND7 -KMKX 3 4 MKXYD1 MKEYD6 GRBND7 LOTND7 -KMLB 2 5 MLBYD1 MCOYD6 TBWND7 JUAND7 AMXND7 -KMOB 4 5 MOBYD1 EVXYD2 LIXND7 TLHND7 EOXND7 -KMPX 3 4 MPXYD1 MSPYD6 DLHND7 FSDND7 -KMQT 3 3 MQTYD1 APXND7 GRBND7 -KMRX 4 5 MRXYD1 HTXND4 OHXND7 FFCND7 JGXND7 -KMSO 5 3 MSXYD1 TFXND7 OTXND7 -KMSR 3 2 MPXND1 MSPND6 -KMTR 6 6 MUXYD1 BHXND7 VTXND7 VBXND7 NKXND7 SOXND7 -KOAX 3 3 OAXYD1 UEXND7 DMXND7 -KOHX 4 6 OHXYD1 HTXND4 BNAYD6 MRXND7 NQAND7 GWXND7 -KOKX 1 5 OKXYD1 EWRYD6 JFKYD6 BOXND7 DIXND7 -KORN 4 1 LIXND1 -KOTX 6 3 OTXYD1 PDTND7 MSXND7 -KOUN 4 8 TLXYD1 FDRYD2 VNXYD2 OKCYD6 INXND7 SRXND7 FWSND7 GRKND7 -KOSF 4 3 CRIND1 TLXND5 OKCND6 -KPAH 3 5 PAHYD1 VWXYD1 HPXYD2 LVXND4 SGFND7 -KPBZ 1 4 PBZYD1 PITYD6 RLXND7 BUFND7 -KPDT 6 3 PDTYD1 OTXND7 CBXND7 -KPHI 1 5 DIXYD1 DOXND4 PHLYD6 LWXND7 OKXND7 -KPIH 5 4 SFXYD1 MTXND4 CBXND7 ICXND7 -KPQR 6 4 RTXYD1 LGXND5 ATXND7 MAXND7 -KPSR 5 5 IWAYD1 YUXYD1 PHXYD6 EMXND7 FSXND7 -KPTR 6 1 RTXND1 -KPUB 5 3 PUXYD1 FTGND7 GLDND7 -KRAH 2 5 RAXYD1 RDUYD6 FCXND7 AKQND7 DOXND7 -KREV 5 6 RGXYD1 LRXND7 DAXND7 BBXND7 ESXND7 EYXND7 -KRHA 1 1 CCXND1 -KRIW 5 3 RIWYD1 BLXND7 CYSND7 -KRLX 1 3 RLXYD1 PBZND7 JKLND7 -KRNK 1 3 FCXYD1 RAXND7 GSPND7 -KRSA 6 1 DAXND1 -KSEW 6 5 ATXYD1 LGXYD1 RTXND7 PDTND7 QKWND8 -KSGF 3 5 SGFYD1 EAXND7 PAHND7 VWXND7 HPXND7 -KSGX 6 6 NKXYD1 SOXYD1 EYXND5 VTXND7 VBXND7 HNXND7 -KSHV 4 7 SHVYD1 LZKND4 FWSND7 GRKND7 DGXND7 GWXND7 SRXND7 -KSJT 4 4 SJTYD1 DYXYD2 MAFND7 LBBND7 -KSLC 5 5 ICXYD1 MTXYD1 GJXND4 SLCYD6 SFXND7 -KSMG 4 4 EYXND4 HDXND4 HGXND4 MLBND4 -KSTO 6 4 DAXYD1 BBXYD2 HNXND7 RGXND7 -KSTR 5 2 MTXND1 ICXND1 -KTAE 2 6 TLHYD1 EOXYD2 EVXND4 JAXND7 VAXND7 MOBND7 -KTAR 1 1 BOXND1 -KTBW 2 5 TBWYD1 TPAYD6 MLBND7 AMXND7 BYXND7 -KTFX 5 3 TFXYD1 MSXND7 GGWND7 -KTIR 1 1 ILNND1 -KTOP 3 3 TWXYD1 ICTND7 EAXND7 -KTSA 4 7 INXYD1 SRXYD1 TULYD6 TLXND7 FDRND7 VNXND7 LZKND7 -KTUA 4 2 INXND1 SRXND1 -KTWC 5 3 EMXYD1 IWAND7 YUXND7 -KUNR 3 3 UDXYD1 LNXND7 CYSND7 -KVEF 5 6 ESXYD1 EYXYD2 LASYD6 FSXND7 IWAND7 YUXND7 -KVHW 5 2 MTXND5 ICXND5 -KVUY 1 1 OKXND5 -KWNO 1 1 LWXND5 -PACR 8 7 ABCND7 AKCND7 AHGND7 AIHND7 APDND7 AECND7 ACGND7 -PAFC 8 7 AHGYD3 AIHYD3 ABCYD3 AKCYD3 APDND7 AECND7 ACGND7 -PAFG 9 7 AECYD3 APDYD3 AHGND7 AIHND7 ABCND7 AKCND7 ACGND7 -PAJK 7 7 ACGYD3 AHGND7 AIHND7 ABCND7 AKCND7 APDND7 AECND7 -PGUM 0 1 GUAYD1 -PHFO 0 5 HKIYD3 HKMYD3 HMOYD3 HWAYD3 GUAND7 -PPBP 0 5 HKIND7 HKMND7 HMOND7 HWAND7 GUAND7 -PVRH 8 7 ACGND7 AHGND7 AIHND7 ABCND7 AKCND7 APDND7 AECND7 -TJSJ 2 3 JUAYD3 SJUYD6 MLBND7 diff --git a/RadarServer/build.rcm/cfgbits/data/config/persist/config.xml b/RadarServer/build.rcm/cfgbits/data/config/persist/config.xml deleted file mode 100644 index 457966c7a5..0000000000 --- a/RadarServer/build.rcm/cfgbits/data/config/persist/config.xml +++ /dev/null @@ -1,55 +0,0 @@ - - - - 617 - 1 - KOAX - false - true - true - - radarserver.dropbox - /tmp/sbn/radar - amqp://guest:guest@/edex?brokerlist='tcp://localhost:5672' - - - - koax - 519 - true - true - true - false - TCP_WAN - - - true - 147.18.139.166:4502 - 27 - TCP_WAN - 150 - passwd - - - true - - - diff --git a/RadarServer/build.rcm/cfgbits/data/config/res/logback.xml b/RadarServer/build.rcm/cfgbits/data/config/res/logback.xml deleted file mode 100644 index 6af705e308..0000000000 --- a/RadarServer/build.rcm/cfgbits/data/config/res/logback.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - ${com.raytheon.rcm.logDir}/radarserver.log - - ${com.raytheon.rcm.logDir}/radarserver.%d{yyyy-MM-dd}.log - 3 - - - %-5p %d{HH:mm:ss,SSS} [%t] %c{1}: %m%n - - - - - - - - - \ No newline at end of file diff --git a/RadarServer/build.rcm/cfgbits/data/config/res/quartz.properties b/RadarServer/build.rcm/cfgbits/data/config/res/quartz.properties deleted file mode 100644 index 7721447181..0000000000 --- a/RadarServer/build.rcm/cfgbits/data/config/res/quartz.properties +++ /dev/null @@ -1,9 +0,0 @@ -org.quartz.scheduler.instanceName = CronOTRScheduler -org.quartz.scheduler.instanceId = 1 -org.quartz.scheduler.rmi.export = false -org.quartz.scheduler.rmi.proxy = false - -org.quartz.threadPool.class = org.quartz.simpl.SimpleThreadPool -org.quartz.threadPool.threadCount = 2 - -org.quartz.jobStore.class = org.quartz.simpl.RAMJobStore diff --git a/RadarServer/build.rcm/cfgbits/data/config/start-config b/RadarServer/build.rcm/cfgbits/data/config/start-config deleted file mode 100644 index dfb0b66ee9..0000000000 --- a/RadarServer/build.rcm/cfgbits/data/config/start-config +++ /dev/null @@ -1,36 +0,0 @@ -# Set the following line to the radar ingest endpoint directory for EDEX. -edex_endpoint_arg=@EDEX_HOME@/edex/data/sbn/radar - -# The following line controls the location of log files. See -# data/config/res/log4j.properties for more logging options. -log_dir=$rs_home_dir/data/logs - -# Uncomment and change the following line to choose a Java VM. The -# default is the "java" program that is in the PATH. -#java=/path/to/jre/bin/java -java=/awips2/java/bin/java - -# necessary for fxaAnnounce to be called if rpg goes down -awips2_fxa=/awips2/fxa - -#======= AWIPS 1 Compatibility Configuration ======= -# Only uncomment the following items if you want to use configuration files -# from an existing AWIPS 1 install. - -# Selects the AWIPS 1 configuration system -#configuration_provider=com.raytheon.rcm.config.awips1.Awips1ConfigProvider - -# Root directory containing AWIPS 1 configuration files. It should contain -# "awips/fxa/data/", "data/fxa/", etc. This can be "/" for the actual root -# directory. -#awips1_root=/ - -# Set this to the three-character localization identifier. If unset, the -# FXA_LOCAL_SITE environment variable will be used. -#awips1_site=CCC - -# By default, radar products will be decompressed before they are sent -# to EDEX. Uncomment the following line to turn off decompression. Note -# that when using the standard configuration system, this setting is in -# config.xml. -#decompress_products=no diff --git a/RadarServer/build.rcm/customTargets.xml b/RadarServer/build.rcm/customTargets.xml deleted file mode 100644 index e78fea4997..0000000000 --- a/RadarServer/build.rcm/customTargets.xml +++ /dev/null @@ -1,203 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/RadarServer/build.rcm/pdeprops/build-local.properties b/RadarServer/build.rcm/pdeprops/build-local.properties deleted file mode 100644 index 8a6b0f4b74..0000000000 --- a/RadarServer/build.rcm/pdeprops/build-local.properties +++ /dev/null @@ -1,2 +0,0 @@ -projects.dir=${basedir}/tmp/plugins -pde.build=true diff --git a/RadarServer/build.rcm/properties/build-local.properties b/RadarServer/build.rcm/properties/build-local.properties deleted file mode 100644 index 73f686a9f9..0000000000 --- a/RadarServer/build.rcm/properties/build-local.properties +++ /dev/null @@ -1 +0,0 @@ -deploy.dir=/common/${user.user}/awips/edex diff --git a/RadarServer/build.rcm/substitute.xml b/RadarServer/build.rcm/substitute.xml deleted file mode 100644 index 457e2671b5..0000000000 --- a/RadarServer/build.rcm/substitute.xml +++ /dev/null @@ -1,101 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/RadarServer/com.raytheon.rcm.feature/.project b/RadarServer/com.raytheon.rcm.feature/.project deleted file mode 100644 index c0d12abbdd..0000000000 --- a/RadarServer/com.raytheon.rcm.feature/.project +++ /dev/null @@ -1,17 +0,0 @@ - - - com.raytheon.rcm.feature - - - - - - org.eclipse.pde.FeatureBuilder - - - - - - org.eclipse.pde.FeatureNature - - diff --git a/RadarServer/com.raytheon.rcm.feature/build.properties b/RadarServer/com.raytheon.rcm.feature/build.properties deleted file mode 100644 index 64f93a9f0b..0000000000 --- a/RadarServer/com.raytheon.rcm.feature/build.properties +++ /dev/null @@ -1 +0,0 @@ -bin.includes = feature.xml diff --git a/RadarServer/com.raytheon.rcm.feature/com.raytheon.rcm.feature.ecl b/RadarServer/com.raytheon.rcm.feature/com.raytheon.rcm.feature.ecl deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/RadarServer/com.raytheon.rcm.feature/feature.xml b/RadarServer/com.raytheon.rcm.feature/feature.xml deleted file mode 100644 index c9b862e294..0000000000 --- a/RadarServer/com.raytheon.rcm.feature/feature.xml +++ /dev/null @@ -1,183 +0,0 @@ - - - - - - [Enter Feature Description here.] - - - - [Enter Copyright Description here.] - - - - [Enter License Description here.] - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/RadarServer/com.raytheon.rcm.lib/.classpath b/RadarServer/com.raytheon.rcm.lib/.classpath deleted file mode 100755 index 1fa3e6803d..0000000000 --- a/RadarServer/com.raytheon.rcm.lib/.classpath +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/RadarServer/com.raytheon.rcm.lib/.project b/RadarServer/com.raytheon.rcm.lib/.project deleted file mode 100755 index d699a191ea..0000000000 --- a/RadarServer/com.raytheon.rcm.lib/.project +++ /dev/null @@ -1,28 +0,0 @@ - - - com.raytheon.rcm.lib - - - - - - org.eclipse.jdt.core.javabuilder - - - - - org.eclipse.pde.ManifestBuilder - - - - - org.eclipse.pde.SchemaBuilder - - - - - - org.eclipse.pde.PluginNature - org.eclipse.jdt.core.javanature - - diff --git a/RadarServer/com.raytheon.rcm.lib/.settings/org.eclipse.jdt.core.prefs b/RadarServer/com.raytheon.rcm.lib/.settings/org.eclipse.jdt.core.prefs deleted file mode 100755 index dc75491c13..0000000000 --- a/RadarServer/com.raytheon.rcm.lib/.settings/org.eclipse.jdt.core.prefs +++ /dev/null @@ -1,7 +0,0 @@ -#Wed Apr 08 12:45:51 EDT 2009 -eclipse.preferences.version=1 -org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6 -org.eclipse.jdt.core.compiler.compliance=1.6 -org.eclipse.jdt.core.compiler.problem.assertIdentifier=error -org.eclipse.jdt.core.compiler.problem.enumIdentifier=error -org.eclipse.jdt.core.compiler.source=1.6 diff --git a/RadarServer/com.raytheon.rcm.lib/.settings/org.eclipse.pde.core.prefs b/RadarServer/com.raytheon.rcm.lib/.settings/org.eclipse.pde.core.prefs deleted file mode 100755 index 186d0afcda..0000000000 --- a/RadarServer/com.raytheon.rcm.lib/.settings/org.eclipse.pde.core.prefs +++ /dev/null @@ -1,4 +0,0 @@ -#Wed Apr 08 12:45:51 EDT 2009 -eclipse.preferences.version=1 -pluginProject.extensions=false -resolve.requirebundle=false diff --git a/RadarServer/com.raytheon.rcm.lib/META-INF/MANIFEST.MF b/RadarServer/com.raytheon.rcm.lib/META-INF/MANIFEST.MF deleted file mode 100755 index 5c0ba27696..0000000000 --- a/RadarServer/com.raytheon.rcm.lib/META-INF/MANIFEST.MF +++ /dev/null @@ -1,17 +0,0 @@ -Manifest-Version: 1.0 -Bundle-ManifestVersion: 2 -Bundle-Name: RCM Library Plug-in -Bundle-SymbolicName: com.raytheon.rcm.lib -Bundle-Version: 1.15.0 -Bundle-Vendor: Raytheon -Export-Package: com.raytheon.rcm.ccmreq, - com.raytheon.rcm.config, - com.raytheon.rcm.config.awips1, - com.raytheon.rcm.event, - com.raytheon.rcm.message, - com.raytheon.rcm.mqsrvr, - com.raytheon.rcm.products, - com.raytheon.rcm.request, - com.raytheon.rcm.rmr -Require-Bundle: com.raytheon.uf.common.serialization;bundle-version="1.15.0", - org.slf4j;bundle-version="1.7.5" diff --git a/RadarServer/com.raytheon.rcm.lib/build.properties b/RadarServer/com.raytheon.rcm.lib/build.properties deleted file mode 100755 index 34d2e4d2da..0000000000 --- a/RadarServer/com.raytheon.rcm.lib/build.properties +++ /dev/null @@ -1,4 +0,0 @@ -source.. = src/ -output.. = bin/ -bin.includes = META-INF/,\ - . diff --git a/RadarServer/com.raytheon.rcm.lib/com.raytheon.rcm.lib.ecl b/RadarServer/com.raytheon.rcm.lib/com.raytheon.rcm.lib.ecl deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/RadarServer/com.raytheon.rcm.lib/src/com/raytheon/rcm/ccmreq/CcmRequestDefinition.java b/RadarServer/com.raytheon.rcm.lib/src/com/raytheon/rcm/ccmreq/CcmRequestDefinition.java deleted file mode 100644 index 32a22de8aa..0000000000 --- a/RadarServer/com.raytheon.rcm.lib/src/com/raytheon/rcm/ccmreq/CcmRequestDefinition.java +++ /dev/null @@ -1,76 +0,0 @@ -/** - * This software was developed and / or modified by Raytheon Company, - * pursuant to Contract DG133W-05-CQ-1067 with the US Government. - * - * U.S. EXPORT CONTROLLED TECHNICAL DATA - * This software product contains export-restricted data whose - * export/transfer/disclosure is restricted by U.S. law. Dissemination - * to non-U.S. persons whether in the United States or abroad requires - * an export license or other authorization. - * - * Contractor Name: Raytheon Company - * Contractor Address: 6825 Pine Street, Suite 340 - * Mail Stop B8 - * Omaha, NE 68106 - * 402.291.0100 - * - * See the AWIPS II Master Rights File ("Master Rights File.pdf") for - * further licensing information. - **/ -package com.raytheon.rcm.ccmreq; - -/** - * Command control message requests definition - * - *
- *
- *  SOFTWARE HISTORY
- *  Date         Ticket#    Engineer    Description
- *  ------------ ---------- ----------- --------------------------
- *  2016-05-10   18795      jdynina     Initial creation
- *
- * 
- * - */ - -public class CcmRequestDefinition { - - boolean restartVcp; - int vcp; - int avsetEnabled; - int sailsCount; - - public boolean getRestartVcp() { - return restartVcp; - } - - public int getVcp() { - return vcp; - } - - public int getAvsetEnabled() { - return avsetEnabled; - } - - public int getSailsCount() { - return sailsCount; - } - - public void setRestartVcp(boolean restartVcpFlag) { - restartVcp = restartVcpFlag; - } - - public void setVcp (int newVcp) { - vcp = newVcp; - } - - public void setAvsetEnabled (int avsetEnabledFlag) { - avsetEnabled = avsetEnabledFlag; - } - - public void setSailsCount (int newSailsCount) { - sailsCount = newSailsCount; - } -} - - diff --git a/RadarServer/com.raytheon.rcm.lib/src/com/raytheon/rcm/config/Configuration.java b/RadarServer/com.raytheon.rcm.lib/src/com/raytheon/rcm/config/Configuration.java deleted file mode 100755 index 2467fa4534..0000000000 --- a/RadarServer/com.raytheon.rcm.lib/src/com/raytheon/rcm/config/Configuration.java +++ /dev/null @@ -1,101 +0,0 @@ -/** - * This software was developed and / or modified by Raytheon Company, - * pursuant to Contract DG133W-05-CQ-1067 with the US Government. - * - * U.S. EXPORT CONTROLLED TECHNICAL DATA - * This software product contains export-restricted data whose - * export/transfer/disclosure is restricted by U.S. law. Dissemination - * to non-U.S. persons whether in the United States or abroad requires - * an export license or other authorization. - * - * Contractor Name: Raytheon Company - * Contractor Address: 6825 Pine Street, Suite 340 - * Mail Stop B8 - * Omaha, NE 68106 - * 402.291.0100 - * - * See the AWIPS II Master Rights File ("Master Rights File.pdf") for - * further licensing information. - **/ -package com.raytheon.rcm.config; - -import java.io.IOException; -import java.io.InputStream; -import java.util.Collection; - -import com.raytheon.rcm.message.GraphicProduct.PDB; -import com.raytheon.rcm.request.RpsList; - - -/** - * Encapsulates the parameters that affect the operation of the Radar Server. - * This includes a few site-specific identifiers, a set of records describing - * RPGs that the system can connect to, and a database mapping radar products - * types to WMO headings. - * - *

- * - * Constructs (and potentially updates) a StandardConfig based on - * various configuration files. - * - *

- *
- * SOFTWARE HISTORY
- * Date         Ticket#    Engineer    Description
- * ------------ ---------- ----------- --------------------------
- * ...
- * 2015-09-08   DR 17944   D. Friedman Add RcmResourceProvider
- * 
- */ -public interface Configuration { - public Collection getConfiguredRadarList(); - public RadarConfig getConfigForRadar(String radarID); - public int getPupId(); - public int getRegionCode(); - public String getWmoSiteID(); - public boolean isCollectionEnabled(); - public boolean isTdwrCollectionLimited(); - public String getEdexEndpoint(); - public String getAwips1Endpoint(); - public EndpointConfig getEndpointConfig(); - public ProductDistributionInfo getProductDistInfo(String radarID, PDB pdb); - public ProductDistributionInfo getProductDistInfo(String radarID, int messageCode); - public boolean isDecompressProducts(); - - /** Retrieves the national component of an RPS list for the given radar and - * conditions. - * - *

- * This is not simply a config value retrieval. It can be template - * processing operation in the case of TDWRs. - * - *

- * If an error occurs, it is logged and null is returned. - * - * @param radarID - * @param opMode - * @param vcp - * @param cuts The list of elevation angles for the VCP. This is needed for - * TDWRs. - * @return An RPS list or null if there was an error. The returned value - * must not be modified. - */ - public RpsList getNationalRpsList(String radarID, int opMode, int vcp, int[] cuts); - - public RpsList getLocalRpsList(String radarID, int opMode, int vcp, int[] cuts); - - /* - public RpsList getRecoveryRpsList(String radarID); - public void removeRecoverRpsList(String radarID); - public void storeRecoveryRpsList(String radarID, RpsList rpsList); - */ - public InputStream getPersistedData(String name) throws IOException; - public void putPersistedData(String name, byte[] data) throws IOException; - public void removePersistedData(String name); - - public InputStream getDropInData(String name) throws IOException; - - public void setLocalRpsList(String radarID, RpsList list) throws IOException; - - public RcmResourceProvider getRcmResourceProvider(); -} diff --git a/RadarServer/com.raytheon.rcm.lib/src/com/raytheon/rcm/config/ConfigurationProvider.java b/RadarServer/com.raytheon.rcm.lib/src/com/raytheon/rcm/config/ConfigurationProvider.java deleted file mode 100755 index 44152a5dd1..0000000000 --- a/RadarServer/com.raytheon.rcm.lib/src/com/raytheon/rcm/config/ConfigurationProvider.java +++ /dev/null @@ -1,25 +0,0 @@ -/** - * This software was developed and / or modified by Raytheon Company, - * pursuant to Contract DG133W-05-CQ-1067 with the US Government. - * - * U.S. EXPORT CONTROLLED TECHNICAL DATA - * This software product contains export-restricted data whose - * export/transfer/disclosure is restricted by U.S. law. Dissemination - * to non-U.S. persons whether in the United States or abroad requires - * an export license or other authorization. - * - * Contractor Name: Raytheon Company - * Contractor Address: 6825 Pine Street, Suite 340 - * Mail Stop B8 - * Omaha, NE 68106 - * 402.291.0100 - * - * See the AWIPS II Master Rights File ("Master Rights File.pdf") for - * further licensing information. - **/ -package com.raytheon.rcm.config; - -public interface ConfigurationProvider { - public Configuration getConfiguration(); - public void refresh(); -} diff --git a/RadarServer/com.raytheon.rcm.lib/src/com/raytheon/rcm/config/EndpointConfig.java b/RadarServer/com.raytheon.rcm.lib/src/com/raytheon/rcm/config/EndpointConfig.java deleted file mode 100644 index 702039f0a6..0000000000 --- a/RadarServer/com.raytheon.rcm.lib/src/com/raytheon/rcm/config/EndpointConfig.java +++ /dev/null @@ -1,95 +0,0 @@ -/** - * This software was developed and / or modified by Raytheon Company, - * pursuant to Contract DG133W-05-CQ-1067 with the US Government. - * - * U.S. EXPORT CONTROLLED TECHNICAL DATA - * This software product contains export-restricted data whose - * export/transfer/disclosure is restricted by U.S. law. Dissemination - * to non-U.S. persons whether in the United States or abroad requires - * an export license or other authorization. - * - * Contractor Name: Raytheon Company - * Contractor Address: 6825 Pine Street, Suite 340 - * Mail Stop B8 - * Omaha, NE 68106 - * 402.291.0100 - * - * See the AWIPS II Master Rights File ("Master Rights File.pdf") for - * further licensing information. - **/ -package com.raytheon.rcm.config; - -public class EndpointConfig implements Cloneable { - private static final String DEFAULT_TOPIC = "radarserver.dropbox"; - - private String archiveRoot; - private String connectionURL; - private Boolean prefixPathWithRadar; - private String topic = DEFAULT_TOPIC; - private Integer backlogLimitPerRadar; - - /** - * Provides complete control over RadarServer ActiveMQ broker. Takes - * precedence over radarServerBrokerHost - */ - private String radarServerBrokerURL; - /** Simplified option for setting up ActiveMQ broker. */ - private String radarServerBrokerHost; - - public String getArchiveRoot() { - return archiveRoot; - } - - public void setArchiveRoot(String archiveRoot) { - this.archiveRoot = archiveRoot; - } - - public String getConnectionURL() { - return connectionURL; - } - - public void setConnectionURL(String connectionURL) { - this.connectionURL = connectionURL; - } - - public Boolean getPrefixPathWithRadar() { - return prefixPathWithRadar; - } - - public void setPrefixPathWithRadar(Boolean prefixPathWithRadar) { - this.prefixPathWithRadar = prefixPathWithRadar; - } - - public String getTopic() { - return topic; - } - - public void setTopic(String topic) { - this.topic = topic; - } - - public Integer getBacklogLimitPerRadar() { - return backlogLimitPerRadar; - } - - public void setBacklogLimitPerRadar(Integer backlogLimit) { - this.backlogLimitPerRadar = backlogLimit; - } - - public String getRadarServerBrokerURL() { - return radarServerBrokerURL; - } - - public void setRadarServerBrokerURL(String radarServerBrokerURL) { - this.radarServerBrokerURL = radarServerBrokerURL; - } - - public String getRadarServerBrokerHost() { - return radarServerBrokerHost; - } - - public void setRadarServerBrokerHost(String radarServerBrokerHost) { - this.radarServerBrokerHost = radarServerBrokerHost; - } - -} diff --git a/RadarServer/com.raytheon.rcm.lib/src/com/raytheon/rcm/config/Globals.java b/RadarServer/com.raytheon.rcm.lib/src/com/raytheon/rcm/config/Globals.java deleted file mode 100755 index 7c84455de8..0000000000 --- a/RadarServer/com.raytheon.rcm.lib/src/com/raytheon/rcm/config/Globals.java +++ /dev/null @@ -1,39 +0,0 @@ -/** - * This software was developed and / or modified by Raytheon Company, - * pursuant to Contract DG133W-05-CQ-1067 with the US Government. - * - * U.S. EXPORT CONTROLLED TECHNICAL DATA - * This software product contains export-restricted data whose - * export/transfer/disclosure is restricted by U.S. law. Dissemination - * to non-U.S. persons whether in the United States or abroad requires - * an export license or other authorization. - * - * Contractor Name: Raytheon Company - * Contractor Address: 6825 Pine Street, Suite 340 - * Mail Stop B8 - * Omaha, NE 68106 - * 402.291.0100 - * - * See the AWIPS II Master Rights File ("Master Rights File.pdf") for - * further licensing information. - **/ -package com.raytheon.rcm.config; - -import javax.xml.bind.annotation.XmlAccessType; -import javax.xml.bind.annotation.XmlAccessorType; -import javax.xml.bind.annotation.XmlRootElement; -import javax.xml.bind.annotation.XmlType; - -@XmlRootElement(name="config") -@XmlType(name="config",propOrder={}) -@XmlAccessorType(XmlAccessType.PUBLIC_MEMBER) -public class Globals { - public int pupID; - public Integer regionCode; - public String wmoSiteID; - public boolean collectionEnabled; - public boolean tdwrCollectionLimited; - public boolean decompressProducts; - public String edexEndpoint; - public EndpointConfig endpointConfig; -} diff --git a/RadarServer/com.raytheon.rcm.lib/src/com/raytheon/rcm/config/LinkResource.java b/RadarServer/com.raytheon.rcm.lib/src/com/raytheon/rcm/config/LinkResource.java deleted file mode 100755 index 38c6bb19a3..0000000000 --- a/RadarServer/com.raytheon.rcm.lib/src/com/raytheon/rcm/config/LinkResource.java +++ /dev/null @@ -1,124 +0,0 @@ -/** - * This software was developed and / or modified by Raytheon Company, - * pursuant to Contract DG133W-05-CQ-1067 with the US Government. - * - * U.S. EXPORT CONTROLLED TECHNICAL DATA - * This software product contains export-restricted data whose - * export/transfer/disclosure is restricted by U.S. law. Dissemination - * to non-U.S. persons whether in the United States or abroad requires - * an export license or other authorization. - * - * Contractor Name: Raytheon Company - * Contractor Address: 6825 Pine Street, Suite 340 - * Mail Stop B8 - * Omaha, NE 68106 - * 402.291.0100 - * - * See the AWIPS II Master Rights File ("Master Rights File.pdf") for - * further licensing information. - **/ -package com.raytheon.rcm.config; - -import javax.xml.bind.annotation.XmlAccessType; -import javax.xml.bind.annotation.XmlAccessorType; -import javax.xml.bind.annotation.XmlType; - -/** - * Describes how to connect to an RPG. - * - *

- * Currently only supports TCP connections. - *

- * The linkAddress property is a String of the form - * host:port. - * */ -@XmlType(name="link",propOrder={}) -@XmlAccessorType(XmlAccessType.PROPERTY) -public class LinkResource implements Cloneable { - - protected boolean dedicated; - - /* TODO: maxRpsListSize as an optional value? The max size seems to be - * determined by the PUP ID, but AWIPS 1 makes it part of the link resource - * record. - */ - protected LinkType linkType; - protected String comment; - - protected String linkAddress; - - protected int linkIndex; - protected String tcmPassword; - - // For dedicated links - protected int maxRpsListSize = -1; - - // For dial links - protected String userPassword; - protected String portPassword; - - // TODO: overrideDisconnect ... or does it go in RadarConfig? - - public LinkType getLinkType() { - return linkType; - } - public void setLinkType(LinkType linkType) { - this.linkType = linkType; - } - public String getComment() { - return comment; - } - public void setComment(String comment) { - this.comment = comment; - } - public int getLinkIndex() { - return linkIndex; - } - public void setLinkIndex(int linkIndex) { - this.linkIndex = linkIndex; - } - public String getTcmPassword() { - return tcmPassword; - } - public void setTcmPassword(String tcmPassword) { - this.tcmPassword = tcmPassword; - } - public String getLinkAddress() { - return linkAddress; - } - public void setLinkAddress(String linkAddress) { - this.linkAddress = linkAddress; - } - public int getMaxRpsListSize() { - return maxRpsListSize; - } - public void setMaxRpsListSize(int maxRpsListSize) { - this.maxRpsListSize = maxRpsListSize; - } - public String getUserPassword() { - return userPassword; - } - public void setUserPassword(String userPassword) { - this.userPassword = userPassword; - } - public String getPortPassword() { - return portPassword; - } - public void setPortPassword(String portPassword) { - this.portPassword = portPassword; - } - public boolean isDedicated() { - return dedicated; - } - public void setDedicated(boolean isDedicated) { - this.dedicated = isDedicated; - } - - public LinkResource clone() { - try { - return (LinkResource) super.clone(); - } catch (CloneNotSupportedException e) { - throw new UnsupportedOperationException(e); - } - } -} diff --git a/RadarServer/com.raytheon.rcm.lib/src/com/raytheon/rcm/config/LinkType.java b/RadarServer/com.raytheon.rcm.lib/src/com/raytheon/rcm/config/LinkType.java deleted file mode 100755 index 653887dbe1..0000000000 --- a/RadarServer/com.raytheon.rcm.lib/src/com/raytheon/rcm/config/LinkType.java +++ /dev/null @@ -1,24 +0,0 @@ -/** - * This software was developed and / or modified by Raytheon Company, - * pursuant to Contract DG133W-05-CQ-1067 with the US Government. - * - * U.S. EXPORT CONTROLLED TECHNICAL DATA - * This software product contains export-restricted data whose - * export/transfer/disclosure is restricted by U.S. law. Dissemination - * to non-U.S. persons whether in the United States or abroad requires - * an export license or other authorization. - * - * Contractor Name: Raytheon Company - * Contractor Address: 6825 Pine Street, Suite 340 - * Mail Stop B8 - * Omaha, NE 68106 - * 402.291.0100 - * - * See the AWIPS II Master Rights File ("Master Rights File.pdf") for - * further licensing information. - **/ -package com.raytheon.rcm.config; - -public enum LinkType { - TCP_WAN, X25_DIAL -} diff --git a/RadarServer/com.raytheon.rcm.lib/src/com/raytheon/rcm/config/MutableConfiguration.java b/RadarServer/com.raytheon.rcm.lib/src/com/raytheon/rcm/config/MutableConfiguration.java deleted file mode 100755 index 7de193dffd..0000000000 --- a/RadarServer/com.raytheon.rcm.lib/src/com/raytheon/rcm/config/MutableConfiguration.java +++ /dev/null @@ -1,47 +0,0 @@ -/** - * This software was developed and / or modified by Raytheon Company, - * pursuant to Contract DG133W-05-CQ-1067 with the US Government. - * - * U.S. EXPORT CONTROLLED TECHNICAL DATA - * This software product contains export-restricted data whose - * export/transfer/disclosure is restricted by U.S. law. Dissemination - * to non-U.S. persons whether in the United States or abroad requires - * an export license or other authorization. - * - * Contractor Name: Raytheon Company - * Contractor Address: 6825 Pine Street, Suite 340 - * Mail Stop B8 - * Omaha, NE 68106 - * 402.291.0100 - * - * See the AWIPS II Master Rights File ("Master Rights File.pdf") for - * further licensing information. - **/ -package com.raytheon.rcm.config; - -import com.raytheon.rcm.event.RadarEventListener; - -/** - * Interface to configurations that can be changed at runtime. - * - *

- * 
- * SOFTWARE HISTORY
- * Date         Ticket#    Engineer    Description
- * ------------ ---------- ----------- --------------------------
- * ...
- * 2014-02-03   DR 14762   D. Friedman Support arbitrary config files.
- * 
- * - */ -public interface MutableConfiguration { - public RadarEventListener getConfigurationEventTarget(); - public void setConfigurationEventTarget(RadarEventListener configurationEventTarget); - - // TODO: need to return usable error messages... - public boolean setGlobalConfig(Globals globals); - public boolean setRadarConfig(RadarConfig rc); - public boolean addRadarConfig(RadarConfig rc); - public boolean removeRadarConfig(String radarID); - public boolean storeConfigFile(String name, byte[] data); -} diff --git a/RadarServer/com.raytheon.rcm.lib/src/com/raytheon/rcm/config/ProductDistInfoDB.java b/RadarServer/com.raytheon.rcm.lib/src/com/raytheon/rcm/config/ProductDistInfoDB.java deleted file mode 100755 index cfc43114b4..0000000000 --- a/RadarServer/com.raytheon.rcm.lib/src/com/raytheon/rcm/config/ProductDistInfoDB.java +++ /dev/null @@ -1,28 +0,0 @@ -/** - * This software was developed and / or modified by Raytheon Company, - * pursuant to Contract DG133W-05-CQ-1067 with the US Government. - * - * U.S. EXPORT CONTROLLED TECHNICAL DATA - * This software product contains export-restricted data whose - * export/transfer/disclosure is restricted by U.S. law. Dissemination - * to non-U.S. persons whether in the United States or abroad requires - * an export license or other authorization. - * - * Contractor Name: Raytheon Company - * Contractor Address: 6825 Pine Street, Suite 340 - * Mail Stop B8 - * Omaha, NE 68106 - * 402.291.0100 - * - * See the AWIPS II Master Rights File ("Master Rights File.pdf") for - * further licensing information. - **/ -package com.raytheon.rcm.config; - -import com.raytheon.rcm.message.GraphicProduct; - -// Should be considered to be (sub) package access -public abstract class ProductDistInfoDB { - public abstract ProductDistributionInfo getProductDistInfo(RadarConfig rc, - int messageCode, GraphicProduct.PDB pdb); -} diff --git a/RadarServer/com.raytheon.rcm.lib/src/com/raytheon/rcm/config/ProductDistributionInfo.java b/RadarServer/com.raytheon.rcm.lib/src/com/raytheon/rcm/config/ProductDistributionInfo.java deleted file mode 100755 index df80709bf1..0000000000 --- a/RadarServer/com.raytheon.rcm.lib/src/com/raytheon/rcm/config/ProductDistributionInfo.java +++ /dev/null @@ -1,71 +0,0 @@ -/** - * This software was developed and / or modified by Raytheon Company, - * pursuant to Contract DG133W-05-CQ-1067 with the US Government. - * - * U.S. EXPORT CONTROLLED TECHNICAL DATA - * This software product contains export-restricted data whose - * export/transfer/disclosure is restricted by U.S. law. Dissemination - * to non-U.S. persons whether in the United States or abroad requires - * an export license or other authorization. - * - * Contractor Name: Raytheon Company - * Contractor Address: 6825 Pine Street, Suite 340 - * Mail Stop B8 - * Omaha, NE 68106 - * 402.291.0100 - * - * See the AWIPS II Master Rights File ("Master Rights File.pdf") for - * further licensing information. - **/ -package com.raytheon.rcm.config; - -/** - * Describes a partial WMO heading to be used when send a radar product. The - * rest comes from the global "region code" in - * {@link com.raytheon.rcm.config.Configuration} and the actual product's timestamp. - * - */ -public class ProductDistributionInfo { - protected String nnn; - protected String ttaai; - - public ProductDistributionInfo() { - // TODO: non-null values not valid... - } - - public ProductDistributionInfo(String nnn, String ttaai) { - this.nnn = nnn; - this.ttaai = ttaai; - } - - public String getNnn() { - return nnn; - } - - public void setNnn(String nnn) { - this.nnn = nnn; - } - - public String getTtaai() { - return ttaai; - } - - public void setTtaai(String ttaai) { - this.ttaai = ttaai; - } - - @Override - public boolean equals(Object obj) { - try { - ProductDistributionInfo other = (ProductDistributionInfo) obj; - return nnn.equals(other.nnn) && ttaai.equals(other.ttaai); - } catch (ClassCastException e) { - return false; - } - } - - @Override - public int hashCode() { - return nnn.hashCode() ^ ttaai.hashCode(); - } -} diff --git a/RadarServer/com.raytheon.rcm.lib/src/com/raytheon/rcm/config/RadarConfig.java b/RadarServer/com.raytheon.rcm.lib/src/com/raytheon/rcm/config/RadarConfig.java deleted file mode 100755 index 46ed760533..0000000000 --- a/RadarServer/com.raytheon.rcm.lib/src/com/raytheon/rcm/config/RadarConfig.java +++ /dev/null @@ -1,185 +0,0 @@ -/** - * This software was developed and / or modified by Raytheon Company, - * pursuant to Contract DG133W-05-CQ-1067 with the US Government. - * - * U.S. EXPORT CONTROLLED TECHNICAL DATA - * This software product contains export-restricted data whose - * export/transfer/disclosure is restricted by U.S. law. Dissemination - * to non-U.S. persons whether in the United States or abroad requires - * an export license or other authorization. - * - * Contractor Name: Raytheon Company - * Contractor Address: 6825 Pine Street, Suite 340 - * Mail Stop B8 - * Omaha, NE 68106 - * 402.291.0100 - * - * See the AWIPS II Master Rights File ("Master Rights File.pdf") for - * further licensing information. - **/ -package com.raytheon.rcm.config; - -import javax.xml.bind.annotation.XmlAccessType; -import javax.xml.bind.annotation.XmlAccessorType; -import javax.xml.bind.annotation.XmlElement; -import javax.xml.bind.annotation.XmlElementWrapper; -import javax.xml.bind.annotation.XmlRootElement; -import javax.xml.bind.annotation.XmlType; - -@XmlRootElement -@XmlType(name = "radar", propOrder = {}) -@XmlAccessorType(XmlAccessType.NONE) -/* - * Encapsulates the parameters needed to use a RPG. - * - * The setters should not be considered public. - */ -public class RadarConfig implements Cloneable, Comparable { - @XmlElement - private String radarID; - - @XmlElement - private int nexradID; - - @XmlElement - private boolean enabled = true; - - @XmlElement - private boolean dedicated; - - @XmlElement - private boolean collectionEnabled; - - @XmlElement - private boolean sendEnvironmentalData; - - @XmlElement(defaultValue = "TCP_WAN") - private LinkType linkType; - - @XmlElementWrapper(name = "links") - @XmlElement(name = "link") - private LinkResource[] linkResources; - - /** - * Indicates that the product availability field in GSMs is useful. On test - * systems (those with a real RDA), that field always reports a failure. - */ - @XmlElement - private boolean productAvailabilityFieldUsable; - - /* - * Usually, isDedicated() implies that the connection always active and - * not-isDedicated implies the the connection is on demand. There is - * currently no need to change this policy. The point of this is to allow - * disabling a RPG connection. - */ - public static final int ACTIVATE_NEVER = 0; - - public static final int ACTIVATE_ALWAYS = 1; - - public static final int ACTIVATE_ON_DEMAND = 2; - - public String getRadarID() { - return radarID; - } - - public void setRadarID(String radarID) { - this.radarID = radarID; - } - - public int getNexradID() { - return nexradID; - } - - public void setNexradID(int nexradID) { - this.nexradID = nexradID; - } - - public boolean isEnabled() { - return enabled; - } - - public void setEnabled(boolean enabled) { - this.enabled = enabled; - } - - public boolean isDedicated() { - return dedicated; - } - - public void setDedicated(boolean dedicated) { - this.dedicated = dedicated; - } - - public boolean isCollectionEnabled() { - return collectionEnabled; - } - - public void setCollectionEnabled(boolean collectionEnabled) { - this.collectionEnabled = collectionEnabled; - } - - public boolean isSendEnvironmentalData() { - return sendEnvironmentalData; - } - - public void setSendEnvironmentalData(boolean sendEnvironmentalData) { - this.sendEnvironmentalData = sendEnvironmentalData; - } - - public LinkType getLinkType() { - return linkType; - } - - public void setLinkType(LinkType linkType) { - this.linkType = linkType; - } - - public LinkResource[] getLinkResources() { - return linkResources; - } - - public void setLinkResources(LinkResource[] linkResources) { - this.linkResources = linkResources; - } - - public int getActivation() { - return enabled ? (dedicated ? ACTIVATE_ALWAYS : ACTIVATE_ON_DEMAND) - : ACTIVATE_NEVER; - } - - public boolean isProductAvailabilityFieldUsable() { - return productAvailabilityFieldUsable; - } - - public void setProductAvailabilityFieldUsable( - boolean productAvailabilityFieldUsable) { - this.productAvailabilityFieldUsable = productAvailabilityFieldUsable; - } - - public RadarConfig duplicate() { - RadarConfig other; - try { - other = (RadarConfig) clone(); - } catch (CloneNotSupportedException e) { - throw new UnsupportedOperationException(e); - } - if (linkResources != null) { - other.linkResources = new LinkResource[linkResources.length]; - for (int i = 0; i < other.linkResources.length; ++i) - other.linkResources[i] = (LinkResource) linkResources[i] - .clone(); - } - return other; - } - - /* - * (non-Javadoc) - * - * @see java.lang.Comparable#compareTo(java.lang.Object) - */ - @Override - public int compareTo(RadarConfig o) { - return this.radarID.compareTo(o.radarID); - } -} diff --git a/RadarServer/com.raytheon.rcm.lib/src/com/raytheon/rcm/config/RadarType.java b/RadarServer/com.raytheon.rcm.lib/src/com/raytheon/rcm/config/RadarType.java deleted file mode 100755 index d220e872b1..0000000000 --- a/RadarServer/com.raytheon.rcm.lib/src/com/raytheon/rcm/config/RadarType.java +++ /dev/null @@ -1,30 +0,0 @@ -/** - * This software was developed and / or modified by Raytheon Company, - * pursuant to Contract DG133W-05-CQ-1067 with the US Government. - * - * U.S. EXPORT CONTROLLED TECHNICAL DATA - * This software product contains export-restricted data whose - * export/transfer/disclosure is restricted by U.S. law. Dissemination - * to non-U.S. persons whether in the United States or abroad requires - * an export license or other authorization. - * - * Contractor Name: Raytheon Company - * Contractor Address: 6825 Pine Street, Suite 340 - * Mail Stop B8 - * Omaha, NE 68106 - * 402.291.0100 - * - * See the AWIPS II Master Rights File ("Master Rights File.pdf") for - * further licensing information. - **/ -package com.raytheon.rcm.config; - -/* Notion of a radar's type was never really well defined. It does - * not seem like a good idea for general code to be dependent on radar - * type. The details are hidden away in the configuration system. Both - * the awips1 and std packages now use RadarType, so the definitions are - * here and public, but they should not be used outside of config.* - */ -public enum RadarType { - WSR, TDWR, ASR, ARSR -} diff --git a/RadarServer/com.raytheon.rcm.lib/src/com/raytheon/rcm/config/RcmResourceProvider.java b/RadarServer/com.raytheon.rcm.lib/src/com/raytheon/rcm/config/RcmResourceProvider.java deleted file mode 100644 index bf537eb635..0000000000 --- a/RadarServer/com.raytheon.rcm.lib/src/com/raytheon/rcm/config/RcmResourceProvider.java +++ /dev/null @@ -1,78 +0,0 @@ -package com.raytheon.rcm.config; - -import java.io.InputStream; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -/** - * This provides a resource to access configuration files that may exist - * locally (when running in RadarServer) or in Localization (when running - * in CAVE. - * - *
- *
- * SOFTWARE HISTORY
- * Date         Ticket#    Engineer    Description
- * ------------ ---------- ----------- --------------------------
- * 2015-09-08   DR 17944   D. Friedman Initial creation
- * 
- */ -public abstract class RcmResourceProvider { - private static RcmResourceProvider instance; - - private Map> resourceChangeListeners; - - public abstract InputStream getResourceAsStream(String resource)/* throws IOException*/; - - public void addResourceChangeListener(String resource, Runnable callback) { - synchronized (this) { - if (resourceChangeListeners == null) { - resourceChangeListeners = new HashMap>(); - } - List list = resourceChangeListeners.get(resource); - if (list == null) { - list = new ArrayList(); - resourceChangeListeners.put(resource, list); - } - list.add(callback); - } - } - - public void removeResourceChangeListener(String resource, Runnable callback) { - synchronized (this) { - if (resourceChangeListeners != null) { - List list = resourceChangeListeners.get(resource); - if (list != null) { - list.remove(callback); - } - } - } - } - - protected void notifyResourceChanged(String resource) { - ArrayList runnables = null; - synchronized (this) { - if (resourceChangeListeners != null) { - List list = resourceChangeListeners.get(resource); - if (list != null) { - runnables = new ArrayList(list); - } - } - } - if (runnables != null) { - for (Runnable r : runnables) { - r.run(); - } - } - } - - public static void setInstance(RcmResourceProvider instance) { - RcmResourceProvider.instance = instance; - } - - public static RcmResourceProvider getInstance() { - return instance; - } -} diff --git a/RadarServer/com.raytheon.rcm.lib/src/com/raytheon/rcm/config/RcmUtil.java b/RadarServer/com.raytheon.rcm.lib/src/com/raytheon/rcm/config/RcmUtil.java deleted file mode 100755 index 5f4c954ec6..0000000000 --- a/RadarServer/com.raytheon.rcm.lib/src/com/raytheon/rcm/config/RcmUtil.java +++ /dev/null @@ -1,86 +0,0 @@ -/** - * This software was developed and / or modified by Raytheon Company, - * pursuant to Contract DG133W-05-CQ-1067 with the US Government. - * - * U.S. EXPORT CONTROLLED TECHNICAL DATA - * This software product contains export-restricted data whose - * export/transfer/disclosure is restricted by U.S. law. Dissemination - * to non-U.S. persons whether in the United States or abroad requires - * an export license or other authorization. - * - * Contractor Name: Raytheon Company - * Contractor Address: 6825 Pine Street, Suite 340 - * Mail Stop B8 - * Omaha, NE 68106 - * 402.291.0100 - * - * See the AWIPS II Master Rights File ("Master Rights File.pdf") for - * further licensing information. - **/ -package com.raytheon.rcm.config; - -import java.io.ByteArrayInputStream; -import java.io.IOException; -import java.util.Scanner; - -import javax.xml.bind.JAXBException; - -import com.raytheon.rcm.config.awips1.Awips1RpsListUtil; -import com.raytheon.rcm.request.Request; -import com.raytheon.rcm.request.RpsList; -import com.raytheon.rcm.request.RpsXml; -import com.raytheon.uf.common.serialization.SerializationException; - - -/** - * Utility class for RCM. - * - *
- * 
- * SOFTWARE HISTORY
- * 
- * Date         Ticket#    Engineer    Description
- * ------------ ---------- ----------- --------------------------
- * Jun 5, 2015  4498       nabowle     Use JAXBManager to unmarshal. Rename to
- *                                     RcmUtil.
- * Oct 15,2015  17789      wkwock      Change max TDWR radar ID to 3099
- * 
- * 
- * - * @version 1.0 - */ -public class RcmUtil { - - public static RadarType getRadarType(RadarConfig rc) { - int id = rc.getNexradID(); - if (id >= 3000 && id <= 3099) // TODO: 3099 is the current max, but... - return RadarType.TDWR; - else if (id >= 4000 && id < 4050) // TODO: may be 4050 - return RadarType.ASR; - else if (id >= 4100 && id < 5000) - return RadarType.ARSR; - else - return RadarType.WSR; - } - - public static RpsList parseRpsListData(byte[] data, int opModeHint, - int vcpHint) throws IOException, JAXBException { - ByteArrayInputStream bis = new ByteArrayInputStream(data); - RpsList rpsList; - if (new String(data, 0, 8).equals("RPS List")) { - Request[] reqs = null; - Scanner s = new Scanner(bis); - reqs = Awips1RpsListUtil.parse(s); - rpsList = new RpsList(opModeHint, vcpHint, reqs); - } else { - try { - rpsList = (RpsList) RpsXml.getJAXBManager() - .unmarshalFromInputStream(bis); - } catch (SerializationException e) { - throw new JAXBException(e); - } - } - return rpsList; - } - -} diff --git a/RadarServer/com.raytheon.rcm.lib/src/com/raytheon/rcm/config/StandardProductDistInfoDB.java b/RadarServer/com.raytheon.rcm.lib/src/com/raytheon/rcm/config/StandardProductDistInfoDB.java deleted file mode 100755 index 060cd82b99..0000000000 --- a/RadarServer/com.raytheon.rcm.lib/src/com/raytheon/rcm/config/StandardProductDistInfoDB.java +++ /dev/null @@ -1,148 +0,0 @@ -/** - * This software was developed and / or modified by Raytheon Company, - * pursuant to Contract DG133W-05-CQ-1067 with the US Government. - * - * U.S. EXPORT CONTROLLED TECHNICAL DATA - * This software product contains export-restricted data whose - * export/transfer/disclosure is restricted by U.S. law. Dissemination - * to non-U.S. persons whether in the United States or abroad requires - * an export license or other authorization. - * - * Contractor Name: Raytheon Company - * Contractor Address: 6825 Pine Street, Suite 340 - * Mail Stop B8 - * Omaha, NE 68106 - * 402.291.0100 - * - * See the AWIPS II Master Rights File ("Master Rights File.pdf") for - * further licensing information. - **/ -package com.raytheon.rcm.config; - -import java.util.HashMap; -import java.util.Map; - -import com.raytheon.rcm.message.GraphicProduct.PDB; -import com.raytheon.rcm.products.RadarProduct.Param; - -/** - * Simple implementation of ProductDistInfoDB that can represent the AWIPS 1 - * prodList.txt and tdwrProdList.txt. - *

- * This should only be use directly within the ...config.* sub-packages. - *

- * Implementation note: Does not use MessageInfo to determine if a product - * is elevation based. Whether or not the elevation angle is specified in - * the matching criteria. - */ -public class StandardProductDistInfoDB extends ProductDistInfoDB { - - protected static class SimpleMatch { - public int messageCode; - public Param matchParam; - public int minValue; - public int maxValue; - - public SimpleMatch(int messageCode) { - this.messageCode = messageCode; - } - - /** - * NOTE: If matchParam is Param.CFC_BITMAP, minValue and maxValue - * refer to the segment number (not the bitmap value). - */ - public SimpleMatch(int messageCode, Param matchParam, int minValue, int maxValue) { - if (matchParam != null && matchParam != Param.ELEVATION && - matchParam != Param.CFC_BITMAP) - throw new IllegalArgumentException("Unsupported parameter " - + matchParam); - this.messageCode = messageCode; - this.matchParam = matchParam; - this.minValue = minValue; - this.maxValue = maxValue; - } - - @Override - public boolean equals(Object obj) { - try { - SimpleMatch other = (SimpleMatch) obj; - return messageCode == other.messageCode - && matchParam == other.matchParam - && minValue == other.minValue - && maxValue == other.maxValue; - } catch (ClassCastException e) { - return false; - } - } - - @Override - public int hashCode() { - int result = matchParam != null ? matchParam.hashCode() : 0; - result = (result * 31) ^ minValue; - result = (result * 31) ^ maxValue; - result = (result * 31) ^ messageCode; - return result; - } - } - - HashMap matches = new HashMap(); - - @Override - public ProductDistributionInfo getProductDistInfo(RadarConfig rc, - int messageCode, PDB pdb) { - for (Map.Entry e : matches - .entrySet()) { - SimpleMatch match = e.getKey(); - if (match.messageCode == messageCode) { - boolean matched = false; - if (match.matchParam != null) { - if (pdb != null) { - int value; - if (match.matchParam == Param.ELEVATION) - value = pdb.getElevationAngle(); - else if (match.matchParam == Param.CFC_BITMAP) - value = pdb.getElevationSegmentNumber(); - else if (match.matchParam == Param.TIME_SPAN_MINUTES) - value = pdb.getTimeSpan(); - else - continue; - matched = value >= match.minValue && - value <= match.maxValue; - } - } else - matched = true; - - if (matched) - return e.getValue(); - } - } - return null; - } - - /* - * The following two methods are all that are needed now for the current - * AWIPS 1 prodList.txt and tdwrProdList.txt files. If there are - * conflicting terms, an IllegalArgumentException will be thrown which means - * a redesign is needed. - */ - public void add(int messageCode, ProductDistributionInfo info) { - add(new SimpleMatch(messageCode), info); - } - - public void add(int messageCode, Param param, int minValue, int maxValue, - ProductDistributionInfo info) { - add(new SimpleMatch(messageCode, param, minValue, maxValue), info); - } - - protected void add(SimpleMatch match, ProductDistributionInfo info) { - ProductDistributionInfo existing = matches.get(match); - if (existing != null) { - if (existing.equals(info)) - return; - else - throw new IllegalArgumentException( - "Attempted to add conflicting information to the product distribution table."); - } else - matches.put(match, info); - } -} diff --git a/RadarServer/com.raytheon.rcm.lib/src/com/raytheon/rcm/config/awips1/Awips1RpsListUtil.java b/RadarServer/com.raytheon.rcm.lib/src/com/raytheon/rcm/config/awips1/Awips1RpsListUtil.java deleted file mode 100644 index 4b6d3cd66f..0000000000 --- a/RadarServer/com.raytheon.rcm.lib/src/com/raytheon/rcm/config/awips1/Awips1RpsListUtil.java +++ /dev/null @@ -1,317 +0,0 @@ -/** - * This software was developed and / or modified by Raytheon Company, - * pursuant to Contract DG133W-05-CQ-1067 with the US Government. - * - * U.S. EXPORT CONTROLLED TECHNICAL DATA - * This software product contains export-restricted data whose - * export/transfer/disclosure is restricted by U.S. law. Dissemination - * to non-U.S. persons whether in the United States or abroad requires - * an export license or other authorization. - * - * Contractor Name: Raytheon Company - * Contractor Address: 6825 Pine Street, Suite 340 - * Mail Stop B8 - * Omaha, NE 68106 - * 402.291.0100 - * - * See the AWIPS II Master Rights File ("Master Rights File.pdf") for - * further licensing information. - **/ -package com.raytheon.rcm.config.awips1; - -import java.util.ArrayList; -import java.util.NoSuchElementException; -import java.util.Scanner; -import java.util.regex.Matcher; -import java.util.regex.Pattern; - -import com.raytheon.rcm.config.RadarConfig; -import com.raytheon.rcm.config.RadarType; -import com.raytheon.rcm.config.RcmUtil; -import com.raytheon.rcm.message.GSM; -import com.raytheon.rcm.request.Request; -import com.raytheon.rcm.request.RpsList; - -/** - * Utility class for dealing with AWIPS 1 RPS lists. - * - *

- *  SOFTWARE HISTORY
- *
- *  Date         Ticket#     Engineer    Description
- *  ------------ ----------  ----------- --------------------------
- *  2009                     dfriedma    Initial version
- *  2012-04-30   DR 14908    D. Friedman Require radar name for valid RPS
- *                                       file names.
- *  2015-06-10   4498       nabowle     Rename Util->RcmUtil
- *  2017-02-06   DR 19764   jdynina     Account for LR being other than 0.6 in TDWR Bld 2
- * 
- * - */ -public class Awips1RpsListUtil { - // is 'maint' an opMode?? - public static class Selector { - public String radar; // null === national - - public int opMode; - - public int vcp; - - public String comment; // extra stuff at end - } - - public static Request[] parse(Scanner s) { - ArrayList requests = new ArrayList(); - - // Ref ProductRequestList.C : ProductRequestList::readList - final int MAX_NAME_FIELD_SIZE = 41; - - // Skip the first five lines - for (int i = 0; i < 5 && s.hasNextLine(); ++i) - s.nextLine(); - - while (s.hasNextLine()) { - String line = s.nextLine(); - int pos; - if ((pos = line.indexOf('\t')) != -1) - line = line.substring(pos + 1); - else - line = line.substring(Math.min(MAX_NAME_FIELD_SIZE, - line.length())); - Scanner ls = new Scanner(line); - try { - Request req = new Request(); - String mne = ls.next(); - req.selectCurrent(); - req.count = Request.CONTINUOUS; - req.comment = mne; - req.productCode = ls.nextShort(); - /* int levels = */ls.nextInt(); // not used - /* int res = */ls.nextInt(); // not used - /* String layerCode = */ls.next(); // not used - int elev = ls.nextInt(); - /* int contourInterval = */ls.nextInt(); // only for (obsolete?) - // echo tops contour - req.highPriority = ls.nextInt() != 0; - - /* - * The next two fields tend to be smushed together. Scanner - * cannot handle this. - */ - String field = ls.next(); - try { - if (Character.isLetter(field.charAt(field.length() - 1))) { - String f1 = field.substring(0, field.length() - 1); - req.interval = Short.parseShort(f1); - req.mapRequested = field.charAt(field.length() - 1) == 'Y'; - field = null; - } - } catch (RuntimeException e) { - throw new NoSuchElementException(e.toString()); - } - if (field != null) { - req.interval = Short.parseShort(field); - req.mapRequested = ls.next().equals("Y"); - } - - // The remaining fields are optional - - // layers only used for product 137 - int lowerLayer = -1; - int upperLayer = -1; - - boolean multiCuts = false; - - if (ls.hasNext()) - lowerLayer = ls.nextInt(); - if (ls.hasNext()) - upperLayer = ls.nextInt(); - - if (ls.hasNext()) - multiCuts = ls.next().equals("Y"); - - if (elev != -1) { // TODO: replace with logic for with ones - // actually use elevation.. - if (multiCuts) - req.selectAllElevations(elev & 0x1fff); - else { - // The AWIPS 1 code just sets this directly. - req.pdw22 = elev; - } - } - - // also ProductRequestEntry::checkUpLowLayer - - int endHour = -1; // TODO: these too... - int timeSpan = 0; - - if (ls.hasNext()) - endHour = ls.nextInt(); // TODO: these too... - if (ls.hasNext()) - timeSpan = ls.nextInt(); - - // copied from ProductRequestList::readList - if (endHour < -1 || endHour > 1440) - endHour = -1; - if (timeSpan < 0 || timeSpan > 1440) - timeSpan = 0; - - switch (req.productCode) { - case 56: - req.setStormSpeed(-1); - break; - case 137: - req.setBottomAltitude(lowerLayer); - req.setTopAltitude(upperLayer); - break; - // TODO: copied from AWIPS1; not verified - case 31: - case 150: - case 151: - case 173: - req.setTimeSpan(timeSpan); - req.setEndHour(endHour); - break; - case 35: - case 36: - case 37: - case 38: - case 41: - case 57: - case 58: - case 59: - case 61: - case 141: - case 149: - /* - * On the SPG, these products have a "mini-volume number" - * parameter. It seems to be safe to set this for the RPG - * even though it is not used. - */ - req.setMiniVolume(lowerLayer); - break; - default: - // nothing - } - - requests.add(req); - } catch (NoSuchElementException e) { - } - } - - return requests.toArray(new Request[requests.size()]); - } - - protected static final Pattern selectorPattern = Pattern - .compile("^(.+)\\.(.+)\\.VCP(\\d+)(?:\\.(.*))?$"); - - protected static final Pattern maintPattern = Pattern - .compile("^([^\\.]+)\\.maint(?:\\.(.*))?$"); - - public static Selector parseName(String name) { - Matcher m = selectorPattern.matcher(name); - if (m.matches()) { - Selector sel = new Selector(); - - sel.radar = m.group(1).toLowerCase(); - - String opModeString = m.group(2).toLowerCase(); - if (opModeString.equals("clear-air")) - sel.opMode = GSM.OP_MODE_CLEAR_AIR; - else if (opModeString.equals("storm")) - sel.opMode = GSM.OP_MODE_STORM; - else if (opModeString.equals("maint")) - sel.opMode = GSM.OP_MODE_MAINTENANCE; - - sel.vcp = Integer.parseInt(m.group(3)); - - sel.comment = m.group(4); - - return sel; - } - m = maintPattern.matcher(name); - if (m.matches()) { - Selector sel = new Selector(); - sel.radar = m.group(1).toLowerCase(); - sel.opMode = GSM.OP_MODE_MAINTENANCE; - sel.vcp = 0; - return sel; - } - return null; - } - - /* - * AWIPS 1 handling of the national and default local RPS lists for TDWRs - * has an additional quirk: The 0.5, 1.0, 3.0, 6.0 elevation angles are - * replaced with the lowest four elevation angles requested for products 180 - * - 183 in the site's local list. This essentially turns the national rps - * list into a template. - * - * There may be a need for something like and RpsListTemplate in the config - * package, but the extra logic will be kept here for now. - * - * The intent is to use the lowest four available elevation angles, so this - * implementation uses the actual list of elevations angles instead of - * relying on the existence of a configuration file. - * - * Note that there are two instances of this logic in AWIPS 1. One is - * RadarServer, the other is in localization. The latter (which is applied - * to the default local lists) does not examine the product ID. - */ - - public static RpsList maybeTransformForTDWR(RadarConfig rc, RpsList list, - int[] cuts) { - - if (list != null && RcmUtil.getRadarType(rc) == RadarType.TDWR) { - list = (RpsList) list.clone(); - - int[] fourLowest = new int[4]; - int i = 0; - int nLowest = 0; - - /* - * The initial elevation angle is part of the long range scan - * and not included. - */ - if (cuts.length > 0 && cuts[1] < 10) - ++i; - - while (nLowest < fourLowest.length && i < cuts.length) - fourLowest[nLowest++] = cuts[i++]; - - for (Request r : list.getRequests()) { - if (r.productCode >= 180 && r.productCode <= 183) { - int sel = r.getElevationSelection(); - if (sel == Request.SPECIFIC_ELEVATION - || sel == Request.ALL_ELEVATIONS) { - int newi = -1; - switch (r.getElevationAngle()) { - case 5: - newi = 0; - break; - case 10: - newi = 1; - break; - case 30: - newi = 2; - break; - case 60: - newi = 3; - break; - } - if (newi >= 0 && newi < nLowest) { - if (sel == Request.SPECIFIC_ELEVATION) - r.setElevationAngle(fourLowest[newi]); - else if (sel == Request.ALL_ELEVATIONS) - r.selectAllElevations(fourLowest[newi]); - } - // else maybe should remove this request - } - } - } - } - - return list; - } - -} diff --git a/RadarServer/com.raytheon.rcm.lib/src/com/raytheon/rcm/event/ConfigEvent.java b/RadarServer/com.raytheon.rcm.lib/src/com/raytheon/rcm/event/ConfigEvent.java deleted file mode 100755 index 9f2867b87e..0000000000 --- a/RadarServer/com.raytheon.rcm.lib/src/com/raytheon/rcm/event/ConfigEvent.java +++ /dev/null @@ -1,114 +0,0 @@ -/** - * This software was developed and / or modified by Raytheon Company, - * pursuant to Contract DG133W-05-CQ-1067 with the US Government. - * - * U.S. EXPORT CONTROLLED TECHNICAL DATA - * This software product contains export-restricted data whose - * export/transfer/disclosure is restricted by U.S. law. Dissemination - * to non-U.S. persons whether in the United States or abroad requires - * an export license or other authorization. - * - * Contractor Name: Raytheon Company - * Contractor Address: 6825 Pine Street, Suite 340 - * Mail Stop B8 - * Omaha, NE 68106 - * 402.291.0100 - * - * See the AWIPS II Master Rights File ("Master Rights File.pdf") for - * further licensing information. - **/ -package com.raytheon.rcm.event; - -import javax.xml.bind.annotation.XmlAccessType; -import javax.xml.bind.annotation.XmlAccessorType; -import javax.xml.bind.annotation.XmlRootElement; - -import com.raytheon.rcm.config.RadarConfig; - - -/** - * Represents events that can happen within the RadarServer. - * - *
- *
- * SOFTWARE HISTORY
- * Date         Ticket#    Engineer    Description
- * ------------ ---------- ----------- --------------------------
- * 2009-04-22   #1693      D. Friedman Initial checkin
- * ...
- * 2014-02-03   DR 14762   D. Friedman Add Category enum
- * 2015-02-11   DR 17092   D. Friedman Handle NDM cronOTRs.xml updates.
- * 2015-09-08   DR 17944   D. Friedman Handle elevation list file updates.
- * 
- * - */ -@XmlRootElement -@XmlAccessorType(XmlAccessType.FIELD) -public class ConfigEvent { - public static enum Category { - GLOBAL_CONFIG, RADAR_CONFIG, PROD_DISTRIBUTION, NATIONAL_RPS_LISTS, - CRON_OTRS, ELEVATION_LISTS - } - - private String radarID; // null indicates global configuration change. - private RadarConfig oldConfig; - private RadarConfig newConfig; - - private Category category; - - /** Public constructor for deserialization. Not intended for users. */ - public ConfigEvent() { - - } - - public ConfigEvent(Category category) { - this.category = category; - } - - public ConfigEvent(String radarID, RadarConfig oldConfig, - RadarConfig newConfig) { - this.radarID = radarID; - this.oldConfig = oldConfig; - this.newConfig = newConfig; - this.category = radarID == null ? Category.GLOBAL_CONFIG : Category.RADAR_CONFIG; - } - - public String getRadarID() { - return radarID; - } - - public void setRadarID(String radarID) { - this.radarID = radarID; - } - - public RadarConfig getOldConfig() { - return oldConfig; - } - - public void setOldConfig(RadarConfig oldConfig) { - this.oldConfig = oldConfig; - } - - public RadarConfig getNewConfig() { - return newConfig; - } - - public void setNewConfig(RadarConfig newConfig) { - this.newConfig = newConfig; - } - - public String toString() { - if (radarID != null) - return String.format("{Config change for radar '%s'}", radarID); - else - return "{Global config change}"; - } - - public Category getCategory() { - return category; - } - - public void setCategory(Category category) { - this.category = category; - } -} diff --git a/RadarServer/com.raytheon.rcm.lib/src/com/raytheon/rcm/event/NotificationEvent.java b/RadarServer/com.raytheon.rcm.lib/src/com/raytheon/rcm/event/NotificationEvent.java deleted file mode 100644 index 6308d6ffb9..0000000000 --- a/RadarServer/com.raytheon.rcm.lib/src/com/raytheon/rcm/event/NotificationEvent.java +++ /dev/null @@ -1,24 +0,0 @@ -/** - * This software was developed and / or modified by Raytheon Company, - * pursuant to Contract DG133W-05-CQ-1067 with the US Government. - * - * U.S. EXPORT CONTROLLED TECHNICAL DATA - * This software product contains export-restricted data whose - * export/transfer/disclosure is restricted by U.S. law. Dissemination - * to non-U.S. persons whether in the United States or abroad requires - * an export license or other authorization. - * - * Contractor Name: Raytheon Company - * Contractor Address: 6825 Pine Street, Suite 340 - * Mail Stop B8 - * Omaha, NE 68106 - * 402.291.0100 - * - * See the AWIPS II Master Rights File ("Master Rights File.pdf") for - * further licensing information. - **/ -package com.raytheon.rcm.event; - -abstract public class NotificationEvent { - -} diff --git a/RadarServer/com.raytheon.rcm.lib/src/com/raytheon/rcm/event/OtrEvent.java b/RadarServer/com.raytheon.rcm.lib/src/com/raytheon/rcm/event/OtrEvent.java deleted file mode 100644 index 7a82475b00..0000000000 --- a/RadarServer/com.raytheon.rcm.lib/src/com/raytheon/rcm/event/OtrEvent.java +++ /dev/null @@ -1,51 +0,0 @@ -/** - * This software was developed and / or modified by Raytheon Company, - * pursuant to Contract DG133W-05-CQ-1067 with the US Government. - * - * U.S. EXPORT CONTROLLED TECHNICAL DATA - * This software product contains export-restricted data whose - * export/transfer/disclosure is restricted by U.S. law. Dissemination - * to non-U.S. persons whether in the United States or abroad requires - * an export license or other authorization. - * - * Contractor Name: Raytheon Company - * Contractor Address: 6825 Pine Street, Suite 340 - * Mail Stop B8 - * Omaha, NE 68106 - * 402.291.0100 - * - * See the AWIPS II Master Rights File ("Master Rights File.pdf") for - * further licensing information. - **/ -package com.raytheon.rcm.event; - -import javax.xml.bind.annotation.XmlAccessType; -import javax.xml.bind.annotation.XmlAccessorType; -import javax.xml.bind.annotation.XmlRootElement; - -import com.raytheon.rcm.request.Request; - -@XmlRootElement -@XmlAccessorType(XmlAccessType.FIELD) -public class OtrEvent extends NotificationEvent implements Cloneable { - public Request request; - public String radarID; - public boolean done; - - /** The product data. For clients outside of the RadarServer, this - * may be truncated after the PDB. - */ - public byte[] product; - - /* (non-Javadoc) - * @see java.lang.Object#clone() - */ - @Override - public OtrEvent clone() { - try { - return (OtrEvent) super.clone(); - } catch (CloneNotSupportedException e) { - throw new RuntimeException(e); - } - } -} diff --git a/RadarServer/com.raytheon.rcm.lib/src/com/raytheon/rcm/event/RadarEvent.java b/RadarServer/com.raytheon.rcm.lib/src/com/raytheon/rcm/event/RadarEvent.java deleted file mode 100755 index d54bde1aac..0000000000 --- a/RadarServer/com.raytheon.rcm.lib/src/com/raytheon/rcm/event/RadarEvent.java +++ /dev/null @@ -1,91 +0,0 @@ -/** - * This software was developed and / or modified by Raytheon Company, - * pursuant to Contract DG133W-05-CQ-1067 with the US Government. - * - * U.S. EXPORT CONTROLLED TECHNICAL DATA - * This software product contains export-restricted data whose - * export/transfer/disclosure is restricted by U.S. law. Dissemination - * to non-U.S. persons whether in the United States or abroad requires - * an export license or other authorization. - * - * Contractor Name: Raytheon Company - * Contractor Address: 6825 Pine Street, Suite 340 - * Mail Stop B8 - * Omaha, NE 68106 - * 402.291.0100 - * - * See the AWIPS II Master Rights File ("Master Rights File.pdf") for - * further licensing information. - **/ -package com.raytheon.rcm.event; - -import javax.xml.bind.annotation.XmlAccessType; -import javax.xml.bind.annotation.XmlAccessorType; -import javax.xml.bind.annotation.XmlRootElement; -import javax.xml.bind.annotation.XmlTransient; - -import com.raytheon.rcm.config.LinkResource; - -/** Describes events that can occur within the Radar Server. */ -@XmlRootElement -@XmlAccessorType(XmlAccessType.FIELD) -public class RadarEvent { - public static final int CONNECTION_UP = 1; - public static final int CONNECTION_DOWN = 2; - public static final int MESSAGE_RECEIVED = 3; - - public static final int CONNECTION_ATTEMPT_STARTED = 4; - public static final int CONNECTION_ATTEMPT_FAILED = 5; - - private int type; - private String radarID; - private byte[] messageData; - // TODO: Cache decoded message? - - /* - * Transient because this field is currently only used to let the - * ConnectionManger know which link is being used so that the RPSListManager - * can know what the maximum RPS list size is. May do this another way in - * the future and there is no need for clients to use it now. - */ - @XmlTransient - private LinkResource linkResource; - - public RadarEvent() { - - } - - public RadarEvent(int type, String radarID) { - this.type = type; - this.radarID = radarID; - } - - public RadarEvent(int type, String radarID, byte[] messageBuffer) { - this.type = type; - this.radarID = radarID; - this.messageData = messageBuffer; - } - - public RadarEvent(int type, String radarID, LinkResource linkResource) { - this.type = type; - this.radarID = radarID; - this.linkResource = linkResource; - } - - public final int getType() { - return type; - } - - public final String getRadarID() { - return radarID; - } - - public final byte[] getMessageData() { - return messageData; - } - - public final LinkResource getLinkResource() { - return linkResource; - } - -} diff --git a/RadarServer/com.raytheon.rcm.lib/src/com/raytheon/rcm/event/RadarEventAdapter.java b/RadarServer/com.raytheon.rcm.lib/src/com/raytheon/rcm/event/RadarEventAdapter.java deleted file mode 100755 index dc68203b00..0000000000 --- a/RadarServer/com.raytheon.rcm.lib/src/com/raytheon/rcm/event/RadarEventAdapter.java +++ /dev/null @@ -1,39 +0,0 @@ -/** - * This software was developed and / or modified by Raytheon Company, - * pursuant to Contract DG133W-05-CQ-1067 with the US Government. - * - * U.S. EXPORT CONTROLLED TECHNICAL DATA - * This software product contains export-restricted data whose - * export/transfer/disclosure is restricted by U.S. law. Dissemination - * to non-U.S. persons whether in the United States or abroad requires - * an export license or other authorization. - * - * Contractor Name: Raytheon Company - * Contractor Address: 6825 Pine Street, Suite 340 - * Mail Stop B8 - * Omaha, NE 68106 - * 402.291.0100 - * - * See the AWIPS II Master Rights File ("Master Rights File.pdf") for - * further licensing information. - **/ -package com.raytheon.rcm.event; - -public class RadarEventAdapter implements RadarEventListener { - - @Override - public void handleConfigEvent(ConfigEvent event) { - // nothing - } - - @Override - public void handleRadarEvent(RadarEvent event) { - // nothing - } - - @Override - public void handleNotificationEvent(NotificationEvent event) { - // nothing - } - -} diff --git a/RadarServer/com.raytheon.rcm.lib/src/com/raytheon/rcm/event/RadarEventListener.java b/RadarServer/com.raytheon.rcm.lib/src/com/raytheon/rcm/event/RadarEventListener.java deleted file mode 100755 index 79e9360b72..0000000000 --- a/RadarServer/com.raytheon.rcm.lib/src/com/raytheon/rcm/event/RadarEventListener.java +++ /dev/null @@ -1,26 +0,0 @@ -/** - * This software was developed and / or modified by Raytheon Company, - * pursuant to Contract DG133W-05-CQ-1067 with the US Government. - * - * U.S. EXPORT CONTROLLED TECHNICAL DATA - * This software product contains export-restricted data whose - * export/transfer/disclosure is restricted by U.S. law. Dissemination - * to non-U.S. persons whether in the United States or abroad requires - * an export license or other authorization. - * - * Contractor Name: Raytheon Company - * Contractor Address: 6825 Pine Street, Suite 340 - * Mail Stop B8 - * Omaha, NE 68106 - * 402.291.0100 - * - * See the AWIPS II Master Rights File ("Master Rights File.pdf") for - * further licensing information. - **/ -package com.raytheon.rcm.event; - -public interface RadarEventListener { - public void handleRadarEvent(RadarEvent event); - public void handleConfigEvent(ConfigEvent event); - public void handleNotificationEvent(NotificationEvent event); -} diff --git a/RadarServer/com.raytheon.rcm.lib/src/com/raytheon/rcm/message/CCM.java b/RadarServer/com.raytheon.rcm.lib/src/com/raytheon/rcm/message/CCM.java deleted file mode 100644 index 53c8ae8fdf..0000000000 --- a/RadarServer/com.raytheon.rcm.lib/src/com/raytheon/rcm/message/CCM.java +++ /dev/null @@ -1,89 +0,0 @@ -/** - * This software was developed and / or modified by Raytheon Company, - * pursuant to Contract DG133W-05-CQ-1067 with the US Government. - * - * U.S. EXPORT CONTROLLED TECHNICAL DATA - * This software product contains export-restricted data whose - * export/transfer/disclosure is restricted by U.S. law. Dissemination - * to non-U.S. persons whether in the United States or abroad requires - * an export license or other authorization. - * - * Contractor Name: Raytheon Company - * Contractor Address: 6825 Pine Street, Suite 340 - * Mail Stop B8 - * Omaha, NE 68106 - * 402.291.0100 - * - * See the AWIPS II Master Rights File ("Master Rights File.pdf") for - * further licensing information. - **/ -package com.raytheon.rcm.message; - -import java.io.IOException; -import java.nio.ByteBuffer; -import java.util.Calendar; - -import com.raytheon.rcm.ccmreq.CcmRequestDefinition; - -/** - * Represents the contents of an ORPG Command Control Message. - * - *
- *  SOFTWARE HISTORY
- *
- *  Date         Ticket#     Engineer    Description
- *  ------------ ----------  ----------- --------------------------
- *  2016-05-06   DCS18795    jdynina     Initial version
- * 
- * - * @author jdynina - * @version 1.0 - */ - -public class CCM { - - private static final short MASK = (short) (1 << 13); - - public static byte[] encode(CcmRequestDefinition options) { - Message msg = new Message(); - msg.messageCode = Message.COMMAND_CONTROL_MESSAGE; - msg.time = Calendar.getInstance(); - - try { - msg.blocks = new byte[][] { encodeCcmBlock(options) }; - } catch (IOException ie) { - ie.printStackTrace(); - } - - return msg.encode(); - } - - private static byte[] encodeCcmBlock(CcmRequestDefinition options) throws IOException { - - ByteBuffer buf = ByteBuffer.allocate(3 * 2); // 3 shorts - short vcpFlag; - - if (options.getRestartVcp()) { - vcpFlag = (short) 1; - } else { - vcpFlag = (short) 0; - } - - Short vcp = (short) options.getVcp(); - - if (vcp > Short.MAX_VALUE) { - throw new IllegalArgumentException("Vcp Overflow occured"); - } - - if (vcpFlag == 1) { - vcp = (short) ((short) vcp | MASK); - } - - buf.putShort(vcp); - buf.putShort((short) options.getAvsetEnabled()); - buf.putShort((short) options.getSailsCount()); - - return buf.array(); - } -} - diff --git a/RadarServer/com.raytheon.rcm.lib/src/com/raytheon/rcm/message/CPM.java b/RadarServer/com.raytheon.rcm.lib/src/com/raytheon/rcm/message/CPM.java deleted file mode 100644 index 30f7a4d6c3..0000000000 --- a/RadarServer/com.raytheon.rcm.lib/src/com/raytheon/rcm/message/CPM.java +++ /dev/null @@ -1,73 +0,0 @@ -/** - * This software was developed and / or modified by Raytheon Company, - * pursuant to Contract DG133W-05-CQ-1067 with the US Government. - * - * U.S. EXPORT CONTROLLED TECHNICAL DATA - * This software product contains export-restricted data whose - * export/transfer/disclosure is restricted by U.S. law. Dissemination - * to non-U.S. persons whether in the United States or abroad requires - * an export license or other authorization. - * - * Contractor Name: Raytheon Company - * Contractor Address: 6825 Pine Street, Suite 340 - * Mail Stop B8 - * Omaha, NE 68106 - * 402.291.0100 - * - * See the AWIPS II Master Rights File ("Master Rights File.pdf") for - * further licensing information. - **/ -package com.raytheon.rcm.message; - -import java.nio.ByteBuffer; - -/** - * Represents the contents of an ORPG Command Parameter Message. - * - *
- *  SOFTWARE HISTORY
- *
- *  Date         Ticket#     Engineer    Description
- *  ------------ ----------  ----------- --------------------------
- *  2016-05-06   DCS18795    jdynina     Initial version
- * 
- * - * @author jdynina - * @version 1.0 - */ - -public class CPM extends Message { - - public int[] clearAirVcps; - public int[] precipVcps; - - public int maxSailsCuts; - - public static CPM decode(byte[] msg) { - return (CPM) MD.decode(msg); - } - - protected void decodeBlock(int index, ByteBuffer buf) { - if (index != 1) { - return; - } - - int numClearAirVcps = buf.getShort(); - clearAirVcps = new int[numClearAirVcps]; - - for (int i = 0; i < numClearAirVcps; ++i) { - clearAirVcps[i] = buf.getShort(); - } - - int numPrecipVcps = buf.getShort(); - precipVcps = new int[numPrecipVcps]; - - for (int i = 0; i < numPrecipVcps; ++i) { - precipVcps[i] = buf.getShort(); - } - - buf.position(buf.limit() - 2); - maxSailsCuts = buf.getShort(); - - } -} diff --git a/RadarServer/com.raytheon.rcm.lib/src/com/raytheon/rcm/message/ExternalData.java b/RadarServer/com.raytheon.rcm.lib/src/com/raytheon/rcm/message/ExternalData.java deleted file mode 100644 index eb3ff6ba60..0000000000 --- a/RadarServer/com.raytheon.rcm.lib/src/com/raytheon/rcm/message/ExternalData.java +++ /dev/null @@ -1,130 +0,0 @@ -/** - * This software was developed and / or modified by Raytheon Company, - * pursuant to Contract DG133W-05-CQ-1067 with the US Government. - * - * U.S. EXPORT CONTROLLED TECHNICAL DATA - * This software product contains export-restricted data whose - * export/transfer/disclosure is restricted by U.S. law. Dissemination - * to non-U.S. persons whether in the United States or abroad requires - * an export license or other authorization. - * - * Contractor Name: Raytheon Company - * Contractor Address: 6825 Pine Street, Suite 340 - * Mail Stop B8 - * Omaha, NE 68106 - * 402.291.0100 - * - * See the AWIPS II Master Rights File ("Master Rights File.pdf") for - * further licensing information. - **/ -package com.raytheon.rcm.message; - -import java.io.ByteArrayOutputStream; -import java.io.DataOutputStream; -import java.io.IOException; -import java.nio.ByteBuffer; -import java.util.Calendar; - -public class ExternalData extends GenericProduct { - - public GenericData genericData; - - public static interface ICompressor { - byte[] compress(byte[] data); - int getCompressionMethod(); - } - - public static byte[] encode(GenericData data) { - return encode(data, null); - } - - public static GenericData decodeExternalData(byte[] msgData) { - ExternalData msg = new ExternalData(); - ByteBuffer buf = ByteBuffer.wrap(msgData); - msg.decode(buf); - return msg.genericData; - } - - public static byte[] encode(GenericData data, ICompressor compressor) { - - byte[] packetData = encodeExternalDataPacket(data); - int uncompressedSize = packetData.length; - int compressionMethod = 0; - - if (compressor != null) { - byte[] compressedData = compressor.compress(packetData); - if (compressedData != null) { - packetData = compressedData; - compressionMethod = compressor.getCompressionMethod(); - } - } - - ByteBuffer buf = ByteBuffer.allocate(HEADER_SIZE + - + 6 * 2 + packetData.length); - - Message msg = new Message(); - msg.messageCode = Message.EXTERNAL_DATA; - msg.time = Calendar.getInstance(); - msg.blocks = new byte[1][]; - msg.encodeHeader(buf); - buf.putShort((short) -1); - - /* Value of 4 indicates Environmental Data from 40-km RUC Model. - * - so shouldn't block id be configurable? - */ - buf.putShort((short) 4); - buf.putShort((short) 0); // Spare - buf.putShort((short) compressionMethod); // Compression method - buf.putInt(uncompressedSize); - buf.put(packetData); - - return buf.array(); - } - - public static byte[] encodeExternalDataPacket(GenericData data) { - ByteArrayOutputStream outStream = new ByteArrayOutputStream(4096); - DataOutputStream out = new DataOutputStream(outStream); - - final int packetCode = - GenericProduct.EXTERNAL_DATA_DESCRIPTION_PACKET; - - try { - out.writeShort((short) packetCode); - out.writeShort((short) 0); // "Reserved" - out.writeInt(0); // Placeholder for data length - - data.encode(out, packetCode); - - out.flush(); - } catch (IOException e) { - throw new RuntimeException("Encoding failed"); - } - - ByteBuffer buf = ByteBuffer.wrap(outStream.toByteArray()); - buf.putInt(4, buf.capacity() - 8); // Set the data length - - return buf.array(); - } - - @Override - protected void decodeBlocks(ByteBuffer buf) { - buf.getShort(); // Number of blocks - int divider = buf.getShort(); - Message.checkFormat(divider == -1, "expected block divider"); - buf.getShort(); // block ID. don't care. have to assume it is 4 - buf.getShort(); // Spare - int compressionMethod = buf.getShort(); - Message.checkFormat(compressionMethod == 0, "compression not supported"); - buf.getInt(); - int packetCode = buf.getShort(); - Message.checkFormat(packetCode == GenericProduct.EXTERNAL_DATA_DESCRIPTION_PACKET, - "unexpected packet type"); - buf.getShort(); // Reserved - int length = buf.getInt(); - ByteBuffer gdBuf = buf.slice(); - gdBuf.limit(length); - genericData = new GenericData(); - genericData.decode(gdBuf, packetCode); - } - -} diff --git a/RadarServer/com.raytheon.rcm.lib/src/com/raytheon/rcm/message/GSM.java b/RadarServer/com.raytheon.rcm.lib/src/com/raytheon/rcm/message/GSM.java deleted file mode 100755 index a2eb2b7da5..0000000000 --- a/RadarServer/com.raytheon.rcm.lib/src/com/raytheon/rcm/message/GSM.java +++ /dev/null @@ -1,104 +0,0 @@ -/** - * This software was developed and / or modified by Raytheon Company, - * pursuant to Contract DG133W-05-CQ-1067 with the US Government. - * - * U.S. EXPORT CONTROLLED TECHNICAL DATA - * This software product contains export-restricted data whose - * export/transfer/disclosure is restricted by U.S. law. Dissemination - * to non-U.S. persons whether in the United States or abroad requires - * an export license or other authorization. - * - * Contractor Name: Raytheon Company - * Contractor Address: 6825 Pine Street, Suite 340 - * Mail Stop B8 - * Omaha, NE 68106 - * 402.291.0100 - * - * See the AWIPS II Master Rights File ("Master Rights File.pdf") for - * further licensing information. - **/ -package com.raytheon.rcm.message; - -import java.nio.ByteBuffer; - -/** - * Represents the contents of an ORPG General Status Message. - * - *
- *  SOFTWARE HISTORY
- *
- *  Date         Ticket#     Engineer    Description
- *  ------------ ----------  ----------- --------------------------
- *  2009                     dfriedman   Initial version
- *  2016-04-22   DR 18909    dfriedman   Read fields of expanded GSM.
- * 
- */ -public class GSM extends Message { - public static final int OP_MODE_MAINTENANCE = 0; - public static final int OP_MODE_CLEAR_AIR = 1; - public static final int OP_MODE_STORM = 2; - - public int opMode; - public int rdaOpStatus; - public int vcp; - public int[] cuts; // in tenths of degrees - public int rdaStatus; - public int rdaAlarms; - public int dataAvailability; // "DTE" - public int rpgOpStatus; - public int rpgAlarms; - public int rpgStatus; - public int rpgNarrowbandStatus; - public int rcc; - public int productAvailability; - public int superResCuts; - public int rdaVersion; - public int rdaChannel; - public int rpgVersion; - public int vcpSupplemental; - - public static GSM decode(byte[] msg) { - return (GSM) MD.decode(msg); - } - - protected void decodeBlock(int index, ByteBuffer buf) { - if (index != 1) - return; - opMode = buf.getShort(); - rdaOpStatus = buf.getShort(); - vcp = buf.getShort(); - int nCuts = buf.getShort(); - cuts = new int[nCuts]; - for (int i = 0; i < 20; ++i) { - short cut = buf.getShort(); - if (i < cuts.length) { - cuts[i] = cut; - } - } - rdaStatus = buf.getShort(); - rdaAlarms = buf.getShort(); - dataAvailability = buf.getShort(); - rpgOpStatus = buf.getShort(); - rpgAlarms = buf.getShort(); - rpgStatus = buf.getShort(); - rpgNarrowbandStatus = buf.getShort(); - rcc = buf.getShort(); - productAvailability = buf.getShort(); - superResCuts = buf.getShort(); - buf.position(buf.position() + 4); - rdaVersion = buf.getShort(); - rdaChannel = buf.getShort(); - buf.position(buf.position() + 4); - rpgVersion = buf.getShort(); - if (buf.remaining() < 12) { - return; - } - for (int i = 20; i < 25; ++i) { - short cut = buf.getShort(); - if (i < cuts.length) { - cuts[i] = cut; - } - } - vcpSupplemental = buf.getShort(); - } -} diff --git a/RadarServer/com.raytheon.rcm.lib/src/com/raytheon/rcm/message/GenericData.java b/RadarServer/com.raytheon.rcm.lib/src/com/raytheon/rcm/message/GenericData.java deleted file mode 100644 index e0485432fb..0000000000 --- a/RadarServer/com.raytheon.rcm.lib/src/com/raytheon/rcm/message/GenericData.java +++ /dev/null @@ -1,570 +0,0 @@ -/** - * This software was developed and / or modified by Raytheon Company, - * pursuant to Contract DG133W-05-CQ-1067 with the US Government. - * - * U.S. EXPORT CONTROLLED TECHNICAL DATA - * This software product contains export-restricted data whose - * export/transfer/disclosure is restricted by U.S. law. Dissemination - * to non-U.S. persons whether in the United States or abroad requires - * an export license or other authorization. - * - * Contractor Name: Raytheon Company - * Contractor Address: 6825 Pine Street, Suite 340 - * Mail Stop B8 - * Omaha, NE 68106 - * 402.291.0100 - * - * See the AWIPS II Master Rights File ("Master Rights File.pdf") for - * further licensing information. - **/ -package com.raytheon.rcm.message; - -import java.io.ByteArrayOutputStream; -import java.io.DataOutput; -import java.io.DataOutputStream; -import java.io.IOException; -import java.nio.ByteBuffer; -import java.util.Arrays; -import java.util.HashMap; -import java.util.Map; - -import com.raytheon.rcm.message.Message; - -// TODO: redundant counts are not redundant... 0 == short circuit - -public class GenericData { - public static final int VOLUME = 1; - public static final int ELEVATION = 2; - public static final int TIME = 3; - public static final int ON_DEMAND = 4; - public static final int ON_REQUEST = 5; - public static final int RADIAL = 6; - public static final int EXTERNAL = 7; - - public String name; - public String description; - public int code; - public int type; - public int generationTime; - public String radarName; - public float lat, lon, height; - public int volumeScanStartTime; - public int elevationScanStartTime; - public float elevationAngle; - public int volumeScanNumber; - public short opMode; - public short vcp; - public short elevationNumber; - public ParameterSet parameters = new ParameterSet(); - public Component[] components; - - public static class Parameter { - /* The ICD says attribute names are case-insensitive, but the - * RPG code expects lower case. - */ - public static final String NAME_KEY = "name"; - public static final String TYPE_KEY = "type"; - public static final String VALUE_KEY = "value"; - public static final String UNITS_KEY = "units"; // Spec sez "unit". I see "Units" - - // TODO: Cache the toLower() value? - private class Key { - String originalName; - public Key(String attributeName) { - this.originalName = attributeName; - } - @Override - public boolean equals(Object obj) { - if (this == obj) - return true; - else if (obj instanceof Key) - return originalName.equalsIgnoreCase(((Key) obj).originalName); - else - return false; - } - @Override - public int hashCode() { - return originalName.toLowerCase().hashCode(); - } - @Override - public String toString() { - return originalName; - } - - } - - private String id; - private Map attributes = new HashMap(); - - public Parameter() { - - } - - public Parameter(String id) { - this.id = id; - } - - public Parameter(String id, String text) { - this.id = id; - setAttributesText(text); - } - - public String getId() { - return id; - } - - public void setId(String id) { - this.id = id; - } - - public String getName() { return getAttribute(NAME_KEY); } - public String getType() { return getAttribute(TYPE_KEY); } - public String getValue() { return getAttribute(VALUE_KEY); } - public String getUnits() { return getAttribute(UNITS_KEY); } - public void setName(String name) { putAttribute(NAME_KEY, name); } - public void setType(String type) { putAttribute(TYPE_KEY, type); } - public void setValueText(String value) { putAttribute(VALUE_KEY, value); } - public void setUnits(String units) { putAttribute(UNITS_KEY, units); } - - public void setValue(String value) { - setValueText(value); - setType("string"); - } - - public void setValue(int value) { - setValueText(Integer.toString(value)); - setType("int"); - } - - public void setValue(double value) { - setValueText(String.format("%f", value)); - setType("float"); - } - - public void setAttributesText(String text) { - attributes.clear(); - // TODO: needs to handle "\" escape - for (String s : text.split(";")) { - if (s.length() <= 0) - continue; - int pos = s.indexOf('='); - String n = s.substring(0, pos).trim(); - String v = s.substring(pos + 1); - attributes.put(new Key(n), v); - } - } - - public String getAttributesText() { - StringBuilder sb = new StringBuilder(); - for (Map.Entry e : attributes.entrySet()) - sb.append(e.getKey().toString()).append('=').append(e.getValue()).append(';'); - return sb.toString(); - } - - public String getAttribute(String name) { - return attributes.get(new Key(name)); - } - - public void putAttribute(String name, String value) { - if (value != null) - attributes.put(new Key(name), value); - else - attributes.remove(new Key(name)); - } - } - - public static class ParameterSet { - public Map getMap() { return map; } - - Parameter[] getArray() { - return Arrays.copyOf(array, array.length); - } - - private HashMap map = new HashMap(); - // array is just a debugging aid - private Parameter[] array; - - void decode(ByteBuffer buf) { - if (buf.getInt() > 0) { - int nParameters = buf.getInt(); - array = new Parameter[nParameters]; - for (int i = 0; i < nParameters; ++i) { - String id = getString(buf); - String text = getString(buf); - Parameter p = new Parameter(id, text); - map.put(p.id, p); - array[i] = p; - } - } - } - - public void encode(DataOutput out) throws IOException{ - final int mapSize = map.size(); - out.writeInt(mapSize); - if (mapSize > 0) { - out.writeInt(mapSize); // redundant count - for (Map.Entry p : map.entrySet()) { - putString(out, p.getKey()); - putString(out, p.getValue().getAttributesText()); - } - } - } - - public void put(Parameter parameter) { - map.put(parameter.id, parameter); - } - } - - public static abstract class Component { - public static final int RADIAL = 1; - public static final int GRID = 2; - public static final int AREA = 3; - public static final int TEXT = 4; - public static final int TABLE = 5; - public static final int EVENT = 6; - - public ParameterSet parameters = new ParameterSet(); - - public void decode(ByteBuffer buf) { - parameters = getParameters(buf); - } - - public abstract int getTypeCode(); - - public void encode(DataOutput out) throws IOException { - parameters.encode(out); - } - } - - public static class AreaComponent extends Component { - public static final int POINT = 1; - public static final int AREA = 2; - public static final int POLYLINE = 3; - public static final int LAT_LON = 0; - public static final int X_Y = 1; - public static final int AZ_RAN = 2; - - public int geometry; - public int coordinates; - public float[] c0; - public float[] c1; - - public void decode(ByteBuffer buf) { - super.decode(buf); - int geoCoord = buf.getInt(); - geometry = geoCoord & 0xffff; - coordinates = (geoCoord >> 16) & 0xffff; - if (buf.getInt() > 0) { - int nCoords = buf.getInt(); - c0 = new float[nCoords]; - c1 = new float[nCoords]; - for (int i = 0; i < nCoords; ++i) { - c0[i] = buf.getFloat(); - c1[i] = buf.getFloat(); - } - } else { - c0 = c1 = new float[0]; - } - } - - @Override - public void encode(DataOutput out) throws IOException { - super.encode(out); - out.writeInt(geometry | (coordinates << 16)); - if (c0 != null && c0.length > 0) { - out.writeInt(c0.length); - out.writeInt(c0.length); - for (int i = 0; i < c0.length; ++i) { - out.writeFloat(c0[i]); - out.writeFloat(c1[i]); - } - } else - out.writeInt(0); - } - - @Override - public int getTypeCode() { - return Component.AREA; - } - } - - public static class EventComponent extends Component { - public Component[] components; - - public void decode(ByteBuffer buf) { - super.decode(buf); - components = decodeComponents(buf); - } - - @Override - public int getTypeCode() { - return Component.EVENT; - } - - @Override - public void encode(DataOutput out) throws IOException { - super.encode(out); - encodeComponents(out, components); - } - } - - public static class GridComponent extends Component { - public static final int ARRAY = 1; - public static final int EQUALLY_SPACED = 2; - public static final int LAT_LON = 3; - public static final int POLAR = 4; - - public int gridType; - public int[] dimensions; - public Object data; - private Parameter dataAttributes = new Parameter(); // Not a full Parameter -- just the attributes - - public void decode(ByteBuffer buf) { - if (buf.getInt() > 0) { - int nDimensions = buf.getInt(); - dimensions = new int[nDimensions]; - for (int i = 0; i < nDimensions; ++i) - dimensions[i] = buf.getInt(); - } else - dimensions = new int[0]; - gridType = buf.getInt(); - super.decode(buf); - dataAttributes = new Parameter(); - dataAttributes.setAttributesText(getString(buf)); - String type = dataAttributes.getType(); - if (type == null) - throw new RuntimeException("Grid type not specified."); - if (! type.equalsIgnoreCase("float")) - throw new RuntimeException("Only grids of type float are supported."); - int arraySize = buf.getInt(); - int pointCount = getPointCount(); - if (arraySize != pointCount) - throw new RuntimeException("Grid array size and point count do not match."); - float[] array = new float[pointCount]; - buf.asFloatBuffer().get(array); - buf.position(buf.position() + array.length * 4); - } - - @Override - public int getTypeCode() { - return Component.GRID; - } - - @Override - public void encode(DataOutput out) throws IOException { - if (dimensions != null && dimensions.length > 0) { - out.writeInt(dimensions.length); - out.writeInt(dimensions.length); - for (int d : dimensions) - out.writeInt(d); - } else - out.writeInt(0); - out.writeInt(gridType); - super.encode(out); - - putString(out, dataAttributes.getAttributesText()); - if (data.getClass().isArray() && - data.getClass().getComponentType() == Float.TYPE) { - float[] array = (float[]) data; - // No redundant count for once. - if (array.length != getPointCount()) - throw new IllegalArgumentException("Dimensions and data length do not match"); - ByteBuffer bb = ByteBuffer.allocate(array.length * 4); - bb.asFloatBuffer().put(array); - out.writeInt(array.length); - out.write(bb.array()); - } else { - throw new RuntimeException("Only grids of type float are supported."); - } - } - - public int getPointCount() { - if (dimensions != null && dimensions.length > 0) { - int count = 1; - for (int d : dimensions) - count *= d; - return count; - } else - return 0; - } - - /** Returns pseudo-parameter object that describes the grid data. */ - public Parameter getDataAttributes() { - return dataAttributes; - } - - } - - public void decode(ByteBuffer buf, int packetCode) { - name = getString(buf); - description = getString(buf); - code = buf.getInt(); - type = buf.getInt(); - generationTime = buf.getInt(); - if (packetCode == 28) { - radarName = getString(buf); - lat = buf.getFloat(); - lon = buf.getFloat(); - height = buf.getFloat(); - volumeScanStartTime = buf.getInt(); - elevationScanStartTime = buf.getInt(); - elevationAngle = buf.getFloat(); - volumeScanNumber = buf.getInt(); - opMode = getXdrShort(buf); - vcp = getXdrShort(buf); - elevationNumber = getXdrShort(buf); - } else if (packetCode == 29) { - // Documented as "Spare". - // ICD is confusing here about the number of fields. - buf.getInt(); - buf.getInt(); - buf.getInt(); - buf.getInt(); - getXdrShort(buf); - } else - throw new RuntimeException("fix"); // TODO: ... - - // Documented as "Spare (reserved for future compression ...)" - getXdrShort(buf); - buf.getInt(); - - parameters = getParameters(buf); - components = decodeComponents(buf); - } - - void encode(DataOutput out, int packetCode) throws IOException { - putString(out, name); - putString(out, description); - out.writeInt(code); - out.writeInt(type); - out.writeInt(generationTime); - if (packetCode == 28) { - putString(out, radarName); - out.writeFloat(lat); - out.writeFloat(lon); - out.writeFloat(height); - out.writeInt(volumeScanStartTime); - out.writeInt(elevationScanStartTime); - out.writeFloat(elevationAngle); - out.writeInt(volumeScanNumber); - putXdrShort(out, opMode); - putXdrShort(out, vcp); - putXdrShort(out, elevationNumber); - } else if (packetCode == 29) { - // Documented as "Spare". - // ICD is confusing here about the number of fields. - out.writeInt(0); - out.writeInt(0); - out.writeInt(0); - out.writeInt(0); - putXdrShort(out, (short) 0); - } else { - throw new IllegalArgumentException(String.format("Unknown packet code %d", packetCode)); - } - // Documented as "Spare (reserved for future compression ...)" - putXdrShort(out, (short) 0); - out.writeInt(0); - - parameters.encode(out); - encodeComponents(out, components); - - } - - public byte[] encode(int packetCode) throws IOException { - ByteArrayOutputStream outStream = new ByteArrayOutputStream(4096); - DataOutputStream out = new DataOutputStream(outStream); - - encode(out, packetCode); - - out.flush(); - return outStream.toByteArray(); - } - - private static ParameterSet getParameters(ByteBuffer buf) { - ParameterSet ps = new ParameterSet(); - ps.decode(buf); - return ps; - } - - private static Component[] decodeComponents(ByteBuffer buf) { - Component[] components; - if (buf.getInt() > 0) { - components = new Component[buf.getInt()]; - for (int i = 0; i < components.length; ++i) { - Component component = null; - if (buf.getInt() != 0) { // Optional value flag - int componentType = buf.getInt(); - - switch (componentType) { - case Component.AREA: - component = new AreaComponent(); - break; - case Component.EVENT: - component = new EventComponent(); - break; - case Component.GRID: - component = new GridComponent(); - break; - default: - Message.checkFormat(false, - String.format("Unsupported component type %d", componentType)); - } - component.decode(buf); - } - components[i] = component; - } - } else - components = new Component[0]; - return components; - } - - private static void encodeComponents(DataOutput out, Component[] components) throws IOException { - if (components != null && components.length > 0) { - out.writeInt(components.length); - out.writeInt(components.length); // Redundant count - for (Component c : components) { - if (c != null) { - out.writeInt(1); - out.writeInt(c.getTypeCode()); - c.encode(out); - } else - out.writeInt(0); - } - } else { - out.writeInt(0); - } - } - - private static String getString(ByteBuffer buf) { - int len = buf.getInt(); - byte[] bytes = new byte[len]; - buf.get(bytes); - if ((len & 3) != 0) - buf.position(buf.position() + (4 - (len & 3))); // it's an XDR thing - return new String(bytes); - } - - private static void putString(DataOutput out, String str) throws IOException { - if (str != null) { - byte[] bytes = str.getBytes(); - int len = bytes.length; - out.writeInt(len); - out.write(bytes); - // XDR requires padding to a multiple of four bytes - while ((len & 3) != 0) { - out.write(0); - ++len; - } - } else - out.writeInt(0); - } - - private static short getXdrShort(ByteBuffer buf) { - // TODO: signedness..... - return (short) buf.getInt(); - } - - private static void putXdrShort(DataOutput out, short value) throws IOException { - out.writeInt(value); - } -} diff --git a/RadarServer/com.raytheon.rcm.lib/src/com/raytheon/rcm/message/GenericProduct.java b/RadarServer/com.raytheon.rcm.lib/src/com/raytheon/rcm/message/GenericProduct.java deleted file mode 100644 index 39f2d5bfdb..0000000000 --- a/RadarServer/com.raytheon.rcm.lib/src/com/raytheon/rcm/message/GenericProduct.java +++ /dev/null @@ -1,119 +0,0 @@ -/** - * This software was developed and / or modified by Raytheon Company, - * pursuant to Contract DG133W-05-CQ-1067 with the US Government. - * - * U.S. EXPORT CONTROLLED TECHNICAL DATA - * This software product contains export-restricted data whose - * export/transfer/disclosure is restricted by U.S. law. Dissemination - * to non-U.S. persons whether in the United States or abroad requires - * an export license or other authorization. - * - * Contractor Name: Raytheon Company - * Contractor Address: 6825 Pine Street, Suite 340 - * Mail Stop B8 - * Omaha, NE 68106 - * 402.291.0100 - * - * See the AWIPS II Master Rights File ("Master Rights File.pdf") for - * further licensing information. - **/ -package com.raytheon.rcm.message; - -import java.nio.ByteBuffer; -import java.util.ArrayList; - -import com.raytheon.rcm.message.GraphicProduct; -import com.raytheon.rcm.message.Message; - -public class GenericProduct extends GraphicProduct { - - public static final int PRODUCT_DESCRIPTION_PACKET = 28; - public static final int EXTERNAL_DATA_DESCRIPTION_PACKET = 29; - - public static GenericProduct decode(byte[] bytes) { - GenericProduct gp = new GenericProduct(); - gp.decode(ByteBuffer.wrap(bytes)); - return gp; - } - - @Override - protected void decodeBlocks(ByteBuffer buf) { - ByteBuffer block; - - // The header counts as one block - int nBlocks = buf.getShort(); - - // Read the PDB which is in a fixed-size block - if (nBlocks < 2) - return; - block = buf.slice(); - block.limit(51 * 2); - decodeBlock(1, block); - buf.position(buf.position() + 51 * 2); - - for (int i = 2; i < nBlocks; ++i) { - int divider = buf.getShort(buf.position()); // Note: does not consume the divider - Message.checkFormat(divider == -1, "expected block divider"); - int blockSize = buf.getInt(buf.position() + 4); // Skip divider and block ID - block = buf.slice(); - block.limit(blockSize); - decodeBlock(i, block); - buf.position(buf.position() + blockSize); - } - } - - @Override - protected void decodeBlock(int index, ByteBuffer buf) { - if (index > 1) { - checkFormat(buf.getShort() == -1, "expected block divider"); - if (buf.getShort() != 1) // 1 == Symbology block - return; - buf.getInt(); // symbology size - int nLayers = buf.getShort(); - layers = new Object[nLayers][]; - for (int iLayer = 0; iLayer < nLayers; ++iLayer) { - checkFormat(buf.getShort() == -1, "expected layer divider"); - - int layerSize = buf.getInt(); - ByteBuffer layerBuf = buf.slice(); - layerBuf.limit(layerSize); - buf.position(buf.position() + layerSize); - - Object[] layer = decodeLayer(layerBuf); - layers[iLayer] = layer; - } - } else - super.decodeBlock(index, buf); - } - - private Object[] decodeLayer(ByteBuffer buf) { - ArrayList packets = new ArrayList(); - - while (buf.remaining() > 0) { - short packetCode = buf.getShort(); - if (packetCode != 28 && packetCode != 29) { - System.err.format("Unknown display packet code %d\n", packetCode); // TODO: throw exception? - break; - } - buf.getShort(); // "reserved (=0)" - - int packetSize = buf.getInt(); - ByteBuffer packetBuf = buf.slice(); - packetBuf.limit(packetSize); - buf.position(buf.position() + packetSize); - - Object packet = decodeGenericPacket(packetCode, packetBuf); - packets.add(packet); - } - return packets.toArray(); - } - - public Object[][] layers; // n layers of m packets - - private Object decodeGenericPacket(short packetCode, ByteBuffer packet) { - GenericData g = new GenericData(); - g.decode(packet, packetCode); - return g; - } - -} diff --git a/RadarServer/com.raytheon.rcm.lib/src/com/raytheon/rcm/message/GraphicProduct.java b/RadarServer/com.raytheon.rcm.lib/src/com/raytheon/rcm/message/GraphicProduct.java deleted file mode 100755 index 90065a2d3f..0000000000 --- a/RadarServer/com.raytheon.rcm.lib/src/com/raytheon/rcm/message/GraphicProduct.java +++ /dev/null @@ -1,155 +0,0 @@ -/** - * This software was developed and / or modified by Raytheon Company, - * pursuant to Contract DG133W-05-CQ-1067 with the US Government. - * - * U.S. EXPORT CONTROLLED TECHNICAL DATA - * This software product contains export-restricted data whose - * export/transfer/disclosure is restricted by U.S. law. Dissemination - * to non-U.S. persons whether in the United States or abroad requires - * an export license or other authorization. - * - * Contractor Name: Raytheon Company - * Contractor Address: 6825 Pine Street, Suite 340 - * Mail Stop B8 - * Omaha, NE 68106 - * 402.291.0100 - * - * See the AWIPS II Master Rights File ("Master Rights File.pdf") for - * further licensing information. - **/ -package com.raytheon.rcm.message; - -import java.nio.ByteBuffer; -import java.util.Calendar; - -public class GraphicProduct extends Message { - - public static class PDB { - public int lat; // In thousandths of degrees - public int lon; - public int height; // In feet - public int productCode; - public int opMode; - public int vcp; - public int sequence; - public int volumeScan; - public Calendar volumeScanTime; - public Calendar productGenerationTime; - public int elevationNumber; - public short[] productDependent = new short[10]; - public short[] thresholds = new short[16]; - public int version; - public boolean spotBlanking; - // not bothering with offsets for now - - public int getElevationAngle() { - return Message.decodeElevation(productDependent[2]); - } - - public int getElevationSegmentNumber() { - // Assumes only one bit is set. - - int v = productDependent[0]; - for (int i = 0; i < 5; ++i) { - if ((v & (2 << i)) != 0) // First segment bit is 2nd LSB in word. - return i + 1; // Return one-based result. - } - return 0; - } - - // 31 (USP), 151 (USD), 150 (USW) - Hours - // 173 (DUA) - Minutes - public int getTimeSpan() { - return productDependent[1]; - } - - public boolean isBzip2Compressed() { - return productDependent[7] == 1; - } - - public int getUncompressedSize() { - return ((productDependent[8] & 0xffff) << 16) - | (productDependent[9] & 0xffff); - } - } - - public static PDB pdbOfMessage(byte[] msg) { - ByteBuffer buf = ByteBuffer.wrap(msg); - buf.position(18); - int divider = buf.getShort(); - Message.checkFormat(divider == -1, "expected block divider"); - return decodePDB(buf); - } - - public static byte[] extractHeaderAndPDB(byte[] msg) { - byte[] result = new byte[Math.min(msg.length, 120)]; - System.arraycopy(msg, 0, result, 0, result.length); - return result; - } - - public PDB pdb; - - protected static PDB decodePDB(ByteBuffer buf) { - PDB pdb = new PDB(); - pdb.lat = buf.getInt(); - pdb.lon = buf.getInt(); - pdb.height = buf.getShort(); - pdb.productCode = buf.getShort(); - pdb.opMode = buf.getShort(); - pdb.vcp = buf.getShort(); - pdb.sequence = buf.getShort(); - pdb.volumeScan = buf.getShort(); - pdb.volumeScanTime = decodeTime(buf); - pdb.productGenerationTime = decodeTime(buf); - pdb.productDependent[0] = buf.getShort(); - pdb.productDependent[1] = buf.getShort(); - pdb.elevationNumber = buf.getShort(); - pdb.productDependent[2] = buf.getShort(); - buf.asShortBuffer().get(pdb.thresholds, 0, 16); - buf.position(buf.position() + 32); - buf.asShortBuffer().get(pdb.productDependent, 3, 7); - buf.position(buf.position() + 14); - pdb.version = buf.get() & 0xff; - pdb.spotBlanking = buf.get() == 1; - return pdb; - } - - @Override - protected void decodeBlock(int index, ByteBuffer buf) { - if (index == 1) { - int divider = buf.getShort(); - Message.checkFormat(divider == -1, "expected block divider"); - pdb = decodePDB(buf); - } - } - - @Override - protected void decodeBlocks(ByteBuffer buf) { - ByteBuffer block; - - // The header counts as one block - int nBlocks = buf.getShort(); - - // Read the PDB which is in a fixed-size block - if (nBlocks < 2) - return; - block = buf.slice(); - block.limit(50 * 2); - decodeBlock(1, block); - buf.position(buf.position() + 50 * 2); - - /* // Don't bother with content blocks for now - for (int i = 1; i < nBlocks; ++i) { - int divider = buf.getShort(); - Message.checkFormat(divider == -1, "expected block divider"); - int blockSize = buf.getInt(buf.position() + 2); - block = buf.slice(); - block.limit(blockSize); - decodeBlock(i, block); - buf.position(buf.position() + blockSize); - } - */ - } - - -} diff --git a/RadarServer/com.raytheon.rcm.lib/src/com/raytheon/rcm/message/MD.java b/RadarServer/com.raytheon.rcm.lib/src/com/raytheon/rcm/message/MD.java deleted file mode 100755 index ef9e8dd1a0..0000000000 --- a/RadarServer/com.raytheon.rcm.lib/src/com/raytheon/rcm/message/MD.java +++ /dev/null @@ -1,78 +0,0 @@ -/** - * This software was developed and / or modified by Raytheon Company, - * pursuant to Contract DG133W-05-CQ-1067 with the US Government. - * - * U.S. EXPORT CONTROLLED TECHNICAL DATA - * This software product contains export-restricted data whose - * export/transfer/disclosure is restricted by U.S. law. Dissemination - * to non-U.S. persons whether in the United States or abroad requires - * an export license or other authorization. - * - * Contractor Name: Raytheon Company - * Contractor Address: 6825 Pine Street, Suite 340 - * Mail Stop B8 - * Omaha, NE 68106 - * 402.291.0100 - * - * See the AWIPS II Master Rights File ("Master Rights File.pdf") for - * further licensing information. - **/ -package com.raytheon.rcm.message; - -import java.nio.ByteBuffer; - -/** - * Factory class for decoding messages. Only works on message currently of - * interest to the RadarServer. - * - *
- *
- * SOFTWARE HISTORY
- * Date         Ticket#    Engineer    Description
- * ------------ ---------- ----------- --------------------------
- * 2016-05-05   DR 18800   jdynina     Removed alerting
- * 2016-05-06   DCS18795   jdynina     Added CPM
- *
- * 
- */ - -public class MD { - public static Message decode(byte[] msg) { - int messageCode = Message.messageCodeOf(msg); - - Class clazz; - switch (messageCode) { - case Message.GSM: - clazz = GSM.class; - break; - case Message.COMMAND_PARAMETER_MESSAGE: - clazz = CPM.class; - break; - case Message.REQUEST_RESPONSE: - clazz = RequestResponse.class; - break; - case Message.PRODUCT_LIST: - clazz = ProductList.class; - break; - default: - /* - * TODO: Is it safe to assume >16 is a graphic product? Could check - * by comparing the pdb's productCode (or not? -- is it always the - * same?) and the offsets in the pdb to the determined offsets.. - */ - clazz = Message.class; - } - - Message result; - try { - result = (Message) clazz.newInstance(); - } catch (Exception e) { - throw new MessageFormatException(e); - } - - ByteBuffer buf = ByteBuffer.wrap(msg); - result.decode(buf); - - return result; - } -} diff --git a/RadarServer/com.raytheon.rcm.lib/src/com/raytheon/rcm/message/MaxConnectTimeDisable.java b/RadarServer/com.raytheon.rcm.lib/src/com/raytheon/rcm/message/MaxConnectTimeDisable.java deleted file mode 100755 index 8785f72e76..0000000000 --- a/RadarServer/com.raytheon.rcm.lib/src/com/raytheon/rcm/message/MaxConnectTimeDisable.java +++ /dev/null @@ -1,40 +0,0 @@ -/** - * This software was developed and / or modified by Raytheon Company, - * pursuant to Contract DG133W-05-CQ-1067 with the US Government. - * - * U.S. EXPORT CONTROLLED TECHNICAL DATA - * This software product contains export-restricted data whose - * export/transfer/disclosure is restricted by U.S. law. Dissemination - * to non-U.S. persons whether in the United States or abroad requires - * an export license or other authorization. - * - * Contractor Name: Raytheon Company - * Contractor Address: 6825 Pine Street, Suite 340 - * Mail Stop B8 - * Omaha, NE 68106 - * 402.291.0100 - * - * See the AWIPS II Master Rights File ("Master Rights File.pdf") for - * further licensing information. - **/ -package com.raytheon.rcm.message; - -import java.nio.ByteBuffer; - -public class MaxConnectTimeDisable extends Message { - public static byte[] encode(int source, int dest, int minutes) { - return Message.encode(Message.MAX_CONNECT_TIME_DISABLE_REQUEST, - source, dest, encodeBlock(minutes)); - } - - public static byte[] encodeBlock(int minutes) { - ByteBuffer buf = ByteBuffer.allocate(3 * 2); - buf.putShort((short) minutes); - buf.putShort((short) 0); // "spare" - buf.putShort((short) 0); // "spare" - return buf.array(); - } - - // We only need the static utility methods for now - private MaxConnectTimeDisable() { } -} diff --git a/RadarServer/com.raytheon.rcm.lib/src/com/raytheon/rcm/message/Message.java b/RadarServer/com.raytheon.rcm.lib/src/com/raytheon/rcm/message/Message.java deleted file mode 100755 index 9d2bf3984f..0000000000 --- a/RadarServer/com.raytheon.rcm.lib/src/com/raytheon/rcm/message/Message.java +++ /dev/null @@ -1,291 +0,0 @@ -/** - * This software was developed and / or modified by Raytheon Company, - * pursuant to Contract DG133W-05-CQ-1067 with the US Government. - * - * U.S. EXPORT CONTROLLED TECHNICAL DATA - * This software product contains export-restricted data whose - * export/transfer/disclosure is restricted by U.S. law. Dissemination - * to non-U.S. persons whether in the United States or abroad requires - * an export license or other authorization. - * - * Contractor Name: Raytheon Company - * Contractor Address: 6825 Pine Street, Suite 340 - * Mail Stop B8 - * Omaha, NE 68106 - * 402.291.0100 - * - * See the AWIPS II Master Rights File ("Master Rights File.pdf") for - * further licensing information. - **/ -package com.raytheon.rcm.message; - -import java.nio.ByteBuffer; -import java.util.Calendar; -import java.util.GregorianCalendar; -import java.util.SimpleTimeZone; -import java.util.TimeZone; - -/** - * Base class for representing Nexrad messages. Also provides utility routines - * for encoding and decoding messages. - * - *
- *
- * SOFTWARE HISTORY
- * Date         Ticket#    Engineer    Description
- * ------------ ---------- ----------- --------------------------
- * 2016-05-02   DR 18800   jdynina     Removed alerting
- * 2016-05-06   DCS18795   jdynina     Added CCM and CPM processing
- *
- * 
- */ -public class Message { - public static final int PRODUCT_REQUEST = 0; - public static final int GSM = 2; - public static final int REQUEST_RESPONSE = 3; - public static final int MAX_CONNECT_TIME_DISABLE_REQUEST = 4; - public static final int EXTERNAL_DATA = 5; - public static final int PRODUCT_LIST = 8; - public static final int SIGN_ON = 11; - public static final int COMMAND_PARAMETER_MESSAGE = 12; - public static final int COMMAND_CONTROL_MESSAGE = 14; - public static final int BIAS_TABLE = 15; - public static final int FREE_TEXT_MESSAGE = 75; - - public short messageCode; - public short sourceId; - public short destId; - public static short version = 0; - public Calendar time; - protected byte[][] blocks; - - protected static final int HEADER_SIZE = 9 * 2; // Does not include block - // divider - - public static byte[] encode(int code, int source, int dest, byte[] block) { - Message msg = new Message(); - msg.messageCode = (short) code; - msg.sourceId = (short) source; - msg.destId = (short) dest; - msg.time = Calendar.getInstance(); - msg.blocks = new byte[1][]; - msg.blocks[0] = block; - return msg.encode(); - } - - public static byte[] encode(int code, Calendar time, int source, int dest, - byte[][] blocks) { - Message msg = new Message(); - msg.messageCode = (short) code; - msg.sourceId = (short) source; - msg.destId = (short) dest; - msg.time = time; - msg.blocks = blocks; - return msg.encode(); - } - - public byte[] encode() { - - int payloadSize = 0; - for (byte[] block : blocks) { - if (block.length > 65535) - throw new MessageFormatException("Block too large"); - payloadSize += 4 /* block divider and block size */+ block.length; - } - - int totalSize = HEADER_SIZE + payloadSize; - if (messageCode == COMMAND_CONTROL_MESSAGE) { - totalSize = totalSize + 2; - } - - ByteBuffer buf = ByteBuffer.allocate(totalSize); - - encodeHeader(buf); - for (byte[] block : blocks) { - buf.putShort((short) -1); - - if (messageCode == COMMAND_CONTROL_MESSAGE) { - buf.putShort(version); // version number - buf.putShort((short) (block.length + 6)); - version++; - } else { - buf.putShort((short) (block.length + 4)); - } - - buf.put(block); - } - return buf.array(); - } - - protected void encodeHeader(ByteBuffer buf) { - int totalSize = buf.limit() - buf.position(); - buf.putShort(messageCode); - encodeTime(buf, time); - buf.putInt(totalSize); - buf.putShort(sourceId); - buf.putShort(destId); - buf.putShort((short) (blocks.length + 1)); // header counts as one block - } - - public static int messageCodeOf(byte[] msg) { - return ((msg[0] & 0xff) << 8) | (msg[1] & 0xff); - } - - public static short sourceIdOf(byte[] msg) { - ByteBuffer buf = ByteBuffer.wrap(msg); - return buf.getShort(12); - } - - public static void setSourceIdOf(byte[] msg, short id) { - ByteBuffer buf = ByteBuffer.wrap(msg); - buf.putShort(12, id); - } - - protected static final TimeZone gmt = new SimpleTimeZone(0, "GMT"); // TimeZone.getTimeZone("GMT+0"); - - public static void encodeTime(ByteBuffer buf, Calendar time) { - // The provided date may not be GMT... - GregorianCalendar gmtDate = new GregorianCalendar(gmt); - gmtDate.setTimeInMillis(time.getTimeInMillis()); - - /* - * Despite the documentation specifying "Julian days", it appears to use - * the Gregorian calendar. - */ - short julianDays; - int year = gmtDate.get(Calendar.YEAR); - - if (year >= 1970) - julianDays = (short) (gmtDate.getTimeInMillis() - / (24 * 60 * 60 * 1000) + 1); - else - julianDays = 0; // TODO: is this worth throwing an exception over? - - int seconds = gmtDate.get(Calendar.HOUR_OF_DAY) * 3600 - + gmtDate.get(Calendar.MINUTE) * 60 - + gmtDate.get(Calendar.SECOND); - - buf.putShort(julianDays); - buf.putInt(seconds); - } - - public static Calendar decodeTime(ByteBuffer buf) { - int julianDays = buf.getShort() & 0xffff; - int seconds = buf.getInt(); - Calendar time = new GregorianCalendar(gmt); - - time.setTimeInMillis(0); - time.set(1970, Calendar.JANUARY, 1); - time.add(Calendar.SECOND, (julianDays - 1) * 24 * 60 * 60 + seconds); - - return time; - } - - /** - * Encodes a signed elevation angle in tenths of degrees into the unsigned - * format used in Nexrad messages. Does not account for the - * multiple-elevation flags. See {@link com.raytheon.rcm.request.Request} - * for those. - * - * @param elev - * the elevation angle - * @return the encoded value - */ - public static int encodeElevation(int elev) { - if (elev >= 0) - return Math.min(elev, 1800); - else { - if (elev > -1800) - return 3600 + elev; - else - return 1801; - } - } - - public static int decodeElevation(int elev) { - if (elev > 1800) - return elev - 3600; - else - return elev; - } - - public static Message decodeHeader(byte[] msg) { - Message result = new Message(); - result.decodeHeader(ByteBuffer.wrap(msg)); - return result; - } - - protected void decode(ByteBuffer buf) { - decodeHeader(buf); - decodeBlocks(buf); - } - - // TODO needs to throw something - protected void decodeHeader(ByteBuffer buf) { - messageCode = buf.getShort(); - time = decodeTime(buf); - buf.getInt(); // total size field; unused - sourceId = buf.getShort(); - destId = buf.getShort(); - } - - /** - * Decodes the blocks following the header block. Not all messages have the - * same block structure so this method may be overridden. - * - * @param buf - * must be positioned at the block count - */ - protected void decodeBlocks(ByteBuffer buf) { - decodeSimpleBlocks(buf); - } - - /** - * Decodes the blocks that are prefixed by a length. This is the structure - * of most messages received from an RPG that are not products. - */ - protected void decodeSimpleBlocks(ByteBuffer buf) { - int nBlocks = buf.getShort(); - // Start at 1 because the header block counts as 1 - for (int i = 1; i < nBlocks; ++i) { - int divider = buf.getShort(); - Message.checkFormat(divider == -1, "expected block divider"); - - if (messageCode == COMMAND_PARAMETER_MESSAGE) { - buf.getShort(); // skip over version number - } - - int blockSize = buf.getShort(); - ByteBuffer block = buf.duplicate(); - - if (messageCode != COMMAND_PARAMETER_MESSAGE) { - block.limit(block.position() + blockSize); - } - - decodeBlock(i, block); - - if (messageCode == COMMAND_PARAMETER_MESSAGE) { - buf.position(buf.limit()); - } else { - buf.position(buf.position() + blockSize); - } - } - } - - /** - * Decode a message block. Default implementation does nothing. - * - * @param index - * Block index starting at one (The header block would be index - * zero.) - */ - protected void decodeBlock(int index, ByteBuffer buf) { - // nothing - } - - protected static void checkFormat(boolean condition, String message) - throws MessageFormatException { - if (!condition) - throw new MessageFormatException(message); - } -} diff --git a/RadarServer/com.raytheon.rcm.lib/src/com/raytheon/rcm/message/MessageFormatException.java b/RadarServer/com.raytheon.rcm.lib/src/com/raytheon/rcm/message/MessageFormatException.java deleted file mode 100755 index 5614e3bd31..0000000000 --- a/RadarServer/com.raytheon.rcm.lib/src/com/raytheon/rcm/message/MessageFormatException.java +++ /dev/null @@ -1,42 +0,0 @@ -/** - * This software was developed and / or modified by Raytheon Company, - * pursuant to Contract DG133W-05-CQ-1067 with the US Government. - * - * U.S. EXPORT CONTROLLED TECHNICAL DATA - * This software product contains export-restricted data whose - * export/transfer/disclosure is restricted by U.S. law. Dissemination - * to non-U.S. persons whether in the United States or abroad requires - * an export license or other authorization. - * - * Contractor Name: Raytheon Company - * Contractor Address: 6825 Pine Street, Suite 340 - * Mail Stop B8 - * Omaha, NE 68106 - * 402.291.0100 - * - * See the AWIPS II Master Rights File ("Master Rights File.pdf") for - * further licensing information. - **/ -package com.raytheon.rcm.message; - -/** - * Exception raised when there is a problem decoding or encoding a message. - * - * This is currently a runtime exception because radar components that respond - * to messages operate have nothing to do if a message cannot be decoded. - */ - -public class MessageFormatException extends RuntimeException { - - public MessageFormatException() { - super(); - } - - public MessageFormatException(String message) { - super(message); - } - - public MessageFormatException(Throwable cause) { - super(cause); - } -} diff --git a/RadarServer/com.raytheon.rcm.lib/src/com/raytheon/rcm/message/MessageInfo.java b/RadarServer/com.raytheon.rcm.lib/src/com/raytheon/rcm/message/MessageInfo.java deleted file mode 100755 index 9c58773831..0000000000 --- a/RadarServer/com.raytheon.rcm.lib/src/com/raytheon/rcm/message/MessageInfo.java +++ /dev/null @@ -1,65 +0,0 @@ -/** - * This software was developed and / or modified by Raytheon Company, - * pursuant to Contract DG133W-05-CQ-1067 with the US Government. - * - * U.S. EXPORT CONTROLLED TECHNICAL DATA - * This software product contains export-restricted data whose - * export/transfer/disclosure is restricted by U.S. law. Dissemination - * to non-U.S. persons whether in the United States or abroad requires - * an export license or other authorization. - * - * Contractor Name: Raytheon Company - * Contractor Address: 6825 Pine Street, Suite 340 - * Mail Stop B8 - * Omaha, NE 68106 - * 402.291.0100 - * - * See the AWIPS II Master Rights File ("Master Rights File.pdf") for - * further licensing information. - **/ -package com.raytheon.rcm.message; - -import java.util.Arrays; -import java.util.HashSet; - -/** Provides general information about Nexrad messages and products. - * - *

- * Try to minimize the use of this class. There should be as few - * dependencies as possible on a database that will need to be updated whenever - * a new elevation-based radar product is developed. Also, this information - * may not be correct in all contexts. For example, the DMD product (#149) - * has an elevation parameter on WSR-88D, but not TDWR. - * - *

- * Current uses: - * - *

- * OTRManager: If an product is elevation-based we have to interpret - * multi-elevation requests in order to determine how many products to - * expect in response to a request. - * - *

- * StandardProductDistInfoDB.getProductDistInfo: If a product is not - * elevation-based, do not try to match based on elevation. - */ -public class MessageInfo { - - private static HashSet elevationProductCodes; - - static { - elevationProductCodes = new HashSet(Arrays.asList( - 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 43, - 44, 45, 46, 55, 56, 93, 94, 99, 132, 133, 139, 143, 149, 153, - 154, 155, 158, 159, 160, 161, 162, 163, 164, 165, 180, 181, - 182, 183, 185, 186, 187)); - } - - /** - * Returns true if the specified product accepts an elevation angle - * in product-dependent word 22. - */ - public static boolean isElevationBasedProduct(int messageCode) { - return elevationProductCodes.contains(messageCode); - } -} diff --git a/RadarServer/com.raytheon.rcm.lib/src/com/raytheon/rcm/message/ProductList.java b/RadarServer/com.raytheon.rcm.lib/src/com/raytheon/rcm/message/ProductList.java deleted file mode 100755 index 50a37ceca5..0000000000 --- a/RadarServer/com.raytheon.rcm.lib/src/com/raytheon/rcm/message/ProductList.java +++ /dev/null @@ -1,57 +0,0 @@ -/** - * This software was developed and / or modified by Raytheon Company, - * pursuant to Contract DG133W-05-CQ-1067 with the US Government. - * - * U.S. EXPORT CONTROLLED TECHNICAL DATA - * This software product contains export-restricted data whose - * export/transfer/disclosure is restricted by U.S. law. Dissemination - * to non-U.S. persons whether in the United States or abroad requires - * an export license or other authorization. - * - * Contractor Name: Raytheon Company - * Contractor Address: 6825 Pine Street, Suite 340 - * Mail Stop B8 - * Omaha, NE 68106 - * 402.291.0100 - * - * See the AWIPS II Master Rights File ("Master Rights File.pdf") for - * further licensing information. - **/ -package com.raytheon.rcm.message; - -import java.nio.ByteBuffer; - -public class ProductList extends Message { - public static class Product { - public short productCode; - public short elevation; // elevation in 10ths of degrees or altitude in ??? - public short interval; // "Distribution class"; - public short p1, p2, p3, p4; - } - - public Product[] products; - - public static Product[] decode(byte[] msg) { - return ((ProductList) MD.decode(msg)).products; - } - - @Override - protected void decodeBlock(int index, ByteBuffer buf) { - if (index == 1) { - int nProducts = buf.getShort(); - buf.getShort(); // reserved field - products = new Product[nProducts]; - for (int i = 0; i < nProducts; ++i) { - Product p = new Product(); - p.productCode = buf.getShort(); - p.elevation = buf.getShort(); - p.p1 = buf.getShort(); - p.p2 = buf.getShort(); - p.p3 = buf.getShort(); - p.p4 = buf.getShort(); - p.interval = buf.getShort(); - products[i] = p; - } - } - } -} diff --git a/RadarServer/com.raytheon.rcm.lib/src/com/raytheon/rcm/message/ProductRequest.java b/RadarServer/com.raytheon.rcm.lib/src/com/raytheon/rcm/message/ProductRequest.java deleted file mode 100755 index 8d19649c8e..0000000000 --- a/RadarServer/com.raytheon.rcm.lib/src/com/raytheon/rcm/message/ProductRequest.java +++ /dev/null @@ -1,75 +0,0 @@ -/** - * This software was developed and / or modified by Raytheon Company, - * pursuant to Contract DG133W-05-CQ-1067 with the US Government. - * - * U.S. EXPORT CONTROLLED TECHNICAL DATA - * This software product contains export-restricted data whose - * export/transfer/disclosure is restricted by U.S. law. Dissemination - * to non-U.S. persons whether in the United States or abroad requires - * an export license or other authorization. - * - * Contractor Name: Raytheon Company - * Contractor Address: 6825 Pine Street, Suite 340 - * Mail Stop B8 - * Omaha, NE 68106 - * 402.291.0100 - * - * See the AWIPS II Master Rights File ("Master Rights File.pdf") for - * further licensing information. - **/ -package com.raytheon.rcm.message; - -import java.nio.ByteBuffer; -import java.util.Calendar; - -import com.raytheon.rcm.request.Request; - - -public class ProductRequest extends Message { - - public static byte[] encode(Request request) { - Request[] requests = { request }; - Message msg = new Message(); - msg.messageCode = Message.PRODUCT_REQUEST; - msg.time = Calendar.getInstance(); - msg.blocks = encodeRequestBlocks(requests); - return msg.encode(); - } - - public static byte[] encode(Request[] requests) { - Message msg = new Message(); - msg.messageCode = Message.PRODUCT_REQUEST; - msg.time = Calendar.getInstance(); - msg.blocks = encodeRequestBlocks(requests); - return msg.encode(); - } - - public static byte[][] encodeRequestBlocks(Request[] requests) { - byte[][] result = new byte[requests.length][]; - int i = 0; - for (Request req : requests) { - ByteBuffer buf = ByteBuffer.allocate(14 * 2); - buf.putShort(req.productCode); - buf.putShort((short)( (req.highPriority ? 1 << 15 : 0) | - (req.mapRequested ? 1 << 14 : 0)) ); - buf.putShort(req.sequence); - buf.putShort(req.count); - buf.putShort(req.interval); - if (req.getVolumeScanSelection() == Request.SELECT_SPECIFIC) - Message.encodeTime(buf, req.getVolumeScanTime()); - else { - buf.putShort((short) 0); // TODO: ? Awips1 code puts the negative value here too. So does nbtcp stuff in CODE - buf.putInt(req.getVolumeScanSelection()); - } - buf.putShort((short) req.pdw20); - buf.putShort((short) req.pdw21); - buf.putShort((short) req.pdw22); - buf.putShort((short) req.pdw23); - buf.putShort((short) req.pdw24); - buf.putShort((short) req.pdw25); - - result[i++] = buf.array(); - } - return result; - } -} diff --git a/RadarServer/com.raytheon.rcm.lib/src/com/raytheon/rcm/message/RequestResponse.java b/RadarServer/com.raytheon.rcm.lib/src/com/raytheon/rcm/message/RequestResponse.java deleted file mode 100755 index db33b72e7c..0000000000 --- a/RadarServer/com.raytheon.rcm.lib/src/com/raytheon/rcm/message/RequestResponse.java +++ /dev/null @@ -1,112 +0,0 @@ -/** - * This software was developed and / or modified by Raytheon Company, - * pursuant to Contract DG133W-05-CQ-1067 with the US Government. - * - * U.S. EXPORT CONTROLLED TECHNICAL DATA - * This software product contains export-restricted data whose - * export/transfer/disclosure is restricted by U.S. law. Dissemination - * to non-U.S. persons whether in the United States or abroad requires - * an export license or other authorization. - * - * Contractor Name: Raytheon Company - * Contractor Address: 6825 Pine Street, Suite 340 - * Mail Stop B8 - * Omaha, NE 68106 - * 402.291.0100 - * - * See the AWIPS II Master Rights File ("Master Rights File.pdf") for - * further licensing information. - **/ -package com.raytheon.rcm.message; - -import java.io.InputStream; -import java.nio.ByteBuffer; -import java.util.Calendar; -import java.util.Properties; - -public class RequestResponse extends Message { - public static final int NO_SUCH_MESSAGE_CODE = 0x80000000; - public static final int NO_SUCH_PRODUCT_CODE = 0x40000000; - public static final int NOT_GENERATED = 0x20000000; - public static final int OTR_PROCESS_FAULTED = 0x10000000; - public static final int NARROWBAND_LOADSHED = 0x08000000; - public static final int ILLEGAL_REQUEST = 0x04000000; - public static final int RPG_MEMORY_LOADSHED = 0x02000000; - public static final int RPG_CPU_LOADSHED = 0x01000000; - public static final int SLOT_UNAVAILABLE = 0x00800000; - public static final int TASK_FAILURE= 0x00400000; - public static final int TASK_UNAVAILABLE = 0x00200000; - public static final int AVAILABLE_NEXT_SCAN = 0x00100000; - public static final int MOMENT_DISABLED = 0x00080000; - public static final int INVALID_PASSWORD = 0x00040000; - //public static final int = 0x00020000; - public static final int ABORTED_SCAN = 0x00010000; - public static final int INVALID_PRODUCT_PARAMETERS = 0x00008000; - public static final int DATA_SEQUENCE_ERROR = 0x00004000; - public static final int TASK_SELF_TERMINATED = 0x00002000; - - public int errorCode; - public int sequence; - public int productCode; - public int elevationAngle; - public Calendar volumeScanTime; - - static private Properties messages; - static { - try { - messages = new Properties(); - InputStream ins = RequestResponse.class.getResourceAsStream("prrMessages.txt"); - if (ins != null) { - try { - messages.load(ins); - } finally { - ins.close(); - } - } - } catch (Exception e) { - // nothing - } - } - - public static RequestResponse decode(byte[] msg) { - RequestResponse result = new RequestResponse(); - result.decode(ByteBuffer.wrap(msg)); - return result; - } - - @Override - protected void decodeBlock(int index, ByteBuffer buf) { - if (index != 1) - return; - errorCode = buf.getInt(); - sequence = buf.getShort(); - productCode = buf.getShort(); - elevationAngle = buf.getShort(); - volumeScanTime = Message.decodeTime(buf); - /* Remaining bytes are documented as "spares". */ - } - - - - public String getErrorMessages() { - if (errorCode != 0) { - StringBuilder result = new StringBuilder(); - if (messages != null) { - for (int i = 31; i >= 0; --i) { - if ((errorCode & (1 << i)) != 0) { - if (result.length() > 0) - result.append(", "); - - String msg = messages.getProperty(Integer.toString(i)); - if (msg != null) - result.append(msg); - else - result.append("Unknown Error"); - } - } - } - return result.toString(); - } - return ""; - } -} diff --git a/RadarServer/com.raytheon.rcm.lib/src/com/raytheon/rcm/message/SignOn.java b/RadarServer/com.raytheon.rcm.lib/src/com/raytheon/rcm/message/SignOn.java deleted file mode 100755 index 981edf098d..0000000000 --- a/RadarServer/com.raytheon.rcm.lib/src/com/raytheon/rcm/message/SignOn.java +++ /dev/null @@ -1,47 +0,0 @@ -/** - * This software was developed and / or modified by Raytheon Company, - * pursuant to Contract DG133W-05-CQ-1067 with the US Government. - * - * U.S. EXPORT CONTROLLED TECHNICAL DATA - * This software product contains export-restricted data whose - * export/transfer/disclosure is restricted by U.S. law. Dissemination - * to non-U.S. persons whether in the United States or abroad requires - * an export license or other authorization. - * - * Contractor Name: Raytheon Company - * Contractor Address: 6825 Pine Street, Suite 340 - * Mail Stop B8 - * Omaha, NE 68106 - * 402.291.0100 - * - * See the AWIPS II Master Rights File ("Master Rights File.pdf") for - * further licensing information. - **/ -package com.raytheon.rcm.message; - -import java.nio.ByteBuffer; - -public class SignOn extends Message { - public static byte[] encode(int source, int dest, String userPassword, String portPassword, boolean overrideDisconnect) { - return Message.encode(Message.SIGN_ON, source, dest, - encodeSignOnBlock(userPassword, portPassword, overrideDisconnect)); - } - - public static byte[] encodeSignOnBlock(String userPassword, String portPassword, boolean overrideDisconnect) { - ByteBuffer buf = ByteBuffer.allocate(7 * 2); - StringBuilder sb = new StringBuilder(10); - // TODO: throw exception if passwords too long? - sb.append(userPassword); - sb.setLength(6); - sb.append(portPassword); - sb.setLength(10); - String creds = sb.toString().replace('\0', ' '); - buf.put(creds.getBytes()); // TODO: correct charset - buf.putShort((short) (overrideDisconnect ? 1 : 0)); - buf.putShort((short) 0); // "spare" - return buf.array(); - } - - // We only need the static utility methods for now - private SignOn() { } -} diff --git a/RadarServer/com.raytheon.rcm.lib/src/com/raytheon/rcm/message/StandAloneText.java b/RadarServer/com.raytheon.rcm.lib/src/com/raytheon/rcm/message/StandAloneText.java deleted file mode 100644 index 9a730a0cd5..0000000000 --- a/RadarServer/com.raytheon.rcm.lib/src/com/raytheon/rcm/message/StandAloneText.java +++ /dev/null @@ -1,53 +0,0 @@ -/** - * This software was developed and / or modified by Raytheon Company, - * pursuant to Contract DG133W-05-CQ-1067 with the US Government. - * - * U.S. EXPORT CONTROLLED TECHNICAL DATA - * This software product contains export-restricted data whose - * export/transfer/disclosure is restricted by U.S. law. Dissemination - * to non-U.S. persons whether in the United States or abroad requires - * an export license or other authorization. - * - * Contractor Name: Raytheon Company - * Contractor Address: 6825 Pine Street, Suite 340 - * Mail Stop B8 - * Omaha, NE 68106 - * 402.291.0100 - * - * See the AWIPS II Master Rights File ("Master Rights File.pdf") for - * further licensing information. - **/ -package com.raytheon.rcm.message; - -import java.io.ByteArrayOutputStream; -import java.nio.ByteBuffer; - -public class StandAloneText { - public static byte[] decodeTextBytes(byte[] msg) { - ByteArrayOutputStream result = new ByteArrayOutputStream(msg.length); - ByteBuffer buf = ByteBuffer.wrap(msg); - - /* The format of the blocks differ from other products blocks - * that have a block ID and 32-bit length. Just perform - * some simple checking and jump to where the data should be - */ - Message.checkFormat(buf.getShort(18) == -1 && - buf.getShort(0x78) == -1, "expected block divider"); - - buf.position(0x78 + 2); - - int nPages = buf.getShort() & 0xffff; - while (nPages-- > 0) { - while (true) { - int lineLength = buf.getShort() & 0xffff; - if (lineLength == 0xffff) - break; - result.write(msg, buf.position(), lineLength); - result.write('\n'); - buf.position(buf.position() + lineLength); - } - } - - return result.toByteArray(); - } -} diff --git a/RadarServer/com.raytheon.rcm.lib/src/com/raytheon/rcm/message/prrMessages.txt b/RadarServer/com.raytheon.rcm.lib/src/com/raytheon/rcm/message/prrMessages.txt deleted file mode 100644 index 8e9941ee0d..0000000000 --- a/RadarServer/com.raytheon.rcm.lib/src/com/raytheon/rcm/message/prrMessages.txt +++ /dev/null @@ -1,18 +0,0 @@ -13 Task Failure (self-terminated) -14 Not Gen (Data Sequence Error) -15 Invalid Parameters -16 Volume Scan Aborted -18 Invalid Password -19 Ldshed (Moment Dis) -20 Avail Next Vol Scan -21 Unavail (Task Not Ld) -22 Failure (Task Failed) -23 Unavail (Slots) -24 Ldshed (RPG CPU) -25 Ldshed (RPG Mem) -26 Illegal Request -27 Ldshed (Narrowband) -28 Gen Fault (Req Proc) -29 Not Gen -30 No Such Product Code -31 No Such Message Code diff --git a/RadarServer/com.raytheon.rcm.lib/src/com/raytheon/rcm/mqsrvr/EventObj.java b/RadarServer/com.raytheon.rcm.lib/src/com/raytheon/rcm/mqsrvr/EventObj.java deleted file mode 100755 index 767d0e84b4..0000000000 --- a/RadarServer/com.raytheon.rcm.lib/src/com/raytheon/rcm/mqsrvr/EventObj.java +++ /dev/null @@ -1,45 +0,0 @@ -/** - * This software was developed and / or modified by Raytheon Company, - * pursuant to Contract DG133W-05-CQ-1067 with the US Government. - * - * U.S. EXPORT CONTROLLED TECHNICAL DATA - * This software product contains export-restricted data whose - * export/transfer/disclosure is restricted by U.S. law. Dissemination - * to non-U.S. persons whether in the United States or abroad requires - * an export license or other authorization. - * - * Contractor Name: Raytheon Company - * Contractor Address: 6825 Pine Street, Suite 340 - * Mail Stop B8 - * Omaha, NE 68106 - * 402.291.0100 - * - * See the AWIPS II Master Rights File ("Master Rights File.pdf") for - * further licensing information. - **/ -package com.raytheon.rcm.mqsrvr; - -import javax.xml.bind.annotation.XmlSeeAlso; - -import com.raytheon.rcm.event.ConfigEvent; -import com.raytheon.rcm.event.OtrEvent; -import com.raytheon.rcm.event.RadarEvent; -import com.raytheon.rcm.message.Message; - - -@XmlSeeAlso({RadarEvent.class, ConfigEvent.class, OtrEvent.class}) -public class EventObj { - public static RadarEvent filterRadarEvent(RadarEvent ev) { - byte[] msg = ev.getMessageData(); - if (msg != null) { - try { - if (Message.messageCodeOf(msg) != Message.GSM) - return null; - } catch (RuntimeException e) { - msg = null; - } - ev = new RadarEvent(ev.getType(), ev.getRadarID(), msg); - } - return ev; - } -} diff --git a/RadarServer/com.raytheon.rcm.lib/src/com/raytheon/rcm/mqsrvr/ReplyObj.java b/RadarServer/com.raytheon.rcm.lib/src/com/raytheon/rcm/mqsrvr/ReplyObj.java deleted file mode 100755 index 05008a1745..0000000000 --- a/RadarServer/com.raytheon.rcm.lib/src/com/raytheon/rcm/mqsrvr/ReplyObj.java +++ /dev/null @@ -1,176 +0,0 @@ -/** - * This software was developed and / or modified by Raytheon Company, - * pursuant to Contract DG133W-05-CQ-1067 with the US Government. - * - * U.S. EXPORT CONTROLLED TECHNICAL DATA - * This software product contains export-restricted data whose - * export/transfer/disclosure is restricted by U.S. law. Dissemination - * to non-U.S. persons whether in the United States or abroad requires - * an export license or other authorization. - * - * Contractor Name: Raytheon Company - * Contractor Address: 6825 Pine Street, Suite 340 - * Mail Stop B8 - * Omaha, NE 68106 - * 402.291.0100 - * - * See the AWIPS II Master Rights File ("Master Rights File.pdf") for - * further licensing information. - **/ -package com.raytheon.rcm.mqsrvr; - -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Collection; - -import javax.xml.bind.annotation.XmlAccessType; -import javax.xml.bind.annotation.XmlAccessorType; -import javax.xml.bind.annotation.XmlAttribute; -import javax.xml.bind.annotation.XmlElement; -import javax.xml.bind.annotation.XmlList; -import javax.xml.bind.annotation.XmlRootElement; -import javax.xml.bind.annotation.XmlSeeAlso; -import javax.xml.bind.annotation.XmlType; - -import com.raytheon.rcm.ccmreq.CcmRequestDefinition; -import com.raytheon.rcm.config.Globals; -import com.raytheon.rcm.config.RadarConfig; -import com.raytheon.rcm.request.RpsList; -import com.raytheon.rcm.rmr.ActiveRequest; - -/** - *

- *
- * SOFTWARE HISTORY
- * Date         Ticket#    Engineer    Description
- * ------------ ---------- ----------- --------------------------
- * 2016-05-02   DR 18800   jdynina     Removed alerting
- * 2016-05-10   DCS18795   jdynina     Added CCM, CPM
- * 
- */ - -@XmlRootElement(name = "reply") -@XmlSeeAlso({ ReplyObj.RadarsReply.class, ReplyObj.ConfigReply.class, - ReplyObj.StatusMessagesReply.class, ReplyObj.RpsListReply.class, - ReplyObj.GlobalConfigReply.class, ReplyObj.RmrReply.class, - ReplyObj.CcmReqReply.class}) -public class ReplyObj { - @XmlAttribute(required = false) - public String error; - - public ReplyObj() { - - } - - public ReplyObj(String error) { - this.error = error; - } - - @XmlRootElement - public static class RadarsReply extends ReplyObj { - @XmlElement - @XmlList - public Collection radarIDs = new ArrayList(); - } - - @XmlRootElement - public static class ConfigReply extends ReplyObj { - public Collection config = new ArrayList(); - } - - @XmlType(name = "status", propOrder = {}) - @XmlAccessorType(XmlAccessType.FIELD) - public static class ROStatus { - @XmlAttribute(name = "name") - public String radarID; - public byte[] currentGSM; - public byte[] currentCPM; - public byte[] currentPTL; - public byte[] lastGSM; - public byte[] lastCPM; - public byte[] lastPTL; - - public ROStatus() { - } - } - - @XmlRootElement - @XmlAccessorType(XmlAccessType.FIELD) - public static class StatusMessagesReply extends ReplyObj { - public Collection status = new ArrayList(); - - public StatusMessagesReply() { - } - - public StatusMessagesReply(ROStatus status) { - this.status = Arrays.asList(status); - } - - public StatusMessagesReply(Collection status) { - this.status = new ArrayList(status); - } - } - - @XmlRootElement - public static class CcmReqReply extends ReplyObj { - public CcmRequestDefinition ccmRequest; - } - - @XmlRootElement - public static class RpsListReply extends ReplyObj { - public RpsList rpsList; - - public RpsListReply() { - } - - public RpsListReply(RpsList rpsList) { - this.rpsList = rpsList; - } - } - - @XmlRootElement - public static class RmrReply extends ReplyObj { - @XmlElement(name = "activeRequest") - public Collection list = new ArrayList(); - } - - @XmlRootElement - public static class GlobalConfigReply extends ReplyObj { - public Globals global; - } - - public static ReplyObj toGetRadarList(Collection radarIDs) { - RadarsReply r = new RadarsReply(); - r.radarIDs.addAll(radarIDs); - return r; - } - - public static ReplyObj toGetRadarConfig(RadarConfig radarConfig) { - ConfigReply r = new ConfigReply(); - r.config = Arrays.asList(radarConfig); - return r; - } - - public static ReplyObj toGetRadarConfig(Collection radarConfig) { - ConfigReply r = new ConfigReply(); - r.config = radarConfig; - return r; - } - - public static ReplyObj toGetRadarStatusMessages(ROStatus radarStatus) { - StatusMessagesReply r = new StatusMessagesReply(radarStatus); - return r; - } - - public static ReplyObj toGetRadarStatusMessages( - Collection radarStatus) { - StatusMessagesReply r = new StatusMessagesReply(radarStatus); - return r; - } - - public static ReplyObj error(String message) { - ReplyObj r = new ReplyObj(); - r.error = message; - return r; - } -} diff --git a/RadarServer/com.raytheon.rcm.lib/src/com/raytheon/rcm/mqsrvr/ReqObj.java b/RadarServer/com.raytheon.rcm.lib/src/com/raytheon/rcm/mqsrvr/ReqObj.java deleted file mode 100644 index 5647488ab7..0000000000 --- a/RadarServer/com.raytheon.rcm.lib/src/com/raytheon/rcm/mqsrvr/ReqObj.java +++ /dev/null @@ -1,239 +0,0 @@ -/** - * This software was developed and / or modified by Raytheon Company, - * pursuant to Contract DG133W-05-CQ-1067 with the US Government. - * - * U.S. EXPORT CONTROLLED TECHNICAL DATA - * This software product contains export-restricted data whose - * export/transfer/disclosure is restricted by U.S. law. Dissemination - * to non-U.S. persons whether in the United States or abroad requires - * an export license or other authorization. - * - * Contractor Name: Raytheon Company - * Contractor Address: 6825 Pine Street, Suite 340 - * Mail Stop B8 - * Omaha, NE 68106 - * 402.291.0100 - * - * See the AWIPS II Master Rights File ("Master Rights File.pdf") for - * further licensing information. - **/ -package com.raytheon.rcm.mqsrvr; - -import java.util.ArrayList; -import java.util.List; - -import javax.xml.bind.annotation.XmlAttribute; -import javax.xml.bind.annotation.XmlElement; -import javax.xml.bind.annotation.XmlList; -import javax.xml.bind.annotation.XmlRootElement; -import javax.xml.bind.annotation.XmlSeeAlso; - -import com.raytheon.rcm.ccmreq.CcmRequestDefinition; -import com.raytheon.rcm.config.Globals; -import com.raytheon.rcm.config.RadarConfig; -import com.raytheon.rcm.request.Request; -import com.raytheon.rcm.rmr.MultipleRequest; - -/** - * Request messages that can be sent to the RadarServer. - * - *
- *
- * SOFTWARE HISTORY
- * Date         Ticket#    Engineer    Description
- * ------------ ---------- ----------- --------------------------
- * ...
- * 2014-02-03   DR 14762   D. Friedman Add SendConfigFile
- * 2016-05-25   DR 18800   jdynina     Removed alerting
- * 2016-05-10   DCS18795   jdynina     Add CCM
- * 
- * - */ -@XmlSeeAlso({ ReqObj.GetRadarList.class, ReqObj.GetRadarConfig.class, - ReqObj.SetRadarConfig.class, ReqObj.GetRadarStatus.class, - ReqObj.GetRadarStatusMessages.class, ReqObj.SendOneTimeRequests.class, - ReqObj.DebugCommand.class, ReqObj.DebugHandleMessage.class, - ReqObj.SendRpsList.class, ReqObj.SendRpsListData.class, - ReqObj.GetRpsList.class, ReqObj.GetGlobalConfig.class, - ReqObj.SetGlobalConfig.class, ReqObj.ActivateRMR.class, - ReqObj.CancelRMR.class, ReqObj.GetActiveRMRs.class, - ReqObj.GetCcmRequest.class, ReqObj.SendCcmRequest.class, - ReqObj.SendMessageToRPG.class, ReqObj.SendConfigFile.class }) -public class ReqObj { - @XmlRootElement - public static class GetRadarList extends ReqObj { - } - - public static class RadarReq extends ReqObj { - public String radarID; - - public String toString() { - return String.format("%s(%s)", getClass().getSimpleName(), radarID); - } - } - - @XmlRootElement - public static class GetRadarConfig extends RadarReq { - } - - @XmlRootElement - public static class SetRadarConfig extends RadarReq { - // TODO: Action action = ADD | REMOVE | MODIFY (or null) - public RadarConfig config; - } - - @XmlRootElement - public static class GetRadarStatus extends RadarReq { - } - - @XmlRootElement - public static class GetRadarStatusMessages extends RadarReq { - } - - @XmlRootElement - public static class SendOneTimeRequests extends ReqObj { - @XmlList - public List radarIDs = new ArrayList(); - @XmlElement(name = "request") - public List requests = new ArrayList(); - - public String toString() { - return String.format("%s(%s, ...)", getClass().getSimpleName(), - radarIDs); - } - } - - public static class RpsListReq extends ReqObj { - @XmlList - public List radarIDs = new ArrayList(); - public int vcp; - public Boolean store; - - public boolean isStore() { - return store != null && store.booleanValue(); - } - - public String toString() { - return String.format("%s(%s, vcp=%d, store=%s,...)", getClass() - .getSimpleName(), radarIDs, vcp, isStore()); - } - } - - @XmlRootElement - public static class SendRpsList extends RpsListReq { - @XmlElement(name = "request") - public List requests = new ArrayList(); - } - - @XmlRootElement - public static class SendRpsListData extends RpsListReq { - public byte[] listData; - } - - @XmlRootElement - public static class GetRpsList extends RadarReq { - public Integer vcp; // or null for current list - public Integer opMode; // TODO: should be removed eventually - } - - public static abstract class GlobalConfigReq extends ReqObj { - public Globals global; - } - - @XmlRootElement - public static class GetGlobalConfig extends GlobalConfigReq { - // nothing else - } - - @XmlRootElement - public static class SetGlobalConfig extends GlobalConfigReq { - // nothing else - } - - @XmlRootElement - public static class SendConfigFile extends ReqObj { - public String fileName; - public byte[] fileData; - - public String toString() { - return String.format("%s(%s, ...)", getClass().getSimpleName(), - fileName); - } - } - - @XmlRootElement - public static class ActivateRMR extends ReqObj { - public MultipleRequest multipleRequest; - } - - @XmlRootElement - public static class CancelRMR extends ReqObj { - public String requestName; - } - - @XmlRootElement - public static class GetActiveRMRs extends ReqObj { - // nothing - } - - @XmlRootElement - public static class GetCcmRequest extends RadarReq { - // nothing - } - - @XmlRootElement - public static class SendCcmRequest extends RadarReq { - public CcmRequestDefinition ccmRequest; - } - - @XmlRootElement - public static class SendMessageToRPG extends RadarReq { - public byte[] message; - } - - @XmlRootElement - public static class DebugCommand extends ReqObj { - public enum Command { - NOP, LOG_OTR_STATUS - } - - @XmlAttribute(required = true) - public Command command; - - public String toString() { - return String.format("%s(%s)", getClass().getSimpleName(), command); - } - } - - @XmlRootElement - public static class DebugHandleMessage extends RadarReq { - public byte[] message; - } - - public ReqObj() { - } - - public String toString() { - return getClass().getSimpleName(); - } - - public static ReqObj getRadarConfig(String radarID) { - GetRadarConfig r = new GetRadarConfig(); - r.radarID = radarID; - return r; - } - - public static ReqObj sendOTRs(List radarIDs, List requests) { - SendOneTimeRequests r = new SendOneTimeRequests(); - r.radarIDs.addAll(radarIDs); - r.requests.addAll(requests); - return r; - } - - public static ReqObj debugHandleMessage(String radarID, byte[] message) { - DebugHandleMessage r = new DebugHandleMessage(); - r.radarID = radarID; - r.message = message; - return r; - } -} diff --git a/RadarServer/com.raytheon.rcm.lib/src/com/raytheon/rcm/products/ElevationInfo.java b/RadarServer/com.raytheon.rcm.lib/src/com/raytheon/rcm/products/ElevationInfo.java deleted file mode 100644 index b8d5e6fbd0..0000000000 --- a/RadarServer/com.raytheon.rcm.lib/src/com/raytheon/rcm/products/ElevationInfo.java +++ /dev/null @@ -1,236 +0,0 @@ -/** - * This software was developed and / or modified by Raytheon Company, - * pursuant to Contract DG133W-05-CQ-1067 with the US Government. - * - * U.S. EXPORT CONTROLLED TECHNICAL DATA - * This software product contains export-restricted data whose - * export/transfer/disclosure is restricted by U.S. law. Dissemination - * to non-U.S. persons whether in the United States or abroad requires - * an export license or other authorization. - * - * Contractor Name: Raytheon Company - * Contractor Address: 6825 Pine Street, Suite 340 - * Mail Stop B8 - * Omaha, NE 68106 - * 402.291.0100 - * - * See the AWIPS II Master Rights File ("Master Rights File.pdf") for - * further licensing information. - **/ -package com.raytheon.rcm.products; - -import java.io.InputStream; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Collection; -import java.util.HashMap; -import java.util.HashSet; -import java.util.List; -import java.util.Scanner; - -import com.raytheon.rcm.config.RcmResourceProvider; - -/** - * TODO Add Description - * - *
- * 
- * SOFTWARE HISTORY
- * Date         Ticket#    Engineer    Description
- * ------------ ---------- ----------- --------------------------
- * 03/07/2013   DR15495    zwang       Load elevation info for SSSS radars
- * 04/04/2016   DR17885    jdynina     Added unique identification for OTR/RMR
- * 
- * 
- * - * @author dfriedman - * @version 1.0 - */ - -public class ElevationInfo { - // TODO: check all handling of -1/null vcp - - public static final List ELEVATION_LIST_RESOURCE_NAMES = Arrays - .asList("elevationLists.txt", "tdwrElevations.txt", - "ssssElevationLists.txt"); - private static volatile ElevationInfo instance; - private static volatile Runnable invalidateInstance; - - public static ElevationInfo getInstance() { - ElevationInfo result = instance; - if (result == null) { - synchronized (ElevationInfo.class) { - result = instance; - if (result == null) { - if (invalidateInstance == null) { - invalidateInstance = new Runnable() { - - @Override - public void run() { - synchronized (ElevationInfo.class) { - instance = null; - } - } - }; - RcmResourceProvider provider = RcmResourceProvider - .getInstance(); - for (String resource : ELEVATION_LIST_RESOURCE_NAMES) { - provider.addResourceChangeListener(resource, - invalidateInstance); - } - } - instance = result = new ElevationInfo(); - } - } - } - return result; - } - - /* want to be private, but needed by Loader */ - static class Sel { - public String radarID; - public int vcp; - - public Sel(String radarID, int vcp) { - super(); - this.radarID = radarID; - this.vcp = vcp; - } - - public boolean equals(Object obj) { - if (obj == this) - return true; - else if (obj instanceof Sel) { - Sel oth = (Sel) obj; - return ((radarID == null && oth.radarID == null) || radarID != null - && oth.radarID != null - && radarID.equalsIgnoreCase(oth.radarID)) - && vcp == oth.vcp; - } else - return false; - } - - public int hashCode() { - return (radarID != null ? radarID.hashCode() : 0) + vcp; - } - } - - public static class VCPInfo { - public int vcp; - public int opMode; - - // public RadarType radarType; - public String toString() { - return String.format("VCP%d", vcp); - } - } - - private ArrayList vcpInfo = new ArrayList(); - private HashMap staticInfo = new HashMap(); - - /* package */ElevationInfo() { - Scanner fs; - InputStream s; - - s = RcmResourceProvider.getInstance().getResourceAsStream( - "elevationLists.txt"); - fs = new Scanner(s); - try { - Loader.loadElevationInfo(fs, staticInfo, vcpInfo); - } finally { - fs.close(); - } - - // Load SSSS radar elevation lists - s = RcmResourceProvider.getInstance().getResourceAsStream( - "ssssElevationLists.txt"); - fs = new Scanner(s); - try { - Loader.loadSsssElevationInfo(fs, staticInfo); - } finally { - fs.close(); - } - - s = RcmResourceProvider.getInstance().getResourceAsStream( - "tdwrElevations.txt"); - fs = new Scanner(s); - try { - Loader.loadTdwrElevationInfo(fs, staticInfo); - } finally { - fs.close(); - } - - } - - public static final int OTR_CODE = -1; - public static final int RMR_CODE = -2; - public static final int OTR_TDWR_CODE = -3; - public static final int RMR_TDWR_CODE = -4; - - public Collection getVcpInfo() { - return vcpInfo; - } - - public int getOpModeForVcp(int vcp) { - for (VCPInfo vi : vcpInfo) - if (vi.vcp == vcp) - return vi.opMode; - return -1; - } - - /** - * Retrieves the list of elevation angles used by the given radar in the - * given VCP in the order they are scanned. This is intended to match the - * ORPGVCP_get_all_elevation_angles function in CODE. - * - * @param radarID - * @param vcp - * the VCP number or {@code OTR or RMR code} for a set of generic - * angles - * @return the list of angles in scanning order or {@code null} if not - * available - */ - public int[] getScanElevations(String radarID, int vcp) { - Sel sel1 = new Sel(radarID, vcp); - Sel sel2 = new Sel(null, vcp); - int[] elevs; - - elevs = staticInfo.get(sel1); - if (elevs != null) - return elevs; - elevs = staticInfo.get(sel2); - if (elevs != null) - return elevs; - - return null; - } - - /** - * Retrieves the set of unique elevation angles used by the given radar in - * the given VCP. - * - * @param radarID - * @param vcp - * the VCP number or {@code OTR or RMR code} for a set of generic - * angles - * @return the set of angles in ascending order or {@code null} if not - * available - */ - public int[] getUniqueElevations(String radarID, int vcp) { - // TODO: Unique, ascending - int[] elevs = getScanElevations(radarID, vcp); - if (elevs != null) { - HashSet set = new HashSet(elevs.length); - for (int e : elevs) - set.add(e); - - elevs = new int[set.size()]; - int i = 0; - for (int e : set) - elevs[i++] = e; - Arrays.sort(elevs); - } - return elevs; - } - -} diff --git a/RadarServer/com.raytheon.rcm.lib/src/com/raytheon/rcm/products/Loader.java b/RadarServer/com.raytheon.rcm.lib/src/com/raytheon/rcm/products/Loader.java deleted file mode 100644 index 9065811bcb..0000000000 --- a/RadarServer/com.raytheon.rcm.lib/src/com/raytheon/rcm/products/Loader.java +++ /dev/null @@ -1,376 +0,0 @@ -/** - * This software was developed and / or modified by Raytheon Company, - * pursuant to Contract DG133W-05-CQ-1067 with the US Government. - * - * U.S. EXPORT CONTROLLED TECHNICAL DATA - * This software product contains export-restricted data whose - * export/transfer/disclosure is restricted by U.S. law. Dissemination - * to non-U.S. persons whether in the United States or abroad requires - * an export license or other authorization. - * - * Contractor Name: Raytheon Company - * Contractor Address: 6825 Pine Street, Suite 340 - * Mail Stop B8 - * Omaha, NE 68106 - * 402.291.0100 - * - * See the AWIPS II Master Rights File ("Master Rights File.pdf") for - * further licensing information. - **/ -package com.raytheon.rcm.products; - -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Collection; -import java.util.EnumSet; -import java.util.HashMap; -import java.util.HashSet; -import java.util.List; -import java.util.Map; -import java.util.NoSuchElementException; -import java.util.Scanner; -import java.util.regex.Matcher; -import java.util.regex.Pattern; - -import com.raytheon.rcm.config.RadarType; -import com.raytheon.rcm.message.GSM; -import com.raytheon.rcm.products.ElevationInfo.Sel; -import com.raytheon.rcm.products.ElevationInfo.VCPInfo; -import com.raytheon.rcm.products.RadarProduct.Format; -import com.raytheon.rcm.products.RadarProduct.Param; - -/** - * TODO Add Description - * - *
- * 
- * SOFTWARE HISTORY
- * Date         Ticket#    Engineer    Description
- * ------------ ---------- ----------- --------------------------
- * 03/07/2013   DR15495    zwang       Load elevation info for SSSS radars
- * 07/13/2015   DR 17672   D. Friedman Add compressionAllowed field
- * 04/01/2016   DR 17885   jdynina     Fixed list creation for RMR/OTR
- * 
- * 
- * - * @author dfriedman - * @version 1.0 - */ - -public class Loader { - static List loadRadarInfoData(Scanner fs) { - List result = new ArrayList(); - while (fs.hasNext()) { - String line = fs.nextLine(); - Scanner ls = new Scanner(line); - ls.useDelimiter("\\s*\\|\\s*"); - if (skipComments(ls)) - continue; - RadarProduct rp = new RadarProduct(); - try { - rp.params = EnumSet.noneOf(Param.class); - - rp.pid = ls.nextInt(); - rp.levels = ls.nextInt(); - int layerCode = ls.nextInt(); - if (layerCode == 9) - rp.params.add(Param.LAYER); - else if (layerCode > 0) - rp.layer = layerCode; - rp.resolution = ls.nextFloat(); - rp.range = ls.nextFloat(); - rp.mnemonic = ls.next().trim(); - rp.name = ls.next().trim(); - try { - rp.format = RadarProduct.Format.valueOf(ls.next().trim()); - } catch (IllegalArgumentException e) { - rp.format = RadarProduct.Format.UNKNOWN; - } - - if (ls.next().trim().equalsIgnoreCase("y")) - rp.params.add(Param.ELEVATION); - if (ls.next().trim().equalsIgnoreCase("y")) - rp.params.add(Param.ALTITUDE); - if (ls.next().trim().equalsIgnoreCase("y")) - rp.params.add(Param.WINDOW_AZ_RAN); - if (ls.next().trim().equalsIgnoreCase("y")) - rp.params.add(Param.STORM_SPEED_DIR); - ls.next(); // Unused display field - if (ls.next().trim().equalsIgnoreCase("y")) - rp.params.add(Param.BASELINE); - if (ls.next().trim().equalsIgnoreCase("y")) - rp.params.add(Param.TIME_SPAN); - if (ls.next().trim().equalsIgnoreCase("y")) // TODO: same as - // above? - rp.params.add(Param.STORM_SPEED_DIR); - if (ls.next().trim().equalsIgnoreCase("y")) - rp.params.add(Param.CFC_BITMAP); - if (rp.format == Format.RADIAL) - rp.azimuthalResolution = 1.0f; - } catch (NoSuchElementException e) { - System.err.format("Bad radarInfo line: %s\n", line); - continue; - } - try { - ls.next(); // AWIPS ID - String token = ls.next(); - try { - rp.azimuthalResolution = Float.parseFloat(token); - } catch (NumberFormatException e) { - // ignore - } - rp.compressionAllowed = ls.next().trim().equalsIgnoreCase("y"); - } catch (NoSuchElementException e) { - // ignore - } - - // This is not in any baselined database yet. - switch (rp.pid) { - case 180: - case 181: - case 182: - case 183: - case 184: - case 185: - case 186: - case 187: - rp.typeRestriction = EnumSet.of(RadarType.TDWR); - break; - - case 35: - case 36: // 35 and 36 are missing from SPG ICD Table IIa - case 37: - case 38: - case 41: - case 57: - case 58: - case 59: - case 61: - case 141: - rp.params.add(Param.MINI_VOLUME); - - /* - * This is special. For the TDWR, it does *not* have an - * elevation, only a mini-volume. So create two products with - * code 149. - */ - case 149: - rp.typeRestriction = EnumSet.of(RadarType.WSR); - result.add(rp); - rp = (RadarProduct) rp.clone(); - rp.typeRestriction = EnumSet.of(RadarType.TDWR); - rp.params = EnumSet.of(Param.MINI_VOLUME); - break; - - case 31: - case 32: - case 33: - case 48: - // case 62:// Listed in Table III, but apparently not generated - case 75: - case 78: - case 79: - case 80: - case 81: - case 82: - case 84: // Missing from Table III - case 100: - case 101: - case 102: - case 104: - case 107: - case 108: - case 109: - case 137: - case 138: - case 152: - // nothing -- available for both WSR and TDWR - break; - - case 173: - // Dual pol, so WSR only. - rp.typeRestriction = EnumSet.of(RadarType.WSR); - // This product specifies the time span in minutes. - rp.params.remove(Param.TIME_SPAN); - rp.params.add(Param.TIME_SPAN_MINUTES); - break; - - default: - if (rp.pid >= 16) { - rp.typeRestriction = EnumSet.of(RadarType.WSR); - } - } - - result.add(rp); - } - return result; - } - - protected static boolean skipComments(Scanner s) { - try { - s.skip("^\\s*(#|//).*$"); - } catch (NoSuchElementException e) { - // nothing - } - return !s.hasNext(); // Also returns true if it was just a blank line - } - - public static void loadElevationInfo(Scanner fs, - HashMap staticInfo, Collection vcpInfo) { - Pattern p = Pattern.compile("^VCP(\\d+)$"); - while (fs.hasNext()) { - String line = fs.nextLine(); - Scanner ls = new Scanner(line); - if (skipComments(ls)) - continue; - try { - String id = ls.next(); - int vcp = 0; - String opModeText = ls.next(); // Unused op mode - int nElevs = ls.nextInt(); - int[] elevs = new int[nElevs]; - for (int i = 0; i < elevs.length; ++i) - elevs[i] = (int) (ls.nextDouble() * 10.0); - - Matcher m = p.matcher(id); - if (m.matches()) - vcp = Integer.parseInt(m.group(1)); - else if (id.equals("OTR")) - vcp = ElevationInfo.OTR_CODE; - else if (id.equals("RMR")) - vcp = ElevationInfo.RMR_CODE; - else if (id.equals("OTR-TDWR")) - vcp = ElevationInfo.OTR_TDWR_CODE; - else if (id.equals("RMR-TDWR")) - vcp = ElevationInfo.RMR_TDWR_CODE; - else - continue; - Sel sel = new Sel(null, vcp); - staticInfo.put(sel, elevs); - - int opMode = -1; - if (opModeText.equalsIgnoreCase("storm")) - opMode = GSM.OP_MODE_STORM; - else if (opModeText.equalsIgnoreCase("clear-air")) - opMode = GSM.OP_MODE_CLEAR_AIR; - - if (vcp > 0 && opMode != -1) { - VCPInfo vcpinf = new VCPInfo(); - vcpinf.vcp = vcp; - vcpinf.opMode = opMode; - vcpInfo.add(vcpinf); - } - } catch (NoSuchElementException e) { - // TODO: - } - } - } - - public static void loadSsssElevationInfo(Scanner fs, - HashMap staticInfo) { - Pattern p = Pattern.compile("^k*VCP(\\d+)$"); - while (fs.hasNext()) { - String line = fs.nextLine(); - Scanner ls = new Scanner(line); - if (skipComments(ls)) - continue; - try { - String radarID = ls.next(); - String id = ls.next(); - int vcp = 0; - ls.next(); // Unused op mode - int nElevs = ls.nextInt(); - int[] elevs = new int[nElevs]; - for (int i = 0; i < elevs.length; ++i) - elevs[i] = (int) (ls.nextDouble() * 10.0); - - Matcher m = p.matcher(id); - if (m.matches()) - vcp = Integer.parseInt(m.group(1)); - else if (id.equals("OTR")) - vcp = ElevationInfo.OTR_CODE; - else if (id.equals("RMR")) - vcp = ElevationInfo.RMR_CODE; - else if (id.equals("OTR-TDWR")) - vcp = ElevationInfo.OTR_TDWR_CODE; - else if (id.equals("RMR-TDWR")) - vcp = ElevationInfo.RMR_TDWR_CODE; - else - continue; - Sel sel = new Sel(radarID, vcp); - staticInfo.put(sel, elevs); - } catch (NoSuchElementException e) { - // TODO: - } - } - } - - public static void loadTdwrElevationInfo(Scanner fs, - HashMap staticInfo) { - ArrayList elevs = new ArrayList(25); - HashMap> allElevs = new HashMap>(); - - while (fs.hasNext()) { - String line = fs.nextLine(); - Scanner ls = new Scanner(line); - if (skipComments(ls)) - continue; - /* - * We currently only need to know the set of unique angles, not the - * whole scan strategy. - */ - elevs.clear(); - try { - String radar = "t" + ls.next().toLowerCase(); - ls.next(); // unused WFO ID - String mode = ls.next(); - int vcp; - if (mode.equals("HAZ")) - vcp = 80; - else if (mode.equals("MON")) - vcp = 90; - else - continue; - - int elevIndex = 0; - while (ls.hasNext()) { - int elev = (int) (ls.nextDouble() * 10); - /* - * For some reason, the third value is a duplicate of the - * second. - */ - if (!(elevIndex == 2 && elevs.get(1) == elev)) - elevs.add(elev); - ++elevIndex; - } - - Sel sel = new Sel(radar, vcp); - int[] elevsArray = new int[elevs.size()]; - for (int i = 0; i < elevsArray.length; ++i) - elevsArray[i] = elevs.get(i); - staticInfo.put(sel, elevsArray); - - HashSet allElevsForRadar = allElevs.get(radar); - if (allElevsForRadar == null) { - allElevsForRadar = new HashSet(); - allElevs.put(radar, allElevsForRadar); - } - allElevsForRadar.addAll(elevs); - } catch (NoSuchElementException e) { - // TODO: - } - } - - for (Map.Entry> e : allElevs.entrySet()) { - elevs.clear(); - elevs.addAll(e.getValue()); - int[] elevsArray = new int[elevs.size()]; - for (int i = 0; i < elevsArray.length; ++i) - elevsArray[i] = elevs.get(i); - Arrays.sort(elevsArray); - - Sel sel = new Sel(e.getKey(), ElevationInfo.OTR_CODE); - staticInfo.put(sel, elevsArray); - } - } -} diff --git a/RadarServer/com.raytheon.rcm.lib/src/com/raytheon/rcm/products/ProductInfo.java b/RadarServer/com.raytheon.rcm.lib/src/com/raytheon/rcm/products/ProductInfo.java deleted file mode 100644 index 63a0ed58d9..0000000000 --- a/RadarServer/com.raytheon.rcm.lib/src/com/raytheon/rcm/products/ProductInfo.java +++ /dev/null @@ -1,145 +0,0 @@ -/** - * This software was developed and / or modified by Raytheon Company, - * pursuant to Contract DG133W-05-CQ-1067 with the US Government. - * - * U.S. EXPORT CONTROLLED TECHNICAL DATA - * This software product contains export-restricted data whose - * export/transfer/disclosure is restricted by U.S. law. Dissemination - * to non-U.S. persons whether in the United States or abroad requires - * an export license or other authorization. - * - * Contractor Name: Raytheon Company - * Contractor Address: 6825 Pine Street, Suite 340 - * Mail Stop B8 - * Omaha, NE 68106 - * 402.291.0100 - * - * See the AWIPS II Master Rights File ("Master Rights File.pdf") for - * further licensing information. - **/ -package com.raytheon.rcm.products; - -import java.io.InputStream; -import java.util.ArrayList; -import java.util.Collection; -import java.util.Scanner; - -import com.raytheon.rcm.config.RadarType; - - -public class ProductInfo { - public static class Selector { - public RadarType radarType; - // dedicated? - public Integer code; - public String mnemonic; - public Usage usage; - public Selector() { } - public Selector(RadarType radarType, String mnemonic, Integer code, Usage usage) { - this.radarType = radarType; - this.mnemonic = mnemonic; - this.code = code; - this.usage = usage; - } - public Selector duplicate() { - return new Selector(radarType, mnemonic, code, usage); - } - public Selector narrow(Selector sel) { - Selector result = duplicate(); - // TODO: conflicting non-null values.. exception or - // make as something that will return the empty set? - - // Menu item selectors should be pre-merged... - if (result.radarType == null) - result.radarType = sel.radarType; - if (result.code == null) - result.code = sel.code; - if (result.mnemonic == null) - result.mnemonic = sel.mnemonic; - if (result.usage == null) - result.usage = sel.usage; - return result; - } - public boolean matches(RadarProduct rp) { - if (radarType != null && rp.typeRestriction != null && - ! rp.typeRestriction.contains(radarType)) - return false; - if (mnemonic != null && (rp.mnemonic == null || - ! mnemonic.equalsIgnoreCase(rp.mnemonic))) - return false; - if (code != null && code.intValue() != rp.pid) - return false; - if (usage != null) { - /* TODO: Usage information is in PMenuItem so this is a bit - * out of place. - */ - - } - return true; - } - } - - private static ProductInfo instance; - - public static ProductInfo getInstance() { - if (instance == null) - instance = new ProductInfo(); - return instance; - } - - private Collection products; - - public ProductInfo() { - InputStream s = ProductInfo.class.getResourceAsStream("radarInfo.txt"); - Scanner fs = new Scanner(s); - try { - products = Loader.loadRadarInfoData(fs); - } finally { - fs.close(); - } - } - - public String getFullNameForMnemonic(String mnemonic) { - for (RadarProduct p : products) - if (p.mnemonic.equalsIgnoreCase(mnemonic) && p.name != null) - return p.name; - return null; - } - - public String getMnemonicForCode(int code) { - for (RadarProduct p : products) - if (p.pid == code && p.mnemonic != null) - return p.mnemonic; - return null; - } - - public Collection select(Selector sel) { - ArrayList result = new ArrayList(); - for (RadarProduct rp : products) { - if (sel.matches(rp)) - result.add(rp); - } - return result; - } - - public RadarProduct selectOne(Selector sel) { - Collection result = select(sel); - if (! result.isEmpty()) - return result.iterator().next(); - else - return null; - } - - /* Assumes only one product descriptor for a code. Probably okay - * for now. Possible issues: Old/new versions of a product. Non-issue: - * TDWR mini-volume. Only available for TDWRs so we can handle it - * with extra context information. - */ - public RadarProduct getPoductForCode(int code) { - for (RadarProduct rp : products) { - if (rp.pid == code) - return rp; - } - return null; - } -} diff --git a/RadarServer/com.raytheon.rcm.lib/src/com/raytheon/rcm/products/RadarProduct.java b/RadarServer/com.raytheon.rcm.lib/src/com/raytheon/rcm/products/RadarProduct.java deleted file mode 100644 index c75ce2456b..0000000000 --- a/RadarServer/com.raytheon.rcm.lib/src/com/raytheon/rcm/products/RadarProduct.java +++ /dev/null @@ -1,76 +0,0 @@ -/** - * This software was developed and / or modified by Raytheon Company, - * pursuant to Contract DG133W-05-CQ-1067 with the US Government. - * - * U.S. EXPORT CONTROLLED TECHNICAL DATA - * This software product contains export-restricted data whose - * export/transfer/disclosure is restricted by U.S. law. Dissemination - * to non-U.S. persons whether in the United States or abroad requires - * an export license or other authorization. - * - * Contractor Name: Raytheon Company - * Contractor Address: 6825 Pine Street, Suite 340 - * Mail Stop B8 - * Omaha, NE 68106 - * 402.291.0100 - * - * See the AWIPS II Master Rights File ("Master Rights File.pdf") for - * further licensing information. - **/ -package com.raytheon.rcm.products; - -import java.util.EnumSet; -import java.util.HashMap; - -import com.raytheon.rcm.config.RadarType; - -/** - * TODO Add Description - * - *
- *
- * SOFTWARE HISTORY
- * Date         Ticket#    Engineer    Description
- * ------------ ---------- ----------- --------------------------
- * 2009                    D. Friedman initial version
- * 2015-07-13   DR 17672   D. Friedman Add compressionAllowed field
- * 2016-04-14   DR 18800   jdynina     Removed alerting
- * 2016-05-10   DCS18795   jdynina     Added CCM
- *
- * 
- * - * @author dfriedman - * @version 1.0 - */ - -public class RadarProduct implements Cloneable { - public enum Format { - GSM, PRR, PTL, CCM, RADIAL, RASTER, GRAPHIC, TEXT, GENERIC, UNKNOWN - } - - public enum Param { - ELEVATION, ALTITUDE, BASELINE, WINDOW_AZ_RAN, STORM_SPEED_DIR, MINI_VOLUME, TIME_SPAN, TIME_SPAN_MINUTES, LAYER, CFC_BITMAP - } - - public int pid; - public HashMap variations = new HashMap(); - public Integer levels; - public Integer layer; - public Float resolution; - public Float range; - public Float azimuthalResolution; - public String mnemonic; - public String name; - public Format format; - public EnumSet params; - public EnumSet typeRestriction; - public boolean compressionAllowed; - - public Object clone() { - try { - return super.clone(); - } catch (CloneNotSupportedException e) { - throw new UnsupportedOperationException(e); - } - } -} diff --git a/RadarServer/com.raytheon.rcm.lib/src/com/raytheon/rcm/products/Usage.java b/RadarServer/com.raytheon.rcm.lib/src/com/raytheon/rcm/products/Usage.java deleted file mode 100644 index e0fb1d3d57..0000000000 --- a/RadarServer/com.raytheon.rcm.lib/src/com/raytheon/rcm/products/Usage.java +++ /dev/null @@ -1,24 +0,0 @@ -/** - * This software was developed and / or modified by Raytheon Company, - * pursuant to Contract DG133W-05-CQ-1067 with the US Government. - * - * U.S. EXPORT CONTROLLED TECHNICAL DATA - * This software product contains export-restricted data whose - * export/transfer/disclosure is restricted by U.S. law. Dissemination - * to non-U.S. persons whether in the United States or abroad requires - * an export license or other authorization. - * - * Contractor Name: Raytheon Company - * Contractor Address: 6825 Pine Street, Suite 340 - * Mail Stop B8 - * Omaha, NE 68106 - * 402.291.0100 - * - * See the AWIPS II Master Rights File ("Master Rights File.pdf") for - * further licensing information. - **/ -package com.raytheon.rcm.products; - -public enum Usage { - OTR, RMR, RPS -} diff --git a/RadarServer/com.raytheon.rcm.lib/src/com/raytheon/rcm/products/radarInfo.txt b/RadarServer/com.raytheon.rcm.lib/src/com/raytheon/rcm/products/radarInfo.txt deleted file mode 100755 index a9a833bb71..0000000000 --- a/RadarServer/com.raytheon.rcm.lib/src/com/raytheon/rcm/products/radarInfo.txt +++ /dev/null @@ -1,163 +0,0 @@ -# radarInfo.txt -# -# Information about radar products. Fields are: -# -# ID = product ID number -# Lvls = # of data levels -# Lyr = layer: 0, 1, 2, 3 = none, lo, med, high -# Resol = resolution in km -# Range = ? -# Mnemo = mnemonic, duh. -# Name = label used in user interface -# Format = format -# Elv = does elevation apply, boolean -# Alt = does altitude apply, boolean -# Azm = does azimuth/range apply, boolean -# Spd = does speed/direction apply, boolean (speed = 0.0-99.9) -# Dsp = Series of single character flags display code uses -# V = Treat as velocity data, allow shear sampling and vrShear -# Z = 16 bit data has predefined Storm/Clear dBZ ranges. -# m = Apply multiplier to 8 bit style info. -# Leading number is default mult; V assumes default of 5. -# S = Rescale existing data style info by scaling coefficients. -# Multiply output of scaling coefficients by leading number, if present, -# to get data values for image counts. -# X = does cross-section apply, boolean -# hrs = does hour/span apply, boolean -# bsp = does big speed/direction apply, boolean (speed = 0.0-999.9) -# mas = does map type and segment number apply, boolean -# aid = AWIPS ID (enumeration removed from Radar.H) -# dAz = Azimuth resolution in deg. Def to 1 for Radial 0 for others. -# compr = if compression is supported for this product -# -# All booleans must be "y" for true, anything else for false. -# -#ID|Lvls|Lyr|Resol |Range|Mnemo| Name | Format |Elv|Alt|Azm|Spd|Dsp| X |hrs|bsp|mas|aid|dAz |compr -2 | 0 | 0 | 0.0 | 0 | GSM | General Status Msg (GSM) | GSM | | | | | | | | | |20 | | -3 | 0 | 0 | 0.0 | 0 | PRR | Product Request Resp (PRR) | PRR | | | | | | | | | |21 | | -8 | 0 | 0 | 0.0 | 0 | PTL | Product List (PTL) | PTL | | | | | | | | | |66 | | -12 | 0 | 0 | 0.0 | 0 | CPM | Command Parameter Msg (CPM) | CPM | | | | | | | | | | 0 | | -14 | 0 | 0 | 0.0 | 0 | CCM | Command Control Msg (CCM) | CCM | | | | | | | | | | 0 | | -180| 256| 0 | 0.15 | 90 | Z | Reflectivity (Z) | Radial | y | | | | Z | | | | | 0 | | y -181| 16 | 0 | 0.15 | 90 | Z | Reflectivity (Z) | Radial | y | | | | Z | | | | | 0 | | -186| 256| 0 | 0.30 | 460 | Z | Long Range Refl (Z) | Radial | y | | | | Z | | | | | 0 | | y -187| 16 | 0 | 0.30 | 460 | Z | Long Range Refl (Z) | Radial | y | | | | Z | | | | | 0 | | -94 |256 | 0 | 1.0 | 460 | Z | 8-bit Refl Array (Z) | Radial | y | | | | Z | | | | | 0 | | y -153|256 | 0 | 0.25 | 460 | HZ | Super Res Reflectivity (Z) | Radial | y | | | | Z | | | | | 0 | 0.5 | y -#16 | 8 | 0 | 1.0 | 230 | Z | Reflectivity (Z) | Radial | y | | | | Z | | | | | 0 | | -#17 | 8 | 0 | 2.0 | 460 | Z | Reflectivity (Z) | Radial | y | | | | Z | | | | | 0 | | -#18 | 8 | 0 | 4.0 | 460 | Z | Reflectivity (Z) | Radial | y | | | | Z | | | | | 0 | | -19 | 16 | 0 | 1.0 | 230 | Z | Reflectivity (Z) | Radial | y | | | | Z | | | | | 0 | | -20 | 16 | 0 | 2.0 | 460 | Z | Reflectivity (Z) | Radial | y | | | | Z | | | | | 0 | | -#21 | 16 | 0 | 4.0 | 460 | Z | Reflectivity (Z) | Radial | y | | | | Z | | | | | 0 | | -99 |256 | 0 | 0.25 | 300 | V | 8-bit Velocity Array (V) | Radial | y | | | | Vm| | | | | 1 | | y -154|256 | 0 | 0.25 | 300 | HV | Super Res Velocity (V) | Radial | y | | | | Vm| | | | | 1 | 0.5 | y -182| 256| 0 | 0.15 | 90 | V | Velocity (V) | Radial | y | | | | Vm| | | | | 1 | | y -183| 16 | 0 | 0.15 | 90 | V | Velocity (V) | Radial | y | | | | V | | | | | 1 | | -#22 | 8 | 0 | 0.25 | 60 | V | Velocity (V) | Radial | y | | | | V | | | | | 1 | | -#23 | 8 | 0 | 0.50 | 115 | V | Velocity (V) | Radial | y | | | | V | | | | | 1 | | -#24 | 8 | 0 | 1.00 | 230 | V | Velocity (V) | Radial | y | | | | V | | | | | 1 | | -25 | 16 | 0 | 0.25 | 60 | V | Velocity (V) | Radial | y | | | | V | | | | | 1 | | -26 | 16 | 0 | 0.50 | 115 | V | Velocity (V) | Radial | y | | | | V | | | | | 1 | | -27 | 16 | 0 | 1.00 | 230 | V | Velocity (V) | Radial | y | | | | V | | | | | 1 | | -184|256 | 0 | 0.15 | 90 | SW | Spectrum Width (SW) | Radial | y | | | | | | | | | 2 | | y -185| 8 | 0 | 0.15 | 90 | SW | Spectrum Width (SW) | Radial | y | | | | | | | | | 2 | | -28 | 8 | 0 | 0.25 | 60 | SW | Spectrum Width (SW) | Radial | y | | | | | | | | | 2 | | -#29 | 8 | 0 | 0.50 | 115 | SW | Spectrum Width (SW) | Radial | y | | | | | | | | | 2 | | -30 | 8 | 0 | 1.0 | 230 | SW | Spectrum Width (SW) | Radial | y | | | | | | | | | 2 | | -155|256 | 0 | 0.25 | 300 |HSW | Super Res Spec Width (SW) | Radial | y | | | |5m | | | | | 2 | 0.5 | y -31 | 16 | 0 | 2.0 | 460 | USP | User Select Precip (USP) | Radial | | | | | | | y | | |47 | | -32 |256 | 0 | 1.0 | 230 | DHR | Digital Hybrid Scan Refl (DHR)| Radial | | | | | | | | | |48 | | y -33 | 16 | 0 | 1.0 | 230 | HSR | Hybrid Scan Reflectivity (HSR)| Radial | | | | | | | | | |64 | | -34 | 8 | 0 | 1.0 | 230 | CFC | Clutter Filter Control (CFC) | Radial | | | | | | | | | y |50 | | -#35 | 8 | 0 | 1.0 | 230 | CZ | Composite Ref (CZ) | Raster | | | | | Z | | | | | 4 | | -#36 | 8 | 0 | 4.0 | 460 | CZ | Composite Ref (CZ) | Raster | | | | | Z | | | | | 4 | | -37 | 16 | 0 | 1.0 | 230 | CZ | Composite Ref (CZ) | Raster | | | | | Z | | | | | 4 | | -38 | 16 | 0 | 4.0 | 460 | CZ | Composite Ref (CZ) | Raster | | | | | Z | | | | | 4 | | -41 | 16 | 0 | 4.0 | 230 | ET | Echo Tops (ET) | Raster | | | | | | | | | | 6 | | -135|256 | 0 | 1.0 | 460 | EET | Enhanced Echo Tops (EET) | Radial | | | | | | | | | |44 | | y -43 | 16 | 0 | 1.0 | 230 | SWR | Svr Wx Anal - Ref (SWR) | Radial | y | | y | | | | | | |52 | | -44 | 16 | 0 | 0.25 | 230 | SWV | Svr Wx Anal - Vel (SWV) | Radial | y | | y | | V | | | | |53 | | -45 | 8 | 0 | 0.25 | 230 | SWW | Svr Wx Anal - SW (SWW) | Radial | y | | y | | | | | | |54 | | -46 | 16 | 0 | 0.5 | 230 | SWS | Svr Wx Anal - Shear (SWS) | Radial | y | | y | | | | | | |55 | | -47 | 0 | 0 | 4.0 | 230 | SWP | Severe Wx Prob (SWP) | Graphic | | | | | | | | | |37 | | -48 | 8 | 0 | 0.0 | 0 | VWP | VAD Wind Profile (VWP) | Graphic | | | | | | | | | |40 | | -50 | 16 | 0 | 1.0 | 230 | RCS | Ref X-Sect (RCS) | Raster | | | | | | y | | | |56 | | -51 | 16 | 0 | 0.5 | 230 | VCS | Vel X-Sect (VCS) | Raster | | | | | | y | | | |57 | | -#55 | 16 | 0 | 0.5 | 230 | SRR | Storm Rel Vel Region (SRR) | Radial | y | | y | y | V | | | | |62 | | -56 | 16 | 0 | 1.0 | 230 | SRM | Storm Rel Velocity (SRM) | Radial | y | | | | V | | | y | | 3 | | -57 | 16 | 0 | 4.0 | 230 | VIL | Vert Integ Liq (VIL) | Raster | | | | | | | | | | 5 | | -134|256 | 0 | 1.0 | 460 | DVL | Digital Vert Integ Liq (DVL) | Radial | | | | | S | | | | |43 | | y -58 | 0 | 0 | 0.0 | 345 | STI | Storm Track (STI) | Graphic | | | | | | | | | |13 | | -59 | 0 | 0 | 0.0 | 230 | HI | Hail Index (HI) | Graphic | | | | | | | | | |14 | | -60 | 0 | 0 | 0.0 | 230 | M | Legacy Meso (M) | Graphic | | | | | | | | | |15 | | -61 | 0 | 0 | 0.0 | 230 | TVS | Tornadic Vortex Sig (TVS) | Graphic | | | | | | | | | |16 | | -62 | 0 | 0 | 0.0 | 460 | SS | Storm Structure (SS) | Text | | | | | | | | | |17 | | -65 | 8 | 1 | 4.0 | 460 | LRM | Lyr 1 Comp Ref Max (LRM) | Raster | | | | | | | | | | 9 | | -66 | 8 | 2 | 4.0 | 460 | LRM | Lyr 2 Comp Ref Max (LRM) | Raster | | | | | | | | | | 9 | | -67 | 8 | 1 | 4.0 | 460 | APR | Lyr 1 Comp Ref MAX (APR) | Raster | | | | | | | | | |65 | | -74 | 0 | 0 | 0.0 | 460 | RCM | Radar Coded Message (RCM) | Text | | | | | | | | | |39 | | -75 | 0 | 0 | 0.0 | 0 | FTM | Free Text Message (FTM) | Text | | | | | | | | | |19 | | -77 | 0 | 0 | 0.0 | 0 | PTM | PUP Text Message (PTM) | Text | | | | | | | | | |83 | | -78 | 16 | 0 | 2.0 | 460 | OHP | One Hour Precip (OHP) | Radial | | | | | | | | | | 7 | | -79 | 16 | 0 | 2.0 | 460 | THP | Three Hour Precip (THP) | Radial | | | | | | | | | | 8 | | -80 | 16 | 0 | 2.0 | 460 | STP | Storm Total Precip (STP) | Radial | | | | | m | | | | |11 | | -138|256 | 0 | 2.0 | 460 | STP | Dig Storm Total Precip (DSP) | Radial | | | | | m | | | | |11 | | y -81 |256 | 0 | 4.0 | 230 | DPA | Digital Precip Array (DPA) | Raster | | | | | | | | | |41 | | -82 | 8 | 0 |40.0 | 230 | SPD | Supplemental Precip Data (SPD)| Text | | | | | | | | | |42 | | -83 | 0 | 0 | 0.0 | 0 | IRM | Intermediate Radar Message (IRM)| Text | | | | | | | | | |82 | | -84 | 8 | 0 | 0.0 | 0 | VAD | Vel Az Display (VAD) | Graphic | | y | | | | | | | |12 | | -#85 | 8 | 0 | 1.0 | 230 | RCS | Ref X-Sect (RCS) | Raster | | | | | | y | | | |56 | | -#86 | 8 | 0 | 0.5 | 230 | VCS | Vel X-Sect (VCS) | Raster | | | | | | y | | | |57 | | -90 | 8 | 3 | 4.0 | 460 | LRM | Lyr 3 Comp Ref Max (LRM) | Raster | | | | | | | | | | 9 | | -93 |256 | 0 | 1.0 | 115 | DBV | ITWS Digital Velocity (DBV) | Radial | y | | | | V | | | | |84 | | -100| 0 | 0 | 0.0 | 0 | VSDT| VAD Site Adapt Params (VSDT) | Text | | | | | | | | | |23 | | -101| 0 | 0 | 0.0 | 0 | STIT| Storm Track Alpha block (STIT)| Text | | | | | | | | | |24 | | -102| 0 | 0 | 0.0 | 0 | HIT | Hail Index Alpha block (HIT) | Text | | | | | | | | | |25 | | -103| 0 | 0 | 0.0 | 0 | MT | Mesocyclone Alpha block (MT) | Text | | | | | | | | | |26 | | -104| 0 | 0 | 0.0 | 0 | TVST| TVS Alpha block (TVST) | Text | | | | | | | | | |27 | | -107| 0 | 0 | 0.0 | 0 | OHPT| 1hr Rainfall Params (OHPT) | Text | | | | | | | | | |30 | | -108| 0 | 0 | 0.0 | 0 | THPT| 3hr Rainfall Params (THPT) | Text | | | | | | | | | |31 | | -109| 0 | 0 | 0.0 | 0 | STPT| Storm Total Params (STPT) | Text | | | | | | | | | |32 | | -132| 16 | 0 | 1.0 | 230 | CLR | Clutter Likelihood Refl (CLR) | Radial | y | | | | | | | | |89 | | -133| 16 | 0 | 1.0 | 230 | CLD | Clutter Likelihood Dopp (CLD) | Radial | y | | | | | | | | |90 | | -136|256 | 0 | 4.0 | 0 | SO | SuperOb (SO) | SuperOb | | | | | | | | | |82 | | y -137| 16 | 9 | 1.0 | 230 | ULR | User Selectable Lyr Refl (ULR)| Radial | | | | | | | | | |88 | | -139| 0 | 0 | 0.0 | 230 | MRU | Rapid Update Mesocyclone (MRU)| Graphic | y | | | | | | | | |91 | | -140| 0 | 0 | 0.0 | 230 | GFM | Gust Front MIGFA (GFM) | Generic | | | | | | | | | |28 | | -141| 0 | 0 | 0.0 | 230 | MD | Mesocyclone (MD) | Graphic | | | | | | | | | |92 | | -143| 0 | 0 | 0.0 | 230 | TRU | TVS Rapid Update (TRU) | Graphic | y | | | | | | | | |93 | | -149| 0 | 0 | 0.0 | 230 | DMD | Digital Meso Detection (DMD) | Generic | y | | | | | | | | |94 | | y -144| 16 | 0 | 1.0 | 230 | OSW | 1-Hour Snow-Water Equiv (OSW) | Radial | | | | | | | | | |70 | | -145| 16 | 0 | 1.0 | 230 | OSD | 1-Hour Snow Depth (OSD) | Radial | | | | | | | | | |71 | | -146| 16 | 0 | 1.0 | 230 | SSW |Storm Tot Snow-Water Equiv (SSW)| Radial | | | | | | | | | |72 | | -147| 16 | 0 | 1.0 | 230 | SSD |Storm Tot Snow Depth (SSD) | Radial | | | | | | | | | |73 | | -150| 16 | 0 | 1.0 | 230 | USW |User Sel Snow-Water Equiv (USW)| Radial | | | | | | | y | | |74 | | -151| 16 | 0 | 1.0 | 230 | USD |User Sel Snow Depth (USD) | Radial | | | | | | | y | | |75 | | -152| 0 | 0 | 0.0 | 0 | RSS | RPG System Status (RSS) | Generic | | | | | | | | | |95 | | y -159|256 | 0 | 0.25 | 300 | ZDR | Differential Refl (ZDR) | Radial | y | | | | S | | | | |29 | | y -#158| 16 | 0 | 1.0 | 230 | ZDR | Differential Refl (ZDR) | Radial | y | | | | | | | | |29 | | -161|256 | 0 | 0.25 | 300 | CC | Correlation Coeff (CC) | Radial | y | | | | S | | | | |34 | | y -#160| 16 | 0 | 1.0 | 230 | CC | Correlation Coeff (CC) | Radial | y | | | | | | | | |34 | | -167|256 | 0 | 0.25 | 300 | SDC | Raw CC (SDC) | Radial | y | | | | S | | | | |34 | | y -163|256 | 0 | 0.25 | 300 | KDP | Specific Diff Phase (KDP) | Radial | y | | | | S | | | | |35 | | y -#162| 16 | 0 | 1.0 | 230 | KDP | Specific Diff Phase (KDP) | Radial | y | | | | | | | | |35 | | -168|256 | 0 | 0.25 | 300 | SDP | Raw PHIDP (SDP) | Radial | y | | | | S | | | | |35 | | y -165|256 | 0 | 0.25 | 300 | HC | Hydrometeor Class (HC) | Radial | y | | | | | | | | |36 | | y -#164| 16 | 0 | 1.0 | 230 | HC | Hydrometeor Class (HC) | Radial | y | | | | | | | | |36 | | -177|256 | 0 | 0.25 | 230 | HHC | Hybrid Hydrometeor Class (HHC)| Radial | | | | | | | | | |68 | | y -176|65536| 0| 0.25 | 230 | DPR | Digital Inst Precip Rate (DPR)| Radial | | | | | | | | | |45 | | y -169| 16 | 0 | 2.0 | 230 | OHA | One Hour Accum (OHA) | Radial | | | | | | | | | |46 | | -171| 16 | 0 | 2.0 | 230 | STA | Storm Total Accum (STA) | Radial | | | | | | | | | |51 | | -172|256 | 0 | 0.25 | 230 | STA | Storm Total Accum (DSA) | Radial | | | | |0.01S| | | | |51 | | y -173|256 | 0 | 0.25 | 230 | DUA | User Select Accum (DUA) | Radial | | | | |0.01S| | y | | |58 | | y -174|256 | 0 | 0.25 | 230 | DOD | One Hour Diff (DOD) | Radial | | | | |0.01S| | | | |60 | | y -175|256 | 0 | 0.25 | 230 | DSD | Storm Total Diff (DSD) | Radial | | | | |0.01S| | | | |59 | | y -#???|256 | 0 | 0.25 | 300 | DP | Differential Phase (DP) | Radial | y | | | | Z | | | | |61 | -#???|256 | 0 | 0.25 | 230 | PRE | Inst Precip Rate (PRE) | Radial | y | | | | Z | | | | |63 | -166| 0 | 0 | 0.0 | 230 | ML | Melting Layer (ML) | Graphic | y | | | | Z | | | | |67 | | -170|256 | 0 | 0.25 | 230 | DAA | One Hour Unbiased Accum (DAA) | Radial | | | | |0.01S| | | | |69 | | y -196| 0 | 0 | 0.0 | 50 | MBA | Microburst AMDA (MBA) | Generic | | | | | | | | | |28 | | -202| 0 | 0 | 0.0 | 0 | SCC | Shift Change Checklist (SCC) | Generic | | | | | | | | | | 0 | | y -500| 8 | 0 | 0.463| 463 | Z | Reflectivity (Z) | Radial | | | | | | | | | |64 | | -550| 8 | 0 | 0.926| 111 | Z | Reflectivity (Z) | Radial | | | | | | | | | |64 | | diff --git a/RadarServer/com.raytheon.rcm.lib/src/com/raytheon/rcm/request/DefaultFilter.java b/RadarServer/com.raytheon.rcm.lib/src/com/raytheon/rcm/request/DefaultFilter.java deleted file mode 100644 index 79d739f422..0000000000 --- a/RadarServer/com.raytheon.rcm.lib/src/com/raytheon/rcm/request/DefaultFilter.java +++ /dev/null @@ -1,352 +0,0 @@ -/** - * This software was developed and / or modified by Raytheon Company, - * pursuant to Contract DG133W-05-CQ-1067 with the US Government. - * - * U.S. EXPORT CONTROLLED TECHNICAL DATA - * This software product contains export-restricted data whose - * export/transfer/disclosure is restricted by U.S. law. Dissemination - * to non-U.S. persons whether in the United States or abroad requires - * an export license or other authorization. - * - * Contractor Name: Raytheon Company - * Contractor Address: 6825 Pine Street, Suite 340 - * Mail Stop B8 - * Omaha, NE 68106 - * 402.291.0100 - * - * See the AWIPS II Master Rights File ("Master Rights File.pdf") for - * further licensing information. - **/ -package com.raytheon.rcm.request; - -import com.raytheon.rcm.config.RadarType; - -/** - * Filters the duplicate requests - * - *
- * SOFTWARE HISTORY
- * Date   Ticket#    Engineer    Description
- * ------ ---------- ----------- --------------------------
- *                               Initial creation
- * 062413 DR16023    zwang       Support all cuts for nexrad 
- * 
- */ - -/* Should ref CODE src/cpc104/lib003/product_attr_table */ - -public class DefaultFilter extends Filter { - - @Override - public boolean requestsEqual(Request a, Request b, int[] elevList, RadarType radarType) { - return compareRequests(a, b, elevList, radarType) == COMPLETE_MATCH; - } - - @Override - public Request mergeRequests(Request a, Request b, int[] elevList, RadarType radarType) { - int compareResult = compareRequests(a, b, elevList, radarType); - - if (compareResult == NO_MATCH) - return null; - else if (compareResult == COMPLETE_MATCH) - return a; - - if (a.getElevationSelection() == Request.ALL_ELEVATIONS && a.getElevationAngle() == 0) - return a; - if (b.getElevationSelection() == Request.ALL_ELEVATIONS && b.getElevationAngle() == 0) - return b; - - for (int z = 0; z < 2; ++z) { - if (elevList != null) { - int aSel = a.getElevationSelection(); - int bSel = b.getElevationSelection(); - int ia = -1; - int ib = -1; - if (a.getElevationSelection() == Request.N_ELEVATIONS) - ia = a.getElevationAngle() - 1; - else if (elevList != null) - ia = findMatchingElevationIndex(elevList, a.getElevationAngle()); - if (b.getElevationSelection() == Request.N_ELEVATIONS) - ib = b.getElevationAngle() - 1; - else if (elevList != null) - ib = findMatchingElevationIndex(elevList, b.getElevationAngle()); - - if (aSel == Request.LOWER_ELEVATIONS) { - switch (bSel) { - case Request.ALL_ELEVATIONS: - case Request.SPECIFIC_ELEVATION: - if (ib >= 0 && elevList[ib] <= a.getElevationAngle()) - return a; - break; - case Request.LOWER_ELEVATIONS: - if (a.getElevationAngle() >= b.getElevationAngle()) - return a; - break; - case Request.N_ELEVATIONS: - { - int i; - for (i = 0; i <= ib; ++i) - if (elevList[i] >= a.getElevationAngle()) - break; - if (i > ib) - return a; - break; - } - } - } else if (a.getElevationSelection() == Request.N_ELEVATIONS) { - switch (bSel) { - case Request.ALL_ELEVATIONS: - if (ib >= 0) { - int i; - for (i = ia + 1; i < elevList.length; ++i) - if (elevList[i] == elevList[ib]) - break; - if (i >= elevList.length) - return a; - } - break; - case Request.N_ELEVATIONS: - case Request.SPECIFIC_ELEVATION: - if (ia >= ib) - return a; - break; - case Request.LOWER_ELEVATIONS: { - int i; - for (i = ia + 1; i < elevList.length; ++i) - if (elevList[i] <= b.getElevationAngle()) - break; - if (i >= elevList.length) - return a; - break; - } - } - } - } else { - if (a.getElevationSelection() == Request.N_ELEVATIONS && - b.getElevationSelection() == Request.N_ELEVATIONS && - a.getElevationAngle() >= b.getElevationAngle()) - return a; - else if (a.getElevationSelection() == Request.LOWER_ELEVATIONS && - (b.getElevationSelection() == Request.LOWER_ELEVATIONS || - b.getElevationSelection() == Request.SPECIFIC_ELEVATION) && - a.getElevationAngle() >= b.getElevationAngle()) - return a; - } - - // try again, swapped - Request t = a; - a = b; - b = t; - } - - return null; - } - - private static int findMatchingElevationIndex(int[] elevList, int elevationAngle) { - if (elevList == null || elevList.length == 0) - return -1; - - // TODO: should elevationAngle == 0 be treated specially? - - if (elevationAngle <= elevList[0]) - return 0; - - for (int i = 1; i < elevList.length; ++i) { - if (elevationAngle == elevList[i]) - return i; - else if (elevationAngle < elevList[i]) { - if (elevationAngle <= ((elevList[i - 1] + elevList[i]) / 2)) - return i - 1; - else - return i; - } - } - - return elevList.length - 1; - } - - // Result may not be the index of a unique angle - private static int findIndexOfGreatestAngle(int[] elevList, - int maxElevationAngle) { - if (elevList == null || elevList.length == 0) - return -1; - - if (maxElevationAngle <= elevList[0]) - return -1; - - int best = elevList[0]; - int bestIndex = 0; - - for (int i = 1; i < elevList.length; ++i) { - if (elevList[i] <= maxElevationAngle && elevList[i] > best) { - best = elevList[i]; - bestIndex = i; - } - } - - return bestIndex; - } - - - private static int NO_MATCH = 0; - private static int ELEV_MISMATCH = 1; - private static int COMPLETE_MATCH = 2; - - private static int compareRequests(Request a, Request b, int[] elevList, RadarType radarType) { - if (a.productCode != b.productCode || - a.highPriority != b.highPriority || - a.mapRequested != b.mapRequested || - a.interval != b.interval || - a.count != b.count || - a.getVolumeScanSelection() != b.getVolumeScanSelection() || - (a.getVolumeScanSelection() == Request.SELECT_SPECIFIC && - ! a.getVolumeScanTime().equals(b.getVolumeScanTime()))) - return NO_MATCH; - - boolean paramsEqual = false; - boolean checkElev = false; - // from ProductRequestEntry.C ProductRequestEntry::getFilter - switch (a.productCode) - { - case 31: case 173: // User selectable precip and accum - case 150: case 151: // User selectable snow accumulation // missing from ProductRequestEntry::getFilter - paramsEqual = a.getEndHour() == b.getEndHour() && - a.getTimeSpan() == b.getTimeSpan(); - break; - - case 34: // Clutter filter control - paramsEqual = a.getCfcWord() == b.getCfcWord(); - break; - - case 42: // Echo tops contour // Obsolete? - paramsEqual = a.getContourInterval() == b.getContourInterval(); - break; - - case 43: case 44: case 45: case 46: // Sever weather analysis - paramsEqual = a.getAzimuth() == b.getAzimuth() && a.getRange() == b.getRange(); - checkElev = true; - break; - - case 49: // Combined moment - paramsEqual = a.getAzimuth() == b.getAzimuth() && a.getRange() == b.getRange(); - checkElev = true; - break; - - case 50: case 51: case 52: case 85: case 86: // Cross sections - paramsEqual = a.getAzimuth() == b.getAzimuth() && a.getRange() == b.getRange() && - a.getAzimuth2() == b.getAzimuth2() && a.getRange2() == b.getRange2(); - break; - - case 53: // Weak echo region - // TODO: no doc?! is it obsolete? - paramsEqual = a.getAzimuth() == b.getAzimuth() && a.getRange() == b.getRange() && - // CODE sez different fields? double check... - a.pdw22 == b.pdw22 && a.pdw23 == b.pdw23; // 'bitmap 0' and 'bitmap 1' representing which elevations to use - break; - - case 55: // SRM radial velocity region - paramsEqual = a.getAzimuth() == b.getAzimuth() && a.getRange() == b.getRange() && - a.getStormSpeed() == b.getStormSpeed() && - a.getStormDirection() == b.getStormDirection(); - checkElev = true; - break; - - case 56: // SRM radial velocity map - paramsEqual = a.getStormSpeed() == b.getStormSpeed() && - a.getStormDirection() == b.getStormDirection(); - checkElev = true; - break; - - case 84: // VAD - paramsEqual = a.getAltitude() == b.getAltitude(); - break; - - case 73: case 74: case 75: case 82: // Text based - paramsEqual = true; - break; - - case 47: - case 48: case 60: - case 62: case 63: case 64: case 65: case 66: case 67: - case 78: case 79: case 80: case 81: case 89: case 90: - case 134: case 135: - case 169: case 170: case 171: case 172: case 174: case 175: case 176: - case 177: // Volume based - paramsEqual = true; - break; - - case 137: // User selectable layer reflectivity - paramsEqual = a.getBottomAltitude() == b.getBottomAltitude() && - a.getTopAltitude() == b.getTopAltitude(); - break; - - // Handle SPG mini volume products - // ICD says 41 is echo tops (not echo top contour) - case 35: case 36: case 37: case 38: - case 41: case 57: case 58: case 59: case 61: case 141: - if (radarType == RadarType.TDWR) - paramsEqual = a.getMiniVolume() == b.getMiniVolume(); - else - paramsEqual = true; - break; - - case 149: - if (radarType == RadarType.TDWR) - paramsEqual = a.getMiniVolume() == b.getMiniVolume(); - else - paramsEqual = checkElev = true; - break; - - default: - paramsEqual = checkElev = true; - break; - } - - if (! paramsEqual) - return NO_MATCH; - else if (! checkElev) - return COMPLETE_MATCH; - else { - boolean elevEq = false; - - if (elevList != null) { - // If one of the request is an all cuts, perform exact comparison - if ((a.getElevationSelection() == Request.ALL_ELEVATIONS && - a.getElevationAngle() != 0) || - (b.getElevationSelection() == Request.ALL_ELEVATIONS && - b.getElevationAngle() != 0)) { - if (a.getElevationSelection() == b.getElevationSelection() && - a.getElevationAngle() == b.getElevationAngle() ) { - return COMPLETE_MATCH; - } - else { - return NO_MATCH; - } - } - // If elevList is provided, compare equivalent elevation angles. - if (a.getElevationSelection() == b.getElevationSelection()) { - if (a.getElevationSelection() == Request.ALL_ELEVATIONS && - a.getElevationAngle() == 0 && b.getElevationAngle() == 0) - elevEq = true; - else if (a.getElevationSelection() == Request.ALL_ELEVATIONS || - a.getElevationSelection() == Request.SPECIFIC_ELEVATION) { - int ea = findMatchingElevationIndex(elevList, a.getElevationAngle()); - int eb = findMatchingElevationIndex(elevList, b.getElevationAngle()); - elevEq = ea == eb && ea != -1; - } else if (a.getElevationSelection() == Request.LOWER_ELEVATIONS) { - int ea = findIndexOfGreatestAngle(elevList, a.getElevationAngle()); - int eb = findIndexOfGreatestAngle(elevList, b.getElevationAngle()); - elevEq = ea == eb && ea != -1; - } else if (a.getElevationSelection() == Request.N_ELEVATIONS) { - elevEq = a.getElevationAngle() == b.getElevationAngle(); - } - } - } else - // Otherwise, perform exact comparison. - elevEq = a.getElevationSelection() == b.getElevationSelection() && - a.getElevationAngle() == b.getElevationAngle(); - - return elevEq ? COMPLETE_MATCH : ELEV_MISMATCH; - } - } -} diff --git a/RadarServer/com.raytheon.rcm.lib/src/com/raytheon/rcm/request/Filter.java b/RadarServer/com.raytheon.rcm.lib/src/com/raytheon/rcm/request/Filter.java deleted file mode 100755 index d40d3e4d57..0000000000 --- a/RadarServer/com.raytheon.rcm.lib/src/com/raytheon/rcm/request/Filter.java +++ /dev/null @@ -1,41 +0,0 @@ -/** - * This software was developed and / or modified by Raytheon Company, - * pursuant to Contract DG133W-05-CQ-1067 with the US Government. - * - * U.S. EXPORT CONTROLLED TECHNICAL DATA - * This software product contains export-restricted data whose - * export/transfer/disclosure is restricted by U.S. law. Dissemination - * to non-U.S. persons whether in the United States or abroad requires - * an export license or other authorization. - * - * Contractor Name: Raytheon Company - * Contractor Address: 6825 Pine Street, Suite 340 - * Mail Stop B8 - * Omaha, NE 68106 - * 402.291.0100 - * - * See the AWIPS II Master Rights File ("Master Rights File.pdf") for - * further licensing information. - **/ -package com.raytheon.rcm.request; - -import com.raytheon.rcm.config.RadarType; - -public abstract class Filter { - - public abstract boolean requestsEqual(Request a, Request b, int[] elevList, RadarType radarType); - - public abstract Request mergeRequests(Request a, Request b, int[] elevList, RadarType radarType); - - protected static DefaultFilter instance = new DefaultFilter(); - - public static Filter getFilterForCode(int code) { - return instance; - } - - /* - static void registerFilter(Set codes, Filter filter) { - - } - */ -} diff --git a/RadarServer/com.raytheon.rcm.lib/src/com/raytheon/rcm/request/Request.java b/RadarServer/com.raytheon.rcm.lib/src/com/raytheon/rcm/request/Request.java deleted file mode 100755 index a7bd8975f1..0000000000 --- a/RadarServer/com.raytheon.rcm.lib/src/com/raytheon/rcm/request/Request.java +++ /dev/null @@ -1,170 +0,0 @@ -/** - * This software was developed and / or modified by Raytheon Company, - * pursuant to Contract DG133W-05-CQ-1067 with the US Government. - * - * U.S. EXPORT CONTROLLED TECHNICAL DATA - * This software product contains export-restricted data whose - * export/transfer/disclosure is restricted by U.S. law. Dissemination - * to non-U.S. persons whether in the United States or abroad requires - * an export license or other authorization. - * - * Contractor Name: Raytheon Company - * Contractor Address: 6825 Pine Street, Suite 340 - * Mail Stop B8 - * Omaha, NE 68106 - * 402.291.0100 - * - * See the AWIPS II Master Rights File ("Master Rights File.pdf") for - * further licensing information. - **/ -package com.raytheon.rcm.request; - -import java.util.Arrays; -import java.util.Calendar; - -import javax.xml.bind.annotation.XmlAccessType; -import javax.xml.bind.annotation.XmlAccessorType; -import javax.xml.bind.annotation.XmlElement; -import javax.xml.bind.annotation.XmlRootElement; -import javax.xml.bind.annotation.XmlType; - -import com.raytheon.rcm.message.Message; - - -@XmlRootElement -@XmlAccessorType(XmlAccessType.NONE) -@XmlType(propOrder={}) -/** - * Encapsulates a Nexrad product request. - */ -public class Request implements Cloneable { - public static final int SELECT_SPECIFIC = 0; - public static final int SELECT_CURRENT = -1; - public static final int SELECT_LATEST = -2; // latest available - - public static final int SPECIFIC_ELEVATION = 0; - public static final int LOWER_ELEVATIONS = 1 << 13; - public static final int ALL_ELEVATIONS = 1 << 14; - public static final int N_ELEVATIONS = (1 << 14) | (1 << 13); - - /** Repeat count value that indicates continuous transmission of a - * product */ - public static final int CONTINUOUS = -1; - - protected static final int ELEVATION_TYPE_MASK = (1 << 14) | (1 << 13); - protected static final int ELEVATION_ANGLE_MASK = (1 << 13) - 1; - - @XmlElement(required=false) public String comment; // Not used for sending requests - - @XmlElement public short productCode; - @XmlElement(required=false) public boolean highPriority; - @XmlElement(required=false) public boolean mapRequested; - @XmlElement(required=false) public short sequence; - @XmlElement(required=false) public short count = 1; // Default to 1 because 0 is always invalid - @XmlElement(required=false) public short interval = 1; // Default to 1 because 0 is always invalid - - @XmlElement protected int volumeScanSelection = SELECT_CURRENT; - @XmlElement(required=false) protected Calendar volumeScanTime; - - public int getVolumeScanSelection() { return volumeScanSelection; } - public Calendar getVolumeScanTime() { return volumeScanTime; } - public void selectCurrent() { volumeScanSelection = SELECT_CURRENT; } - public void selectLatest() { volumeScanSelection = SELECT_LATEST; } - public void selectTime(Calendar time) { - if (time == null) - throw new IllegalArgumentException("time argument must not be null"); - volumeScanSelection = SELECT_SPECIFIC; - volumeScanTime = time; - } - - @XmlElement(required=false,defaultValue="0") - public int pdw20, pdw21, pdw22, pdw23, pdw24, pdw25; - - // maybe setRawElevationCode(), setElevation(mode, tenthsOfDegrees) - public int getElevationSelection() { return pdw22 & ELEVATION_TYPE_MASK; } - public int getElevationAngle() { - int elev = pdw22 & ELEVATION_ANGLE_MASK; - if ((pdw22 & ELEVATION_TYPE_MASK) == N_ELEVATIONS) - return elev; - else - return Message.decodeElevation(elev); - } - public void setElevationAngle(int angle) { pdw22 = Message.encodeElevation(angle); } - public void selectLowerCuts(int highestCut) { pdw22 = N_ELEVATIONS | highestCut; } - public void selectLowerEelevations(int highestElevation) { - pdw22 = LOWER_ELEVATIONS | Message.encodeElevation(highestElevation); - } - public void selectAllElevations() { pdw22 = ALL_ELEVATIONS; } - public void selectAllElevations(int angle) { pdw22 = ALL_ELEVATIONS | Message.encodeElevation(angle); } - - public int getAzimuth() { return pdw20; } - public void setAzimuth(int azimuth) { pdw20 = azimuth; } - - public int getRange() { return pdw21; } - public void setRange(int range) { pdw21 = range; } - - public int getAzimuth2() { return pdw22; } - public void setAzimuth2(int azimuth) { pdw22 = azimuth; } - - public int getRange2() { return pdw23; } - public void setRange2(int range) { pdw23 = range; } - - public int getStormSpeed() { return pdw23; } - public void setStormSpeed(int speed) { pdw23 = speed; } - - public int getStormDirection() { return pdw24; } - public void setStormDirection(int direction) { pdw24 = direction; } - - // for VAD - public int getAltitude() { return pdw22; } - public void setAltitude(int altitude) { pdw22 = altitude; } - - public int getEndHour() { return pdw20; } - public void setEndHour(int endHour) { pdw20 = endHour; } - - public int getTimeSpan() { return pdw21; } - public void setTimeSpan(int timeSpan) { pdw21 = timeSpan; } - - public int getBottomAltitude() { return pdw20; } - public void setBottomAltitude(int altitude) { pdw20 = altitude; } - - public int getTopAltitude() { return pdw21; } - public void setTopAltitude(int altitude) { pdw21 = altitude; } - - public int getCfcWord() { return pdw20; } - public void setCfcWord(int cfcWord) { pdw20 = cfcWord; } - - public int getContourInterval() { return pdw25; } - public void setContourInterval(int contourInterval) { pdw25 = contourInterval; } - - public int getMiniVolume() { return pdw20; } - public void setMiniVolume(int miniVolume) { pdw20 = miniVolume; } - - @Override - public String toString() { - int sel = getVolumeScanSelection(); - return String.format("{code=%d %s%scount=%d interval=%d pdw=%s sel=%s seq=%s}", - productCode, - highPriority ? "high-priority " : "", - mapRequested ? "map-requested " : "", - count, interval, - Arrays.asList(pdw20,pdw21,pdw22,pdw23,pdw24,pdw25), - (sel==SELECT_CURRENT?"current": - (sel==SELECT_LATEST?"latest": - String.format("%1$tY-%1$tm-%1$td %1$tH:%1$tM:%1$tS", - getVolumeScanTime()))), - sequence != 0 ? Short.toString(sequence) : "" - ); - } - public Request clone() { - Request r; - try { - r = (Request) super.clone(); - } catch (CloneNotSupportedException e) { - throw new RuntimeException(e); - } - if (volumeScanTime != null) - r.volumeScanTime = (Calendar) volumeScanTime.clone(); - return r; - } -} diff --git a/RadarServer/com.raytheon.rcm.lib/src/com/raytheon/rcm/request/RpsList.java b/RadarServer/com.raytheon.rcm.lib/src/com/raytheon/rcm/request/RpsList.java deleted file mode 100755 index 156b509fbb..0000000000 --- a/RadarServer/com.raytheon.rcm.lib/src/com/raytheon/rcm/request/RpsList.java +++ /dev/null @@ -1,239 +0,0 @@ -/** - * This software was developed and / or modified by Raytheon Company, - * pursuant to Contract DG133W-05-CQ-1067 with the US Government. - * - * U.S. EXPORT CONTROLLED TECHNICAL DATA - * This software product contains export-restricted data whose - * export/transfer/disclosure is restricted by U.S. law. Dissemination - * to non-U.S. persons whether in the United States or abroad requires - * an export license or other authorization. - * - * Contractor Name: Raytheon Company - * Contractor Address: 6825 Pine Street, Suite 340 - * Mail Stop B8 - * Omaha, NE 68106 - * 402.291.0100 - * - * See the AWIPS II Master Rights File ("Master Rights File.pdf") for - * further licensing information. - **/ -package com.raytheon.rcm.request; - -import javax.xml.bind.annotation.XmlAccessType; -import javax.xml.bind.annotation.XmlAccessorType; -import javax.xml.bind.annotation.XmlRootElement; - -import com.raytheon.rcm.config.RadarType; -import com.raytheon.rcm.products.ElevationInfo; -import com.raytheon.rcm.products.ProductInfo; -import com.raytheon.rcm.products.ProductInfo.Selector; -import com.raytheon.rcm.products.RadarProduct; -import com.raytheon.rcm.products.RadarProduct.Param; - -/** - * Representation of an RPS list - * - *
- * 
- * SOFTWARE HISTORY
- * Date         Ticket#    Engineer    Description
- * ------------ ---------- ----------- --------------------------
- * 2009-04-22   #1693      D. Friedman Initial checkin
- * ...
- * 2013-01-31   DR 15458   D. Friedman Define UNSPECIFIED_VCP
- * 
- * - */ -@XmlRootElement -@XmlAccessorType(XmlAccessType.PROPERTY) -public class RpsList implements Cloneable { - /** - * Indicates an a list that is appropriate for any VCP or an unspecified - * VCP. - */ - public static final int UNSPECIFIED_VCP = -1; - - /* just a guess of what will be useful... */ - protected int opMode; - protected int vcp; - protected Request[] requests; - - // Needed for JAXB - public RpsList() { - this(0,0); - } - - public RpsList(int opMode, int vcp) { - this.opMode = opMode; - this.vcp = vcp; - this.requests = new Request[0]; - } - - public RpsList(int opMode, int vcp, Request[] requests) { - this.opMode = opMode; - this.vcp = vcp; - this.requests = requests; - } - - public int getOpMode() { - return opMode; - } - public void setOpMode(int opMode) { - this.opMode = opMode; - } - public int getVcp() { - return vcp; - } - public void setVcp(int vcp) { - this.vcp = vcp; - } - public Request[] getRequests() { - return requests; - } - public void setRequests(Request[] requests) { - this.requests = requests; - } - - /** - * Determine the number of requests in the list as determined by the RPG. - * This could be more than the number of entries. - * - * @param radarID - * @param radarType - * @return the total number of requests or -1 if it could not be - * determined - */ - public int getRequestCount(String radarID, RadarType radarType) { - return getRequestCount(requests, radarID, vcp, radarType); - } - - /** - * Determines the number of additional requests that will be added to the - * list when sent to a TDWR in VCP 80. By convention, the RadarServer adds - * a request for mini-volume 1 for every request that specifies a - * mini-volume other than 1 (i.e, 2.) - * - * @return the number of mini-volume requests that will be added - */ - /* - * This must be kept in sync with - * RPSListManager.maybeAddSPGMiniVolumeProducts. - */ - public int getAdditionalMiniVolumeProductCount() { - int result = 0; - Selector sel = new Selector(); - sel.radarType = RadarType.TDWR; - for (Request r : requests) { - sel.code = (int) r.productCode; - RadarProduct prod = ProductInfo.getInstance().selectOne(sel); - if (prod != null && prod.params.contains(Param.MINI_VOLUME) && - r.getMiniVolume() != 1) - ++result; - } - return result; - } - - public Object clone() { - RpsList other; - try { - other = (RpsList) super.clone(); - } catch (CloneNotSupportedException e) { - throw new RuntimeException(e); - } - other.requests = new Request[requests.length]; - for (int i = 0; i < other.requests.length; ++i) - other.requests[i] = (Request) requests[i].clone(); - return other; - } - - /** - * Determine the number of requests in the list as determined by the RPG. - * @see #getRequestCount(String radarID, RadarType radarType) - */ - public static int getRequestCount(Request[] requests, String radarID, int vcp, RadarType radarType) { - int elevList[] = ElevationInfo.getInstance().getScanElevations(radarID, vcp); - if (elevList != null) - return getRequestCount(requests, elevList, radarType); - else - return -1; - } - - /** - * Determine the number of requests in the list as determined by the RPG. - * @see #getRequestCount(String radarID, RadarType radarType) - */ - public static int getRequestCount(Request[] requests, int[] elevList, RadarType radarType) { - int total = 0; - for (Request request : requests) { - int count = getRequestCount(request, elevList, radarType); - if (count >= 0) - total += count; - else - return -1; - } - return total; - } - - /** - * Determine the number of requests in the list as determined by the RPG. - * @see #getRequestCount(String radarID, RadarType radarType) - */ - public static int getRequestCount(Request request, String radarID, int vcp, RadarType radarType) { - int elevList[] = ElevationInfo.getInstance().getScanElevations(radarID, vcp); - if (elevList != null) - return getRequestCount(request, elevList, radarType); - else - return -1; - } - - /** - * Determine the number of requests in the list as determined by the RPG. - * @see #getRequestCount(String radarID, RadarType radarType) - */ - /* Logic based on CODE 88D src/cpc101/lib003/orpgprq.c: ORPGPRQ_get_requested_elevations */ - public static int getRequestCount(Request request, int[] elevList, RadarType radarType) { - Selector sel = new Selector(radarType, null, Integer.valueOf(request.productCode), null); - RadarProduct rp = ProductInfo.getInstance().selectOne(sel); - if (rp != null) { - if (rp.params.contains(Param.ELEVATION)) { - int elevationSelection = request.getElevationSelection(); - switch (elevationSelection) { - case Request.SPECIFIC_ELEVATION: - return elevList.length > 0 ? 1 : 0; - case Request.LOWER_ELEVATIONS: - { - int count = 0; - int requestedAngle = request.getElevationAngle(); - for (int angle : elevList) - if (angle <= requestedAngle) - ++count; - return count; - } - case Request.N_ELEVATIONS: - return Math.min(request.getElevationAngle(), elevList.length); - case Request.ALL_ELEVATIONS: - if (request.getElevationAngle() == 0) - return elevList.length; - else { - /* Find all angles that differ by less than 0.01 - * degrees. Our units are in 0.1 degrees so just - * test for equality. - */ - int count = 0; - int requestedAngle = request.getElevationAngle(); - for (int angle : elevList) - if (angle == requestedAngle) - ++count; - return count; - } - default: - return -1; - } - } else { - return 1; - } - } else - return -1; - } - -} diff --git a/RadarServer/com.raytheon.rcm.lib/src/com/raytheon/rcm/request/RpsListFormatter.java b/RadarServer/com.raytheon.rcm.lib/src/com/raytheon/rcm/request/RpsListFormatter.java deleted file mode 100644 index 0640c69652..0000000000 --- a/RadarServer/com.raytheon.rcm.lib/src/com/raytheon/rcm/request/RpsListFormatter.java +++ /dev/null @@ -1,133 +0,0 @@ -/** - * This software was developed and / or modified by Raytheon Company, - * pursuant to Contract DG133W-05-CQ-1067 with the US Government. - * - * U.S. EXPORT CONTROLLED TECHNICAL DATA - * This software product contains export-restricted data whose - * export/transfer/disclosure is restricted by U.S. law. Dissemination - * to non-U.S. persons whether in the United States or abroad requires - * an export license or other authorization. - * - * Contractor Name: Raytheon Company - * Contractor Address: 6825 Pine Street, Suite 340 - * Mail Stop B8 - * Omaha, NE 68106 - * 402.291.0100 - * - * See the AWIPS II Master Rights File ("Master Rights File.pdf") for - * further licensing information. - **/ -package com.raytheon.rcm.request; - -import java.io.PrintWriter; -import java.util.Calendar; - -import com.raytheon.rcm.config.RadarType; -import com.raytheon.rcm.products.ProductInfo; -import com.raytheon.rcm.products.ProductInfo.Selector; -import com.raytheon.rcm.products.RadarProduct; -import com.raytheon.rcm.products.RadarProduct.Param; - -/** - * Used to format a {@link RpsList} before it is written. - * - *
- * 
- * SOFTWARE HISTORY
- * Date         Ticket#    Engineer    Description
- * ------------ ---------- ----------- --------------------------
- * ?            ?          ?           Initial creation.
- * Jan 20, 2016 5271       bkowal      Include time span / end hour for products
- *                                     that use minutes for the time span.
- * 
- * - */ -public class RpsListFormatter { - /* - * See AWIPS-1 ProductRequestList::writeList() - */ - public static void formatAwips1RpsList(RpsList list, String fileName, - PrintWriter s) { - RadarType radarType = list.getVcp() == 80 || list.getVcp() == 90 ? RadarType.TDWR - : RadarType.WSR; - Calendar cal = Calendar.getInstance(); - s.format("RPS List %s %s... %d products\n", fileName != null ? fileName - : "", - String.format("%1$tY:%1$tm:%1$td:%1$tH:%1$tM:%1$tS", cal), list - .getRequests().length); - s.print(" An RPS list contains the fields: Prod-Name, Mnemonic, Prod-Code\n" - + " Number of Data Levels, Resolution, Layer Code, Elevation, Contour Interval,\n" - + " Priority, Req Interval, Map, Lower Layer, Upper Layer, multCut, endHour, timeSpan\n" - + " The record format is: '%-39s %-3s%4d%4d%6d %c%6d%7d%2d%2d%c%3d%3d %c%7d%7d'\n"); - - for (Request r : list.getRequests()) { - s.println(formatAwips1Request(r, radarType)); - } - } - - private static final char[] layerCodes = { 'L', 'M', 'H' }; - - public static String formatAwips1Request(Request r, RadarType radarType) { - RadarProduct rp = ProductInfo.getInstance().selectOne( - new Selector(radarType, null, (int) r.productCode, null)); - - /* - * Could probably guess how to format the important parts, but this is - * what AWIPS-1 does anyway... - */ - if (rp == null) { - throw new IllegalArgumentException( - "Cannot format unknown product type " + r.productCode + "."); - } - - /* - * Note there is no check for rp.contains(ELEVATION) This is fine for - * the current set of products that are available in the RPS list - * editor... - */ - /* - * // Mimic: if (_multCuts == 'Y' && _elev > 16384) { _elev -= 16384; } - */ - boolean multiCuts = false; - int elev = r.pdw22; - if (r.getElevationSelection() == Request.ALL_ELEVATIONS - && r.getElevationAngle() != 0) { - elev = r.getElevationAngle(); - multiCuts = true; - } - - char layerCode = '-'; - if (rp.layer != null) { - try { - layerCode = layerCodes[rp.layer - 1]; - } catch (ArrayIndexOutOfBoundsException e) { - // nothing - } - } - int lowerLayer = -1; - int upperLayer = -1; - if (rp.params.contains(Param.LAYER)) { - lowerLayer = r.getBottomAltitude(); - upperLayer = r.getTopAltitude(); - } else if (rp.params.contains(Param.MINI_VOLUME)) { - lowerLayer = r.getMiniVolume(); - } - int endHour = -1; - int timeSpan = -1; - if (rp.params.contains(Param.TIME_SPAN) - || rp.params.contains(Param.TIME_SPAN_MINUTES)) { - endHour = r.getEndHour(); - timeSpan = r.getTimeSpan(); - } - - return String.format( - "%-39.39s %-3.3s%4d%4d%6d %c%6d%7d%2d%2d%c%3d%3d %c%7d%7d", - rp.name, rp.mnemonic, r.productCode, - rp.levels != null ? rp.levels : 0, - rp.resolution != null ? (int) (rp.resolution * 100) : 0, - layerCode, elev, -1 /* contour interval */, r.highPriority ? 1 - : 0, r.interval, r.mapRequested ? 'Y' : 'N', - lowerLayer, upperLayer, multiCuts ? 'Y' : 'N', endHour, - timeSpan); - } -} diff --git a/RadarServer/com.raytheon.rcm.lib/src/com/raytheon/rcm/request/RpsXml.java b/RadarServer/com.raytheon.rcm.lib/src/com/raytheon/rcm/request/RpsXml.java deleted file mode 100755 index 99745648ec..0000000000 --- a/RadarServer/com.raytheon.rcm.lib/src/com/raytheon/rcm/request/RpsXml.java +++ /dev/null @@ -1,62 +0,0 @@ -/** - * This software was developed and / or modified by Raytheon Company, - * pursuant to Contract DG133W-05-CQ-1067 with the US Government. - * - * U.S. EXPORT CONTROLLED TECHNICAL DATA - * This software product contains export-restricted data whose - * export/transfer/disclosure is restricted by U.S. law. Dissemination - * to non-U.S. persons whether in the United States or abroad requires - * an export license or other authorization. - * - * Contractor Name: Raytheon Company - * Contractor Address: 6825 Pine Street, Suite 340 - * Mail Stop B8 - * Omaha, NE 68106 - * 402.291.0100 - * - * See the AWIPS II Master Rights File ("Master Rights File.pdf") for - * further licensing information. - **/ -package com.raytheon.rcm.request; - -import javax.xml.bind.JAXBException; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.raytheon.uf.common.serialization.JAXBManager; - -/** - * Holds the JAXBManager used by other classes. - * - *
- *
- * SOFTWARE HISTORY
- *
- * Date         Ticket#    Engineer    Description
- * ------------ ---------- ----------- --------------------------
- * Jun 09, 2015 4498       nabowle     Switch to JAXBManager.
- *
- * 
- * - * @author nabowle - * @version 1.0 - */ -public class RpsXml { - private static JAXBManager manager; - - private static Logger logger = LoggerFactory.getLogger(RpsXml.class); - - static { - try { - /* JAXBManager#marshalTo... formats output by default. */ - manager = new JAXBManager(RpsList.class); - } catch (JAXBException e) { - logger.error("Could not create JAXBManager.", e); - } - } - - public static JAXBManager getJAXBManager() { - return manager; - } -} diff --git a/RadarServer/com.raytheon.rcm.lib/src/com/raytheon/rcm/request/Sequence.java b/RadarServer/com.raytheon.rcm.lib/src/com/raytheon/rcm/request/Sequence.java deleted file mode 100755 index 59141dac76..0000000000 --- a/RadarServer/com.raytheon.rcm.lib/src/com/raytheon/rcm/request/Sequence.java +++ /dev/null @@ -1,45 +0,0 @@ -/** - * This software was developed and / or modified by Raytheon Company, - * pursuant to Contract DG133W-05-CQ-1067 with the US Government. - * - * U.S. EXPORT CONTROLLED TECHNICAL DATA - * This software product contains export-restricted data whose - * export/transfer/disclosure is restricted by U.S. law. Dissemination - * to non-U.S. persons whether in the United States or abroad requires - * an export license or other authorization. - * - * Contractor Name: Raytheon Company - * Contractor Address: 6825 Pine Street, Suite 340 - * Mail Stop B8 - * Omaha, NE 68106 - * 402.291.0100 - * - * See the AWIPS II Master Rights File ("Master Rights File.pdf") for - * further licensing information. - **/ -package com.raytheon.rcm.request; - -import java.util.HashMap; - -/** Utility class used to generate unique request sequence numbers. */ -public class Sequence { - // The RPS list manager uses the sequence number one. - private static final short MIN_SEQUENCE_NUMBER = 2; - - protected static HashMap map = new HashMap(); - - public static short next(String radarID) { - synchronized (map) { - short[] value = map.get(radarID); - if (value == null) { - value = new short[1]; - value[0] = MIN_SEQUENCE_NUMBER; - map.put(radarID, value); - } - short nextValue = value[0]++; - if (nextValue == Short.MAX_VALUE) - value[0] = MIN_SEQUENCE_NUMBER; - return nextValue; - } - } -} diff --git a/RadarServer/com.raytheon.rcm.lib/src/com/raytheon/rcm/rmr/ActiveRequest.java b/RadarServer/com.raytheon.rcm.lib/src/com/raytheon/rcm/rmr/ActiveRequest.java deleted file mode 100644 index 3077c1c2f3..0000000000 --- a/RadarServer/com.raytheon.rcm.lib/src/com/raytheon/rcm/rmr/ActiveRequest.java +++ /dev/null @@ -1,71 +0,0 @@ -/** - * This software was developed and / or modified by Raytheon Company, - * pursuant to Contract DG133W-05-CQ-1067 with the US Government. - * - * U.S. EXPORT CONTROLLED TECHNICAL DATA - * This software product contains export-restricted data whose - * export/transfer/disclosure is restricted by U.S. law. Dissemination - * to non-U.S. persons whether in the United States or abroad requires - * an export license or other authorization. - * - * Contractor Name: Raytheon Company - * Contractor Address: 6825 Pine Street, Suite 340 - * Mail Stop B8 - * Omaha, NE 68106 - * 402.291.0100 - * - * See the AWIPS II Master Rights File ("Master Rights File.pdf") for - * further licensing information. - **/ -package com.raytheon.rcm.rmr; - -import java.util.concurrent.Delayed; -import java.util.concurrent.TimeUnit; - -public class ActiveRequest implements Delayed { - private MultipleRequest multipleRequest; - private long nextTime; - private int remainingTime; - - public ActiveRequest() { - nextTime = Long.MAX_VALUE; - } - - public ActiveRequest(MultipleRequest mr) { - this.multipleRequest = mr; - this.nextTime = System.currentTimeMillis() + - mr.getInterval() * 1000; - this.remainingTime = mr.getDuration(); - } - public MultipleRequest getMultipleRequest() { - return multipleRequest; - } - /* This method supports serialization. It should not be called from normal - * code because the effects on nextTime are not defined. - */ - public void setMultipleRequest(MultipleRequest multipleRequest) { - this.multipleRequest = multipleRequest; - } - public long getNextTime() { - return nextTime; - } - public void setNextTime(long nextTime) { - this.nextTime = nextTime; - } - public int getRemainingTime() { - return remainingTime; - } - public void setRemainingTime(int remainingTime) { - this.remainingTime = remainingTime; - } - @Override - public long getDelay(TimeUnit unit) { - long delay = unit.convert(nextTime - System.currentTimeMillis(), - TimeUnit.MILLISECONDS); - return delay; - } - @Override - public int compareTo(Delayed o) { - return (int)(getDelay(TimeUnit.SECONDS) - o.getDelay(TimeUnit.SECONDS)); - } -} diff --git a/RadarServer/com.raytheon.rcm.lib/src/com/raytheon/rcm/rmr/MultipleRequest.java b/RadarServer/com.raytheon.rcm.lib/src/com/raytheon/rcm/rmr/MultipleRequest.java deleted file mode 100644 index 88f695ebdd..0000000000 --- a/RadarServer/com.raytheon.rcm.lib/src/com/raytheon/rcm/rmr/MultipleRequest.java +++ /dev/null @@ -1,114 +0,0 @@ -/** - * This software was developed and / or modified by Raytheon Company, - * pursuant to Contract DG133W-05-CQ-1067 with the US Government. - * - * U.S. EXPORT CONTROLLED TECHNICAL DATA - * This software product contains export-restricted data whose - * export/transfer/disclosure is restricted by U.S. law. Dissemination - * to non-U.S. persons whether in the United States or abroad requires - * an export license or other authorization. - * - * Contractor Name: Raytheon Company - * Contractor Address: 6825 Pine Street, Suite 340 - * Mail Stop B8 - * Omaha, NE 68106 - * 402.291.0100 - * - * See the AWIPS II Master Rights File ("Master Rights File.pdf") for - * further licensing information. - **/ -package com.raytheon.rcm.rmr; - -import java.util.Arrays; - -import javax.xml.bind.annotation.XmlList; -import javax.xml.bind.annotation.XmlRootElement; -import javax.xml.bind.annotation.XmlType; - -import com.raytheon.rcm.request.Request; - -@XmlRootElement -@XmlType(propOrder={}) -public class MultipleRequest implements Cloneable { - - @XmlRootElement - @XmlType(propOrder={}) - public static class Element implements Cloneable { - - private String[] radarIDs = new String[0]; - private Request request; - - @XmlList - public String[] getRadarIDs() { - return radarIDs; - } - public void setRadarIDs(String[] radarIDs) { - this.radarIDs = radarIDs; - } - public Request getRequest() { - return request; - } - public void setRequest(Request request) { - this.request = request; - } - - public Element duplicate() { - Element dup; - try { - dup = (Element) clone(); - } catch (CloneNotSupportedException e) { - throw new RuntimeException(e); - } - dup.radarIDs = Arrays.copyOf(radarIDs, radarIDs.length); - dup.request = (Request) request.clone(); - return dup; - } - } - - private String name; - private int duration; - private int interval; - private Element[] elements = new Element[0]; - - public String getName() { - return name; - } - public void setName(String name) { - this.name = name; - } - public int getDuration() { - return duration; - } - public void setDuration(int duration) { - this.duration = duration; - } - public int getInterval() { - return interval; - } - public void setInterval(int interval) { - this.interval = interval; - } - public Element[] getElements() { - return elements; - } - public void setElements(Element[] elements) { - this.elements = elements; - } - - public boolean isSingle() { - return interval <= 0 || duration <= 0; - } - - public MultipleRequest duplicate() { - MultipleRequest dup; - try { - dup = (MultipleRequest) clone(); - } catch (CloneNotSupportedException e) { - throw new RuntimeException(e); - } - dup.elements = new Element[elements.length]; - for (int i = 0; i < elements.length; ++i) - dup.elements[i] = elements[i].duplicate(); - return dup; - } -} diff --git a/RadarServer/com.raytheon.rcm.lib/src/com/raytheon/rcm/rmr/RmrEvent.java b/RadarServer/com.raytheon.rcm.lib/src/com/raytheon/rcm/rmr/RmrEvent.java deleted file mode 100644 index 51bfa9df79..0000000000 --- a/RadarServer/com.raytheon.rcm.lib/src/com/raytheon/rcm/rmr/RmrEvent.java +++ /dev/null @@ -1,35 +0,0 @@ -/** - * This software was developed and / or modified by Raytheon Company, - * pursuant to Contract DG133W-05-CQ-1067 with the US Government. - * - * U.S. EXPORT CONTROLLED TECHNICAL DATA - * This software product contains export-restricted data whose - * export/transfer/disclosure is restricted by U.S. law. Dissemination - * to non-U.S. persons whether in the United States or abroad requires - * an export license or other authorization. - * - * Contractor Name: Raytheon Company - * Contractor Address: 6825 Pine Street, Suite 340 - * Mail Stop B8 - * Omaha, NE 68106 - * 402.291.0100 - * - * See the AWIPS II Master Rights File ("Master Rights File.pdf") for - * further licensing information. - **/ -package com.raytheon.rcm.rmr; - -import javax.xml.bind.annotation.XmlAccessType; -import javax.xml.bind.annotation.XmlAccessorType; -import javax.xml.bind.annotation.XmlRootElement; - -import com.raytheon.rcm.event.NotificationEvent; - -@XmlRootElement -@XmlAccessorType(XmlAccessType.FIELD) -public class RmrEvent extends NotificationEvent { - - public RmrEvent() { - - } -} diff --git a/RadarServer/com.raytheon.rcm.lib/src/com/raytheon/rcm/rmr/RmrXml.java b/RadarServer/com.raytheon.rcm.lib/src/com/raytheon/rcm/rmr/RmrXml.java deleted file mode 100644 index 6d6e3e38cb..0000000000 --- a/RadarServer/com.raytheon.rcm.lib/src/com/raytheon/rcm/rmr/RmrXml.java +++ /dev/null @@ -1,70 +0,0 @@ -/** - * This software was developed and / or modified by Raytheon Company, - * pursuant to Contract DG133W-05-CQ-1067 with the US Government. - * - * U.S. EXPORT CONTROLLED TECHNICAL DATA - * This software product contains export-restricted data whose - * export/transfer/disclosure is restricted by U.S. law. Dissemination - * to non-U.S. persons whether in the United States or abroad requires - * an export license or other authorization. - * - * Contractor Name: Raytheon Company - * Contractor Address: 6825 Pine Street, Suite 340 - * Mail Stop B8 - * Omaha, NE 68106 - * 402.291.0100 - * - * See the AWIPS II Master Rights File ("Master Rights File.pdf") for - * further licensing information. - **/ -package com.raytheon.rcm.rmr; - -import java.util.ArrayList; -import java.util.List; - -import javax.xml.bind.JAXBContext; -import javax.xml.bind.JAXBException; -import javax.xml.bind.Marshaller; -import javax.xml.bind.Unmarshaller; -import javax.xml.bind.annotation.XmlElement; -import javax.xml.bind.annotation.XmlRootElement; - -public class RmrXml { - private static JAXBContext context; - private static Unmarshaller u; - private static Marshaller m; - - @XmlRootElement - public static class ActiveRequests { - @XmlElement(name="activeRequest") - public List list = new ArrayList(); - } - - @XmlRootElement - public static class Requests { - @XmlElement(name="multipleRequest") - public List list = new ArrayList(); - } - - static { - try { - context = JAXBContext.newInstance( - ActiveRequests.class, Requests.class); - u = context.createUnmarshaller(); - m = context.createMarshaller(); - m.setProperty("jaxb.formatted.output", true); - } catch (JAXBException e) { - e.printStackTrace(System.err); - // TODO: Log.errorf("%s", e); - } - } - - public static Unmarshaller getUnmarshaller() { - return u; - } - - public static Marshaller getMarshaller() { - return m; - } - -} diff --git a/RadarServer/com.raytheon.rcm.product/.classpath b/RadarServer/com.raytheon.rcm.product/.classpath deleted file mode 100644 index acad1c227c..0000000000 --- a/RadarServer/com.raytheon.rcm.product/.classpath +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/RadarServer/com.raytheon.rcm.product/.project b/RadarServer/com.raytheon.rcm.product/.project deleted file mode 100644 index ae7ff31d4b..0000000000 --- a/RadarServer/com.raytheon.rcm.product/.project +++ /dev/null @@ -1,28 +0,0 @@ - - - com.raytheon.rcm.product - - - - - - org.eclipse.jdt.core.javabuilder - - - - - org.eclipse.pde.ManifestBuilder - - - - - org.eclipse.pde.SchemaBuilder - - - - - - org.eclipse.pde.PluginNature - org.eclipse.jdt.core.javanature - - diff --git a/RadarServer/com.raytheon.rcm.product/.settings/org.eclipse.jdt.core.prefs b/RadarServer/com.raytheon.rcm.product/.settings/org.eclipse.jdt.core.prefs deleted file mode 100644 index 5138205309..0000000000 --- a/RadarServer/com.raytheon.rcm.product/.settings/org.eclipse.jdt.core.prefs +++ /dev/null @@ -1,12 +0,0 @@ -#Wed Apr 22 17:28:41 CDT 2009 -eclipse.preferences.version=1 -org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled -org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6 -org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve -org.eclipse.jdt.core.compiler.compliance=1.6 -org.eclipse.jdt.core.compiler.debug.lineNumber=generate -org.eclipse.jdt.core.compiler.debug.localVariable=generate -org.eclipse.jdt.core.compiler.debug.sourceFile=generate -org.eclipse.jdt.core.compiler.problem.assertIdentifier=error -org.eclipse.jdt.core.compiler.problem.enumIdentifier=error -org.eclipse.jdt.core.compiler.source=1.6 diff --git a/RadarServer/com.raytheon.rcm.product/.settings/org.eclipse.wst.validation.prefs b/RadarServer/com.raytheon.rcm.product/.settings/org.eclipse.wst.validation.prefs deleted file mode 100644 index 4736024703..0000000000 --- a/RadarServer/com.raytheon.rcm.product/.settings/org.eclipse.wst.validation.prefs +++ /dev/null @@ -1,9 +0,0 @@ -#Wed Apr 22 17:28:41 CDT 2009 -DELEGATES_PREFERENCE=delegateValidatorList -USER_BUILD_PREFERENCE=enabledBuildValidatorList -USER_MANUAL_PREFERENCE=enabledManualValidatorList -USER_PREFERENCE=overrideGlobalPreferencesfalse -eclipse.preferences.version=1 -override=false -suspend=false -vf.version=3 diff --git a/RadarServer/com.raytheon.rcm.product/META-INF/MANIFEST.MF b/RadarServer/com.raytheon.rcm.product/META-INF/MANIFEST.MF deleted file mode 100644 index 9e1ebdd889..0000000000 --- a/RadarServer/com.raytheon.rcm.product/META-INF/MANIFEST.MF +++ /dev/null @@ -1,11 +0,0 @@ -Manifest-Version: 1.0 -Bundle-ManifestVersion: 2 -Bundle-Name: Radar Server Plug-in -Bundle-SymbolicName: com.raytheon.rcm.product;singleton:=true -Bundle-Version: 1.12.1174.qualifier -Bundle-Vendor: RAYTHEON -Bundle-RequiredExecutionEnvironment: JavaSE-1.6 -Require-Bundle: com.raytheon.rcm.lib;bundle-version="1.0.0", - com.raytheon.rcm.server;bundle-version="1.0.0", - com.raytheon.rcm.server.mq;bundle-version="1.0.0", - com.raytheon.rcm.tools;bundle-version="1.0.0" diff --git a/RadarServer/com.raytheon.rcm.product/build.properties b/RadarServer/com.raytheon.rcm.product/build.properties deleted file mode 100644 index e9863e281e..0000000000 --- a/RadarServer/com.raytheon.rcm.product/build.properties +++ /dev/null @@ -1,5 +0,0 @@ -source.. = src/ -output.. = bin/ -bin.includes = META-INF/,\ - .,\ - plugin.xml diff --git a/RadarServer/com.raytheon.rcm.product/com.raytheon.rcm.product.ecl b/RadarServer/com.raytheon.rcm.product/com.raytheon.rcm.product.ecl deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/RadarServer/com.raytheon.rcm.product/plugin.xml b/RadarServer/com.raytheon.rcm.product/plugin.xml deleted file mode 100644 index 5eb191a1bb..0000000000 --- a/RadarServer/com.raytheon.rcm.product/plugin.xml +++ /dev/null @@ -1,23 +0,0 @@ - - - - - diff --git a/RadarServer/com.raytheon.rcm.product/rcm.product b/RadarServer/com.raytheon.rcm.product/rcm.product deleted file mode 100644 index 65ee26f039..0000000000 --- a/RadarServer/com.raytheon.rcm.product/rcm.product +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - - - - - -XstartOnFirstThread -Dorg.eclipse.swt.internal.carbon.smallFonts - - - - - - - - - - diff --git a/RadarServer/com.raytheon.rcm.server.mq/.classpath b/RadarServer/com.raytheon.rcm.server.mq/.classpath deleted file mode 100755 index 751c8f2e50..0000000000 --- a/RadarServer/com.raytheon.rcm.server.mq/.classpath +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/RadarServer/com.raytheon.rcm.server.mq/.project b/RadarServer/com.raytheon.rcm.server.mq/.project deleted file mode 100755 index 589e0be787..0000000000 --- a/RadarServer/com.raytheon.rcm.server.mq/.project +++ /dev/null @@ -1,28 +0,0 @@ - - - com.raytheon.rcm.server.mq - - - - - - org.eclipse.jdt.core.javabuilder - - - - - org.eclipse.pde.ManifestBuilder - - - - - org.eclipse.pde.SchemaBuilder - - - - - - org.eclipse.jdt.core.javanature - org.eclipse.pde.PluginNature - - diff --git a/RadarServer/com.raytheon.rcm.server.mq/META-INF/MANIFEST.MF b/RadarServer/com.raytheon.rcm.server.mq/META-INF/MANIFEST.MF deleted file mode 100644 index 09fde52f8d..0000000000 --- a/RadarServer/com.raytheon.rcm.server.mq/META-INF/MANIFEST.MF +++ /dev/null @@ -1,12 +0,0 @@ -Manifest-Version: 1.0 -Bundle-ManifestVersion: 2 -Bundle-Name: Mq -Bundle-SymbolicName: com.raytheon.rcm.server.mq -Bundle-Version: 1.12.1174.qualifier -Export-Package: com.raytheon.rcm.mqsrvr -Require-Bundle: com.raytheon.rcm.server;bundle-version="1.0.0", - org.apache.activemq;bundle-version="5.2.0", - com.raytheon.rcm.lib;bundle-version="1.0.0", - javax.jms;bundle-version="1.0.0", - org.apache.qpid;bundle-version="0.0.0", - org.itadaki.bzip2;bundle-version="0.9.1" diff --git a/RadarServer/com.raytheon.rcm.server.mq/build.properties b/RadarServer/com.raytheon.rcm.server.mq/build.properties deleted file mode 100644 index b107977f4e..0000000000 --- a/RadarServer/com.raytheon.rcm.server.mq/build.properties +++ /dev/null @@ -1,3 +0,0 @@ -source.. = src/ -bin.includes = META-INF/,\ - . diff --git a/RadarServer/com.raytheon.rcm.server.mq/com.raytheon.rcm.server.mq.ecl b/RadarServer/com.raytheon.rcm.server.mq/com.raytheon.rcm.server.mq.ecl deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/RadarServer/com.raytheon.rcm.server.mq/src/com/raytheon/rcm/mqsrvr/MQServer.java b/RadarServer/com.raytheon.rcm.server.mq/src/com/raytheon/rcm/mqsrvr/MQServer.java deleted file mode 100755 index 8ac7b4bc89..0000000000 --- a/RadarServer/com.raytheon.rcm.server.mq/src/com/raytheon/rcm/mqsrvr/MQServer.java +++ /dev/null @@ -1,88 +0,0 @@ -/** - * This software was developed and / or modified by Raytheon Company, - * pursuant to Contract DG133W-05-CQ-1067 with the US Government. - * - * U.S. EXPORT CONTROLLED TECHNICAL DATA - * This software product contains export-restricted data whose - * export/transfer/disclosure is restricted by U.S. law. Dissemination - * to non-U.S. persons whether in the United States or abroad requires - * an export license or other authorization. - * - * Contractor Name: Raytheon Company - * Contractor Address: 6825 Pine Street, Suite 340 - * Mail Stop B8 - * Omaha, NE 68106 - * 402.291.0100 - * - * See the AWIPS II Master Rights File ("Master Rights File.pdf") for - * further licensing information. - **/ -package com.raytheon.rcm.mqsrvr; - -import org.apache.activemq.ActiveMQConnectionFactory; -import org.apache.activemq.broker.BrokerFactory; -import org.apache.activemq.broker.BrokerService; - -import com.raytheon.rcm.config.EndpointConfig; -import com.raytheon.rcm.server.RadarServer; -import com.raytheon.rcm.server.dataarchive.DataArchiveEndpoint; - -public class MQServer { - - /** - * @param args - */ - public static void main(String[] args) { - - RadarServer server = null; - try { - server = RadarServer.createServer(); - } catch (Exception e) { - throw new RuntimeException(e); - } - - server.addDefaultListeners(); - - server.addListener(new DataArchiveEndpoint(server)); - - BrokerService broker = null; - - // configure the broker - try { - String brokerURL = null; - String brokerHost = "0.0.0.0"; - - EndpointConfig ecConfig = server.getConfiguration() - .getEndpointConfig(); - if (ecConfig != null) { - String s; - s = ecConfig.getRadarServerBrokerURL(); - if (s != null) - brokerURL = s; - else { - s = ecConfig.getRadarServerBrokerHost(); - if (s != null) - brokerHost = s; - } - } - - if (brokerURL == null) - brokerURL = String.format( - "broker:(tcp://%1$s:8813,stomp://%1$s:8814)/radarServer?" - + "persistent=false&", brokerHost); - broker = BrokerFactory.createBroker(brokerURL); - broker.start(); - } catch (Exception e) { - System.err.println("Cannot start broker service:"); - e.printStackTrace(System.err); - } - - ActiveMQConnectionFactory connFac = new ActiveMQConnectionFactory( - broker.getVmConnectorURI()); - MsgServ ms = new MsgServ(server); - server.addListener(ms); - ms.start(connFac, connFac); - - server.run(); - } -} diff --git a/RadarServer/com.raytheon.rcm.server.mq/src/com/raytheon/rcm/mqsrvr/MsgServ.java b/RadarServer/com.raytheon.rcm.server.mq/src/com/raytheon/rcm/mqsrvr/MsgServ.java deleted file mode 100644 index 97ea6fd694..0000000000 --- a/RadarServer/com.raytheon.rcm.server.mq/src/com/raytheon/rcm/mqsrvr/MsgServ.java +++ /dev/null @@ -1,440 +0,0 @@ -/** - * This software was developed and / or modified by Raytheon Company, - * pursuant to Contract DG133W-05-CQ-1067 with the US Government. - * - * U.S. EXPORT CONTROLLED TECHNICAL DATA - * This software product contains export-restricted data whose - * export/transfer/disclosure is restricted by U.S. law. Dissemination - * to non-U.S. persons whether in the United States or abroad requires - * an export license or other authorization. - * - * Contractor Name: Raytheon Company - * Contractor Address: 6825 Pine Street, Suite 340 - * Mail Stop B8 - * Omaha, NE 68106 - * 402.291.0100 - * - * See the AWIPS II Master Rights File ("Master Rights File.pdf") for - * further licensing information. - **/ -package com.raytheon.rcm.mqsrvr; - -import java.io.StringReader; -import java.io.StringWriter; -import java.util.ArrayList; -import java.util.Map; - -import javax.jms.Destination; -import javax.jms.JMSException; -import javax.jms.Message; -import javax.jms.MessageListener; -import javax.jms.Queue; -import javax.jms.QueueConnection; -import javax.jms.QueueConnectionFactory; -import javax.jms.QueueReceiver; -import javax.jms.QueueSender; -import javax.jms.QueueSession; -import javax.jms.Session; -import javax.jms.TextMessage; -import javax.jms.Topic; -import javax.jms.TopicConnection; -import javax.jms.TopicConnectionFactory; -import javax.jms.TopicPublisher; -import javax.jms.TopicSession; -import javax.xml.bind.JAXBContext; -import javax.xml.bind.JAXBException; -import javax.xml.bind.Marshaller; -import javax.xml.bind.Unmarshaller; - -import com.raytheon.rcm.event.ConfigEvent; -import com.raytheon.rcm.event.NotificationEvent; -import com.raytheon.rcm.event.OtrEvent; -import com.raytheon.rcm.event.RadarEvent; -import com.raytheon.rcm.event.RadarEventListener; -import com.raytheon.rcm.message.GSM; -import com.raytheon.rcm.message.GraphicProduct; -import com.raytheon.rcm.mqsrvr.ReplyObj.ROStatus; -import com.raytheon.rcm.mqsrvr.ReqObj.ActivateRMR; -import com.raytheon.rcm.mqsrvr.ReqObj.CancelRMR; -import com.raytheon.rcm.mqsrvr.ReqObj.DebugCommand; -import com.raytheon.rcm.mqsrvr.ReqObj.DebugHandleMessage; -import com.raytheon.rcm.mqsrvr.ReqObj.GetActiveRMRs; -import com.raytheon.rcm.mqsrvr.ReqObj.GetGlobalConfig; -import com.raytheon.rcm.mqsrvr.ReqObj.GetRadarConfig; -import com.raytheon.rcm.mqsrvr.ReqObj.GetRadarList; -import com.raytheon.rcm.mqsrvr.ReqObj.GetRadarStatusMessages; -import com.raytheon.rcm.mqsrvr.ReqObj.GetRpsList; -import com.raytheon.rcm.mqsrvr.ReqObj.SendCcmRequest; -import com.raytheon.rcm.mqsrvr.ReqObj.SendConfigFile; -import com.raytheon.rcm.mqsrvr.ReqObj.SendMessageToRPG; -import com.raytheon.rcm.mqsrvr.ReqObj.SendOneTimeRequests; -import com.raytheon.rcm.mqsrvr.ReqObj.SendRpsList; -import com.raytheon.rcm.mqsrvr.ReqObj.SendRpsListData; -import com.raytheon.rcm.mqsrvr.ReqObj.SetGlobalConfig; -import com.raytheon.rcm.mqsrvr.ReqObj.SetRadarConfig; -import com.raytheon.rcm.otrmgr.OTRHandler; -import com.raytheon.rcm.request.RpsList; -import com.raytheon.rcm.rmr.RmrEvent; -import com.raytheon.rcm.server.Log; -import com.raytheon.rcm.server.RadarServer; -import com.raytheon.rcm.server.StatusManager.RadarStatus; - -/** - * JMS-based RadarServer request message handler. - * - *
- *
- * SOFTWARE HISTORY
- * Date         Ticket#    Engineer    Description
- * ------------ ---------- ----------- --------------------------
- * ...
- * 2014-02-03   DR 14762   D. Friedman Handle NDM config files.
- * 2016-05-25   DR 18800   jdynina     Removed alerting
- * 2016-05-10   DCS18795   jdynina     Added CCM, CPM
- * 
- * - */ -public class MsgServ implements RadarEventListener, MessageListener { - - QueueConnection queueConn; - - QueueSession queueSession; - - QueueSender queueSender; - - TopicConnection topicConn; - - TopicSession topicSession; - - TopicPublisher topicPublisher; - - JAXBContext jaxbCtx; - - Marshaller m; - - Unmarshaller u; - - Serv serv; - - public MsgServ(RadarServer server) { - serv = new Serv(server); - try { - jaxbCtx = JAXBContext.newInstance(ReqObj.class, ReplyObj.class, - EventObj.class, RmrEvent.class); - m = jaxbCtx.createMarshaller(); - u = jaxbCtx.createUnmarshaller(); - } catch (JAXBException e) { - Log.errorf("MsgServ could not create JAXBContext: %s", e); - } - } - - public void start(QueueConnectionFactory qConnFac, - TopicConnectionFactory tConnFac) { - try { - queueConn = qConnFac.createQueueConnection(); - queueSession = queueConn.createQueueSession(false, - Session.AUTO_ACKNOWLEDGE); - Queue queue = queueSession.createQueue("RadarServer"); - queueSender = queueSession.createSender(null); - QueueReceiver qr = queueSession.createReceiver(queue); - qr.setMessageListener(this); - - topicConn = tConnFac.createTopicConnection(); - topicSession = topicConn.createTopicSession(false, - Session.AUTO_ACKNOWLEDGE); - Topic topic = topicSession.createTopic("RadarEvents"); - topicPublisher = topicSession.createPublisher(topic); - - queueConn.start(); - } catch (JMSException e) { - Log.errorf("MsgServ could not start connections: %s", e); - } - } - - @Override - public void handleRadarEvent(RadarEvent event) { - RadarEvent eventToSend = EventObj.filterRadarEvent(event); - if (eventToSend != null) - publishEvent(eventToSend); - } - - @Override - public void onMessage(Message msg) { - try { - ReplyObj po = null; - String error = null; - Exception exc = null; - - Destination replyToDestination = msg.getJMSReplyTo(); - - if (msg instanceof TextMessage) { - TextMessage tms = (TextMessage) msg; - StringReader sr = new StringReader(tms.getText()); - Object o = null; - try { - o = u.unmarshal(sr); - } catch (JAXBException e) { - exc = e; - } - - if (o instanceof ReqObj) { - ReqObj ro = (ReqObj) o; - try { - po = handleRequest(replyToDestination, ro); - } catch (RuntimeException e) { - error = "Unexpected error while processing request: " - + e.toString(); - exc = e; - } - } else if (o != null) - error = String.format("Invalid request class '%s'", - o.getClass()); - } else - error = "Invalid JMS message type"; - - if (error == null && exc != null) - error = exc.toString(); - if (po == null) - po = ReplyObj.error(error != null ? error : "Unknown error"); - - if (exc != null) - Log.errorf("Error processing remote request: %s", exc); - else if (error != null) - Log.errorf("Error processing remote request: %s", error); - - if (po != null) { - StringWriter sw = new StringWriter(); - try { - synchronized (m) { - m.marshal(po, sw); - } - } catch (JAXBException e) { - Log.errorf("Error processing remote request: %s", e); - return; - } - TextMessage rtm = queueSession.createTextMessage(sw.toString()); - - String id = msg.getJMSCorrelationID(); - if (id == null) - id = msg.getJMSMessageID(); - if (id != null) - rtm.setJMSCorrelationID(id); - if (replyToDestination != null) - queueSender.send(replyToDestination, rtm); - else - Log.errorf("Client did not specify reply-to destination"); - } - - } catch (JMSException e) { - Log.errorf("Error while processing JMS message: %s", e); - } - } - - private ReplyObj handleRequest(Destination replyToDestination, ReqObj ro) { - ReplyObj po = null; - String error = null; - - Log.eventf("Got remote request %s", ro); - - if (ro instanceof GetRadarList) - po = ReplyObj.toGetRadarList(serv.getRadarList()); - else if (ro instanceof GetRadarConfig) { - GetRadarConfig grc = (GetRadarConfig) ro; - if (grc.radarID != null) - po = ReplyObj - .toGetRadarConfig(serv.getRadarConfig(grc.radarID)); - else - po = ReplyObj.toGetRadarConfig(serv.getAllRadarConfigs()); - } else if (ro instanceof SetRadarConfig) { - SetRadarConfig src = (SetRadarConfig) ro; - error = serv.setRadarConfig(src.config); - } else if (ro instanceof GetRadarStatusMessages) { - GetRadarStatusMessages grs = (GetRadarStatusMessages) ro; - if (grs.radarID != null) - po = ReplyObj.toGetRadarStatusMessages(createROStatus( - grs.radarID, serv.getRadarStatus(grs.radarID))); - else { - ArrayList status = new ArrayList<>(); - for (Map.Entry e : serv - .getAllRadarStatus().entrySet()) { - status.add(createROStatus(e.getKey(), e.getValue())); - } - po = ReplyObj.toGetRadarStatusMessages(status); - } - } else if (ro instanceof SendOneTimeRequests) { - MsgServOtrHandler handler = null; - - /* - * Correlation ID should be null so as to not intefere with the - * handler list on the client side. - */ - /* - * String id = msg.getJMSCorrelationID(); if (id == null) id = - * msg.getJMSMessageID(); - */ - String id = null; - if (replyToDestination != null) - handler = new MsgServOtrHandler(replyToDestination, id); - - SendOneTimeRequests r = (SendOneTimeRequests) ro; - serv.sendOTRs(r.radarIDs, r.requests, handler); - } else if (ro instanceof SendRpsList) { - SendRpsList r = (SendRpsList) ro; - boolean store = r.store != null && r.store.booleanValue(); - error = serv.sendRpsList(r.radarIDs, r.vcp, r.requests, store); - } else if (ro instanceof SendRpsListData) { - SendRpsListData r = (SendRpsListData) ro; - boolean store = r.store != null && r.store.booleanValue(); - error = serv.sendRpsListData(r.radarIDs, r.vcp, r.listData, store); - } else if (ro instanceof GetRpsList) { - GetRpsList r = (GetRpsList) ro; - if (r.radarID != null) { - int vcp = r.vcp != null ? r.vcp : -1; - int opMode = r.opMode != null ? r.opMode - : GSM.OP_MODE_MAINTENANCE; - RpsList rpsList = serv.getRpsList(r.radarID, opMode, vcp); - po = new ReplyObj.RpsListReply(rpsList); - /* - * if (rpsList != null) po = ReplyObj.toGetRpsList(rpsList); - * else error = - * String.format("Could not retrieve RPS list for radar %s%s", - * r.radarID, vcp != -1 ? ", VCP " + vcp : ""); - */ - } else - error = "Must specify a radar name"; - } else if (ro instanceof GetGlobalConfig) { - ReplyObj.GlobalConfigReply r = new ReplyObj.GlobalConfigReply(); - r.global = serv.getGlobalConfig(); - po = r; - } else if (ro instanceof SetGlobalConfig) { - error = serv.setGlobalConfig(((SetGlobalConfig) ro).global); - } else if (ro instanceof ActivateRMR) { - error = serv.activateRMR(((ActivateRMR) ro).multipleRequest); - } else if (ro instanceof CancelRMR) { - error = serv.cancelRMR(((CancelRMR) ro).requestName); - } else if (ro instanceof GetActiveRMRs) { - ReplyObj.RmrReply r = new ReplyObj.RmrReply(); - r.list = serv.getActiveRMRs(); - po = r; - } else if (ro instanceof SendCcmRequest) { - SendCcmRequest ro2 = (SendCcmRequest) ro; - error = serv.sendCcmRequest(ro2.radarID, ro2.ccmRequest); - } else if (ro instanceof SendMessageToRPG) { - SendMessageToRPG ro2 = (SendMessageToRPG) ro; - error = serv.sendMessageToRPG(ro2.radarID, ro2.message); - } else if (ro instanceof SendConfigFile) { - SendConfigFile ro2 = (SendConfigFile) ro; - error = serv.sendConfigFile(ro2.fileName, ro2.fileData); - } else if (ro instanceof DebugCommand) { - DebugCommand.Command c = ((DebugCommand) ro).command; - if (c == DebugCommand.Command.LOG_OTR_STATUS) - serv.logOtrStatus(); - else - error = String.format("Unknown debug command '%s'", c); - } else if (ro instanceof DebugHandleMessage) { - DebugHandleMessage r = (DebugHandleMessage) ro; - error = serv.debugHandleMessage(r.radarID, r.message); - } else - error = String.format("Unsupported request '%s'", ro.toString()); - - if (po == null) { - if (error == null) - po = new ReplyObj(); - else - po = ReplyObj.error(error); - } - - return po; - } - - private ROStatus createROStatus(String radarID, RadarStatus rs) { - ROStatus ros = new ROStatus(); - ros.radarID = radarID; - ros.currentGSM = rs.getCurrentGSM(); - ros.currentCPM = rs.getCurrentCPM(); - ros.currentPTL = rs.getCurrentPTL(); - ros.lastGSM = rs.getLastGSM(); - ros.lastCPM = rs.getLastCPM(); - ros.lastPTL = rs.getLastPTL(); - return ros; - } - - @Override - public void handleConfigEvent(ConfigEvent event) { - publishEvent(event); - } - - private void publishEvent(Object obj) { - // Can get events before mq is set up. - if (topicPublisher == null) - return; - - StringWriter sw = new StringWriter(); - try { - synchronized (m) { - m.marshal(obj, sw); - } - } catch (JAXBException e) { - Log.errorf("Error serializing event: %s", e); - return; - } - try { - TextMessage tm = topicSession.createTextMessage(sw.toString()); - topicPublisher.publish(tm); - } catch (JMSException e) { - Log.errorf("Error sending message: %s", e); - } - } - - @Override - public void handleNotificationEvent(NotificationEvent event) { - publishEvent(event); - } - - class MsgServOtrHandler implements OTRHandler { - Destination destination; - - String correlationID; - - public MsgServOtrHandler(Destination destination, String correlationID) { - this.destination = destination; - this.correlationID = correlationID; - } - - @Override - public void handleOtrEvent(OtrEvent event) { - OtrEvent eventToSend = event.clone(); - /* - * This OTR notification capability is currently only used to - * display alerts in CAVE. Thus, there is no need to send the actual - * product data. Given that some products can be larger than one - * megabyte and the notification is in XML format, this is a useful - * optimization. - */ - if (event.product != null - && com.raytheon.rcm.message.Message - .messageCodeOf(event.product) > 16) - eventToSend.product = GraphicProduct - .extractHeaderAndPDB(event.product); - - StringWriter sw = new StringWriter(); - try { - synchronized (m) { - m.marshal(eventToSend, sw); - } - } catch (JAXBException e) { - Log.errorf("Error processing remote request: %s", e); - return; - } - try { - TextMessage rtm = queueSession.createTextMessage(sw.toString()); - if (correlationID != null) - rtm.setJMSCorrelationID(correlationID); - queueSender.send(destination, rtm); - } catch (JMSException e) { - Log.errorf("Error sending message: %s", e); - } - } - - } -} diff --git a/RadarServer/com.raytheon.rcm.server.mq/src/com/raytheon/rcm/mqsrvr/Serv.java b/RadarServer/com.raytheon.rcm.server.mq/src/com/raytheon/rcm/mqsrvr/Serv.java deleted file mode 100755 index 3cc14676b9..0000000000 --- a/RadarServer/com.raytheon.rcm.server.mq/src/com/raytheon/rcm/mqsrvr/Serv.java +++ /dev/null @@ -1,314 +0,0 @@ -/** - * This software was developed and / or modified by Raytheon Company, - * pursuant to Contract DG133W-05-CQ-1067 with the US Government. - * - * U.S. EXPORT CONTROLLED TECHNICAL DATA - * This software product contains export-restricted data whose - * export/transfer/disclosure is restricted by U.S. law. Dissemination - * to non-U.S. persons whether in the United States or abroad requires - * an export license or other authorization. - * - * Contractor Name: Raytheon Company - * Contractor Address: 6825 Pine Street, Suite 340 - * Mail Stop B8 - * Omaha, NE 68106 - * 402.291.0100 - * - * See the AWIPS II Master Rights File ("Master Rights File.pdf") for - * further licensing information. - **/ -package com.raytheon.rcm.mqsrvr; - -import java.io.IOException; -import java.util.ArrayList; -import java.util.Collection; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import javax.xml.bind.JAXBException; - -import com.raytheon.rcm.ccmreq.CcmRequestDefinition; -import com.raytheon.rcm.config.Configuration; -import com.raytheon.rcm.config.Globals; -import com.raytheon.rcm.config.MutableConfiguration; -import com.raytheon.rcm.config.RadarConfig; -import com.raytheon.rcm.config.RcmUtil; -import com.raytheon.rcm.event.RadarEvent; -import com.raytheon.rcm.event.RadarEventListener; -import com.raytheon.rcm.message.Message; -import com.raytheon.rcm.otrmgr.OTRHandler; -import com.raytheon.rcm.otrmgr.OTRManager; -import com.raytheon.rcm.request.Request; -import com.raytheon.rcm.request.RpsList; -import com.raytheon.rcm.rmr.ActiveRequest; -import com.raytheon.rcm.rmr.MultipleRequest; -import com.raytheon.rcm.ccmmgr.CCMManager; -import com.raytheon.rcm.rmrmgr.RMRManager; -import com.raytheon.rcm.rpsmgr.RPSListManager; -import com.raytheon.rcm.server.Log; -import com.raytheon.rcm.server.RadarServer; -import com.raytheon.rcm.server.StatusManager; -import com.raytheon.rcm.server.StatusManager.RadarStatus; - - -/** - * Common RadarServer request message handler. - * - *
- *
- * SOFTWARE HISTORY
- * Date         Ticket#    Engineer    Description
- * ------------ ---------- ----------- --------------------------
- * ...
- * 2014-02-03   DR 14762   D. Friedman Handle NDM config files.
- * 2015-06-10   4498       nabowle     Rename Util->RcmUtil
- * 2016-05-25   DR 18800   jdynina     Removed alerting
- * 2016-05-10   DCS18795   jdynina     Added CCM
- * 
- * - */ -public class Serv { - - protected RadarServer server; - - protected OTRManager otrManager; - - private RMRManager rmrManager; - - private CCMManager ccmManager; - - public Serv(RadarServer server) { - this.server = server; - - for (RadarEventListener l : server.getListeners()) { - if (l instanceof OTRManager) { - otrManager = (OTRManager) l; - } else if (l instanceof RMRManager) { - rmrManager = (RMRManager) l; - } else if (l instanceof CCMManager) { - ccmManager = (CCMManager) l; - } - } - - if (otrManager == null) { - Log.warn("No OTR manager is registered. Remote clients cannot sent OTRs."); - } - if (rmrManager == null) { - Log.warn("No RMR manager is registered. Remote clients cannot sent RMRs."); - } - if (ccmManager == null) { - Log.warn("No CCM manager is registered. Remote clients cannot sent CCMs."); - } - } - - public Collection getRadarList() { - return server.getConfiguration().getConfiguredRadarList(); - } - - public RadarConfig getRadarConfig(String radarID) { - return server.getConfiguration().getConfigForRadar(radarID); - } - - public Collection getAllRadarConfigs() { - Configuration config = server.getConfiguration(); - Collection result = new ArrayList<>(); - for (String radarID : config.getConfiguredRadarList()) { - RadarConfig rc = config.getConfigForRadar(radarID); - if (rc != null) - result.add(rc); - } - return result; - } - - public RadarStatus getRadarStatus(String radarID) { - return server.getStatusManager().getRadarStatus(radarID); - } - - public Map getAllRadarStatus() { - HashMap result = new HashMap<>(); - Configuration config = server.getConfiguration(); - StatusManager statusManager = server.getStatusManager(); - for (String radarID : config.getConfiguredRadarList()) { - // TODO: status should be a copy because it could change - // another reason for AbstractRadarStatus - RadarStatus rs = statusManager.getRadarStatus(radarID); - if (rs != null) - result.put(radarID, rs); - } - return result; - } - - public void sendOTRs(List radarIDs, List requests, - OTRHandler otrHandler) { - if (otrManager != null) - otrManager.sendOneTimeRequests(radarIDs, requests, otrHandler); - } - - public void logOtrStatus() { - otrManager.logStatus(); - } - - public String debugHandleMessage(String radarID, byte[] message) { - Configuration config = server.getConfiguration(); - if (radarID == null) { - int srcId = Message.sourceIdOf(message); - for (String aRadarID : config.getConfiguredRadarList()) { - RadarConfig rc = config.getConfigForRadar(aRadarID); - if (rc != null && rc.getNexradID() == srcId) { - radarID = rc.getRadarID(); - break; - } - } - if (radarID == null) - return String.format("No radar with ID " + srcId); - } else { - if (config.getConfigForRadar(radarID) == null) - return String.format("Radar '%s' is not configured", radarID); - } - // TODO: support explicit and detected radarID - server.handleRadarEvent(new RadarEvent(RadarEvent.MESSAGE_RECEIVED, - radarID, message)); - return null; - } - - public String sendRpsList(List radarIDs, int vcp, - List requests, boolean store) { - // TODO: INVALID_OP_MODE - RpsList rpsList = new RpsList(-1, vcp, requests.toArray(new Request[0])); - return sendRpsListCommon(radarIDs, rpsList, vcp, store); - } - - public String sendRpsListData(List radarIDs, int vcp, byte[] data, - boolean store) { - // TODO: INVALID_OP_MODE - RpsList rpsList; - try { - rpsList = RcmUtil.parseRpsListData(data, -1, vcp); - } catch (IOException e) { - // TODO: ... - return e.toString(); - } catch (JAXBException e) { - // TODO: ... - return e.toString(); - } - return sendRpsListCommon(radarIDs, rpsList, vcp, store); - } - - private String sendRpsListCommon(List radarIDs, RpsList rpsList, - int vcp, boolean store) { - StringBuilder sb = new StringBuilder(); - RPSListManager lm = getRPSListManager(); - if (lm != null) { - for (String radarID : radarIDs) { - String error = lm.sendRpsList(radarID, rpsList, store); - if (error != null) { - if (sb.length() > 0) - sb.append('\n'); - sb.append(error); - } - } - } - if (sb.length() > 0) - return sb.toString(); - else - return null; - } - - public RpsList getRpsList(String radarID, int opMode, int vcp) { - if (vcp != -1) { - Configuration config = server.getConfiguration(); - return config.getLocalRpsList(radarID, opMode, vcp, null); - } else { - RPSListManager lm = getRPSListManager(); - if (lm != null) - return lm.getCurrentRpsList(radarID); - else - return null; - } - } - - private RPSListManager getRPSListManager() { - for (RadarEventListener l : server.getListeners()) { - if (l instanceof RPSListManager) { - return (RPSListManager) l; - } - } - return null; - } - - public Globals getGlobalConfig() { - Globals globals = new Globals(); - Configuration config = server.getConfiguration(); - globals.collectionEnabled = config.isCollectionEnabled(); - globals.decompressProducts = config.isDecompressProducts(); - globals.edexEndpoint = config.getEdexEndpoint(); - globals.pupID = config.getPupId(); - globals.regionCode = config.getRegionCode(); - globals.tdwrCollectionLimited = config.isTdwrCollectionLimited(); - globals.wmoSiteID = config.getWmoSiteID(); - globals.endpointConfig = config.getEndpointConfig(); - return globals; - } - - public String setGlobalConfig(Globals global) { - Configuration config = server.getConfiguration(); - if (!(config instanceof MutableConfiguration)) - return "The RadarServer's current configuration system does not support live changes."; - MutableConfiguration mc = (MutableConfiguration) config; - boolean result = mc.setGlobalConfig(global); - - if (result) - return null; - else - /* TODO: saved vs. taking affect... */ - return "Error updating configuration."; - } - - public String setRadarConfig(RadarConfig rc) { - Configuration config = server.getConfiguration(); - if (!(config instanceof MutableConfiguration)) - return "The RadarServer's current configuration system does not support live changes."; - MutableConfiguration mc = (MutableConfiguration) config; - boolean result = mc.setRadarConfig(rc); - - if (result) - return null; - else - /* TODO: saved vs. taking affect... */ - return "Error updating configuration."; - } - - public String activateRMR(MultipleRequest mr) { - return rmrManager.activateRequest(mr); - } - - public String cancelRMR(String requestName) { - return rmrManager.cancelRequest(requestName); - } - - public Collection getActiveRMRs() { - return rmrManager.getActiveRequests(); - } - - public String sendCcmRequest(String radarID, CcmRequestDefinition ccmRequest) { - return ccmManager.sendCcmRequest(radarID, ccmRequest); - } - - public String sendMessageToRPG(String radarID, byte[] message) { - server.getConnectionManager().sendMessageToRadar(radarID, message); - return null; - } - - public String sendConfigFile(String fileName, byte[] fileData) { - Configuration config = server.getConfiguration(); - if (! (config instanceof MutableConfiguration)) - return "The RadarServer's current configuration system does not support live changes."; - MutableConfiguration mc = (MutableConfiguration) config; - boolean result = mc.storeConfigFile(fileName, fileData); - if (result) - return null; - else - return "Error updating configuration."; - } -} diff --git a/RadarServer/com.raytheon.rcm.server.mq/src/com/raytheon/rcm/server/dataarchive/DataArchiveEndpoint.java b/RadarServer/com.raytheon.rcm.server.mq/src/com/raytheon/rcm/server/dataarchive/DataArchiveEndpoint.java deleted file mode 100644 index feceec10d3..0000000000 --- a/RadarServer/com.raytheon.rcm.server.mq/src/com/raytheon/rcm/server/dataarchive/DataArchiveEndpoint.java +++ /dev/null @@ -1,724 +0,0 @@ -/** - * This software was developed and / or modified by Raytheon Company, - * pursuant to Contract DG133W-05-CQ-1067 with the US Government. - * - * U.S. EXPORT CONTROLLED TECHNICAL DATA - * This software product contains export-restricted data whose - * export/transfer/disclosure is restricted by U.S. law. Dissemination - * to non-U.S. persons whether in the United States or abroad requires - * an export license or other authorization. - * - * Contractor Name: Raytheon Company - * Contractor Address: 6825 Pine Street, Suite 340 - * Mail Stop B8 - * Omaha, NE 68106 - * 402.291.0100 - * - * See the AWIPS II Master Rights File ("Master Rights File.pdf") for - * further licensing information. - **/ -package com.raytheon.rcm.server.dataarchive; - -import java.io.ByteArrayInputStream; -import java.io.DataInputStream; -import java.io.File; -import java.io.FileOutputStream; -import java.io.IOException; -import java.io.InputStream; -import java.nio.BufferUnderflowException; -import java.nio.ByteBuffer; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Calendar; -import java.util.HashMap; -import java.util.HashSet; -import java.util.Scanner; -import java.util.regex.Pattern; - -import javax.jms.JMSException; -import javax.jms.MessageProducer; -import javax.jms.Queue; -import javax.jms.QueueConnection; -import javax.jms.QueueSession; -import javax.jms.Session; -import javax.jms.TextMessage; - -import org.apache.qpid.client.AMQConnectionFactory; -import org.itadaki.bzip2.BZip2InputStream; - -import com.raytheon.rcm.config.EndpointConfig; -import com.raytheon.rcm.config.RadarConfig; -import com.raytheon.rcm.config.RadarType; -import com.raytheon.rcm.config.RcmUtil; -import com.raytheon.rcm.config.awips1.Awips1ProdDistInfoBuilder; -import com.raytheon.rcm.event.ConfigEvent; -import com.raytheon.rcm.event.ConfigEvent.Category; -import com.raytheon.rcm.event.RadarEvent; -import com.raytheon.rcm.event.RadarEventAdapter; -import com.raytheon.rcm.message.GraphicProduct; -import com.raytheon.rcm.message.GraphicProduct.PDB; -import com.raytheon.rcm.message.Message; -import com.raytheon.rcm.message.MessageFormatException; -import com.raytheon.rcm.products.ProductInfo; -import com.raytheon.rcm.products.ProductInfo.Selector; -import com.raytheon.rcm.products.RadarProduct; -import com.raytheon.rcm.products.RadarProduct.Param; -import com.raytheon.rcm.server.Log; -import com.raytheon.rcm.server.RadarServer; - -/** - * Stores radar messages in a directory structure and notifies EDEX via JMS. - * - *
- *
- * SOFTWARE HISTORY
- * Date         Ticket#    Engineer    Description
- * ------------ ---------- ----------- --------------------------
- * ...
- * 2014-02-03   DR 14762   D. Friedman Refactor config events.
- * 2015-07-13   DR 17672   D. Friedman Only decompress products documented to support compression
- * 2015-07-20   4343       nabowle     Util is now RcmUtil.
- * 
- * - */ -public class DataArchiveEndpoint extends RadarEventAdapter { - private RadarServer radarServer; - - private File dataArchivePath; - - private boolean prefixPathWithRadar; - - private Sender sender = new Sender(); - - private HashSet noDecompressList = new HashSet(); - - private static final String MESSAGE_HEADER_HEADER = "header"; - - private static final String MESSAGE_HEADER_ENQUEUE_TIME = "enqueueTime"; - - /** - * Specifies the "header" field in the notification message sent to EDEX. - * The first argument is the radar name. The second argument is the product - * number. - */ - private static final String HEADER_VALUE_FORMAT = "RadarServer.%s.%s."; - - private static final int DEFAULT_MAX_BACKLOG_PER_RADAR = 3000; - - private static class Item { - public String path; - - public String header; - - public Item(String path, String header) { - this.path = path; - this.header = header; - } - } - - private class Sender { - private ArrayList backlog = new ArrayList(); - - private QueueConnection queueConnection; - - private QueueSession queueSession; - - private MessageProducer messageProducer; - - // TODO: A time limit would be better - private int maxBacklogSize = DEFAULT_MAX_BACKLOG_PER_RADAR; - - public void start() { - tryConnect(); - } - - private synchronized boolean tryConnect() { - if (queueConnection == null) { - Log.event("Trying to connect to qpid"); - EndpointConfig endpointConfig = radarServer.getConfiguration() - .getEndpointConfig(); - - if (!isJMSConfigurationValid(endpointConfig)) - return false; - - String url = endpointConfig.getConnectionURL(); - - QueueConnection conn = null; - try { - AMQConnectionFactory connFac = new AMQConnectionFactory(url); - conn = connFac.createQueueConnection(); - QueueSession session = conn.createQueueSession(false, - Session.AUTO_ACKNOWLEDGE); - Queue queue = session - .createQueue(endpointConfig.getTopic()); - MessageProducer producer = session.createProducer(queue); - conn.start(); // Not receiving any messages so this is not - // strictly necessary? - this.queueConnection = conn; - this.queueSession = session; - this.messageProducer = producer; - } catch (Throwable e) { - Log.errorf("Failed to connect to JMS queue %s (%s): %s", - url, endpointConfig.getTopic(), e); - if (conn != null) { - try { - conn.close(); - } catch (JMSException e2) { - // ignore - } - conn = null; - } - } - } - return queueConnection != null; - } - - public synchronized void send(Item item) { - if (send2(item)) { - if (backlog.size() > 0) { - int i; - for (i = 0; i < backlog.size(); ++i) { - if (!send2(backlog.get(i))) - break; - } - backlog.subList(0, i).clear(); - } - } else { - backlog.add(item); - if (backlog.size() > maxBacklogSize * 3 / 2) - backlog.subList(0, backlog.size() - maxBacklogSize).clear(); - } - } - - private boolean send2(Item item) { - if (tryConnect()) { - try { - TextMessage msg = queueSession.createTextMessage(); - msg.setStringProperty(MESSAGE_HEADER_HEADER, item.header); - msg.setLongProperty(MESSAGE_HEADER_ENQUEUE_TIME, - System.currentTimeMillis()); - msg.setText(item.path); - messageProducer.send(msg); - return true; - } catch (JMSException e) { - Log.errorf("Failed to send notification: %s", e); - disconnect(); - } - } - return false; - } - - public synchronized void disconnect() { - Log.event("Disconnecting from qpid..."); - if (queueConnection != null) { - QueueConnection connToClose = queueConnection; - queueConnection = null; - try { - connToClose.close(); - } catch (JMSException e) { - Log.warnf("Failed to close the connection : %s", e); - // ignore - } catch (Throwable t) { - Log.errorf("Failed to close the connection : %s", t); - } - } - } - - public void setMaxBacklogSize(int maxBacklogSize) { - this.maxBacklogSize = maxBacklogSize; - } - } - - public DataArchiveEndpoint(RadarServer radarServer) { - this.radarServer = radarServer; - - Log.eventf("Compressed products will %sbe decompressed", radarServer - .getConfiguration().isDecompressProducts() ? "" : "not "); - - updateConfig(); - sender.start(); - } - - private static boolean isJMSConfigurationValid(EndpointConfig config) { - return config != null && config.getConnectionURL() != null - && config.getConnectionURL().length() > 0 - && config.getTopic() != null && config.getTopic().length() > 0; - } - - private void updateConfig() { - - EndpointConfig config = radarServer.getConfiguration() - .getEndpointConfig(); - File newPath = null; - - prefixPathWithRadar = false; - - if (config != null) { - int backlogLimit = config.getBacklogLimitPerRadar() != null ? config - .getBacklogLimitPerRadar() : DEFAULT_MAX_BACKLOG_PER_RADAR; - sender.setMaxBacklogSize(backlogLimit - * Math.max(1, radarServer.getConfiguration() - .getConfiguredRadarList().size())); - - String pathName = config.getArchiveRoot(); - if (pathName != null && pathName.length() > 0) { - newPath = new File(pathName); - if (!newPath.exists() || !newPath.isDirectory() - || !newPath.canWrite()) { - Log.errorf( - "Data archive root '%s' does not exist, is not a directory, or is not writable", - newPath); - newPath = null; - } - } - - if (config.getPrefixPathWithRadar() != null) - prefixPathWithRadar = config.getPrefixPathWithRadar(); - - if (!isJMSConfigurationValid(config)) - Log.errorf("EDEX JMS notification is not configured correctly"); - sender.disconnect(); - - } else { - Log.errorf("Data archive endpoint configuration was not defined."); - } - - dataArchivePath = newPath; - - loadNoDecompressList(); - } - - private void loadNoDecompressList() { - try { - HashSet newList = new HashSet(); - InputStream ins = getClass().getResourceAsStream( - "no_decompress.txt"); - if (ins != null) { - try { - Scanner s = new Scanner(ins); - while (s.hasNext()) { - if (s.hasNextInt()) { - int productID = s.nextInt(); - newList.add(productID); - } else { - s.next(); - } - } - } finally { - ins.close(); - } - } - noDecompressList = newList; - } catch (Exception e) { - Log.errorf("Error loading no-decompress list: %s", e); - } - } - - private boolean checkConfig() { - if (dataArchivePath == null) - updateConfig(); - return dataArchivePath != null; - } - - @Override - public void handleRadarEvent(RadarEvent event) { - if (event.getType() == RadarEvent.MESSAGE_RECEIVED) { - - if (!checkConfig()) - return; - - byte[] msg = event.getMessageData(); - RadarConfig rc = radarServer.getConfiguration().getConfigForRadar( - event.getRadarID()); - - msg = maybeDecompressProduct(msg, rc); - - String pathName = getArchivePathForMessage(event.getRadarID(), msg); - - // pathName may be null. validateArchivePath handles this. - File outPath = validateArchivePath(pathName); - if (outPath == null) { - Log.errorf("Rejecting data archive path name '%s'", pathName); - pathName = getFallbackArchivePathForMessage(event.getRadarID(), - msg); - outPath = validateArchivePath(pathName); - if (outPath == null) - return; - } - - if (!preparePath(outPath)) - return; - - String header = String.format(HEADER_VALUE_FORMAT, - event.getRadarID(), Message.messageCodeOf(msg)); - - File parentDirectory = outPath.getParentFile(); - String baseName = String.format("%s.%s.%s", event.getRadarID(), - Message.messageCodeOf(msg), outPath.getName()); - String name = baseName; - int seq = 0; - FileOutputStream fo; - - try { - do { - outPath = new File(parentDirectory, name); - if (outPath.createNewFile()) - break; - name = String.format("%s.%s", baseName, ++seq); - } while (true); - - fo = new FileOutputStream(outPath); - } catch (IOException e) { - Log.errorf("Failed to create or open '%s': %s", outPath, e); - return; - } - - try { - try { - fo.write(msg); - fo.close(); - fo = null; - } catch (IOException e) { - Log.errorf("Failed to write to '%s': %s", outPath, e); - } - Log.eventf("Stored message in %s", outPath); - sender.send(new Item(outPath.getAbsolutePath(), header)); - } finally { - if (fo != null) { - try { - fo.close(); - } catch (IOException e) { - // nothing - } - } - } - } - } - - private boolean preparePath(File outPath) { - File parentDir = outPath.getParentFile(); - - if (!parentDir.exists()) { - ArrayList toChmod = new ArrayList(); - File dir = parentDir; - - while (!dir.exists() && !dir.equals(dataArchivePath)) { - toChmod.add(dir); - dir = dir.getParentFile(); - } - - if (!parentDir.mkdirs()) { - Log.errorf("Could not create directory '%s'", parentDir); - return false; - } - - Process p = null; - try { - ArrayList cmd = new ArrayList( - 2 + toChmod.size()); - cmd.add("chmod"); - cmd.add("g+w"); - for (File f : toChmod) - cmd.add(f.getAbsolutePath()); - p = Runtime.getRuntime().exec( - cmd.toArray(new String[cmd.size()])); - p.waitFor(); - } catch (InterruptedException e) { - // ignore - } catch (IOException e) { - // ignore - } finally { - if (p != null) { - p.destroy(); - } - } - } - - if (parentDir.isDirectory()) - return true; - else { - Log.errorf("Data archive path '%s' is not a directory", parentDir); - return false; - } - } - - private String getFallbackArchivePathForMessage(String radarID, byte[] msg) { - String codeString; - - try { - codeString = Integer.toString(Message.messageCodeOf(msg)); - } catch (Exception e) { - codeString = "unknown"; - // Probably should return null. How could it be a valid product? - } - - return String.format("%s%s/other/%s.%s", prefixPathWithRadar ? "radar/" - : "", radarID != null ? radarID : "unknown", codeString, System - .currentTimeMillis()); - } - - private File validateArchivePath(String pathName) { - File result = null; - - if (pathName != null) { - String[] inPieces = pathName.split(Pattern.quote("/")); - StringBuilder outPath = new StringBuilder(64); - - // Reject if last component (the file name) is empty. - if (inPieces.length < 1 - || inPieces[inPieces.length - 1].length() < 1) - return null; - - for (String s : inPieces) { - if (s.length() < 1) - continue; - - if (s.equals("..")) - return null; - - // outPieces.add(s); - if (outPath.length() > 0) - outPath.append(File.separator); - outPath.append(s); - } - - result = new File(dataArchivePath, outPath.toString()); - } - - return result; - } - - /* - * Products that are stored in a "layer0" subdirectory even though the - * product has no layer parameter. - */ - private HashSet layerZeroProducts = new HashSet( - Arrays.asList(80, // STP - 138, // STP - 78, // OHP - 79, // THP - 31, // USP - 144, // OSW - 145, // OSD - 146, // SSW - 147, // SSD - 150, // USW - 151, // USD - 32, // DHR - 33, // HSR - 137, // ULR - 57, // VIL, - 134, // DVL, - 41, // ET - 135, // EET - 35, 36, 37, 38, // CZ - 81, // DPA - 82, // SPD - 50, 85, // RCS - 51, 86, // VCS - 177, // HHC - 176, // DPR, - 169, // OHA - 171, // STA - 172, // STA/DSA - 174, // DOD - 175, // DSD - 0)); - - private HashMap mnemonicMap = new HashMap(); - { - mnemonicMap.put("HZ", "Z"); - mnemonicMap.put("HV", "V"); - mnemonicMap.put("HSW", "SW"); - } - - private String getArchivePathForMessage(String radarID, byte[] msg) { - try { - int code = Message.messageCodeOf(msg); - - String radarCompon = radarID; - String mneCompon = ""; - String elevCompon = ""; - String layerCompon = ""; - String resCompon = ""; - String azResCompon = ""; - String levelsCompon = ""; - Calendar timeToUse; - - RadarProduct rp = ProductInfo.getInstance().getPoductForCode(code); - if (rp == null) { - Log.errorf("Unknown message code %d", code); - return null; - } - mneCompon = rp.mnemonic; - - String newMnemonic = mnemonicMap.get(mneCompon); - if (newMnemonic != null) - mneCompon = newMnemonic; - - if (code > 16) { - PDB pdb = GraphicProduct.pdbOfMessage(msg); - // Elevation and layer are mutually exclusive - if (rp.params.contains(Param.ELEVATION)) { - int elev = pdb.getElevationAngle(); - int bucketElev = Awips1ProdDistInfoBuilder - .getAngleGroup(elev); - String elevStr = String.format("%.1f", bucketElev / 10.0); - elevCompon = "elev" + elevStr.replace('.', '_'); - } else { - Integer layer = null; - if (rp.layer != null) - layer = rp.layer; - else if (layerZeroProducts.contains(code)) - layer = 0; - else if (rp.params.contains(Param.CFC_BITMAP)) - layer = pdb.getElevationSegmentNumber(); - else if (code == 173) { - /* - * From RadarStorageController.C:730. Uses whole hours - * instead of ranges and is limited to 6 hours. Not sure - * why... - */ - - layer = 0; // Default to zero - - int timeSpan = pdb.getTimeSpan(); - if ((timeSpan % 60) == 0) { - int hours = timeSpan / 60; - if (hours >= 1 && hours <= 6) - layer = hours; - } - } - - if (layer != null) - layerCompon = String.format("layer%d", layer); - } - - /* - * Only add resolution and level components if there was an - * elevation or layer component. - */ - if (elevCompon.length() > 0 || layerCompon.length() > 0) { - if (rp.resolution != null && rp.resolution != 0) { - float res = rp.resolution; - - if ((code >= 144 && code <= 147) || code == 150 - || code == 151) { - /* - * AWIPS 1 mistakenly (?) puts these in a - * subdirectory named "res2". - */ - res = 2; - } - - int resInt = (int) res; - String resStr; - - if (res - resInt == 0) { - resStr = Integer.toString(resInt); - } else { - resStr = String.format("%.2f", res).replace('.', - '_'); - } - resCompon = "res" + resStr; - } - - if (rp.azimuthalResolution != null - && rp.azimuthalResolution != 0) { - String resStr = String.format("az%.1f", - rp.azimuthalResolution); - azResCompon = resStr.replace('.', '_'); - } - - if (rp.levels != null && rp.levels != 0) - levelsCompon = String.format("level%d", rp.levels); - } - - timeToUse = pdb.volumeScanTime; - } else { - timeToUse = Message.decodeHeader(msg).time; - } - - String fileName = String.format("%1$tY%1$tm%1$td_%1$tH%1$tM", - timeToUse); - - StringBuilder sb = new StringBuilder(64); - if (prefixPathWithRadar) - sb.append("radar/"); - sb.append(radarCompon).append('/').append(mneCompon).append('/') - .append(elevCompon).append('/').append(layerCompon) - .append('/').append(resCompon).append('/') - .append(azResCompon).append('/').append(levelsCompon) - .append('/').append(fileName); - - return sb.toString(); - } catch (Exception e) { - Log.errorf("Error while determining archive path for message: %s", - e); - } - return null; - } - - @Override - public void handleConfigEvent(ConfigEvent event) { - if (event.getCategory() == Category.GLOBAL_CONFIG) - updateConfig(); - } - - private byte[] maybeDecompressProduct(byte[] msg, RadarConfig radarConfig) { - /* - * The data archive supports applications that assume products will be - * uncompressed so do this unconditionally. - */ - - try { - - int code = Message.messageCodeOf(msg); - RadarType radarType = radarConfig != null ? RcmUtil - .getRadarType(radarConfig) : null; - RadarProduct rp = ProductInfo.getInstance().selectOne( - new Selector(radarType, null, code, null)); - if (rp != null && rp.compressionAllowed && !noDecompressList.contains(code)) { - PDB pdb = GraphicProduct.pdbOfMessage(msg); - if (pdb.isBzip2Compressed()) { - int uncompressedSize = pdb.getUncompressedSize(); - byte[] uncompressed; - try (DataInputStream di = new DataInputStream( - new BZip2InputStream( - new ByteArrayInputStream(msg, - 120, msg.length - 120), false))) { - // ByteArrayOutputStream outs = new - // ByteArrayOutputStream(uncompressedSize); - uncompressed = new byte[uncompressedSize]; - di.readFully(uncompressed); - } catch (IOException e) { - Log.errorf("Error decompressing product: %s", e); - return msg; - } - byte[] result = new byte[120 + uncompressed.length]; - System.arraycopy(msg, 0, result, 0, 120); - System.arraycopy(uncompressed, 0, result, 120, - uncompressed.length); - - ByteBuffer buf = ByteBuffer.wrap(result); - buf.putInt(8, result.length); // Modify size of entire - // product - buf.putShort(100, (short) 0); // Mark as uncompressed - - msg = result; - } - } - - } catch (MessageFormatException e) { - /* - * Probably because this a product without a PDB. This is not an - * error. - */ - } catch (BufferUnderflowException e) { - // See above - } - - return msg; - } - -} diff --git a/RadarServer/com.raytheon.rcm.server.mq/src/com/raytheon/rcm/server/dataarchive/no_decompress.txt b/RadarServer/com.raytheon.rcm.server.mq/src/com/raytheon/rcm/server/dataarchive/no_decompress.txt deleted file mode 100644 index 548f13ce22..0000000000 --- a/RadarServer/com.raytheon.rcm.server.mq/src/com/raytheon/rcm/server/dataarchive/no_decompress.txt +++ /dev/null @@ -1 +0,0 @@ -136 152 \ No newline at end of file diff --git a/RadarServer/com.raytheon.rcm.server/.classpath b/RadarServer/com.raytheon.rcm.server/.classpath deleted file mode 100755 index 751c8f2e50..0000000000 --- a/RadarServer/com.raytheon.rcm.server/.classpath +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/RadarServer/com.raytheon.rcm.server/.project b/RadarServer/com.raytheon.rcm.server/.project deleted file mode 100755 index b833fe3d14..0000000000 --- a/RadarServer/com.raytheon.rcm.server/.project +++ /dev/null @@ -1,28 +0,0 @@ - - - com.raytheon.rcm.server - - - - - - org.eclipse.jdt.core.javabuilder - - - - - org.eclipse.pde.ManifestBuilder - - - - - org.eclipse.pde.SchemaBuilder - - - - - - org.eclipse.jdt.core.javanature - org.eclipse.pde.PluginNature - - diff --git a/RadarServer/com.raytheon.rcm.server/META-INF/MANIFEST.MF b/RadarServer/com.raytheon.rcm.server/META-INF/MANIFEST.MF deleted file mode 100644 index 71cc5de029..0000000000 --- a/RadarServer/com.raytheon.rcm.server/META-INF/MANIFEST.MF +++ /dev/null @@ -1,23 +0,0 @@ -Manifest-Version: 1.0 -Bundle-ManifestVersion: 2 -Bundle-Name: Radar Server -Bundle-SymbolicName: com.raytheon.rcm.server;singleton:=true -Bundle-Version: 1.15.0 -Export-Package: com.raytheon.rcm.coll, - com.raytheon.rcm.config.awips1, - com.raytheon.rcm.config.importer, - com.raytheon.rcm.config.std, - com.raytheon.rcm.oldio, - com.raytheon.rcm.ccmmgr, - com.raytheon.rcm.otrmgr, - com.raytheon.rcm.rmrmgr, - com.raytheon.rcm.rpsmgr, - com.raytheon.rcm.server -Require-Bundle: com.raytheon.rcm.lib;bundle-version="1.0.0", - org.springframework;bundle-version="2.5.6", - org.itadaki.bzip2;bundle-version="0.9.1", - org.quartz;bundle-version="1.8.6", - com.raytheon.uf.common.serialization;bundle-version="1.15.0" -Import-Package: com.raytheon.uf.common.util, - org.apache.commons.logging, - org.apache.log4j diff --git a/RadarServer/com.raytheon.rcm.server/build.properties b/RadarServer/com.raytheon.rcm.server/build.properties deleted file mode 100644 index cc91072ece..0000000000 --- a/RadarServer/com.raytheon.rcm.server/build.properties +++ /dev/null @@ -1,4 +0,0 @@ -source.. = src/ -bin.includes = META-INF/,\ - .,\ - plugin.xml diff --git a/RadarServer/com.raytheon.rcm.server/com.raytheon.rcm.server.ecl b/RadarServer/com.raytheon.rcm.server/com.raytheon.rcm.server.ecl deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/RadarServer/com.raytheon.rcm.server/plugin.xml b/RadarServer/com.raytheon.rcm.server/plugin.xml deleted file mode 100644 index dde683f47a..0000000000 --- a/RadarServer/com.raytheon.rcm.server/plugin.xml +++ /dev/null @@ -1,24 +0,0 @@ - - - - - - diff --git a/RadarServer/com.raytheon.rcm.server/src/com/raytheon/rcm/ccmmgr/CCMManager.java b/RadarServer/com.raytheon.rcm.server/src/com/raytheon/rcm/ccmmgr/CCMManager.java deleted file mode 100644 index e5de8aa921..0000000000 --- a/RadarServer/com.raytheon.rcm.server/src/com/raytheon/rcm/ccmmgr/CCMManager.java +++ /dev/null @@ -1,82 +0,0 @@ -/** - * This software was developed and / or modified by Raytheon Company, - * pursuant to Contract DG133W-05-CQ-1067 with the US Government. - * - * U.S. EXPORT CONTROLLED TECHNICAL DATA - * This software product contains export-restricted data whose - * export/transfer/disclosure is restricted by U.S. law. Dissemination - * to non-U.S. persons whether in the United States or abroad requires - * an export license or other authorization. - * - * Contractor Name: Raytheon Company - * Contractor Address: 6825 Pine Street, Suite 340 - * Mail Stop B8 - * Omaha, NE 68106 - * 402.291.0100 - * - * See the AWIPS II Master Rights File ("Master Rights File.pdf") for - * further licensing information. - **/ -package com.raytheon.rcm.ccmmgr; - -import com.raytheon.rcm.ccmreq.CcmRequestDefinition; -import com.raytheon.rcm.config.Configuration; -import com.raytheon.rcm.config.RadarConfig; -import com.raytheon.rcm.event.RadarEventAdapter; -import com.raytheon.rcm.message.CCM; -import com.raytheon.rcm.server.Log; -import com.raytheon.rcm.server.RadarServer; - -/** - * Manages Command Control Message Requests for the RPGs. - *
- *
- *  SOFTWARE HISTORY
- *  Date         Ticket#    Engineer    Description
- *  ------------ ---------- ----------- --------------------------
- *  2016-05-10   18795      jdynina     Initial creation
- * 
- * - */ - -public class CCMManager extends RadarEventAdapter{ - - RadarServer radarServer; - - public CCMManager(RadarServer radarServer) { - this.radarServer = radarServer; - } - - public String sendCcmRequest(String radarID, CcmRequestDefinition ccmRequest) { - Configuration config = radarServer.getConfiguration(); - RadarConfig rc = config.getConfigForRadar(radarID); - StringBuilder o = new StringBuilder(); - - if (rc == null) { - return "Unknown radar"; - } - if (! rc.isDedicated()) { - return "Not a dedicated radar"; - } - - o.append("restartVcp=" + ccmRequest.getRestartVcp()); - o.append(" vcp=" + ccmRequest.getVcp()); - o.append(" avsetEnabled=" + ccmRequest.getAvsetEnabled()); - o.append(" sailsCount=" + ccmRequest.getSailsCount()); - - Log.eventf("Sending Command Control Message %s to %s", o, - radarID); - doSendCcmRequest(radarID, ccmRequest); - - return null; - } - - private void doSendCcmRequest(String radarID, CcmRequestDefinition ccmRequest) { - byte[] msg = new byte[0]; - if (ccmRequest != null) { - msg = CCM.encode(ccmRequest); - radarServer.getConnectionManager().sendMessageToRadar(radarID, msg); - } - } - -} diff --git a/RadarServer/com.raytheon.rcm.server/src/com/raytheon/rcm/coll/Collector.java b/RadarServer/com.raytheon.rcm.server/src/com/raytheon/rcm/coll/Collector.java deleted file mode 100755 index d9e256a754..0000000000 --- a/RadarServer/com.raytheon.rcm.server/src/com/raytheon/rcm/coll/Collector.java +++ /dev/null @@ -1,192 +0,0 @@ -/** - * This software was developed and / or modified by Raytheon Company, - * pursuant to Contract DG133W-05-CQ-1067 with the US Government. - * - * U.S. EXPORT CONTROLLED TECHNICAL DATA - * This software product contains export-restricted data whose - * export/transfer/disclosure is restricted by U.S. law. Dissemination - * to non-U.S. persons whether in the United States or abroad requires - * an export license or other authorization. - * - * Contractor Name: Raytheon Company - * Contractor Address: 6825 Pine Street, Suite 340 - * Mail Stop B8 - * Omaha, NE 68106 - * 402.291.0100 - * - * See the AWIPS II Master Rights File ("Master Rights File.pdf") for - * further licensing information. - **/ -package com.raytheon.rcm.coll; - -import java.util.Arrays; -import java.util.Calendar; -import java.util.HashMap; -import java.util.HashSet; -import java.util.List; - -import com.raytheon.rcm.config.Configuration; -import com.raytheon.rcm.config.ProductDistributionInfo; -import com.raytheon.rcm.config.RadarConfig; -import com.raytheon.rcm.event.RadarEvent; -import com.raytheon.rcm.event.RadarEventAdapter; -import com.raytheon.rcm.message.GSM; -import com.raytheon.rcm.message.GraphicProduct; -import com.raytheon.rcm.message.MD; -import com.raytheon.rcm.message.Message; -import com.raytheon.rcm.message.GraphicProduct.PDB; -import com.raytheon.rcm.server.Log; -import com.raytheon.rcm.server.RadarServer; - -/** - * Implements central collection of radar products - */ -public class Collector extends RadarEventAdapter { - - protected RadarServer radarServer; - - public Collector(RadarServer radarServer) { - this.radarServer = radarServer; - - // Call this now to log errors as soon as possible - Distribution.getMhsDistributionDir(); - } - - @Override - public void handleRadarEvent(RadarEvent event) { - if (event.getType() == RadarEvent.CONNECTION_UP) { - DuplicateInfo inf = duplicateProducts.get(event.getRadarID()); - if (inf != null) - inf.volumeScanNumber = -1; - return; - } - - if (event.getType() != RadarEvent.MESSAGE_RECEIVED) - return; - - Configuration config = radarServer.getConfiguration(); - if (! config.isCollectionEnabled()) - return; - - RadarConfig rc = config.getConfigForRadar( - event.getRadarID()); - if (!rc.isCollectionEnabled()) - return; - - int radarOpMode; - int vcp; // Only needed for duplicate filtering in VCP 80 - - byte[] msg = event.getMessageData(); - int messageCode = Message.messageCodeOf(msg); - - // Simple is-a-product test - if (messageCode != Message.GSM && messageCode < 16) - return; - - PDB pdb = null; - - if (messageCode == Message.GSM) { - GSM gsm = (GSM) MD.decode(msg); - radarOpMode = gsm.opMode; - vcp = gsm.vcp; // Not actually used - } else { - pdb = GraphicProduct.pdbOfMessage(msg); - // TODO: This is not a substitute for a real is-a-product-message-code - // check. - // If decoding fails, it was not a valid product we don't care about - // it so there is no need for an exception handler. - // - // Could extract all possible message codes that we would care about - // from the database of products to be sent. - if (pdb.productCode != Message.messageCodeOf(msg)) - return; - - radarOpMode = pdb.opMode; - vcp = pdb.vcp; - } - - if (radarOpMode == GSM.OP_MODE_MAINTENANCE) - return; - - ProductDistributionInfo prod; - if (pdb != null) - prod = radarServer.getConfiguration().getProductDistInfo( - rc.getRadarID(), pdb); - else - prod = radarServer.getConfiguration().getProductDistInfo( - rc.getRadarID(), messageCode); - - if (prod == null) - return; - - // TODO: vcp == 80 is hard-coded - if (vcp == 80 && config.isTdwrCollectionLimited() && pdb != null) - if (filterDuplicateProducts(rc, messageCode, pdb)) { - Log.debugf("Matched %s %s for WAN distribution, but was filtered as a duplicate", - event.getRadarID(), messageCode); - return; - } - - Distribution.sendProductMessage(msg, prod.getTtaai(), prod.getNnn(), - rc.getRadarID(), "matched prodList", radarServer - .getConfiguration()); - } - - private static class DuplicateInfo { - public int volumeScanNumber; - public HashSet> sentProducts = - new HashSet>(); - public Calendar volumeScanTime; - } - HashMap duplicateProducts = - new HashMap(); - - private boolean filterDuplicateProducts(RadarConfig rc, int messageCode, PDB pdb) { - /* TDWR VCP 80 has duplicate elevations because of multiple - * vertical sweeps ("mini-volumes"). There is a requirement(??) to - * allow reduction of bandwidth by not sending "duplicate - * elevations". - * - * AWIPS I code uses the storage directory name as a discriminator. - * This means it goes through a tilt angle groups filter which I'm - * trying to avoid here... There would be an issue if a TDWR had - * two elevations in the 0 - 4.6 range that belonged to the same tilt - * bucket (not counting the 0.6 elevation.) - */ - - /* Original AWIPS 1 code used product 185 or 186 to indicate - * the start of a new volume scan. This looks for a new volume - * scan number and later scan time. For TDWR, the scan number - * changes on every completely new volume, but the volume scan - * time changes for every mini-volume. - */ - DuplicateInfo inf = duplicateProducts.get(rc.getRadarID()); - if (inf == null) { - inf = new DuplicateInfo(); - inf.volumeScanNumber = pdb.volumeScan; - inf.volumeScanTime = pdb.volumeScanTime; - duplicateProducts.put(rc.getRadarID(), inf); - } else { - if (pdb.volumeScan != inf.volumeScanNumber) { - if (pdb.volumeScanTime.after(inf.volumeScanTime)) { - inf.volumeScanNumber = pdb.volumeScan; - inf.volumeScanTime = pdb.volumeScanTime; - inf.sentProducts.clear(); - } else - /* We can't tell if this a duplicate or not because we only - * keep track of one scan. Should it be sent? Could argue - * for not sending because all products from the previous - * scan should have already been sent. AWIPS 1 code does - * not really handle this case. For now, allow it to be sent. - */ - return false; - } - } - List id = Arrays.asList(pdb.productCode, pdb.getElevationAngle()); - if (inf.sentProducts.contains(id)) - return true; - - inf.sentProducts.add(id); - return false; - } -} diff --git a/RadarServer/com.raytheon.rcm.server/src/com/raytheon/rcm/coll/CronOTR.java b/RadarServer/com.raytheon.rcm.server/src/com/raytheon/rcm/coll/CronOTR.java deleted file mode 100644 index 10ccde7971..0000000000 --- a/RadarServer/com.raytheon.rcm.server/src/com/raytheon/rcm/coll/CronOTR.java +++ /dev/null @@ -1,266 +0,0 @@ -package com.raytheon.rcm.coll; - -import java.util.ArrayList; -import java.util.Calendar; -import java.util.EnumSet; -import java.util.GregorianCalendar; -import java.util.Iterator; -import java.util.List; -import java.util.Set; -import java.util.regex.Matcher; -import java.util.regex.Pattern; - -import javax.xml.bind.annotation.XmlAccessType; -import javax.xml.bind.annotation.XmlAccessorType; -import javax.xml.bind.annotation.XmlAttribute; -import javax.xml.bind.annotation.XmlElement; -import javax.xml.bind.annotation.XmlList; - -import com.raytheon.rcm.config.RadarType; -import com.raytheon.rcm.products.ProductInfo; -import com.raytheon.rcm.products.ProductInfo.Selector; -import com.raytheon.rcm.products.RadarProduct; -import com.raytheon.rcm.products.RadarProduct.Param; -import com.raytheon.rcm.request.Request; -import com.raytheon.rcm.server.Log; - -@XmlAccessorType(XmlAccessType.NONE) -public class CronOTR { - @XmlAttribute private String cron; - @XmlAttribute private Integer productCode; - @XmlAttribute private Integer randomWait; // in seconds - @XmlAttribute private String wmo; - @XmlAttribute private String nnn; - private Integer minutesBack; // XML attribute is "hoursBack", below - @XmlAttribute @XmlList private Set radarTypes; - - @XmlElement(name="request") - private Request[] requests; - - /** List of parameters that indicate a product must be requested by - * selecting the "current" version. - */ - private static final EnumSet DYNAMIC_PRODUCT_PARAMETERS = - EnumSet.of(Param.ALTITUDE, Param.BASELINE, Param.LAYER, - Param.STORM_SPEED_DIR, Param.TIME_SPAN, - Param.TIME_SPAN_MINUTES, Param.WINDOW_AZ_RAN); - - /** - * @return the cron - */ - public String getCron() { - return cron; - } - /** - * @param cron the cron to set - */ - public void setCron(String cron) { - this.cron = cron; - } - /** - * @return the productID - */ - public Integer getProductCode() { - return productCode; - } - /** - * @param productID the productID to set - */ - public void setProductCode(Integer productID) { - this.productCode = productID; - } - /** - * @return the randomWait - */ - public Integer getRandomWait() { - return randomWait; - } - /** - * @param randomWait the randomWait to set - */ - public void setRandomWait(Integer randomWait) { - this.randomWait = randomWait; - } - /** - * @return the requests - */ - public Request[] getRequests() { - return requests; - } - /** - * @param requests the requests to set - */ - public void setRequests(Request[] requests) { - this.requests = requests; - } - /** - * @return the wmo - */ - public String getWmo() { - return wmo; - } - /** - * @param wmo the wmo to set - */ - public void setWmo(String wmo) { - this.wmo = wmo; - } - /** - * @return the nnn - */ - public String getNnn() { - return nnn; - } - /** - * @param nnn the nnn to set - */ - public void setNnn(String nnn) { - this.nnn = nnn; - } - /** - * @return the minutesBack - */ - public Integer getMinutesBack() { - return minutesBack; - } - /** - * @param minutesBack the minutesBack to set - */ - public void setMinutesBack(Integer minutesBack) { - this.minutesBack = minutesBack; - } - - public boolean isSendSpecified() { - return wmo != null && nnn != null; - } - - public List createRequests(RadarType radarType, Calendar forTime) { - ArrayList result = new ArrayList( - (productCode != null ? 1 : 0) + - (requests != null ? requests.length : 0)); - - if (radarType != null && radarTypes != null - && ! radarTypes.contains(radarType)) - return result; - - if (productCode != null) { - Request r = new Request(); - r.productCode = (short) productCode.intValue(); - result.add(fixRequest(r)); - } - if (requests != null) { - for (Request r : requests) - result.add(fixRequest(r)); - } - - /* Apply product specific behavior including removal from the list - * if not the product is not available for this radar type. - */ - Iterator ir = result.iterator(); - while (ir.hasNext()) { - Request r = ir.next(); - Selector sel = new Selector(radarType, null, (int) r.productCode, - null); - RadarProduct prod = ProductInfo.getInstance().selectOne(sel); - if (prod != null) { - applyMinutesBack(r, prod, forTime); - - /* The RPG does not generate products with parameters like - * time range, cross section baselines, etc., until they are - * explicitly requested. Thus, there will be no "latest" - * version to request. Selecting the "current" version - * ensures they will be generated. - */ - for (Param param : prod.params) { - if (DYNAMIC_PRODUCT_PARAMETERS.contains(param)) { - r.selectCurrent(); - break; - } - } - } else if (ProductInfo.getInstance().getPoductForCode(r.productCode) != null) { - /* If product is known, but not for the given radar type, - * remove it from the list. Otherwise, assume it is a - * product that has not yet been added to radarInfo.txt. - */ - ir.remove(); - } - } - - return result; - } - - private static Request fixRequest(Request r) { - Request result = (Request) r.clone(); - result.count = 1; - result.interval = 1; - result.selectLatest(); - result.highPriority = false; - return result; - } - - private void applyMinutesBack(Request r, RadarProduct prod, Calendar forTime) { - if (minutesBack != null) { - if (prod.params.contains(Param.TIME_SPAN)) { - r.setEndHour(forTime.get(GregorianCalendar.HOUR_OF_DAY)); - r.setTimeSpan(minutesBack / 60); - } else if (prod.params.contains(Param.TIME_SPAN_MINUTES)) { - /* Even though the parameter has minute resolution, - * the intent of "hoursBack" is to use the current - * (top of) the hour as the end time. - */ - r.setEndHour(forTime.get(GregorianCalendar.HOUR_OF_DAY) * 60); - r.setTimeSpan(minutesBack); - } - } - } - - /** - * @return the minutesBack - */ - @XmlAttribute(name="hoursBack") - public String getHoursBackAsString() { - if (minutesBack != null) { - StringBuilder result = new StringBuilder(); - result.append(minutesBack / 60); - int minutes = minutesBack % 60; - if (minutes != 0) - result.append(':').append(minutes); - return result.toString(); - } else - return null; - } - /** - * @param minutesBack the minutesBack to set - */ - public void setHoursBackAsString(String hoursBack) { - if (hoursBack != null) { - try { - if (hoursBack.indexOf(':') >= 0) { - Matcher m = Pattern.compile("^(\\d+):(\\d+)$").matcher(hoursBack); - if (m.matches()) - this.minutesBack = Integer.parseInt(m.group(1)) * 60 + - Integer.parseInt(m.group(2)); - } else { - this.minutesBack = Integer.parseInt(hoursBack) * 60; - } - } catch (RuntimeException e) { - Log.errorf("Invalid value for \"hoursBack\" attribute: \"%s\"", hoursBack); - this.minutesBack = null; - } - } else - this.minutesBack = null; - } - - /** - * @return the radarTypes - */ - public Set getRadarTypes() { - return radarTypes; - } - /** - * @param radarTypes the radarTypes to set - */ - public void setRadarTypes(Set radarTypes) { - this.radarTypes = radarTypes; - } -} diff --git a/RadarServer/com.raytheon.rcm.server/src/com/raytheon/rcm/coll/CronOTRConfiguration.java b/RadarServer/com.raytheon.rcm.server/src/com/raytheon/rcm/coll/CronOTRConfiguration.java deleted file mode 100644 index a422d1c0dc..0000000000 --- a/RadarServer/com.raytheon.rcm.server/src/com/raytheon/rcm/coll/CronOTRConfiguration.java +++ /dev/null @@ -1,13 +0,0 @@ -package com.raytheon.rcm.coll; - -import java.util.ArrayList; -import java.util.List; - -import javax.xml.bind.annotation.XmlElement; -import javax.xml.bind.annotation.XmlRootElement; - -@XmlRootElement -public class CronOTRConfiguration { - @XmlElement(name="cronOTR") - public List cronOTRList = new ArrayList(); -} diff --git a/RadarServer/com.raytheon.rcm.server/src/com/raytheon/rcm/coll/Distribution.java b/RadarServer/com.raytheon.rcm.server/src/com/raytheon/rcm/coll/Distribution.java deleted file mode 100644 index 70e577db58..0000000000 --- a/RadarServer/com.raytheon.rcm.server/src/com/raytheon/rcm/coll/Distribution.java +++ /dev/null @@ -1,202 +0,0 @@ -/** - * This software was developed and / or modified by Raytheon Company, - * pursuant to Contract DG133W-05-CQ-1067 with the US Government. - * - * U.S. EXPORT CONTROLLED TECHNICAL DATA - * This software product contains export-restricted data whose - * export/transfer/disclosure is restricted by U.S. law. Dissemination - * to non-U.S. persons whether in the United States or abroad requires - * an export license or other authorization. - * - * Contractor Name: Raytheon Company - * Contractor Address: 6825 Pine Street, Suite 340 - * Mail Stop B8 - * Omaha, NE 68106 - * 402.291.0100 - * - * See the AWIPS II Master Rights File ("Master Rights File.pdf") for - * further licensing information. - **/ -package com.raytheon.rcm.coll; - -import java.io.File; -import java.io.FileOutputStream; -import java.io.IOException; -import java.util.Calendar; - -import com.raytheon.rcm.config.Configuration; -import com.raytheon.rcm.message.GraphicProduct; -import com.raytheon.rcm.message.Message; -import com.raytheon.rcm.server.Log; - -/** Implements WAN distribution of radar products. - * - * @author dfriedma - * - */ -public class Distribution { - - private static final String lineSep = "\r\r\n"; - - private static final String MHS_DIST_DIR_PROP_NAME = - "com.raytheon.rcm" + ".mhsTmpDir"; - - private static boolean haveMhsDistributionDir; - private static File mhsDistributionDir; - - public static File getMhsDistributionDir() { - if (! haveMhsDistributionDir) { - synchronized(Distribution.class) { - if (! haveMhsDistributionDir) { - haveMhsDistributionDir = true; - - String dir = System.getProperty(MHS_DIST_DIR_PROP_NAME); - String error = null; - - if (dir != null) { - mhsDistributionDir = new File(dir); - if (! mhsDistributionDir.exists() || ! mhsDistributionDir.isDirectory()) - error = String.format("'%s' does not exist or is not a directory", - mhsDistributionDir); - else if (! mhsDistributionDir.canWrite()) - error = String.format("Directory '%s' is not writable", - mhsDistributionDir); - } - - if (error != null) { - Log.errorf("%s. Will use the system temporary directory", error); - mhsDistributionDir = null; - } - } - } - } - return mhsDistributionDir; - } - - /** - * Sends radar data on the WAN interpreting the data as needed. - *

- * Creates a message with a WMO heading and AWIPS header and sends it on - * the WAN. The final i part of the WMO heading is taken from - * config.getRegionCode(). - *

- * NOTE: If the radar product is a Free Text Message (code 74), the text - * will be extracted and sent rather than the original binary data. - * - * @param data - * the radar product data - * @param productTime - * the time to use in the message header - * @param ttaai - * the TTAAi part of the WMO heading - * @param nnn - * the NNN part of the AWIPS header - * @param radarID - * the radar ID - * @param reason - * the reason for sending the product (for logging) - * @param config - * the configuration - */ - public static void sendProductMessage(byte[] data, - String ttaai, String nnn, String radarID, String reason, - Configuration config) { - - if (! config.isCollectionEnabled()) - return; - - if (ttaai.length() != 5) - throw new IllegalArgumentException("ttaai value must be 5 characters"); - if (nnn.length() != 3) - throw new IllegalArgumentException("nnn value must be 3 characters"); - - int messageCode = Message.messageCodeOf(data); - byte[] msgData = data; - - if (messageCode == Message.FREE_TEXT_MESSAGE) { - msgData = TextRoutines.formatTextProduct(msgData); - if (msgData == null) - return; - } - - Calendar productTime; - if (messageCode >= 16) - productTime = GraphicProduct.pdbOfMessage(data).volumeScanTime; - else - productTime = Message.decodeHeader(data).time; - - String wmoSiteID = config.getWmoSiteID(); - if (wmoSiteID == null || wmoSiteID.length() != 4) { - String errorMsg = wmoSiteID != null ? - String.format("Invalid WMO site ID '%s'", wmoSiteID) : - "WMO site ID not set"; - Log.errorf("Cannot send message: %s", errorMsg); - return; - } - - int regionCode = config.getRegionCode(); - if (regionCode < 0 || regionCode > 9) { - // TODO: zero may be invalid too - Log.errorf("Cannot send message: Invalid region code '%d'", - regionCode); - return; - } - - String xxx = radarID.substring(1, 4).toUpperCase(); - - /* if (commissioned) { - * get WMO site ID, region code - * .... - * } else { - * // Holdover from AWIPS 1 for non-commissioned. Probably not needed - * headerBuffer.append("SDUS97"); - * } - */ - - StringBuilder headerBuffer = new StringBuilder(); - headerBuffer.append(ttaai); - headerBuffer.append(regionCode); - headerBuffer.append(' '); - headerBuffer.append(wmoSiteID.toUpperCase()); - headerBuffer.append(' '); - headerBuffer.append(String.format("%1$td%1$tH%1$tM", productTime)); - String wmoHeading = headerBuffer.toString(); - - headerBuffer.append(lineSep); - headerBuffer.append(String.format("%s%s%s", nnn, xxx, lineSep)); - String header = headerBuffer.toString(); - - Log.eventf("Sending %s code=%d header=%s / %s%s (%s)", - radarID, messageCode, wmoHeading, nnn, xxx, reason); - - File f = null; - - try { - f = File.createTempFile("rcm", null, getMhsDistributionDir()); - FileOutputStream fo = new FileOutputStream(f); - try { - fo.write(header.getBytes()); - fo.write(msgData); - } finally { - fo.close(); - } - } catch (IOException e) { - Log.errorf("Unable to create message file: %s", e); - if (f != null) { - try { - f.delete(); - } catch (Exception e2) { - // ignore - } - } - return; - } - - // From MhsRadarProd.C - String[] args = { "-c", "0", "-p", "1", "-e", f.toString(), "-a", - "DEFAULTNCF" }; - MsgSendRunner msr = new MsgSendRunner(args, f); - msr.runAsync(); - } - -} diff --git a/RadarServer/com.raytheon.rcm.server/src/com/raytheon/rcm/coll/MsgSendRunner.java b/RadarServer/com.raytheon.rcm.server/src/com/raytheon/rcm/coll/MsgSendRunner.java deleted file mode 100755 index 2c5c6a33b0..0000000000 --- a/RadarServer/com.raytheon.rcm.server/src/com/raytheon/rcm/coll/MsgSendRunner.java +++ /dev/null @@ -1,128 +0,0 @@ -/** - * This software was developed and / or modified by Raytheon Company, - * pursuant to Contract DG133W-05-CQ-1067 with the US Government. - * - * U.S. EXPORT CONTROLLED TECHNICAL DATA - * This software product contains export-restricted data whose - * export/transfer/disclosure is restricted by U.S. law. Dissemination - * to non-U.S. persons whether in the United States or abroad requires - * an export license or other authorization. - * - * Contractor Name: Raytheon Company - * Contractor Address: 6825 Pine Street, Suite 340 - * Mail Stop B8 - * Omaha, NE 68106 - * 402.291.0100 - * - * See the AWIPS II Master Rights File ("Master Rights File.pdf") for - * further licensing information. - **/ -package com.raytheon.rcm.coll; - -import java.io.File; -import java.io.IOException; -import java.util.Arrays; -import java.util.Scanner; -import java.util.concurrent.ExecutorService; -import java.util.concurrent.Executors; -import java.util.concurrent.ThreadFactory; - -import com.raytheon.rcm.server.Log; - -/** - * Utility class to run {@code msg_send} in a separate thread - * - */ -public class MsgSendRunner implements Runnable { - String[] args; - - File f; - - public MsgSendRunner(String[] args, File f) { - this.args = args; - this.f = f; - } - - @Override - protected void finalize() throws Throwable { - super.finalize(); - cleanup(); - } - - protected void cleanup() { - if (f != null) { - try { - f.delete(); - f = null; - } catch (Exception e) { - // nothing - } - } - } - - // TODO: has to be daemon until there is a shutdown notification - private static ExecutorService executorService = Executors - .newSingleThreadExecutor(new ThreadFactory() { - @Override - public Thread newThread(Runnable r) { - Thread t = new Thread(r); - t.setDaemon(true); - return t; - } - }); - - private static ExecutorService getExecutorService() { - return executorService; - } - - public void runAsync() { - getExecutorService().submit(this); - } - - @Override - public void run() { - try { - String[] cmd = new String[args.length + 1]; - cmd[0] = "msg_send"; - - String projectDir = System.getenv("PROJECT"); - if (projectDir != null) - cmd[0] = (new File(new File(new File(projectDir), "bin"), - cmd[0])).getPath(); - System.arraycopy(args, 0, cmd, 1, args.length); - - Log.eventf("Running %s", Arrays.toString(cmd)); - - StringBuilder output = new StringBuilder(); - Process p = null; - try { - ProcessBuilder pb = new ProcessBuilder(cmd); - pb.redirectErrorStream(true); - p = pb.start(); - Scanner s = new Scanner(p.getInputStream()); - while (s.hasNextLine()) { - if (output.length() > 0) - output.append('\n'); - output.append(s.nextLine()); - } - p.waitFor(); - if (p.exitValue() != 0) { - Log.errorf("msg_send exited with code %d\n%s", - p.exitValue(), output.toString()); - } - } catch (IOException e) { - Log.errorf("exec of msg_send failed: %s%s%s", e, - output.length() > 0 ? "\n" : "", output.toString()); - } catch (InterruptedException e) { - Log.errorf("exec of msg_send failed: interrupted"); - } finally { - // DR #10955 - if (p != null) { - p.destroy(); - } - } - } finally { - cleanup(); - } - } -} diff --git a/RadarServer/com.raytheon.rcm.server/src/com/raytheon/rcm/coll/RequestScheduler.java b/RadarServer/com.raytheon.rcm.server/src/com/raytheon/rcm/coll/RequestScheduler.java deleted file mode 100644 index 236551cdd5..0000000000 --- a/RadarServer/com.raytheon.rcm.server/src/com/raytheon/rcm/coll/RequestScheduler.java +++ /dev/null @@ -1,255 +0,0 @@ -package com.raytheon.rcm.coll; - -import java.io.InputStream; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Calendar; -import java.util.GregorianCalendar; -import java.util.List; -import java.util.Random; -import java.util.SimpleTimeZone; -import java.util.TimeZone; - -import javax.xml.bind.JAXBContext; -import javax.xml.bind.JAXBException; -import javax.xml.bind.Unmarshaller; - -import org.quartz.CronTrigger; -import org.quartz.Job; -import org.quartz.JobDataMap; -import org.quartz.JobDetail; -import org.quartz.JobExecutionContext; -import org.quartz.JobExecutionException; -import org.quartz.Scheduler; -import org.quartz.SchedulerException; -import org.quartz.impl.StdSchedulerFactory; - -import com.raytheon.rcm.config.Configuration; -import com.raytheon.rcm.config.RadarConfig; -import com.raytheon.rcm.config.RcmUtil; -import com.raytheon.rcm.event.ConfigEvent; -import com.raytheon.rcm.event.OtrEvent; -import com.raytheon.rcm.event.RadarEventAdapter; -import com.raytheon.rcm.event.RadarEventListener; -import com.raytheon.rcm.message.Message; -import com.raytheon.rcm.otrmgr.OTRHandler; -import com.raytheon.rcm.otrmgr.OTRManager; -import com.raytheon.rcm.request.Request; -import com.raytheon.rcm.server.Log; -import com.raytheon.rcm.server.RadarServer; - -/** - * Represents the standard configuration model of the AWIPS 2 RadarServer. - * - *

- * 
- * SOFTWARE HISTORY
- * Date         Ticket#    Engineer    Description
- * ------------ ---------- ----------- --------------------------
- * ...
- * 2015-02-11   DR 17092   D. Friedman Handle NDM cronOTRs.xml updates.
- * 2015-06-10   4498       nabowle     Rename Util->RcmUtil
- * 
- * - */ -public class RequestScheduler extends RadarEventAdapter { - - // Quartz job detail properties - private static final String SCHEDULER = "SC"; - private static final String CRON_OTR = "CO"; - - private RadarServer radarServer; - private OTRManager otrManager; - - private Scheduler scheduler; - - private Random random = new Random(); - - private static JAXBContext jaxbContext; - - public RequestScheduler(RadarServer radarServer) { - this.radarServer = radarServer; - - for (RadarEventListener l : radarServer.getListeners()) { - if (l instanceof OTRManager) { - otrManager = (OTRManager) l; - break; - } - } - - if (otrManager == null) { - Log.errorf("%s requires an %s which was not found", - RequestScheduler.class.getSimpleName(), - OTRManager.class.getSimpleName()); - return; - } - - loadConfiguration(); - } - - private synchronized void loadConfiguration() { - if (scheduler != null) { - try { - scheduler.shutdown(); - } catch (SchedulerException e) { - Log.errorf("Error stopping cron-OTR scheduler: %s", e); - } - } - - try { - scheduler = StdSchedulerFactory.getDefaultScheduler(); - scheduler.start(); - } catch (SchedulerException e) { - Log.errorf("Failed to start cron-OTR scheduler: %s", e); - scheduler = null; - } - - if (scheduler != null) { - CronOTRConfiguration cronConfig = null; - InputStream ins = null; - try { - ins = radarServer.getConfiguration().getDropInData("cronOTRs.xml"); - try { - cronConfig = (CronOTRConfiguration) createUnmarshaller().unmarshal(ins); - } finally { - ins.close(); - } - } catch (Exception e) { - Log.errorf("Error loading cron-OTR configuration: %s", e); - } - - if (cronConfig != null) { - int jobIndex = 1; // Used to generate unique JobDetail names - for (CronOTR cronOTR : cronConfig.cronOTRList) { - String name = "CronOTRcron" + jobIndex; - CronTrigger trigger = new CronTrigger(name, name); - try { - trigger.setCronExpression(cronOTR.getCron()); - } catch (Exception e) { - Log.errorf("Error setting cron \"%s\": %s", - cronOTR.getCron(), e); - continue; - } - - JobDetail jd = new JobDetail(name, null, CronOTRJob.class); - JobDataMap jdm = jd.getJobDataMap(); - jdm.put(SCHEDULER, this); - jdm.put(CRON_OTR, cronOTR); - try { - scheduler.scheduleJob(jd, trigger); - } catch (Exception e) { - Log.errorf("Error scheduling cron \"%s\": %s", - cronOTR.getCron(), e); - } - - jobIndex++; - } - } - } - } - - // Package access for testing - static JAXBContext getJAXBContext() throws JAXBException { - if (jaxbContext == null) - jaxbContext = JAXBContext.newInstance(CronOTRConfiguration.class); - return jaxbContext; - } - - private static synchronized Unmarshaller createUnmarshaller() throws JAXBException { - return getJAXBContext().createUnmarshaller(); - } - - protected static final TimeZone gmt = new SimpleTimeZone(0, "GMT"); // TimeZone.getTimeZone("GMT+0"); - - private void runCron(CronOTR cronOTR) { - Calendar cal = new GregorianCalendar(gmt); - - MyOTRHandler handler = null; - if (cronOTR.isSendSpecified()) - handler = new MyOTRHandler(cronOTR); - // else, handled by Collector as specified by prodList.txt - - for (RadarConfig rc : getCollectedRadars()) { - List requests = cronOTR.createRequests( - RcmUtil.getRadarType(rc), cal); - if (requests.size() > 0) - otrManager.sendOneTimeRequests(Arrays.asList(rc.getRadarID()), - requests, handler); - } - } - - private List getCollectedRadars() { - Configuration config = radarServer.getConfiguration(); - ArrayList radarIDs = new ArrayList(); - for (String radarID : config.getConfiguredRadarList()) { - RadarConfig rc = config.getConfigForRadar(radarID); - if (isCollectedRadar(rc)) - radarIDs.add(rc); - } - return radarIDs; - } - - private boolean isCollectedRadar(RadarConfig rc) { - return rc != null && rc.isDedicated() && rc.isCollectionEnabled() - && rc.isEnabled(); - } - - private void runJob(CronOTR cronOTR) { - if (cronOTR.getRandomWait() != null) { - int sleepSeconds = random.nextInt(cronOTR.getRandomWait()); - try { - Thread.sleep(sleepSeconds * 1000); - } catch (InterruptedException e) { - // ignore - } - } - - runCron(cronOTR); - } - - public void handleConfigEvent(ConfigEvent event) { - if (event.getCategory() == ConfigEvent.Category.CRON_OTRS) { - loadConfiguration(); - } - } - - /** - * This class declared public only so that it can be instantiated by - * Quartz. - */ - public static class CronOTRJob implements Job { - - @Override - public void execute(JobExecutionContext context) - throws JobExecutionException { - JobDataMap jdm = context.getMergedJobDataMap(); - RequestScheduler scheduler = - (RequestScheduler) jdm.get(SCHEDULER); - scheduler.runJob((CronOTR) jdm.get(CRON_OTR)); - } - - } - - private class MyOTRHandler implements OTRHandler { - - private CronOTR cronOTR; - - public MyOTRHandler(CronOTR cronOTR) { - this.cronOTR = cronOTR; - } - - @Override - public void handleOtrEvent(OtrEvent event) { - byte[] data = event.product; - int code = Message.messageCodeOf(data); - - if (code == Message.REQUEST_RESPONSE) - return; // OTR failed - - Distribution.sendProductMessage(event.product, cronOTR.getWmo(), - cronOTR.getNnn(), event.radarID, "cron", radarServer - .getConfiguration()); - } - - } -} diff --git a/RadarServer/com.raytheon.rcm.server/src/com/raytheon/rcm/coll/TextRoutines.java b/RadarServer/com.raytheon.rcm.server/src/com/raytheon/rcm/coll/TextRoutines.java deleted file mode 100644 index 958f58a921..0000000000 --- a/RadarServer/com.raytheon.rcm.server/src/com/raytheon/rcm/coll/TextRoutines.java +++ /dev/null @@ -1,75 +0,0 @@ -/** - * This software was developed and / or modified by Raytheon Company, - * pursuant to Contract DG133W-05-CQ-1067 with the US Government. - * - * U.S. EXPORT CONTROLLED TECHNICAL DATA - * This software product contains export-restricted data whose - * export/transfer/disclosure is restricted by U.S. law. Dissemination - * to non-U.S. persons whether in the United States or abroad requires - * an export license or other authorization. - * - * Contractor Name: Raytheon Company - * Contractor Address: 6825 Pine Street, Suite 340 - * Mail Stop B8 - * Omaha, NE 68106 - * 402.291.0100 - * - * See the AWIPS II Master Rights File ("Master Rights File.pdf") for - * further licensing information. - **/ -package com.raytheon.rcm.coll; - -import java.io.ByteArrayOutputStream; -import java.io.IOException; - -import com.raytheon.rcm.message.Message; -import com.raytheon.rcm.message.MessageFormatException; -import com.raytheon.rcm.message.StandAloneText; -import com.raytheon.rcm.server.Log; - -public class TextRoutines { - - /** - * Format the text portion of a radar product. - * - * See AWIPS1 textRoutines.C:createTextProd. Only implements functionality - * for Free Text Messages. - * - * Returns a byte array because this is currently only used for generated - * messages for distribution. - * - * @param msgData - * @return null if the product could not be formatted - */ - public static final byte[] formatTextProduct(byte[] msgData) { - ByteArrayOutputStream result = new ByteArrayOutputStream( - msgData.length + 64); - - Exception ex = null; - try { - Message msg = Message.decodeHeader(msgData); - if (msg.messageCode == Message.FREE_TEXT_MESSAGE) { - - // TODO: Shouldn't this be in all caps and using \r\r\n? - String prefix = String - .format( - "Message Date: %1$tb %1$td %1$tY %1$tH:%1$tM:%1$tS\n\n", - msg.time); - - result.write(prefix.getBytes("ISO-8859-1")); - result.write(StandAloneText.decodeTextBytes(msgData)); - } - } catch (IOException e) { - ex = e; - } catch (MessageFormatException e) { - ex = e; - } - if (ex != null) { - Log.errorf("Error formatting product: %s", ex); - return null; - } - - return result.toByteArray(); - } - -} diff --git a/RadarServer/com.raytheon.rcm.server/src/com/raytheon/rcm/config/awips1/Awips1Config.java b/RadarServer/com.raytheon.rcm.server/src/com/raytheon/rcm/config/awips1/Awips1Config.java deleted file mode 100755 index 784b0541d8..0000000000 --- a/RadarServer/com.raytheon.rcm.server/src/com/raytheon/rcm/config/awips1/Awips1Config.java +++ /dev/null @@ -1,233 +0,0 @@ -/** - * This software was developed and / or modified by Raytheon Company, - * pursuant to Contract DG133W-05-CQ-1067 with the US Government. - * - * U.S. EXPORT CONTROLLED TECHNICAL DATA - * This software product contains export-restricted data whose - * export/transfer/disclosure is restricted by U.S. law. Dissemination - * to non-U.S. persons whether in the United States or abroad requires - * an export license or other authorization. - * - * Contractor Name: Raytheon Company - * Contractor Address: 6825 Pine Street, Suite 340 - * Mail Stop B8 - * Omaha, NE 68106 - * 402.291.0100 - * - * See the AWIPS II Master Rights File ("Master Rights File.pdf") for - * further licensing information. - **/ -package com.raytheon.rcm.config.awips1; - -import java.io.FileNotFoundException; -import java.io.IOException; -import java.io.InputStream; -import java.util.ArrayList; -import java.util.Collection; -import java.util.HashMap; - -import com.raytheon.rcm.config.Configuration; -import com.raytheon.rcm.config.EndpointConfig; -import com.raytheon.rcm.config.ProductDistInfoDB; -import com.raytheon.rcm.config.ProductDistributionInfo; -import com.raytheon.rcm.config.RadarConfig; -import com.raytheon.rcm.config.RcmResourceProvider; -import com.raytheon.rcm.message.GraphicProduct.PDB; -import com.raytheon.rcm.request.RpsList; -import com.raytheon.rcm.server.Log; - - -public class Awips1Config implements Configuration { - private HashMap radars = new HashMap(); - - private int pupId; - - // Used for collection/dissemination - private int regionCode; - private String wmoSiteID; - private boolean collectionEnabled; // Global enable-central-collection flag - private boolean tdwrCollectionLimited; - - private ProductDistInfoDB prodDistInfoDB; - - private boolean decompressProducts; - private String edexEndpoint; - private String awips1Endpoint; - - public Collection getConfiguredRadarList() { - ArrayList result = new ArrayList(); - result.addAll(radars.keySet()); - return result; - } - - public RadarConfig getConfigForRadar(String radarID) { - return radars.get(radarID.toLowerCase()); - } - - public int getPupId() { - return pupId; - } - - public int getRegionCode() { - return regionCode; - } - - public String getWmoSiteID() { - return wmoSiteID; - } - - public boolean isCollectionEnabled() { - return collectionEnabled; - } - - public boolean isTdwrCollectionLimited() { - return tdwrCollectionLimited; - } - - public ProductDistributionInfo getProductDistInfo(String radarID, PDB pdb) { - RadarConfig rc = getConfigForRadar(radarID); - if (prodDistInfoDB != null && rc != null) - return prodDistInfoDB.getProductDistInfo(rc, pdb.productCode, pdb); - else - return null; - } - - public ProductDistributionInfo getProductDistInfo(String radarID, int messageCode) { - RadarConfig rc = getConfigForRadar(radarID); - if (prodDistInfoDB != null && rc != null) - return prodDistInfoDB.getProductDistInfo(rc, messageCode, null); - else - return null; - } - - // Setters are not part of the public interface... - - public void setRadars(HashMap radars) { - this.radars = radars; - } - - public void setPupId(int pupId) { - this.pupId = pupId; - } - - public void setRegionCode(int regionCode) { - this.regionCode = regionCode; - } - - public void setWmoSiteID(String wmoSiteID) { - this.wmoSiteID = wmoSiteID; - } - - public void setCollectionEnabled(boolean collectionEnabled) { - this.collectionEnabled = collectionEnabled; - } - - public void setTdwrCollectionLimited(boolean tdwrCollectionLimited) { - this.tdwrCollectionLimited = tdwrCollectionLimited; - } - - // Should be considered to be (sub) package access - public ProductDistInfoDB getProdDistInfoDB() { - return prodDistInfoDB; - } - - public void setProdDistInfoDB(ProductDistInfoDB prodDistInfoDB) { - this.prodDistInfoDB = prodDistInfoDB; - } - - public boolean isDecompressProducts() { - return decompressProducts; - } - - public void setDecompressProducts(boolean decompressProducts) { - this.decompressProducts = decompressProducts; - } - - @Override - public RpsList getNationalRpsList(String radarID, int opMode, int vcp, int[] cuts) { - Awips1RadarConfig rc = radars.get(radarID); - if (rc != null) - return rc.getNationalRpsList(opMode, vcp, cuts); - else - return null; - } - - @Override - public RpsList getLocalRpsList(String radarID, int opMode, int vcp, int[] cuts) { - Awips1RadarConfig rc = radars.get(radarID); - if (rc != null) - return rc.getLocalRpsList(opMode, vcp); - else - return null; - } - - public String getEdexEndpoint() { - return edexEndpoint; - } - - public void setEdexEndpoint(String edexEndpoint) { - this.edexEndpoint = edexEndpoint; - } - - public String getAwips1Endpoint() { - return awips1Endpoint; - } - - public EndpointConfig getEndpointConfig() { - return null; - } - - public void setAwips1Endpoint(String awips1Endpoint) { - this.awips1Endpoint = awips1Endpoint; - } - - @Override - public void setLocalRpsList(String radarID, RpsList list) - throws IOException { - throw new IOException("Storing RPS lists not support for AWIPS-1 style configuration."); - } - - private static final String persistingNotSupproted = - "Persisting configuration data is not supported under the AWIPS-1 configuration system"; - - private static final String dropInsNotSupproted = - "Drop-in configuration data is not supported under the AWIPS-1 configuration system"; - - @Override - public InputStream getPersistedData(String name) throws IOException { - throw new FileNotFoundException(persistingNotSupproted); - } - - @Override - public void putPersistedData(String name, byte[] data) throws IOException { - String msg = persistingNotSupproted; - Log.error(msg); - throw new IOException(new UnsupportedOperationException(msg)); - } - - @Override - public void removePersistedData(String name) { - // nothing - } - - @Override - public InputStream getDropInData(String name) throws IOException { - String msg = persistingNotSupproted; - Log.error(msg); - throw new IOException(new UnsupportedOperationException(msg)); - } - - private RcmResourceProvider rcmResourceProvider = new RcmResourceProvider() { - @Override - public InputStream getResourceAsStream(String resource) { - try { - return getDropInData(resource); - } catch (IOException e) { - Log.errorf("Could not open resource/NDM file %s: %s", resource, e); - return null; - } - } - }; - - public RcmResourceProvider getRcmResourceProvider() { return rcmResourceProvider; } -} diff --git a/RadarServer/com.raytheon.rcm.server/src/com/raytheon/rcm/config/awips1/Awips1ConfigProvider.java b/RadarServer/com.raytheon.rcm.server/src/com/raytheon/rcm/config/awips1/Awips1ConfigProvider.java deleted file mode 100644 index 4752597479..0000000000 --- a/RadarServer/com.raytheon.rcm.server/src/com/raytheon/rcm/config/awips1/Awips1ConfigProvider.java +++ /dev/null @@ -1,582 +0,0 @@ -/** - * This software was developed and / or modified by Raytheon Company, - * pursuant to Contract DG133W-05-CQ-1067 with the US Government. - * - * U.S. EXPORT CONTROLLED TECHNICAL DATA - * This software product contains export-restricted data whose - * export/transfer/disclosure is restricted by U.S. law. Dissemination - * to non-U.S. persons whether in the United States or abroad requires - * an export license or other authorization. - * - * Contractor Name: Raytheon Company - * Contractor Address: 6825 Pine Street, Suite 340 - * Mail Stop B8 - * Omaha, NE 68106 - * 402.291.0100 - * - * See the AWIPS II Master Rights File ("Master Rights File.pdf") for - * further licensing information. - **/ -package com.raytheon.rcm.config.awips1; - -import java.io.File; -import java.io.FileNotFoundException; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.NoSuchElementException; -import java.util.Scanner; - -import com.raytheon.rcm.config.Configuration; -import com.raytheon.rcm.config.ConfigurationProvider; -import com.raytheon.rcm.config.LinkResource; -import com.raytheon.rcm.config.LinkType; -import com.raytheon.rcm.config.ProductDistributionInfo; -import com.raytheon.rcm.config.RadarConfig; -import com.raytheon.rcm.config.RadarType; -import com.raytheon.rcm.config.RcmUtil; -import com.raytheon.rcm.config.StandardProductDistInfoDB; -import com.raytheon.rcm.config.awips1.Awips1RpsListUtil.Selector; -import com.raytheon.rcm.message.GSM; -import com.raytheon.rcm.request.Request; -import com.raytheon.rcm.request.RpsList; -import com.raytheon.rcm.server.Log; - - -/** - * Builds a {@link com.raytheon.rcm.config.Configuration} instance based on a - * set of configuration files in the AWIPS 1 format and directory structure. - * - * The root directory of the AWIPS 1 directory structure must be specified by - * the com.raytheon.rcm.config.awips1.resourceRoot property. It is also - * necessary to define the FXA_LOCAL_SITE environment variable or the - * com.raytheon.rcm.config.awips1.FXA_LOCAL_SITE property. - * - * Note: Does not recognize the FILE_SERVER_DEFAULT_PATHS environment variable. - * - *
- *  SOFTWARE HISTORY
- *
- *  Date         Ticket#     Engineer    Description
- *  ------------ ----------  ----------- --------------------------
- *  2009                     dfriedma    Initial version
- *  2012-04-30   DR 14904    D. Friedman Add backup links to dial ORPGs.
- *  2015-06-10   4498       nabowle     Rename Util->RcmUtil
- *  2015-10-15   DCS 17789   wkwock      Change max TDWR radar ID to 3099
- * 
- */ -public class Awips1ConfigProvider implements ConfigurationProvider { - - final String generalPropBase = "com.raytheon.rcm"; - - final String propBase = generalPropBase + ".awips1"; - - String resourceRoot; - - String fxaHome; - - String fxaLocnRoot; - - String fxaNatlConfigData; - - String fxaLocalSite; - - String fxaData; - - HashMap radars; - - HashMap> radarLinkResources; - - ArrayList searchPaths = new ArrayList(); - - Map nationalRpsLists = new HashMap(); - - public Awips1ConfigProvider() { - // TODO: first argument of File ctor can be null - resourceRoot = System.getProperty(propBase + ".resourceRoot", "/"); - fxaHome = getEnv("FXA_HOME"); - if (fxaHome == null) - fxaHome = "/awips/fxa"; - fxaLocnRoot = getEnv("FXA_LOCALIZATION_ROOT"); - if (fxaLocnRoot == null) - fxaLocnRoot = fxaHome + "/data/localizationDataSets"; - fxaNatlConfigData = getEnv("FXA_NATL_CONFIG_DATA"); - if (fxaNatlConfigData == null) - fxaNatlConfigData = fxaHome + "/data/localization"; - fxaData = getEnv("FXA_DATA"); - if (fxaData == null) - fxaData = "/data/fxa"; - fxaLocalSite = getEnv("FXA_LOCAL_SITE"); - - if (fxaLocalSite != null) - searchPaths.add(new File(rootRel(fxaLocnRoot), fxaLocalSite)); - // else, warn // or use subdir if only one exists - searchPaths.add(new File(rootRel(fxaNatlConfigData), "nationalData")); - searchPaths.add(new File(rootRel(fxaHome), "data")); - } - - File rootRel(String f) { - return new File(resourceRoot, f); - } - - Awips1Config config; - - public Configuration getConfiguration() { - - config = new Awips1Config(); - - radars = new HashMap(); - - File f; - try { - f = getIfsResource("pupId.txt"); - Scanner s = new Scanner(f); - try { - config.setPupId(s.nextInt()); - } finally { - s.close(); - } - } catch (Exception e) { - // TODO: log... - } - - try { - f = getIfsResource("radarsInUse.txt"); - readRadarsInUse(f); - } catch (Exception e) { - // TODO: log - e.printStackTrace(); - } - - radarLinkResources = new HashMap>(); - for (String name : radars.keySet()) - radarLinkResources.put(name, new ArrayList()); - - try { - f = getIfsResource("wmoSiteInfo.txt"); - readWmoSiteInfo(f); - } catch (Exception e) { - Log.errorf("Could not read wmoSiteInfo.txt: %s", e); - } - - tryReadOTRFile("orpgDedicated.txt", false, true); - tryReadOTRFile("orpgBackups.txt", true, true); - tryReadOTRFile("orpgOTRs.txt", false, false); - - LinkResource[] lr = new LinkResource[0]; - for (String name : radars.keySet()) { - RadarConfig rc = radars.get(name); - rc.setLinkResources(radarLinkResources.get(name).toArray(lr)); - } - - readNationalRpsLists(); - findRpsLists(); - - config.setRadars(radars); - - StandardProductDistInfoDB db = new StandardProductDistInfoDB(); - tryAddProdList(db, false, "prodList.txt"); - tryAddProdList(db, true, "tdwrProdList.txt"); - - config.setProdDistInfoDB(db); - - boolean globalSendFlag = true; - try { - f = new File(new File(rootRel(fxaData), "workFiles"), - "RadarStorage.StateInfo"); - Scanner s = new Scanner(f); - try { - if (s.nextInt() == 0) - globalSendFlag = false; - } finally { - s.close(); - } - } catch (FileNotFoundException e) { - // This is an optional file, so ignore this exception. - } catch (Exception e) { - // TODO: log... - } - config.setCollectionEnabled(globalSendFlag); - - boolean limitTDWRCollectionBandwidth = true; - try { - f = new File(new File(rootRel(fxaData), "workFiles"), - "tdwrWanFlag.txt"); - Scanner s = new Scanner(f); - try { - limitTDWRCollectionBandwidth = s.nextInt() != 0; - } finally { - s.close(); - } - } catch (FileNotFoundException e) { - // This is an optional file, so ignore this exception. - } catch (Exception e) { - // TODO: log... - } - - config.setTdwrCollectionLimited(limitTDWRCollectionBandwidth); - - String s = getEnv("decompressRadarProducts"); - if (s != null && s.length() > 0) - config.setDecompressProducts(true); - - String pathName; - - pathName = System.getProperty(generalPropBase + ".edexRadarEndpoint"); - config.setEdexEndpoint(pathName); - - pathName = System.getProperty(generalPropBase + ".awips1RadarEndpoint"); - config.setAwips1Endpoint(pathName); - - return config; - } - - private void tryAddProdList(StandardProductDistInfoDB db, boolean isTDWR, - String fileName) { - try { - readProdListFile(getIfsResource(fileName), db, isTDWR); - } catch (Exception e) { - Log.errorf("Could not load product dist info file '%s': %s", - fileName, e); - } - } - - public static void readProdListFile(File f, StandardProductDistInfoDB db, - boolean isTDWR) throws NoSuchElementException, - FileNotFoundException { - Scanner fs = new Scanner(f); - - try { - while (fs.hasNext()) { - Scanner ls = new Scanner(fs.nextLine()); - if (skipComments(ls)) - continue; - try { - ProductDistributionInfo info = new ProductDistributionInfo(); - - int messageCode = ls.nextInt(); - int elev = ls.nextInt(); - info.setNnn(ls.next()); - info.setTtaai(ls.next()); - - Awips1ProdDistInfoBuilder.addProdListEntry(f, messageCode, - elev, isTDWR, info, db); - } catch (NoSuchElementException e) { - } - } - } finally { - fs.close(); - } - } - - private RpsList getNatRpsList(int opMode, String name) { - Request[] reqs; - try { - Scanner s = new Scanner(getIfsResource(name)); - try { - reqs = Awips1RpsListUtil.parse(s); - } finally { - s.close(); - } - } catch (Exception e) { - Log.errorf("Unable to load national RPS list '%s'", name); - reqs = new Request[0]; - } - - return new RpsList(opMode, 0, reqs); - } - - private void readNationalRpsLists() { - // TODO: what national RPS list to use when in maintenance mode??? - RpsList[] wsrLists = new RpsList[2]; - wsrLists[0] = getNatRpsList(GSM.OP_MODE_CLEAR_AIR, - "rps-RPGOP-tcp.clear-air"); - wsrLists[1] = getNatRpsList(GSM.OP_MODE_STORM, "rps-RPGOP-tcp.storm"); - nationalRpsLists.put(RadarType.WSR, wsrLists); - - RpsList[] tdwrLists = new RpsList[1]; - tdwrLists[0] = getNatRpsList(GSM.OP_MODE_STORM, "rps-SPGOP-tcp.storm"); - nationalRpsLists.put(RadarType.TDWR, tdwrLists); - } - - private void findRpsLists() { - // TODO Auto-generated method stub - Map> rpsLists = new HashMap>(); - for (String name : radars.keySet()) - rpsLists.put(name, new ArrayList()); - - File dir = new File(new File(rootRel(fxaData), "radar"), "lists"); - File[] listing = dir.listFiles(); - if (listing == null) { - Log.errorf("Cannot read rps list directory '%s'", dir); - return; - } - for (File f : listing) { - if (!f.isFile()) - continue; - - Selector sel = Awips1RpsListUtil.parseName(f.getName()); - if (sel != null && sel.comment == null) { - RadarConfig rc = radars.get(sel.radar.toLowerCase()); - if (rc == null) - continue; - - Scanner scanner = null; - RpsList list; - try { - try { - scanner = new Scanner(f); - } catch (FileNotFoundException e2) { - // TODO: log -- what about I/O errors? - continue; - } - list = new RpsList(sel.opMode, sel.vcp, - Awips1RpsListUtil.parse(scanner)); - } finally { - if (scanner != null) - scanner.close(); - } - rpsLists.get(rc.getRadarID()).add(list); - } - } - - for (String name : radars.keySet()) { - Awips1RadarConfig rc = radars.get(name); - rc.setLocalRpsLists(rpsLists.get(name).toArray(new RpsList[0])); - RpsList[] nats = nationalRpsLists.get(RcmUtil.getRadarType(rc)); - if (nats != null) - rc.setNationalRpsLists(Arrays.copyOf(nats, nats.length)); - } - } - - protected String getEnv(String var) { - String value = System.getProperty(propBase + "." + var); - if (value == null) - value = System.getenv(var); - return value; - } - - public void refresh() { - // TODO Auto-generated method stub - - } - - protected static boolean skipComments(Scanner s) { - try { - s.skip("^\\s*(#|//).*$"); - } catch (NoSuchElementException e) { - // nothing - } - return !s.hasNext(); // Also returns true if it was just a blank line - } - - protected void readRadarsInUse(File f) throws FileNotFoundException { - Scanner fs = new Scanner(f); - try { - while (fs.hasNext()) { - Scanner ls = new Scanner(fs.nextLine()); - if (skipComments(ls)) - continue; - try { - String radarName = ls.next().toLowerCase(); - int nexradId = ls.nextInt(); - int connType = ls.nextInt(); - - // TODO: dups - Awips1RadarConfig rc = new Awips1RadarConfig(); - radars.put(radarName, rc); - rc.setRadarID(radarName); - rc.setNexradID(nexradId); - rc.setDedicated(false); - switch (connType) { - case 0: // X.25 dial (class2) to non-associated - // TODO: flag set look for dial resources later - continue; - // break; - case 1: - // ? X.25 class 1 associated -- no longer supported - continue; - // break; - case 2: - /* - * TCP dedicated or X.25 dedicated (but the latter is - * obsolete) - */ - rc.setDedicated(true); - rc.setSendEnvironmentalData(true); - break; - case 3: // tcp/ip class 2 to non-associated over wan - break; - case 4: // tcp/ip class 1 *and* class2 <-- huh? - rc.setDedicated(true); - break; - default: - // TODO log unknown type - } - } catch (NoSuchElementException e) { - // TODO log error - } - } - } finally { - fs.close(); - } - } - - protected void tryReadOTRFile(String fileName, boolean backup, - boolean dedicated) { - try { - readOTRFile(getIfsResource(fileName), backup, dedicated); - } catch (Exception e) { - Log.errorf("Could not read comms config file '%s': %s", fileName, e); - } - } - - protected void readOTRFile(File f, boolean backup, boolean dedicated) - throws FileNotFoundException { - Scanner fs = new Scanner(f); - - try { - while (fs.hasNext()) { - String line = fs.nextLine(); - Scanner ls = new Scanner(line); - if (skipComments(ls)) - continue; - - try { - // TODO: comments - LinkResource lr = new LinkResource(); - String radarName = ls.next().toLowerCase(); - int nexradId = ls.nextInt(); - - RadarConfig rc = radars.get(radarName.toLowerCase()); - if (rc == null) - continue; - if (nexradId != rc.getNexradID()) { - // warn... - } - - rc.setLinkType(LinkType.TCP_WAN); - - String host = ls.next(); - int port = ls.nextInt(); - lr.setLinkType(LinkType.TCP_WAN); - lr.setLinkAddress(host + ":" + port); - lr.setLinkIndex(ls.nextInt()); - lr.setTcmPassword(ls.next()); - lr.setDedicated(dedicated); - - if (dedicated) { - lr.setMaxRpsListSize(ls.nextInt()); - } else { - lr.setUserPassword(ls.next()); - if (ls.hasNext()) { - lr.setPortPassword(ls.next()); - } else { - // sometimes the two fields are glommed together - String field = lr.getUserPassword(); - lr.setUserPassword(field.substring(0, 6)); - lr.setPortPassword(field.substring(6)); - } - } - - radarLinkResources.get(radarName).add(lr); - } catch (IndexOutOfBoundsException e) { - // field.substring - Log.errorf("Bad link config in %s: '%s'", f, line); - } catch (IllegalArgumentException e) { - Log.errorf("Bad link config in %s: '%s'", f, line); - // e.g. Malformed IP address, bad port number... - } catch (NoSuchElementException e) { - Log.errorf("Bad link config in %s: '%s'", f, line); - } - } - } finally { - fs.close(); - } - } - - private String getFullName(String namelet, String linespeed) { - // From WmoSiteInfo::getRadarName - for (String name : radars.keySet()) { - if (name.substring(1, 4).equalsIgnoreCase(namelet)) { - int nexradId = radars.get(name).getNexradID(); - if (linespeed.equals("D6")) { - // TODO: can we really rely on the 3099 number? - if (nexradId >= 3000 && nexradId <= 3099) - return name; - } else { - if (nexradId < 3000 - || (nexradId >= 4000 && nexradId < 5000)) - return name; - } - } - } - return null; - } - - private void readWmoSiteInfo(File f) throws FileNotFoundException { - String wmoSiteId = config.getWmoSiteID(); - // need wmoSiteId.txt to read this... - if (wmoSiteId == null) { - Scanner s = new Scanner(getIfsResource("wmoSiteId.txt")); - try { - wmoSiteId = s.next(); - } finally { - s.close(); - } - } - - config.setWmoSiteID(wmoSiteId); - - Scanner fs = new Scanner(f); - - try { - while (fs.hasNextLine()) { - Scanner ls = new Scanner(fs.nextLine()); - if (skipComments(ls)) - continue; - if (!wmoSiteId.equals(ls.next())) - continue; - config.setRegionCode(ls.nextInt()); - int nRpgs = ls.nextInt(); // naive.. - while (nRpgs-- > 0) { - String field = ls.next(); - String radarNamelet = field.substring(0, 3); - String linespeed = field.substring(4, 6); - boolean sending = field.substring(3, 4).equals("Y"); - /* - * Logic from WmoSiteInfo::getRadarName except that it uses - * radarsInUse.txt instead of radarMasterInfo.txt. - */ - String fullName = getFullName(radarNamelet, linespeed); - /* maybe return Radarconfig then.. */ - if (fullName != null) { - RadarConfig rc = radars.get(fullName); - rc.setCollectionEnabled(sending); - } - } - break; - } - } finally { - fs.close(); - } - } - - protected File getIfsResource(String name) throws FileNotFoundException { - for (File f : searchPaths) { - File res = new File(f, name); - if (res.exists()) - return res; - } - throw new FileNotFoundException("Cannot find resource \"" + name + "\""); - } - - /** - * How to signal a refresh? Need to set up some kind of listener... Native - * signal handler? - * - * Two parts: Generate from source Update in response to some signal - */ -} diff --git a/RadarServer/com.raytheon.rcm.server/src/com/raytheon/rcm/config/awips1/Awips1ProdDistInfoBuilder.java b/RadarServer/com.raytheon.rcm.server/src/com/raytheon/rcm/config/awips1/Awips1ProdDistInfoBuilder.java deleted file mode 100755 index 0fe8f4be8e..0000000000 --- a/RadarServer/com.raytheon.rcm.server/src/com/raytheon/rcm/config/awips1/Awips1ProdDistInfoBuilder.java +++ /dev/null @@ -1,225 +0,0 @@ -/** - * This software was developed and / or modified by Raytheon Company, - * pursuant to Contract DG133W-05-CQ-1067 with the US Government. - * - * U.S. EXPORT CONTROLLED TECHNICAL DATA - * This software product contains export-restricted data whose - * export/transfer/disclosure is restricted by U.S. law. Dissemination - * to non-U.S. persons whether in the United States or abroad requires - * an export license or other authorization. - * - * Contractor Name: Raytheon Company - * Contractor Address: 6825 Pine Street, Suite 340 - * Mail Stop B8 - * Omaha, NE 68106 - * 402.291.0100 - * - * See the AWIPS II Master Rights File ("Master Rights File.pdf") for - * further licensing information. - **/ -package com.raytheon.rcm.config.awips1; - -import java.io.File; - -import com.raytheon.rcm.config.ProductDistributionInfo; -import com.raytheon.rcm.config.RadarType; -import com.raytheon.rcm.config.StandardProductDistInfoDB; -import com.raytheon.rcm.products.ProductInfo; -import com.raytheon.rcm.products.RadarProduct; -import com.raytheon.rcm.products.RadarProduct.Param; -import com.raytheon.rcm.server.Log; -import com.raytheon.rcm.products.ProductInfo.Selector; - - -/* - * The WSR-88D national RPS list asks for 0.5, 1.5, 2.5, and 3.5 elevations. - * If the actual available elevations are 1.3, 2.4, etc. there is no problem - * because these are covered by a few additional entries in the WSR-88D - * prodList.txt. There is one low elevations that is not covered -- 1.8. But - * there will always either 1.3 or 1.5 to fill the N1R/N1V categories. - * - * For TDWRs, there are (too) many possible angles that could be returned - * for a given request. To account for this, the AWIPS 1 code maps an received - * product's elevation to one of the AWIPS 1 standard tilt angle groups. The - * tdwrProdList.txt then references the representative values of the tilt angle - * groups. There is an exception for the 0.6 elevation for the long range - * reflectivity product (which, I guess, is the same for all TDWRs so it would - * look awkward to reference it with "0.5") - * - * What should really be done is to specify elevation ranges in the - * prodList.txt file. Also, it should be explicit about what parameter is - * matched so that the code does not have to hardcode matches against field - * other than elevation. - * - * The new design should work this way. In the mean time, we'll try to isolate - * all the nasty implicit/ambiguous stuff here. - */ - -public class Awips1ProdDistInfoBuilder { - - private static final int[] DUA_DURATION_TABLE = {0, 60, 120, 180, 360, 720, 1440}; - - public static void addProdListEntry(File path, int messageCode, int elev, boolean isTdwr, - ProductDistributionInfo info, StandardProductDistInfoDB db) { - - RadarProduct product = ProductInfo.getInstance().selectOne( - new Selector(isTdwr ? RadarType.TDWR : RadarType.WSR, null, - messageCode, null)); - - if (product == null) { - Log.errorf("%s: unknown product code '%d'", path, elev); - return; - } - - if (product.params.contains(Param.ELEVATION)) { - /* From AWIPS 1: - * // For TDWR radar, use the primary angle instead of the real - // elevation angle except 0.6 (long range product 186 and 187) - if (sourceId >= 3000 && sourceId <= 3045 - && (int)(elev*10) != 0 - && (int)prodCode != 186 && (int)prodCode != 187) - elev = getPrimaryAngle(newFileName); - - */ - - // Note the code makes no reference to 0.6. It is just the case - // that tdwrProdList.txt has 0.6 listed for product 186. - // The code actually checks from product 186 or 187 - if (isTdwr && messageCode != 186 && messageCode != 187) { - int[] range = getAngleGroupRange(elev); - db.add(messageCode, Param.ELEVATION, range[0], range[1], info); - } else { - db.add(messageCode, Param.ELEVATION, elev, elev, info); - } - } else if (product.params.contains(Param.CFC_BITMAP)) { - if (elev != 0) { - if (elev < 0 && (elev % 10) == 0) { - int value = - elev / 10; - db.add(messageCode, Param.CFC_BITMAP, value, value, info); - } else { - Log.errorf("CFC segment number must be negative multiple of 10. Input was '%d'.", - elev); - return; - } - } else - db.add(messageCode, info); - } else if (product.params.contains(Param.TIME_SPAN_MINUTES)) { - /* From AWIPS 1 RadarStorageController.C... - { - int p = Cvt2ToULong(&msg[54]); - int elevl; - if (p==60) - elev = -1; - else if (p==120) - elev = -2; - else if (p==180) - elev = -3; - else if (p==360) - elev = -4; - else if (p==720) - elev = -5; - else if (p==1440) - elev = -6; - else - elev = 0; - } - - DUA is currently not in prodList.txt and it is not clear where - the requirements for this are defined. - */ - if (elev >= -6 && elev <= -1) { - int value = DUA_DURATION_TABLE[-elev]; - db.add(messageCode, Param.TIME_SPAN_MINUTES, value, value, info); - } else { - Log.errorf("DUA duration specifier must be in the range [-6,-1]. Input was '%d'.", - elev); - return; - } - } else - db.add(messageCode, info); - } - - // AWIPS1 note: - // Because the radar ingest system uses zero as the value that stands for the - // null tilt, any bin including 0.0 must have 0.0 as the primary tilt. - // ... not sure if this applies to us - // 02/27/2015 DR17099 zwang For TLAS, the first elev 0.8 should match to 0.5 - - // Sequence of (group-rep1, min1, max1, group-rep2, min2, max2, ...) - protected static int[] angleGroups = { - 0, 0, 3, - 5, 4, 8, - 9, 9, 11, - 15, 12, 16, - 18, 17, 20, - 24, 21, 26, - 34, 27, 36, - 43, 37, 46, - 53, 47, 56, - 60, 57, 66, - 75, 67, 80, - 87, 81, 95, - 100, 96, 110, - 120, 111, 130, - 140, 131, 156, - 167, 157, 179, - 195, 180, 220, - 250, 221, 275, - 300, 276, 325, - 350, 326, 375, - 400, 376, 425, - 450, 426, 475, - 500, 476, 525, - 550, 526, 575, - 600, 576, 625 - }; - - // In case we want to load from tiltAngleGroups.txt... - public static void setAngleGroups(int[] newAngleGroups) { - angleGroups = newAngleGroups; - } - - private static final int REP = 0; - private static final int MIN = 1; - private static final int MAX = 2; - - private static int[] getAngleGroupRange(int elev) { - int[] result = new int[2]; - - if (angleGroups == null || elev < -9 || elev > 900) { - result[0] = result[1] = elev; - return result; - } - - elev = Math.abs(elev); - - int i = 0; - for (i = 0; i < angleGroups.length; i += 3) { - if (elev >= angleGroups[i+MIN] && elev <= angleGroups[i+MAX]) { - break; - } else if (elev < angleGroups[i+MIN]) { // shouldn't happen because tiltAngleGroups.txt should have full coverage - if (i == 0) { - result[0] = result[1] = elev; - return result; - } else { - i -= 3; - break; - } - } - } - - result[0] = angleGroups[i+MIN]; - result[1] = angleGroups[i+MAX]; - return result; - } - - public static int getAngleGroup(int elev) { - int i = 0; - for (i = 0; i < angleGroups.length; i += 3) { - if (elev >= angleGroups[i+MIN] && elev <= angleGroups[i+MAX]) { - return angleGroups[i+REP]; - } - } - return -1; - } -} diff --git a/RadarServer/com.raytheon.rcm.server/src/com/raytheon/rcm/config/awips1/Awips1RadarConfig.java b/RadarServer/com.raytheon.rcm.server/src/com/raytheon/rcm/config/awips1/Awips1RadarConfig.java deleted file mode 100755 index b854f288ea..0000000000 --- a/RadarServer/com.raytheon.rcm.server/src/com/raytheon/rcm/config/awips1/Awips1RadarConfig.java +++ /dev/null @@ -1,70 +0,0 @@ -/** - * This software was developed and / or modified by Raytheon Company, - * pursuant to Contract DG133W-05-CQ-1067 with the US Government. - * - * U.S. EXPORT CONTROLLED TECHNICAL DATA - * This software product contains export-restricted data whose - * export/transfer/disclosure is restricted by U.S. law. Dissemination - * to non-U.S. persons whether in the United States or abroad requires - * an export license or other authorization. - * - * Contractor Name: Raytheon Company - * Contractor Address: 6825 Pine Street, Suite 340 - * Mail Stop B8 - * Omaha, NE 68106 - * 402.291.0100 - * - * See the AWIPS II Master Rights File ("Master Rights File.pdf") for - * further licensing information. - **/ -package com.raytheon.rcm.config.awips1; - -import com.raytheon.rcm.config.RadarConfig; -import com.raytheon.rcm.config.awips1.Awips1RpsListUtil; -import com.raytheon.rcm.message.GSM; -import com.raytheon.rcm.request.RpsList; - -public class Awips1RadarConfig extends RadarConfig { - // not really public... - private RpsList[] nationalRpsLists; - private RpsList[] localRpsLists; - - public RpsList[] getNationalRpsLists() { - return nationalRpsLists; - } - public void setNationalRpsLists(RpsList[] nationalRpsLists) { - this.nationalRpsLists = nationalRpsLists; - } - public RpsList[] getLocalRpsLists() { - return localRpsLists; - } - public void setLocalRpsLists(RpsList[] localRpsLists) { - this.localRpsLists = localRpsLists; - } - - public RpsList getLocalRpsList(int opMode, int vcp) { - if (localRpsLists != null) { - for (RpsList l : localRpsLists) - if (l.getOpMode() == opMode && - (opMode == GSM.OP_MODE_MAINTENANCE || l.getVcp() == vcp)) - return l; - } - return null; - } - - /* AWIPS 1 handling of the national RPS list for TDWRs has an additional - * quirk. See Awips1RpsListUtil.maybeTransformNationalRpsList. - */ - - public RpsList getNationalRpsList(int opMode, int vcp, int[] cuts) { - // TODO: check for tdwr and opMode != storm since we will not - // have such a thing? - if (nationalRpsLists != null) { - for (RpsList l : nationalRpsLists) - if (l.getOpMode() == opMode /*&& l.getVcp() == vcp*/) { - return Awips1RpsListUtil.maybeTransformForTDWR(this, l, cuts); - } - } - return null; - } -} diff --git a/RadarServer/com.raytheon.rcm.server/src/com/raytheon/rcm/config/importer/Importer.java b/RadarServer/com.raytheon.rcm.server/src/com/raytheon/rcm/config/importer/Importer.java deleted file mode 100755 index ffab6ee8da..0000000000 --- a/RadarServer/com.raytheon.rcm.server/src/com/raytheon/rcm/config/importer/Importer.java +++ /dev/null @@ -1,239 +0,0 @@ -/** - * This software was developed and / or modified by Raytheon Company, - * pursuant to Contract DG133W-05-CQ-1067 with the US Government. - * - * U.S. EXPORT CONTROLLED TECHNICAL DATA - * This software product contains export-restricted data whose - * export/transfer/disclosure is restricted by U.S. law. Dissemination - * to non-U.S. persons whether in the United States or abroad requires - * an export license or other authorization. - * - * Contractor Name: Raytheon Company - * Contractor Address: 6825 Pine Street, Suite 340 - * Mail Stop B8 - * Omaha, NE 68106 - * 402.291.0100 - * - * See the AWIPS II Master Rights File ("Master Rights File.pdf") for - * further licensing information. - **/ -package com.raytheon.rcm.config.importer; - -import java.io.BufferedReader; -import java.io.File; -import java.io.IOException; -import java.io.InputStreamReader; -import java.util.Collection; - -import javax.xml.bind.JAXBException; -import javax.xml.bind.Marshaller; - -import com.raytheon.rcm.config.Configuration; -import com.raytheon.rcm.config.EndpointConfig; -import com.raytheon.rcm.config.RadarConfig; -import com.raytheon.rcm.config.awips1.Awips1ConfigProvider; -import com.raytheon.rcm.config.awips1.Awips1RpsListUtil; -import com.raytheon.rcm.config.awips1.Awips1RpsListUtil.Selector; -import com.raytheon.rcm.config.std.ConfigDoc; -import com.raytheon.rcm.config.std.StandardConfig; -import com.raytheon.rcm.config.std.StandardConfigProvider; -import com.raytheon.uf.common.util.RunProcess; - -public class Importer { - private static final String PROP_BASE = "com.raytheon.rcm"; - - private static final String AWIPS1_PROP_BASE = "com.raytheon.rcm.awips1"; - - String awips1Root; - - String rcmConfigDir; - - BufferedReader reader; - - private class Quit extends RuntimeException { - - } - - public static void main(String[] args) { - System.exit((new Importer()).run(args)); - } - - public int run(String[] args) { - reader = new BufferedReader(new InputStreamReader(System.in)); - try { - run2(); - return 0; - } catch (Quit e) { - System.out.println(); - return 1; - } - } - - private void run2() { - System.out - .println("NOTE: This utility should not be run while the AWIPS 2 RadarServer is running."); - - store(convert(gather())); - maybeCopyRpsFles(); - } - - public Configuration gather() { - awips1Root = prompt( - "What is the root directory of the AWIPS 1 configuration?", "/"); - - rcmConfigDir = prompt( - "What is the configuration directory for the AWIPS 2 RadarServer?\n" - + "(Usually .../data/config in the RadarServer directory)\n", - System.getProperty(PROP_BASE + ".configDir", "")); - - System.setProperty(AWIPS1_PROP_BASE + ".resourceRoot", awips1Root); - - String fxaLocalSite = System.getenv("FXA_LOCAL_SITE"); - if (fxaLocalSite == null) { - File f = new File(awips1Root - + "/awips/fxa/data/localizationDataSets"); - File[] lcns = f.listFiles(); - if (lcns != null) { - for (File lcn : lcns) { - if (lcn.isDirectory() - && (new File(lcn, "radarsInUse.txt")).isFile()) { - fxaLocalSite = lcn.getName(); - break; - } - } - } - } - - if (fxaLocalSite == null) - fxaLocalSite = ""; - - fxaLocalSite = prompt("What localization should be used?", fxaLocalSite); - - System.setProperty(AWIPS1_PROP_BASE + ".FXA_LOCAL_SITE", fxaLocalSite); - - Awips1ConfigProvider prov = new Awips1ConfigProvider(); - Configuration cfg = prov.getConfiguration(); - - return cfg; - } - - public ConfigDoc convert(Configuration source) { - ConfigDoc doc = new ConfigDoc(); - // doc.collectionEnabled = source.isCollectionEnabled(); // Disable for - // now - doc.collectionEnabled = false; - doc.decompressProducts = true; // Default for now... - doc.pupID = source.getPupId(); - doc.regionCode = source.getRegionCode(); - doc.tdwrCollectionLimited = source.isTdwrCollectionLimited(); - doc.wmoSiteID = source.getWmoSiteID(); - Collection radarIDs = source.getConfiguredRadarList(); - doc.radars = new RadarConfig[radarIDs.size()]; - int i = 0; - for (String radarID : radarIDs) - doc.radars[i++] = source.getConfigForRadar(radarID); - - /* - * Create the endpoint configuration. The installer sets up some of its - * fields, so we should use the existing configuration if possible. - */ - EndpointConfig ec = null; - try { - StandardConfigProvider scp = new StandardConfigProvider(); - ec = ((StandardConfig) scp.getConfiguration()).getEndpointConfig(); - } catch (Exception e) { - // nothing - } - // Create a fallback configuration if the if necessary. - if (ec == null) { - ec = new EndpointConfig(); - ec.setArchiveRoot("/data_store/radar"); - ec.setConnectionURL("amqp://guest:guest@/edex?brokerlist='tcp://edex-server:5672'"); - } - doc.endpointConfig = ec; - - return doc; - } - - public void store(ConfigDoc doc) { - File dst = new File(rcmConfigDir + "/persist/config.xml"); - dst.getParentFile().mkdirs(); - Marshaller m = StandardConfigProvider.getMarshaller(); - try { - m.marshal(doc, dst); - } catch (JAXBException e) { - System.err.println("Error saving configuration: " + e.getMessage()); - } - System.out.println("New configuration written."); - } - - public String prompt(String prompt, String defaultValue) { - String result; - // Console cns = System.console(); - // cns.format("%s [%s]\n", prompt, defaultValue); - // String result = cns.readLine(); - System.out.format("%s [%s]\n", prompt, defaultValue); - try { - result = reader.readLine(); - } catch (IOException e) { - throw new Quit(); - } - - System.out.println(); - if (result == null) - throw new Quit(); - if (result.length() == 0) - return defaultValue; - else - return result; - } - - private void maybeCopyRpsFles() { - File srcDir = new File(awips1Root + "/data/fxa/radar/lists"); - File dstDir = new File(rcmConfigDir, "drop-ins"); - try { - String prompt = String.format( - "Copy local RPS files from\n %s\nto\n %s ?", srcDir, - dstDir); - String v = prompt(prompt, "Y"); - if (v.equalsIgnoreCase("y") || Boolean.parseBoolean(v)) { - // ok - } else - return; - } catch (RuntimeException e) { - return; - } - - dstDir.mkdirs(); - - int nFound = 0; - - File[] items = srcDir.listFiles(); - if (items != null) { - for (File itm : items) { - if (!itm.isFile()) - continue; - Selector sel = Awips1RpsListUtil.parseName(itm.getName()); - if (sel != null) { - ++nFound; - File dstFile = new File(dstDir, itm.getName()); - String[] args = { "cp", "-p", itm.toString(), - dstFile.toString() }; - try { - // DR#10955 - RunProcess.getRunProcess().exec(args); - } catch (IOException e) { - System.err.format("Error: %s: %s\n", itm.getName(), - e.getMessage()); - continue; - } - System.out.format("Copied %s\n", itm.getName()); - } - } - } - - if (nFound == 0) - System.out.println("Did not find any RPS files"); - } - -} diff --git a/RadarServer/com.raytheon.rcm.server/src/com/raytheon/rcm/config/std/ConfigDoc.java b/RadarServer/com.raytheon.rcm.server/src/com/raytheon/rcm/config/std/ConfigDoc.java deleted file mode 100755 index 8041de4ef0..0000000000 --- a/RadarServer/com.raytheon.rcm.server/src/com/raytheon/rcm/config/std/ConfigDoc.java +++ /dev/null @@ -1,51 +0,0 @@ -/** - * This software was developed and / or modified by Raytheon Company, - * pursuant to Contract DG133W-05-CQ-1067 with the US Government. - * - * U.S. EXPORT CONTROLLED TECHNICAL DATA - * This software product contains export-restricted data whose - * export/transfer/disclosure is restricted by U.S. law. Dissemination - * to non-U.S. persons whether in the United States or abroad requires - * an export license or other authorization. - * - * Contractor Name: Raytheon Company - * Contractor Address: 6825 Pine Street, Suite 340 - * Mail Stop B8 - * Omaha, NE 68106 - * 402.291.0100 - * - * See the AWIPS II Master Rights File ("Master Rights File.pdf") for - * further licensing information. - **/ -package com.raytheon.rcm.config.std; - -import javax.xml.bind.annotation.XmlAccessType; -import javax.xml.bind.annotation.XmlAccessorType; -import javax.xml.bind.annotation.XmlElement; -import javax.xml.bind.annotation.XmlElementWrapper; -import javax.xml.bind.annotation.XmlRootElement; -import javax.xml.bind.annotation.XmlType; - -import com.raytheon.rcm.config.EndpointConfig; -import com.raytheon.rcm.config.RadarConfig; - - -@XmlRootElement(name="config") -@XmlType(name="config",propOrder={}) -@XmlAccessorType(XmlAccessType.PUBLIC_MEMBER) -// Only public for importer utility -public class ConfigDoc { - public int pupID; - public Integer regionCode; - public String wmoSiteID; - public boolean collectionEnabled; - public boolean tdwrCollectionLimited = true; - public boolean decompressProducts; - public String edexEndpoint; - public String awips1Endpoint; - public EndpointConfig endpointConfig; - - @XmlElementWrapper() - @XmlElement(name="radar") - public RadarConfig[] radars; -} diff --git a/RadarServer/com.raytheon.rcm.server/src/com/raytheon/rcm/config/std/ConfigRes.java b/RadarServer/com.raytheon.rcm.server/src/com/raytheon/rcm/config/std/ConfigRes.java deleted file mode 100755 index 9fe9ef97f5..0000000000 --- a/RadarServer/com.raytheon.rcm.server/src/com/raytheon/rcm/config/std/ConfigRes.java +++ /dev/null @@ -1,58 +0,0 @@ -/** - * This software was developed and / or modified by Raytheon Company, - * pursuant to Contract DG133W-05-CQ-1067 with the US Government. - * - * U.S. EXPORT CONTROLLED TECHNICAL DATA - * This software product contains export-restricted data whose - * export/transfer/disclosure is restricted by U.S. law. Dissemination - * to non-U.S. persons whether in the United States or abroad requires - * an export license or other authorization. - * - * Contractor Name: Raytheon Company - * Contractor Address: 6825 Pine Street, Suite 340 - * Mail Stop B8 - * Omaha, NE 68106 - * 402.291.0100 - * - * See the AWIPS II Master Rights File ("Master Rights File.pdf") for - * further licensing information. - **/ -package com.raytheon.rcm.config.std; - -import java.io.File; -import java.io.FileNotFoundException; - -public class ConfigRes { - private static final String propBase = "com.raytheon.rcm"; - - private File configDirectory; - - public ConfigRes() { - String prop = System.getProperty(propBase + ".configDir", "/"); - configDirectory = new File(prop); - } - - public File getDropInDir() { - return new File(configDirectory, "drop-ins"); - } - - public File getDropInPath(String resName) { - return new File(getDropInDir(), resName); - } - - public File getPrivatePath(String resName) { - return new File(getPrivateDir(), resName); - } - - public File getPrivateDir() { - return new File(configDirectory, "persist"); - } - - public File getNdmFile(String resName) throws FileNotFoundException { - File f = getDropInPath(resName); - if (f.isFile()) - return f; - else - throw new FileNotFoundException(f.toString()); - } -} diff --git a/RadarServer/com.raytheon.rcm.server/src/com/raytheon/rcm/config/std/StandardConfig.java b/RadarServer/com.raytheon.rcm.server/src/com/raytheon/rcm/config/std/StandardConfig.java deleted file mode 100755 index bb9a7e9db1..0000000000 --- a/RadarServer/com.raytheon.rcm.server/src/com/raytheon/rcm/config/std/StandardConfig.java +++ /dev/null @@ -1,537 +0,0 @@ -/** - * This software was developed and / or modified by Raytheon Company, - * pursuant to Contract DG133W-05-CQ-1067 with the US Government. - * - * U.S. EXPORT CONTROLLED TECHNICAL DATA - * This software product contains export-restricted data whose - * export/transfer/disclosure is restricted by U.S. law. Dissemination - * to non-U.S. persons whether in the United States or abroad requires - * an export license or other authorization. - * - * Contractor Name: Raytheon Company - * Contractor Address: 6825 Pine Street, Suite 340 - * Mail Stop B8 - * Omaha, NE 68106 - * 402.291.0100 - * - * See the AWIPS II Master Rights File ("Master Rights File.pdf") for - * further licensing information. - **/ -package com.raytheon.rcm.config.std; - -import java.io.File; -import java.io.FileInputStream; -import java.io.FileOutputStream; -import java.io.IOException; -import java.io.InputStream; -import java.nio.ByteBuffer; -import java.nio.channels.FileChannel; -import java.util.Collection; -import java.util.HashMap; - -import javax.xml.bind.JAXBException; - -import com.raytheon.rcm.config.Configuration; -import com.raytheon.rcm.config.EndpointConfig; -import com.raytheon.rcm.config.Globals; -import com.raytheon.rcm.config.MutableConfiguration; -import com.raytheon.rcm.config.ProductDistributionInfo; -import com.raytheon.rcm.config.RadarConfig; -import com.raytheon.rcm.config.RadarType; -import com.raytheon.rcm.config.RcmResourceProvider; -import com.raytheon.rcm.config.RcmUtil; -import com.raytheon.rcm.config.StandardProductDistInfoDB; -import com.raytheon.rcm.config.awips1.Awips1RpsListUtil; -import com.raytheon.rcm.event.ConfigEvent; -import com.raytheon.rcm.event.ConfigEvent.Category; -import com.raytheon.rcm.event.RadarEventListener; -import com.raytheon.rcm.message.GSM; -import com.raytheon.rcm.message.GraphicProduct.PDB; -import com.raytheon.rcm.request.RpsList; -import com.raytheon.rcm.request.RpsXml; -import com.raytheon.rcm.server.Log; -import com.raytheon.uf.common.serialization.JAXBManager; -import com.raytheon.uf.common.serialization.SerializationException; - - -/** - * Represents the standard configuration model of the AWIPS 2 RadarServer. - * - *
- *
- * SOFTWARE HISTORY
- * Date         Ticket#    Engineer    Description
- * ------------ ---------- ----------- --------------------------
- * ...
- * 2014-02-03   DR 14762   D. Friedman Handle updated NDM config files.
- *                                     Send configuration events.
- * 2015-06-10   4498       nabowle     Switch to JAXBManager. Rename Util->RcmUtil.
- * 2015-09-08   DR 17944   D. Friedman Handle elevation list file updates.
- * 2016-01-28   DCS18133   J. Dynina   Added new VCP's 35 and 215
- * 
- * - */ -public class StandardConfig implements Configuration, MutableConfiguration { - - final String generalPropBase = "com.raytheon.rcm"; - - private ConfigRes res; - - private ConfigDoc doc; - - private StandardConfigProvider provider; - - private HashMap radars = new HashMap(); - - private StandardProductDistInfoDB prodDistInfoDB = new StandardProductDistInfoDB(); - private RadarEventListener configurationEventTarget; - - private int regionCodeFromWmoSiteInfo; - - public StandardConfig(ConfigRes res, StandardConfigProvider provider) { - /* - * Provider is passed for the purposes of being able to save the - * configuration. The config I/O handling is already in the provider, so - * it easier just to call a 'save' method in the provider rather than - * make getters for Unmarshaller, config file name, etc.. Maybe - * save-configuration method should be in the provider class? - */ - if (provider == null) // So for now, we require a provider. - throw new IllegalArgumentException("Provider must be non-null"); - this.provider = provider; - this.res = res; - } - - @Override - public RadarConfig getConfigForRadar(String radarID) { - return radars.get(radarID); - } - - @Override - public Collection getConfiguredRadarList() { - return radars.keySet(); - } - - StandardProductDistInfoDB getProdDistInfoDB() { - return prodDistInfoDB; - } - - public void setProdDistInfoDB(StandardProductDistInfoDB prodDistInfoDB) { - this.prodDistInfoDB = prodDistInfoDB; - if (configurationEventTarget != null) { - ConfigEvent ev = new ConfigEvent(Category.PROD_DISTRIBUTION); - configurationEventTarget.handleConfigEvent(ev); - } - } - - @Override - public ProductDistributionInfo getProductDistInfo(String radarID, PDB pdb) { - RadarConfig rc = getConfigForRadar(radarID); - StandardProductDistInfoDB db = prodDistInfoDB; - if (db != null && rc != null) - return db.getProductDistInfo(rc, pdb.productCode, pdb); - else - return null; - } - - @Override - public ProductDistributionInfo getProductDistInfo(String radarID, - int messageCode) { - RadarConfig rc = getConfigForRadar(radarID); - StandardProductDistInfoDB db = prodDistInfoDB; - if (db != null && rc != null) - return db.getProductDistInfo(rc, messageCode, null); - else - return null; - } - - @Override - public int getPupId() { - return doc.pupID; - } - - @Override - public int getRegionCode() { - if (doc.regionCode != null) - return doc.regionCode; - else - return regionCodeFromWmoSiteInfo; - } - - @Override - public String getWmoSiteID() { - return doc.wmoSiteID; - } - - @Override - public boolean isCollectionEnabled() { - return doc.collectionEnabled; - } - - @Override - public boolean isTdwrCollectionLimited() { - // TODO Auto-generated method stub - return doc.tdwrCollectionLimited; - } - - @Override - public boolean isDecompressProducts() { - return doc.decompressProducts; - } - - void setDoc(ConfigDoc doc) { - this.doc = doc; - } - - public void setRadars(HashMap radars) { - this.radars = radars; - } - - // TODO: use enum, map - private static String[] modeNames = new String[3]; - static { - modeNames[GSM.OP_MODE_CLEAR_AIR] = "clear-air"; - modeNames[GSM.OP_MODE_STORM] = "storm"; - modeNames[GSM.OP_MODE_MAINTENANCE] = "maint"; - } - - @Override - public RpsList getLocalRpsList(String radarID, int opMode, int vcp, - int[] cuts) { - RadarConfig rc = getConfigForRadar(radarID); - if (rc == null) - return null; - - // Two passes: First the local custom list, then the default list - // TODO: are default lists also in the drop-ins directory? - for (int i = 0; i < 2; ++i) { - String resName; - boolean isDefaultBaselineFile = i == 1; - try { - String selectorName = i == 0 ? radarID.toUpperCase() : "KXXX"; - if (opMode != GSM.OP_MODE_MAINTENANCE) - resName = String.format("%s.%s.VCP%d", selectorName, - modeNames[opMode], vcp); - else - resName = String.format("%s.%s", selectorName, - modeNames[opMode]); - } catch (ArrayIndexOutOfBoundsException e) { - return null; - } - - RpsList rpsList = getRpsListRes(res.getDropInPath(resName), opMode, - vcp); - if (rpsList != null) { - if (isDefaultBaselineFile && (vcp == 80 || vcp == 90) - && cuts != null) - rpsList = Awips1RpsListUtil.maybeTransformForTDWR(rc, - rpsList, cuts); - return rpsList; - } - } - - return null; - } - - // package radarconfig.getypte .. based on id.. - - @Override - public RpsList getNationalRpsList(String radarID, int opMode, int vcp, - int[] cuts) { - - /* - * The original AWIPS 1 code had some strange way of determining the - * appropriate national RPS list based on the "line type" which was - * derived from the maximum RPS list size (!?) which could only be - * determined after connecting. - * - * However, two types (rpgop and associated -- both x.25 (?)) are no - * longer used because x.25 is not used for dedicated connections - * anymore. That leaves us with only tcp-rpgop and spg???. That means we - * can differentiate solely on the radar type. - * - * This comment belongs somewhere else. - */ - - - RadarConfig rc = getConfigForRadar(radarID); - if (rc == null) - return null; - - RadarType type = RcmUtil.getRadarType(rc); - - String resName = null; - - if (type == RadarType.WSR) { - if (opMode == GSM.OP_MODE_CLEAR_AIR) - resName = "rps-RPGOP-tcp.clear-air"; - else if (opMode == GSM.OP_MODE_STORM) - resName = "rps-RPGOP-tcp.storm"; - } else if (type == RadarType.TDWR) - resName = "rps-SPGOP-tcp.storm"; - if (resName == null) - return null; - - RpsList rpsList = getRpsListRes(res.getDropInPath(resName), opMode, 0); - - /* We are still tied up with the TDWR template processing logic... */ - return Awips1RpsListUtil.maybeTransformForTDWR(rc, rpsList, cuts); - } - - private RpsList getRpsListRes(File dropInPath, int opMode, int vcp) { - if (!dropInPath.isFile()) { - /* - * TODO: not quite an error for local list because we can use the - * default. Also, there are currently no RPS lists for ASRs. - */ - Log.errorf("RPS list does not exist: %s", dropInPath); - return null; - } - - Exception exc; - - try { - FileInputStream fis = new FileInputStream(dropInPath); - ByteBuffer buf; - try { - FileChannel fc = fis.getChannel(); - buf = ByteBuffer.allocate((int) fc.size()); - fc.read(buf); - } finally { - fis.close(); - } - - return RcmUtil.parseRpsListData(buf.array(), opMode, vcp); - } catch (IOException e) { - exc = e; - } catch (JAXBException e) { - exc = e; - } catch (RuntimeException e) { // TODO: placement - exc = e; - } - - Log.errorf("Failed to load RPS list '%s': %s", dropInPath, exc); - return null; - - } - - @Override - public String getAwips1Endpoint() { - if (doc.awips1Endpoint != null) - return doc.awips1Endpoint; - else - return System.getProperty(generalPropBase + ".awips1RadarEndpoint"); - } - - public EndpointConfig getEndpointConfig() { - return doc.endpointConfig; - } - - @Override - public String getEdexEndpoint() { - if (doc.edexEndpoint != null) - return doc.edexEndpoint; - else - return System.getProperty(generalPropBase + ".edexRadarEndpoint"); - } - - int getRegionCodeFromWmoSiteInfo() { - return regionCodeFromWmoSiteInfo; - } - - void setRegionCodeFromWmoSiteInfo(int regionCodeFromWmoSiteInfo) { - this.regionCodeFromWmoSiteInfo = regionCodeFromWmoSiteInfo; - /* - * There is currently no need to send a configuration event for this - * because the value is always queried from the configuration when it is - * used. - */ - } - - // TODO: Should not have to care about the opMode... - private static final HashMap vcpToOpMode; - static { - vcpToOpMode = new HashMap(); - vcpToOpMode.put(31, GSM.OP_MODE_CLEAR_AIR); - vcpToOpMode.put(32, GSM.OP_MODE_CLEAR_AIR); - vcpToOpMode.put(35, GSM.OP_MODE_CLEAR_AIR); - final int[] stormVcps = { 11, 12, 21, 121, 211, 212, 215, 221, 80, 90 }; - for (int vcp : stormVcps) - vcpToOpMode.put(vcp, GSM.OP_MODE_STORM); - } - - @Override - public void setLocalRpsList(String radarID, RpsList list) - throws IOException { - int vcp = list.getVcp(); - if (vcp < 1) - throw new IOException("Invalid VCP " + vcp); - Integer opMode = vcpToOpMode.get(vcp); - if (opMode == null) - throw new IOException("Cannot determine operation mode for VCP " - + vcp); - - String resName = String.format("%s.%s.VCP%d", radarID.toUpperCase(), - modeNames[opMode], vcp); - JAXBManager manager = RpsXml.getJAXBManager(); - File f = res.getDropInPath(resName); - try { - manager.marshalToXmlFile(list, f.getAbsolutePath()); - } catch (SerializationException e) { - throw new IOException(e); - } - } - - @Override - public boolean setGlobalConfig(Globals globals) { - doc.collectionEnabled = globals.collectionEnabled; - doc.tdwrCollectionLimited = globals.tdwrCollectionLimited; - doc.decompressProducts = globals.decompressProducts; - doc.edexEndpoint = globals.edexEndpoint; - doc.pupID = globals.pupID; - doc.wmoSiteID = globals.wmoSiteID; - doc.endpointConfig = globals.endpointConfig; - - // Setting this directly is not supported... - // doc.regionCode = globals.regionCode; - doc.regionCode = null; - provider.updateRegionCode(); - - boolean result = saveConfig(); - if (configurationEventTarget != null) { - ConfigEvent ev = new ConfigEvent(Category.GLOBAL_CONFIG); - configurationEventTarget.handleConfigEvent(ev); - } - return result; - } - - private boolean saveConfig() { - Exception exc = null; - try { - this.provider.storeConfiguration(this); - } catch (JAXBException e) { - exc = e; - } - - if (exc == null) { - Log.event("Configuration saved"); - return true; - } else { - Log.errorf("Could not save configuration: %s", exc.getMessage()); - return false; - } - } - - @Override - public boolean addRadarConfig(RadarConfig rc) { - Log.errorf("Adding radars is unsupported"); - return false; - } - - @Override - public boolean removeRadarConfig(String radarID) { - Log.errorf("Removing radars is unsupported"); - return false; - } - - @Override - public boolean setRadarConfig(RadarConfig rc) { - RadarConfig oldConfig = radars.get(rc.getRadarID()); - if (oldConfig != null) { - radars.put(rc.getRadarID(), rc); - - boolean result = saveConfig(); - if (configurationEventTarget != null) { - ConfigEvent ev = new ConfigEvent(rc.getRadarID(), oldConfig, rc); - configurationEventTarget.handleConfigEvent(ev); - } - return result; - } else { - Log.errorf("Attempt to change configuration of unknown radar '%s'", - rc.getRadarID()); - return false; - } - } - - @Override - public InputStream getPersistedData(String name) throws IOException { - return new FileInputStream(res.getPrivatePath(name)); - } - - @Override - public void putPersistedData(String name, byte[] data) throws IOException { - File tmpFile = File.createTempFile("sct", null, res.getPrivateDir()); - try { - FileOutputStream fos = new FileOutputStream(tmpFile); - try { - fos.write(data); - fos.close(); - } finally { - try { - fos.close(); - } catch (IOException e) { - // nothing - } - } - File targetFile = res.getPrivatePath(name); - targetFile.delete(); - tmpFile.renameTo(targetFile); - } finally { - tmpFile.delete(); - } - } - - @Override - public void removePersistedData(String name) { - res.getPrivatePath(name).delete(); - } - - @Override - public InputStream getDropInData(String name) throws IOException { - return new FileInputStream(res.getDropInPath(name)); - } - - /*package*/ void notifyNationalRpsLists() { - if (configurationEventTarget != null) { - ConfigEvent ev = new ConfigEvent(Category.NATIONAL_RPS_LISTS); - configurationEventTarget.handleConfigEvent(ev); - } - } - - public boolean storeConfigFile(String name, byte[] data) { - // Delegate to provider - return provider.storeNdmConfigFile(name, data); - } - - public RadarEventListener getConfigurationEventTarget() { - return configurationEventTarget; - } - - public void setConfigurationEventTarget( - RadarEventListener configurationEventTarget) { - this.configurationEventTarget = configurationEventTarget; - } - - private class StandardRcmResourceProvider extends RcmResourceProvider { - @Override - public InputStream getResourceAsStream(String resource) { - try { - return getDropInData(resource); - } catch (IOException e) { - Log.errorf("Could not open resource/NDM file %s: %s", resource, e); - return null; - } - } - protected void notifyResourceChanged(String resource) { - super.notifyResourceChanged(resource); - } - }; - StandardRcmResourceProvider rcmResourceProvider = new StandardRcmResourceProvider(); - - public RcmResourceProvider getRcmResourceProvider() { return rcmResourceProvider; } - - /*package*/ void notifyResourceChanged(String name) { - rcmResourceProvider.notifyResourceChanged(name); - } - -} diff --git a/RadarServer/com.raytheon.rcm.server/src/com/raytheon/rcm/config/std/StandardConfigProvider.java b/RadarServer/com.raytheon.rcm.server/src/com/raytheon/rcm/config/std/StandardConfigProvider.java deleted file mode 100755 index 526d35cde3..0000000000 --- a/RadarServer/com.raytheon.rcm.server/src/com/raytheon/rcm/config/std/StandardConfigProvider.java +++ /dev/null @@ -1,298 +0,0 @@ -/** - * This software was developed and / or modified by Raytheon Company, - * pursuant to Contract DG133W-05-CQ-1067 with the US Government. - * - * U.S. EXPORT CONTROLLED TECHNICAL DATA - * This software product contains export-restricted data whose - * export/transfer/disclosure is restricted by U.S. law. Dissemination - * to non-U.S. persons whether in the United States or abroad requires - * an export license or other authorization. - * - * Contractor Name: Raytheon Company - * Contractor Address: 6825 Pine Street, Suite 340 - * Mail Stop B8 - * Omaha, NE 68106 - * 402.291.0100 - * - * See the AWIPS II Master Rights File ("Master Rights File.pdf") for - * further licensing information. - **/ -package com.raytheon.rcm.config.std; - -import java.io.File; -import java.io.FileNotFoundException; -import java.io.FileOutputStream; -import java.io.IOException; -import java.util.Arrays; -import java.util.HashMap; -import java.util.List; -import java.util.NoSuchElementException; -import java.util.Scanner; -import java.util.regex.Pattern; - -import javax.xml.bind.JAXBContext; -import javax.xml.bind.JAXBException; -import javax.xml.bind.Marshaller; -import javax.xml.bind.Unmarshaller; - -import com.raytheon.rcm.config.Configuration; -import com.raytheon.rcm.config.ConfigurationProvider; -import com.raytheon.rcm.config.LinkResource; -import com.raytheon.rcm.config.LinkType; -import com.raytheon.rcm.config.RadarConfig; -import com.raytheon.rcm.config.StandardProductDistInfoDB; -import com.raytheon.rcm.config.awips1.Awips1ConfigProvider; -import com.raytheon.rcm.event.ConfigEvent; -import com.raytheon.rcm.event.RadarEventListener; -import com.raytheon.rcm.products.ElevationInfo; -import com.raytheon.rcm.server.Log; - - -/** - * Constructs (and potentially updates) a StandardConfig based on - * various configuration files. - * - *
- *
- * SOFTWARE HISTORY
- * Date         Ticket#    Engineer    Description
- * ------------ ---------- ----------- --------------------------
- * ...
- * 2014-02-03   DR 14762   D. Friedman Handle updated NDM config files.
- * 2015-02-11   DR 17092   D. Friedman Handle NDM cronOTRs.xml updates.
- * 2015-09-08   DR 17944   D. Friedman Handle elevation list file updates.
- * 
- * - */ -public class StandardConfigProvider implements ConfigurationProvider { - - private static final String WSR_88D_PROD_LIST_NAME = "prodList.txt"; - private static final String TDWR__PROD_LIST_NAME = "tdwrProdList.txt"; - private static final String WMO_SITE_INFO_NAME = "wmoSiteInfo.txt"; - private static final String CRON_OTRS_NAME = "cronOTRs.xml"; - - private static JAXBContext jaxbContext; - private static Unmarshaller u; - private static Marshaller m; - - static { - try { - jaxbContext = JAXBContext.newInstance(ConfigDoc.class); - u = jaxbContext.createUnmarshaller(); - m = jaxbContext.createMarshaller(); - m.setProperty("jaxb.formatted.output", true); - /* - SchemaOutputResolver s = new SchemaOutputResolver() { - - @Override - public Result createOutput(String namespaceUri, - String suggestedFileName) throws IOException { - return new StreamResult(new File("/tmp", suggestedFileName)); - } - - }; - try { - jaxbContext.generateSchema(s); - } catch (IOException e) { - e.printStackTrace(System.err); - } - */ - } catch (JAXBException e) { - Log.errorf("%s", e); - } - } - - private ConfigRes res = new ConfigRes(); - - StandardConfig config = new StandardConfig(res, this); - - public StandardConfigProvider() { - - ConfigDoc doc = null; - - // TODO: if it fails, do we quit or try to continue?... - try { - doc = (ConfigDoc) u.unmarshal(getMainConfigFile()); - } catch (JAXBException e) { - Log.errorf("Error loading configuration: %s", e); - } - - // TODO: ?? - if (doc.wmoSiteID != null) - doc.wmoSiteID = doc.wmoSiteID.toUpperCase(); - - config.setDoc(doc); - - if (doc.radars != null) { - HashMap radars = - new HashMap(doc.radars.length); - - for (RadarConfig rc : doc.radars) { - /* Only one link type is supported now and this may never change. - * Make TCP/WAN the default. - */ - if (rc.getLinkType() == null) - rc.setLinkType(LinkType.TCP_WAN); - for (LinkResource lr : rc.getLinkResources()) - if (lr.getLinkType() == null) - lr.setLinkType(LinkType.TCP_WAN); - - radars.put(rc.getRadarID(), rc); - } - - config.setRadars(radars); - } - - loadProdListDB(); - - updateRegionCode(); - } - - private void loadProdListDB() { - StandardProductDistInfoDB db = new StandardProductDistInfoDB(); - tryAddProdList(db, false, WSR_88D_PROD_LIST_NAME); - tryAddProdList(db, true, TDWR__PROD_LIST_NAME); - config.setProdDistInfoDB(db); - } - - // TODO: Duplicating code from Awips1ConfigProvider - protected static boolean skipComments(Scanner s) { - try { - s.skip("^\\s*(#|//).*$"); - } catch (NoSuchElementException e) { - // nothing - } - return ! s.hasNext(); // Also returns true if it was just a blank line - } - - public void updateRegionCode() { - try { - readWmoSiteInfo(res.getNdmFile(WMO_SITE_INFO_NAME)); - } catch (Exception e) { - Log.errorf("Could not process %s.txt: %s", WMO_SITE_INFO_NAME, e); - } - } - - // TODO: duplicates code in Awips1ConfigProvider - private void readWmoSiteInfo(File f) throws FileNotFoundException { - String wmoSiteId = config.getWmoSiteID(); - // need wmoSiteId.txt to read this... - if (wmoSiteId == null || wmoSiteId.length() == 0) { - Log.errorf("WMO site ID not set"); - return; - } - - Scanner fs = new Scanner(f); - try { - while (fs.hasNextLine()) { - Scanner ls = new Scanner(fs.nextLine()); - if (skipComments(ls)) - continue; - if (! wmoSiteId.equalsIgnoreCase( ls.next() )) - continue; - config.setRegionCodeFromWmoSiteInfo(ls.nextInt()); - } - } finally { - fs.close(); - } - } - - - private void tryAddProdList(StandardProductDistInfoDB db, boolean isTDWR, String fileName) { - try { - Awips1ConfigProvider.readProdListFile(res.getNdmFile(fileName), db, isTDWR); - } catch (Exception e) { - Log.errorf("Could not load product dist info file '%s': %s", fileName, e); - } - } - - @Override - public Configuration getConfiguration() { - return config; - } - - @Override - public void refresh() { - // TODO Auto-generated method stub - - } - - public static Marshaller getMarshaller() { - return m; - } - - public void storeConfiguration(StandardConfig config) throws JAXBException { - ConfigDoc doc = new ConfigDoc(); - doc.collectionEnabled = config.isCollectionEnabled(); - doc.decompressProducts = config.isDecompressProducts(); - doc.edexEndpoint = config.getEdexEndpoint(); - doc.pupID = config.getPupId(); - doc.regionCode = config.getRegionCode(); - doc.tdwrCollectionLimited = config.isTdwrCollectionLimited(); - doc.wmoSiteID = config.getWmoSiteID(); - doc.endpointConfig = config.getEndpointConfig(); - doc.radars = new RadarConfig[config.getConfiguredRadarList().size()]; - int i = 0; - for (String id : config.getConfiguredRadarList()) - doc.radars[i++] = config.getConfigForRadar(id); - - m.marshal(doc, getMainConfigFile()); - } - - private File getMainConfigFile() { - return new File(res.getPrivateDir(), "config.xml"); - } - - public boolean storeNdmConfigFile(String name, byte[] data) { - File f = new File(name); - if (f.getParent() != null) { - Log.error("Attempt to store NDM config file with a specific directory: " + name); - return false; - } - - File path = res.getDropInPath(name); - try { - FileOutputStream fos = new FileOutputStream(path); - try { - fos.write(data); - } finally { - try { - fos.close(); - } catch (IOException e) { - // ignore - } - } - } catch (IOException e) { - Log.errorf("Failed to store NDM config file %s: %s", path, e); - return false; - } - - Log.eventf("Stored new version of NDM config %s.", name); - - if (WSR_88D_PROD_LIST_NAME.equals(name) || - TDWR__PROD_LIST_NAME.equals(name)) { - loadProdListDB(); - } else if (WMO_SITE_INFO_NAME.equals(name)) { - updateRegionCode(); - } else if (CRON_OTRS_NAME.equals(name)) { - sendConfigEvent(ConfigEvent.Category.CRON_OTRS); - } else if (Pattern.matches("^rps-.*OP.*$", name)) { - config.notifyNationalRpsLists(); - } else if (ElevationInfo.ELEVATION_LIST_RESOURCE_NAMES.contains(name)) { - config.notifyResourceChanged(name); - sendConfigEvent(ConfigEvent.Category.ELEVATION_LISTS); - } else { - Log.warnf("No action taken for new %s. You may need to restart for changes to take affect.", name); - } - - return true; - } - - private void sendConfigEvent(ConfigEvent.Category category) { - RadarEventListener target = config.getConfigurationEventTarget(); - if (target != null) { - ConfigEvent ev = new ConfigEvent(category); - target.handleConfigEvent(ev); - } - } -} diff --git a/RadarServer/com.raytheon.rcm.server/src/com/raytheon/rcm/oldio/Link.java b/RadarServer/com.raytheon.rcm.server/src/com/raytheon/rcm/oldio/Link.java deleted file mode 100755 index 326bf02a31..0000000000 --- a/RadarServer/com.raytheon.rcm.server/src/com/raytheon/rcm/oldio/Link.java +++ /dev/null @@ -1,250 +0,0 @@ -/** - * This software was developed and / or modified by Raytheon Company, - * pursuant to Contract DG133W-05-CQ-1067 with the US Government. - * - * U.S. EXPORT CONTROLLED TECHNICAL DATA - * This software product contains export-restricted data whose - * export/transfer/disclosure is restricted by U.S. law. Dissemination - * to non-U.S. persons whether in the United States or abroad requires - * an export license or other authorization. - * - * Contractor Name: Raytheon Company - * Contractor Address: 6825 Pine Street, Suite 340 - * Mail Stop B8 - * Omaha, NE 68106 - * 402.291.0100 - * - * See the AWIPS II Master Rights File ("Master Rights File.pdf") for - * further licensing information. - **/ -package com.raytheon.rcm.oldio; - -import java.io.IOException; -import java.net.InetSocketAddress; -import java.net.SocketAddress; - -import com.raytheon.rcm.config.*; -import com.raytheon.rcm.message.SignOn; -import com.raytheon.rcm.server.Log; - - -/** - * Manages an active connection to an RPG which may consist of more than one - * socket connection. - * - *

- * Currently only supports TCP connections. - */ -public class Link { - - public static final int DEDICATED_MESSAGE_READ_TIMEOUT = 90 * 1000; - public static final int DIAL_MESSAGE_READ_TIMEOUT = 15 * 1000; - - private LinkManager manager; - private RadarConfig config; - private TcmConnection[] tcmConnections; - - protected boolean isConnected; - protected boolean isDisconnected; - protected boolean teardownInProgress; - - public Link(LinkManager manager, RadarConfig config) { - this.manager = manager; - this.config = config; - - int nConnections = config.isDedicated() ? 2 : 1; - tcmConnections = new TcmConnection[nConnections]; - for (int i = 0; i < nConnections; ++i) - tcmConnections[i] = new TcmConnection(this); - } - - public LinkManager getManager() { - return manager; - } - - public RadarConfig getConfig() { - return config; - } - - public TcmConnection[] getTcmConnections() { - return tcmConnections; - } - - public boolean isTeardownInProgress() { - return teardownInProgress; - } - - public void createLinkInBackground() { - Thread t = new Thread(new Runnable() { - - public void run() { - createLink(); - } - - }); - t.setDaemon(true); - t.start(); - } - - private SocketAddress createSocketAddress(LinkResource lr) { - String address = lr.getLinkAddress(); - String host = null; - int port = 0; - int pos = address.lastIndexOf(':'); - if (pos >= 0) { - host = address.substring(0, pos); - port = Integer.parseInt(address.substring(pos + 1)); - return new InetSocketAddress(host, port); - } else - throw new IllegalArgumentException( - String.format("Invalid link address \"%s\"", address)); - } - - protected void createLink() { - /* Managing the login process on separate threads is overly - * complex. There should not be any problem working - * sequentially. - */ - - /* Need to make all connections and then send the login message. - * Only then will a LOGIN_ACK be returned on the first connection. - */ - LinkType linkType = config.getLinkType(); - if (linkType == null) { - Log.errorf("Link type for radar '%s' not configured", config.getRadarID()); - manager.notifyConnectFailed(config.getRadarID()); - return; - } - - int nTried = 0; - - Llink: - for (LinkResource lr : config.getLinkResources()) { - if (lr.getLinkType() != linkType || - lr.isDedicated() != config.isDedicated()) - continue; - - ++nTried; - - Exception e = null; - int maxConnected = 0; - - try { - for (int i = 0; i < tcmConnections.length; ++i) { - /* if (config.getLinkType() == LINK_X25_DIAL ) ... // did wfoApi make two conns? - * (and multiplex over the link?) - * if (simpactProcs == null) simpactProcs = new Process[nConnection] - * spawn("simpactProxy -n $radarID -d 1234567 -l $logdir/blah"); - * readLine() -> socketaddr,cookie? - */ - TcmConnection tc = tcmConnections[i]; - try { - Log.eventf("%s: Attempt connection to %s", config.getRadarID(), - lr.getLinkAddress()); - tc.connect(createSocketAddress(lr)); // includes timeout... - Log.eventf("%s: Connected to %s", config.getRadarID(), - lr.getLinkAddress()); - maxConnected = i; - // It's a secret: CODE no longer actually checks the link index - tc.sendLogin(String.format("%d %d %d %s\0", lr.getLinkIndex(), - tcmConnections.length, i, lr.getTcmPassword()).getBytes()); - } catch (RuntimeException e2) { - e = e2; - continue Llink; - } catch (IOException e2) { - e = e2; - continue Llink; - } - } - - try { - tcmConnections[0].waitLoginAck(); - } catch (IOException e2) { - e = e2; - continue Llink; - } - - if (! config.isDedicated()) { - // Send Class 2 user sign-on message - tcmConnections[0].sendMessageFirst(SignOn.encode(getPupId(), - config.getNexradID(), lr.getUserPassword(), - lr.getPortPassword(), false)); - } - - notifyConnected(lr); - - int ci = 1; - for (TcmConnection tcm : tcmConnections) { - String threadName = - String.format("%s #%d", config.getRadarID(), ci++); - tcm.setMessageReceiveTimeout(config.isDedicated() ? - DEDICATED_MESSAGE_READ_TIMEOUT : DIAL_MESSAGE_READ_TIMEOUT); - tcm.startThreads(threadName); - } - - return; - } finally { - if (e != null) { - Log.eventf("%s: Connect/login failed: %s", config.getRadarID(), e); - for (int j = 0; j <= maxConnected; ++j) - tcmConnections[j].close(); - } - } - } - - if (nTried == 0) { - Log.errorf("No %slinks defined for radar '%s'", - config.getLinkResources().length > 0 ? "usable " : "", - config.getRadarID()); - } else { - Log.eventf("All usable links to radar '%s' failed", config.getRadarID()); - } - - manager.notifyConnectFailed(config.getRadarID()); - } - - public synchronized void teardown() { - if (teardownInProgress) - return; - teardownInProgress = true; - - Log.debugf("Tearning down connection"); - - if (tcmConnections != null) { - for (TcmConnection tcm : tcmConnections) { - tcm.close(); - tcm.stopThreads(); - } - - if (isConnected) - notifyDisconnected(); - } - } - - public void sendMessage(byte[] msg) { - tcmConnections[0].sendMessage(msg); - } - - public void sendKeepAlives() { - for (TcmConnection tcm : tcmConnections) - tcm.sendKeepAlive(); - } - - protected void notifyConnected(LinkResource linkResource) { - if (! isConnected) { - isConnected = true; - manager.notifyConnected(config.getRadarID(), linkResource); - } - } - - protected void notifyDisconnected() { - if (! isDisconnected) { - isDisconnected = true; - manager.notifyDisconnected(config.getRadarID()); - } - } - - protected int getPupId() { - return manager.getConfiguration().getPupId(); - } -} diff --git a/RadarServer/com.raytheon.rcm.server/src/com/raytheon/rcm/oldio/LinkManager.java b/RadarServer/com.raytheon.rcm.server/src/com/raytheon/rcm/oldio/LinkManager.java deleted file mode 100755 index 4b82457587..0000000000 --- a/RadarServer/com.raytheon.rcm.server/src/com/raytheon/rcm/oldio/LinkManager.java +++ /dev/null @@ -1,190 +0,0 @@ -/** - * This software was developed and / or modified by Raytheon Company, - * pursuant to Contract DG133W-05-CQ-1067 with the US Government. - * - * U.S. EXPORT CONTROLLED TECHNICAL DATA - * This software product contains export-restricted data whose - * export/transfer/disclosure is restricted by U.S. law. Dissemination - * to non-U.S. persons whether in the United States or abroad requires - * an export license or other authorization. - * - * Contractor Name: Raytheon Company - * Contractor Address: 6825 Pine Street, Suite 340 - * Mail Stop B8 - * Omaha, NE 68106 - * 402.291.0100 - * - * See the AWIPS II Master Rights File ("Master Rights File.pdf") for - * further licensing information. - **/ -package com.raytheon.rcm.oldio; - -import java.util.HashMap; -import java.util.Map; - -import com.raytheon.rcm.event.RadarEvent; -import com.raytheon.rcm.event.RadarEventListener; -import com.raytheon.rcm.config.*; -import com.raytheon.rcm.server.Log; - - -/** - * Manages all links to RPGs. This is a relatively low-level interfaces. The - * various components of the Radar Server use ConnectionManager instead of - * this class. - *

- * Provides the following operations: connect, disconnect, and send-message. - * There is no send queue. Thus, the send-message operation will only succeed - * if a connection to the RPG is active. - *

- * Events relating to the RPGs are - * delegated to a signle RadarEventListener interface. - */ -public class LinkManager implements com.raytheon.rcm.server.LinkManager { - - Configuration config; - Map activeLinks = new HashMap(); - - public LinkManager(Configuration config) { - this.config = config; - } - - /* There is no requirement that specifies that dead connections - * must be detected (or how often, etc.) The following code - * is a possible implementation. - */ - /* - private Thread thread; - private synchronized void startKeepAlives() { - if (thread == null) { - Thread t = new Thread(new Runnable() { - @Override - public void run() { - while (true) { - try { - Thread.sleep(60 * 1000); - } catch (InterruptedException e) { - // nothing - } - synchronized (LinkManager.this) { - for (Link link : activeLinks.values()) { - try { - link.sendKeepAlives(); - } catch (Exception e) { - // nothing - } - } - } - } - } - }); - t.setName("LinkManager Keep-Alive"); - t.setDaemon(true); - t.start(); - } - } - */ - - public synchronized void stop() { - Log.event("Shutting down."); - // TODO: synch? - for (Link link : activeLinks.values()) - link.teardown(); - } - - public void sendMessageToRadar(String radarID, byte[] msg) { - synchronized (activeLinks) { - Link link = activeLinks.get(radarID); - if (link != null) - link.sendMessage(msg); - else - Log.errorf("Attempt to send message to unconnected radar '%s'", radarID); - } - } - - public void notifyMessage(String radarID, byte[] msg) { - if (radarHandler != null) - radarHandler.handleRadarEvent(new RadarEvent(RadarEvent.MESSAGE_RECEIVED, - radarID, msg)); - } - - public void notifyConnected(String radarID, LinkResource linkResource) { - if (radarHandler != null) - radarHandler.handleRadarEvent(new RadarEvent(RadarEvent.CONNECTION_UP, - radarID, linkResource)); - } - - public synchronized void notifyConnectFailed(String radarID) { - synchronized (activeLinks) { - activeLinks.remove(radarID); - } - // Currently not logged by EventLogger. Logging is done in Link - if (radarHandler != null) - radarHandler.handleRadarEvent(new RadarEvent(RadarEvent.CONNECTION_ATTEMPT_FAILED, - radarID)); - } - - public synchronized void notifyDisconnected(String radarID) { - synchronized (activeLinks) { - activeLinks.remove(radarID); - } - if (radarHandler != null) - radarHandler.handleRadarEvent(new RadarEvent(RadarEvent.CONNECTION_DOWN, - radarID)); - } - - public void connectRadar(String radarID) { - Link link = null; - - synchronized (activeLinks) { - if (activeLinks.get(radarID) != null) - return; - - RadarConfig rc = config.getConfigForRadar(radarID); - if (rc != null) { - if (rc.isEnabled()) { - link = new Link(this, rc); - activeLinks.put(radarID, link); - } else - // not necc. an error.. - Log.errorf("Attempt to access disabled radar '%s'", radarID); - } else - Log.errorf("Attempt to access unconfigured radar '%s'", radarID); - } - - // Do not run event handlers inside synchronized to avoid deadlock - if (link != null) { - if (radarHandler != null) - radarHandler.handleRadarEvent(new RadarEvent(RadarEvent.CONNECTION_ATTEMPT_STARTED, - radarID)); - link.createLinkInBackground(); - } else - notifyConnectFailed(radarID); // So ConnectonManager can free a line - - } - - public void disconnectRadar(String radarID) { - Link link; - synchronized (activeLinks) { - link = activeLinks.get(radarID); - if (link == null) - return; - } - activeLinks.remove(radarID); - link.teardown(); - } - - protected RadarEventListener radarHandler; - - public RadarEventListener getEventHandler() { - return radarHandler; - } - - public void setEventHandler(RadarEventListener handler) { - radarHandler = handler; - } - - public Configuration getConfiguration() { - return config; - } -} diff --git a/RadarServer/com.raytheon.rcm.server/src/com/raytheon/rcm/oldio/TcmConnection.java b/RadarServer/com.raytheon.rcm.server/src/com/raytheon/rcm/oldio/TcmConnection.java deleted file mode 100755 index 4c7b41ea49..0000000000 --- a/RadarServer/com.raytheon.rcm.server/src/com/raytheon/rcm/oldio/TcmConnection.java +++ /dev/null @@ -1,365 +0,0 @@ -/** - * This software was developed and / or modified by Raytheon Company, - * pursuant to Contract DG133W-05-CQ-1067 with the US Government. - * - * U.S. EXPORT CONTROLLED TECHNICAL DATA - * This software product contains export-restricted data whose - * export/transfer/disclosure is restricted by U.S. law. Dissemination - * to non-U.S. persons whether in the United States or abroad requires - * an export license or other authorization. - * - * Contractor Name: Raytheon Company - * Contractor Address: 6825 Pine Street, Suite 340 - * Mail Stop B8 - * Omaha, NE 68106 - * 402.291.0100 - * - * See the AWIPS II Master Rights File ("Master Rights File.pdf") for - * further licensing information. - **/ -package com.raytheon.rcm.oldio; - -import java.io.BufferedInputStream; -import java.io.BufferedOutputStream; -import java.io.DataInputStream; -import java.io.DataOutputStream; -import java.io.IOException; -import java.net.Socket; -import java.net.SocketAddress; -import java.util.LinkedList; - -import com.raytheon.rcm.server.Log; - - -/** - * Manages a single TCP connection to an RPG upon which the TCM protocol is - * stacked. - */ -public class TcmConnection { - public static final int CONNECT_TIMEOUT = 15 * 1000; - /**

The maximum amount of time to wait for more data to be received - * while reading a message. To specify how long to wait for a for a - * new message, use {@link #setMessageReceiveTimeout(int)}. - * - *

This is the same value used in AWIPS 1. - */ - public static final int READ_TIMEOUT = 15 * 1000; // Used in AWIPS 1 - - // The size of a RPG message is in the first 12 bytes - protected static final int FIRST_PART_SIZE = 12; - - protected static final int MAX_TCM_BODY_SIZE = 10240; - protected static final int TCM_LOGIN = 0; - protected static final int TCM_LOGIN_ACK = 1; - protected static final int TCM_DATA = 2; - protected static final int TCM_DATA_ACK = 3; - protected static final int TCM_KEEP_ALIVE = 4; - protected static final int TCM_ID = 20983610; // Magic number for login - - /* From 2620002E ICD: {When a user application on one side of the PVC - * needs determine whether the line is still OK, it sends this message - * with a non-zero "init" field. A user application on either side, upon - * receiving this message, should respond by the same message with - * "init" reset to 0. - */ - protected static final int KEEP_ALIVE_INITIATE = 1; - protected static final int KEEP_ALIVE_RESPONSE = 0; - - // If this message is found in the send queue, send a keep alive - private static final byte[] KEEP_ALIVE = new byte[0]; - - protected Link link; - protected Socket socket; - protected LinkedList sendQueue = new LinkedList(); - protected boolean running; - - protected DataInputStream ins; - protected DataOutputStream outs; - - protected Thread readThread, writeThread; - - protected int bodySize; - protected byte[] firstPart = new byte[FIRST_PART_SIZE]; - private int dataToAck; - private int messageReceiveTimeout; - - @Deprecated - private TcmConnection() { - // unused - } - - public TcmConnection(Link link) { - this.link = link; - } - - public void startThreads(String nameSuffix) { - readThread = new Thread(new Runnable() { - - public void run() { - readProc(); - } - - }, "TCM Read " + nameSuffix); - - writeThread = new Thread(new Runnable() { - - public void run() { - writeProc(); - } - - }, "TCM Write " + nameSuffix); - - running = true; - - readThread.setDaemon(true); - writeThread.setDaemon(true); - readThread.start(); - writeThread.start(); - } - - public void stopThreads() { - synchronized (sendQueue) { - if (running) { - running = false; - sendQueue.notify(); - } - } - } - - public void connect(SocketAddress sa) throws IOException { - socket = new Socket(); - socket.connect(sa, CONNECT_TIMEOUT); - ins = new DataInputStream(new BufferedInputStream(socket.getInputStream())); - outs = new DataOutputStream(new BufferedOutputStream(socket.getOutputStream())); - } - - public void close() { - if (socket == null) - return; - try { - socket.close(); - } catch (IOException e) { - // nothing - } - } - - /* Sends a message before any other queued messages. This is needed - * because Link needs to send the sign-on message before any other message - * that may have been queued due a connect-on-demand request. If there - * ends up being some kind of queue outside of TcmConnection, this can - * be removed. - */ - void sendMessageFirst(byte[] buffer) { - synchronized (sendQueue) { - sendQueue.addFirst(buffer); - sendQueue.notify(); - } - } - - public void sendMessage(byte[] buffer) { - synchronized (sendQueue) { - sendQueue.addLast(buffer); - sendQueue.notify(); - } - } - - public void sendKeepAlive() { - sendMessage(KEEP_ALIVE); - } - - protected void readProc() { - try { - try { - while (true) - link.getManager().notifyMessage(link.getConfig().getRadarID(), - readMessage()); - } catch (IOException e) { - if (! link.isTeardownInProgress()) - Log.errorf("%s: I/O error: %s", link.getConfig().getRadarID(), e); - } - } finally { - link.teardown(); - } - } - - protected void writeProc() { - Log.debugf("writeProc start"); - try { - try { - while (true) { - byte[] msg = null; - - synchronized (sendQueue) { - while (running && sendQueue.isEmpty()) - sendQueue.wait(); - if (! running) - return; - msg = sendQueue.pollFirst(); - } - - if (msg != KEEP_ALIVE) { - Log.debugf("writeProc sending message"); - writeData(msg); - } else { - Log.debugf("writeProc sending keep-alive"); - /* There is no requirement that specifies how long to - * wait for a response, so there is no code that - * actually checks for a timeout. - * Just sending the keep-alive is helpful because the - * TCP layer will detect some errors. - */ - writeTcmPacket(TCM_KEEP_ALIVE, KEEP_ALIVE_INITIATE, null); - } - } - } catch (InterruptedException e) { - Log.error("writeProc interrupted"); - } catch (IOException e) { - if (! link.isTeardownInProgress()) - Log.errorf("%s: I/O error: %s", link.getConfig().getRadarID(), e); - } - } finally { - Log.debugf("writeProc exit"); - link.teardown(); - } - } - - public byte[] readMessage() throws IOException { - socket.setSoTimeout(messageReceiveTimeout); - - while (readTcmHeader() != TCM_DATA) - readTcmBody(null, 0, bodySize); - - socket.setSoTimeout(READ_TIMEOUT); - - readTcmBody(firstPart, 0, firstPart.length); - int messageSize = ((firstPart[8] & 0xff) <<24) | - ((firstPart[9] & 0xff) <<16) | ((firstPart[10] & 0xff)<<8) | - ((firstPart[11] & 0xff)); - byte[] msg = new byte[messageSize]; - System.arraycopy(firstPart, 0, msg, 0, firstPart.length); - int offset = firstPart.length + - readTcmBody(msg, firstPart.length, bodySize); - - while (offset < messageSize) - if (readTcmHeader() == TCM_DATA) - offset += readTcmBody(msg, offset, bodySize); - else - readTcmBody(null, 0, bodySize); - - // Assumes next Nexrad message starts with a new TCM message - - return msg; - } - - protected int readTcmHeader() throws IOException { - int type = ins.readInt(); - int special = ins.readInt(); - bodySize = ins.readInt(); - - if ((bodySize & 0x80000000) != 0) - throw new IOException("Protocol Error: TCM compression is not supported"); - - if (type == TCM_KEEP_ALIVE && special != KEEP_ALIVE_RESPONSE) { - Log.debugf("%s: got keep alive", link.getConfig().getRadarID()); - writeTcmPacket(TCM_KEEP_ALIVE, KEEP_ALIVE_RESPONSE, null); - } else if (type == TCM_DATA && special != 0) - // Sending ACK before we read the body makes the other side hang up. - dataToAck = special; - - return type; - } - - protected int readTcmBody(byte[] buffer, int ofs, int size) throws IOException { - if (size <= 0) - return 0; - if (size > bodySize) - throw new IOException("Protocol error: TCM message too short"); - if (buffer != null) - ins.readFully(buffer, ofs, size); - else - ins.skip(size); - bodySize -= size; - if (bodySize == 0 && dataToAck != 0) { - writeTcmPacket(TCM_DATA_ACK, dataToAck, null); - dataToAck = 0; - } - return size; - } - - public void writeData(byte[] data) throws IOException { - /* While the client is expected to reassemble fragmented messages, - * the server cannot do the same. We just send everything in on - * chunk. - */ - writeTcmPacketUnlimited(TCM_DATA, 0, data); - /* - int pos = 0; - int limit = data.length; - while (pos < limit) { - // It is not clear if we really need to limit the TCM message size - int now = limit - pos < MAX_TCM_BODY_SIZE ? limit - pos : MAX_TCM_BODY_SIZE; - writeTcmPacket(TCM_DATA, 0, // 0 == do not send ACKs - data, pos, now); - pos += now; - } - */ - } - - /* - * Caller must append trailing NUL to loginStr - */ - public void sendLogin(byte[] loginStr) throws IOException { - writeTcmPacket(TCM_LOGIN, TCM_ID, loginStr); - } - - public void waitLoginAck() throws IOException { - socket.setSoTimeout(READ_TIMEOUT); - // TODO: overall timeout - int type; - do { - type = readTcmHeader(); - readTcmBody(null, 0, bodySize); // We ignore the confirmation message - } while (type != TCM_LOGIN_ACK); - } - - protected void writeTcmPacket(int type, int special, byte[] payload) throws IOException { - writeTcmPacketUnlimited(type, special, payload); - //writeTcmPacket(type, special, payload, 0, payload != null ? payload.length : 0); - } - - protected void writeTcmPacket(int type, int special, byte[] payload, int ofs, int len) throws IOException { - if (payload != null && len > MAX_TCM_BODY_SIZE) - throw new IllegalArgumentException("TCM message body exceeds 10240 byte limit"); - - synchronized (outs) { - outs.writeInt(type); - outs.writeInt(special); - outs.writeInt(len); - if (len != 0) - outs.write(payload, ofs, len); - outs.flush(); - } - } - - protected void writeTcmPacketUnlimited(int type, int special, byte[] payload) throws IOException { - synchronized (outs) { - outs.writeInt(type); - outs.writeInt(special); - if (payload != null) { - outs.writeInt(payload.length); - outs.write(payload); - } else - outs.writeInt(0); - outs.flush(); - } - } - - public int getMessageReceiveTimeout() { - return messageReceiveTimeout; - } - - public void setMessageReceiveTimeout(int messageReceiveTimeout) { - this.messageReceiveTimeout = messageReceiveTimeout; - } - -} diff --git a/RadarServer/com.raytheon.rcm.server/src/com/raytheon/rcm/otrmgr/OTRHandler.java b/RadarServer/com.raytheon.rcm.server/src/com/raytheon/rcm/otrmgr/OTRHandler.java deleted file mode 100644 index 379be60278..0000000000 --- a/RadarServer/com.raytheon.rcm.server/src/com/raytheon/rcm/otrmgr/OTRHandler.java +++ /dev/null @@ -1,26 +0,0 @@ -/** - * This software was developed and / or modified by Raytheon Company, - * pursuant to Contract DG133W-05-CQ-1067 with the US Government. - * - * U.S. EXPORT CONTROLLED TECHNICAL DATA - * This software product contains export-restricted data whose - * export/transfer/disclosure is restricted by U.S. law. Dissemination - * to non-U.S. persons whether in the United States or abroad requires - * an export license or other authorization. - * - * Contractor Name: Raytheon Company - * Contractor Address: 6825 Pine Street, Suite 340 - * Mail Stop B8 - * Omaha, NE 68106 - * 402.291.0100 - * - * See the AWIPS II Master Rights File ("Master Rights File.pdf") for - * further licensing information. - **/ -package com.raytheon.rcm.otrmgr; - -import com.raytheon.rcm.event.OtrEvent; - -public interface OTRHandler { - public void handleOtrEvent(OtrEvent event); -} diff --git a/RadarServer/com.raytheon.rcm.server/src/com/raytheon/rcm/otrmgr/OTRManager.java b/RadarServer/com.raytheon.rcm.server/src/com/raytheon/rcm/otrmgr/OTRManager.java deleted file mode 100755 index 61c705e967..0000000000 --- a/RadarServer/com.raytheon.rcm.server/src/com/raytheon/rcm/otrmgr/OTRManager.java +++ /dev/null @@ -1,525 +0,0 @@ -/** - * This software was developed and / or modified by Raytheon Company, - * pursuant to Contract DG133W-05-CQ-1067 with the US Government. - * - * U.S. EXPORT CONTROLLED TECHNICAL DATA - * This software product contains export-restricted data whose - * export/transfer/disclosure is restricted by U.S. law. Dissemination - * to non-U.S. persons whether in the United States or abroad requires - * an export license or other authorization. - * - * Contractor Name: Raytheon Company - * Contractor Address: 6825 Pine Street, Suite 340 - * Mail Stop B8 - * Omaha, NE 68106 - * 402.291.0100 - * - * See the AWIPS II Master Rights File ("Master Rights File.pdf") for - * further licensing information. - **/ -package com.raytheon.rcm.otrmgr; - -import java.util.ArrayList; -import java.util.Date; -import java.util.HashMap; -import java.util.HashSet; -import java.util.Iterator; -import java.util.List; - -import com.raytheon.rcm.config.RadarConfig; -import com.raytheon.rcm.config.RadarType; -import com.raytheon.rcm.config.RcmUtil; -import com.raytheon.rcm.event.OtrEvent; -import com.raytheon.rcm.event.RadarEvent; -import com.raytheon.rcm.event.RadarEventAdapter; -import com.raytheon.rcm.message.GSM; -import com.raytheon.rcm.message.GraphicProduct; -import com.raytheon.rcm.message.GraphicProduct.PDB; -import com.raytheon.rcm.message.MD; -import com.raytheon.rcm.message.Message; -import com.raytheon.rcm.message.MessageFormatException; -import com.raytheon.rcm.message.MessageInfo; -import com.raytheon.rcm.message.ProductRequest; -import com.raytheon.rcm.message.RequestResponse; -import com.raytheon.rcm.products.ElevationInfo; -import com.raytheon.rcm.request.Filter; -import com.raytheon.rcm.request.Request; -import com.raytheon.rcm.request.Sequence; -import com.raytheon.rcm.server.Log; -import com.raytheon.rcm.server.RadarServer; - - -/* - * TODO: timeout requests - * TODO: notify requester (delegate?) - * TODO: handle PRRs - */ - -/** - * Manages One Time Requests for the RPGs. - *

- * Implements a queue for pending requests to the RPGs. Performs some coalescing - * of duplicate requests. - * - *

- *  SOFTWARE HISTORY
- *
- *  Date         Ticket#     Engineer    Description
- *  ------------ ----------  ----------- --------------------------
- *  2009                     dfriedman   Initial version
- *  2016-04-22   DR 18909    dfriedman   Accurately calculate the number of expected
- *                                       responses for multiple-elevation requests.
- * 
- */ -public class OTRManager extends RadarEventAdapter { - - protected class RadarStatus { - protected String radarID; - - /** - * isConnected+goGsm: because there is not ConnectionManager.isConnected - */ - protected boolean isReady; - - protected List requests = new ArrayList<>(); - - protected GSM lastGSM; - - public RadarStatus(String radarID) { - this.radarID = radarID; - } - - public RadarConfig getRadarConfig() { - return radarServer.getConfiguration().getConfigForRadar(radarID); - } - - @Override - public String toString() { - StringBuilder s = new StringBuilder(); - s.append("{ ").append(radarID).append(!isReady ? " not " : " ") - .append("ready\n"); - for (Req r : requests) - s.append(" ").append(r.toString()).append('\n'); - s.append('}'); - - return s.toString(); - } - - public void handleMessage(byte[] messageBuffer) { - int code = Message.messageCodeOf(messageBuffer); - if (code == Message.GSM) { - try { - lastGSM = (GSM) MD.decode(messageBuffer); - } catch (MessageFormatException e) { - return; - } - if (!isReady) { - isReady = true; - trySendingRequests(); - } - } else if (code == Message.REQUEST_RESPONSE) { - RequestResponse rr = null; - try { - rr = (RequestResponse) MD.decode(messageBuffer); - } catch (Exception e) { // TODO: correct exception - return; - } - Iterator i = requests.iterator(); - while (i.hasNext()) { - Req r = i.next(); - if (r.sent && r.sequence == rr.sequence) { - boolean done = false; - - /* - * From Class 1 ICD section 3.2.2.7 (Request Response - * Message): These two errors indicate the product will - * be sent in the next scan. - */ - if ((rr.errorCode & ~(RequestResponse.AVAILABLE_NEXT_SCAN | RequestResponse.OTR_PROCESS_FAULTED)) != 0) { - r.nExpected--; - // TODO: correct logic - if (r.nExpected < 1) { - i.remove(); - done = true; - } - } - - OtrEvent ev = new OtrEvent(); - ev.radarID = radarID; - ev.request = r.request; - ev.product = messageBuffer; - ev.done = done; - r.sendOtrEvent(ev); - - break; - } - } - } else if (code >= 16) { // TODO: isProduct - PDB pdb = null; - try { - pdb = GraphicProduct.pdbOfMessage(messageBuffer); - } catch (MessageFormatException e) { - return; - } - Iterator i = requests.iterator(); - while (i.hasNext()) { - Req r = i.next(); - if (r.sent && r.sequence == pdb.sequence) { - r.nExpected--; - // TODO: correct logic - boolean done = false; - if (r.nExpected < 1) { - done = true; - i.remove(); - } - - OtrEvent ev = new OtrEvent(); - ev.radarID = radarID; - ev.request = r.request; - ev.done = done; - ev.product = messageBuffer; - r.sendOtrEvent(ev); - break; - } - } - } else - return; // nothing has changed - - if (requests.isEmpty()) { - /* - * The only reason we contact dial radars is for OTRs so this is - * okay for now. - */ - if (!getRadarConfig().isDedicated()) { - /* - * TODO: connectionRequest.cancel() or - * connectionManager.idleDisconnect(radarID, 5 seconds) - */ - - radarServer.getConnectionManager().disconnectRadar(radarID); - } - } - } - - public void sendRequests(Iterable requests, OTRHandler handler) { - // Add new requests to the queue, filtering out duplicates. - synchronized (this.requests) { - - Lsrc: for (Request src : requests) { - Filter filter = Filter.getFilterForCode(src.productCode); - for (Req r : this.requests) { - /* - * This could be a "merge" rather than a "filter". - * Although exact comparison of fields such as elevation - * and repeat count produce safe results, it does not - * filter out all possible duplicates. - */ - if (filter.requestsEqual(src, r.request, null/* - * TODO: - * ... - */, - RcmUtil.getRadarType(getRadarConfig()))) { - if (handler != null) - r.addHandler(handler); - continue Lsrc; - } - } - - Log.eventf("Queuing request %s for %s", src, radarID); - Req r = new Req(src.clone()); - if (handler != null) - r.addHandler(handler); - this.requests.add(r); - } - } - - trySendingRequests(); - } - - private void trySendingRequests() { - if (isReady()) { - ArrayList requestsToSend = new ArrayList<>(); - long now = System.currentTimeMillis(); - synchronized (this.requests) { - for (Req r : requests) { - if (!r.sent) { - r.sent = true; - r.sequence = r.request.sequence = Sequence - .next(radarID); - r.timeSent = now; - r.calculateNExpected(); - Log.eventf("Sending request %s to %s", r.request, - radarID); - requestsToSend.add(r.request); - } - } - } - if (requestsToSend.size() < 1) - return; // Otherwise, we would cancel the RPS list. - byte[] msg = ProductRequest.encode(requestsToSend - .toArray(new Request[0])); - radarServer.getConnectionManager().sendMessageToRadar(radarID, - msg); - } else { - boolean anyToSend = false; - synchronized (this.requests) { - for (Req r : requests) - if (!r.sent) { - anyToSend = true; - break; - } - } - if (anyToSend) - radarServer.getConnectionManager().connectRadar(radarID); - } - } - - private boolean isReady() { - return this.isReady; - } - - public void handleUp() { - isReady = false; // Not ready until a GSM is received - } - - public void handleDown() { - isReady = false; - // TODO: Maybe just clear those that have been sent. - requests.clear(); - } - - private class Req { - public Request request; - - public boolean sent; - - public long timeSent; - - int sequence; // redundant? - - int nExpected; // something request.repeatCount * countOf(request) - - public ArrayList handlers; - - // countOf() isElevationProduct -- OH NO: getMultiCount() or 1 - - public Req(/* String radarID, */Request request) { - // this.radarID = radarID; - this.request = request; - // The other fields cannot be sent until we send the product. - } - - @Override - public String toString() { - return String.format( - "{ req=%s \n sent=%s %s seq=%d expected=%d }", - request, sent, sent ? new Date(timeSent) : "", - sequence, nExpected); - } - - public void calculateNExpected() { - int nElevations = 1; - boolean exactCountUnknown = false; // TODO: use this - - /* - * If the request is for multiple elevations, try to determine - * how many elevations will be returned. Note AWIPS 1 does not - * do this and disconnects (from dial radars) after the first - * product is received. - */ - if (MessageInfo.isElevationBasedProduct(request.productCode) - && request.getElevationSelection() != Request.SPECIFIC_ELEVATION) { - if (lastGSM != null) { - if (request.getElevationSelection() == Request.ALL_ELEVATIONS) { - RadarType radarType = RcmUtil.getRadarType(getRadarConfig()); - int[] completeElevationList; - - if (radarType == RadarType.WSR - || (radarType == RadarType.TDWR && lastGSM.rpgVersion >= 80)) { - /* - * When MESO-SAILS was added to WSR-88D, the - * expanded GSM was already available and it - * contained the complete list of elevations - * including extra SAILS elevations. Therefore, - * we can always rely on a WSR-88D's GSM for the - * list of elevation angles. - * - * Later version of the SPG contain the complete - * list of angles in an expected GSM. - */ - completeElevationList = lastGSM.cuts; - } else if (radarType == RadarType.TDWR && lastGSM.rpgVersion < 80) { - /* - * Earlier versions of the SPG do not list the - * extra low angle elevations scans. We can use - * the static elevation list instead. - */ - completeElevationList = ElevationInfo - .getInstance().getScanElevations( - radarID, lastGSM.vcp); - } else { - /* - * No choice but to guess based on the list of - * elevations from the GSM. - */ - completeElevationList = lastGSM.cuts; - exactCountUnknown = true; - } - int elevationAngle = request.getElevationAngle(); - nElevations = elevationAngle == 0 ? uniqueCount(completeElevationList) - : matchCount(elevationAngle, completeElevationList); - } else if (request.getElevationSelection() == Request.N_ELEVATIONS) { - nElevations = Math.min(uniqueCount(lastGSM.cuts), - request.getElevationAngle()); - } else if (request.getElevationSelection() == Request.LOWER_ELEVATIONS) { - HashSet seenAngles = new HashSet<>(); - nElevations = 0; - int reqEA = request.getElevationAngle(); - for (int ea : lastGSM.cuts) { - if (ea <= reqEA && !seenAngles.contains(ea)) { - ++nElevations; - seenAngles.add(ea); - } - } - } else - exactCountUnknown = true; - } else { - Log.warnf( - "Do not have the latest GSM for '%s'. Cannot determine how many products to expect for multi-elevation OTR", - radarID); - } - } - nExpected = request.count * nElevations; - } - - private int uniqueCount(int[] angles) { - HashSet uniqueAngles = new HashSet<>(); - for (int a : angles) { - uniqueAngles.add(a); - } - return uniqueAngles.size(); - } - - private int matchCount(int angle, int[] angles) { - int matchedAngle = findClosestAngle(angle, angles); - int count = 0; - for (int a : angles) { - if (a == matchedAngle) { - ++count; - } - } - return count; - } - - private int findClosestAngle(int angle, int[] angles) { - int result = Integer.MIN_VALUE; - int bestDiff = Integer.MAX_VALUE; - for (int a : angles) { - int diff = Math.abs(a - angle); - if (result == -1 || diff < bestDiff) { - result = a; - bestDiff = diff; - } - } - return result; - } - - public void addHandler(OTRHandler handler) { - if (handlers == null) - handlers = new ArrayList<>(); - handlers.add(handler); - } - - public void sendOtrEvent(OtrEvent event) { - if (handlers != null) - for (OTRHandler handler : handlers) { - try { - handler.handleOtrEvent(event); - } catch (Exception e) { - Log.errorf("Error while handling OTR event: %s", e); - } - } - } - - } - } - - /* - * public static final int SUCCESS = 1; public static final int FAILED = 2; - * public static final int TIMED_OUT = 3; public static final int PRR = 4; - * - * interface Handler { void handleRequestResult(Object cookie, String - * radarID, Request request, int result, byte[] msg); } - */ - - RadarServer radarServer; - - // ArrayList requests = new ArrayList(); - HashMap state = new HashMap<>(); - - public OTRManager(RadarServer radarServer) { - this.radarServer = radarServer; - } - - public void sendOneTimeRequests(Iterable radarIDs, - Iterable requests, OTRHandler handler) { - for (String radarID : radarIDs) { - RadarStatus rs = getRadarStatus(radarID); - if (rs != null) - rs.sendRequests(requests, handler); - } - } - - // Can still return null if invalid radarID - protected RadarStatus getRadarStatus(String radarID) { - return getRadarStatus(radarID, true); - } - - protected RadarStatus getRadarStatus(String radarID, boolean create) { - RadarStatus rs = state.get(radarID); - if (rs == null && create) { - RadarConfig rc = radarServer.getConfiguration().getConfigForRadar( - radarID); - if (rc == null) { - Log.errorf("Request to send OTR to unconfigured radar '%s'", - radarID); - return null; - } - - rs = new RadarStatus(radarID); - state.put(radarID, rs); - } - return rs; - } - - @Override - public void handleRadarEvent(RadarEvent event) { - /* - * need to create status so we can track state - */ - RadarStatus rs = getRadarStatus(event.getRadarID(), true/* false */); - /* - * ... less necessary if we have ConnMgr.isConnected ... not necessary - * if we have ConnMgr.getRadarState().getCurrentGsm() - */ - if (rs == null) - return; - if (event.getType() == RadarEvent.MESSAGE_RECEIVED) { - rs.handleMessage(event.getMessageData()); - } else if (event.getType() == RadarEvent.CONNECTION_DOWN) { - rs.handleDown(); - } else if (event.getType() == RadarEvent.CONNECTION_UP) { - rs.handleUp(); - } - } - - public void logStatus() { - StringBuilder s = new StringBuilder(); - s.append("{ OTRManager status\n"); - for (RadarStatus rs : state.values()) { - s.append(" ").append(rs.toString()).append(" \n"); - } - s.append("}"); - Log.event(s.toString()); - } -} diff --git a/RadarServer/com.raytheon.rcm.server/src/com/raytheon/rcm/rmrmgr/RMRManager.java b/RadarServer/com.raytheon.rcm.server/src/com/raytheon/rcm/rmrmgr/RMRManager.java deleted file mode 100644 index 9e00c0754e..0000000000 --- a/RadarServer/com.raytheon.rcm.server/src/com/raytheon/rcm/rmrmgr/RMRManager.java +++ /dev/null @@ -1,249 +0,0 @@ -/** - * This software was developed and / or modified by Raytheon Company, - * pursuant to Contract DG133W-05-CQ-1067 with the US Government. - * - * U.S. EXPORT CONTROLLED TECHNICAL DATA - * This software product contains export-restricted data whose - * export/transfer/disclosure is restricted by U.S. law. Dissemination - * to non-U.S. persons whether in the United States or abroad requires - * an export license or other authorization. - * - * Contractor Name: Raytheon Company - * Contractor Address: 6825 Pine Street, Suite 340 - * Mail Stop B8 - * Omaha, NE 68106 - * 402.291.0100 - * - * See the AWIPS II Master Rights File ("Master Rights File.pdf") for - * further licensing information. - **/ -package com.raytheon.rcm.rmrmgr; - -import java.io.ByteArrayOutputStream; -import java.io.FileNotFoundException; -import java.io.InputStream; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Collection; -import java.util.HashMap; -import java.util.concurrent.DelayQueue; - -import javax.xml.bind.Marshaller; -import javax.xml.bind.Unmarshaller; - -import com.raytheon.rcm.event.ConfigEvent; -import com.raytheon.rcm.event.RadarEvent; -import com.raytheon.rcm.event.RadarEventAdapter; -import com.raytheon.rcm.event.RadarEventListener; -import com.raytheon.rcm.otrmgr.OTRManager; -import com.raytheon.rcm.rmr.ActiveRequest; -import com.raytheon.rcm.rmr.MultipleRequest; -import com.raytheon.rcm.rmr.RmrEvent; -import com.raytheon.rcm.rmr.RmrXml; -import com.raytheon.rcm.rmr.RmrXml.ActiveRequests; -import com.raytheon.rcm.server.Log; -import com.raytheon.rcm.server.RadarServer; - -public class RMRManager extends RadarEventAdapter implements Runnable { - - private RadarServer radarServer; - private DelayQueue activeRequests; - /* We can't use synchronized(activeRequests) { ... } to check for duplicate - * names. So... - */ - private HashMap activeRequestNames; - private OTRManager otrManager; - - public RMRManager(RadarServer radarServer) { - this.radarServer = radarServer; - activeRequests = new DelayQueue(); - activeRequestNames = new HashMap(); - - loadActiveRequests(); - - Thread t = new Thread(this, "RMR runner"); - t.setDaemon(true); - t.start(); - } - - private static final String activeRequestPersistName = - "ActiveMultipleRequests.xml"; - - /** Load active requests. This should only be called before the timer - * thread has started. - */ - private void loadActiveRequests() { - Collection currentActiveRequests = null; - try { - Unmarshaller u = RmrXml.getUnmarshaller(); - InputStream ins = radarServer.getConfiguration(). - getPersistedData(activeRequestPersistName); - synchronized (u) { - ActiveRequests arl = (ActiveRequests) u.unmarshal(ins); - currentActiveRequests = arl.list; - } - } catch (FileNotFoundException e) { - // silently ignore - } catch (Exception e) { - Log.errorf("Error loading active RMRs: %s", e); - } - - // Add persisted requests to active list - if (currentActiveRequests != null && currentActiveRequests.size() > 0) { - Log.eventf("Reactivating %d RMRs.", currentActiveRequests.size()); - for (ActiveRequest ar : currentActiveRequests) { - MultipleRequest mr = ar.getMultipleRequest(); - - // Input validation checks... - if (mr != null && ! activeRequestNames.containsKey(mr.getName())) { - activeRequestNames.put(mr.getName(), ar); - activeRequests.add(ar); - } - } - } - - // TODO: send notification... - } - - private void storeActiveRequests() { - try { - Marshaller m = RmrXml.getMarshaller(); - ByteArrayOutputStream outs = new ByteArrayOutputStream(); - ActiveRequests arl = new ActiveRequests(); - synchronized (activeRequestNames) { - arl.list.addAll(activeRequestNames.values()); - } - synchronized (m) { - m.marshal(arl, outs); - } - radarServer.getConfiguration(). - putPersistedData(activeRequestPersistName, outs.toByteArray()); - } catch (Exception e) { - Log.errorf("Error storing active RMRs: %s", e); - } - } - - public Collection getActiveRequests() { - synchronized (activeRequestNames) { - return new ArrayList(activeRequestNames.values()); - } - } - - public String activateRequest(MultipleRequest mr) { - synchronized (activeRequestNames) { - if (activeRequestNames.containsKey(mr.getName())) { - return String.format("A request named \"%s\" is already active", - mr.getName()); - } - - if (! mr.isSingle()) { - Log.eventf("RMR: Activating request \"%s\"", mr.getName()); - ActiveRequest ar = new ActiveRequest(mr); - activeRequestNames.put(mr.getName(), ar); - activeRequests.add(ar); - storeActiveRequests(); - activeRequestNames.notifyAll(); - fireChanged(); - } - } - - executeRequest(mr); - return null; - } - - public String cancelRequest(String requestName) { - synchronized (activeRequestNames) { - ActiveRequest ar = activeRequestNames.get(requestName); - if (ar != null) { - activeRequests.remove(ar); - activeRequestNames.remove(requestName); - storeActiveRequests(); - Log.eventf("RMR: Canceled request \"%s\"", ar.getMultipleRequest().getName()); - fireChanged(); - } else - return String.format("There is no active request named \"%s\"", - requestName); - } - return null; - } - - - @Override - public void handleConfigEvent(ConfigEvent event) { - // nothing - } - - @Override - public void handleRadarEvent(RadarEvent event) { - // nothing - } - - @Override - public void run() { - while (true) { - try { - doNextExecution(activeRequests.take()); - } catch (Exception e) { - Log.errorf("Error while executing RMR: %s", e); - } - } - - } - - private void doNextExecution(ActiveRequest ar) { - MultipleRequest mr = ar.getMultipleRequest(); - ar.setRemainingTime(ar.getRemainingTime() - mr.getInterval()); - if (ar.getRemainingTime() > 0) { - // TODO: or use last nextTime if it does not differ too much? - ar.setNextTime(System.currentTimeMillis() + - mr.getInterval() * 1000); - activeRequests.add(ar); - fireChanged(); - } else { - synchronized (activeRequestNames) { - activeRequestNames.remove(ar.getMultipleRequest().getName()); - Log.eventf("RMR: Request \"%s\" expired", mr.getName()); - fireChanged(); - } - } - storeActiveRequests(); - executeRequest(mr); - } - - private void executeRequest(MultipleRequest mr) { - OTRManager otrManager = getOTRManager(); - if (otrManager == null) - return; - - Log.eventf("RMR: Running one iteration of request \"%s\"", mr.getName()); - - for (MultipleRequest.Element elem : mr.getElements()) { - otrManager.sendOneTimeRequests(Arrays.asList(elem.getRadarIDs()), - Arrays.asList(elem.getRequest()), null); - } - } - - private OTRManager getOTRManager() { - if (otrManager == null) { - synchronized (this) { - if (otrManager == null) { - for (RadarEventListener l : radarServer.getListeners()) { - if (l instanceof OTRManager) { - otrManager = (OTRManager) l; - break; - } - } - if (otrManager == null) - Log.error("Cannot send RMR: OTR manager not available."); - } - } - } - - return otrManager; - } - - private void fireChanged() { - radarServer.handleNotificationEvent(new RmrEvent()); - } -} - diff --git a/RadarServer/com.raytheon.rcm.server/src/com/raytheon/rcm/rpsmgr/RPSListManager.java b/RadarServer/com.raytheon.rcm.server/src/com/raytheon/rcm/rpsmgr/RPSListManager.java deleted file mode 100755 index 817e5461c2..0000000000 --- a/RadarServer/com.raytheon.rcm.server/src/com/raytheon/rcm/rpsmgr/RPSListManager.java +++ /dev/null @@ -1,618 +0,0 @@ -/** - * This software was developed and / or modified by Raytheon Company, - * pursuant to Contract DG133W-05-CQ-1067 with the US Government. - * - * U.S. EXPORT CONTROLLED TECHNICAL DATA - * This software product contains export-restricted data whose - * export/transfer/disclosure is restricted by U.S. law. Dissemination - * to non-U.S. persons whether in the United States or abroad requires - * an export license or other authorization. - * - * Contractor Name: Raytheon Company - * Contractor Address: 6825 Pine Street, Suite 340 - * Mail Stop B8 - * Omaha, NE 68106 - * 402.291.0100 - * - * See the AWIPS II Master Rights File ("Master Rights File.pdf") for - * further licensing information. - **/ -package com.raytheon.rcm.rpsmgr; - -import java.io.File; -import java.io.FileOutputStream; -import java.io.IOException; -import java.io.PrintWriter; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.ListIterator; -import java.util.concurrent.ConcurrentHashMap; - -import com.raytheon.rcm.config.Configuration; -import com.raytheon.rcm.config.EndpointConfig; -import com.raytheon.rcm.config.LinkResource; -import com.raytheon.rcm.config.RadarConfig; -import com.raytheon.rcm.config.RadarType; -import com.raytheon.rcm.config.RcmUtil; -import com.raytheon.rcm.event.ConfigEvent; -import com.raytheon.rcm.event.ConfigEvent.Category; -import com.raytheon.rcm.event.RadarEvent; -import com.raytheon.rcm.event.RadarEventAdapter; -import com.raytheon.rcm.message.GSM; -import com.raytheon.rcm.message.MD; -import com.raytheon.rcm.message.Message; -import com.raytheon.rcm.message.ProductRequest; -import com.raytheon.rcm.products.ElevationInfo; -import com.raytheon.rcm.products.ProductInfo; -import com.raytheon.rcm.products.ProductInfo.Selector; -import com.raytheon.rcm.products.RadarProduct; -import com.raytheon.rcm.products.RadarProduct.Param; -import com.raytheon.rcm.request.Filter; -import com.raytheon.rcm.request.Request; -import com.raytheon.rcm.request.RpsList; -import com.raytheon.rcm.request.RpsListFormatter; -import com.raytheon.rcm.request.Sequence; -import com.raytheon.rcm.server.Log; -import com.raytheon.rcm.server.RadarServer; -import com.raytheon.rcm.server.StatusManager.RadarStatus; - -/* TODO: Log PRR messages for requests the mgr sent? (RPSHandler::handlePRR) - */ - -/** - * Manages current RPS lists and requests for changes to RPS lists. - * - *
- * 
- * SOFTWARE HISTORY
- * Date         Ticket#    Engineer    Description
- * ------------ ---------- ----------- --------------------------
- * 2009-04-22   #1693      D. Friedman Initial checkin
- * ...
- * 2013-01-31   DR 15458   D. Friedman Explicitly handle UNSPECIFIED_VCP.
- * 2014-02-03   DR 14762   D. Friedman Handle updated national RPS lists.
- * 2015-06-10   4498       nabowle     Rename Util->RcmUtil
- * 2015-09-08   DR 17944   D. Friedman Handle elevation list file updates.
- * 2016-01-20   5271       bkowal      Fix resource leak.
- * 
- * - */ -public class RPSListManager extends RadarEventAdapter { - - // All RPS list requests will use this for the sequence number. - private static final short RPS_LIST_REQUEST_SEQUENCE_NUMBER = 1; - - RadarServer radarServer; - - // on sendRpsList (not store), set. on (true) vcp change, remove. should - // persist... - ConcurrentHashMap currentRpsLists = new ConcurrentHashMap(); - - ConcurrentHashMap currentVcps = new ConcurrentHashMap(); - - /** - * Indicates RadarServer should generate AWIPS 1 style RPS lists. There does - * not seem to be a need to make this an actual configuration option. - */ - private static boolean generateCompatibilityRpsLists = true; - - public RPSListManager(RadarServer radarServer) { - this.radarServer = radarServer; - - /* - * Kludge to prevent lists from being purged. Should be removed when no - * longer needed. - */ - Thread t = new Thread(new Runnable() { - @Override - public void run() { - while (true) { - try { - Thread.sleep(1 * 60 * 60 * 1000); // one hour - regenerateCompatibilityRpsLists(); - } catch (InterruptedException e) { - // nothing - } - } - } - }); - t.setDaemon(true); - t.start(); - } - - public RpsList getCurrentRpsList(String radarID) { - return currentRpsLists.get(radarID); - } - - public String sendRpsList(String radarID, RpsList list, boolean store) { - String error = sendRpsList2(radarID, list, store); - if (error == null) - return null; - else { - Log.errorf("Cannot send RPS list to radar %s: %s", radarID, error); - return error; - } - } - - private String storeRpsList(RadarConfig rc, RpsList list) { - try { - radarServer.getConfiguration().setLocalRpsList(rc.getRadarID(), - list); - return null; - } catch (IOException e) { - return String.format("Cannot store RPS list for radar '%s': %s", - rc.getRadarID(), e.toString()); - } - } - - private String sendRpsList2(String radarID, RpsList list, boolean store) { - // TODO: these are errors too... - RadarConfig rc = radarServer.getConfiguration().getConfigForRadar( - radarID); - - if (rc == null) - return "Unknown radar"; - if (!rc.isDedicated()) - return "Not a dedicated radar"; - - if (store) { - String error = storeRpsList(rc, list); - // TODO: should continue to try to send. Need to keep track of - // multiple errors... - if (error != null) - return error; - } - - RadarStatus status = radarServer.getStatusManager().getRadarStatus( - radarID); - int opMode; - int currentVCP; - int[] gsmCuts; - try { - byte[] msg = status.getCurrentGSM(); - if (msg == null) - return "Not connected or no status information received yet"; - GSM gsm = GSM.decode(msg); - opMode = gsm.opMode; - currentVCP = gsm.vcp; - gsmCuts = gsm.cuts; - } catch (RuntimeException e) { - Log.errorf("Error reading GSM: %s", e); - // TODO: losing information - return "Error getting radar status"; - } - - int[] cuts = ElevationInfo.getInstance().getScanElevations(radarID, - currentVCP); - if (cuts == null && RcmUtil.getRadarType(rc) == RadarType.WSR) - cuts = gsmCuts; - - if (list.getVcp() != RpsList.UNSPECIFIED_VCP - && list.getVcp() != currentVCP) { - if (store) - return null; // TODO: Should warn instead. - else - return String.format("RPS list for VCP %d. Current VCP is %d", - list.getVcp(), currentVCP); - } - - list = (RpsList) list.clone(); - list.setVcp(currentVCP); - - list = getMergedRpsListForRadar(rc, opMode, currentVCP, cuts, list); - if (list != null) { - // TODO: Should persist this - currentRpsLists.put(rc.getRadarID(), (RpsList) list.clone()); - - sendList(rc, list); - - return null; - } else { - return "Could not create RPS list."; - } - } - - public void handleRadarEvent(RadarEvent event) { - if (event.getType() == RadarEvent.MESSAGE_RECEIVED - && Message.messageCodeOf(event.getMessageData()) == Message.GSM) { - RadarConfig rc = radarServer.getConfiguration().getConfigForRadar( - event.getRadarID()); - if (rc != null && rc.isDedicated()) - handleGSM(rc, event.getMessageData()); - } else if (event.getType() == RadarEvent.CONNECTION_UP) { - /* - * Forget the current VCP so that when the GSM is received, a list - * will always be sent. - */ - currentVcps.remove(event.getRadarID()); - } - } - - private void handleGSM(RadarConfig rc, byte[] gsmData) { - GSM gsm = (GSM) MD.decode(gsmData); - - Integer lastVcp = currentVcps.get(rc.getRadarID()); - if (lastVcp != null && gsm.vcp == lastVcp.intValue()) - return; - currentVcps.put(rc.getRadarID(), gsm.vcp); - - // TODO: if configuration changes, the persisted list may not be valid - RpsList rpsList = currentRpsLists.get(rc.getRadarID()); - - if (rpsList != null && rpsList.getVcp() != gsm.vcp) - rpsList = null; - - if (rpsList == null) { - int[] cuts = ElevationInfo.getInstance().getScanElevations( - rc.getRadarID(), gsm.vcp); - if (cuts == null && RcmUtil.getRadarType(rc) == RadarType.WSR) - cuts = gsm.cuts; - - rpsList = getMergedRpsListForRadar(rc, gsm.opMode, gsm.vcp, cuts, - null); - - // TODO: Should persist this (wouldn't need clone code) - if (rpsList != null) - currentRpsLists.put(rc.getRadarID(), (RpsList) rpsList.clone()); - } - - if (rpsList != null) - sendList(rc, rpsList); - } - - /** - * From AWIPS 1 ProductRequestList::addMiniVolumeProduct() (DCS 3411) - * - * For TDWR VCP80, 2 products might be generated in one volume (2 mini - * volumes) for some products. Parameter lowerLayer is used to specify these - * 2 products: 1 - generated at mid volume; 2 - generated at end volume - * (default) Product 2 is the default. Here we add product 1 for VCP80 -- - * implementation --------------------------------------------------------- - * Searches list for mini volume products, add a new entry with lowerLayer 1 - * CZ(35-38),ET(41),VIL(57),STI(58),HI(59),TVS(61),MD(141),DMD(149) - * - */ - /* - * This must be kept in sync with - * com.raytheon.rcm.request.RpsList.getAdditionalMiniVolumeProductCount. - */ - private void maybeAddSPGMiniVolumeProducts(RadarConfig rc, - ArrayList reqs, int vcp) { - if (vcp != 80) - return; - - /* - * We want to put these products at the end of the list so that they do - * not have priority over existing products. - */ - Selector sel = new Selector(); - sel.radarType = RadarType.TDWR; - - int end = reqs.size(); - for (int i = 0; i < end; ++i) { - Request r = reqs.get(i); - sel.code = (int) r.productCode; - RadarProduct prod = ProductInfo.getInstance().selectOne(sel); - if (prod != null && prod.params.contains(Param.MINI_VOLUME) - && r.getMiniVolume() != 1) { - Request r2 = r.clone(); - r2.setMiniVolume(1); - reqs.add(r2); - } - } - } - - private void sendList(RadarConfig rc, RpsList rpsList) { - Request[] reqs = rpsList.getRequests(); - for (int i = 0; i < reqs.length; i++) { - reqs[i].sequence = Sequence.next(rc.getRadarID()); - } - int maxSize = -1; - - RadarStatus status = radarServer.getStatusManager().getRadarStatus( - rc.getRadarID()); - if (status != null) { - LinkResource lr = status.getLinkResource(); - if (lr != null) - maxSize = lr.getMaxRpsListSize(); - } - - int requestCount = rpsList.getRequestCount(rc.getRadarID(), - RcmUtil.getRadarType(rc)); - - if (maxSize < 0) - Log.warnf("Cannot determine maximum RPS list size for %s", - rc.getRadarID()); - if (requestCount < 0) - Log.warnf("Cannot number of requests in RPS list for %s", - rc.getRadarID()); - if (maxSize >= 0 && requestCount >= 0 && requestCount > maxSize) { - int truncCount = 0; - int i; - for (i = reqs.length - 1; i >= 0; --i) { - truncCount += RpsList.getRequestCount(reqs[i], rc.getRadarID(), - rpsList.getVcp(), RcmUtil.getRadarType(rc)); - if (requestCount - truncCount <= maxSize) - break; - } - if (i < 0) - i = 0; - - int originalCount = requestCount; - requestCount = requestCount - truncCount; - Log.warnf( - "Truncated list for %s from %d entries (%d requests) to %d entries (%d requests)", - rc.getRadarID(), reqs.length, originalCount, i, - requestCount); - // TODO: Also need to send a message to Guardian - reqs = Arrays.copyOf(reqs, i); - rpsList = new RpsList(rpsList.getOpMode(), rpsList.getVcp(), reqs); - } else if (reqs.length < 1) { - Log.warnf("Sending empty RPS list to %s", rc.getRadarID()); - } - - Log.eventf("%s: Sending RPS list with %d entries (%d requests)", - rc.getRadarID(), rpsList.getRequests().length, requestCount); - byte[] msg = ProductRequest.encode(rpsList.getRequests()); - radarServer.getConnectionManager().sendMessageToRadar(rc.getRadarID(), - msg); - - if (generateCompatibilityRpsLists) - generateCompatibilityRpsList(rc, rpsList); - } - - private Object listGenerationLock = new Object(); - - /** - * Generate an AWIPS 1 style RPS list. Some AWIPS 1 applications (such as - * FSI) need to know the current RPS list. The lists will be created in - * /lists/. - */ - private void generateCompatibilityRpsList(RadarConfig rc, RpsList rpsList) { - try { - EndpointConfig ec = radarServer.getConfiguration() - .getEndpointConfig(); - if (ec == null) - return; - - File dir = new File(ec.getArchiveRoot()); - if (ec.getPrefixPathWithRadar() != null - && ec.getPrefixPathWithRadar()) - dir = new File(dir, "radar"); - dir = new File(dir, "lists"); - if (!dir.exists()) - dir.mkdirs(); - File path = new File(dir, rc.getRadarID().toUpperCase() - + ".current"); - - synchronized (listGenerationLock) { - - FileOutputStream fo = new FileOutputStream(path); - try { - PrintWriter p = new PrintWriter(fo); - RpsListFormatter.formatAwips1RpsList(rpsList, - path.getName(), p); - p.flush(); - } finally { - fo.close(); - } - - // It us unknown if any application rely on the currentVCP file. - path = new File(dir, rc.getRadarID().toUpperCase() - + ".currentVCP"); - fo = new FileOutputStream(path); - try (PrintWriter p = new PrintWriter(fo)) { - p.printf("VCP%d\n", rpsList.getVcp()); - p.flush(); - } finally { - fo.close(); - } - - } - - } catch (Exception e) { - Log.errorf("Error generating AWIPS 1 compatibility RPS list: %s", e); - } - } - - private void regenerateCompatibilityRpsLists() { - /* - * Kludge to prevent lists from being purged. Should be removed when no - * longer needed. - */ - - if (generateCompatibilityRpsLists) { - Configuration config = radarServer.getConfiguration(); - for (String radarID : config.getConfiguredRadarList()) { - RadarConfig rc = config.getConfigForRadar(radarID); - RpsList rpsList = currentRpsLists.get(radarID); - if (rc != null & rpsList != null) - generateCompatibilityRpsList(rc, rpsList); - } - } - } - - /** - * Constructs a an RPS list for the given parameters, merging national and - * local lists as appropriate. - * - * @param rc - * @param opMode - * @param vcp - * @param elevList - * list of elevation angles used for template processing and - * duplicate filtering - * @param local - * if not null, overrides the site-local list that - * would normally be used - * @return the merged RPS list, or null if no RPS list - * resources were found - */ - private RpsList getMergedRpsListForRadar(RadarConfig rc, int opMode, - int vcp, int[] elevList, RpsList local) { - - Configuration config = radarServer.getConfiguration(); - RpsList natl = null; - if (rc.isCollectionEnabled()) - natl = config.getNationalRpsList(rc.getRadarID(), opMode, vcp, - elevList); - - if (local == null) - local = config.getLocalRpsList(rc.getRadarID(), opMode, vcp, - elevList); - - if (natl == null && local == null) { - RadarType radarType = RcmUtil.getRadarType(rc); - - /* - * We do not currently send RPS lists to ASRs so not having a list - * in this case should not be considered an error. - */ - if (radarType != RadarType.ASR && radarType == RadarType.ARSR) - Log.errorf("No RPS lists defined for radar %s mode=%d vcp=%d", - rc.getRadarID(), opMode, vcp); - - return null; - } - - ArrayList reqs = new ArrayList(); - /* - * The duplicate filter code below favors entries earlier in the list. - * Entries from the national list are supposed to have priority (ref: - * SMM -- Does that mean temporal priority or max-list-size-cutoff - * priority?), so they are added first. - */ - if (natl != null) - reqs.addAll(Arrays.asList(natl.getRequests())); - if (local != null) - reqs.addAll(Arrays.asList(local.getRequests())); - - validateRPSEntries(reqs); - maybeAddSPGMiniVolumeProducts(rc, reqs, vcp); - - /* - * AWIPS 1 disabled duplicate merging for TDWRs because some requests in - * the national RPS list would disappear. This was due to incorrect - * handling of multi-elevation requests. AWIPS 2 handles multi-elevation - * request correctly. (See DCS 3472, DRs 19386, 20239, and 20244.) - * - * if (vcp == 80 || vcp == 90) elevList = null; - */ - - RadarType radarType = RcmUtil.getRadarType(rc); - - iLoop: for (int i = 0; i < reqs.size(); ++i) { - Request ri = reqs.get(i); - for (int j = i + 1; j < reqs.size(); ++j) { - Request rj = reqs.get(j); - if (ri.productCode == rj.productCode) { - Filter filter = Filter.getFilterForCode(ri.productCode); - Request mr = filter.mergeRequests(ri, rj, elevList, - radarType); - if (mr == ri) { - reqs.remove(j); - --j; - } else if (mr == rj) { - /* - * Move the "larger" request to appear earlier in the - * list. Reason: It would be strange to delete a - * single-elevation request from the list only to have a - * later multi-elevation request that subsumes it to be - * lost when the list is truncated to fix the maximum - * number of products. - * - * On the other hand, this could cause products listed - * before index j to be lost because the RPG counts each - * elevation in a multi-elevation request as a separate - * request. - */ - reqs.set(i, rj); - reqs.remove(j); - --i; - continue iLoop; - } - } - } - } - - return new RpsList(opMode, vcp, reqs.toArray(new Request[0])); - } - - /** - * Check RPS list entries for correctness. 1. Ensures the repeat count is -1 - * and volume scan selection is 'current'. 2. Sets the sequence number to - * RPS_LIST_REQUEST_SEQUENCE_NUMBER. - */ - private void validateRPSEntries(ArrayList reqs) { - int nOTR = 0; - int nZero = 0; - - ListIterator l = reqs.listIterator(); - while (l.hasNext()) { - Request req = l.next().clone(); - req.sequence = RPS_LIST_REQUEST_SEQUENCE_NUMBER; - if (req.count != Request.CONTINUOUS - || req.getVolumeScanSelection() != Request.SELECT_CURRENT) { - ++nOTR; - req.count = Request.CONTINUOUS; - req.selectCurrent(); - } - if (req.interval < 1) { - /* - * An interval of zero in the RPS list will kill the p_server - * process on the RPG. - */ - req.interval = 1; - ++nZero; - } - l.set(req); - } - if (nOTR > 0) - Log.warnf("Had to fix %d OTR-style entries in the RPS list.", nOTR); - if (nZero > 0) - Log.warnf("Had to fix %d zero-interval entries in the RPS list.", - nZero); - } - - @Override - public void handleConfigEvent(ConfigEvent event) { - if (event.getRadarID() != null) { - RadarConfig oldCfg = event.getOldConfig(); - RadarConfig newCfg = event.getNewConfig(); - if (oldCfg != null - && newCfg != null - && newCfg.isDedicated() - && (oldCfg.isCollectionEnabled() != newCfg - .isCollectionEnabled())) { - resetRpsListForRadar(newCfg); - } - } else if (event.getCategory() == Category.NATIONAL_RPS_LISTS - || event.getCategory() == Category.ELEVATION_LISTS) { - boolean all = event.getCategory() == Category.ELEVATION_LISTS; - Configuration config = radarServer.getConfiguration(); - for (String radarID : config.getConfiguredRadarList()) { - RadarConfig rc = config.getConfigForRadar(radarID); - if (all || rc.isCollectionEnabled()) { - resetRpsListForRadar(rc); - } - } - } - } - - private void resetRpsListForRadar(RadarConfig rc) { - String radarID = rc.getRadarID(); - RadarStatus status = radarServer.getStatusManager().getRadarStatus( - radarID); - byte[] gsmData = null; - if (status != null) - gsmData = status.getCurrentGSM(); - currentVcps.remove(radarID); - currentRpsLists.remove(radarID); - if (gsmData != null) { - handleGSM(rc, gsmData); - } else { - Log.debugf("RPS-relevant configuration changed for %s, but " - + "it is not connected. Cannot send a list now.", radarID); - } - } -} diff --git a/RadarServer/com.raytheon.rcm.server/src/com/raytheon/rcm/server/Awips2Endpoint.java b/RadarServer/com.raytheon.rcm.server/src/com/raytheon/rcm/server/Awips2Endpoint.java deleted file mode 100644 index 2ef99020e6..0000000000 --- a/RadarServer/com.raytheon.rcm.server/src/com/raytheon/rcm/server/Awips2Endpoint.java +++ /dev/null @@ -1,238 +0,0 @@ -/** - * This software was developed and / or modified by Raytheon Company, - * pursuant to Contract DG133W-05-CQ-1067 with the US Government. - * - * U.S. EXPORT CONTROLLED TECHNICAL DATA - * This software product contains export-restricted data whose - * export/transfer/disclosure is restricted by U.S. law. Dissemination - * to non-U.S. persons whether in the United States or abroad requires - * an export license or other authorization. - * - * Contractor Name: Raytheon Company - * Contractor Address: 6825 Pine Street, Suite 340 - * Mail Stop B8 - * Omaha, NE 68106 - * 402.291.0100 - * - * See the AWIPS II Master Rights File ("Master Rights File.pdf") for - * further licensing information. - **/ -package com.raytheon.rcm.server; - -import java.io.ByteArrayInputStream; -import java.io.File; -import java.io.FileOutputStream; -import java.io.IOException; -import java.io.InputStream; -import java.nio.BufferUnderflowException; -import java.nio.ByteBuffer; - -import org.itadaki.bzip2.BZip2InputStream; - -import com.raytheon.rcm.config.RadarConfig; -import com.raytheon.rcm.config.RadarType; -import com.raytheon.rcm.config.RcmUtil; -import com.raytheon.rcm.event.ConfigEvent; -import com.raytheon.rcm.event.ConfigEvent.Category; -import com.raytheon.rcm.event.RadarEvent; -import com.raytheon.rcm.event.RadarEventAdapter; -import com.raytheon.rcm.message.GraphicProduct; -import com.raytheon.rcm.message.GraphicProduct.PDB; -import com.raytheon.rcm.message.Message; -import com.raytheon.rcm.message.MessageFormatException; -import com.raytheon.rcm.products.ProductInfo; -import com.raytheon.rcm.products.ProductInfo.Selector; -import com.raytheon.rcm.products.RadarProduct; - -/** - *

- * A radar server component that delivers radar products to an EDEX file - * endpoint. - * - *

- * This class is obsoleted by DataArchiveEndpoint. - * - *

- *
- * SOFTWARE HISTORY
- * Date         Ticket#    Engineer    Description
- * ------------ ---------- ----------- --------------------------
- * ...
- * 2014-02-03   DR 14762   D. Friedman Refactor config events.
- * 2015-07-13   DR 17672   D. Friedman Only decompress products documented to support compression
- * 2015-07-20   4343       nabowle     Util is now RcmUtil.
- * 
- */ -public class Awips2Endpoint extends RadarEventAdapter { - - RadarServer radarServer; - - File radarEndpointPath; - - String radarEndpointPathString; - - public Awips2Endpoint(RadarServer radarServer) { - this.radarServer = radarServer; - - Log.eventf("Compressed products will %sbe decompressed", radarServer - .getConfiguration().isDecompressProducts() ? "" : "not "); - - updateConfig(); - } - - private void updateConfig() { - String pathName = radarServer.getConfiguration().getEdexEndpoint(); - File newPath = null; - - if (pathName != null && pathName.length() > 0) { - newPath = new File(pathName); - if (!newPath.exists() || !newPath.isDirectory()) { - Log - .errorf( - "EDEX endpoint '%s' does not exist or is not a directory", - newPath); - newPath = null; - } else if (!newPath.canWrite()) { - Log.errorf("EDEX endpoint '%s' is not writable", newPath); - newPath = null; - } - } else { - Log.errorf("EDEX endpoint not defined."); - } - radarEndpointPath = newPath; - } - - @Override - public void handleRadarEvent(RadarEvent event) { - if (event.getType() == RadarEvent.MESSAGE_RECEIVED) { - - if (radarEndpointPath == null) { - updateConfig(); - return; - } - - byte[] msg = event.getMessageData(); - int code = Message.messageCodeOf(msg); - RadarConfig rc = radarServer.getConfiguration().getConfigForRadar( - event.getRadarID()); - - - // Send everything to EDEX except for the product list. - if (code == Message.PRODUCT_LIST) - return; - - msg = maybeDecompressProduct(msg, rc); - - // where do I put the temp files? - String name; - try { - name = String.format("%s.%s.%s", event.getRadarID(), code, - System.currentTimeMillis()); - } catch (Exception e) { - name = Long.toString(System.currentTimeMillis()); - } - String baseName = name; - File outPath = null; - int seq = 0; - FileOutputStream fo; - - try { - do { - outPath = new File(radarEndpointPath, name); - // TODO: test IOException if fails to create - if (outPath.createNewFile()) - break; - name = String.format("%s.%s", baseName, ++seq); - } while (true); - - fo = new FileOutputStream(outPath); - } catch (IOException e) { - Log.errorf("Failed to create or open '%s': %s", outPath, e); - outPath.mkdir(); - return; - } - - try { - try { - fo.write(msg); - fo.close(); - fo = null; - } catch (IOException e) { - Log.errorf("Failed to write to '%s': %s", outPath, e); - } - Log.eventf("Stored message in %s", outPath); - } finally { - if (fo != null) { - try { - fo.close(); - } catch (IOException e) { - // nothing - } - } - } - - // TODO: tmpPath.renameTo(dest).. - } - } - - @Override - public void handleConfigEvent(ConfigEvent event) { - if (event.getCategory() == Category.GLOBAL_CONFIG) - updateConfig(); - } - - private byte[] maybeDecompressProduct(byte[] msg, RadarConfig radarConfig) { - if (!radarServer.getConfiguration().isDecompressProducts()) - return msg; - - try { - - int code = Message.messageCodeOf(msg); - RadarType radarType = radarConfig != null ? RcmUtil - .getRadarType(radarConfig) : null; - RadarProduct rp = ProductInfo.getInstance().selectOne( - new Selector(radarType, null, code, null)); - if (rp != null && rp.compressionAllowed) { - PDB pdb = GraphicProduct.pdbOfMessage(msg); - if (pdb.isBzip2Compressed()) { - Log.event("decompressing product"); - int uncompressedSize = pdb.getUncompressedSize(); - byte[] uncompressed; - try { - InputStream ins = new ByteArrayInputStream(msg, 120, - msg.length - 120); - ins = new BZip2InputStream(ins, false); - // ByteArrayOutputStream outs = new - // ByteArrayOutputStream(uncompressedSize); - uncompressed = new byte[uncompressedSize]; - ins.read(uncompressed); - } catch (IOException e) { - Log.errorf("Error decompressing product: %s", e); - return msg; - } - byte[] result = new byte[120 + uncompressed.length]; - System.arraycopy(msg, 0, result, 0, 120); - System.arraycopy(uncompressed, 0, result, 120, - uncompressed.length); - - ByteBuffer buf = ByteBuffer.wrap(result); - buf.putInt(8, result.length); // Modify size of entire - // product - buf.putShort(100, (short) 0); // Mark as uncompressed - - msg = result; - } - } - - } catch (MessageFormatException e) { - /* - * Probably because this a product without a PDB. This is not an - * error. - */ - } catch (BufferUnderflowException e) { - // See above - } - - return msg; - } -} diff --git a/RadarServer/com.raytheon.rcm.server/src/com/raytheon/rcm/server/ConnectionManager.java b/RadarServer/com.raytheon.rcm.server/src/com/raytheon/rcm/server/ConnectionManager.java deleted file mode 100755 index 355ca37335..0000000000 --- a/RadarServer/com.raytheon.rcm.server/src/com/raytheon/rcm/server/ConnectionManager.java +++ /dev/null @@ -1,49 +0,0 @@ -/** - * This software was developed and / or modified by Raytheon Company, - * pursuant to Contract DG133W-05-CQ-1067 with the US Government. - * - * U.S. EXPORT CONTROLLED TECHNICAL DATA - * This software product contains export-restricted data whose - * export/transfer/disclosure is restricted by U.S. law. Dissemination - * to non-U.S. persons whether in the United States or abroad requires - * an export license or other authorization. - * - * Contractor Name: Raytheon Company - * Contractor Address: 6825 Pine Street, Suite 340 - * Mail Stop B8 - * Omaha, NE 68106 - * 402.291.0100 - * - * See the AWIPS II Master Rights File ("Master Rights File.pdf") for - * further licensing information. - **/ -package com.raytheon.rcm.server; - - -/** - * High-level interface to the RPG communication services used by various - * components (RadarEventListeners) of the Radar Server. - */ -public interface ConnectionManager { - /** Requests a connection to an RPG. - *

The connection attempt may be delayed if all dial-out resources are - * in use. - * @param radarID specifies the RPG - */ - public void connectRadar(String radarID); - /** Disconnects from an RPG. - * - * @param radarID specifies the RPG - */ - public void disconnectRadar(String radarID); - /** - * Send a message to an RPG. - * - * @param radarID The RPG - * @param msg A message encoded in Nexrad format. If either the source or - * destination ID is zero, it will be changed to the appropriate value. - * {@code msg} must not be immutable in this case as its contents will be - * changed. - */ - public void sendMessageToRadar(String radarID, byte[] msg); -} diff --git a/RadarServer/com.raytheon.rcm.server/src/com/raytheon/rcm/server/ConnectionManagerImpl.java b/RadarServer/com.raytheon.rcm.server/src/com/raytheon/rcm/server/ConnectionManagerImpl.java deleted file mode 100755 index d9e978b8a1..0000000000 --- a/RadarServer/com.raytheon.rcm.server/src/com/raytheon/rcm/server/ConnectionManagerImpl.java +++ /dev/null @@ -1,340 +0,0 @@ -/** - * This software was developed and / or modified by Raytheon Company, - * pursuant to Contract DG133W-05-CQ-1067 with the US Government. - * - * U.S. EXPORT CONTROLLED TECHNICAL DATA - * This software product contains export-restricted data whose - * export/transfer/disclosure is restricted by U.S. law. Dissemination - * to non-U.S. persons whether in the United States or abroad requires - * an export license or other authorization. - * - * Contractor Name: Raytheon Company - * Contractor Address: 6825 Pine Street, Suite 340 - * Mail Stop B8 - * Omaha, NE 68106 - * 402.291.0100 - * - * See the AWIPS II Master Rights File ("Master Rights File.pdf") for - * further licensing information. - **/ -package com.raytheon.rcm.server; - -import java.nio.ByteBuffer; -import java.util.ArrayDeque; -import java.util.HashMap; - -import com.raytheon.rcm.config.Configuration; -import com.raytheon.rcm.config.LinkResource; -import com.raytheon.rcm.config.LinkType; -import com.raytheon.rcm.config.RadarConfig; -import com.raytheon.rcm.event.ConfigEvent; -import com.raytheon.rcm.event.RadarEvent; -import com.raytheon.rcm.event.RadarEventAdapter; -import com.raytheon.rcm.message.Message; - -/** - *

- *
- * SOFTWARE HISTORY
- * Date         Ticket#    Engineer    Description
- * ------------ ---------- ----------- --------------------------
- * 2016-05-25   DR 18800   jdynina     Removed alerting
- * 2016-05-15   DCS18795   jdynina     Added CPM
- * 
- * - */ - -public class ConnectionManagerImpl extends RadarEventAdapter implements - ConnectionManager, StatusManager { - - private enum State { - UNCONNECTED, CONNECTING, CONNECTED - } - - private static class Status implements StatusManager.RadarStatus { - String radarID; - State state = State.UNCONNECTED; - LinkType linkTypeUsed; - LinkResource linkResource; - // ArrayDeque messageQueue = new ArrayDeque(); - byte[] currentGSM; - byte[] currentCPM; - byte[] currentPTL; - byte[] lastGSM; - byte[] lastCPM; - byte[] lastPTL; - - public Status(String radarID) { - this.radarID = radarID; - } - - void setUnconnected() { - state = State.UNCONNECTED; - currentGSM = currentCPM = currentPTL = null; - } - - @Override - public byte[] getCurrentGSM() { - return currentGSM; - } - - @Override - public byte[] getCurrentCPM() { - return currentCPM; - } - - @Override - public byte[] getCurrentPTL() { - return currentPTL; - } - - @Override - public byte[] getLastGSM() { - return lastGSM; - } - - @Override - public byte[] getLastCPM() { - return lastCPM; - } - - @Override - public byte[] getLastPTL() { - return lastPTL; - } - - @Override - public LinkResource getLinkResource() { - return linkResource; - } - } - - protected static class InterfaceStatus { - LinkType linkType; - int linesLeft; - - public InterfaceStatus(LinkType linkType, Configuration config) { - this.linkType = linkType; - linesLeft = 1; - } - - boolean isLineAvailable() { - return linesLeft > 0; - } - - void reserveLine() { - --linesLeft; - } - - void releaseLine() { - ++linesLeft; - } // TODO: vs max. - } - - protected RadarServer radarServer; - protected LinkManager linkManager; - protected HashMap st = new HashMap(); - protected HashMap ifcSt = new HashMap(); - protected ArrayDeque connectReqQueue = new ArrayDeque(); - - private ConnectionManagerImpl() { - } - - public ConnectionManagerImpl(RadarServer radarServer, - LinkManager linkManager) { - this.radarServer = radarServer; - this.linkManager = linkManager; - } - - public void handleRadarEvent(RadarEvent event) { - Status status = getStatus(event.getRadarID()); - if (status == null) - return; // TODO: log? - - if (event.getType() == RadarEvent.CONNECTION_UP) { - status.state = State.CONNECTED; - status.linkResource = event.getLinkResource(); - } else if (event.getType() == RadarEvent.CONNECTION_DOWN - || event.getType() == RadarEvent.CONNECTION_ATTEMPT_FAILED) { - - // status.state = State.UNCONNECTED; - status.setUnconnected(); - - Configuration config = getConfiguration(); - - InterfaceStatus ifcStatus = getInterfaceStatus(status.linkTypeUsed); - if (ifcStatus == null) - return; // TODO: log? - { - // see where .reserveLine() is used - RadarConfig rc = config.getConfigForRadar(event.getRadarID()); - if (rc != null && !rc.isDedicated()) - synchronized (ifcStatus) { - ifcStatus.releaseLine(); - } - } - - // synchronized waitQueue - for (String radarID : connectReqQueue) { - Status otherStatus = getStatus(radarID); - RadarConfig rc = config.getConfigForRadar(radarID); - if (otherStatus == null || rc == null) - continue; - if (rc.getLinkType() == ifcStatus.linkType) { - // ups.. it's not a dequeue.. or we need a separate queue - // for each interface - connectReqQueue.remove(radarID); - connectRadar(radarID); - break; - } - } - } else if (event.getType() == RadarEvent.MESSAGE_RECEIVED) { - byte[] msg = event.getMessageData(); - int code = Message.messageCodeOf(msg); - - switch (code) { - case Message.GSM: - status.currentGSM = status.lastGSM = msg; - break; - case Message.COMMAND_PARAMETER_MESSAGE: - status.currentCPM = status.lastCPM = msg; - break; - case Message.PRODUCT_LIST: - status.currentPTL = status.lastPTL = msg; - break; - default: - // nothing - } - } - } - - @Override - public void connectRadar(String radarID) { - // TODO: Ugh, now I'm duplicating the checks in LinkManager - Status status = getStatus(radarID); - RadarConfig rc = getConfiguration().getConfigForRadar(radarID); - - if (status != null && rc != null) { - // TODO: synch global or status? - if (status.state == State.CONNECTED - || status.state == State.CONNECTING) - return; - else if (status.state == State.UNCONNECTED) { - LinkType linkType = rc.getLinkType(); - if (linkType != null) { - InterfaceStatus ifcStatus = getInterfaceStatus(linkType); - if (ifcStatus == null) - return; // TODO: what is this? - boolean connect = false; - synchronized (ifcStatus) { - /* - * Logic/design shortcut: If a dedicated connection, - * just ignore the line count. TCP connections are - * 'unlimited' anyway and there are no longer dedicated - * X25 connections. - * - * Note the second rc.isDedicated check below. - */ - if (ifcStatus.isLineAvailable() || rc.isDedicated()) { - status.state = State.CONNECTING; - status.linkTypeUsed = linkType; - if (!rc.isDedicated()) - ifcStatus.reserveLine(); - connect = true; - } - } - // Do not run this inside synchronized(...) - if (connect) - getLinkManager().connectRadar(radarID); - else - connectReqQueue.addLast(radarID); - } else { - // TODO: this is another duplicated check and error - Log.errorf("Link type for radar '%s' not configured", - radarID); - } - } - } else { - Log.errorf("Attempt to access unconfigured radar '%s'", radarID); - return; - } - } - - @Override - public void disconnectRadar(String radarID) { - getLinkManager().disconnectRadar(radarID); - } - - /** - * Sends a message to the specified radar. - * - * @param msg - * A Nexrad message. If either the source or destination ID is - * zero, it will be changed to the appropriate value. - * msg must not be immutable in this case as its - * contents will be changed. - */ - @Override - public void sendMessageToRadar(String radarID, byte[] msg) { - Status status = getStatus(radarID); - if (status != null) { - Configuration config = getConfiguration(); - ByteBuffer buf = ByteBuffer.wrap(msg); - if (buf.getShort(12) == 0) - buf.putShort(12, (short) config.getPupId()); - if (buf.getShort(14) == 0) - buf.putShort(14, (short) config.getConfigForRadar(radarID) - .getNexradID()); - getLinkManager().sendMessageToRadar(radarID, msg); - } else { - Log.errorf("Attempt to access unconfigured radar '%s'", radarID); - return; - } - } - - @Override - public RadarStatus getRadarStatus(String radarID) { - return getStatus(radarID); - } - - protected Configuration getConfiguration() { - return radarServer.getConfiguration(); - } - - protected LinkManager getLinkManager() { - return linkManager; - } - - protected Status getStatus(String radarID) { - Status status = st.get(radarID); - if (status == null) { - RadarConfig rc = getConfiguration().getConfigForRadar(radarID); - if (rc != null) { - status = new Status(radarID); - st.put(radarID, status); - } - } - return status; - } - - protected InterfaceStatus getInterfaceStatus(LinkType linkType) { - InterfaceStatus status = ifcSt.get(linkType); - if (status == null) { - if (linkType != null) { - status = new InterfaceStatus(linkType, getConfiguration()); - ifcSt.put(linkType, status); - } - } - return status; - } - - @Override - public void handleConfigEvent(ConfigEvent event) { - String radarID = event.getRadarID(); - if (radarID != null) { - if (event.getNewConfig() == null) - disconnectRadar(radarID); - } - } - -} diff --git a/RadarServer/com.raytheon.rcm.server/src/com/raytheon/rcm/server/DedicatedRadarActivator.java b/RadarServer/com.raytheon.rcm.server/src/com/raytheon/rcm/server/DedicatedRadarActivator.java deleted file mode 100755 index 1e322ffa1a..0000000000 --- a/RadarServer/com.raytheon.rcm.server/src/com/raytheon/rcm/server/DedicatedRadarActivator.java +++ /dev/null @@ -1,238 +0,0 @@ -/** - * This software was developed and / or modified by Raytheon Company, - * pursuant to Contract DG133W-05-CQ-1067 with the US Government. - * - * U.S. EXPORT CONTROLLED TECHNICAL DATA - * This software product contains export-restricted data whose - * export/transfer/disclosure is restricted by U.S. law. Dissemination - * to non-U.S. persons whether in the United States or abroad requires - * an export license or other authorization. - * - * Contractor Name: Raytheon Company - * Contractor Address: 6825 Pine Street, Suite 340 - * Mail Stop B8 - * Omaha, NE 68106 - * 402.291.0100 - * - * See the AWIPS II Master Rights File ("Master Rights File.pdf") for - * further licensing information. - **/ -package com.raytheon.rcm.server; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.Timer; -import java.util.TimerTask; - -import com.raytheon.rcm.config.Configuration; -import com.raytheon.rcm.config.RadarConfig; -import com.raytheon.rcm.event.ConfigEvent; -import com.raytheon.rcm.event.RadarEvent; -import com.raytheon.rcm.event.RadarEventAdapter; - -/** - * Keeps dedicated RPGs connected. - */ -public class DedicatedRadarActivator extends RadarEventAdapter implements - Runnable { - - enum State { - UNCONNECTED, CONNECTING, CONNECTED, RETRY - } - - private static class RadarStatus { - public String radarID; - - public long nextTime = -1; - - public State state = State.UNCONNECTED; - - public RadarStatus(String radarID) { - this.radarID = radarID; - } - } - - private static final int RETRY_WAIT_TIME = 30 * 1000; - - private static final int RECONNECT_WAIT_TIME = 2 * 1000; - - protected RadarServer radarServer; - - protected HashMap radarState = new HashMap(); - - private Thread t; - - public DedicatedRadarActivator(RadarServer radarServer) { - this.radarServer = radarServer; - - addDedicatedRadars(); - - t = new Thread(this); - t.setDaemon(true); - t.setName("RadarActivator"); - t.start(); - - addKeepAliveTimer(); - - checkRadars(); - } - - protected void addDedicatedRadars() { - Configuration config = radarServer.getConfiguration(); - synchronized (radarState) { - HashMap newState = new HashMap(); - ArrayList debugList = new ArrayList(); - for (String radarID : config.getConfiguredRadarList()) { - RadarConfig rc = config.getConfigForRadar(radarID); - if (rc.getActivation() == RadarConfig.ACTIVATE_ALWAYS) { - RadarStatus status = radarState.get(radarID); - if (status == null) - status = new RadarStatus(radarID); - newState.put(radarID, status); - debugList.add(radarID); - } - } - radarState.clear(); - radarState.putAll(newState); - } - } - - protected void checkRadars() { - long now = System.currentTimeMillis(); - Configuration config = radarServer.getConfiguration(); - - synchronized (radarState) { - for (RadarStatus rs : radarState.values()) { - RadarConfig rc = config.getConfigForRadar(rs.radarID); - - if (rc == null) { - radarState.remove(rs.radarID); - continue; - } - - if (rc.getActivation() == RadarConfig.ACTIVATE_ALWAYS) { - if (rs.state == State.UNCONNECTED - || (rs.state == State.RETRY && now >= rs.nextTime)) - tryConnect(rs); - } else { - rs.nextTime = -1; - } - } - - radarState.notify(); - } - } - - private void tryConnect(RadarStatus rs) { - rs.nextTime = -1; - rs.state = State.CONNECTING; - radarServer.getConnectionManager().connectRadar(rs.radarID); - } - - private void retryConnect(RadarStatus rs) { - rs.nextTime = System.currentTimeMillis() + RETRY_WAIT_TIME; - rs.state = State.RETRY; - } - - @Override - public void handleRadarEvent(RadarEvent event) { - if (event.getType() == RadarEvent.MESSAGE_RECEIVED) - return; - - synchronized (radarState) { - RadarStatus rs = radarState.get(event.getRadarID()); - if (rs == null) - return; - if (event.getType() == RadarEvent.CONNECTION_UP) { - rs.state = State.CONNECTED; - rs.nextTime = -1; - } else if (event.getType() == RadarEvent.CONNECTION_DOWN) { - rs.state = State.UNCONNECTED; - rs.nextTime = System.currentTimeMillis() + RECONNECT_WAIT_TIME; - } else if (event.getType() == RadarEvent.CONNECTION_ATTEMPT_FAILED) { - retryConnect(rs); - } else - return; - radarState.notify(); - } - } - - @Override - public void run() { - // There is no 'shutdown' event, so this has no exit condition. - while (true) { - try { - long nextTime = -1; - synchronized (radarState) { - for (RadarStatus rs : radarState.values()) { - if (rs.nextTime != -1 - && (nextTime == -1 || rs.nextTime < nextTime)) - nextTime = rs.nextTime; - } - if (nextTime == -1) { - // add long wait time here so that if it goes down, it - // will try again after that period of time - // 3 minutes = (60 * 3 * 1000) - radarState.wait(60000); - } else { - long waitTime = nextTime != -1 ? nextTime - - System.currentTimeMillis() : 0; - if (waitTime > 0) - radarState.wait(waitTime); - } - } - checkRadars(); - } catch (Throwable e) { - Log.eventf("%s", "Caught exception while running" + e); - } - } - } - - @Override - public void handleConfigEvent(ConfigEvent event) { - String radarID = event.getRadarID(); - if (radarID == null) - return; // Nothing in the global config affects us - - synchronized (radarState) { - RadarStatus status = radarState.get(radarID); - RadarConfig oldCfg = event.getOldConfig(); - RadarConfig newCfg = event.getNewConfig(); - if (status != null - && oldCfg != null - && newCfg != null - && (oldCfg.getActivation() == RadarConfig.ACTIVATE_ALWAYS) != (newCfg - .getActivation() == RadarConfig.ACTIVATE_ALWAYS)) { - radarServer.getConnectionManager().disconnectRadar(radarID); - } - if (newCfg.getActivation() != RadarConfig.ACTIVATE_ALWAYS) - return; - } - addDedicatedRadars(); - checkRadars(); - } - - private void addKeepAliveTimer() { - Timer timer = new Timer("RadarServerKeepAliveTimer", true); - TimerTask timerTask = new TimerTask() { - @Override - public void run() { - try { - if (!t.isAlive()) { - Log.eventf("%s", - "Radar activator thread died, restarting..."); - t = new Thread(this); - t.setName("RadarActivator"); - t.setDaemon(true); - t.start(); - } - } catch (Throwable e) { - Log.eventf("%s", - "Caught exception while trying to restart the radar activator thread" - + e); - } - } - }; - timer.schedule(timerTask, 0, 60000); - } -} diff --git a/RadarServer/com.raytheon.rcm.server/src/com/raytheon/rcm/server/EventLogger.java b/RadarServer/com.raytheon.rcm.server/src/com/raytheon/rcm/server/EventLogger.java deleted file mode 100755 index 684e2bc732..0000000000 --- a/RadarServer/com.raytheon.rcm.server/src/com/raytheon/rcm/server/EventLogger.java +++ /dev/null @@ -1,264 +0,0 @@ -/** - * This software was developed and / or modified by Raytheon Company, - * pursuant to Contract DG133W-05-CQ-1067 with the US Government. - * - * U.S. EXPORT CONTROLLED TECHNICAL DATA - * This software product contains export-restricted data whose - * export/transfer/disclosure is restricted by U.S. law. Dissemination - * to non-U.S. persons whether in the United States or abroad requires - * an export license or other authorization. - * - * Contractor Name: Raytheon Company - * Contractor Address: 6825 Pine Street, Suite 340 - * Mail Stop B8 - * Omaha, NE 68106 - * 402.291.0100 - * - * See the AWIPS II Master Rights File ("Master Rights File.pdf") for - * further licensing information. - **/ -package com.raytheon.rcm.server; - -import java.util.Arrays; - -import com.raytheon.rcm.event.RadarEvent; -import com.raytheon.rcm.event.RadarEventAdapter; -import com.raytheon.rcm.message.CPM; -import com.raytheon.rcm.message.GSM; -import com.raytheon.rcm.message.GraphicProduct; -import com.raytheon.rcm.message.Message; -import com.raytheon.rcm.message.RequestResponse; -import com.raytheon.rcm.message.GraphicProduct.PDB; - -/** - * A radar server component that logs various radar events. - * - *
- *  SOFTWARE HISTORY
- *
- *  Date         Ticket#     Engineer    Description
- *  ------------ ----------  ----------- --------------------------
- *  2009                     dfriedma    Initial version
- *  2016-04-22   DR 18909    dfriedma    Log fields of expanded GSM.
- *  2016-05-02   DR 18798    jdynina     Log backup-comms
- *  2016-05-06   DCS18795    jdynina     Add CPM/CCM processing
- * 
- */ -public class EventLogger extends RadarEventAdapter { - - public EventLogger() { - - } - - @Override - public void handleRadarEvent(RadarEvent event) { - switch (event.getType()) { - case RadarEvent.CONNECTION_UP: - Log.eventf("%s: connected", event.getRadarID()); - break; - case RadarEvent.CONNECTION_DOWN: - Log.eventf("%s: disconnected", event.getRadarID()); - break; - case RadarEvent.MESSAGE_RECEIVED: - { - StringBuilder s = new StringBuilder(); - byte[] msg = event.getMessageData(); - int messageCode = Message.messageCodeOf(msg); - s.append("code=" + messageCode); - s.append(" size=" + msg.length); - if (messageCode == Message.GSM) { - s.append(' '); - GSM gsm = null; - try { - gsm = GSM.decode(msg); - } catch (Exception e) { - s.append("(Message decoding failed)"); - } - if (gsm != null) { - s.append(formatGSM(gsm)); - } - } else if (messageCode == Message.COMMAND_PARAMETER_MESSAGE) { - s.append(' '); - CPM cpm = null; - try { - cpm = CPM.decode(msg); - } catch (Exception e) { - s.append("(Message decoding failed)"); - } - if (cpm != null) { - s.append(formatCPM(cpm)); - } - } else if (messageCode == Message.REQUEST_RESPONSE) { - s.append(' '); - RequestResponse rr = null; - try { - rr = RequestResponse.decode(msg); - } catch (Exception e) { - s.append("(Message decoding failed)"); - } - if (rr != null) { - s.append(formatPRR(rr)); - } - } else if (messageCode >= 16) { - PDB pdb = null; - - s.append(' '); - try { - pdb = GraphicProduct.pdbOfMessage(msg); - } catch (Exception e) { - s.append("(Message decoding failed)"); - } - if (pdb != null) { - s.append(String.format("elev=%.1f sequence=%d"+ - " vs=%3$tY-%3$tm-%3$td %3$tH:%3$tM:%3$tS #%4$d", - pdb.getElevationAngle() / 10.0, pdb.sequence, - pdb.volumeScanTime, pdb.volumeScan)); - } - } - - Log.eventf("%s: message %s", event.getRadarID(), s.toString()); - break; - } - } - } - - protected final String[] rdaOpStatusStr = { - "auto-calib-disab", "online", "maint-req", "maint-mand", "cmd-shutdown", - "inoperable", null, "wideband-disconn" - }; - protected final String[] rdaStatusStr = { - null, "startup", "standby", "restart", "operate", null, "offline-op" - }; - protected final String[] rdaAlarmStr = { - "indeterminate", "tower", "pedestal", "transmitter", "receiver", "control", "comms" - }; - protected final String[] dteStr = { - null, "none", "refl", "vel", "sw", "dual-pol" - }; - protected final String[] rpgOpStr = { - "load-shed", "online", "maint-req", "maint-mand", "cmd-shutdown" - }; - protected final String[] rpgAlarmStr = { - "none", "node-conn", null, "ctl-task-fail", "db-fail", null, "input-load-shed", - null, "store-load-shed", null, null, "backup-comms", "link-fail", "redundant-channel-error", - "task-fail", "media-fail" - }; - protected final String[] rpgStatusStr = { - "restart", "operate", "standby", null, "test-mode" - }; - protected final String[] productAvailStr = { - "avail", "degraded", "not-avail" - }; - protected final String[] prrStr = { - "no-such-msg", "no-such-prod", "not-gen", "proc-fault", - "narrowband-loadshed", "illegal-req", "mem-loadshed", "cpu-loadshed", - "slot-unavail", "task-failed", "task-unavail", "avail-next-scan", - "moment-disabled", "invalid-password", null, "aborted-scan", - "inval-prod-param", "data-seq-error", "task-term", "cmd-not-authorized", - "cmd-rejected" - }; - protected final String[] vcpSupplementalStr = { - "AVSET", "SAILS", "site-specific-vcp", "RxRN", "CBT" - }; - - protected String formatBits(short bits, String[] strings) { - StringBuilder result = new StringBuilder(); - for (int i = 0; i < 16; i++) { - if ((bits & (1 << i)) != 0) { - if (result.length() > 0) { - result.append(','); - } - String s = null; - if (i < strings.length) { - s = strings[i]; - } - if (s == null) { - s = "unk" + Integer.toString(15 - i); - } - result.append(s); - } - } - return result.toString(); - } - - protected String formatPrrBits(int bits, String[] strings) { - StringBuilder result = new StringBuilder(); - for (int i = 0; i < 32; i++) { - // PRR bits are defined from the MSB on down, so - // note the (31-i) - if ((bits & (1 << (31-i))) != 0) { - if (result.length() > 0) { - result.append(','); - } - String s = null; - if (i < strings.length) { - s = strings[i]; - } - if (s == null) { - s = "unk" + Integer.toString(31 - i); - } - result.append(s); - } - } - return result.toString(); - } - - protected String formatGSM(GSM gsm) { - StringBuilder o = new StringBuilder(); - String s; - - switch (gsm.opMode) { - case GSM.OP_MODE_CLEAR_AIR: s = "clear-air"; break; - case GSM.OP_MODE_STORM: s = "storm"; break; - case GSM.OP_MODE_MAINTENANCE: s = "maintenance"; break; - default: s = "(" +Integer.toString(gsm.opMode) + ")"; - } - o.append("opMode=" + s); - - o.append(" vcp=" + gsm.vcp); - o.append(" cuts=" + Arrays.toString(gsm.cuts)); - - o.append(String.format(" rdaOp=%s rdaStat=%s rdaAlarm=%s dte=%s rpgOp=%s rpgStat=%s rpgAlarm=%s", - formatBits((short) gsm.rdaOpStatus, rdaOpStatusStr), - formatBits((short) gsm.rdaStatus, rdaStatusStr), - formatBits((short) gsm.rdaAlarms, rdaAlarmStr), - formatBits((short) gsm.dataAvailability, dteStr), - formatBits((short) gsm.rpgOpStatus, rpgOpStr), - formatBits((short) gsm.rpgStatus, rpgStatusStr), - formatBits((short) gsm.rpgAlarms, rpgAlarmStr))); - - o.append(String.format(" avail=%s", - formatBits((short) gsm.productAvailability, productAvailStr))); - - o.append(String.format(" suppl=%s", - formatBits((short) gsm.vcpSupplemental, vcpSupplementalStr))); - - o.append(String.format(" rdaVer=%.1f rpgVer=%.1f", gsm.rdaVersion/10.0, gsm.rpgVersion/10.)); - - return o.toString(); - } - - protected String formatCPM(CPM cpm) { - StringBuilder o = new StringBuilder(); - - o.append("numClearAirVcps=" + cpm.clearAirVcps.length); - o.append(" clearAirVcps=" + Arrays.toString(cpm.clearAirVcps)); - o.append(" numPrecipVcps=" + cpm.precipVcps.length); - o.append(" precipVcps=" + Arrays.toString(cpm.precipVcps)); - o.append(" maxSailsCuts=" + cpm.maxSailsCuts); - - return o.toString(); - } - - protected String formatPRR(RequestResponse rr) { - StringBuilder o = new StringBuilder(); - - o.append(String.format("productCode=%d sequence=%d elev=%d flags=%s", - rr.productCode, - rr.sequence, - rr.elevationAngle, - formatPrrBits(rr.errorCode, prrStr))); - - return o.toString(); - } -} diff --git a/RadarServer/com.raytheon.rcm.server/src/com/raytheon/rcm/server/LinkManager.java b/RadarServer/com.raytheon.rcm.server/src/com/raytheon/rcm/server/LinkManager.java deleted file mode 100755 index 7d80e9b072..0000000000 --- a/RadarServer/com.raytheon.rcm.server/src/com/raytheon/rcm/server/LinkManager.java +++ /dev/null @@ -1,30 +0,0 @@ -/** - * This software was developed and / or modified by Raytheon Company, - * pursuant to Contract DG133W-05-CQ-1067 with the US Government. - * - * U.S. EXPORT CONTROLLED TECHNICAL DATA - * This software product contains export-restricted data whose - * export/transfer/disclosure is restricted by U.S. law. Dissemination - * to non-U.S. persons whether in the United States or abroad requires - * an export license or other authorization. - * - * Contractor Name: Raytheon Company - * Contractor Address: 6825 Pine Street, Suite 340 - * Mail Stop B8 - * Omaha, NE 68106 - * 402.291.0100 - * - * See the AWIPS II Master Rights File ("Master Rights File.pdf") for - * further licensing information. - **/ -package com.raytheon.rcm.server; - -import com.raytheon.rcm.event.RadarEventListener; - -public interface LinkManager { - public void connectRadar(String radarID); - public void disconnectRadar(String radarID); - public void sendMessageToRadar(String radarID, byte[] msg); - public void setEventHandler(RadarEventListener handler); - public RadarEventListener getEventHandler(); -} diff --git a/RadarServer/com.raytheon.rcm.server/src/com/raytheon/rcm/server/Log.java b/RadarServer/com.raytheon.rcm.server/src/com/raytheon/rcm/server/Log.java deleted file mode 100755 index 4166dff024..0000000000 --- a/RadarServer/com.raytheon.rcm.server/src/com/raytheon/rcm/server/Log.java +++ /dev/null @@ -1,63 +0,0 @@ -/** - * This software was developed and / or modified by Raytheon Company, - * pursuant to Contract DG133W-05-CQ-1067 with the US Government. - * - * U.S. EXPORT CONTROLLED TECHNICAL DATA - * This software product contains export-restricted data whose - * export/transfer/disclosure is restricted by U.S. law. Dissemination - * to non-U.S. persons whether in the United States or abroad requires - * an export license or other authorization. - * - * Contractor Name: Raytheon Company - * Contractor Address: 6825 Pine Street, Suite 340 - * Mail Stop B8 - * Omaha, NE 68106 - * 402.291.0100 - * - * See the AWIPS II Master Rights File ("Master Rights File.pdf") for - * further licensing information. - **/ -package com.raytheon.rcm.server; - -import org.apache.commons.logging.LogFactory; - -public class Log { - public static org.apache.commons.logging.Log logger = LogFactory.getLog("RadarServer"); - - public static void debug(String msg) { - logger.debug(msg); - } - public static void debugf(String format, Object... args) { - debug(String.format(format, args)); - } - public static void error(String msg) { - logger.error(msg); - } - public static void errorf(String format, Object... args) { - Throwable throwable = null; - for (Object arg : args) { - /* RuntimeExceptions should be all that is needed because checked - * exceptions should be easily traceable, but to be safe... - */ - if (throwable == null && arg instanceof /*Runtime*/Throwable) - throwable = (Throwable) arg; - } - String msg = String.format(format, args); - if (throwable != null) - logger.error(msg, throwable); - else - logger.error(msg); - } - public static void warn(String msg) { - logger.warn(msg); - } - public static void warnf(String format, Object... args) { - warn(String.format(format, args)); - } - public static void event(String msg) { - logger.info(msg); - } - public static void eventf(String format, Object... args) { - event(String.format(format, args)); - } -} diff --git a/RadarServer/com.raytheon.rcm.server/src/com/raytheon/rcm/server/RadarServer.java b/RadarServer/com.raytheon.rcm.server/src/com/raytheon/rcm/server/RadarServer.java deleted file mode 100755 index 48fcc9393e..0000000000 --- a/RadarServer/com.raytheon.rcm.server/src/com/raytheon/rcm/server/RadarServer.java +++ /dev/null @@ -1,229 +0,0 @@ -/** - * This software was developed and / or modified by Raytheon Company, - * pursuant to Contract DG133W-05-CQ-1067 with the US Government. - * - * U.S. EXPORT CONTROLLED TECHNICAL DATA - * This software product contains export-restricted data whose - * export/transfer/disclosure is restricted by U.S. law. Dissemination - * to non-U.S. persons whether in the United States or abroad requires - * an export license or other authorization. - * - * Contractor Name: Raytheon Company - * Contractor Address: 6825 Pine Street, Suite 340 - * Mail Stop B8 - * Omaha, NE 68106 - * 402.291.0100 - * - * See the AWIPS II Master Rights File ("Master Rights File.pdf") for - * further licensing information. - **/ -package com.raytheon.rcm.server; - -import java.util.ArrayList; -import java.util.List; - -import com.raytheon.rcm.ccmmgr.CCMManager; -import com.raytheon.rcm.coll.Collector; -import com.raytheon.rcm.coll.RequestScheduler; -import com.raytheon.rcm.config.Configuration; -import com.raytheon.rcm.config.ConfigurationProvider; -import com.raytheon.rcm.config.MutableConfiguration; -import com.raytheon.rcm.config.RcmResourceProvider; -import com.raytheon.rcm.event.ConfigEvent; -import com.raytheon.rcm.event.NotificationEvent; -import com.raytheon.rcm.event.RadarEvent; -import com.raytheon.rcm.event.RadarEventListener; -import com.raytheon.rcm.otrmgr.OTRManager; -import com.raytheon.rcm.rmrmgr.RMRManager; -import com.raytheon.rcm.rpsmgr.RPSListManager; - -/** - * Main class for the Radar Server. - *

- * This is a container class for the various components of the Radar Server. - * - *

- *
- * SOFTWARE HISTORY
- * Date         Ticket#    Engineer    Description
- * ------------ ---------- ----------- --------------------------
- *
- * 2014-02-03   DR 14762   D. Friedman Connect configuration's event target to
- *                                     the RadarServer instance.
- * 2015-09-08   DR 17944   D. Friedman Set RcmResourceProvider.
- * 2016-05-25   DR 18800   jdynina     Removed alerting
- * 2016-05-10   DCS18795   jdynina     Add CCM
- * 
- */ -public class RadarServer implements RadarEventListener { - // protected ConfigurationProvider configurationProvider; - protected Configuration configuration; - - protected LinkManager linkManager; - - protected ConnectionManagerImpl connectionManager; - - protected ArrayList listeners = new ArrayList(); - - protected Object runSem = new Object(); - - public static void main(String[] args) throws IllegalAccessException, - InstantiationException, ClassNotFoundException { - RadarServer server = createServer(); - - server.addDefaultListeners(); // listeners should not do anything until - // radars are connected... - // but what to rmr and otr do? - - // server.connectDedicatedRadars(); - server.run(); - } - - // TODO: throw these exceptions? - public static RadarServer createServer() throws IllegalAccessException, - InstantiationException, ClassNotFoundException { - - Log.event("RadarServer started"); - - String configurationProviderClassName = System - .getProperty(RadarServer.class.getCanonicalName() - + ".configurationProviderClass"); - - if (configurationProviderClassName == null) - configurationProviderClassName = "com.raytheon.rcm.config.std.StandardConfigProvider"; - - ConfigurationProvider provider = (ConfigurationProvider) Class.forName( - configurationProviderClassName).newInstance(); - - /* (ConfigurationProvider) Class.forName(args[0]) */ - /* lookup a *factory* class and pass relevate args */ - - return createServer(provider.getConfiguration()); - } - - public static RadarServer createServer(Configuration configuration) { - RcmResourceProvider.setInstance(configuration.getRcmResourceProvider()); - return new RadarServer(configuration); - } - - public RadarServer(Configuration configuration) { - // this.configurationProvider = provider; - this.configuration = configuration; // provider.getConfiguration(); - linkManager = new com.raytheon.rcm.oldio.LinkManager(configuration); - linkManager.setEventHandler(this); - connectionManager = new ConnectionManagerImpl(this, linkManager); - addListener(connectionManager); - // connectionManager = - if (configuration instanceof MutableConfiguration) { - ((MutableConfiguration) configuration).setConfigurationEventTarget(this); - } - } - - public void addDefaultListeners() { - addListener(new EventLogger()); - addListener(new RPSListManager(this)); - addListener(new Collector(this)); - // addListener(new Awips2Endpoint(this)); - addListener(new CCMManager(this)); - addListener(new OTRManager(this)); - addListener(new RMRManager(this)); - addListener(new DedicatedRadarActivator(this)); - addListener(new RequestScheduler(this)); - addListener(new RadarServerAvailable(this)); - addListener(new RadarWatchdogListener(this)); - } - - public void addListener(RadarEventListener l) { - synchronized (listeners) { - listeners.add(l); - } - } - - // Needed so that the RemoteRadarServer can find components. - public List getListeners() { - synchronized (listeners) { - return new ArrayList(listeners); - } - } - - public void run() { - try { - try { - synchronized (runSem) { - runSem.wait(); - } - } catch (InterruptedException e) { - // nothing - } - } finally { - // TODO: connectionManager.stop().. - } - } - - public void stop() { - synchronized (runSem) { - runSem.notify(); - } - } - - public ConnectionManager getConnectionManager() { - return connectionManager; - } - - public StatusManager getStatusManager() { - return connectionManager; - } - - public Configuration getConfiguration() { - return configuration; - } - - @Override - public void handleRadarEvent(RadarEvent event) { - RadarEventListener[] ls; // TODO: reuse - synchronized (listeners) { - ls = listeners.toArray(new RadarEventListener[listeners.size()]); - } - for (RadarEventListener l : ls) { - try { - l.handleRadarEvent(event); - } catch (Exception e) { - Log.errorf("Error while listener %s processed event %s:", l, - event, e); - } - } - } - - @Override - public void handleConfigEvent(ConfigEvent event) { - RadarEventListener[] ls; // TODO: reuse - synchronized (listeners) { - ls = listeners.toArray(new RadarEventListener[listeners.size()]); - } - for (RadarEventListener l : ls) { - try { - l.handleConfigEvent(event); - } catch (Exception e) { - Log.errorf("Error while listener %s processed event %s: %s", l, - event, e); - } - } - } - - @Override - public void handleNotificationEvent(NotificationEvent event) { - RadarEventListener[] ls; // TODO: reuse - synchronized (listeners) { - ls = listeners.toArray(new RadarEventListener[listeners.size()]); - } - for (RadarEventListener l : ls) { - try { - l.handleNotificationEvent(event); - } catch (Exception e) { - Log.errorf("Error while listener %s processed event %s: %s", l, - event, e); - } - } - } - -} diff --git a/RadarServer/com.raytheon.rcm.server/src/com/raytheon/rcm/server/RadarServerAvailable.java b/RadarServer/com.raytheon.rcm.server/src/com/raytheon/rcm/server/RadarServerAvailable.java deleted file mode 100644 index 5e547c44d7..0000000000 --- a/RadarServer/com.raytheon.rcm.server/src/com/raytheon/rcm/server/RadarServerAvailable.java +++ /dev/null @@ -1,145 +0,0 @@ -/** - * This software was developed and / or modified by Raytheon Company, - * pursuant to Contract DG133W-05-CQ-1067 with the US Government. - * - * U.S. EXPORT CONTROLLED TECHNICAL DATA - * This software product contains export-restricted data whose - * export/transfer/disclosure is restricted by U.S. law. Dissemination - * to non-U.S. persons whether in the United States or abroad requires - * an export license or other authorization. - * - * Contractor Name: Raytheon Company - * Contractor Address: 6825 Pine Street, Suite 340 - * Mail Stop B8 - * Omaha, NE 68106 - * 402.291.0100 - * - * See the AWIPS II Master Rights File ("Master Rights File.pdf") for - * further licensing information. - **/ -package com.raytheon.rcm.server; - -import java.io.File; -import java.util.ArrayList; -import java.util.HashSet; -import java.util.List; -import java.util.Scanner; -import java.util.concurrent.ExecutorService; -import java.util.concurrent.Executors; -import java.util.concurrent.ThreadFactory; - -import com.raytheon.rcm.event.RadarEvent; -import com.raytheon.rcm.event.RadarEventAdapter; - -/** - * Send AlertViz notifications - * - *
- * 
- * SOFTWARE HISTORY
- * 
- * Date         Ticket#    Engineer    Description
- * ------------ ---------- ----------- --------------------------
- * Nov 9, 2011            mnash     Initial creation
- * 2012-07-27   DR 14896   D. Friedman  Handle multiple RPGs.
- * 2014-05-22   DR 16319   dhuffman     Change some methods to static.
- * 
- * 
- * - * @author mnash - * @version 1.0 - */ - -public class RadarServerAvailable extends RadarEventAdapter { - - private static final String CONNECTION_DOWN_MESSAGE = "RPG connection is down."; - private static final String CONNECTION_UP_MESSAGE = "RPG connection is back up."; - - private static final String AWIPS2_FXA_PROPERTY = "awips2_fxa"; - private static final String DEFAULT_AWIPS2_FXA = "/awips2/fxa"; - private static final String ANNOUNCER_PATH = "bin" + File.separator + "fxaAnnounce"; - - private HashSet knownFailures = new HashSet(); - - public RadarServerAvailable(RadarServer server) { - } - - /* - * (non-Javadoc) - * - * @see - * com.raytheon.rcm.event.RadarEventAdapter#handleRadarEvent(com.raytheon - * .rcm.event.RadarEvent) - */ - @Override - public void handleRadarEvent(RadarEvent event) { - final String radarId = event.getRadarID(); - if (event.getType() == RadarEvent.CONNECTION_ATTEMPT_FAILED) { - if (! knownFailures.contains(radarId)) { - knownFailures.add(radarId); - sendNotification(radarId, CONNECTION_DOWN_MESSAGE); - } - } else if (event.getType() == RadarEvent.CONNECTION_UP) { - if (knownFailures.contains(radarId)) { - knownFailures.remove(radarId); - sendNotification(radarId, CONNECTION_UP_MESSAGE); - } - } - } - - public static void sendNotification(final String radarId, final String message) { - getExecutorService().submit(new Runnable() { - @Override - public void run() { - sendNotification2(radarId, message); - } - }); - } - - private static void sendNotification2(String radarId, String message) { - ProcessBuilder builder; - Process proc = null; - - String fxaDir = System.getProperty(AWIPS2_FXA_PROPERTY); - if (fxaDir == null) - fxaDir = DEFAULT_AWIPS2_FXA; - - List values = new ArrayList(); - values.add(fxaDir + File.separator + ANNOUNCER_PATH); - Log.event("Executing " + values.get(0)); - values.add(radarId + ' ' + message); - values.add("RADAR"); - values.add("URGENT"); - builder = new ProcessBuilder(values); - builder.redirectErrorStream(true); - - try { - proc = builder.start(); - Scanner s = new Scanner(proc.getInputStream()); - while (s.hasNextLine()) - s.nextLine(); - proc.waitFor(); - } catch (Exception e) { - Log.errorf("Error running fxaAnnounce: %s", e); - } finally { - if (proc != null) { - proc.destroy(); - } - } - } - - // TODO: has to be daemon until there is a shutdown notification - private static ExecutorService executorService = Executors - .newSingleThreadExecutor(new ThreadFactory() { - @Override - public Thread newThread(Runnable r) { - Thread t = new Thread(r); - t.setDaemon(true); - return t; - } - }); - - private static ExecutorService getExecutorService() { - return executorService; - } -} diff --git a/RadarServer/com.raytheon.rcm.server/src/com/raytheon/rcm/server/RadarWatchdog.java b/RadarServer/com.raytheon.rcm.server/src/com/raytheon/rcm/server/RadarWatchdog.java deleted file mode 100644 index c1761000b5..0000000000 --- a/RadarServer/com.raytheon.rcm.server/src/com/raytheon/rcm/server/RadarWatchdog.java +++ /dev/null @@ -1,297 +0,0 @@ -/** - * This software was developed and / or modified by Raytheon Company, - * pursuant to Contract DG133W-05-CQ-1067 with the US Government. - * - * U.S. EXPORT CONTROLLED TECHNICAL DATA - * This software product contains export-restricted data whose - * export/transfer/disclosure is restricted by U.S. law. Dissemination - * to non-U.S. persons whether in the United States or abroad requires - * an export license or other authorization. - * - * Contractor Name: Raytheon Company - * Contractor Address: 6825 Pine Street, Suite 340 - * Mail Stop B8 - * Omaha, NE 68106 - * 402.291.0100 - * - * See the AWIPS II Master Rights File ("Master Rights File.pdf") for - * further licensing information. - **/ -package com.raytheon.rcm.server; - -import java.io.BufferedReader; -import java.io.IOException; -import java.io.InputStream; -import java.io.InputStreamReader; -import java.util.ArrayList; -import java.util.Iterator; -import java.util.List; -import java.util.Map; -import java.util.concurrent.ConcurrentHashMap; - -import com.raytheon.rcm.config.RadarConfig; -import com.raytheon.rcm.server.StatusManager.RadarStatus; - -/** - * - * This class encapsulates the watchdog activity into a plugin for the - * RadarServer. - * - *
- * 
- * SOFTWARE HISTORY
- * 
- * Date          Ticket#    Engineer    Description
- * ------------- ---------- ----------- --------------------------
- * May 12, 2014  DR 16319   dhuffman    Initial creation.
- * Feb 10, 2015  DR 17112   D. Friedman Only alarm on dedicated radars and
- *                                      once per detected failure.
- * 
- * 
- * - * @author dhuffman - * @version 1.0 - */ - -public class RadarWatchdog extends Thread { - - private static Object semifore = new Object(); - - protected static class GsmItem { - protected String radarID; - protected int trackedVcp; - protected int currentVcp; - protected boolean failed; - - protected GsmItem() { - } - } - - protected static class RadarItem { - protected boolean isNew; - protected long time; - protected long messageTime; - - protected RadarItem() { - } - } - - protected static class WatchedRadar { - - } - - private long shortestWait = 0; - private static final long fudgeTime = 30; - - private static Map mapGSM = new ConcurrentHashMap(); - private static Map> mapMnemonic = new ConcurrentHashMap>(); - private static Map mapDuration = new ConcurrentHashMap(); - private static List mapMnemonicProducts = new ArrayList(); - - protected RadarServer radarServer; - private static String configFileName = "radarWatchdog.txt"; - - protected RadarWatchdog(RadarServer radarServer) { - super("Watchdog"); - setDaemon(true); - this.radarServer = radarServer; - - loadConfigFile(configFileName); - - Iterator mnem = mapMnemonicProducts.iterator(); - while (mnem.hasNext()) { - String mn = mnem.next(); - Map mapRadar = new ConcurrentHashMap(); - mapMnemonic.put(mn, mapRadar); - } - } - - public synchronized void notifyGsm(String radarID, int vcp) { - GsmItem item = mapGSM.get(radarID); - if (item != null) { - item.currentVcp = vcp; - notifyWatchdog(); - } else { - if (isTrackedRadar(radarID)) { - item = new GsmItem(); - item.radarID = radarID; - item.currentVcp = vcp; - mapGSM.put(radarID, item); - notifyWatchdog(); - } - } - } - - protected boolean isTrackedRadar(String radarID) { - RadarConfig rc = radarServer.getConfiguration().getConfigForRadar(radarID); - return rc != null && rc.isDedicated(); - } - - public synchronized void notifyRadarItem(String radarID, String mnemonic, long messageTime, long time) { - if (! isTrackedRadar(radarID)) - return; - - RadarItem ri = getRadarItem(mnemonic, radarID); - if (ri != null) { - ri.isNew = false; - ri.messageTime = messageTime; - ri.time = time; - } - } - - private RadarItem getRadarItem(final String mnemonic, final String radarID) { - Map mapRadar = mapMnemonic.get(mnemonic); - if (mapRadar != null) { - RadarItem ri = mapRadar.get(radarID); - if (ri == null) { - ri = new RadarItem(); - ri.isNew = true; - mapRadar.put(radarID, ri); - } - return ri; - } - return null; - } - - @Override - public void run() { - shortestWait = 0; - while (true) { - - try { - synchronized (semifore) { - semifore.wait(shortestWait < 800 ? 800 : shortestWait); - } - } catch (InterruptedException e) { - e.printStackTrace(); - } - - patrol(System.currentTimeMillis()); - - } - } - - private synchronized void patrol(long currentTime) { - long duration = 0; - long earliestCheckTime = 0; - Iterator git = mapGSM.values().iterator(); - while (git.hasNext()) { - GsmItem gi = git.next(); - - if (! isTrackedRadar(gi.radarID)) { - git.remove(); - continue; - } - - /* There will be an alarm when the radar connection goes down, so - * do not do any additional alarming. - */ - RadarStatus rs = radarServer.getStatusManager().getRadarStatus(gi.radarID); - if (rs != null && rs.getCurrentGSM() == null) { - gi.trackedVcp = 0; - continue; - } - - if (gi.currentVcp != gi.trackedVcp) { - for (String mn : mapMnemonicProducts) { - RadarItem ri = getRadarItem(mn, gi.radarID); - if (ri != null) { - ri.isNew = true; - } - } - gi.trackedVcp = gi.currentVcp; - } - - if (mapDuration.get(gi.trackedVcp) != null) { - boolean allOk = true; - duration = (mapDuration.get(gi.trackedVcp) + fudgeTime) * 1000; - - for (String mn : mapMnemonicProducts) { - RadarItem ri = getRadarItem(mn, gi.radarID); - if (ri == null) { - continue; - } - - if (ri.isNew) { - ri.isNew = false; - ri.time = currentTime; - } else { - long diff = currentTime - ri.time; - if (diff < duration) { - long nextTime = ri.time + duration; - if (earliestCheckTime == 0 || nextTime < earliestCheckTime) { - earliestCheckTime = nextTime; - } - } else { - allOk = false; - alert(duration, gi, mn); - } - } - } - if (allOk) { - gi.failed = false; - } - } - } - - shortestWait = earliestCheckTime > 0 ? earliestCheckTime - currentTime : 0; - } - - private void alert(final long duration, final GsmItem gi, final String mn) { - if (! gi.failed) { - gi.failed = true; - String AlertVizMessage = "Watchdog: Radar "; - AlertVizMessage += gi.radarID + " has not produced a '" + mn - + "' product in the last " + duration / 1000 + " seconds."; - RadarServerAvailable.sendNotification(gi.radarID, AlertVizMessage); - } - } - - public void notifyWatchdog() { - synchronized (semifore) { - semifore.notify(); - } - } - - private boolean loadConfigFile(final String filename) { - try { - InputStream inFile = radarServer.getConfiguration(). - getDropInData(filename); - InputStreamReader reader = new InputStreamReader(inFile); - BufferedReader in = new BufferedReader(reader); - String line; - - while ((line = in.readLine()) != null) { - if (line.contains("#")) - continue; - if (line.contains("[")) - break; - } - - while ((line = in.readLine()) != null) { - if (line.contains("#")) - continue; - if (line.contains("[")) - break; - String s[] = line.split("\\|"); - mapDuration.put(Integer.parseInt(s[0].trim()), - Integer.parseInt(s[1].trim())); - } - - while ((line = in.readLine()) != null) { - if (line.contains("#")) - continue; - if (line.contains("[")) - break; - mapMnemonicProducts.add(line.trim()); - } - - } catch (IOException e) { - Log.errorf(": watchdog: Error while loading config file %s", - filename, e); - } - - return true; - } - -} diff --git a/RadarServer/com.raytheon.rcm.server/src/com/raytheon/rcm/server/RadarWatchdogListener.java b/RadarServer/com.raytheon.rcm.server/src/com/raytheon/rcm/server/RadarWatchdogListener.java deleted file mode 100644 index 31d3b130a1..0000000000 --- a/RadarServer/com.raytheon.rcm.server/src/com/raytheon/rcm/server/RadarWatchdogListener.java +++ /dev/null @@ -1,120 +0,0 @@ -/** - * This software was developed and / or modified by Raytheon Company, - * pursuant to Contract DG133W-05-CQ-1067 with the US Government. - * - * U.S. EXPORT CONTROLLED TECHNICAL DATA - * This software product contains export-restricted data whose - * export/transfer/disclosure is restricted by U.S. law. Dissemination - * to non-U.S. persons whether in the United States or abroad requires - * an export license or other authorization. - * - * Contractor Name: Raytheon Company - * Contractor Address: 6825 Pine Street, Suite 340 - * Mail Stop B8 - * Omaha, NE 68106 - * 402.291.0100 - * - * See the AWIPS II Master Rights File ("Master Rights File.pdf") for - * further licensing information. - **/ -package com.raytheon.rcm.server; - -import java.util.HashMap; - -import com.raytheon.rcm.config.Configuration; -import com.raytheon.rcm.event.RadarEvent; -import com.raytheon.rcm.event.RadarEventAdapter; -import com.raytheon.rcm.message.GSM; -import com.raytheon.rcm.message.GraphicProduct; -import com.raytheon.rcm.message.Message; -import com.raytheon.rcm.message.GraphicProduct.PDB; -import com.raytheon.rcm.products.ProductInfo; -import com.raytheon.rcm.products.RadarProduct; -import com.raytheon.rcm.server.RadarWatchdog; - -/** - * - * This class listens to messages sent to the RadarServer, that the watchdog has - * an interest in. - * - *
- * 
- * SOFTWARE HISTORY
- * 
- * Date          Ticket#    Engineer    Description
- * ------------- ---------- ----------- --------------------------
- * May 12, 2014  DR 16319   dhuffman    Initial creation.
- * Feb 10, 2015  DR 17112   D. Friedman Only alarm on dedicated radars and
- *                                      once per detected failure.
- * 
- * 
- * - * @author dhuffman - * @version 1.0 - */ -public class RadarWatchdogListener extends RadarEventAdapter { - - protected static RadarWatchdog radarWatchdog; - - private static HashMap mnemonicMap = new HashMap(); - { - mnemonicMap.put("HZ", "Z"); - mnemonicMap.put("HV", "V"); - mnemonicMap.put("HSW", "SW"); - } - - public RadarWatchdogListener(RadarServer radarServer) { - radarWatchdog = new RadarWatchdog(radarServer); - radarWatchdog.start(); - } - - @Override - public void handleRadarEvent(RadarEvent event) { - if (event.getType() == RadarEvent.MESSAGE_RECEIVED) { - byte[] msg = event.getMessageData(); - int messageCode = Message.messageCodeOf(msg); - if (messageCode == Message.GSM) { - GSM gsm = null; - try { - gsm = GSM.decode(msg); - } catch (Exception e) { - // This message error will be reported by EventLogger. - return; - } - - if (gsm != null) { - radarWatchdog.notifyGsm(event.getRadarID(), gsm.vcp); - } - - } else if (16 <= messageCode) { - int mcode = 0; - PDB pdb = null; - mcode = Message.messageCodeOf(msg); - long messageTime = (Message.decodeHeader(msg).time) - .getTimeInMillis(); - - RadarProduct rp = ProductInfo.getInstance().getPoductForCode( - mcode); - if (rp == null) - return; - - String mnemonic = mnemonicMap.get(rp.mnemonic); - if (mnemonic == null) - mnemonic = rp.mnemonic; - - try { - pdb = GraphicProduct.pdbOfMessage(msg); - } catch (Exception e) { - // This message error will be reported by EventLogger. - return; - } - - if (pdb != null) { - radarWatchdog.notifyRadarItem(event.getRadarID(), mnemonic, - messageTime, System.currentTimeMillis()); - } - } - } - } - -} diff --git a/RadarServer/com.raytheon.rcm.server/src/com/raytheon/rcm/server/StatusManager.java b/RadarServer/com.raytheon.rcm.server/src/com/raytheon/rcm/server/StatusManager.java deleted file mode 100755 index d6656be376..0000000000 --- a/RadarServer/com.raytheon.rcm.server/src/com/raytheon/rcm/server/StatusManager.java +++ /dev/null @@ -1,50 +0,0 @@ -/** - * This software was developed and / or modified by Raytheon Company, - * pursuant to Contract DG133W-05-CQ-1067 with the US Government. - * - * U.S. EXPORT CONTROLLED TECHNICAL DATA - * This software product contains export-restricted data whose - * export/transfer/disclosure is restricted by U.S. law. Dissemination - * to non-U.S. persons whether in the United States or abroad requires - * an export license or other authorization. - * - * Contractor Name: Raytheon Company - * Contractor Address: 6825 Pine Street, Suite 340 - * Mail Stop B8 - * Omaha, NE 68106 - * 402.291.0100 - * - * See the AWIPS II Master Rights File ("Master Rights File.pdf") for - * further licensing information. - **/ -package com.raytheon.rcm.server; - -import com.raytheon.rcm.config.LinkResource; - -/** - *
- *
- * SOFTWARE HISTORY
- * Date         Ticket#    Engineer    Description
- * ------------ ---------- ----------- --------------------------
- * 2016-05-25   DR 18800   jdynina     Removed alerting
- * 2016-05-15   DCS18795   jdynina     Added CPM
- * 
- * - */ - -public interface StatusManager { - public static interface RadarStatus { - byte[] getCurrentGSM(); - byte[] getCurrentCPM(); - byte[] getCurrentPTL(); - byte[] getLastGSM(); - byte[] getLastCPM(); - byte[] getLastPTL(); - - // Required to determine the maximum RPS list size - LinkResource getLinkResource(); - } - - public RadarStatus getRadarStatus(String radarID); -} diff --git a/RadarServer/com.raytheon.rcm.tools/.project b/RadarServer/com.raytheon.rcm.tools/.project deleted file mode 100755 index 9146901c11..0000000000 --- a/RadarServer/com.raytheon.rcm.tools/.project +++ /dev/null @@ -1,28 +0,0 @@ - - - com.raytheon.rcm.tools - - - - - - org.python.pydev.PyDevBuilder - - - - - org.eclipse.pde.ManifestBuilder - - - - - org.eclipse.pde.SchemaBuilder - - - - - - org.python.pydev.pythonNature - org.eclipse.pde.PluginNature - - diff --git a/RadarServer/com.raytheon.rcm.tools/.pydevproject b/RadarServer/com.raytheon.rcm.tools/.pydevproject deleted file mode 100755 index 1984b30fa4..0000000000 --- a/RadarServer/com.raytheon.rcm.tools/.pydevproject +++ /dev/null @@ -1,10 +0,0 @@ - - - - - -/com.raytheon.rcm.tools/src - -python 2.5 -Default - diff --git a/RadarServer/com.raytheon.rcm.tools/META-INF/MANIFEST.MF b/RadarServer/com.raytheon.rcm.tools/META-INF/MANIFEST.MF deleted file mode 100644 index 378e6bd570..0000000000 --- a/RadarServer/com.raytheon.rcm.tools/META-INF/MANIFEST.MF +++ /dev/null @@ -1,5 +0,0 @@ -Manifest-Version: 1.0 -Bundle-ManifestVersion: 2 -Bundle-Name: Tools -Bundle-SymbolicName: com.raytheon.rcm.tools -Bundle-Version: 1.12.1174.qualifier diff --git a/RadarServer/com.raytheon.rcm.tools/build.properties b/RadarServer/com.raytheon.rcm.tools/build.properties deleted file mode 100644 index 5f22cdd448..0000000000 --- a/RadarServer/com.raytheon.rcm.tools/build.properties +++ /dev/null @@ -1 +0,0 @@ -bin.includes = META-INF/ diff --git a/RadarServer/com.raytheon.rcm.tools/com.raytheon.rcm.tools.ecl b/RadarServer/com.raytheon.rcm.tools/com.raytheon.rcm.tools.ecl deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/RadarServer/com.raytheon.rcm.tools/src/otrtool.py b/RadarServer/com.raytheon.rcm.tools/src/otrtool.py deleted file mode 100755 index c50158f1f8..0000000000 --- a/RadarServer/com.raytheon.rcm.tools/src/otrtool.py +++ /dev/null @@ -1,306 +0,0 @@ -#!/usr/bin/env python -## -# 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. -## -import getopt -import logging -import sys -import pprint -import threading -import time -from xml.dom.minidom import parseString - -#import stomp -from awips import stomp - -def encodeElevation(elev): - if elev >= 0: - return min(elev, 1800); - else: - if elev > -1800: - return 3600 + elev - else: - return 1801 - -class Request(object): - SPECIFIC_ELEVATION = 0; - LOWER_ELEVATIONS = 1 << 13; - ALL_ELEVATIONS = 1 << 14; - LOWER_CUTS = (1 << 14) | (1 << 13) - - def __init__(self): - self.productCode = 0 - self.pdw = [0,0,0,0,0,0 ] - self.highPriority = False - self.mapRequested = False - self.sequence = 0 - self.count = 1 - self.interval = 1 - self.volumeScanSelection = -1 - self.volumeScanTime = None - - def setElevation(self, elevation): - self.pdw[2] = encodeElevation(elevation) - - def selectAllElevations(self, elevation = 0): - self.pdw[2] = Request.ALL_ELEVATIONS | encodeElevation(elevation) - - def selectLowerElevations(self, highest_elevation): - self.pdw[2] = Request.LOWER_ELEVATIONS | encodeElevation(highest_elevation); - - def selectLowerCuts(self, n_cuts): - self.pdw[2] = Request.LOWER_CUTS | encodeElevation(n_cuts); - - def toXml(self): - return ''' - - %d - %s - %s - %d - %d - %d - %d - %s - %d - %d - %d - %d - %d - %d - - ''' % tuple([self.productCode, - str(self.highPriority).lower(), - str(self.mapRequested).lower(), - self.sequence, self.count, self.interval, - self.volumeScanSelection, - (self.volumeScanTime is not None) and - (''+str(self.volumeScanTime)+'') or '' - ] + self.pdw) - -class RequestBuilder(object): - def __init__(self): - self.r = None - - def req(self): - if self.r is None: - self.r = Request() - return self.r - - def getRequest(self): - return self.r - - def restart(self): - self.r = None - -exit_cond = None - -class CL(stomp.ConnectionListener): - - def __init__(self, conn, xml): - self.conn = conn - self.xml = xml - - def on_connecting(self, host_and_port): - #print 'on_connecting...' - self.conn.connect(login='',passcode='') - - def on_connected(self, headers, body): - #print 'on_connected...', headers, body - - queueName = '/queue/RadarServer' - replyQueueName = '/queue/otrtool-' + headers['session'] - self.conn.subscribe(destination = replyQueueName) - self.conn.send(self.xml, destination = queueName, receipt = 'sent', - reply_to = replyQueueName) #receipt='zinger' - - def on_disconnected(self): - print 'Diconnected' - #sys.exit(0) - self.doExit() - - def on_message(self, headers, body): - # pprint.pprint(body) - try: - d = parseString(body) - n = d.documentElement.getAttributeNode("error") - if n is not None: - print >> sys.stderr, "Error: %s" % n.nodeValue - else: - print "request sent" - except: - print >> sys.stderr, "Error while processing result: %s\n%s\n" % \ - (sys.exc_info()[1], body) - # stomp.ConnectionListener.on_message(self, headers, body) - self.doExit() - - def on_receipt(self, headers, body): - #print 'ok?' - #self.conn.disconnect() - #self.doExit() - pass - - def on_error(self, headers, body): - print >> sys.stderr, "STOMP error:", body - #self.doExit() - #self.conn.stop() - #sys.exit(1) - - def doExit(self): - #self.conn.disconnect() - exit_cond.acquire() - try: - exit_cond.notifyAll() - finally: - exit_cond.release() - -def printHelp(): - print """usage: otrtool.py -r [options] - ... Send OTRs - - otrtool.py --status - ... Print OTR status in RadarServer log - - -r Radar name. Multiple radars can be specified. - - -p Radar product code - - -A Request all elevations - -a Request all elevations matching (for TDWR mini-volumes). - -e Request single elevation angle - -l Request elevations up to and including - -n Request the lowest elevations - - -C Request "current" product - -L Request "latest available" product - -S