ASM #240
Change-Id: Ie1e0b115e991c0bdc01e929a21d36a9f1413d940 Former-commit-id: e34ceb8c86f0814c1be7af3bbd2eadec8daf48aa
This commit is contained in:
parent
a3ac0236b0
commit
969c50b80f
19 changed files with 598 additions and 161 deletions
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
26
RadarServer/com.raytheon.rcm.lib/src/com/raytheon/rcm/mqsrvr/ReqObj.java
Executable file → Normal file
26
RadarServer/com.raytheon.rcm.lib/src/com/raytheon/rcm/mqsrvr/ReqObj.java
Executable file → Normal 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;
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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.";
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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();
|
||||
}
|
||||
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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();
|
||||
}
|
||||
|
||||
|
|
|
@ -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() {
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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();
|
||||
}
|
||||
}
|
||||
}
|
|
@ -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>
|
||||
|
|
Loading…
Add table
Reference in a new issue