Change-Id: Ie1e0b115e991c0bdc01e929a21d36a9f1413d940

Former-commit-id: e34ceb8c86f0814c1be7af3bbd2eadec8daf48aa
This commit is contained in:
David Friedman 2014-02-03 19:03:50 +00:00
parent a3ac0236b0
commit 969c50b80f
19 changed files with 598 additions and 161 deletions

View file

@ -1,23 +1,8 @@
# productId elevAngle prodCategory Partial WMO Id
2 0 GSM NXUS6
19 5 N0R SDUS5
19 13 N1R SDUS2
19 15 N1R SDUS2
19 24 N2R SDUS2
19 25 N2R SDUS2
19 31 N3R SDUS3
19 34 N3R SDUS3
19 35 N3R SDUS3
20 5 N0Z SDUS7
25 5 N0W SDUS6
27 5 N0V SDUS5
27 13 N1V SDUS7
27 15 N1V SDUS7
27 24 N2V SDUS6
27 25 N2V SDUS6
27 31 N3V SDUS6
27 34 N3V SDUS6
27 35 N3V SDUS6
28 5 NSP SDUS6
30 5 NSW SDUS6
32 0 DHR SDUS5
@ -40,7 +25,7 @@
56 34 N3S SDUS3
56 35 N3S SDUS3
57 0 NVL SDUS5
58 0 NST SDUS6
58 0 NST SDUS3
59 0 NHI SDUS6
61 0 NTV SDUS6
62 0 NSS SDUS6
@ -50,7 +35,7 @@
75 0 FTM NOUS6
78 0 N1P SDUS3
80 0 NTP SDUS5
81 0 DPA SDUS8
81 0 DPA SDUS5
82 0 SPD SDUS6
90 0 NHL SDUS6
136 0 RWO SDUS9
@ -79,3 +64,61 @@
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

View file

@ -1,36 +1,46 @@
RPS List rps-RPGOP-tcp.clear-air modified 2007:01:03:00:00:00 ... 31 products
An RPS list contains the following fields: Product Name, Product
Mnemonic, Product Code, Number of Data Levels, Resolution, Layer Code,
Elevation, Contour Interval, Priority, Req Interval, and Map
The record format is: '%-39s %-3s%4d%4d%6d %c%6d%7d%2d%2d%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 36 8 400 - -1 -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
Digital Hybrid Scan Refl (DHR) DHR 32 256 100 - -1 -1 0 1N -1 -1
Storm Total Precip (STP) STP 138 256 200 - -1 -1 0 1N -1 -1 N
RPS List rps-RPGOP-tcp.VCP32.rps created 2010:11:18:17:32:56 ... 41 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
Velocity (V) V 99 256 25 - 8227 -1 0 1N -1 -1 N -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 - 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 36 8 400 - -1 -1 0 1N 2 -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
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

View file

@ -1,43 +1,51 @@
RPS List rps-RPGOP-tcp.storm created 2007:01:03:00:00:00 ... 38 products
An RPS list contains the following fields: Product Name, Product
Mnemonic, Product Code, Number of Data Levels, Resolution, Layer Code,
Elevation, Contour Interval, Priority, Req Interval, and Map
The record format is: '%-39s %-3s%4d%4d%6d %c%6d%7d%2d%2d%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
Digital Hybrid Scan Refl (DHR) DHR 32 256 100 - -1 -1 0 1N -1 -1
Storm Total Precip (STP) STP 138 256 200 - -1 -1 0 1N -1 -1 N
RPS List rps-RPGOP-tcp.VCP11.rps created 2010:11:18:17:28:33 ... 46 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
Velocity (V) V 99 256 25 - 8226 -1 0 1N -1 -1 N -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 - 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
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
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

View file

@ -24,12 +24,12 @@
41 0 NET SDUS7
48 0 NVW SDUS3
57 0 NVL SDUS5
58 0 NST SDUS6
58 0 NST SDUS3
59 0 NHI SDUS6
61 0 NTV SDUS6
78 0 N1P SDUS3
80 0 NTP SDUS5
81 0 DPA SDUS8
81 0 DPA SDUS5
82 0 SPD SDUS6
138 0 DSP SDUS5
141 0 NMD SDUS3

View file

@ -1,6 +1,6 @@
#Radar Connection Characteristic D'n' Key
#D1 - LAN 10 mbps
#D2 - FR DoD 256 kbps
#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
@ -8,7 +8,7 @@
#D7 - Dedicated Backup Across WAN 128 kbps Aggregate
#D8 - ASR-4/ARSR-11 radars
#
#Site ID Region numRpgs RPGs 020209
#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
@ -87,7 +87,7 @@ 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 4 MAXYD1 BHXND7 ATXND7 RTXND7
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
@ -96,7 +96,7 @@ 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 1 MPXND1
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
@ -110,7 +110,7 @@ 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 3 RTXYD1 ATXND7 MAXND7
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
@ -121,7 +121,7 @@ KRIW 5 3 RIWYD1 BLXND7 CYSND7
KRLX 1 3 RLXYD1 PBZND7 JKLND7
KRNK 1 3 FCXYD1 RAXND7 GSPND7
KRSA 6 1 DAXND1
KSEW 6 4 ATXYD1 RTXND7 PDTND7 QKWND8
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
@ -144,8 +144,8 @@ 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 ABCYD3 AKCYD3 AHGND7 AIHND7 APDND7 AECND7 ACGND7
PAFC 8 7 AHGYD3 AIHYD3 ABCND7 AKCND7 APDND7 AECND7 ACGND7
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

View file

@ -19,10 +19,29 @@
**/
package com.raytheon.rcm.config;
import com.raytheon.rcm.event.RadarEventListener;
/**
* Interface to configurations that can be changed at runtime.
*
* <pre>
*
* SOFTWARE HISTORY
* Date Ticket# Engineer Description
* ------------ ---------- ----------- --------------------------
* ...
* 2014-02-03 DR 14762 D. Friedman Support arbitrary config files.
* </pre>
*
*/
public interface MutableConfiguration {
// 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 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);
}

View file

@ -26,22 +26,46 @@ import javax.xml.bind.annotation.XmlRootElement;
import com.raytheon.rcm.config.RadarConfig;
/**
* Represents events that can happen within the RadarServer.
*
* <pre>
*
* SOFTWARE HISTORY
* Date Ticket# Engineer Description
* ------------ ---------- ----------- --------------------------
* 2009-04-22 #1693 D. Friedman Initial checkin
* ...
* 2014-02-03 DR 14762 D. Friedman Add Category enum
* </pre>
*
*/
@XmlRootElement
@XmlAccessorType(XmlAccessType.FIELD)
public class ConfigEvent {
public static enum Category { GLOBAL_CONFIG, RADAR_CONFIG, PROD_DISTRIBUTION, NATIONAL_RPS_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() {
@ -74,4 +98,12 @@ public class ConfigEvent {
else
return "{Global config change}";
}
public Category getCategory() {
return category;
}
public void setCategory(Category category) {
this.category = category;
}
}

View file

@ -35,6 +35,19 @@ import com.raytheon.rcm.request.Request;
import com.raytheon.rcm.rmr.MultipleRequest;
/**
* Request messages that can be sent to the RadarServer.
*
* <pre>
*
* SOFTWARE HISTORY
* Date Ticket# Engineer Description
* ------------ ---------- ----------- --------------------------
* ...
* 2014-02-03 DR 14762 D. Friedman Add SendConfigFile
* </pre>
*
*/
@XmlSeeAlso({ReqObj.GetRadarList.class,
ReqObj.GetRadarConfig.class, ReqObj.SetRadarConfig.class,
ReqObj.GetRadarStatus.class, ReqObj.GetRadarStatusMessages.class,
@ -45,7 +58,8 @@ import com.raytheon.rcm.rmr.MultipleRequest;
ReqObj.GetGlobalConfig.class, ReqObj.SetGlobalConfig.class,
ReqObj.ActivateRMR.class, ReqObj.CancelRMR.class,
ReqObj.GetActiveRMRs.class, ReqObj.GetAlertRequest.class,
ReqObj.SendAlertRequest.class, ReqObj.SendMessageToRPG.class})
ReqObj.SendAlertRequest.class, ReqObj.SendMessageToRPG.class,
ReqObj.SendConfigFile.class})
public class ReqObj {
@XmlRootElement
public static class GetRadarList extends ReqObj {
@ -121,6 +135,16 @@ public class ReqObj {
// 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;

View file

@ -66,6 +66,7 @@ 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.SendAlertRequest;
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;
@ -79,6 +80,19 @@ 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.
*
* <pre>
*
* SOFTWARE HISTORY
* Date Ticket# Engineer Description
* ------------ ---------- ----------- --------------------------
* ...
* 2014-02-03 DR 14762 D. Friedman Handle NDM config files.
* </pre>
*
*/
public class MsgServ implements RadarEventListener, MessageListener {
QueueConnection queueConn;
@ -313,6 +327,9 @@ public class MsgServ implements RadarEventListener, MessageListener {
} 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)

View file

@ -28,7 +28,6 @@ import java.util.Map;
import javax.xml.bind.JAXBException;
import com.raytheon.rcm.event.ConfigEvent;
import com.raytheon.rcm.event.RadarEvent;
import com.raytheon.rcm.event.RadarEventListener;
import com.raytheon.rcm.alertreq.AlertRequestDefinition;
@ -53,6 +52,19 @@ import com.raytheon.rcm.server.StatusManager;
import com.raytheon.rcm.server.StatusManager.RadarStatus;
/**
* Common RadarServer request message handler.
*
* <pre>
*
* SOFTWARE HISTORY
* Date Ticket# Engineer Description
* ------------ ---------- ----------- --------------------------
* ...
* 2014-02-03 DR 14762 D. Friedman Handle NDM config files.
* </pre>
*
*/
public class Serv {
protected RadarServer server;
@ -236,9 +248,6 @@ public class Serv {
return "The RadarServer's current configuration system does not support live changes.";
MutableConfiguration mc = (MutableConfiguration) config;
boolean result = mc.setGlobalConfig(global);
ConfigEvent ev = new ConfigEvent();
server.handleConfigEvent(ev);
if (result)
return null;
@ -251,12 +260,8 @@ public class Serv {
if (! (config instanceof MutableConfiguration))
return "The RadarServer's current configuration system does not support live changes.";
MutableConfiguration mc = (MutableConfiguration) config;
RadarConfig oldConfig = config.getConfigForRadar(rc.getRadarID());
boolean result = mc.setRadarConfig(rc);
ConfigEvent ev = new ConfigEvent(rc.getRadarID(), oldConfig, rc);
server.handleConfigEvent(ev);
if (result)
return null;
else
@ -288,4 +293,16 @@ public class Serv {
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.";
}
}

View file

@ -48,6 +48,7 @@ import org.itadaki.bzip2.BZip2InputStream;
import com.raytheon.rcm.config.EndpointConfig;
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;
@ -60,6 +61,19 @@ 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.
*
* <pre>
*
* SOFTWARE HISTORY
* Date Ticket# Engineer Description
* ------------ ---------- ----------- --------------------------
* ...
* 2014-02-03 DR 14762 D. Friedman Refactor config events.
* </pre>
*
*/
public class DataArchiveEndpoint extends RadarEventAdapter {
private RadarServer radarServer;
@ -638,7 +652,7 @@ public class DataArchiveEndpoint extends RadarEventAdapter {
@Override
public void handleConfigEvent(ConfigEvent event) {
if (event.getRadarID() == null)
if (event.getCategory() == Category.GLOBAL_CONFIG)
updateConfig();
}

View file

@ -42,6 +42,9 @@ import com.raytheon.rcm.config.RadarType;
import com.raytheon.rcm.config.StandardProductDistInfoDB;
import com.raytheon.rcm.config.Util;
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;
@ -49,6 +52,20 @@ import com.raytheon.rcm.request.RpsXml;
import com.raytheon.rcm.server.Log;
/**
* Represents the standard configuration model of the AWIPS 2 RadarServer.
*
* <pre>
*
* SOFTWARE HISTORY
* Date Ticket# Engineer Description
* ------------ ---------- ----------- --------------------------
* ...
* 2014-02-03 DR 14762 D. Friedman Handle updated NDM config files.
* Send configuration events.
* </pre>
*
*/
public class StandardConfig implements Configuration, MutableConfiguration {
final String generalPropBase = "com.raytheon.rcm";
@ -58,6 +75,7 @@ public class StandardConfig implements Configuration, MutableConfiguration {
private StandardConfigProvider provider;
private HashMap<String, RadarConfig> radars = new HashMap<String, RadarConfig>();
private StandardProductDistInfoDB prodDistInfoDB = new StandardProductDistInfoDB();
private RadarEventListener configurationEventTarget;
private int regionCodeFromWmoSiteInfo;
@ -88,11 +106,20 @@ public class StandardConfig implements Configuration, MutableConfiguration {
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);
if (prodDistInfoDB != null && rc != null)
return prodDistInfoDB.getProductDistInfo(rc, pdb.productCode, pdb);
StandardProductDistInfoDB db = prodDistInfoDB;
if (db != null && rc != null)
return db.getProductDistInfo(rc, pdb.productCode, pdb);
else
return null;
}
@ -101,8 +128,9 @@ public class StandardConfig implements Configuration, MutableConfiguration {
public ProductDistributionInfo getProductDistInfo(String radarID,
int messageCode) {
RadarConfig rc = getConfigForRadar(radarID);
if (prodDistInfoDB != null && rc != null)
return prodDistInfoDB.getProductDistInfo(rc, messageCode, null);
StandardProductDistInfoDB db = prodDistInfoDB;
if (db != null && rc != null)
return db.getProductDistInfo(rc, messageCode, null);
else
return null;
}
@ -299,6 +327,10 @@ public class StandardConfig implements Configuration, MutableConfiguration {
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...
@ -348,8 +380,13 @@ public class StandardConfig implements Configuration, MutableConfiguration {
// doc.regionCode = globals.regionCode; // Setting this directly is not supported...
doc.regionCode = null;
provider.updateRegionCode();
return saveConfig();
boolean result = saveConfig();
if (configurationEventTarget != null) {
ConfigEvent ev = new ConfigEvent(Category.GLOBAL_CONFIG);
configurationEventTarget.handleConfigEvent(ev);
}
return result;
}
private boolean saveConfig() {
@ -386,7 +423,13 @@ public class StandardConfig implements Configuration, MutableConfiguration {
RadarConfig oldConfig = radars.get(rc.getRadarID());
if (oldConfig != null) {
radars.put(rc.getRadarID(), rc);
return saveConfig();
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;
@ -431,4 +474,25 @@ public class StandardConfig implements Configuration, MutableConfiguration {
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;
}
}

View file

@ -21,9 +21,12 @@ 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.HashMap;
import java.util.NoSuchElementException;
import java.util.Scanner;
import java.util.regex.Pattern;
import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBException;
@ -40,8 +43,26 @@ import com.raytheon.rcm.config.awips1.Awips1ConfigProvider;
import com.raytheon.rcm.server.Log;
/**
* Constructs (and potentially updates) a StandardConfig based on
* various configuration files.
*
* <pre>
*
* SOFTWARE HISTORY
* Date Ticket# Engineer Description
* ------------ ---------- ----------- --------------------------
* ...
* 2014-02-03 DR 14762 D. Friedman Handle updated NDM config files.
* </pre>
*
*/
public class StandardConfigProvider implements ConfigurationProvider {
private static String WSR_88D_PROD_LIST_NAME = "prodList.txt";
private static String TDWR__PROD_LIST_NAME = "tdwrProdList.txt";
private static String WMO_SITE_INFO_NAME = "wmoSiteInfo.txt";
private static JAXBContext jaxbContext;
private static Unmarshaller u;
private static Marshaller m;
@ -113,15 +134,20 @@ public class StandardConfigProvider implements ConfigurationProvider {
config.setRadars(radars);
}
StandardProductDistInfoDB db = config.getProdDistInfoDB();
tryAddProdList(db, false, "prodList.txt");
tryAddProdList(db, true, "tdwrProdList.txt");
loadProdListDB();
updateRegionCode();
}
// Ugh. Bleh. Duplicating code from Awips1ConfigProvider
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*(#|//).*$");
@ -133,9 +159,9 @@ public class StandardConfigProvider implements ConfigurationProvider {
public void updateRegionCode() {
try {
readWmoSiteInfo(res.getNdmFile("wmoSiteInfo.txt"));
readWmoSiteInfo(res.getNdmFile(WMO_SITE_INFO_NAME));
} catch (Exception e) {
Log.errorf("Could not process wmoSiteInfo.txt: %s", e);
Log.errorf("Could not process %s.txt: %s", WMO_SITE_INFO_NAME, e);
}
}
@ -209,4 +235,43 @@ public class StandardConfigProvider implements ConfigurationProvider {
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 (Pattern.matches("^rps-.*OP.*$", name)) {
config.notifyNationalRpsLists();
} else {
Log.warnf("No action taken for new %s. You may need to restart for changes to take affect.", name);
}
return true;
}
}

View file

@ -25,8 +25,8 @@ import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.ListIterator;
import java.util.concurrent.ConcurrentHashMap;
import com.raytheon.rcm.config.Configuration;
import com.raytheon.rcm.config.EndpointConfig;
@ -35,6 +35,7 @@ import com.raytheon.rcm.config.RadarConfig;
import com.raytheon.rcm.config.RadarType;
import com.raytheon.rcm.config.Util;
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;
@ -69,6 +70,7 @@ import com.raytheon.rcm.server.StatusManager.RadarStatus;
* 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.
* </pre>
*
*/
@ -79,13 +81,11 @@ public class RPSListManager extends RadarEventAdapter {
RadarServer radarServer;
HashMap<String, RpsList> immediateLists = new HashMap<String, RpsList>(); // TODO:
// on sendRpsList (not store), set. on (true) vcp change, remove. should
// persist...
HashMap<String, RpsList> currentRpsLists = new HashMap<String, RpsList>();
ConcurrentHashMap<String, RpsList> currentRpsLists = new ConcurrentHashMap<String, RpsList>();
HashMap<String, Integer> currentVcps = new HashMap<String, Integer>();
ConcurrentHashMap<String, Integer> currentVcps = new ConcurrentHashMap<String, Integer>();
/**
* Indicates RadarServer should generate AWIPS 1 style RPS lists. There does
@ -580,23 +580,35 @@ public class RPSListManager extends RadarEventAdapter {
&& newCfg.isDedicated()
&& (oldCfg.isCollectionEnabled() != newCfg
.isCollectionEnabled())) {
String radarID = newCfg.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(newCfg, gsmData);
} else {
Log.debugf(
"RPS-relevant configuration changed for %s, but "
+ "it is not connected. Cannot send a list now.",
radarID);
resetRpsListForRadar(newCfg);
}
} else if (event.getCategory() == Category.NATIONAL_RPS_LISTS) {
Configuration config = radarServer.getConfiguration();
for (String radarID : config.getConfiguredRadarList()) {
RadarConfig rc = config.getConfigForRadar(radarID);
if (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);
}
}
}

View file

@ -30,6 +30,7 @@ import java.nio.ByteBuffer;
import org.itadaki.bzip2.BZip2InputStream;
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;
@ -38,9 +39,20 @@ import com.raytheon.rcm.message.Message;
import com.raytheon.rcm.message.MessageFormatException;
/**
* A radar server component that delivers radar products to an EDEX file
* <p>A radar server component that delivers radar products to an EDEX file
* endpoint.
*/
*
* <p>This class is obsoleted by DataArchiveEndpoint.
*
* <pre>
*
* SOFTWARE HISTORY
* Date Ticket# Engineer Description
* ------------ ---------- ----------- --------------------------
* ...
* 2014-02-03 DR 14762 D. Friedman Refactor config events.
* </pre>
*/
public class Awips2Endpoint extends RadarEventAdapter {
RadarServer radarServer;
@ -152,7 +164,7 @@ public class Awips2Endpoint extends RadarEventAdapter {
@Override
public void handleConfigEvent(ConfigEvent event) {
if (event.getRadarID() == null)
if (event.getCategory() == Category.GLOBAL_CONFIG)
updateConfig();
}

View file

@ -26,6 +26,7 @@ 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.event.ConfigEvent;
import com.raytheon.rcm.event.NotificationEvent;
import com.raytheon.rcm.event.RadarEvent;
@ -38,6 +39,16 @@ import com.raytheon.rcm.rpsmgr.RPSListManager;
* Main class for the Radar Server.
* <p>
* This is a container class for the various components of the Radar Server.
*
* <pre>
*
* SOFTWARE HISTORY
* Date Ticket# Engineer Description
* ------------ ---------- ----------- --------------------------
* ...
* 2014-02-03 DR 14762 D. Friedman Connect configuration's event target to
* the RadarServer instance.
* </pre>
*/
public class RadarServer implements RadarEventListener {
// protected ConfigurationProvider configurationProvider;
@ -97,6 +108,9 @@ public class RadarServer implements RadarEventListener {
connectionManager = new ConnectionManagerImpl(this, linkManager);
addListener(connectionManager);
// connectionManager =
if (configuration instanceof MutableConfiguration) {
((MutableConfiguration) configuration).setConfigurationEventTarget(this);
}
}
public void addDefaultListeners() {

View file

@ -17,7 +17,8 @@ Require-Bundle: com.raytheon.uf.common.localization;bundle-version="1.11.24",
com.raytheon.uf.common.serialization.comm;bundle-version="1.12.1174",
com.raytheon.uf.common.gridcoverage;bundle-version="1.0.0",
com.raytheon.uf.common.dataplugin.level;bundle-version="1.12.1174",
org.itadaki.bzip2;bundle-version="0.9.1"
org.itadaki.bzip2;bundle-version="0.9.1",
com.raytheon.uf.common.site;bundle-version="1.12.1174"
Import-Package: com.raytheon.uf.common.dataplugin.radar,
com.raytheon.uf.common.dataplugin.radar.request,
com.raytheon.uf.common.ohd

View file

@ -0,0 +1,59 @@
package com.raytheon.edex.rpgenvdata.ndm;
import java.io.File;
import com.raytheon.edex.rpgenvdata.RcmClient;
import com.raytheon.rcm.mqsrvr.ReqObj.SendConfigFile;
import com.raytheon.uf.common.site.ingest.INationalDatasetSubscriber;
import com.raytheon.uf.common.status.IUFStatusHandler;
import com.raytheon.uf.common.status.UFStatus;
import com.raytheon.uf.common.status.UFStatus.Priority;
import com.raytheon.uf.common.util.FileUtil;
/**
* Sends NDM configuration files to the RadarServer.
*
* <pre>
* SOFTWARE HISTORY
* Date Ticket# Engineer Description
* ------------ ---------- ----------- --------------------------
* 2014-02-03 DR 14762 D. Friedman Created.
* </pre>
*
*/
public class RadarServerNdmSubscriber implements INationalDatasetSubscriber {
private static final transient IUFStatusHandler statusHandler = UFStatus
.getHandler(RadarServerNdmSubscriber.class);
// TODO: duplicate..
private class MyRcmClient extends RcmClient {
@Override
public void onFailure(String detail, Exception e) {
statusHandler.handle(Priority.SIGNIFICANT, detail, e);
}
}
@Override
public void notify(String fileName, File file) {
MyRcmClient rcmClient = null;
try {
try {
rcmClient = new MyRcmClient();
rcmClient.initialize();
SendConfigFile req = new SendConfigFile();
req.fileName = file.getName();
req.fileData = FileUtil.file2bytes(file);
rcmClient.sendCheckedAndHandled(req);
} catch (Exception e) {
// TODO: maybe rely on caller exception handling?
rcmClient = null;
statusHandler.handle(Priority.SIGNIFICANT,
"Error initializing RadarServer connection", e);
}
} finally {
if (rcmClient != null)
rcmClient.close();
}
}
}

View file

@ -44,6 +44,8 @@
<bean id="radarMenuCreator" class="com.raytheon.edex.plugin.radar.util.RadarMenuUtil"/>
<bean id="import88dLocations" class="com.raytheon.edex.plugin.radar.util.Import88DLocationsUtil"/>
<bean id="radarServerNdmListener" class="com.raytheon.edex.rpgenvdata.ndm.RadarServerNdmSubscriber"/>
<bean id="marineInfoListener" class="com.raytheon.uf.edex.site.ingest.MarineInfoSubscriber">
<constructor-arg value="${db.port}" />
<constructor-arg value="${edex.home}" />
@ -181,4 +183,28 @@
<constructor-arg value="afosMasterPIL.txt" />
<constructor-arg ref="afosBrowserListener" />
</bean>
<bean factory-bean="ndmProc" factory-method="registerListener">
<constructor-arg value="prodList.txt" />
<constructor-arg ref="radarServerNdmListener" />
</bean>
<bean factory-bean="ndmProc" factory-method="registerListener">
<constructor-arg value="tdwrProdList.txt" />
<constructor-arg ref="radarServerNdmListener" />
</bean>
<bean factory-bean="ndmProc" factory-method="registerListener">
<constructor-arg value="rps-RPGOP-tcp.clear-air" />
<constructor-arg ref="radarServerNdmListener" />
</bean>
<bean factory-bean="ndmProc" factory-method="registerListener">
<constructor-arg value="rps-RPGOP-tcp.storm" />
<constructor-arg ref="radarServerNdmListener" />
</bean>
<bean factory-bean="ndmProc" factory-method="registerListener">
<constructor-arg value="rps-SPGOP-tcp.storm" />
<constructor-arg ref="radarServerNdmListener" />
</bean>
<bean factory-bean="ndmProc" factory-method="registerListener">
<constructor-arg value="wmoSiteInfo.txt" />
<constructor-arg ref="radarServerNdmListener" />
</bean>
</beans>