From b0b55a676b627bf679cbd8a67464d673764e06d8 Mon Sep 17 00:00:00 2001 From: Steve Harris Date: Thu, 12 Dec 2013 16:59:57 -0500 Subject: [PATCH] 14.1.1-13 baseline Former-commit-id: 6eef3022653638f9031a85932d8d551aba5600d2 --- cave/.dm/.dirs.dmdb | Bin 0 -> 16640 bytes cave/build/cave/customTargets.xml | 2 +- cave/build/static/linux/cave/cave.sh | 131 ++++++-- cave/build/static/linux/cave/caveUtil.sh | 33 +- .../styleRules/d2dContourStyleRules.xml | 13 +- .../derivedParameters/functions/HIWC.py | 6 +- .../.dm/.dirs.dmdb | Bin 0 -> 16640 bytes .../src/.dm/.dirs.dmdb | Bin 0 -> 16640 bytes .../src/com/.dm/.dirs.dmdb | Bin 0 -> 16640 bytes .../src/com/raytheon/.dm/.dirs.dmdb | Bin 0 -> 16640 bytes .../src/com/raytheon/uf/.dm/.dirs.dmdb | Bin 0 -> 16640 bytes .../src/com/raytheon/uf/viz/.dm/.dirs.dmdb | Bin 0 -> 16640 bytes .../raytheon/uf/viz/monitor/.dm/.dirs.dmdb | Bin 0 -> 16640 bytes .../uf/viz/monitor/scan/.dm/.dirs.dmdb | Bin 0 -> 16640 bytes .../scan/commondialogs/.dm/.items.dmdb | Bin 0 -> 16640 bytes .../scan/commondialogs/SCANUnwarnedDlg.java | 118 +++---- .../viz/monitor/scan/resource/.dm/.items.dmdb | Bin 0 -> 16640 bytes .../scan/resource/ScanResourceData.java | 154 ++++----- .../viz/monitor/scan/tables/.dm/.items.dmdb | Bin 0 -> 16640 bytes .../monitor/scan/tables/AbstractTableDlg.java | 62 ++++ .../monitor/scan/tables/SCANCellTableDlg.java | 103 +++--- .../monitor/scan/tables/SCANDmdTableDlg.java | 80 +++-- .../monitor/scan/tables/SCANMesoTableDlg.java | 46 ++- .../monitor/scan/tables/SCANTvsTableDlg.java | 47 ++- .../GFESuite/gfeclient.sh | 109 +++---- cave/com.raytheon.viz.gfe/GFESuite/ifpIMAGE | 31 +- .../src/com/raytheon/viz/gfe/GfeClient.java | 21 ++ .../viz/gfe/dialogs/GridInfoDialog.java | 246 +++++++------- .../formatterlauncher/ZoneCombinerComp.java | 6 +- .../raytheon/viz/gfe/vtec/GFEVtecUtil.java | 42 ++- .../bufrua/decoder/BUFRUAManLevelAdapter.java | 14 +- .../bufrua/decoder/BUFRUASigLevelAdapter.java | 12 +- .../util/SigWindHeightConversionList.java | 89 ++++++ .../util/SigWindHeightConversionManager.java | 134 ++++++++ .../base/bufrua/sigWindHeightConversion.xml | 300 ++++++++++++++++++ .../plugin/gfe/server/GridParmManager.java | 4 +- .../handler/SaveCombinationsFileHandler.java | 60 ++-- .../edex_static/base/gfe/isc/ifpnetCDF.py | 2 +- .../dataplugin/gfe/db/objects/GFERecord.java | 4 + rpms/build/i386/build.sh | 18 +- rpms/build/x86_64/build.sh | 32 +- 41 files changed, 1366 insertions(+), 553 deletions(-) create mode 100644 cave/.dm/.dirs.dmdb create mode 100644 cave/com.raytheon.uf.viz.monitor.scan/.dm/.dirs.dmdb create mode 100644 cave/com.raytheon.uf.viz.monitor.scan/src/.dm/.dirs.dmdb create mode 100644 cave/com.raytheon.uf.viz.monitor.scan/src/com/.dm/.dirs.dmdb create mode 100644 cave/com.raytheon.uf.viz.monitor.scan/src/com/raytheon/.dm/.dirs.dmdb create mode 100644 cave/com.raytheon.uf.viz.monitor.scan/src/com/raytheon/uf/.dm/.dirs.dmdb create mode 100644 cave/com.raytheon.uf.viz.monitor.scan/src/com/raytheon/uf/viz/.dm/.dirs.dmdb create mode 100644 cave/com.raytheon.uf.viz.monitor.scan/src/com/raytheon/uf/viz/monitor/.dm/.dirs.dmdb create mode 100644 cave/com.raytheon.uf.viz.monitor.scan/src/com/raytheon/uf/viz/monitor/scan/.dm/.dirs.dmdb create mode 100644 cave/com.raytheon.uf.viz.monitor.scan/src/com/raytheon/uf/viz/monitor/scan/commondialogs/.dm/.items.dmdb create mode 100644 cave/com.raytheon.uf.viz.monitor.scan/src/com/raytheon/uf/viz/monitor/scan/resource/.dm/.items.dmdb create mode 100644 cave/com.raytheon.uf.viz.monitor.scan/src/com/raytheon/uf/viz/monitor/scan/tables/.dm/.items.dmdb mode change 100755 => 100644 cave/com.raytheon.viz.gfe/GFESuite/ifpIMAGE create mode 100644 edexOsgi/com.raytheon.edex.plugin.bufrua/src/com/raytheon/edex/plugin/bufrua/util/SigWindHeightConversionList.java create mode 100644 edexOsgi/com.raytheon.edex.plugin.bufrua/src/com/raytheon/edex/plugin/bufrua/util/SigWindHeightConversionManager.java create mode 100644 edexOsgi/com.raytheon.edex.plugin.bufrua/utility/edex_static/base/bufrua/sigWindHeightConversion.xml diff --git a/cave/.dm/.dirs.dmdb b/cave/.dm/.dirs.dmdb new file mode 100644 index 0000000000000000000000000000000000000000..730698d65cf7fdd3ff38baba67d61b7734685385 GIT binary patch literal 16640 zcmeI&&rZTH90%~?p9>d#g!uqgwstWbmM|FzhcSX^qPJzvFe4iogG67!ix1(WdGIm( zb&Ldd;UXc*w@LeJ$6EUPkPu4dxNd7`J6DXc2Gt5Ae8oz<}_1Rwwb2<%!web0aG zdJ}m6{Sqk7|HWBhe2jZ z-Mo}_vt|lm2zzy8II=Abp$loWgq~MN3h6ATp3kC3OE+~{7gAPpciLBfxwj%xjulCL zjp`X|dM+Q>_rp%h>+#z*zw175*XwnM-hkgU?Oy5Aqd97>Dq7xBvnjLE5*R`N0uX=z T1Rwwb2tWV=5P$##wj%HYuk|4T literal 0 HcmV?d00001 diff --git a/cave/build/cave/customTargets.xml b/cave/build/cave/customTargets.xml index 9ac848da1b..8fd76c7cdc 100644 --- a/cave/build/cave/customTargets.xml +++ b/cave/build/cave/customTargets.xml @@ -413,7 +413,7 @@ - + > $HOME/$mineFile fi -hostName=`hostname -s` -LOGDIR=$HOME/caveData/logs/consoleLogs/$hostName/ +if [[ -z "$PROGRAM_NAME" ]] +then + PROGRAM_NAME="cave" +fi + +LOGDIR="$HOME/caveData/logs/consoleLogs/$hostName/" # make sure directory exists if [ ! -d $LOGDIR ]; then @@ -119,39 +175,46 @@ fi export pid=$$ curTime=`date +%Y%m%d_%H%M%S` -LOGFILE=${LOGDIR}/cave_${curTime}_pid_${pid}_console.log -export LOGFILE_CAVE=${LOGDIR}/cave_${curTime}_pid_${pid}_alertviz.log -export LOGFILE_PERFORMANCE=${LOGDIR}/cave_${curTime}_pid_${pid}_perf.log - -redirect="TRUE" -for flag in $@; do - if [ $flag == "-noredirect" ]; then - redirect="FALSE" - break - fi -done +LOGFILE="${LOGDIR}/${PROGRAM_NAME}_${curTime}_pid_${pid}_console.log" +export LOGFILE_CAVE="${LOGDIR}/${PROGRAM_NAME}_${curTime}_pid_${pid}_alertviz.log" +export LOGFILE_PERFORMANCE="${LOGDIR}/${PROGRAM_NAME}_${curTime}_pid_${pid}_perf.log" # can we write to log directory if [ -w ${LOGDIR} ]; then touch ${LOGFILE} fi +# remove "-noredirect" flag from command-line if set so it doesn't confuse any +# commands we call later. +redirect="true" +USER_ARGS=() +while [[ $1 ]] +do + if [[ "$1" == "-noredirect" ]] + then + redirect="false" + else + USER_ARGS+=("$1") + fi + shift +done + # Special instructions for the 64-bit jvm. ARCH_ARGS="" if [ -f /awips2/java/jre/lib/amd64/server/libjvm.so ]; then ARCH_ARGS="-vm /awips2/java/jre/lib/amd64/server/libjvm.so" fi -lookupINI $@ +lookupINI "${USER_ARGS[@]}" if [[ "${runMonitorThreads}" == "true" ]] ; then # nohup to allow tar process to continue after user has logged out - nohup ${dir}/monitorThreads.sh $pid >> /dev/null 2>&1 & + nohup ${CAVE_INSTALL}/monitorThreads.sh $pid >> /dev/null 2>&1 & fi -if ( [ ${redirect} == "TRUE" ] ); then - exec ${dir}/cave ${ARCH_ARGS} ${SWITCHES} ${CAVE_INI_ARG} $@ > ${LOGFILE} 2>&1 +if [[ "${redirect}" == "true" ]] ; then + exec ${CAVE_INSTALL}/cave ${ARCH_ARGS} ${SWITCHES} ${CAVE_INI_ARG} "${USER_ARGS[@]}" > ${LOGFILE} 2>&1 else - exec ${dir}/cave ${ARCH_ARGS} ${SWITCHES} ${CAVE_INI_ARG} $@ 2>&1 | tee ${LOGFILE} + exec ${CAVE_INSTALL}/cave ${ARCH_ARGS} ${SWITCHES} ${CAVE_INI_ARG} "${USER_ARGS[@]}" 2>&1 | tee ${LOGFILE} fi diff --git a/cave/build/static/linux/cave/caveUtil.sh b/cave/build/static/linux/cave/caveUtil.sh index f7cda30370..0e3d27f9da 100644 --- a/cave/build/static/linux/cave/caveUtil.sh +++ b/cave/build/static/linux/cave/caveUtil.sh @@ -1,5 +1,34 @@ #!/bin/bash +# This software was developed and / or modified by Raytheon Company, +# pursuant to Contract DG133W-05-CQ-1067 with the US Government. +# +# U.S. EXPORT CONTROLLED TECHNICAL DATA +# This software product contains export-restricted data whose +# export/transfer/disclosure is restricted by U.S. law. Dissemination +# to non-U.S. persons whether in the United States or abroad requires +# an export license or other authorization. +# +# Contractor Name: Raytheon Company +# Contractor Address: 6825 Pine Street, Suite 340 +# Mail Stop B8 +# Omaha, NE 68106 +# 402.291.0100 +# +# See the AWIPS II Master Rights File ("Master Rights File.pdf") for +# further licensing information. +# +# +# SOFTWARE HISTORY +# Date Ticket# Engineer Description +# ------------ ---------- ----------- -------------------------- +# Dec 05, 2013 #2593 rjpeter Fix getPidsOfMyRunningCaves +# Dec 05, 2013 #2590 dgilling Modified extendLibraryPath() to export a +# var if it's already been run. +# +# + + source /awips2/cave/iniLookup.sh RC=$? if [ ${RC} -ne 0 ]; then @@ -60,6 +89,8 @@ function extendLibraryPath() if [ "${1}" = "-noX" ]; then export LD_LIBRARY_PATH="${CAVE_LIB_DIRECTORY}/lib_mesa:$LD_LIBRARY_PATH" fi + + CALLED_EXTEND_LIB_PATH="true" } function copyVizShutdownUtilIfNecessary() @@ -89,7 +120,7 @@ function copyVizShutdownUtilIfNecessary() function getPidsOfMyRunningCaves() { local user=`whoami` - local caveProcs=`ps -ef | grep "/awips2/cave/cave" | grep -v "grep" | grep $user` + local caveProcs=`ps -ef | grep "/awips2/cave/cave " | grep -v "grep" | grep $user` # preserve IFS and set it to line feed only local PREV_IFS=$IFS diff --git a/cave/com.raytheon.uf.viz.d2d.ui/localization/styleRules/d2dContourStyleRules.xml b/cave/com.raytheon.uf.viz.d2d.ui/localization/styleRules/d2dContourStyleRules.xml index 610fc1f63c..52292797bc 100644 --- a/cave/com.raytheon.uf.viz.d2d.ui/localization/styleRules/d2dContourStyleRules.xml +++ b/cave/com.raytheon.uf.viz.d2d.ui/localization/styleRules/d2dContourStyleRules.xml @@ -4148,4 +4148,15 @@ in | .03937 | 0 | 4 | | |..|8000F0FF| | 16 | \ kts - + + + SnowT + + + C + + -15 -5 0 + + + + \ No newline at end of file diff --git a/cave/com.raytheon.uf.viz.derivparam.python/localization/derivedParameters/functions/HIWC.py b/cave/com.raytheon.uf.viz.derivparam.python/localization/derivedParameters/functions/HIWC.py index 7679b7df1c..118fb26d5b 100644 --- a/cave/com.raytheon.uf.viz.derivparam.python/localization/derivedParameters/functions/HIWC.py +++ b/cave/com.raytheon.uf.viz.derivparam.python/localization/derivedParameters/functions/HIWC.py @@ -20,7 +20,9 @@ # ---------------------------------------------------------------- # Returns heat index or wind chill -# +# History +# 12/02/2013 DR 14455 Qinglu Lin Changed 1.85200 to 3.6 at +# wSpd_kmh = wSpd * 1.85200 # ---------------------------------------------------------------- import numpy import T @@ -62,7 +64,7 @@ def execute2(temperature,dewpoint,relHumidity,windSpeed): def execute3(T,DpT,wSpd): TC = T - 273.15 #convert from K to C DpTC = DpT - 273.15 #convert to from K to C - wSpd_kmh = wSpd * 1.85200 #convert from m/s to km/h + wSpd_kmh = wSpd * 3.6 #convert from m/s to km/h Hi = HeatIndex.calculate(TC,DpTC) #Outputs Celsius Wc = WindChill.calculate(TC,wSpd_kmh) #Outputs Celsius HiK = numpy.where(Hi != -9999.0, celciusToKelvin(Hi),-9999.0) diff --git a/cave/com.raytheon.uf.viz.monitor.scan/.dm/.dirs.dmdb b/cave/com.raytheon.uf.viz.monitor.scan/.dm/.dirs.dmdb new file mode 100644 index 0000000000000000000000000000000000000000..72bab39d1ab0f15ad4a51a64e0b476842144fe82 GIT binary patch literal 16640 zcmeI&K~BOz6oBDDaKlE9z`}(a3++r}STqqW>W0Lq7iek?HPVt&Nc0kV2#@3;JccvS zCWRPQBue;S@|fwgoy_|}7t_=q4hIi?|3V0HuCpdYOE;!%nASwu(PQGUa%|4+eE7rL zYh8q?O~=vqvR(WhRQjf?9cm|QV;mx|ErIem+tz%{v!4RyfAqDVrBgKm2q1s}0tg_0 z00Nr@iv54F*I(KHZ@!VU2q1s}0tg_000IagfB*srAh0t6#s0ruEcj;I3vUw$Ab{=fM4dgc56?%KNmbB!7M&{>~m;mX?e*r!et@5@Grd6Z4# zH1X`NZ#|vGkDl$?swb6dw)MJxsi|h_YUyl< q`@73(QF`oHr-}0Yh*+ntAevNZS_!Vf1vmspV&E9q zZ6c*9BN9aVTXJo`+LGU|(~D9+2rlo({<#q1O!tlu`+6{A&y1#36CD$~wYB-K_013N zu5}V7H{JHW*5m4Pr#3fJ?a(=G#8@JL00IagfB*srAbcc`~AblvjDTl#NKu9M%i@Z?mG6NyJ>IhL5O9X&yy_m z?4jlK^Z0od785TDm+?TKw({_$n8aCXEgr39@@h@9G%2#&nnz(enCFq%)Sun|Qb_bHEK&%>8u7-y+zK-E6f(DAlNLd@cP zl4PlGw=AcT$Is)i82V8-iNIM1Hq zsPLujoyxY?@?6((JJl;EkeAYNZC5&7*Pf3+x-u}go=lSm-}Y?TcBO3SeXD)`(qrvV z)%Bl1_QYN1e$eaQT$fF%+OZls>Wd_V*`RSCBY*$`2q1s}0tg_000Iagu#N)Xa=sL{ literal 0 HcmV?d00001 diff --git a/cave/com.raytheon.uf.viz.monitor.scan/src/com/raytheon/.dm/.dirs.dmdb b/cave/com.raytheon.uf.viz.monitor.scan/src/com/raytheon/.dm/.dirs.dmdb new file mode 100644 index 0000000000000000000000000000000000000000..99cdff69427e455f787dfc5160599e2dc34acc07 GIT binary patch literal 16640 zcmeI(u};E37{KuZbYaoK2ViiurR_D!&_qm87ZL}3fTosEBP}T{iN1_JgpcIlV|WLx zp~Qi~#FG5K?#{{Gf)0eX$jy{pzPCiT))?n5;lZ|hEoWt1)A zH1VvyVRy6Wc^>3bFASEE8KyHM3tsYRlqNlX4G^RN literal 0 HcmV?d00001 diff --git a/cave/com.raytheon.uf.viz.monitor.scan/src/com/raytheon/uf/.dm/.dirs.dmdb b/cave/com.raytheon.uf.viz.monitor.scan/src/com/raytheon/uf/.dm/.dirs.dmdb new file mode 100644 index 0000000000000000000000000000000000000000..41940fd55c91111c0078ce30a37f92c586229c51 GIT binary patch literal 16640 zcmeI&O-{l<6u|L8aKlE9;KHpf?M!1>G!aw379=i=3wNZJP$MlVg+#C81w4d@@cn^am>9G6p?h-?zpd?EuYKxn+WTq{Vi9Gt zI8A(~Yq{+#dYKOMu^$c>ksYQJD;vJ%<0wt6`N-1$W=+y0&eP1Ag~P<2WuXbO%OHC` zvUN~9I**@x$8%IqD%Gy% z@Jr5(6P-^-_m+6LeXKs9*UUZB%JUOZcd5oRM*sl?5I_I{1Q0*~0R#|0U|Rw|5iS!A literal 0 HcmV?d00001 diff --git a/cave/com.raytheon.uf.viz.monitor.scan/src/com/raytheon/uf/viz/.dm/.dirs.dmdb b/cave/com.raytheon.uf.viz.monitor.scan/src/com/raytheon/uf/viz/.dm/.dirs.dmdb new file mode 100644 index 0000000000000000000000000000000000000000..a517d9dc7690c106e6d15735865a2b60fb520e98 GIT binary patch literal 16640 zcmeI&O-{l<6bJCZk6^lyBe-yDOFPpT7EQzyKNb~ZxIj}&sF9YGLZVl4;~_i@2k-#C zSEdGtJ4{H!f0E%%r?1Vt-)^S(LC_m?{c9n_74?P?EeafuIC857G$)Q%uK8Z=n;$&h zQW0DmwbR8imcIupV;+)2<8EUPmk@ve1Rwwb2tWV=5P$##AOHaf)IdP*|MgyfZU0|` z)nkbe*joWUm;Bz_>QVT%0@b$VZr@1fc+&-2; zhw(3Zw zjIs_|_a8Mk&S}0y{X_))hxL#1Jb7$WdHyG literal 0 HcmV?d00001 diff --git a/cave/com.raytheon.uf.viz.monitor.scan/src/com/raytheon/uf/viz/monitor/.dm/.dirs.dmdb b/cave/com.raytheon.uf.viz.monitor.scan/src/com/raytheon/uf/viz/monitor/.dm/.dirs.dmdb new file mode 100644 index 0000000000000000000000000000000000000000..b1215f56d1c36a2ab5f2a3ac90ceb66f2c14250e GIT binary patch literal 16640 zcmeI&O-{l<6u|MKuwf%daN*XLw$m6EO+@R*24kWZAhm=VX-O$0dMXd$VLX5ba9*7z zg}5{j;{PSXd_CyQZ&L;ujYe0G!|1}YtaDvjmetdh)NQFH>V_V(I*q=}?R`X}`y0Ip z*_)1|&!4(_J!rJ0sU2Fk8)I}4KmY**5ZJareP7=8b-5k_2q1s}0tozH0r~#%weQKWAD1O7x6f2E?$p)=prHWRjiU?k>*+G_HD0Q zBro%EISu3SDskd`W*6hva+>6sy`0#q^v#~-Sz6|WEuZWxidd4II>}j19G&EtBuA3E z^CEvv;xbfjaHa-9Kk$9eA2xelq^_0cyT0Nv7^>mp&g>K-gfv;3oFZ!1~ xw@&nUPnVAMa5=ndY+8@WoP^j^vFXxCr-=Xp2q1s}0tg_000IagfWXcKz5yz27VH23 literal 0 HcmV?d00001 diff --git a/cave/com.raytheon.uf.viz.monitor.scan/src/com/raytheon/uf/viz/monitor/scan/.dm/.dirs.dmdb b/cave/com.raytheon.uf.viz.monitor.scan/src/com/raytheon/uf/viz/monitor/scan/.dm/.dirs.dmdb new file mode 100644 index 0000000000000000000000000000000000000000..3629c1037196383b68af23b78e36f0f0d036fd72 GIT binary patch literal 16640 zcmeI(!A{#S7zc2-WsFr~;}JOQO41~*CJvQWNMJ~WPQauccF95*nMzY7X(f094m=D8 zB(w|aL+k-|*kO;s=fq}B)lDF!La2XBt{wM_`$zLXBt_ zL@SEw&=`9$b}hbp_QiHTZc`E>H!5%br#1jK%$IyZ%KtzOMdwn!8L5P(4W0^&LPrTl4&Gs^RSH6JaU z|BHdRf&c^{009U<00IzrsK7j({U2(AI0!%h0uXp&0eSwf$z^;fdpWBp5P$##AOHaf zKmY;|fB*y_009U*xqv+X%Xid;-}g5r-UWylF*c&Q>_?}kQST`9y3x0UvY@e_R7JVX z8^(q~oP<%YWi&Li9tYjNm!7nIZy4xww-$S6=}8dvw861949_*1E=;3XOMI`VC$TSr zbQPozj&%ysWssf)71mJi$InpbJ9CSYIZ#oiz#+2** z|4-B!$DF3k`HSuyQC&>EuiZdwR9R?Dx!zDeE3R$updjDUaNhcMH76K4}00bZa0SG_<0uXrq0(S=xW0n8_ literal 0 HcmV?d00001 diff --git a/cave/com.raytheon.uf.viz.monitor.scan/src/com/raytheon/uf/viz/monitor/scan/commondialogs/.dm/.items.dmdb b/cave/com.raytheon.uf.viz.monitor.scan/src/com/raytheon/uf/viz/monitor/scan/commondialogs/.dm/.items.dmdb new file mode 100644 index 0000000000000000000000000000000000000000..9637c565e7b0215edab7edde88ff851f155a9d5f GIT binary patch literal 16640 zcmeI&O^(_y7zW@#+f6p@V!CJ1Es0}00Tz+SOkk?2psK%X6U>k)At-TZJ16ORdV(IJ ziyosk1Sx~6N@zx^s=k(t?c}rJdz_6U;>l$6Hj2+J%Npw1vaBb%G3`UsnsVsqYu2O2 z*xdW)OFVgXsgp3d>GJsJzTJJc8-3H&4(+c;*D!$`5x z-dse}ck550Sj&05x^k|?Ry32*aX0qrujPbh(qmE$*fzY^U(7>K465} zi*zNshZt%nOPPEut1Jw9ge8Q{W`g;gkbb|%1Jd^cDF~%OLhOZ9$+BCfH!`GTzj%v54f_54mz5itgxvFceBcwGG0GxFxW_!kbtSrbbi_Rx`^=}DvGZUYP;=KG zGtX4Ym{%{QgsRGrQ{U$Ue!;n&mR1MJ;8%cB+N5O>dkmU#BWBoH7w>w=5D9=c!obSEc*A z4Y4;xek~Jqly%d9#(d0oS<;coU)Pv39v`MQwn%5$+~H0~@9Xfew{@$Zk@j5oJGwr# zcE4%*A$mO>#qrBa=SB2BYAm5+xUQz0?Hg-9-GJfB*y_009U<00Izz00ba# Gg1|2xV^25$ literal 0 HcmV?d00001 diff --git a/cave/com.raytheon.uf.viz.monitor.scan/src/com/raytheon/uf/viz/monitor/scan/commondialogs/SCANUnwarnedDlg.java b/cave/com.raytheon.uf.viz.monitor.scan/src/com/raytheon/uf/viz/monitor/scan/commondialogs/SCANUnwarnedDlg.java index 08d784e311..4b79f93070 100644 --- a/cave/com.raytheon.uf.viz.monitor.scan/src/com/raytheon/uf/viz/monitor/scan/commondialogs/SCANUnwarnedDlg.java +++ b/cave/com.raytheon.uf.viz.monitor.scan/src/com/raytheon/uf/viz/monitor/scan/commondialogs/SCANUnwarnedDlg.java @@ -20,9 +20,6 @@ package com.raytheon.uf.viz.monitor.scan.commondialogs; import org.eclipse.swt.SWT; -import org.eclipse.swt.events.MouseEvent; -import org.eclipse.swt.events.MouseMoveListener; -import org.eclipse.swt.events.MouseTrackAdapter; import org.eclipse.swt.events.SelectionAdapter; import org.eclipse.swt.events.SelectionEvent; import org.eclipse.swt.graphics.Font; @@ -37,8 +34,8 @@ import org.eclipse.swt.widgets.Shell; import org.eclipse.swt.widgets.Spinner; import com.raytheon.uf.common.monitor.scan.config.SCANConfig; -import com.raytheon.uf.common.monitor.scan.config.UnwarnedConfig; import com.raytheon.uf.common.monitor.scan.config.SCANConfigEnums.ScanColors; +import com.raytheon.uf.common.monitor.scan.config.UnwarnedConfig; import com.raytheon.viz.ui.dialogs.CaveSWTDialog; /** @@ -51,6 +48,10 @@ import com.raytheon.viz.ui.dialogs.CaveSWTDialog; * Date Ticket# Engineer Description * ------------ ---------- ----------- -------------------------- * Oct 25, 2009 lvenable Initial creation + * 04 Dec 2013 #2592 lvenable Update how the checkboxes are handled + * (background/foreground colors) since the Redhat + * 6 upgrade causes the check in the checkbox to be + * colored the same as the background. * * * @@ -221,21 +222,14 @@ public class SCANUnwarnedDlg extends CaveSWTDialog implements gd = new GridData(SWT.CENTER, SWT.DEFAULT, true, false); gd.horizontalSpan = 4; gd.verticalIndent = 20; - unwarnedTorChk = new Button(controlComp, SWT.CHECK); - unwarnedTorChk.setText("Unwarned TOR"); + unwarnedTorChk = createCheckLabelColor(controlComp, gd, "Unwarned TOR"); unwarnedTorChk.setSelection(cfgData.getUnwarnedTor()); - unwarnedTorChk.setBackground(SCANConfig.getInstance().getScanColor( - ScanColors.Unwarned)); - unwarnedTorChk.setForeground(getDisplay().getSystemColor( - SWT.COLOR_WHITE)); - unwarnedTorChk.setLayoutData(gd); unwarnedTorChk.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(SelectionEvent e) { enableTorControls(); } }); - setupButtonMouseListeners(unwarnedTorChk); gd = new GridData(SWT.LEFT, SWT.CENTER, false, true); gd.horizontalSpan = 2; @@ -284,21 +278,14 @@ public class SCANUnwarnedDlg extends CaveSWTDialog implements gd = new GridData(SWT.CENTER, SWT.DEFAULT, true, false); gd.horizontalSpan = 4; gd.verticalIndent = 20; - unwarnedSvrChk = new Button(controlComp, SWT.CHECK); - unwarnedSvrChk.setText("Unwarned SVR"); + unwarnedSvrChk = createCheckLabelColor(controlComp, gd, "Unwarned SVR"); unwarnedSvrChk.setSelection(cfgData.getUnwarnedSvr()); - unwarnedSvrChk.setBackground(SCANConfig.getInstance().getScanColor( - ScanColors.Unwarned)); - unwarnedSvrChk.setForeground(getDisplay().getSystemColor( - SWT.COLOR_WHITE)); - unwarnedSvrChk.setLayoutData(gd); unwarnedSvrChk.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(SelectionEvent e) { enableSvrControls(); } }); - setupButtonMouseListeners(unwarnedSvrChk); gd = new GridData(SWT.LEFT, SWT.CENTER, false, true); gd.horizontalSpan = 2; @@ -549,59 +536,58 @@ public class SCANUnwarnedDlg extends CaveSWTDialog implements infoText.append("SCAN identifies those storm cells that contain a\n"); infoText.append("Tornado Vortex Signature (TVS) and to some extent\n"); - infoText - .append("severe weather (based on various storm cell parameters).\n"); - infoText - .append("Now SCAN can determine which storm cells currently have\n"); + infoText.append("severe weather (based on various storm cell parameters).\n"); + infoText.append("Now SCAN can determine which storm cells currently have\n"); infoText.append("an active TOR or SVR warning and which do not. For\n"); - infoText - .append("those that do not, the SCAN user can set various storm\n"); - infoText - .append("cell parameter thresholds (see below). If these thresholds\n"); - infoText - .append("are met or exceeded and no TOR and/or SVR is in effect\n"); - infoText - .append("in the polygon where the cell is located, an Unwarned Storm\n"); + infoText.append("those that do not, the SCAN user can set various storm\n"); + infoText.append("cell parameter thresholds (see below). If these thresholds\n"); + infoText.append("are met or exceeded and no TOR and/or SVR is in effect\n"); + infoText.append("in the polygon where the cell is located, an Unwarned Storm\n"); infoText.append("Alarm will be issued.\n\n"); - infoText - .append("To turn this functionality on for TOR and/or SVR warnings,\n"); - infoText - .append("simply click the toggle below on and then check and specify\n"); - infoText - .append("the thresholds you would like be used in order to issue a TOR\n"); - infoText - .append("and/or SVR Unwarned Storm Cell Alarm. You will know that\n"); - infoText - .append("an Unwarned Storm Alarm has been issued when the storm\n"); - infoText - .append("cell identifier in the Storm Cell Table changes color to\n"); - infoText - .append("magenta for TOR warnings and yellow for SVR warnings."); + infoText.append("To turn this functionality on for TOR and/or SVR warnings,\n"); + infoText.append("simply click the toggle below on and then check and specify\n"); + infoText.append("the thresholds you would like be used in order to issue a TOR\n"); + infoText.append("and/or SVR Unwarned Storm Cell Alarm. You will know that\n"); + infoText.append("an Unwarned Storm Alarm has been issued when the storm\n"); + infoText.append("cell identifier in the Storm Cell Table changes color to\n"); + infoText.append("magenta for TOR warnings and yellow for SVR warnings."); } - private void setupButtonMouseListeners(final Button btn) { - btn.addMouseMoveListener(new MouseMoveListener() { - @Override - public void mouseMove(MouseEvent e) { - btn.setForeground(shell.getDisplay().getSystemColor( - SWT.COLOR_BLACK)); - } + /** + * Create a composite that contains a checkbox with no text and a colored + * label. + * + * @param parentComp + * Parent composite. + * @param gd + * GridData used for the composite. + * @param labelText + * Text for the label. + * @return The checkbox that is created. + */ + private Button createCheckLabelColor(Composite parentComp, GridData gd, + String labelText) { - }); + GridLayout gl = new GridLayout(2, false); + gl.marginHeight = 2; + gl.marginWidth = 2; + gl.horizontalSpacing = 0; - btn.addMouseTrackListener(new MouseTrackAdapter() { - @Override - public void mouseExit(MouseEvent e) { - btn.setForeground(shell.getDisplay().getSystemColor( - SWT.COLOR_WHITE)); - } + Composite chkLblComp = new Composite(parentComp, SWT.NONE); + chkLblComp.setLayout(gl); + chkLblComp.setLayoutData(gd); - @Override - public void mouseEnter(MouseEvent e) { - btn.setForeground(shell.getDisplay().getSystemColor( - SWT.COLOR_BLACK)); - } - }); + gd = new GridData(18, SWT.DEFAULT); + Button chkBox = new Button(chkLblComp, SWT.CHECK); + chkBox.setLayoutData(gd); + + Label lbl = new Label(chkLblComp, SWT.NONE); + lbl.setBackground(SCANConfig.getInstance().getScanColor( + ScanColors.Unwarned)); + lbl.setForeground(getDisplay().getSystemColor(SWT.COLOR_WHITE)); + lbl.setText(" " + labelText); + + return chkBox; } @Override diff --git a/cave/com.raytheon.uf.viz.monitor.scan/src/com/raytheon/uf/viz/monitor/scan/resource/.dm/.items.dmdb b/cave/com.raytheon.uf.viz.monitor.scan/src/com/raytheon/uf/viz/monitor/scan/resource/.dm/.items.dmdb new file mode 100644 index 0000000000000000000000000000000000000000..2b4d5e85ce4909d0cd7d44908e617b51bfb1ba90 GIT binary patch literal 16640 zcmeI&!EV|x7zgmsZI@iO!@4ssKoZAx2!}|d4Q!gkHUZn+1S8TFf)WR9eS$sJw1?P3 z>@j9TqEggbD@}BNOXhQuFCpL0T%3@MMuTabTv(RX*S%#~uXHf+xrwGV1HI3Baj}Q|00Izz00bZa0SG_<0uX?}2?*5d z|9Y)|XZ?QycaK|y00bcLAc5xj?t?CZlb@V`dEWi{$yJ4dAOHafKmY;|`0oYk_5ZUP z;@x9|w9y~{0SG_<0uX=z1Rwwb2tWV=5cuZ;_4>bl2X^QG{r#h70VYT9YyHyke3FXw zSeAKJq%sjoI9FmT4yw_4zjdB&t)Kg7SzB3@S-y^l=lFJ}C;^N4W5dejT-MRqMa zO-^X1OPPKxt5rljHt+Ho6Mi6t6r6{GcRf$Y1(^l2u4gZ#N|&87yO9wg0SWDu%2s+z z!+`Q`FAVozR&Hb(F~Ym7$30G|Ph)*)LJ4Kmqdgi>-ybmIC!BJhQF;*!1K%9wLrP5d zDJAu#lu%U}F`skRW0#ECS=o`_R3TC&=aFYNmr~4i!PTr(5wQz-y%A~|rD7}HG+#M| z_^y^RUpv*p*=9G+Dqm+RFPu`tx@D1?B)3U&tA(qR+&anKB^5Qld+%J>n * @@ -97,56 +99,37 @@ public class ScanResourceData extends AbstractRequestableResourceData { protected AbstractVizResource constructResource( LoadProperties loadProperties, PluginDataObject[] objects) throws VizException { - List uris = getScan().getAvailableUris( - ScanTables.valueOf(tableType), icao); - try { - long t0 = System.currentTimeMillis(); - // Forces ScanMonitor to grab data back for one extra hour 1/2 past - // the first time. - Calendar firstCal = ((ScanRecord) objects[0]).getDataTime() - .getRefTimeAsCalendar(); - firstCal.add(Calendar.MINUTE, -90); - Date firstDate = firstCal.getTime(); - int count = 0; - List recordsToLoad = new ArrayList( - uris.size()); - for (String uri : uris) { - ScanRecord record = new ScanRecord(uri); - if (record.getDataTime().getRefTime().after(firstDate)) { - recordsToLoad.add(record); - } - } - ScanRecord[] records = recordsToLoad.toArray(new ScanRecord[0]); - populateRecords(records); - for (ScanRecord record : records) { - if ((record.getTableData() != null) - && (record.getDataTime() != null) - && (record.getTableData().getVolScanTime() != null)) { + if (objects.length > 0) { - getScan().setTableData(icao, record.getTableData(), - /* - * TODO: This should be the volume scan time, but - * {Radar,Scan}Record.getVolScanTime is actually the radar - * product generation time. - */ - record.getDataTime().getRefTime(), record.getTilt(), - record.getDataTime().getRefTime(), tableType); - count++; - - if (record.getType().equals(ScanTables.DMD.name())) { - if (dataObjectMap == null) { - dataObjectMap = new HashMap(); - } - dataObjectMap.put(record.getDataTime(), record); + List uris = getScan().getAvailableUris( + ScanTables.valueOf(tableType), icao); + try { + long t0 = System.currentTimeMillis(); + // Forces ScanMonitor to grab data back for one extra hour 1/2 + // past + // the first time. + Calendar firstCal = ((ScanRecord) objects[0]).getDataTime() + .getRefTimeAsCalendar(); + firstCal.add(Calendar.MINUTE, -90); + Date firstDate = firstCal.getTime(); + int count = 0; + List recordsToLoad = new ArrayList( + uris.size()); + for (String uri : uris) { + ScanRecord record = new ScanRecord(uri); + if (record.getDataTime().getRefTime().after(firstDate)) { + recordsToLoad.add(record); } } - } + ScanRecord[] records = recordsToLoad.toArray(new ScanRecord[0]); + + populateRecords(records); + for (ScanRecord record : records) { + if ((record.getTableData() != null) + && (record.getDataTime() != null) + && (record.getTableData().getVolScanTime() != null)) { - // populate the DMD data map - if (tableType.equals(ScanTables.DMD.name())) { - if (dataObjectMap != null) { - for (ScanRecord record : dataObjectMap.values()) { getScan().setTableData(icao, record.getTableData(), /* * TODO: This should be the volume scan time, but @@ -154,39 +137,64 @@ public class ScanResourceData extends AbstractRequestableResourceData { * radar product generation time. */ record.getDataTime().getRefTime(), record.getTilt(), - record.getDataTime().getRefTime(), - record.getType()); - getScan().setDmdTilt(record.getTilt(), icao); - getScan().addDmdScanRecord(record); + record.getDataTime().getRefTime(), tableType); + count++; + + if (record.getType().equals(ScanTables.DMD.name())) { + if (dataObjectMap == null) { + dataObjectMap = new HashMap(); + } + dataObjectMap.put(record.getDataTime(), record); + } } } - } - long t4 = System.currentTimeMillis(); - System.out.println("Loaded " + count + " out of " + uris.size() - + " objects in " + (t4 - t0) + "ms"); - // need to update the dialog here after the - // scanResourceData has been fully populated - getScan().setInstantiated(true); - if ((getScan().getDialog(ScanTables.valueOf(tableType), icao) != null) - && !getScan() - .getDialog(ScanTables.valueOf(tableType), icao) - .getCurrentShell().isDisposed()) { - DataTime time = getScan().getMostRecent(getScan(), tableType, - icao); - if (time != null) { - getScan().updateDialog( - ScanTables.valueOf(tableType), - icao, - time.getRefTime(), - time.getRefTime(), - getScan().getTiltAngle( - ScanTables.valueOf(tableType), icao)); + // populate the DMD data map + if (tableType.equals(ScanTables.DMD.name())) { + if (dataObjectMap != null) { + for (ScanRecord record : dataObjectMap.values()) { + getScan().setTableData(icao, record.getTableData(), + /* + * TODO: This should be the volume scan time, but + * {Radar,Scan}Record.getVolScanTime is actually the + * radar product generation time. + */ + record.getDataTime().getRefTime(), + record.getTilt(), + record.getDataTime().getRefTime(), + record.getType()); + getScan().setDmdTilt(record.getTilt(), icao); + getScan().addDmdScanRecord(record); + } + } } + long t4 = System.currentTimeMillis(); + + System.out.println("Loaded " + count + " out of " + uris.size() + + " objects in " + (t4 - t0) + "ms"); + // need to update the dialog here after the + // scanResourceData has been fully populated + getScan().setInstantiated(true); + if ((getScan().getDialog(ScanTables.valueOf(tableType), icao) != null) + && !getScan() + .getDialog(ScanTables.valueOf(tableType), icao) + .getCurrentShell().isDisposed()) { + DataTime time = getScan().getMostRecent(getScan(), + tableType, icao); + if (time != null) { + getScan().updateDialog( + ScanTables.valueOf(tableType), + icao, + time.getRefTime(), + time.getRefTime(), + getScan().getTiltAngle( + ScanTables.valueOf(tableType), icao)); + } + } + } catch (Exception e) { + e.printStackTrace(); + getScan().closeDialog(icao); } - } catch (Exception e) { - e.printStackTrace(); - getScan().closeDialog(icao); } return new ScanResource(this, loadProperties); } diff --git a/cave/com.raytheon.uf.viz.monitor.scan/src/com/raytheon/uf/viz/monitor/scan/tables/.dm/.items.dmdb b/cave/com.raytheon.uf.viz.monitor.scan/src/com/raytheon/uf/viz/monitor/scan/tables/.dm/.items.dmdb new file mode 100644 index 0000000000000000000000000000000000000000..03de2424d1ffe13c1bb98f56159c4db3c48e67a2 GIT binary patch literal 16640 zcmeI2O>Wyp6vt`TMi9b4yRfs?B3n!I$&UpA$)=p5u-c#&vMxmqE2WZUh?LOg1UW($ zJwO+|LA&U(2k4@U9-xaJqHicsq7)Hs9J{7~H^6X)nu&>YUeDOOkU%({v+@O5=_q@%vW}&aUpu^Em8^>_BT!EaM zatl0z3ZMd2R{);l!)#Hgx})eHDu4Du4>00;s^FE3o+fhu^GpS^Ix~Gdr}}Xd5`T_Zze)tzME&f-vm{ zy`l1l-_~CTv!E~=u=@k-pzQrRZw+InCdpuY?NL%^<{(w0)9E1csHDQ>l$h~gs7`Ym z%MAM}{4SY}JXT1g9HoPi@+fyK zE^XIw=7S|SD)a=Ews0kpoHO3y1a3&VfXcYVZPpf)`I1W}I6t#4ET+%O3r=-qoYTdv z(jc8Co?uc6SDXuB4w6&#eWr+tJfe5|Du`ghQxM9d=0pu|g0%02!Av#6@u)rten|Uj zd|jW$_1WM}eKfuvq~l3F34`lKG6}U&BR6VH;|3Tt7DkQCDAm#@jjfR|Zzki{Doi)# zTbw=f#f8Y`$J#JAU46lYpI=%C4$M!77UI~>e z_Ag)5zi7Q`t)Kv#{CCk4=x1fC_p3{4VARYER~tR%?>UE8=dCZ#)o^%k9Ex=g?G=YS zq?RL{h`FvSLQ4u_D@xsfF;~Slv5OoE;ELRlLz`Q>$l=yV>@)*y(@ERd@Wzh*m literal 0 HcmV?d00001 diff --git a/cave/com.raytheon.uf.viz.monitor.scan/src/com/raytheon/uf/viz/monitor/scan/tables/AbstractTableDlg.java b/cave/com.raytheon.uf.viz.monitor.scan/src/com/raytheon/uf/viz/monitor/scan/tables/AbstractTableDlg.java index 043f84077d..c5dca9b845 100644 --- a/cave/com.raytheon.uf.viz.monitor.scan/src/com/raytheon/uf/viz/monitor/scan/tables/AbstractTableDlg.java +++ b/cave/com.raytheon.uf.viz.monitor.scan/src/com/raytheon/uf/viz/monitor/scan/tables/AbstractTableDlg.java @@ -40,8 +40,10 @@ import org.eclipse.swt.graphics.Color; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.Button; +import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Dialog; import org.eclipse.swt.widgets.Display; +import org.eclipse.swt.widgets.Label; import org.eclipse.swt.widgets.Menu; import org.eclipse.swt.widgets.MenuItem; import org.eclipse.swt.widgets.MessageBox; @@ -78,6 +80,10 @@ import com.raytheon.uf.viz.monitor.scan.commondialogs.LoadSaveConfigDlg.DialogTy * Apr 26, 2013 #1945 lvenable Some code cleanup. * 06 Jun 2013 #2065 lvenable Added convenience method to alert the user to use the clear * button if they want to close the dialog. + * 04 Dec 2013 #2592 lvenable Update how the checkboxes are handled + * (background/foreground colors) since the Redhat + * 6 upgrade causes the check in the checkbox to be + * colored the same as the background. * * * @author lvenable @@ -642,6 +648,62 @@ public abstract class AbstractTableDlg extends Dialog implements IMonitor, // this will mean firing a get graphData Event back to the monitor } + /** + * This is a method that will create a composite that contains a checkbox + * with no text and a label. Since the upgrade to Redhat 6, a checkbox that + * has its foreground and background color changed can cause the check in + * the checkbox to become invisible if the foreground color is too light. + * This method creates an ordinary checkbox with the label and composite + * background being colored. + * + * @param parentComp + * Parent composite. + * @param bgColor + * Background color. + * @param fgColor + * Foreground color. + * @param labelText + * Text for the label. + * @param colorComposite + * Flag indicating if the composite background color should be + * set. + * @param toolTipText + * Set the toolTipText + * @return The checkbox control that is created. + */ + protected final Button createCheckLabelComposite(Composite parentComp, + Color bgColor, Color fgColor, String labelText, + boolean colorComposite, String toolTipText) { + + GridData gd = new GridData(); + GridLayout gl = new GridLayout(2, false); + gl.marginHeight = 2; + gl.marginWidth = 2; + gl.horizontalSpacing = 0; + + Composite chkLblComp = new Composite(parentComp, SWT.NONE); + chkLblComp.setLayout(gl); + chkLblComp.setLayoutData(gd); + + if (colorComposite) { + chkLblComp.setBackground(bgColor); + } + + gd = new GridData(18, SWT.DEFAULT); + Button chkBox = new Button(chkLblComp, SWT.CHECK); + chkBox.setLayoutData(gd); + + Label lbl = new Label(chkLblComp, SWT.NONE); + lbl.setBackground(bgColor); + lbl.setForeground(fgColor); + lbl.setText(" " + labelText); + + chkBox.setToolTipText(toolTipText); + lbl.setToolTipText(toolTipText); + + return chkBox; + } + @Override public ArrayList getMonitorControlListeners() { return controlListeners; diff --git a/cave/com.raytheon.uf.viz.monitor.scan/src/com/raytheon/uf/viz/monitor/scan/tables/SCANCellTableDlg.java b/cave/com.raytheon.uf.viz.monitor.scan/src/com/raytheon/uf/viz/monitor/scan/tables/SCANCellTableDlg.java index 2ea4536bd9..9caf60559b 100644 --- a/cave/com.raytheon.uf.viz.monitor.scan/src/com/raytheon/uf/viz/monitor/scan/tables/SCANCellTableDlg.java +++ b/cave/com.raytheon.uf.viz.monitor.scan/src/com/raytheon/uf/viz/monitor/scan/tables/SCANCellTableDlg.java @@ -92,6 +92,10 @@ import com.raytheon.viz.ui.EditorUtil; * some bad code, and some code cleanup. * 06 Jun 2013 #2065 lvenable Added code to alert the user to use the clear * button if they want to close the dialog. + * 04 Dec 2013 #2592 lvenable Update how the checkboxes are handled + * (background/foreground colors) since the Redhat + * 6 upgrade causes the check in the checkbox to be + * colored the same as the background. * * * @@ -306,13 +310,11 @@ public class SCANCellTableDlg extends AbstractTableDlg implements } }); - gd = new GridData(); configBtn = new Button(controlComp, SWT.PUSH); configBtn.setText("Configurations"); configBtn .setBackground(scanCfg.getScanColor(ScanColors.Configurations)); configBtn.setForeground(display.getSystemColor(SWT.COLOR_WHITE)); - configBtn.setLayoutData(gd); configBtn.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(SelectionEvent e) { @@ -343,12 +345,10 @@ public class SCANCellTableDlg extends AbstractTableDlg implements }); setupButtonMouseListeners(rankBtn); - gd = new GridData(); attribBtn = new Button(controlComp, SWT.PUSH); attribBtn.setText("Attributes"); attribBtn.setBackground(scanCfg.getScanColor(ScanColors.Attributes)); attribBtn.setForeground(display.getSystemColor(SWT.COLOR_WHITE)); - attribBtn.setLayoutData(gd); attribBtn.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(SelectionEvent e) { @@ -358,12 +358,10 @@ public class SCANCellTableDlg extends AbstractTableDlg implements }); setupButtonMouseListeners(attribBtn); - gd = new GridData(); tablesBtn = new Button(controlComp, SWT.PUSH); tablesBtn.setText("Tables"); tablesBtn.setBackground(scanCfg.getScanColor(ScanColors.Default)); tablesBtn.setForeground(display.getSystemColor(SWT.COLOR_WHITE)); - tablesBtn.setLayoutData(gd); tablesBtn.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(SelectionEvent e) { @@ -376,55 +374,58 @@ public class SCANCellTableDlg extends AbstractTableDlg implements }); setupButtonMouseListeners(tablesBtn); - gd = new GridData(); - linkToFrameChk = new Button(controlComp, SWT.CHECK); - linkToFrameChk.setText("Link to Frame "); - linkToFrameChk.setBackground(scanCfg - .getScanColor(ScanColors.LinkToFrame)); - linkToFrameChk.setForeground(display.getSystemColor(SWT.COLOR_WHITE)); + /* + * Link to Frame + */ + linkToFrameChk = createCheckLabelComposite(controlComp, + scanCfg.getScanColor(ScanColors.LinkToFrame), + display.getSystemColor(SWT.COLOR_WHITE), "Link to Frame ", + true, null); + linkToFrameChk.setSelection(cellCfgMgr.getScanCellCfgXML() .getLinkToFrame()); - linkToFrameChk.setLayoutData(gd); + linkToFrameChk.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(SelectionEvent e) { handleLinkToFrame(); } }); - setupButtonMouseListeners(linkToFrameChk); + /* + * CWA Filter + */ StringBuilder tipText = new StringBuilder(); tipText.append("Activate to remove from the SCAN table all cells,\n"); tipText.append("MESOs, and TVS's that are outside your CWA.\n\n"); tipText.append("Deactivate to include in the SCAN table all cells,\n"); tipText.append("MESOs, and TVS's detected by radar."); - gd = new GridData(); - cwaFilterChk = new Button(controlComp, SWT.CHECK); - cwaFilterChk.setText("CWA Filter "); - cwaFilterChk.setBackground(scanCfg.getScanColor(ScanColors.CWAFilter)); - cwaFilterChk.setForeground(display.getSystemColor(SWT.COLOR_WHITE)); + cwaFilterChk = createCheckLabelComposite(controlComp, + scanCfg.getScanColor(ScanColors.CWAFilter), + display.getSystemColor(SWT.COLOR_WHITE), "CWA Filter ", true, + tipText.toString()); + cwaFilterChk.setSelection(cellCfgMgr.getScanCellCfgXML() .getFilterOption()); - cwaFilterChk.setLayoutData(gd); - cwaFilterChk.setToolTipText(tipText.toString()); cwaFilterChk.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(SelectionEvent e) { handleCWAFilterAction(); } }); - setupButtonMouseListeners(cwaFilterChk); - // Uses same back ground color as attributes. - gd = new GridData(); - unwarnedChk = new Button(controlComp, SWT.CHECK); - unwarnedChk.setText("Unwarned "); - unwarnedChk.setBackground(scanCfg.getScanColor(ScanColors.Attributes)); - unwarnedChk.setForeground(display.getSystemColor(SWT.COLOR_WHITE)); + /* + * Unwarned + */ + unwarnedChk = createCheckLabelComposite(controlComp, + scanCfg.getScanColor(ScanColors.Attributes), + display.getSystemColor(SWT.COLOR_WHITE), "Unwarned ", true, + null); + unwarnedChk.setSelection(cellCfgMgr.getScanCellCfgXML() .getFilterOption()); - unwarnedChk.setLayoutData(gd); + unwarnedChk.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(SelectionEvent e) { @@ -432,41 +433,31 @@ public class SCANCellTableDlg extends AbstractTableDlg implements displayUnwarnedAlarmDialog(); } }); - setupButtonMouseListeners(unwarnedChk); // Create/Recreate the unwarned config data since the ScanConfig is a - // singleton - // and the data clears out when the CELL table dialog get re-created. + // singleton and the data clears out when the CELL table dialog get + // re-created. scanCfg.createUnwarnedConfig(); - // Vertical tables are not supported at this time. - gd = new GridData(); - vertChk = new Button(controlComp, SWT.CHECK); - vertChk.setText("Vert "); - vertChk.setEnabled(false); - vertChk.setBackground(scanCfg.getScanColor(ScanColors.Vert)); - vertChk.setForeground(display.getSystemColor(SWT.COLOR_WHITE)); + /* + * Vertical - tech blocked + */ + vertChk = createCheckLabelComposite(controlComp, + scanCfg.getScanColor(ScanColors.Vert), + display.getSystemColor(SWT.COLOR_WHITE), "Vert ", true, null); + vertChk.setSelection(cellCfgMgr.getScanCellCfgXML().getFilterOption()); - vertChk.setLayoutData(gd); + vertChk.setEnabled(false); /* - * The vertical table is a techblocked DR. This selection listener will - * be commented out until it is needed. + * Tool tips */ - // vertChk.addSelectionListener(new SelectionAdapter() { - // @Override - // public void widgetSelected(SelectionEvent e) { - // } - // }); - setupButtonMouseListeners(vertChk); + tipsChk = createCheckLabelComposite(controlComp, + scanCfg.getScanColor(ScanColors.Tips), + display.getSystemColor(SWT.COLOR_WHITE), "Tips ", true, null); - gd = new GridData(); - tipsChk = new Button(controlComp, SWT.CHECK); - tipsChk.setText("Tips "); - tipsChk.setBackground(scanCfg.getScanColor(ScanColors.Tips)); - tipsChk.setForeground(display.getSystemColor(SWT.COLOR_WHITE)); tipsChk.setSelection(cellCfgMgr.getScanCellCfgXML().getTipsOption()); - tipsChk.setLayoutData(gd); + tipsChk.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(SelectionEvent e) { @@ -474,8 +465,10 @@ public class SCANCellTableDlg extends AbstractTableDlg implements scanTableComp.updateColumnTips(); } }); - setupButtonMouseListeners(tipsChk); + /* + * Alarm button + */ gd = new GridData(SWT.RIGHT, SWT.DEFAULT, true, false); gd.widthHint = 75; alarmBtn = new Button(controlComp, SWT.PUSH); diff --git a/cave/com.raytheon.uf.viz.monitor.scan/src/com/raytheon/uf/viz/monitor/scan/tables/SCANDmdTableDlg.java b/cave/com.raytheon.uf.viz.monitor.scan/src/com/raytheon/uf/viz/monitor/scan/tables/SCANDmdTableDlg.java index 48d0f2cbba..042d01d99d 100644 --- a/cave/com.raytheon.uf.viz.monitor.scan/src/com/raytheon/uf/viz/monitor/scan/tables/SCANDmdTableDlg.java +++ b/cave/com.raytheon.uf.viz.monitor.scan/src/com/raytheon/uf/viz/monitor/scan/tables/SCANDmdTableDlg.java @@ -93,6 +93,10 @@ import com.raytheon.viz.ui.EditorUtil; * some bad code, and some code cleanup. * 06 Jun 2013 #2065 lvenable Added code to alert the user to use the clear * button if they want to close the dialog. + * 04 Dec 2013 #2592 lvenable Update how the checkboxes are handled + * (background/foreground colors) since the Redhat + * 6 upgrade causes the check in the checkbox to be + * colored the same as the background. * * * @@ -428,74 +432,66 @@ public class SCANDmdTableDlg extends AbstractTableDlg implements }); setupButtonMouseListeners(attribBtn); - gd = new GridData(); - linkToFrameChk = new Button(controlComp, SWT.CHECK); - linkToFrameChk.setText("Link to Frame "); - linkToFrameChk.setBackground(scanCfg - .getScanColor(ScanColors.LinkToFrame)); - linkToFrameChk.setForeground(display.getSystemColor(SWT.COLOR_WHITE)); + /* + * Link to frame + */ + linkToFrameChk = createCheckLabelComposite(controlComp, + scanCfg.getScanColor(ScanColors.LinkToFrame), + display.getSystemColor(SWT.COLOR_WHITE), "Link to Frame ", + true, null); + linkToFrameChk.setSelection(dmdConfigMgr.getScanDmdCfgXML() .getLinkToFrame()); - linkToFrameChk.setLayoutData(gd); + linkToFrameChk.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(SelectionEvent e) { handleLinkToFrame(); } }); - setupButtonMouseListeners(linkToFrameChk); + /* + * CWA Filter + */ StringBuilder tipText = new StringBuilder(); tipText.append("Activate to remove from the SCAN table all cells and\n"); tipText.append("DMDs that are outside your CWA.\n\n"); tipText.append("Deactivate to include in the SCAN table all cells and\n"); tipText.append("DMDs detected by radar."); - gd = new GridData(); - cwaFilterChk = new Button(controlComp, SWT.CHECK); - cwaFilterChk.setText("CWA Filter "); - cwaFilterChk.setBackground(scanCfg.getScanColor(ScanColors.CWAFilter)); - cwaFilterChk.setForeground(display.getSystemColor(SWT.COLOR_WHITE)); + cwaFilterChk = createCheckLabelComposite(controlComp, + scanCfg.getScanColor(ScanColors.CWAFilter), + display.getSystemColor(SWT.COLOR_WHITE), "CWA Filter ", true, + tipText.toString()); + cwaFilterChk.setSelection(dmdConfigMgr.getScanDmdCfgXML() .getFilterOption()); - cwaFilterChk.setLayoutData(gd); - cwaFilterChk.setToolTipText(tipText.toString()); cwaFilterChk.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(SelectionEvent e) { handleCWAFilterAction(); } }); - setupButtonMouseListeners(cwaFilterChk); - - // Vertical tables are not supported at this time. - gd = new GridData(); - vertChk = new Button(controlComp, SWT.CHECK); - vertChk.setText("Vert "); - vertChk.setEnabled(false); - vertChk.setBackground(scanCfg.getScanColor(ScanColors.Vert)); - vertChk.setForeground(display.getSystemColor(SWT.COLOR_WHITE)); - vertChk.setSelection(dmdConfigMgr.getScanDmdCfgXML().getFilterOption()); - vertChk.setLayoutData(gd); /* - * The vertical table is a techblocked DR. This will be commented out - * until that is addressed. + * Vertical - tech blocked */ - // vertChk.addSelectionListener(new SelectionAdapter() { - // @Override - // public void widgetSelected(SelectionEvent e) { - // } - // }); - setupButtonMouseListeners(vertChk); + vertChk = createCheckLabelComposite(controlComp, + scanCfg.getScanColor(ScanColors.Vert), + display.getSystemColor(SWT.COLOR_WHITE), "Vert ", true, null); + + vertChk.setSelection(dmdConfigMgr.getScanDmdCfgXML().getFilterOption()); + vertChk.setEnabled(false); + + /* + * Tool tips + */ + tipsChk = createCheckLabelComposite(controlComp, + scanCfg.getScanColor(ScanColors.Tips), + display.getSystemColor(SWT.COLOR_WHITE), "Tips ", true, null); - gd = new GridData(); - tipsChk = new Button(controlComp, SWT.CHECK); - tipsChk.setText("Tips "); - tipsChk.setBackground(scanCfg.getScanColor(ScanColors.Tips)); - tipsChk.setForeground(display.getSystemColor(SWT.COLOR_WHITE)); tipsChk.setSelection(dmdConfigMgr.getScanDmdCfgXML().getTipsOption()); - tipsChk.setLayoutData(gd); + tipsChk.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(SelectionEvent e) { @@ -504,8 +500,10 @@ public class SCANDmdTableDlg extends AbstractTableDlg implements dmdTableComp.updateColumnTips(); } }); - setupButtonMouseListeners(tipsChk); + /* + * Alarm button + */ gd = new GridData(SWT.RIGHT, SWT.DEFAULT, true, false); alarmBtn = new Button(controlComp, SWT.PUSH); alarmBtn.setText("Alarm"); diff --git a/cave/com.raytheon.uf.viz.monitor.scan/src/com/raytheon/uf/viz/monitor/scan/tables/SCANMesoTableDlg.java b/cave/com.raytheon.uf.viz.monitor.scan/src/com/raytheon/uf/viz/monitor/scan/tables/SCANMesoTableDlg.java index a2dead5a7b..6dbd0d2342 100644 --- a/cave/com.raytheon.uf.viz.monitor.scan/src/com/raytheon/uf/viz/monitor/scan/tables/SCANMesoTableDlg.java +++ b/cave/com.raytheon.uf.viz.monitor.scan/src/com/raytheon/uf/viz/monitor/scan/tables/SCANMesoTableDlg.java @@ -71,6 +71,10 @@ import com.raytheon.uf.viz.monitor.scan.data.ScanDataGenerator; * Date Ticket# Engineer Description * ------------ ---------- ----------- -------------------------- * Apr 29, 2013 #1945 lvenable Code cleanup for SCAN performance. + * 04 Dec 2013 #2592 lvenable Update how the checkboxes are handled + * (background/foreground colors) since the Redhat + * 6 upgrade causes the check in the checkbox to be + * colored the same as the background. * * * @@ -242,48 +246,38 @@ public class SCANMesoTableDlg extends AbstractTableDlg implements }); setupButtonMouseListeners(attribBtn); + /* + * Vertical - tech blocked + */ // Vertical tables are not supported at this time. - gd = new GridData(); - vertChk = new Button(controlComp, SWT.CHECK); - vertChk.setText("Vert "); - vertChk.setEnabled(false); - vertChk.setBackground(scanCfg.getScanColor(ScanColors.Vert)); - vertChk.setForeground(display.getSystemColor(SWT.COLOR_WHITE)); + vertChk = createCheckLabelComposite(controlComp, + scanCfg.getScanColor(ScanColors.Vert), + display.getSystemColor(SWT.COLOR_WHITE), "Vert ", true, null); + vertChk.setSelection(mesoCfgMgr.getScanMesoCfgXML().getFilterOption()); - vertChk.setLayoutData(gd); + vertChk.setEnabled(false); /* - * The vertical table is a techblocked DR. This selection listener will - * be commented out until it is needed. + * Tool tips */ - // vertChk.addSelectionListener(new SelectionAdapter() { - // @Override - // public void widgetSelected(SelectionEvent e) { - // } - // }); - setupButtonMouseListeners(vertChk); + tipsChk = createCheckLabelComposite(controlComp, + scanCfg.getScanColor(ScanColors.Tips), + display.getSystemColor(SWT.COLOR_WHITE), "Tips ", true, null); - gd = new GridData(); - tipsChk = new Button(controlComp, SWT.CHECK); - tipsChk.setText("Tips "); - tipsChk.setBackground(scanCfg.getScanColor(ScanColors.Tips)); - tipsChk.setForeground(display.getSystemColor(SWT.COLOR_WHITE)); tipsChk.setSelection(mesoCfgMgr.getScanMesoCfgXML().getTipsOption()); - tipsChk.setLayoutData(gd); + tipsChk.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(SelectionEvent e) { - System.out.println(tipsChk.getSelection()); SCANConfig.getInstance().setShowTips(scanTable, tipsChk.getSelection()); - System.out - .println(SCANConfig.getInstance().showTips(scanTable)); - System.out.println(scanTable.name()); scanTableComp.updateColumnTips(); } }); - setupButtonMouseListeners(tipsChk); + /* + * Time + */ gd = new GridData(SWT.RIGHT, SWT.CENTER, true, true); gd.widthHint = 160; timeLbl = new Label(controlComp, SWT.RIGHT); diff --git a/cave/com.raytheon.uf.viz.monitor.scan/src/com/raytheon/uf/viz/monitor/scan/tables/SCANTvsTableDlg.java b/cave/com.raytheon.uf.viz.monitor.scan/src/com/raytheon/uf/viz/monitor/scan/tables/SCANTvsTableDlg.java index fe76b4800e..20e6010012 100644 --- a/cave/com.raytheon.uf.viz.monitor.scan/src/com/raytheon/uf/viz/monitor/scan/tables/SCANTvsTableDlg.java +++ b/cave/com.raytheon.uf.viz.monitor.scan/src/com/raytheon/uf/viz/monitor/scan/tables/SCANTvsTableDlg.java @@ -70,6 +70,10 @@ import com.raytheon.uf.viz.monitor.scan.data.ScanDataGenerator; * Date Ticket# Engineer Description * ------------ ---------- ----------- -------------------------- * Apr 29, 2013 #1945 lvenable Code cleanup for SCAN performance. + * 04 Dec 2013 #2592 lvenable Update how the checkboxes are handled + * (background/foreground colors) since the Redhat + * 6 upgrade causes the check in the checkbox to be + * colored the same as the background. * * * @@ -233,48 +237,37 @@ public class SCANTvsTableDlg extends AbstractTableDlg implements }); setupButtonMouseListeners(attribBtn); - // Vertical tables are not supported at this time. - gd = new GridData(); - vertChk = new Button(controlComp, SWT.CHECK); - vertChk.setText("Vert "); - vertChk.setEnabled(false); - vertChk.setBackground(scanCfg.getScanColor(ScanColors.Vert)); - vertChk.setForeground(display.getSystemColor(SWT.COLOR_WHITE)); + /* + * Vertical - tech blocked + */ + vertChk = createCheckLabelComposite(controlComp, + scanCfg.getScanColor(ScanColors.Vert), + display.getSystemColor(SWT.COLOR_WHITE), "Vert ", true, null); + vertChk.setSelection(tvsCfgMgr.getScanTvsCfgXML().getFilterOption()); - vertChk.setLayoutData(gd); + vertChk.setEnabled(false); /* - * The vertical table is a techblocked DR. This selection listener will - * be commented out until it is needed. + * Tool tips */ - // vertChk.addSelectionListener(new SelectionAdapter() { - // @Override - // public void widgetSelected(SelectionEvent e) { - // } - // }); - setupButtonMouseListeners(vertChk); + tipsChk = createCheckLabelComposite(controlComp, + scanCfg.getScanColor(ScanColors.Tips), + display.getSystemColor(SWT.COLOR_WHITE), "Tips ", true, null); - gd = new GridData(); - tipsChk = new Button(controlComp, SWT.CHECK); - tipsChk.setText("Tips "); - tipsChk.setBackground(scanCfg.getScanColor(ScanColors.Tips)); - tipsChk.setForeground(display.getSystemColor(SWT.COLOR_WHITE)); tipsChk.setSelection(tvsCfgMgr.getScanTvsCfgXML().getTipsOption()); - tipsChk.setLayoutData(gd); + tipsChk.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(SelectionEvent e) { - System.out.println(tipsChk.getSelection()); SCANConfig.getInstance().setShowTips(scanTable, tipsChk.getSelection()); - System.out - .println(SCANConfig.getInstance().showTips(scanTable)); - System.out.println(scanTable.name()); scanTableComp.updateColumnTips(); } }); - setupButtonMouseListeners(tipsChk); + /* + * Time + */ gd = new GridData(SWT.RIGHT, SWT.CENTER, true, true); gd.widthHint = 160; timeLbl = new Label(controlComp, SWT.RIGHT); diff --git a/cave/com.raytheon.viz.gfe/GFESuite/gfeclient.sh b/cave/com.raytheon.viz.gfe/GFESuite/gfeclient.sh index f297a6493b..affb32aa57 100644 --- a/cave/com.raytheon.viz.gfe/GFESuite/gfeclient.sh +++ b/cave/com.raytheon.viz.gfe/GFESuite/gfeclient.sh @@ -1,7 +1,39 @@ #!/bin/bash + # CAVE startup script # Note: CAVE will not run as 'root' +# 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. +# +# +# SOFTWARE HISTORY +# Date Ticket# Engineer Description +# ------------ ---------- ----------- -------------------------- +# Dec 04, 2013 #2589 dgilling Create command-line arg that controls +# xvfb initialization. +# Dec 05, 2013 #2593 rjpeter set IGNORE_NUM_CAVES +# Dec 05, 2013 #2590 dgilling Remove duplicated code and call to +# cave.sh. +# +# + + user=`/usr/bin/whoami` if [ ${user} == 'root' ];then echo "WARNING: CAVE cannot be run as user '${user}'!" @@ -16,75 +48,44 @@ if [ ${RC} -ne 0 ]; then exit 1 fi -dir=${0%/*} +PROGRAM_NAME="gfeclient" -if [ "$dir" = "$0" ]; then - - dir="." - -fi - -cd "$dir" - -# Since, we no longer need to worry about re-location ... -CAVE_INSTALL="/awips2/cave" -JAVA_INSTALL="/awips2/java" -PYTHON_INSTALL="/awips2/python" - -export AWIPS_INSTALL_DIR="${CAVE_INSTALL}" - -export LD_LIBRARY_PATH=${JAVA_INSTALL}/lib:${PYTHON_INSTALL}/lib:$LD_LIBRARY_PATH -export PATH=${JAVA_INSTALL}/bin:${PYTHON_INSTALL}/bin:$PATH -export JAVA_HOME="${JAVA_INSTALL}/jre" - -# The user can update this field if they choose to do so. -export HYDRO_APPS_DIR="/awips2/edex/data/hdf5/hydroapps" - -TESTCHECK="$TMCP_HOME/bin/getTestMode" -if [ -x ${TESTCHECK} ]; then - echo "Calling getTestMode()" - ${TESTCHECK} - status=${?} - if [ $status -eq 11 ]; then - MODE="TEST" - SWITCHES=" -mode TEST " - elif [ $status -eq 12 ];then - MODE="PRACTICE" - SWITCHES=" -mode PRACTICE " - elif [ $status -eq 15 ];then - MODE="OPERATIONAL" - SWITCHES=" -mode OPERATIONAL" +# remove "-enablegl" flag from command-line if set so it doesn't confuse any +# commands we call later. +USER_ARGS=() +while [[ $1 ]] +do + if [ "$1" == "-enablegl" ] + then + ENABLEGL="true" else - MODE="OPERATIONAL (no response)" - SWITCHES=" " + USER_ARGS+=("$1") fi - echo "getTestMode() returned ${MODE}" -else - MODE="UNKNOWN" - echo "getTestMode() not found - going to use defaults" -fi + shift +done -export TEXTWS=`hostname | sed -e 's/lx/xt/g'` - -# if display not set -if [ -n "$DISPLAY" ] +if [ -n "$ENABLEGL" ] then + # if display not set + if [ -n "$DISPLAY" ] + then echo "Using Display set to $DISPLAY" extendLibraryPath -else + else echo "Display not set, creating offscreen x on port $$" extendLibraryPath "-noX" Xvfb :$$ -screen 0 1280x1024x24 & xvfb=$! export DISPLAY="localhost:$$.0" #don't use shader when no display set - export SWITCHES="${SWITCHES} -no_shader" + SWITCHES="${SWITCHES} -no_shader" + fi fi -COMPONENT_ARGS="-component gfeclient" -export LD_PRELOAD=libpython.so -lookupINI ${COMPONENT_ARGS} -/awips2/cave/cave ${SWITCHES} ${CAVE_INI_ARG} -nosplash ${COMPONENT_ARGS} "$@" +export IGNORE_NUM_CAVES=1 + +source /awips2/cave/cave.sh -nosplash -noredirect -component gfeclient "${USER_ARGS[@]}" & +wait if [ -n "$xvfb" ] then diff --git a/cave/com.raytheon.viz.gfe/GFESuite/ifpIMAGE b/cave/com.raytheon.viz.gfe/GFESuite/ifpIMAGE old mode 100755 new mode 100644 index a9f5522e6d..5b27b0f1b4 --- a/cave/com.raytheon.viz.gfe/GFESuite/ifpIMAGE +++ b/cave/com.raytheon.viz.gfe/GFESuite/ifpIMAGE @@ -1,5 +1,33 @@ #!/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. +# +# +# SOFTWARE HISTORY +# Date Ticket# Engineer Description +# ------------ ---------- ----------- -------------------------- +# Dec 04, 2013 #2589 dgilling Create command-line arg that controls +# xvfb initialization. +# +# + + # get path to cave path_to_script=`readlink -f $0` RUN_FROM_DIR=`dirname $path_to_script` @@ -9,6 +37,7 @@ CAVE_DIR=/awips2/cave # execute the runProcedure module _GFECLI="${RUN_FROM_DIR}/gfeclient.sh" +_GFECLI_ARGS="-enablegl" _MODULE="${CAVE_DIR}/etc/gfe/utility/PngWriter.py" # quoting of '$@' is used to prevent command line interpretation @@ -17,6 +46,6 @@ then echo "CAVE and/or gfeclient not installed on this workstation ..exiting" exit 1 else - $_GFECLI $_MODULE "$@" + $_GFECLI $_GFECLI_ARGS $_MODULE "$@" fi diff --git a/cave/com.raytheon.viz.gfe/src/com/raytheon/viz/gfe/GfeClient.java b/cave/com.raytheon.viz.gfe/src/com/raytheon/viz/gfe/GfeClient.java index f5a631fd56..4d889be3c1 100644 --- a/cave/com.raytheon.viz.gfe/src/com/raytheon/viz/gfe/GfeClient.java +++ b/cave/com.raytheon.viz.gfe/src/com/raytheon/viz/gfe/GfeClient.java @@ -22,6 +22,8 @@ package com.raytheon.viz.gfe; import java.util.Arrays; import java.util.Collection; import java.util.HashSet; +import java.util.Timer; +import java.util.TimerTask; import jep.Jep; import jep.JepException; @@ -38,6 +40,7 @@ import com.raytheon.uf.common.python.PyUtil; 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.time.util.TimeUtil; import com.raytheon.uf.viz.core.VizApp; import com.raytheon.viz.ui.personalities.awips.AbstractCAVEComponent; @@ -52,6 +55,7 @@ import com.raytheon.viz.ui.personalities.awips.AbstractCAVEComponent; * Jun 25, 2010 mschenke Initial creation * Aug 20, 2012 #1081 dgilling Don't pass -server and -site args * to python script. + * Dec 04, 2013 #2588 dgilling Add thread to force shutdown. * * * @@ -156,6 +160,23 @@ public class GfeClient extends AbstractCAVEComponent { long t1 = System.currentTimeMillis(); System.out.println("Entire execution to run python script: " + (t1 - t0)); + + // operationally, we've found situations where gfeclient jobs seem to + // hang around running even though all non-daemon threads have completed + // their work. So, in attempt to prevent those cases from hanging around + // as "zombie" processes let's set a timer to kill the JVM if things + // haven't exited by themselves. + Timer shutdownTimer = new Timer("gfe-client-shutdown", true); + TimerTask shutdownTask = new TimerTask() { + + @Override + public void run() { + statusHandler + .warn("GFEClient should have already exited, but it hasn't. Manually exiting."); + System.exit(0); + } + }; + shutdownTimer.schedule(shutdownTask, 45 * TimeUtil.MILLIS_PER_SECOND); } /* diff --git a/cave/com.raytheon.viz.gfe/src/com/raytheon/viz/gfe/dialogs/GridInfoDialog.java b/cave/com.raytheon.viz.gfe/src/com/raytheon/viz/gfe/dialogs/GridInfoDialog.java index 758e9e3a7a..b65494f1bb 100644 --- a/cave/com.raytheon.viz.gfe/src/com/raytheon/viz/gfe/dialogs/GridInfoDialog.java +++ b/cave/com.raytheon.viz.gfe/src/com/raytheon/viz/gfe/dialogs/GridInfoDialog.java @@ -44,10 +44,15 @@ import org.eclipse.swt.widgets.Text; import com.raytheon.uf.common.dataplugin.gfe.GridDataHistory; import com.raytheon.uf.common.dataplugin.gfe.db.objects.GFERecord.GridType; import com.raytheon.uf.common.dataplugin.gfe.db.objects.TimeConstraints; +import com.raytheon.uf.common.dataplugin.gfe.discrete.DiscreteKey; +import com.raytheon.uf.common.dataplugin.gfe.grid.Grid2DByte; import com.raytheon.uf.common.dataplugin.gfe.grid.Grid2DFloat; import com.raytheon.uf.common.dataplugin.gfe.server.lock.Lock; +import com.raytheon.uf.common.dataplugin.gfe.slice.DiscreteGridSlice; import com.raytheon.uf.common.dataplugin.gfe.slice.ScalarGridSlice; import com.raytheon.uf.common.dataplugin.gfe.slice.VectorGridSlice; +import com.raytheon.uf.common.dataplugin.gfe.slice.WeatherGridSlice; +import com.raytheon.uf.common.dataplugin.gfe.weather.WeatherKey; import com.raytheon.uf.common.message.WsId; import com.raytheon.uf.common.time.SimulatedTime; import com.raytheon.uf.common.time.TimeRange; @@ -79,7 +84,10 @@ import com.vividsolutions.jts.geom.Coordinate; * change gridInfoText from Label to Text * to make sure the info get displayed inside the screen * and can be scrolled. - * Feb 15, 2013 1638 mschenke Moved Util.getUnixTime into TimeUtil + * Feb 15, 2013 1638 mschenke Moved Util.getUnixTime into TimeUtil + * Dec 03, 2013 2597 randerso Fixed spacing when displaying multiple grid histories. + * Fixed weather element state and data distribution for + * Weather and Discrete elements. * * * @@ -107,9 +115,9 @@ public class GridInfoDialog extends CaveJFACEDialog implements // set gridInfoText to be Text private Text gridInfoText; - + private SimpleDateFormat gmtFormatter; - + public GridInfoDialog(Shell parent, Parm parm, Date clickTime) { super(parent); this.setShellStyle(SWT.DIALOG_TRIM | SWT.MODELESS); @@ -129,7 +137,7 @@ public class GridInfoDialog extends CaveJFACEDialog implements GridLayout layout = (GridLayout) top.getLayout(); layout.numColumns = 2; layout.makeColumnsEqualWidth = false; - + initializeComponents(); return top; @@ -145,52 +153,48 @@ public class GridInfoDialog extends CaveJFACEDialog implements b.setText(gridInfoElements[i]); b.addSelectionListener(this); } - - // Composite composite2 = new Composite(top, SWT.NONE); - // layoutData = new GridData(SWT.DEFAULT, SWT.FILL, false, true); - // composite2.setLayoutData(layoutData); - // composite2.setLayout(new GridLayout(1, true)); - gridInfoText = new Text(top, SWT.BORDER | SWT.MULTI | SWT.H_SCROLL | SWT.READ_ONLY); + gridInfoText = new Text(top, SWT.BORDER | SWT.MULTI | SWT.H_SCROLL + | SWT.READ_ONLY); layoutData = new GridData(SWT.FILL, SWT.FILL, true, true); gridInfoText.setBackground(group.getBackground()); gridInfoText.setLayoutData(layoutData); } - - /* - * adjust the width of the dialog - */ - private void adjustDlg(String infoText){ - int screenWidth = this.getParentShell().getDisplay(). - getPrimaryMonitor().getBounds().width; - int maxWidth = (int)Math.round(screenWidth * 0.75); - - GridData gd = new GridData(SWT.FILL, SWT.FILL, true, true); - int maxLength = getMaxWidth(infoText); - if ( maxLength > maxWidth ) { - gd.widthHint = maxWidth; - gridInfoText.setLayoutData(gd); - } else { - gridInfoText.setLayoutData(gd); - } - gridInfoText.setText(infoText); - } - - /* - * get the maximum width of the info - */ - private int getMaxWidth(String textInfo){ - String[] splits = textInfo.split("\\n"); - GC gc = new GC (gridInfoText); - FontMetrics fm = gc.getFontMetrics (); - int acw = fm.getAverageCharWidth (); - int maxStr = 0; - for (String str : splits){ - maxStr = Math.max(maxStr, str.length()); - } - return maxStr*acw; - } - + + /* + * adjust the width of the dialog + */ + private void adjustDlg(String infoText) { + int screenWidth = this.getParentShell().getDisplay() + .getPrimaryMonitor().getBounds().width; + int maxWidth = (int) Math.round(screenWidth * 0.75); + + GridData gd = new GridData(SWT.FILL, SWT.FILL, true, true); + int maxLength = getMaxWidth(infoText); + if (maxLength > maxWidth) { + gd.widthHint = maxWidth; + gridInfoText.setLayoutData(gd); + } else { + gridInfoText.setLayoutData(gd); + } + gridInfoText.setText(infoText); + } + + /* + * get the maximum width of the info + */ + private int getMaxWidth(String textInfo) { + String[] splits = textInfo.split("\\n"); + GC gc = new GC(gridInfoText); + FontMetrics fm = gc.getFontMetrics(); + int acw = fm.getAverageCharWidth(); + int maxStr = 0; + for (String str : splits) { + maxStr = Math.max(maxStr, str.length()); + } + return maxStr * acw; + } + @Override protected void createButtonsForButtonBar(Composite parent) { super.createButton(parent, Window.CANCEL, "Cancel", false); @@ -239,17 +243,17 @@ public class GridInfoDialog extends CaveJFACEDialog implements String choice = b.getText(); if (choice.equalsIgnoreCase("Grid Info")) { - adjustDlg(getGridInfo()); + adjustDlg(getGridInfo()); } else if (choice.equalsIgnoreCase("Grid History")) { adjustDlg(getGridHistory()); } else if (choice.equalsIgnoreCase("ISC History")) { adjustDlg(getISCHistory()); } else if (choice.equalsIgnoreCase("Weather Element Info")) { - adjustDlg(getWEInfo()); + adjustDlg(getWEInfo()); } else if (choice.equalsIgnoreCase("Weather Element State")) { adjustDlg(getWEState()); } else if (choice.equalsIgnoreCase("Locks")) { - adjustDlg(getLockInfo()); + adjustDlg(getLockInfo()); } else if (choice.equalsIgnoreCase("Data Distribution")) { adjustDlg(getDataDistribution()); } else { @@ -266,8 +270,9 @@ public class GridInfoDialog extends CaveJFACEDialog implements List locks = parm.getLockTable().getLocks(); if (locks.isEmpty()) { - info.append("Weather element is not locked"); + info.append("\nWeather element is not locked"); } else { + info.append("\n"); for (Lock lock : locks) { info.append("(") .append(gmtFormatter.format(lock.getTimeRange() @@ -303,9 +308,9 @@ public class GridInfoDialog extends CaveJFACEDialog implements grid = iscGridID.grid(); } if (grid == null) { - info.append("No ISC Grid"); + info.append("\nNo ISC Grid"); } else { - info.append("ISC Grid Valid Time: ").append(grid.getGridTime()) + info.append("\nISC Grid Valid Time: ").append(grid.getGridTime()) .append("\n\n"); GridDataHistory[] history = grid.getHistory(); @@ -360,50 +365,48 @@ public class GridInfoDialog extends CaveJFACEDialog implements if (parm.getGridInfo().getGridType().equals(GridType.SCALAR) || parm.getGridInfo().getGridType().equals(GridType.VECTOR)) { - info.append("Fuzz Value: ") + info.append("\nFuzz Value: ") .append(parm.getParmState().getFuzzValue()).append("\n"); - - if (parm.isMutable()) { - - if (parm.getGridInfo().getGridType().equals(GridType.SCALAR) - || parm.getGridInfo().getGridType() - .equals(GridType.VECTOR)) { - info.append("Delta value: ") - .append(parm.getParmState().getDeltaValue()) - .append("\n"); - } - info.append("Assign Value: ") - .append(parm.getParmState().getPickUpValue()) - .append("\n"); - - if (parm.getGridInfo().getGridType().equals(GridType.VECTOR)) { - info.append("Vector Edit Mode: ") - .append(parm.getParmState().getVectorMode()) - .append("\n"); - } - if (parm.getGridInfo().getGridType().equals(GridType.DISCRETE) - || parm.getGridInfo().getGridType() - .equals(GridType.WEATHER)) { - info.append("Weather/Discrete Combine Mode: ") - .append(parm.getParmState().getCombineMode()) - .append("\n"); - } - } - - info.append("Selected: ") - .append((parm.getParmState().isSelected() ? "Yes" : "No")) - .append("\n"); - - if (parm.getParmState().isSelected()) { - info.append("Selected Time Range: ") - .append(this.timeRangeToGMT(parm.getParmState() - .getSelectedTimeRange())).append("\n"); - } - info.append("Graphic Color: ") - .append(formatRGB(parm.getDisplayAttributes() - .getBaseColor())).append("\n"); } + if (parm.isMutable()) { + + if (parm.getGridInfo().getGridType().equals(GridType.SCALAR) + || parm.getGridInfo().getGridType().equals(GridType.VECTOR)) { + info.append("Delta value: ") + .append(parm.getParmState().getDeltaValue()) + .append("\n"); + } + info.append("Assign Value: ") + .append(parm.getParmState().getPickUpValue()).append("\n"); + + if (parm.getGridInfo().getGridType().equals(GridType.VECTOR)) { + info.append("Vector Edit Mode: ") + .append(parm.getParmState().getVectorMode()) + .append("\n"); + } + if (parm.getGridInfo().getGridType().equals(GridType.DISCRETE) + || parm.getGridInfo().getGridType() + .equals(GridType.WEATHER)) { + info.append("Weather/Discrete Combine Mode: ") + .append(parm.getParmState().getCombineMode()) + .append("\n"); + } + } + + info.append("Selected: ") + .append((parm.getParmState().isSelected() ? "Yes" : "No")) + .append("\n"); + + if (parm.getParmState().isSelected()) { + info.append("Selected Time Range: ") + .append(this.timeRangeToGMT(parm.getParmState() + .getSelectedTimeRange())).append("\n"); + } + info.append("Graphic Color: ") + .append(formatRGB(parm.getDisplayAttributes().getBaseColor())) + .append("\n"); + return info.toString(); } @@ -426,14 +429,26 @@ public class GridInfoDialog extends CaveJFACEDialog implements return value; } + private int[] calcCounts(Grid2DByte grid, int numKeys) { + int[] counts = new int[numKeys]; + + byte[] data = grid.getBytes(); + for (int i = 0; i < data.length; i++) { + int index = data[i] & 0xFF; + counts[index]++; + } + return counts; + } + private String getDataDistribution() { StringBuilder info = new StringBuilder(); info.append(getBoxTitle(gridData, true, "Data Distribution")); if (gridData == null) { - info.append("No Grid"); + info.append("\nNo Grid"); } else { + info.append("\n"); if (parm.getGridInfo().getGridType().equals(GridType.SCALAR)) { Grid2DFloat grid = ((ScalarGridSlice) gridData.getGridSlice()) .getScalarGrid(); @@ -450,23 +465,29 @@ public class GridInfoDialog extends CaveJFACEDialog implements .append(getMaxMin(grid, false)).append("\n"); } else if (parm.getGridInfo().getGridType() .equals(GridType.WEATHER)) { + WeatherGridSlice slice = (WeatherGridSlice) gridData + .getGridSlice(); + Grid2DByte grid = slice.getWeatherGrid(); + WeatherKey[] keys = slice.getKeys(); - // TODO - // for i in xrange(len(dta[1])): - // count = self._calcCounts(dta, i) - // info += `count` + " ----> " \ - // + AFPS.WeatherKey_string(dta[1][i]).keyAsPrettyString() \ - // + "\n" + int[] counts = calcCounts(grid, keys.length); + for (int i = 0; i < keys.length; i++) { + info.append(counts[i]).append(" ----> "); + info.append(keys[i].toPrettyString()); + info.append("\n"); + } } else if (parm.getGridInfo().getGridType() .equals(GridType.DISCRETE)) { - // TODO - // elif grid.type() == AFPS.Parm.DISCRETE: - // for i in xrange(len(dta[1])): - // count = self._calcCounts(dta, i) - // info += `count` + " ----> " \ - // + dta[1][i] \ - // + "\n" else: - + DiscreteGridSlice slice = (DiscreteGridSlice) gridData + .getGridSlice(); + Grid2DByte grid = slice.getDiscreteGrid(); + DiscreteKey[] keys = slice.getKey(); + int[] counts = calcCounts(grid, keys.length); + for (int i = 0; i < keys.length; i++) { + info.append(counts[i]).append(" ----> "); + info.append(keys[i].toString()); + info.append("\n"); + } } } @@ -479,9 +500,9 @@ public class GridInfoDialog extends CaveJFACEDialog implements info.append(getBoxTitle(gridData, true, "Grid Information")); if (gridData == null) { - info.append("No Grid"); + info.append("\nNo Grid"); } else { - info.append("Grid okay to edit: ") + info.append("\nGrid okay to edit: ") .append((gridData.isOkToEdit() ? "Yes" : "No")) .append("\n"); @@ -513,7 +534,7 @@ public class GridInfoDialog extends CaveJFACEDialog implements StringBuilder info = new StringBuilder(); info.append(getBoxTitle(null, false, "Weather Element Information")); - info.append("Weather Element Name: ") + info.append("\nWeather Element Name: ") .append(parm.getParmID().getParmName()).append("\n"); info.append("Weather Element Level: ") @@ -587,7 +608,8 @@ public class GridInfoDialog extends CaveJFACEDialog implements } else { for (GridDataHistory h : gridData.getHistory()) { - info.append("Grid origin: ").append(h.getOrigin()).append("\n"); + info.append("\nGrid origin: ").append(h.getOrigin()) + .append("\n"); info.append("Original Source: ") .append(uiFormat.uiParmIDcollapsed(h.getOriginParm())) .append("\n"); @@ -678,7 +700,7 @@ public class GridInfoDialog extends CaveJFACEDialog implements info.append("\n"); } - info.append("\n").append(title).append(":\n\n"); + info.append("\n").append(title).append(":\n"); return info.toString(); } diff --git a/cave/com.raytheon.viz.gfe/src/com/raytheon/viz/gfe/dialogs/formatterlauncher/ZoneCombinerComp.java b/cave/com.raytheon.viz.gfe/src/com/raytheon/viz/gfe/dialogs/formatterlauncher/ZoneCombinerComp.java index 1cb430d434..85e155ce35 100644 --- a/cave/com.raytheon.viz.gfe/src/com/raytheon/viz/gfe/dialogs/formatterlauncher/ZoneCombinerComp.java +++ b/cave/com.raytheon.viz.gfe/src/com/raytheon/viz/gfe/dialogs/formatterlauncher/ZoneCombinerComp.java @@ -59,7 +59,6 @@ import org.opengis.referencing.operation.TransformException; import com.raytheon.uf.common.dataplugin.gfe.db.objects.GridLocation; import com.raytheon.uf.common.dataplugin.gfe.exception.GfeException; import com.raytheon.uf.common.localization.FileUpdatedMessage; -import com.raytheon.uf.common.localization.FileUpdatedMessage.FileChangeType; import com.raytheon.uf.common.localization.ILocalizationFileObserver; import com.raytheon.uf.common.localization.IPathManager; import com.raytheon.uf.common.localization.LocalizationContext; @@ -98,6 +97,8 @@ import com.raytheon.viz.gfe.ui.zoneselector.ZoneSelector; * Oct 17, 2013 2481 randerso Fixed regression which cause configured level combinations * files to not be found. Removed message when combinations file * not found to match A1. + * Dec 03, 2013 #2591 dgilling Ensure all change states to the combo + * file are handled. * * * @@ -985,8 +986,7 @@ public class ZoneCombinerComp extends Composite implements */ @Override public void fileUpdated(FileUpdatedMessage message) { - if ((message.getChangeType().equals(FileChangeType.UPDATED)) - && message.getFileName().equalsIgnoreCase(currentComboFile)) { + if (message.getFileName().equalsIgnoreCase(currentComboFile)) { File file = new File(message.getFileName()); String comboName = file.getName().replace(".py", ""); statusHandler diff --git a/cave/com.raytheon.viz.gfe/src/com/raytheon/viz/gfe/vtec/GFEVtecUtil.java b/cave/com.raytheon.viz.gfe/src/com/raytheon/viz/gfe/vtec/GFEVtecUtil.java index 65c06b9a35..30b1be78cc 100644 --- a/cave/com.raytheon.viz.gfe/src/com/raytheon/viz/gfe/vtec/GFEVtecUtil.java +++ b/cave/com.raytheon.viz.gfe/src/com/raytheon/viz/gfe/vtec/GFEVtecUtil.java @@ -26,6 +26,7 @@ import java.util.regex.Matcher; import com.google.common.base.Strings; import com.google.common.collect.ImmutableSet; +import com.raytheon.uf.common.time.TimeRange; import com.raytheon.uf.viz.core.exception.VizException; import com.raytheon.viz.texteditor.util.VtecObject; import com.raytheon.viz.texteditor.util.VtecUtil; @@ -49,6 +50,9 @@ import com.raytheon.viz.texteditor.util.VtecUtil; * Aug 07, 2013 #1842 dgilling Fix ETN assignment for products with * multiple NEW segments with the same * phensig. + * Nov 22, 2013 #2578 dgilling Fix ETN assignment for products with + * multiple NEW VTEC lines for the same + * phensig but disjoint TimeRanges. * * * @@ -92,7 +96,12 @@ public class GFEVtecUtil { // HazardsTable.py implemented a "cache" that would ensure all NEWs for // the same phensig would be assigned the same ETN. This Map replicates // that legacy behavior. - Map etnCache = new HashMap(); + // + // This "cache" has two levels: + // 1. The first level is keyed by the hazard's phensig. + // 2. The second level is keyed by the valid period of the hazard. + // Effectively, making this a Map>. + Map> etnCache = new HashMap>(); Matcher vtecMatcher = VtecUtil.VTEC_REGEX.matcher(message); StringBuffer finalOutput = new StringBuffer(); @@ -105,13 +114,38 @@ public class GFEVtecUtil { && ((!NATIONAL_PHENSIGS.contains(vtec.getPhensig())) || (IGNORE_NATIONAL_ETN .contains(vtec.getOffice()) && TROPICAL_PHENSIGS .contains(vtec.getPhensig())))) { - String cacheKey = vtec.getPhensig(); - Integer newEtn = etnCache.get(cacheKey); + // Some more clarification on the ETN assignment behavior: all + // NEW VTEC lines with the same phensig should be assigned the + // same ETN if the hazards' valid periods are adjacent or + // overlapping. + // If there's a discontinuity in TimeRanges we increment to the + // next ETN. + Integer newEtn = null; + String phensig = vtec.getPhensig(); + TimeRange validPeriod = new TimeRange(vtec.getStartTime() + .getTime(), vtec.getEndTime().getTime()); + + Map etnsByTR = etnCache.get(phensig); + if (etnsByTR != null) { + for (TimeRange tr : etnsByTR.keySet()) { + if ((validPeriod.isAdjacentTo(tr)) + || (validPeriod.overlaps(tr))) { + newEtn = etnsByTR.get(tr); + break; + } + } + } + if (newEtn == null) { newEtn = VtecUtil.getNextEtn(vtec.getOffice(), vtec.getPhensig(), true); - etnCache.put(cacheKey, newEtn); } + + Map cacheLevel2 = (etnsByTR != null) ? etnsByTR + : new HashMap(); + cacheLevel2.put(validPeriod, newEtn); + etnCache.put(phensig, cacheLevel2); + vtec.setSequence(newEtn); } vtecMatcher diff --git a/edexOsgi/com.raytheon.edex.plugin.bufrua/src/com/raytheon/edex/plugin/bufrua/decoder/BUFRUAManLevelAdapter.java b/edexOsgi/com.raytheon.edex.plugin.bufrua/src/com/raytheon/edex/plugin/bufrua/decoder/BUFRUAManLevelAdapter.java index d68e3be3f5..395e8060eb 100644 --- a/edexOsgi/com.raytheon.edex.plugin.bufrua/src/com/raytheon/edex/plugin/bufrua/decoder/BUFRUAManLevelAdapter.java +++ b/edexOsgi/com.raytheon.edex.plugin.bufrua/src/com/raytheon/edex/plugin/bufrua/decoder/BUFRUAManLevelAdapter.java @@ -34,14 +34,14 @@ import com.raytheon.uf.edex.decodertools.core.IDecoderConstants; import com.raytheon.uf.edex.pointdata.PointDataPluginDao; /** - * This class contains several utility methods that construct a ProfilerObs - * instance from the BUFR decoded data. + * Convert bufr packets into level data for bufrua mandatory levels. * *
  * SOFTWARE HISTORY
- * Date         Ticket#    Engineer    Description
- * ------------ ---------- ----------- --------------------------
- * 20080303            969 jkorman     Initial implementation.
+ * Date          Ticket#  Engineer    Description
+ * ------------- -------- ----------- --------------------------
+ * Mar 03, 2008  969      jkorman     Initial implementation.
+ * Dec 05, 2013  2612     bsteffen    Fix max wind decoding.
  * 
  * 
* @@ -212,8 +212,8 @@ public class BUFRUAManLevelAdapter extends AbstractBUFRUAAdapter { double pres = getDouble(p.get(0), -9999); if (pres > 0) { setViewData("prMaxW", view, p.get(0), maxWindIdx); - setViewData("wdMaxW", view, p.get(3), maxWindIdx); - setViewData("wsMaxW", view, p.get(4), maxWindIdx); + setViewData("wdMaxW", view, p.get(2), maxWindIdx); + setViewData("wsMaxW", view, p.get(3), maxWindIdx); maxWindIdx++; } if (maxWindIdx == maxMaxWinds) { diff --git a/edexOsgi/com.raytheon.edex.plugin.bufrua/src/com/raytheon/edex/plugin/bufrua/decoder/BUFRUASigLevelAdapter.java b/edexOsgi/com.raytheon.edex.plugin.bufrua/src/com/raytheon/edex/plugin/bufrua/decoder/BUFRUASigLevelAdapter.java index caa6708a7a..7289ad1970 100644 --- a/edexOsgi/com.raytheon.edex.plugin.bufrua/src/com/raytheon/edex/plugin/bufrua/decoder/BUFRUASigLevelAdapter.java +++ b/edexOsgi/com.raytheon.edex.plugin.bufrua/src/com/raytheon/edex/plugin/bufrua/decoder/BUFRUASigLevelAdapter.java @@ -23,6 +23,7 @@ import static com.raytheon.uf.edex.decodertools.bufr.packets.DataPacketTypes.Rep import java.util.List; +import com.raytheon.edex.plugin.bufrua.util.SigWindHeightConversionManager; import com.raytheon.uf.common.dataplugin.bufrua.LayerTools; import com.raytheon.uf.common.dataplugin.bufrua.UAObs; import com.raytheon.uf.common.pointdata.Dimension; @@ -34,15 +35,16 @@ import com.raytheon.uf.edex.decodertools.core.IDecoderConstants; import com.raytheon.uf.edex.pointdata.PointDataPluginDao; /** - * TODO Add Description + * Convert bufr packets into level data for bufrua significant levels. * *
  * 
  * SOFTWARE HISTORY
  * 
- * Date         Ticket#    Engineer    Description
- * ------------ ---------- ----------- --------------------------
- * Jul 21, 2009            jkorman     Initial creation
+ * Date          Ticket#  Engineer    Description
+ * ------------- -------- ----------- --------------------------
+ * Jul 21, 2009           jkorman     Initial creation
+ * Dec 05, 2013  2612     bsteffen    Convert heights for sig wind layers.
  * 
  * 
* @@ -190,6 +192,8 @@ public class BUFRUASigLevelAdapter extends AbstractBUFRUAAdapter { .getValue(); int sig = getInt(p.get(1), IDecoderConstants.VAL_MISSING); double height = getDouble(p.get(0), -9999); + height = SigWindHeightConversionManager.convertHeight( + pointData, height); if (sig == 2) { if ((height > 0) && (height < 30000)) { view.setFloat(LayerTools.HT_SIGW, (float) height, diff --git a/edexOsgi/com.raytheon.edex.plugin.bufrua/src/com/raytheon/edex/plugin/bufrua/util/SigWindHeightConversionList.java b/edexOsgi/com.raytheon.edex.plugin.bufrua/src/com/raytheon/edex/plugin/bufrua/util/SigWindHeightConversionList.java new file mode 100644 index 0000000000..37e6449c7d --- /dev/null +++ b/edexOsgi/com.raytheon.edex.plugin.bufrua/src/com/raytheon/edex/plugin/bufrua/util/SigWindHeightConversionList.java @@ -0,0 +1,89 @@ +/** + * 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.edex.plugin.bufrua.util; + +import java.util.List; + +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.XmlRootElement; + +/** + * List of conversion factors for bufrua sites. + * + *
+ * 
+ * SOFTWARE HISTORY
+ * 
+ * Date          Ticket#  Engineer    Description
+ * ------------- -------- ----------- --------------------------
+ * Dec 05, 2013  2612     bsteffen    Initial creation
+ * 
+ * 
+ * + * @author bsteffen + * @version 1.0 + * @see SigWindHeightConversionManager + */ +@XmlAccessorType(XmlAccessType.NONE) +@XmlRootElement +public class SigWindHeightConversionList { + + @XmlElement(name = "conversion") + private List entries; + + public List getEntries() { + return entries; + } + + public void setEntries(List entries) { + this.entries = entries; + } + + @XmlAccessorType(XmlAccessType.NONE) + public static class SigWindHeightConversion { + + @XmlAttribute(required = true) + private String stationId; + + @XmlAttribute(required = true) + private double factor; + + public String getStationId() { + return stationId; + } + + public void setStationId(String stationId) { + this.stationId = stationId; + } + + public double getFactor() { + return factor; + } + + public void setFactor(double factor) { + this.factor = factor; + } + + } + +} diff --git a/edexOsgi/com.raytheon.edex.plugin.bufrua/src/com/raytheon/edex/plugin/bufrua/util/SigWindHeightConversionManager.java b/edexOsgi/com.raytheon.edex.plugin.bufrua/src/com/raytheon/edex/plugin/bufrua/util/SigWindHeightConversionManager.java new file mode 100644 index 0000000000..568d2eda73 --- /dev/null +++ b/edexOsgi/com.raytheon.edex.plugin.bufrua/src/com/raytheon/edex/plugin/bufrua/util/SigWindHeightConversionManager.java @@ -0,0 +1,134 @@ +/** + * 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.edex.plugin.bufrua.util; + +import java.util.Collections; +import java.util.HashMap; +import java.util.Map; + +import javax.xml.bind.JAXBException; + +import com.raytheon.edex.plugin.bufrua.util.SigWindHeightConversionList.SigWindHeightConversion; +import com.raytheon.uf.common.dataplugin.bufrua.UAObs; +import com.raytheon.uf.common.localization.AutoUpdatingLocalizationFile; +import com.raytheon.uf.common.localization.AutoUpdatingLocalizationFile.AutoUpdatingFileChangedListener; +import com.raytheon.uf.common.localization.LocalizationContext.LocalizationType; +import com.raytheon.uf.common.serialization.JAXBManager; +import com.raytheon.uf.common.serialization.SerializationException; +import com.raytheon.uf.common.status.IUFStatusHandler; +import com.raytheon.uf.common.status.UFStatus; +import com.raytheon.uf.common.status.UFStatus.Priority; + +/** + * Some UAObs are incorrectly encoded so the Significant Wind heights are + * multiples of 300 meters when in fact the observations were really taken at + * multiples of 1000 feet. A conversion list is serialised and can be used to + * determine which sites require unit conversion for the heights to match the + * actual observations. + * + *
+ * 
+ * SOFTWARE HISTORY
+ * 
+ * Date          Ticket#  Engineer    Description
+ * ------------- -------- ----------- --------------------------
+ * Dec 06, 2013  2612     bsteffen    Initial creation
+ * 
+ * 
+ * + * @author bsteffen + * @version 1.0 + */ +public class SigWindHeightConversionManager implements + AutoUpdatingFileChangedListener { + + private static final IUFStatusHandler statusHandler = UFStatus + .getHandler(SigWindHeightConversionList.class); + + private static final String FILE_NAME = "bufrua/sigWindHeightConversion.xml"; + + private static final SigWindHeightConversionManager instance = new SigWindHeightConversionManager(); + + /* Must keep reference to the file or listener doesn't work */ + @SuppressWarnings("unused") + private final AutoUpdatingLocalizationFile file; + + private Map factors; + + private SigWindHeightConversionManager() { + AutoUpdatingLocalizationFile file = null; + try { + file = new AutoUpdatingLocalizationFile(FILE_NAME, + LocalizationType.EDEX_STATIC); + file.addListener(this); + loadFactors(file); + } catch (Throwable e) { + /* + * Do not allow exceptions to propogate, this would break class + * loading, instead no conversion will ever occur. + */ + statusHandler + .handle(Priority.PROBLEM, + "An error has occured loading the SigWind Height Conversion factors.", + e); + factors = Collections.emptyMap(); + } + this.file = file; + } + + @Override + public void fileChanged(AutoUpdatingLocalizationFile file) { + try { + loadFactors(file); + } catch (Exception e) { + statusHandler + .handle(Priority.PROBLEM, + "An error has occured reloading the SigWind Height Conversion factors.", + e); + } + } + + private void loadFactors(AutoUpdatingLocalizationFile file) + throws SerializationException, JAXBException { + SigWindHeightConversionList list = file.loadObject( + new JAXBManager(SigWindHeightConversionList.class), + SigWindHeightConversionList.class); + Map result = new HashMap(list + .getEntries().size(), 1.0f); + for (SigWindHeightConversion entry : list.getEntries()) { + result.put(entry.getStationId(), entry.getFactor()); + } + factors = result; + } + + public double getFactor(String stationId) { + Double factor = factors.get(stationId); + if (factor != null) { + return factor.doubleValue(); + } else { + return 1.0; + } + } + + public static double convertHeight(UAObs obs, double height) { + return height * instance.getFactor(obs.getStationId()); + } + +} \ No newline at end of file diff --git a/edexOsgi/com.raytheon.edex.plugin.bufrua/utility/edex_static/base/bufrua/sigWindHeightConversion.xml b/edexOsgi/com.raytheon.edex.plugin.bufrua/utility/edex_static/base/bufrua/sigWindHeightConversion.xml new file mode 100644 index 0000000000..ea3fad1365 --- /dev/null +++ b/edexOsgi/com.raytheon.edex.plugin.bufrua/utility/edex_static/base/bufrua/sigWindHeightConversion.xml @@ -0,0 +1,300 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/edexOsgi/com.raytheon.edex.plugin.gfe/src/com/raytheon/edex/plugin/gfe/server/GridParmManager.java b/edexOsgi/com.raytheon.edex.plugin.gfe/src/com/raytheon/edex/plugin/gfe/server/GridParmManager.java index feeb19d645..3e9020f91a 100644 --- a/edexOsgi/com.raytheon.edex.plugin.gfe/src/com/raytheon/edex/plugin/gfe/server/GridParmManager.java +++ b/edexOsgi/com.raytheon.edex.plugin.gfe/src/com/raytheon/edex/plugin/gfe/server/GridParmManager.java @@ -108,6 +108,7 @@ import com.raytheon.uf.edex.database.purge.PurgeLogger; * 10/02/13 #2444 randerso Fix error handling when creating IFPGridDatabases. * DO NOT ATTEMPT TO MERGE THIS CHANGE INTO 14.2 as the GFE * server code has been significantly refactored. + * 12/03/13 #2595 randerso Added check for null update time in commitGrid * * * @@ -594,7 +595,8 @@ public class GridParmManager { // if update time is less than publish time, grid has not // changed since last published, therefore only update // history, do not publish - if ((gdh.getPublishTime() == null) + if ((gdh.getUpdateTime() == null) + || (gdh.getPublishTime() == null) || (gdh.getUpdateTime().getTime() > gdh .getPublishTime().getTime()) // in service backup, times on srcHistory could diff --git a/edexOsgi/com.raytheon.edex.plugin.gfe/src/com/raytheon/edex/plugin/gfe/server/handler/SaveCombinationsFileHandler.java b/edexOsgi/com.raytheon.edex.plugin.gfe/src/com/raytheon/edex/plugin/gfe/server/handler/SaveCombinationsFileHandler.java index e93084ab1a..3869df8221 100644 --- a/edexOsgi/com.raytheon.edex.plugin.gfe/src/com/raytheon/edex/plugin/gfe/server/handler/SaveCombinationsFileHandler.java +++ b/edexOsgi/com.raytheon.edex.plugin.gfe/src/com/raytheon/edex/plugin/gfe/server/handler/SaveCombinationsFileHandler.java @@ -22,7 +22,9 @@ package com.raytheon.edex.plugin.gfe.server.handler; import java.io.BufferedWriter; import java.io.File; import java.io.FileWriter; +import java.io.Writer; import java.text.DecimalFormat; +import java.text.NumberFormat; import java.util.ArrayList; import java.util.List; @@ -36,10 +38,13 @@ import com.raytheon.uf.common.localization.LocalizationContext.LocalizationType; import com.raytheon.uf.common.localization.PathManagerFactory; import com.raytheon.uf.common.serialization.comm.IRequestHandler; import com.raytheon.uf.common.util.FileUtil; +import com.raytheon.uf.common.util.StringUtil; import com.raytheon.uf.edex.core.EDEXUtil; /** - * TODO Add Description + * Request handler for SaveCombinationsFileRequest. Writes the + * specified zone combinations to the specified site's combinations file + * directory. * *
  * 
@@ -48,6 +53,8 @@ import com.raytheon.uf.edex.core.EDEXUtil;
  * Date         Ticket#    Engineer    Description
  * ------------ ---------- ----------- --------------------------
  * May 16, 2011            dgilling     Initial creation
+ * Dec 02, 2013  #2591     dgilling     Only send notification after Writer is
+ *                                      flushed/closed.
  * 
  * 
* @@ -79,43 +86,48 @@ public class SaveCombinationsFileHandler implements FileUtil.join(COMBO_FILE_DIR, request.getFileName())); boolean isAdded = (!localFile.exists()); - List listOfCombos = new ArrayList(); - FileWriter file = null; + Writer outWriter = null; try { - file = new FileWriter(localFile); - BufferedWriter out = new BufferedWriter(file); + outWriter = new BufferedWriter(new FileWriter(localFile)); String zoneComments = "\n# Automatically generated combinations file\n# " + request.getFileName() + "\n\nCombinations = [\n"; - out.write(zoneComments); - DecimalFormat df = new DecimalFormat("00"); + outWriter.write(zoneComments); + + NumberFormat df = new DecimalFormat("00"); for (int i = 0; i < request.getCombos().size(); i++) { + StringBuilder nextLineToWrite = new StringBuilder(); List modZGL = new ArrayList(request.getCombos() .get(i).size()); for (String zone : request.getCombos().get(i)) { modZGL.add("'" + zone + "'"); } - listOfCombos.add("\t(" + modZGL + ", " + "'Region" - + df.format((i + 1)) + "' ),\n"); - out.write(listOfCombos.get(i).toString()); + nextLineToWrite.append("\t(["); + nextLineToWrite.append(StringUtil.join(modZGL, ',')); + nextLineToWrite.append("], "); + nextLineToWrite.append("'Region"); + nextLineToWrite.append(df.format(i + 1)); + nextLineToWrite.append("' ),\n"); + outWriter.write(nextLineToWrite.toString()); } - out.write("]"); - out.close(); - - FileChangeType changeType = FileChangeType.UPDATED; - if (isAdded) { - changeType = FileChangeType.ADDED; - } - EDEXUtil.getMessageProducer().sendAsync( - "utilityNotify", - new FileUpdatedMessage(localization, FileUtil.join( - COMBO_FILE_DIR, request.getFileName()), changeType, - localFile.lastModified())); + outWriter.write("]"); } finally { - if (file != null) { - file.close(); + if (outWriter != null) { + outWriter.close(); } } + // placing the notification code here ensures we only send the + // notification on a successful file write operation. Otherwise we would + // have thrown an IOException and never gotten to this portion of the + // request handler. + FileChangeType changeType = isAdded ? FileChangeType.ADDED + : FileChangeType.UPDATED; + EDEXUtil.getMessageProducer().sendAsync( + "utilityNotify", + new FileUpdatedMessage(localization, FileUtil.join( + COMBO_FILE_DIR, request.getFileName()), changeType, + localFile.lastModified())); + return new ServerResponse(); } diff --git a/edexOsgi/com.raytheon.edex.plugin.gfe/utility/edex_static/base/gfe/isc/ifpnetCDF.py b/edexOsgi/com.raytheon.edex.plugin.gfe/utility/edex_static/base/gfe/isc/ifpnetCDF.py index 25ad53fbdf..21d3fed5b7 100644 --- a/edexOsgi/com.raytheon.edex.plugin.gfe/utility/edex_static/base/gfe/isc/ifpnetCDF.py +++ b/edexOsgi/com.raytheon.edex.plugin.gfe/utility/edex_static/base/gfe/isc/ifpnetCDF.py @@ -765,7 +765,7 @@ def storeScalarWE(we, trList, file, timeRange, databaseID, for i in xrange(len(overlappingTimes) -1, -1, -1): ot = overlappingTimes[i] if not ot in histDict: - del overlappingTime[i] + del overlappingTimes[i] del timeList[i] elif we.getGpi().isRateParm(): durRatio = (float(timeList[i][1]-timeList[i][0]))/float((ot[1]-ot[0])) diff --git a/edexOsgi/com.raytheon.uf.common.dataplugin.gfe/src/com/raytheon/uf/common/dataplugin/gfe/db/objects/GFERecord.java b/edexOsgi/com.raytheon.uf.common.dataplugin.gfe/src/com/raytheon/uf/common/dataplugin/gfe/db/objects/GFERecord.java index 347f7eab1e..b17063c05e 100644 --- a/edexOsgi/com.raytheon.uf.common.dataplugin.gfe/src/com/raytheon/uf/common/dataplugin/gfe/db/objects/GFERecord.java +++ b/edexOsgi/com.raytheon.uf.common.dataplugin.gfe/src/com/raytheon/uf/common/dataplugin/gfe/db/objects/GFERecord.java @@ -81,6 +81,9 @@ import com.raytheon.uf.common.time.TimeRange; * Jun 20, 2013 2127 rjpeter Added OnDelete annotation. * Aug 30, 2013 2298 rjpeter Make getPluginName abstract * Sep 20, 2013 2147 rferrel Changes to archive hdf5 files. + * Dec 03, 2013 2597 randerso Cleared gridHistory id when adding new history + * records in consolidateHistory so dao will recognize + * it as a new record * * * @@ -263,6 +266,7 @@ public class GFERecord extends PluginDataObject implements IPersistable { } else { GridDataHistory hist = newHistory.get(i); hist.setParent(this); + hist.setId(0); gridHistory.add(hist); } } diff --git a/rpms/build/i386/build.sh b/rpms/build/i386/build.sh index c9f535acae..1d2eca82d3 100644 --- a/rpms/build/i386/build.sh +++ b/rpms/build/i386/build.sh @@ -130,6 +130,13 @@ if [ "${1}" = "-python-qpid" ]; then exit 0 fi +if [ "${1}" = "-notification" ]; then + buildRPM "awips2-notification" + + exit 0 +fi + + if [ "${1}" = "-postgres" ]; then buildRPM "awips2-postgres" buildRPM "awips2-database-server-configuration" @@ -146,6 +153,7 @@ if [ "${1}" = "-postgres" ]; then fi if [ "${1}" = "-delta" ]; then + buildRPM "awips2" buildRPM "awips2-common-base" buildCAVE if [ $? -ne 0 ]; then @@ -161,10 +169,8 @@ if [ "${1}" = "-delta" ]; then buildRPM "awips2-ncep-database" buildRPM "awips2-gfesuite-client" buildRPM "awips2-gfesuite-server" - buildRPM "awips2-python" buildRPM "awips2-python-dynamicserialize" buildRPM "awips2-python-ufpy" - buildRPM "awips2-python-qpid" buildRPM "awips2-adapt-native" buildRPM "awips2-aviation-shared" @@ -260,7 +266,7 @@ if [ "${1}" = "-full" ]; then buildRPM "awips2-httpd-pypies" buildJava buildRPM "awips2-groovy" - #buildRPM "awips2-ldm" + buildRPM "awips2-ldm" buildRPM "awips2-postgres" buildRPM "awips2-pgadmin3" buildRPM "awips2-tools" @@ -333,6 +339,12 @@ if [ "${1}" = "-ade" ]; then exit 1 fi + # Build the source jar file + ade_work_dir="/home/dmsys/Dim12/build/AWIPS2/AWIPS2-ADE-OB13.5.1-CM" + cd $ade_work_dir + ./build_source_jar.sh + cp -v /tmp/awips-component/tmp/awips2-ade-baseline-SOURCES.jar ${WORKSPACE}/${ade_directory} + # Tar the directory. pushd . > /dev/null 2>&1 cd ${WORKSPACE} diff --git a/rpms/build/x86_64/build.sh b/rpms/build/x86_64/build.sh index 215afb4d57..3773113a32 100644 --- a/rpms/build/x86_64/build.sh +++ b/rpms/build/x86_64/build.sh @@ -123,8 +123,8 @@ if [ "${1}" = "-64bit" ]; then fi if [ "${1}" = "-rh6" ]; then - buildRPM "awips2-notification" buildRPM "awips2-common-base" + buildRPM "awips2-notification" buildEDEX if [ $? -ne 0 ]; then exit 1 @@ -170,7 +170,7 @@ if [ "${1}" = "-rh6" ]; then buildRPM "awips2-ldm" buildCAVE if [ $? -ne 0 ]; then - exit 0 + exit 1 fi buildRPM "awips2-alertviz" buildRPM "awips2-database-server-configuration" @@ -214,6 +214,7 @@ if [ "${1}" = "-postgres" ]; then fi if [ "${1}" = "-delta" ]; then + buildRPM "awips2" buildRPM "awips2-common-base" buildCAVE if [ $? -ne 0 ]; then @@ -224,28 +225,38 @@ if [ "${1}" = "-delta" ]; then if [ $? -ne 0 ]; then exit 1 fi + + buildRPM "awips2-ncep-database" + buildRPM "awips2-gfesuite-client" + buildRPM "awips2-gfesuite-server" buildRPM "awips2-python-dynamicserialize" buildRPM "awips2-python-ufpy" + + buildRPM "awips2-aviation-shared" buildRPM "awips2-cli" + buildRPM "awips2-database" + buildRPM "awips2-database-server-configuration" + buildRPM "awips2-database-standalone-configuration" buildRPM "awips2-data.hdf5-gfe.climo" buildRPM "awips2-gfesuite-client" buildRPM "awips2-gfesuite-server" buildRPM "awips2-localapps-environment" + buildRPM "awips2-maps-database" + buildRPM "awips2-notification" + buildRPM "awips2-pypies" buildRPM "awips2-data.hdf5-topo" buildRPM "awips2-data.gfe" - buildRPM "awips2" + buildRPM "awips2-rcm" buildLocalizationRPMs if [ $? -ne 0 ]; then exit 1 fi - buildRPM "awips2-edex-environment" - buildRPM "awips2-notification" exit 0 fi if [ "${1}" = "-full" ]; then - # buildRPM "awips2-common-base" + buildRPM "awips2-common-base" buildCAVE if [ $? -ne 0 ]; then exit 1 @@ -266,7 +277,7 @@ if [ "${1}" = "-full" ]; then buildRPM "awips2-python-pil" buildRPM "awips2-python-pmw" buildRPM "awips2-python-pupynere" - # buildRPM "awips2-python-qpid" + buildRPM "awips2-python-qpid" buildRPM "awips2-python-scientific" buildRPM "awips2-python-scipy" buildRPM "awips2-python-tables" @@ -398,12 +409,9 @@ fi if [ "${1}" = "-viz" ]; then buildRPM "awips2" - buildRPM "awips2-common-base" + #buildRPM "awips2-common-base" #buildRPM "awips2-python-dynamicserialize" - #buildRPM "awips2-gfesuite-client" - #buildRPM "awips2-gfesuite-server" - #buildRPM "awips2-python-numpy" - buildRPM "awips2-python" + #buildRPM "awips2-python" #buildRPM "awips2-adapt-native" #unpackHttpdPypies #if [ $? -ne 0 ]; then