diff --git a/cave/com.raytheon.viz.aviation/src/com/raytheon/viz/aviation/editor/TafViewerEditorDlg.java b/cave/com.raytheon.viz.aviation/src/com/raytheon/viz/aviation/editor/TafViewerEditorDlg.java index 29e99c2c02..ccf309f850 100755 --- a/cave/com.raytheon.viz.aviation/src/com/raytheon/viz/aviation/editor/TafViewerEditorDlg.java +++ b/cave/com.raytheon.viz.aviation/src/com/raytheon/viz/aviation/editor/TafViewerEditorDlg.java @@ -133,6 +133,7 @@ import com.raytheon.viz.avnconfig.TafSiteData; import com.raytheon.viz.core.mode.CAVEMode; import com.raytheon.viz.texteditor.TextDisplayModel; import com.raytheon.viz.texteditor.msgs.IAviationObserver; +import com.raytheon.viz.texteditor.util.AviationTextUtility; import com.raytheon.viz.ui.dialogs.CaveSWTDialog; import com.raytheon.viz.ui.dialogs.ICloseCallback; import com.raytheon.viz.ui.simulatedtime.SimulatedTimeOperations; @@ -251,6 +252,7 @@ import com.raytheon.viz.ui.simulatedtime.SimulatedTimeOperations; * Nov 12, 2015 4834 njensen Changed LocalizationOpFailedException to LocalizationException * Nov 12, 2015 4834 njensen Changed LocalizationOpFailedException to LocalizationException * Dec 09, 2015 4645 skorolev Initiated wrapChk using ResourceTag. Removed popup menu persistance. + * Jan 07, 2016 4860 skorolev Initiated TextDisplayModel at start of dialog. * * * @@ -569,6 +571,9 @@ public class TafViewerEditorDlg extends CaveSWTDialog implements ITafSettable, this.stationList = stationList; setText("AvnFPS TAF Editor"); + // Initiate TextDisplayModel + TextDisplayModel.getInstance().setTextAviation( + new AviationTextUtility()); SimulatedTime.getSystemTime().addSimulatedTimeChangeListener(this); } diff --git a/cave/com.raytheon.viz.texteditor/src/com/raytheon/viz/texteditor/alarmalert/util/AlarmAlertFunctions.java b/cave/com.raytheon.viz.texteditor/src/com/raytheon/viz/texteditor/alarmalert/util/AlarmAlertFunctions.java index cbd2c3d6c9..fdb090851e 100644 --- a/cave/com.raytheon.viz.texteditor/src/com/raytheon/viz/texteditor/alarmalert/util/AlarmAlertFunctions.java +++ b/cave/com.raytheon.viz.texteditor/src/com/raytheon/viz/texteditor/alarmalert/util/AlarmAlertFunctions.java @@ -83,6 +83,8 @@ import com.vividsolutions.jts.geom.GeometryFactory; * 09/09/2014 3580 mapeters Removed IQueryTransport usage (no longer exists). * 12/03/2014 ASM #16829 D. Friedman Lazy initialization of alarmAlertBell * Nov 12, 2015 4834 njensen Changed LocalizationOpFailedException to LocalizationException + * 11/29/2015 ASM #14995 m.gamazaychikov Made sure that non-standard latlons in + * LAT...LON string did not result in error. * * * @@ -535,6 +537,9 @@ public class AlarmAlertFunctions { String body = stp.getProduct(); if (body.contains("LAT...LON")) { Coordinate[] coords = getLatLonCoords(body); + if (coords.length == 0) { + return null; + } GeometryFactory gf = new GeometryFactory(); return gf.createLinearRing(coords); } @@ -593,6 +598,9 @@ public class AlarmAlertFunctions { boolean pair = false; Double dlat, dlong; StringTokenizer latlonTokens = new StringTokenizer(latLon); + if (latLon.length() == 0) { + return coordinates; + } while (latlonTokens.hasMoreTokens()) { currentToken = latlonTokens.nextToken(); if (!currentToken.equals(latlon)) { diff --git a/cave/com.raytheon.viz.texteditor/src/com/raytheon/viz/texteditor/dialogs/TextEditorDialog.java b/cave/com.raytheon.viz.texteditor/src/com/raytheon/viz/texteditor/dialogs/TextEditorDialog.java index 78258a39f4..16d1b12682 100644 --- a/cave/com.raytheon.viz.texteditor/src/com/raytheon/viz/texteditor/dialogs/TextEditorDialog.java +++ b/cave/com.raytheon.viz.texteditor/src/com/raytheon/viz/texteditor/dialogs/TextEditorDialog.java @@ -360,6 +360,7 @@ import com.raytheon.viz.ui.simulatedtime.SimulatedTimeOperations; * Oct 28, 2015 5054 randerso Make Text Editor windows appear on same monitor as the parent. * Removed hard coded offset for window placement. * Nov 05, 2015 5039 rferrel Prevent wrapping text to a component name line and clean up of streams. + * 11Dec2015 RM14752 mgamazaychikov Fix problems with wrapping in the impact section. * * * @@ -8022,6 +8023,13 @@ public class TextEditorDialog extends CaveSWTDialog implements VerifyListener, inPathcast = true; } + // is this the impact paragraph? + if (paragraphStart.startsWith(" IMPACT...") || + paragraphStart.startsWith(" HAZARD...") || + paragraphStart.startsWith(" SOURCE...") ) { + padding = " "; + } + if (paragraphStart.matches(METAR_PARAGRAPH)) { padding = " "; } else if (checkParagraphPadding(paragraphStart)) { @@ -8102,7 +8110,8 @@ public class TextEditorDialog extends CaveSWTDialog implements VerifyListener, // if the next line does not start a new paragraph if (!isParagraphStart(lineNumber + 1)) { // if the next line is not empty - if (!textEditor.getLine(lineNumber + 1).trim().isEmpty()) { + if (!textEditor.getLine(lineNumber + 1).trim().isEmpty() || + (textEditor.getLine(lineNumber + 1).length() == padding.length()+1) ) { // Determine what kind of end of line marker line has. int deleteLen = 0; diff --git a/cave/com.raytheon.viz.warngen/src/com/raytheon/viz/warngen/gis/Area.java b/cave/com.raytheon.viz.warngen/src/com/raytheon/viz/warngen/gis/Area.java index 356dffcd4c..3f656d523c 100644 --- a/cave/com.raytheon.viz.warngen/src/com/raytheon/viz/warngen/gis/Area.java +++ b/cave/com.raytheon.viz.warngen/src/com/raytheon/viz/warngen/gis/Area.java @@ -90,6 +90,7 @@ import com.vividsolutions.jts.geom.prep.PreparedGeometry; * refactored WarngenLayer::filterArea. * Mar 9, 2014 ASM #17190 D. Friedman Use fipsField and areaField for unique area ID. * May 7, 2015 ASM #17438 D. Friedman Clean up debug and performance logging. + * Dec 15, 2015 ASM #17933 mgamazaychikov Update calculation of partOfParentRegion. * * * @author chammack @@ -267,7 +268,7 @@ public class Area { .get(parentAreaField)); String feArea = (String) regionFeature.attributes .get("FE_AREA"); - area.partOfParentRegion = converFeAreaToPartList(feArea); + area.partOfParentRegion = Arrays.asList(feArea); } // Search against point matches diff --git a/cave/com.raytheon.viz.warngen/src/com/raytheon/viz/warngen/gis/WatchUtil.java b/cave/com.raytheon.viz.warngen/src/com/raytheon/viz/warngen/gis/WatchUtil.java index 9ca7a065fc..1e9213d51a 100644 --- a/cave/com.raytheon.viz.warngen/src/com/raytheon/viz/warngen/gis/WatchUtil.java +++ b/cave/com.raytheon.viz.warngen/src/com/raytheon/viz/warngen/gis/WatchUtil.java @@ -91,6 +91,7 @@ import com.vividsolutions.jts.geom.Polygon; * May 7, 2015 ASM #17438 D. Friedman Clean up debug and performance logging. * Jun 04, 2015 RODO #4522 randerso Added proper primary key to ActiveTableRecord * Jul 16, 2015 ASM #17741 D. Friedman Use acceptable timestamp format in query + * Dec 15, 2015 ASM #17933 mgamazaychikov Return feAreas from determineAffectedPortions. * * * @author jsanchez @@ -560,9 +561,7 @@ public class WatchUtil { } } - Set affectedPortions = new HashSet( - Area.converFeAreaToPartList(mungeFeAreas(feAreas))); - return affectedPortions; + return feAreas; } private List generateMarineWatchItems(Watch template, diff --git a/cave/com.raytheon.viz.warngen/src/com/raytheon/viz/warngen/gui/ValidPeriodDialog.java b/cave/com.raytheon.viz.warngen/src/com/raytheon/viz/warngen/gui/ValidPeriodDialog.java index a244394fd3..0eda0415d3 100644 --- a/cave/com.raytheon.viz.warngen/src/com/raytheon/viz/warngen/gui/ValidPeriodDialog.java +++ b/cave/com.raytheon.viz.warngen/src/com/raytheon/viz/warngen/gui/ValidPeriodDialog.java @@ -33,6 +33,7 @@ import com.raytheon.viz.ui.dialogs.CaveSWTDialog; * Nov 15, 2011 jsanchez Initial creation * Sep 26, 2012 1193 rferrel Convert to extend CaveSWTDialog * and made non-blocking. + * Dec 10, 2015 DR 17908 Qinglu Lin Added getEndTime(). * * * @@ -428,4 +429,7 @@ public class ValidPeriodDialog extends CaveSWTDialog { timer.schedule(updateTimeTask, 60000, 60000); } + public Calendar getEndTime() { + return endTime; + } } diff --git a/cave/com.raytheon.viz.warngen/src/com/raytheon/viz/warngen/gui/WarngenDialog.java b/cave/com.raytheon.viz.warngen/src/com/raytheon/viz/warngen/gui/WarngenDialog.java index d1e5396be1..41df5a9cfa 100644 --- a/cave/com.raytheon.viz.warngen/src/com/raytheon/viz/warngen/gui/WarngenDialog.java +++ b/cave/com.raytheon.viz.warngen/src/com/raytheon/viz/warngen/gui/WarngenDialog.java @@ -174,6 +174,7 @@ import com.vividsolutions.jts.geom.Polygon; * Nov 9, 2015 DR 14905 Qinglu Lin Updated backupSiteSelected(), disposed(), initializeComponents(), populateBackupGroup(), and * createProductTypeGroup, and moved existing code to newly created setBackupCboColors() and setBackupSite(). * Nov 25, 2015 DR 17464 Qinglu Lin Updated changeTemplate(). + * Dec 10, 2015 DR 17908 Qinglu Lin Updated changeStartEndTimes(), recreateDurations(), changeSelected(), and extSelected(). * * * @author chammack @@ -1750,8 +1751,10 @@ public class WarngenDialog extends CaveSWTDialog implements } setDurations(warngenLayer.getConfiguration().getDurations()); durList.setText(defaultDuration.displayString); - endTime = DurationUtil.calcEndTime(startTime, defaultDuration.minutes); - end.setText(df.format(endTime.getTime())); + if (warngenLayer.getConfiguration().isEnableDuration()) { + endTime = DurationUtil.calcEndTime(startTime, defaultDuration.minutes); + end.setText(df.format(endTime.getTime())); + } warngenLayer.getStormTrackState().newDuration = defaultDuration.minutes; warngenLayer.getStormTrackState().geomChanged = true; @@ -1956,7 +1959,7 @@ public class WarngenDialog extends CaveSWTDialog implements private void changeSelected() { statusHandler.debug("changeSelected"); if ((validPeriodDlg == null) || validPeriodDlg.isDisposed()) { - validPeriodDlg = new ValidPeriodDialog(shell, startTime, endTime); + validPeriodDlg = new ValidPeriodDialog(shell, (Calendar) startTime.clone(), (Calendar) endTime.clone()); validPeriodDlg.setCloseCallback(new ICloseCallback() { @Override @@ -1966,7 +1969,11 @@ public class WarngenDialog extends CaveSWTDialog implements + duration); if (duration != -1) { durationList.setEnabled(false); - endTime.add(Calendar.MINUTE, duration); + if (warngenLayer.getConfiguration().isEnableDuration()) { + endTime.add(Calendar.MINUTE, duration); + } else { + endTime = (Calendar) validPeriodDlg.getEndTime().clone(); + } end.setText(df.format(endTime.getTime())); warngenLayer.getStormTrackState().newDuration = duration; warngenLayer.getStormTrackState().geomChanged = true; @@ -2128,17 +2135,17 @@ public class WarngenDialog extends CaveSWTDialog implements FollowupData fd = (FollowupData) updateListCbo .getData(updateListCbo.getItem(updateListCbo .getSelectionIndex())); + startTime = TimeUtil.newCalendar(); + start.setText(df.format(startTime.getTime())); if ((fd == null) || (WarningAction.valueOf(fd.getAct()) == WarningAction.NEW)) { - startTime = TimeUtil.newCalendar(); - endTime = DurationUtil.calcEndTime(this.startTime, duration); - start.setText(df.format(this.startTime.getTime())); - end.setText(df.format(this.endTime.getTime())); + endTime = DurationUtil.calcEndTime(startTime, duration); } else if (WarningAction.valueOf(fd.getAct()) == WarningAction.EXT) { - startTime = TimeUtil.newCalendar(); - endTime = DurationUtil.calcEndTime(extEndTime, duration); - end.setText(df.format(this.endTime.getTime())); + if (warngenLayer.getConfiguration().isEnableDuration()) { + endTime = DurationUtil.calcEndTime(extEndTime, duration); + } } + end.setText(df.format(endTime.getTime())); } } @@ -2359,9 +2366,8 @@ public class WarngenDialog extends CaveSWTDialog implements warngenLayer.getStormTrackState().duration = duration; startTime = TimeUtil.newCalendar(); - extEndTime = newWarn.getEndTime(); - endTime = DurationUtil.calcEndTime(extEndTime, duration); - end.setText(df.format(this.endTime.getTime())); + extEndTime = (Calendar) newWarn.getEndTime().clone(); + endTime = extEndTime; changeStartEndTimes(); try { diff --git a/cave/com.raytheon.viz.warngen/src/com/raytheon/viz/warngen/util/CurrentWarnings.java b/cave/com.raytheon.viz.warngen/src/com/raytheon/viz/warngen/util/CurrentWarnings.java index 1e5df4a944..1304f77e10 100644 --- a/cave/com.raytheon.viz.warngen/src/com/raytheon/viz/warngen/util/CurrentWarnings.java +++ b/cave/com.raytheon.viz.warngen/src/com/raytheon/viz/warngen/util/CurrentWarnings.java @@ -81,6 +81,7 @@ import com.vividsolutions.jts.geom.Geometry; * issuance of an CANCON and restart of CAVE. * Oct 16, 2013 2439 rferrel Restrict retrieval of warnings to prevent getting future warnings. * May 7, 2015 ASM #17438 D. Friedman Clean up debug and performance logging. + * Dec 7, 2015 ASM #18017 D. Friedman Allow corrections after partial cancellation. * * * @author mschenke @@ -304,8 +305,18 @@ public class CurrentWarnings { || (action == WarningAction.CON) || (action == WarningAction.EXT)) && t.contains(current.getTime())) { rval.add(warning); - } else if ((action == WarningAction.CAN) - || (action == WarningAction.EXP)) { + } else if (action == WarningAction.CAN) { + for (AbstractWarningRecord otherWarning : records) { + WarningAction otherAction = WarningAction + .valueOf(otherWarning.getAct()); + if ((otherAction == WarningAction.NEW || otherAction == WarningAction.CON) + && warning.getUgcZones().equals( + otherWarning.getUgcZones())) { + rval.clear(); + return rval; + } + } + } else if ((action == WarningAction.EXP)) { rval.clear(); return rval; } diff --git a/edexOsgi/com.raytheon.edex.plugin.gfe/src/com/raytheon/edex/plugin/gfe/textproducts/AreaDictionaryMaker.java b/edexOsgi/com.raytheon.edex.plugin.gfe/src/com/raytheon/edex/plugin/gfe/textproducts/AreaDictionaryMaker.java index fd5ba0ba91..c2a8e763f6 100644 --- a/edexOsgi/com.raytheon.edex.plugin.gfe/src/com/raytheon/edex/plugin/gfe/textproducts/AreaDictionaryMaker.java +++ b/edexOsgi/com.raytheon.edex.plugin.gfe/src/com/raytheon/edex/plugin/gfe/textproducts/AreaDictionaryMaker.java @@ -65,6 +65,7 @@ import com.raytheon.uf.edex.database.dao.DaoConfig; * Dec 08, 2014 #4953 randerso Updated Jep include path to allow use of * LocalizationSupport * Jul 13, 2015 4500 rjpeter Fix SQL Injection concerns. + * Dec 15, 2015 RM17933 mgamazaychikov Add four new corners to PART_OF_STATE. * * * @author wldougher @@ -121,6 +122,10 @@ public class AreaDictionaryMaker { PART_OF_STATE.put("wc", "west central"); PART_OF_STATE.put("wu", "western upper"); PART_OF_STATE.put("ww", "western"); + PART_OF_STATE.put("ws", "southwest"); + PART_OF_STATE.put("es", "southeast"); + PART_OF_STATE.put("wn", "northwest"); + PART_OF_STATE.put("en", "northeast"); } protected IPathManager pathMgr = PathManagerFactory.getPathManager(); @@ -426,4 +431,4 @@ public class AreaDictionaryMaker { statusHandler.error(e.getLocalizedMessage(), e); } } -} \ No newline at end of file +} diff --git a/edexOsgi/com.raytheon.edex.plugin.gfe/utility/edex_static/base/config/gfe/serverConfig.py b/edexOsgi/com.raytheon.edex.plugin.gfe/utility/edex_static/base/config/gfe/serverConfig.py index e7f4a9c95b..6f94c0a1cc 100644 --- a/edexOsgi/com.raytheon.edex.plugin.gfe/utility/edex_static/base/config/gfe/serverConfig.py +++ b/edexOsgi/com.raytheon.edex.plugin.gfe/utility/edex_static/base/config/gfe/serverConfig.py @@ -69,9 +69,9 @@ # # 05/29/2015 #17144 bhunder Added weather Params for URMA25 and OCONUS RTMA # 09/02/2015 #4819 rferrel Added HWRF. -# 09/09/2015 16287 amoore Additional validation of user input # 10/07/2015 #4958 dgilling Added support for NationalBlend D2D data. # 10/13/2015 #4961 randerso Updated NewTerrain/BaseTerrain database definitions +# 09/09/2015 16287 amoore Additional validation of user input # 10/30/2015 #17940 jendrowski Responded to Code Review. Mostly syntactical changes. #################################################################################################### @@ -1905,7 +1905,7 @@ SITES = { 'HUS' : ([1073,689], (19.0, 8.0), ( 67.0, 43.0), 'EST5EDT', Grid211, "nc"), #'NHA' : ([1729,1601], (1.0,1.0), (1728.0, 1600.0), 'EST5EDT', GridForNHA, "nc"), 'NHA' : ([1873,1361], (35.5,3.5), (58.5,42.5), 'EST5EDT', Grid211, "nc"), # updated - } +} # Get list of valid office types, for validation. VALID_OFFICE_TYPES = [] @@ -1916,6 +1916,7 @@ for siteValues in SITES.values(): if officeType not in VALID_OFFICE_TYPES: # A new office type VALID_OFFICE_TYPES.append(officeType) + #--------------------------------------------------------------------------- # # Time Constraint configuration section @@ -3082,13 +3083,7 @@ DATABASES = [ # Intersite coordination database parameter groupings, based on # OFFICIALDBS, but time constraint is always TC1 ISCPARMS = [] - if type(officeType) != str: - raise TypeError, "Office type not a str: " + `officeType` - else: - if officeType not in VALID_OFFICE_TYPES: - raise ValueError, "Office type: " + str(officeType) + " does not match any of the following: [" + (', '.join(VALID_OFFICE_TYPES)) + "]" - - + # # new parameters for NewTerrain # @@ -3269,6 +3264,11 @@ for wes, tc in (OFFICIALDBS + localISCParms): for wes, officeType in (EXTRA_ISC_PARMS + localISCExtraParms): if myOfficeType == officeType: continue + if type(officeType) != str: + raise TypeError, "Office type not a str: " + `officeType` + else: + if officeType not in VALID_OFFICE_TYPES: + raise ValueError, "Office type: " + str(officeType) + " does not match any of the following: [" + (', '.join(VALID_OFFICE_TYPES)) + "]" for we in wes: wecopy = list(we) wecopy[0] = wecopy[0] + officeType #rename the weather element diff --git a/nativeLib/files.native/awipsShare/hydroapps/lib/native/linux32/library.ohd.pproc.so b/nativeLib/files.native/awipsShare/hydroapps/lib/native/linux32/library.ohd.pproc.so index f237beba56..b0b3d6b5fc 100755 Binary files a/nativeLib/files.native/awipsShare/hydroapps/lib/native/linux32/library.ohd.pproc.so and b/nativeLib/files.native/awipsShare/hydroapps/lib/native/linux32/library.ohd.pproc.so differ diff --git a/nativeLib/files.native/edex/lib/native/linux32/library.ohd.pproc.so b/nativeLib/files.native/edex/lib/native/linux32/library.ohd.pproc.so index f237beba56..b0b3d6b5fc 100755 Binary files a/nativeLib/files.native/edex/lib/native/linux32/library.ohd.pproc.so and b/nativeLib/files.native/edex/lib/native/linux32/library.ohd.pproc.so differ diff --git a/rpms/awips2.core/Installer.ldm/patch/etc/pqact.conf.template b/rpms/awips2.core/Installer.ldm/patch/etc/pqact.conf.template index 6a6915f824..83901ae980 100644 --- a/rpms/awips2.core/Installer.ldm/patch/etc/pqact.conf.template +++ b/rpms/awips2.core/Installer.ldm/patch/etc/pqact.conf.template @@ -89,7 +89,10 @@ HDS ^(ZEGZ98) (K.{3}) (..)(..)(..)[^!]*!(grib|grib2)/[^/]*/([^/]*)/#([^/]*)/([0- # YSQA88 KMSR 011220 /mNWS_185 !grib/nws/NWS_185/#255/201102010600/F000/MSTAV/sfc/ # YEQA88 KMSR 011210 !grib2/nws/NWS_255/#255/201102010600F000/WEASD/0 -HDS ^([YZ][ES]QA88) KMSR (..)(..)(..)[^!]*!(grib|grib2)/[^/]*/([^/]*)/#([^/]*)/([0-9]{8})([0-9]{4})/(F[0-9]{3})/([^/]*) +HDS ^([YZ][ES]QA88) KMSR (..)(..)(..)[^!]*!(grib)/[^/]*/([^/]*)/#([^/]*)/([0-9]{8})([0-9]{4})/(F[0-9]{3})/([^/]*) + FILE -overwrite -log -close -edex /data_store/\5/(\2:yyyy)(\2:mm)\2/\3/\6/GRID\7/\9Z_\(10)_\(11)-\1_KMSR_\2\3\4_(seq).\5.%Y%m%d%H + +HDS ^([YZ][ES]QA88) KMSR (..)(..)(..)[^!]*!(grib2)/[^/]*/([^/]*)/#([^/]*)/([0-9]{8})([0-9]{4})(F[0-9]{3})/([^/]*) FILE -overwrite -log -close -edex /data_store/\5/(\2:yyyy)(\2:mm)\2/\3/\6/GRID\7/\9Z_\(10)_\(11)-\1_KMSR_\2\3\4_(seq).\5.%Y%m%d%H # AWIPS 1: GRID ^HAXA00.*KWBC /img/SBN/Raw