]");
- }
-
- /*
- * process alertalarmval data. if there data meets alert/alarm conditions,
- * report them in a text file and send it to the text database.
- */
- private static void reportAlarm() {
- Date now = new Date(System.currentTimeMillis());
-
- // Get the whole data for the report
- AlertalarmRecord aaRecord = RecordMgr.getAlarmData(reportOptions);
-
- // write the report
- reportWriter = new ReportWriter(currReport, reportOptions, now);
- reportWriter.writeHeader();
- reportWriter.writeBody(aaRecord);
- if (reportOptions.getVerbose()) {
- reportWriter.writeVerboseTrailer();
- } else {
- reportWriter.writeReportTrailer();
- }
-
- // save it to the text database if indeed
- // there are alarm events to report.
- int alarmCount = reportWriter.getAlarmCount();
- if (alarmCount > 0) {
- log.info(alarmCount + " alarms reported, report written to "
- + reportWriter.getFilename());
- //saveReportTotextDb();
- } else {
- log.info("No alarms reported, info sent to "
- + reportWriter.getFilename());
- log.info("File NOT sent to text database.");
- }
-
- }
-
- /*
- * saves the report contents to the text database.
- */
- private static void saveReportTotextDb() {
-
- setApplicationSpringContext(Constants.FXA_CONFIG);
-
- WriteProductRequest request = new WriteProductRequest();
- request.setProductId(reportOptions.getProductId());
- request.setOperationalMode(true);
- request.setNotifyAlarmAlert(true);
- String rptData = reportWriter.getReportData();
- request.setReportData(rptData);
-
- log.info("Sending " + reportWriter.getFilename() + " to textdb as id "
- + request.getProductId());
-
- TextDB textdb = new TextDB();
- long result = textdb.writeProduct(request.getProductId(),
- request.getReportData(), request.getOperationalMode(), null);
-
- if (result != Long.MIN_VALUE) {
- log.info("Product " + request.getProductId()
- + " successfully sent to textdb");
- } else {
- log.error("Error sending product " + request.getProductId()
- + " to textdb. status=" + result);
- }
-
- }
-
- /*
- * verify whether necessary application tokens have been defined.
- */
- private static void loadEnvironment() {
-
- System.setProperty("edex.home", System.getenv("EDEX_HOME"));
- System.setProperty("db.addr", System.getenv("PGHOST"));
- System.setProperty("ih.db.name", System.getenv("DB_NAME"));
- System.setProperty("fxa.db.name", System.getenv("FXA_DB_NAME"));
- System.setProperty("db.port", System.getenv("PGPORT"));
-
- AppsDefaults appDefaults = AppsDefaults.getInstance();
-
- String aalogDir = appDefaults.getToken(Constants.WHFS_UTIL_LOG_DIR);
-
- if (aalogDir == null) {
- System.out
- .println("whfs_util_log_dir directory undefined. Aborting.");
- }
-
- reportDir = appDefaults.getToken(Constants.WHFS_PRODUCT_DIR);
-
- if (reportDir == null) {
- System.out
- .println("whfs_product_dir directory undefined . Aborting.");
- System.exit(0);
- }
- }
-
- /*
- * initializes a File object that points to the current alert/alarm report
- */
- private static void setCurrentReportfile() {
- String pid = reportOptions.getProductId();
- String suffix = reportOptions.getFileSuffix();
-
- if (suffix.length() > 0)
- currReport = new File(reportDir + File.separator + pid + "." + suffix);
- else
- currReport = new File(reportDir + File.separator + pid);
-
- try {
- currReport.createNewFile();
- } catch (Exception e) {
- log.fatal("Could not create report file "
- + String.valueOf(currReport));
- log.info("Exiting.");
- System.exit(0);
- }
- }
-
- private static void setApplicationSpringContext(String... configLocations) {
- if (configLocations.length > 0) {
- ClassPathXmlApplicationContext ctxt = new ClassPathXmlApplicationContext(
- configLocations);
- EDEXUtil edexUtil = new EDEXUtil();
- edexUtil.setApplicationContext(ctxt);
- } else {
- log.fatal("Application spring config location not specified");
- log.info("Exiting.");
- System.exit(0);
- }
- }
-
-}
\ No newline at end of file
diff --git a/edexOsgi/com.raytheon.edex.plugin.shef/src/com/raytheon/edex/plugin/shef/alarms/CmdlineOptionId.java b/edexOsgi/com.raytheon.edex.plugin.shef/src/com/raytheon/edex/plugin/shef/alarms/CmdlineOptionId.java
deleted file mode 100644
index 0f153a5d46..0000000000
--- a/edexOsgi/com.raytheon.edex.plugin.shef/src/com/raytheon/edex/plugin/shef/alarms/CmdlineOptionId.java
+++ /dev/null
@@ -1,106 +0,0 @@
-/**
- * This software was developed and / or modified by Raytheon Company,
- * pursuant to Contract DG133W-05-CQ-1067 with the US Government.
- *
- * U.S. EXPORT CONTROLLED TECHNICAL DATA
- * This software product contains export-restricted data whose
- * export/transfer/disclosure is restricted by U.S. law. Dissemination
- * to non-U.S. persons whether in the United States or abroad requires
- * an export license or other authorization.
- *
- * Contractor Name: Raytheon Company
- * Contractor Address: 6825 Pine Street, Suite 340
- * Mail Stop B8
- * Omaha, NE 68106
- * 402.291.0100
- *
- * See the AWIPS II Master Rights File ("Master Rights File.pdf") for
- * further licensing information.
- **/
-package com.raytheon.edex.plugin.shef.alarms;
-
-/**
- *
- *
- *
- * SOFTWARE HISTORY
- * Date Ticket# Engineer Description
- * ------------ ---------- ----------- --------------------------
- * June 15, 2011 9377 jnjanga Initial creation
- * July 12, 2013 15711 wkwock Fix verbose, observe mode, etc
- *
- *
- *
- * @author jnjanga
- * @version 1.0
- */
-
-public enum CmdlineOptionId {
-
- DB_NAME("Database Name") {
-
- public String toString() {
- return "d";
- }
-
- },
-
- PRODUCT_ID("Product Id") {
-
- public String toString() {
- return "p";
- }
-
- },
-
- REPORT_MODE("Report mode") {
- public String toString() {
- return "r";
- }
-
- },
-
- MINUTES("minutes") {
-
- public String toString() {
- return "m";
- }
- },
-
- FILE_SUFFIX("File Suffix") {
- public String toString() {
- return "s";
- }
-
- },
-
- FLAGS("Include Flags") {
- public String toString() {
- return "f";
- }
-
- },
-
- PE("Physical Element") {
- public String toString() {
- return "e";
- }
-
- },
-
- VERBOSE("Verbose") {
- public String toString() {
- return "v";
- }
- };
-
- CmdlineOptionId(String desc) {
- this.desc = desc;
- }
-
- public String description() {
- return this.desc;
- }
-
- private String desc;
-}
diff --git a/edexOsgi/com.raytheon.edex.plugin.shef/src/com/raytheon/edex/plugin/shef/alarms/RecordMgr.java b/edexOsgi/com.raytheon.edex.plugin.shef/src/com/raytheon/edex/plugin/shef/alarms/RecordMgr.java
deleted file mode 100644
index 15650ae2a2..0000000000
--- a/edexOsgi/com.raytheon.edex.plugin.shef/src/com/raytheon/edex/plugin/shef/alarms/RecordMgr.java
+++ /dev/null
@@ -1,245 +0,0 @@
-/**
- * This software was developed and / or modified by Raytheon Company,
- * pursuant to Contract DG133W-05-CQ-1067 with the US Government.
- *
- * U.S. EXPORT CONTROLLED TECHNICAL DATA
- * This software product contains export-restricted data whose
- * export/transfer/disclosure is restricted by U.S. law. Dissemination
- * to non-U.S. persons whether in the United States or abroad requires
- * an export license or other authorization.
- *
- * Contractor Name: Raytheon Company
- * Contractor Address: 6825 Pine Street, Suite 340
- * Mail Stop B8
- * Omaha, NE 68106
- * 402.291.0100
- *
- * See the AWIPS II Master Rights File ("Master Rights File.pdf") for
- * further licensing information.
- **/
-package com.raytheon.edex.plugin.shef.alarms;
-
-import static com.raytheon.uf.common.dataplugin.shef.util.ShefConstants.ALARM_CATEGSTR;
-import static com.raytheon.uf.common.dataplugin.shef.util.ShefConstants.ALERT_CATEGSTR;
-import static com.raytheon.uf.common.dataplugin.shef.util.ShefConstants.DIFF_CHECKSTR;
-import static com.raytheon.uf.common.dataplugin.shef.util.ShefConstants.LOWER_CHECKSTR;
-import static com.raytheon.uf.common.dataplugin.shef.util.ShefConstants.ROC_CHECKSTR;
-import static com.raytheon.uf.common.dataplugin.shef.util.ShefConstants.UPPER_CHECKSTR;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
-import com.raytheon.uf.edex.database.dao.CoreDao;
-import com.raytheon.uf.edex.database.dao.DaoConfig;
-
-/**
- * Reads Alertalarmval table and creates an organized record.
- *
- *
- *
- * SOFTWARE HISTORY
- * Date Ticket# Engineer Description
- * ------------ ---------- ----------- --------------------------
- * June 15, 2011 9377 jnjanga Initial creation
- * Sep 05, 2013 16549 wkwock Fix the query
- *
- *
- *
- *
- * @author jnjanga
- * @version 1.0
- */
-
-class RecordMgr {
-
- static final int MODE = 101;
-
- static final int TYPE_SRC = 102;
-
- static final int AA_CAT = 103;
-
- static final int AA_CHCK = 104;
-
- static final int PEFILTER = 105;
-
- private static Log log = LogFactory
- .getLog(RecordMgr.class);
-
- private static ReportOptions options = null;
-
- public static AlertalarmRecord getAlarmData(ReportOptions opt) {
- options = opt;
- StringBuilder query = new StringBuilder(
- "select aav.lid, "
- + "aav.pe, aav.dur, "
- + "aav.ts, aav.extremum, "
- + "aav.probability, aav.validtime, aav.basistime, "
- + "aav.aa_categ, aav.aa_check, "
- + "aav.value, aav.suppl_value, "
- + "aav.shef_qual_code, aav.quality_code, aav.revision, "
- + "aav.product_id, aav.producttime, aav.postingtime, aav.action_time, "
- + "location.name from location, alertalarmval aav where location.lid = aav.lid");
-
- // Build 'where' clause according to report mode
- // if getting only unreported data, let the query filter out the
- // reported data
- query.append(whereSubClauseFor(MODE))
- .append(whereSubClauseFor(TYPE_SRC))
- .append(whereSubClauseFor(AA_CAT))
- .append(whereSubClauseFor(AA_CHCK))
- .append(whereSubClauseFor(PEFILTER))
- .append(" AND (aav.ts NOT LIKE 'F%' OR aav.validtime >= current_timestamp) ")
- .append(" ORDER BY aav.lid ASC, aav.pe, aav.ts, aav.aa_check, aav.validtime DESC ");
-
- log.info("Query for getting alertalarmval data :" + query.toString());
-
- Object[] aaData = null;
- CoreDao dao = null;
- AlertalarmRecord aaRecord = null;
-
- // Get the data
- try {
- dao = new CoreDao(DaoConfig.forDatabase(opt.getDbname()));
- aaData = dao.executeSQLQuery(query.toString());
- if (aaData != null && aaData.length > 0) {
- aaRecord = AlertalarmRecord.newInstance();
- for (int i = 0; i < aaData.length; i++) {
- Object[] aaRow = (Object[]) aaData[i];
- aaRecord.put(aaRow);
- }
- }
-
- } catch (Exception e) {
- log.error("Query = [" + query + "]");
- log.error(" - PostgresSQL error retrieving from alertalarmval ", e);
- System.exit(0);
- }
-
- return aaRecord;
- }
-
- private static String whereSubClauseFor(int userSelection) {
- switch (userSelection) {
- case MODE:
- return modeSubClause();
- case TYPE_SRC:
- return typeSrcSubClause();
- case AA_CAT:
- return aaCatSubClause();
- case AA_CHCK:
- return aaCheckSubClause();
- case PEFILTER:
- return peFilterSubClause();
- default:
- return null;
- }
-
- }
-
- /**
- * Adjust the query to any PE Filter
- *
- * @return
- */
- private static String peFilterSubClause() {
- String pe = options.getPEfilter();
- return pe == null ? "" : " AND pe = " + pe;
- }
-
- private static String modeSubClause() {
- if (options.getMode() == ReportMode.UNREPORTED)
- return " AND action_time IS NULL ";
- else
- return " ";
- }
-
- private static String typeSrcSubClause() {
- String flags = options.getFilter();
- if(flags==null)
- return " AND aav.ts like '%'";
-
- if (flags.contains("O") && !flags.contains("F"))
- return " AND (aav.ts like 'R%' or aav.ts like 'P%')";
- else if (!flags.contains("O") && flags.contains("F"))
- return " AND (aav.ts like 'F%' or aav.ts like 'C%')";
- else
- return " AND aav.ts like '%'";
- }
-
- /**
- * append the where clause based on the alert/alarm category field
- *
- * @return
- */
- private static String aaCatSubClause() {
- String flags = options.getFilter();
- if(flags == null)
- return " ";
-
- if (flags.contains("T") && !flags.contains("M"))
- return " AND aav.aa_categ = " + ALERT_CATEGSTR;
- else if (!flags.contains("T") && flags.contains("M"))
- return " AND aav.aa_categ = " + ALARM_CATEGSTR;
- else
- return " ";
- }
-
- /**
- * append the where clause based on the alert/alarm check field
- *
- * @return
- */
- private static String aaCheckSubClause() {
- String subClause = " AND aa_check in (";
- String flags = options.getFilter();
- if(flags == null)
- return " ";
-
- boolean rocFlag = flags.contains("R");
- boolean lowFlag = flags.contains("L");
- boolean upFlag = flags.contains("U");
- boolean diffFlag = flags.contains("D");
-
- if (!rocFlag && !lowFlag && !upFlag && !diffFlag)
- return " ";
- else {
- boolean init = true;
-
- char[] checks = { 'R', 'L', 'U', 'D' };
- for (char c : checks) {
- switch (c) {
- case 'U':
- if (upFlag)
- subClause
- .concat(aaCheckSubClause(init, UPPER_CHECKSTR));
- break;
- case 'L':
- if (lowFlag)
- subClause
- .concat(aaCheckSubClause(init, LOWER_CHECKSTR));
- break;
- case 'R':
- if (rocFlag)
- subClause.concat(aaCheckSubClause(init, ROC_CHECKSTR));
- break;
- case 'D':
- if (diffFlag)
- subClause.concat(aaCheckSubClause(init, DIFF_CHECKSTR));
- break;
- default:
- break;
- }
- }
- }
- return subClause.concat(" ) ");
- }
-
- private static String aaCheckSubClause(boolean initialEntry, String checkStr) {
- if (initialEntry) {
- initialEntry = !initialEntry;
- return checkStr;
- } else
- return "," + checkStr;
- }
-
-}
\ No newline at end of file
diff --git a/edexOsgi/com.raytheon.edex.plugin.shef/src/com/raytheon/edex/plugin/shef/alarms/ReportOptions.java b/edexOsgi/com.raytheon.edex.plugin.shef/src/com/raytheon/edex/plugin/shef/alarms/ReportOptions.java
deleted file mode 100644
index 5d9c454872..0000000000
--- a/edexOsgi/com.raytheon.edex.plugin.shef/src/com/raytheon/edex/plugin/shef/alarms/ReportOptions.java
+++ /dev/null
@@ -1,267 +0,0 @@
-/**
- * This software was developed and / or modified by Raytheon Company,
- * pursuant to Contract DG133W-05-CQ-1067 with the US Government.
- *
- * U.S. EXPORT CONTROLLED TECHNICAL DATA
- * This software product contains export-restricted data whose
- * export/transfer/disclosure is restricted by U.S. law. Dissemination
- * to non-U.S. persons whether in the United States or abroad requires
- * an export license or other authorization.
- *
- * Contractor Name: Raytheon Company
- * Contractor Address: 6825 Pine Street, Suite 340
- * Mail Stop B8
- * Omaha, NE 68106
- * 402.291.0100
- *
- * See the AWIPS II Master Rights File ("Master Rights File.pdf") for
- * further licensing information.
- **/
-package com.raytheon.edex.plugin.shef.alarms;
-
-import java.util.ArrayList;
-
-import com.raytheon.uf.common.dataplugin.shef.util.ShefConstants;
-
-/**
- * Place holder for user defined report options
- *
- *
- *
- * SOFTWARE HISTORY
- * Date Ticket# Engineer Description
- * ------------ ---------- ----------- --------------------------
- * June 15, 2011 9377 jnjanga Initial creation
- * July 12, 2013 15711 wkwock Fix verbose, observe mode, etc
- *
- *
- *
- * @author jnjanga
- * @version 1.0
- */
-
-class ReportOptions {
-
- private String dbname=null;
-
- private String productId=null;
-
- private ReportMode mode=null;
-
- private String filter=null;
-
- private String PEfilter=null;
-
- private String fileSuffix=null;
-
- private float min_val_diff=0;
-
- private int minutes=0;
-
- private boolean minGiven=false;
-
- private boolean verboseFlag=false;
-
- ReportOptions() {
- }
-
- public String getDbname() {
- return dbname;
- }
-
- public String getProductId() {
- return productId;
- }
-
- public void setProductId(String productId) {
- int pidlength = productId.length();
- if (pidlength != 9 && pidlength != 10) {
- final String msg = "Invalid length for Product_Id : " + pidlength;
- throw new IllegalArgumentException(msg);
- }
- this.productId = productId;
- }
-
-
- public void setDbname(String dbname) {
- if(!dbname.equals( System.getProperty("ih.db.name"))) {
- final String msg = "Invalid database name : " + dbname;
- throw new IllegalArgumentException(msg);
- }
- this.dbname = ShefConstants.IHFS;
- }
-
- public int getMinutes() {
- return minutes;
- }
-
- public void setMinutes(String minutes) throws IllegalArgumentException {
- boolean invalid = false;
- int argl = minutes.length();
- int tmp = Integer.valueOf(minutes);
- if (argl == 0 || argl > 6) {
- invalid = true;
- } else {
- invalid = isWithinWindow(tmp);
- }
-
- if (invalid) {
- final String msg = getWindowOptionUsage(tmp);
- throw new IllegalArgumentException(msg);
- }
-
- this.minutes = tmp;
- minGiven = true;
- }
-
- public boolean isMinutesGiven() {
- return minGiven;
- }
-
- public ReportMode getMode() {
- return mode;
- }
-
- public void setMode(String mode) throws IllegalArgumentException {
- try {
- this.mode = ReportMode.valueOf(mode);
- } catch (Exception e) {
- final String msg = "Invalid report mode : " + mode + Constants.EOL
- + "Report mode must be either : "
- + printValid(ReportMode.values());
- throw new IllegalArgumentException(msg);
- }
- }
-
- public String getFilter() {
- return filter;
- }
-
- public void setFilter(String filter) throws IllegalArgumentException {
- boolean invalid = false;
- int fltrlen = filter.length();
- if (fltrlen == 0 || fltrlen > 8)
- invalid = true;
- else
- invalid = !tokensValid(filter);
-
- if (invalid) {
- final String msg = printFilterOptionUsage(filter);
- throw new IllegalArgumentException(msg);
- }
-
- this.filter = filter;
- }
-
- public String getPEfilter() {
- return PEfilter;
- }
-
- public void setPEfilter(String pEfilter) throws IllegalArgumentException {
- if (pEfilter.length() != 2) {
- final String msg = "PE filter option must be two characters";
- throw new IllegalArgumentException(msg);
- }
- PEfilter = pEfilter;
- }
-
- public String getFileSuffix() {
- return fileSuffix;
- }
-
- public void setFileSuffix(String fileSuffix) {
- this.fileSuffix = fileSuffix;
- }
-
- public float getMin_val_diff() {
- return min_val_diff;
- }
-
- public void setMin_val_diff(float min_val_diff) {
- this.min_val_diff = min_val_diff;
- }
-
- public boolean getVerbose () {
- return verboseFlag ;
- }
-
- public void setVerbose (boolean verboseFlg) {
- verboseFlag = verboseFlg;
- }
-
- public void addOption(CmdlineOption option) throws IllegalArgumentException {
- String arg = (String) option.getArg();
- switch (option.getId()) {
- case DB_NAME:
- setDbname(arg);
- break;
- case PRODUCT_ID:
- setProductId(arg);
- break;
- case REPORT_MODE:
- setMode(arg);
- break;
- case FLAGS:
- setFilter(arg);
- break;
- case PE:
- setPEfilter(arg);
- break;
- case MINUTES:
- setMinutes(arg);
- break;
- case FILE_SUFFIX:
- setFileSuffix(arg);
- break;
- case VERBOSE:
- setVerbose(true);
- break;
- default:
- break;
- }
- }
-
- public String toString() {
- StringBuilder str = new StringBuilder();
-
- str.append("Product_Id = " + productId + Constants.EOL);
- str.append("Report_Mode = " + mode.toString() + Constants.EOL);
- str.append("Filter = " + filter + Constants.EOL);
- str.append("PE Filter = " + PEfilter + Constants.EOL);
- str.append("File suffix = " + fileSuffix + Constants.EOL);
- str.append("minutes = " + minutes + Constants.EOL);
- return str.toString();
- }
-
- private static String printValid(E[] array) {
- StringBuilder str = new StringBuilder();
- for (E element : array)
- str.append(element.toString() + ", ");
- str.delete(str.length() - 2, str.length());
- return str.toString();
- }
-
- private boolean isWithinWindow(int min) {
- return (min <= 0 || min > 999999);
- }
-
- private String getWindowOptionUsage(int min) {
- return "Invalid number of minutes : " + min
- + " . Must be between 1 - 999999 ";
- }
-
- private String printFilterOptionUsage(String filter) {
- return "Invalid length or token for filter option : " + filter + Constants.EOL
- + "Filter option must be either : "
- + printValid(FilterOption.values());
- }
-
- private boolean tokensValid(String filter) {
- ArrayList validArgs = FilterOption.asList();
- for (char c : filter.toCharArray())
- if (!validArgs.contains(c))
- return false;
- return true;
- }
-
-}
\ No newline at end of file
diff --git a/edexOsgi/com.raytheon.edex.plugin.textlightning/src/com/raytheon/edex/plugin/textlightning/impl/TextLightningParser.java b/edexOsgi/com.raytheon.edex.plugin.textlightning/src/com/raytheon/edex/plugin/textlightning/impl/TextLightningParser.java
index e76a82fb4a..62e7aa0e5d 100644
--- a/edexOsgi/com.raytheon.edex.plugin.textlightning/src/com/raytheon/edex/plugin/textlightning/impl/TextLightningParser.java
+++ b/edexOsgi/com.raytheon.edex.plugin.textlightning/src/com/raytheon/edex/plugin/textlightning/impl/TextLightningParser.java
@@ -45,6 +45,10 @@ import com.raytheon.uf.common.status.UFStatus.Priority;
* ------------ ---------- ----------- --------------------------
* Dec 15, 2009 3983 jsanchez Initial creation
* Feb 27, 2013 DCS 152 jgerth/elau Support for WWLLN
+ * Jan 27, 2014 DR 16080 M.Porricelli Changed LIGHTNING_PTRN_A
+ * to accommodate AK BLM
+ * lgtng intensities -999 to
+ * 999
* Feb 12, 2014 2655 njensen Use status handler for logging
*
*
@@ -63,8 +67,10 @@ public class TextLightningParser {
private List reports;
// 03/23/2010 13:35:01 72.00 -157.00 -14 1
- private static final String LIGHTNING_PTRN_A = "(\\d{2,2}/\\d{2,2}/\\d{4,4}) (\\d{2,2}:\\d{2,2}:\\d{2,2})\\s{1,}(\\d{1,2}.\\d{2,2})\\s{1,}( |-\\d{1,3}.\\d{2,2})\\s{1,}( |-\\d{1,2})\\s{1,}(\\d{1,2})";
-
+ // 03/23/2010 13:35:01 72.00 -157.00 14 1
+ // 03/23/2010 13:35:01 72.00 -157.00 -142 1
+ // 03/23/2010 13:35:01 72.00 -157.00 142 1
+ private static final String LIGHTNING_PTRN_A = "(\\d{2,2}/\\d{2,2}/\\d{4,4}) (\\d{2,2}:\\d{2,2}:\\d{2,2})\\s{1,}(\\d{1,2}.\\d{2,2})\\s{1,}( |-\\d{1,3}.\\d{2,2})\\s{1,}(-?\\d{1,3})\\s{1,}(\\d{1,2})";
private static final Pattern LTG_PTRN_A = Pattern.compile(LIGHTNING_PTRN_A);
// 10:03:24:13:35:00.68 72.000 157.000 -14.2 1
diff --git a/edexOsgi/com.raytheon.uf.common.archive/src/com/raytheon/uf/common/archive/config/ArchiveConfigManager.java b/edexOsgi/com.raytheon.uf.common.archive/src/com/raytheon/uf/common/archive/config/ArchiveConfigManager.java
index 0943772df9..1c6166dae0 100644
--- a/edexOsgi/com.raytheon.uf.common.archive/src/com/raytheon/uf/common/archive/config/ArchiveConfigManager.java
+++ b/edexOsgi/com.raytheon.uf.common.archive/src/com/raytheon/uf/common/archive/config/ArchiveConfigManager.java
@@ -189,6 +189,15 @@ public class ArchiveConfigManager {
public Collection getArchives() {
String fileName = ArchiveConstants.selectFileName(Type.Retention, null);
SelectConfig selections = loadSelection(fileName);
+ List emptySelection = new ArrayList(0);
+
+ // Clear old selections.
+ for (ArchiveConfig archive : archiveMap.values()) {
+ for (CategoryConfig category : archive.getCategoryList()) {
+ category.setSelectedDisplayNames(emptySelection);
+ }
+ }
+
if ((selections != null) && !selections.isEmpty()) {
for (ArchiveSelect archiveSelect : selections.getArchiveList()) {
String archiveName = archiveSelect.getName();
@@ -325,7 +334,8 @@ public class ArchiveConfigManager {
Map helperMap = new HashMap();
for (CategoryConfig category : archive.getCategoryList()) {
- CategoryFileDateHelper helper = new CategoryFileDateHelper(category);
+ CategoryFileDateHelper helper = new CategoryFileDateHelper(
+ archiveRootDirPath, category);
helperMap.put(category, helper);
}
@@ -470,13 +480,8 @@ public class ArchiveConfigManager {
if (file.isDirectory()) {
purgeCount += purgeDir(file,
FileFilterUtils.trueFileFilter());
- if (file.list().length == 0) {
- purgeCount += purgeDir(file,
- FileFilterUtils.trueFileFilter());
- }
- } else {
- purgeCount += deleteFile(file);
}
+ purgeCount += deleteFile(file);
}
} else if (file.isDirectory()) {
purgeCount += purgeDir(file, defaultTimeFilter,
diff --git a/edexOsgi/com.raytheon.uf.common.archive/src/com/raytheon/uf/common/archive/config/CategoryConfig.java b/edexOsgi/com.raytheon.uf.common.archive/src/com/raytheon/uf/common/archive/config/CategoryConfig.java
index 42f5ba8d9a..b22fadc77b 100644
--- a/edexOsgi/com.raytheon.uf.common.archive/src/com/raytheon/uf/common/archive/config/CategoryConfig.java
+++ b/edexOsgi/com.raytheon.uf.common.archive/src/com/raytheon/uf/common/archive/config/CategoryConfig.java
@@ -72,6 +72,7 @@ import javax.xml.bind.annotation.XmlRootElement;
* ------------ ---------- ----------- --------------------------
* May 1, 2013 1966 rferrel Initial creation
* Aug 03, 2013 2224 rferrel Changes to include DataSet.
+ * Jan 09, 2014 2603 rferrel Fix bug in setSelectedDisplayNames
*
*
*
@@ -155,7 +156,7 @@ public class CategoryConfig implements Comparable {
public void setSelectedDisplayNames(
Collection selectedDisplayNameList) {
selectedDisplayNames.clear();
- selectedDisplayNameList.addAll(selectedDisplayNameList);
+ selectedDisplayNames.addAll(selectedDisplayNameList);
}
public void addSelectedDisplayName(String displayName) {
diff --git a/edexOsgi/com.raytheon.uf.common.archive/src/com/raytheon/uf/common/archive/config/CategoryFileDateHelper.java b/edexOsgi/com.raytheon.uf.common.archive/src/com/raytheon/uf/common/archive/config/CategoryFileDateHelper.java
index 441eb00c7d..acf2ea6d8a 100644
--- a/edexOsgi/com.raytheon.uf.common.archive/src/com/raytheon/uf/common/archive/config/CategoryFileDateHelper.java
+++ b/edexOsgi/com.raytheon.uf.common.archive/src/com/raytheon/uf/common/archive/config/CategoryFileDateHelper.java
@@ -125,15 +125,19 @@ public class CategoryFileDateHelper implements IFileDateHelper {
private final List dateInfoList;
+ private final String archiveRootDirPath;
+
/**
* Initialization constructor.
*
+ * @param archiveRootDirPath
+ * - Assumes path ends with file separator.
* @param config
- * @param rootDirPattern
- * categoryTopLevelDirPattern
*/
- public CategoryFileDateHelper(CategoryConfig config) {
+ public CategoryFileDateHelper(String archiveRootDirPath,
+ CategoryConfig config) {
List categoryDataSetList = config.getDataSetList();
+ this.archiveRootDirPath = archiveRootDirPath;
int size = 0;
for (CategoryDataSet dataSet : categoryDataSetList) {
size += dataSet.getDirPatterns().size();
@@ -176,6 +180,9 @@ public class CategoryFileDateHelper implements IFileDateHelper {
@Override
public DataSetStatus getFileDate(File file) {
String filenamePath = file.getAbsolutePath();
+ if (filenamePath.indexOf(archiveRootDirPath) == 0) {
+ filenamePath = filenamePath.substring(archiveRootDirPath.length());
+ }
Long timestamp = null;
DataSetStatus result = new DataSetStatus(file);
diff --git a/edexOsgi/com.raytheon.uf.common.comm/src/com/raytheon/uf/common/comm/HttpClient.java b/edexOsgi/com.raytheon.uf.common.comm/src/com/raytheon/uf/common/comm/HttpClient.java
index 8577585857..09aec7cddf 100644
--- a/edexOsgi/com.raytheon.uf.common.comm/src/com/raytheon/uf/common/comm/HttpClient.java
+++ b/edexOsgi/com.raytheon.uf.common.comm/src/com/raytheon/uf/common/comm/HttpClient.java
@@ -104,6 +104,8 @@ import com.raytheon.uf.common.util.ByteArrayOutputStreamPool.ByteArrayOutputStre
* Mar 11, 2013 1786 mpduff Add https capability.
* Jun 12, 2013 2102 njensen Better error handling when using
* DynamicSerializeStreamHandler
+ * Feb 04, 2014 2704 njensen Better error message with bad address
+ * Https authentication failures notify handler
* Feb 17, 2014 2756 bclement added content type to response object
*
*
@@ -404,7 +406,6 @@ public class HttpClient {
private HttpClient() {
}
-
private org.apache.http.client.HttpClient getHttpsInstance() {
return HttpsHolder.sslClient;
}
@@ -543,6 +544,14 @@ public class HttpClient {
"Error retrying http request", e);
return resp;
}
+
+ if (resp.getStatusLine().getStatusCode() == 401) {
+ // obtained credentials and they failed!
+ if (handler != null) {
+ handler.credentialsFailed();
+ }
+ }
+
}
} else {
resp = getHttpInstance().execute(put);
@@ -593,6 +602,10 @@ public class HttpClient {
try {
String host = put.getURI().getHost();
+ if (host == null) {
+ throw new InvalidURIException("Invalid URI: "
+ + put.getURI().toString());
+ }
ongoing = currentRequestsCount.get(host);
if (ongoing == null) {
ongoing = new AtomicInteger();
@@ -655,21 +668,21 @@ public class HttpClient {
// so we only want to error off here if we're using a
// DynamicSerializeStreamHandler because deserializing will fail
// badly
- String exceptionMsg = "HTTP server returned error code: "
- + resp.getStatusLine().getStatusCode();
+ int statusCode = resp.getStatusLine().getStatusCode();
DefaultInternalStreamHandler errorHandler = new DefaultInternalStreamHandler();
- String serverErrorMsg = null;
+ String exceptionMsg = null;
try {
errorHandler.handleStream(resp.getEntity().getContent());
- serverErrorMsg = new String(errorHandler.byteResult);
+ exceptionMsg = new String(errorHandler.byteResult);
} catch (IOException e) {
statusHandler
.warn("Error reading the server's error message");
}
- if (serverErrorMsg != null) {
- exceptionMsg += "\n" + serverErrorMsg;
+ if (exceptionMsg == null) {
+ exceptionMsg = "HTTP server returned error code: "
+ + statusCode;
}
- throw new CommunicationException(exceptionMsg);
+ throw new HttpServerException(exceptionMsg, statusCode);
}
// should only be able to get here if we didn't encounter the
@@ -742,7 +755,7 @@ public class HttpClient {
// if there was an error reading the input stream,
// notify but continue
statusHandler.handle(Priority.EVENTB,
- "Error reading InputStream, assuming closed", e);
+ "Error reading InputStream, assuming closed");
}
try {
SafeGzipDecompressingEntity.close();
@@ -1195,7 +1208,7 @@ public class HttpClient {
new AuthScope(host, port),
new UsernamePasswordCredentials(username, password));
}
-
+
/**
* @param httpsConfiguration
* the httpsConfiguration to set
@@ -1210,5 +1223,5 @@ public class HttpClient {
public IHttpsConfiguration getHttpsConfiguration() {
return httpsConfiguration;
}
-
+
}
diff --git a/edexOsgi/com.raytheon.edex.plugin.shef/src/com/raytheon/edex/plugin/shef/alarms/CmdlineOptions.java b/edexOsgi/com.raytheon.uf.common.comm/src/com/raytheon/uf/common/comm/HttpServerException.java
similarity index 53%
rename from edexOsgi/com.raytheon.edex.plugin.shef/src/com/raytheon/edex/plugin/shef/alarms/CmdlineOptions.java
rename to edexOsgi/com.raytheon.uf.common.comm/src/com/raytheon/uf/common/comm/HttpServerException.java
index 6a6a83d999..2e9ac330dd 100644
--- a/edexOsgi/com.raytheon.edex.plugin.shef/src/com/raytheon/edex/plugin/shef/alarms/CmdlineOptions.java
+++ b/edexOsgi/com.raytheon.uf.common.comm/src/com/raytheon/uf/common/comm/HttpServerException.java
@@ -17,54 +17,55 @@
* See the AWIPS II Master Rights File ("Master Rights File.pdf") for
* further licensing information.
**/
-package com.raytheon.edex.plugin.shef.alarms;
-
-import org.apache.commons.cli.Option;
-import org.apache.commons.cli.Options;
+package com.raytheon.uf.common.comm;
/**
- * Convenience wrapper around org.apache.commons.cli.Options
+ * A communication exception corresponding to an error returned from an http
+ * server and including the http status code.
*
*
*
* SOFTWARE HISTORY
+ *
* Date Ticket# Engineer Description
* ------------ ---------- ----------- --------------------------
- * June 15, 2011 9377 jnjanga Initial creation
- *
+ * Feb 6, 2014 njensen Initial creation
*
*
*
- * @author jnjanga
+ * @author njensen
* @version 1.0
*/
-public class CmdlineOptions extends Options {
+public class HttpServerException extends CommunicationException {
private static final long serialVersionUID = 1L;
- CmdlineOptions() {
+ private int statusCode;
+
+ public HttpServerException() {
super();
}
- public void addOption(CmdlineOptionId optId) {
- Option opt = new Option(optId.toString(), true, optId.description());
- addOption(opt);
+ public HttpServerException(String message, Throwable cause) {
+ super(message, cause);
}
- public void addOption(CmdlineOptionId optId, boolean hasArg) {
- Option opt = new Option(optId.toString(), hasArg, optId.description());
- addOption(opt);
+ public HttpServerException(String message) {
+ super(message);
}
- public void addMandatoryOption(CmdlineOptionId optId) {
- Option opt = new Option(optId.toString(), true, optId.description());
- opt.setRequired(true);
- addOption(opt);
+ public HttpServerException(Throwable cause) {
+ super(cause);
}
- public boolean hasOption(CmdlineOptionId optId) {
- return hasOption(optId.toString());
+ public HttpServerException(String message, int statusCode) {
+ super(message);
+ this.statusCode = statusCode;
}
-}
\ No newline at end of file
+ public int getStatusCode() {
+ return statusCode;
+ }
+
+}
diff --git a/edexOsgi/com.raytheon.uf.common.comm/src/com/raytheon/uf/common/comm/IHttpsCredentialsHandler.java b/edexOsgi/com.raytheon.uf.common.comm/src/com/raytheon/uf/common/comm/IHttpsCredentialsHandler.java
index 5e60cbc7f8..6bb6da670a 100644
--- a/edexOsgi/com.raytheon.uf.common.comm/src/com/raytheon/uf/common/comm/IHttpsCredentialsHandler.java
+++ b/edexOsgi/com.raytheon.uf.common.comm/src/com/raytheon/uf/common/comm/IHttpsCredentialsHandler.java
@@ -28,7 +28,9 @@ package com.raytheon.uf.common.comm;
*
* Date Ticket# Engineer Description
* ------------ ---------- ----------- --------------------------
- * Mar 4, 2013 1786 mpduff Initial creation
+ * Mar 04, 2013 1786 mpduff Initial creation
+ * Feb 10, 2014 2704 njensen Added credentialsFailed()
+ *
*
*
*
@@ -48,4 +50,6 @@ public interface IHttpsCredentialsHandler {
* @return String Array, username and password
*/
String[] getCredentials(String authValue);
+
+ void credentialsFailed();
}
diff --git a/edexOsgi/com.raytheon.uf.common.comm/src/com/raytheon/uf/common/comm/InvalidURIException.java b/edexOsgi/com.raytheon.uf.common.comm/src/com/raytheon/uf/common/comm/InvalidURIException.java
new file mode 100644
index 0000000000..7c6ee49e9b
--- /dev/null
+++ b/edexOsgi/com.raytheon.uf.common.comm/src/com/raytheon/uf/common/comm/InvalidURIException.java
@@ -0,0 +1,60 @@
+/**
+ * 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.uf.common.comm;
+
+/**
+ * A communication exception specific to an invalid URI, such as
+ * http//someAddress (instead of http://someAddress)
+ *
+ *
+ *
+ * SOFTWARE HISTORY
+ *
+ * Date Ticket# Engineer Description
+ * ------------ ---------- ----------- --------------------------
+ * Feb 6, 2014 njensen Initial creation
+ *
+ *
+ *
+ * @author njensen
+ * @version 1.0
+ */
+
+public class InvalidURIException extends CommunicationException {
+
+ private static final long serialVersionUID = 1L;
+
+ public InvalidURIException() {
+ super();
+ }
+
+ public InvalidURIException(String message, Throwable cause) {
+ super(message, cause);
+ }
+
+ public InvalidURIException(String message) {
+ super(message);
+ }
+
+ public InvalidURIException(Throwable cause) {
+ super(cause);
+ }
+
+}
diff --git a/edexOsgi/com.raytheon.uf.common.dataaccess/src/com/raytheon/uf/common/dataaccess/response/GridResponseData.java b/edexOsgi/com.raytheon.uf.common.dataaccess/src/com/raytheon/uf/common/dataaccess/response/GridResponseData.java
index 24b7d1d2d1..eb160fb831 100644
--- a/edexOsgi/com.raytheon.uf.common.dataaccess/src/com/raytheon/uf/common/dataaccess/response/GridResponseData.java
+++ b/edexOsgi/com.raytheon.uf.common.dataaccess/src/com/raytheon/uf/common/dataaccess/response/GridResponseData.java
@@ -20,6 +20,7 @@
package com.raytheon.uf.common.dataaccess.response;
import javax.measure.unit.Unit;
+import javax.measure.unit.UnitFormat;
import com.raytheon.uf.common.dataaccess.grid.IGridData;
import com.raytheon.uf.common.geospatial.interpolation.data.DataDestination;
@@ -39,6 +40,8 @@ import com.raytheon.uf.common.serialization.annotations.DynamicSerializeElement;
* ------------- -------- ----------- --------------------------
* Jun 04, 2013 dgilling Initial creation
* Feb 04, 2014 2672 bsteffen Better handling of odd units.
+ * Feb 24, 2014 2762 bsteffen Format units with UCUM
+ *
*
*
*
@@ -73,7 +76,7 @@ public class GridResponseData extends AbstractResponseData {
DataDestination dataDest = dataGrid;
if (data.getUnit() != null) {
try {
- this.unit = dataUnit.toString();
+ this.unit = UnitFormat.getUCUMInstance().format(data.getUnit());
} catch (IllegalArgumentException e1) {
/*
* Not all units are representable as strings, convert to the
@@ -82,7 +85,7 @@ public class GridResponseData extends AbstractResponseData {
*/
Unit> stdUnit = dataUnit.getStandardUnit();
try {
- this.unit = stdUnit.toString();
+ this.unit = UnitFormat.getUCUMInstance().format(stdUnit);
dataDest = new UnitConvertingDataDestination(
dataUnit.toStandardUnit(), dataDest);
} catch (IllegalArgumentException e2) {
diff --git a/edexOsgi/com.raytheon.uf.common.dataaccess/src/com/raytheon/uf/common/dataaccess/util/PDOUtil.java b/edexOsgi/com.raytheon.uf.common.dataaccess/src/com/raytheon/uf/common/dataaccess/util/PDOUtil.java
index 85fd84f46e..469453dcfc 100644
--- a/edexOsgi/com.raytheon.uf.common.dataaccess/src/com/raytheon/uf/common/dataaccess/util/PDOUtil.java
+++ b/edexOsgi/com.raytheon.uf.common.dataaccess/src/com/raytheon/uf/common/dataaccess/util/PDOUtil.java
@@ -32,6 +32,7 @@ import com.raytheon.uf.common.datastorage.IDataStore;
import com.raytheon.uf.common.datastorage.Request;
import com.raytheon.uf.common.datastorage.StorageException;
import com.raytheon.uf.common.datastorage.records.IDataRecord;
+import com.raytheon.uf.common.geospatial.IGridGeometryProvider;
import com.raytheon.uf.common.geospatial.ISpatialEnabled;
import com.raytheon.uf.common.geospatial.MapUtil;
import com.raytheon.uf.common.localization.IPathManager;
@@ -49,11 +50,12 @@ import com.raytheon.uf.common.localization.IPathManager;
*
* SOFTWARE HISTORY
*
- * Date Ticket# Engineer Description
- * ------------ ---------- ----------- --------------------------
- * Jan 03, 2013 bkowal Initial creation
- * Jan 31, 2013 #1555 bkowal Made hdf5 variable generic
- * Jan 21, 2014 2667 bclement added getHDF5File method
+ * Date Ticket# Engineer Description
+ * ------------- -------- ----------- --------------------------
+ * Jan 03, 2013 bkowal Initial creation
+ * Jan 31, 2013 1555 bkowal Made hdf5 variable generic
+ * Jan 21, 2014 2667 bclement added getHDF5File method
+ * Feb 06, 2014 2762 bsteffen Get geometry from IGridGeometryProvider.
*
*
*
@@ -130,7 +132,15 @@ public final class PDOUtil {
* @return the grid geometry
*/
public static GridGeometry2D retrieveGeometry(PluginDataObject pdo) {
- return MapUtil.getGridGeometry(((ISpatialEnabled) pdo)
+ if (pdo instanceof IGridGeometryProvider) {
+ return ((IGridGeometryProvider) pdo).getGridGeometry();
+ } else if (pdo instanceof ISpatialEnabled) {
+ return MapUtil.getGridGeometry(((ISpatialEnabled) pdo)
.getSpatialObject());
+ } else {
+ throw new IllegalArgumentException(
+ "Unable to extract a GridGeometry from an object of type: "
+ + pdo.getClass().getSimpleName());
+ }
}
}
diff --git a/edexOsgi/com.raytheon.uf.common.datadelivery.bandwidth/src/com/raytheon/uf/common/datadelivery/bandwidth/IBandwidthRequest.java b/edexOsgi/com.raytheon.uf.common.datadelivery.bandwidth/src/com/raytheon/uf/common/datadelivery/bandwidth/IBandwidthRequest.java
index 46ab981c51..80ebe75dab 100644
--- a/edexOsgi/com.raytheon.uf.common.datadelivery.bandwidth/src/com/raytheon/uf/common/datadelivery/bandwidth/IBandwidthRequest.java
+++ b/edexOsgi/com.raytheon.uf.common.datadelivery.bandwidth/src/com/raytheon/uf/common/datadelivery/bandwidth/IBandwidthRequest.java
@@ -27,6 +27,7 @@ import com.raytheon.uf.common.serialization.annotations.DynamicSerializeElement;
* Dec 06, 2012 1397 djohnson Add GET_BANDWIDTH_GRAPH_DATA.
* Jul 18, 2013 1653 mpduff Add GET_SUBSCRIPTION_STATUS.
* Oct 2 2013 1797 dhladky generic attempt
+ * Feb 11, 2014 2771 bgonzale Added GET_DATADELIVERY_ID to RequestTypes.
*
*
*
@@ -43,7 +44,11 @@ public class IBandwidthRequest extends Abstr
/**
* Schedule a subscription.
*/
- SCHEDULE_SUBSCRIPTION, SHOW_BUCKET, SHOW_DEFERRED, GET_BANDWIDTH, FORCE_SET_BANDWIDTH, PROPOSE_SET_BANDWIDTH, PROPOSE_SCHEDULE_SUBSCRIPTION, REINITIALIZE, GET_ESTIMATED_COMPLETION, GET_BANDWIDTH_GRAPH_DATA, GET_SUBSCRIPTION_STATUS
+ SCHEDULE_SUBSCRIPTION, SHOW_BUCKET, SHOW_DEFERRED, GET_BANDWIDTH, FORCE_SET_BANDWIDTH, PROPOSE_SET_BANDWIDTH, PROPOSE_SCHEDULE_SUBSCRIPTION, REINITIALIZE,
+ /**
+ * Request information.
+ */
+ GET_ESTIMATED_COMPLETION, GET_BANDWIDTH_GRAPH_DATA, GET_SUBSCRIPTION_STATUS, GET_DATADELIVERY_ID
}
@DynamicSerializeElement
diff --git a/edexOsgi/com.raytheon.uf.common.datadelivery.bandwidth/src/com/raytheon/uf/common/datadelivery/bandwidth/IBandwidthService.java b/edexOsgi/com.raytheon.uf.common.datadelivery.bandwidth/src/com/raytheon/uf/common/datadelivery/bandwidth/IBandwidthService.java
index 1a8d9f73b6..c75c502ba0 100644
--- a/edexOsgi/com.raytheon.uf.common.datadelivery.bandwidth/src/com/raytheon/uf/common/datadelivery/bandwidth/IBandwidthService.java
+++ b/edexOsgi/com.raytheon.uf.common.datadelivery.bandwidth/src/com/raytheon/uf/common/datadelivery/bandwidth/IBandwidthService.java
@@ -159,4 +159,5 @@ public interface IBandwidthService {
*/
SubscriptionStatusSummary getSubscriptionStatusSummary(
Subscription subscription);
+
}
diff --git a/edexOsgi/com.raytheon.uf.common.datadelivery.registry/src/com/raytheon/uf/common/datadelivery/registry/GroupDefinition.java b/edexOsgi/com.raytheon.uf.common.datadelivery.registry/src/com/raytheon/uf/common/datadelivery/registry/GroupDefinition.java
index 0f70547803..939cc96c49 100644
--- a/edexOsgi/com.raytheon.uf.common.datadelivery.registry/src/com/raytheon/uf/common/datadelivery/registry/GroupDefinition.java
+++ b/edexOsgi/com.raytheon.uf.common.datadelivery.registry/src/com/raytheon/uf/common/datadelivery/registry/GroupDefinition.java
@@ -15,6 +15,7 @@ import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
import org.geotools.geometry.jts.ReferencedEnvelope;
import com.raytheon.uf.common.registry.annotations.RegistryObject;
+import com.raytheon.uf.common.registry.annotations.RegistryObjectVersion;
import com.raytheon.uf.common.registry.annotations.SlotAttribute;
import com.raytheon.uf.common.serialization.adapters.ReferencedEnvelopeAdapter;
import com.raytheon.uf.common.serialization.annotations.DynamicSerialize;
@@ -36,6 +37,7 @@ import com.raytheon.uf.common.serialization.annotations.DynamicSerializeElement;
* Jan 02, 2013 1441 djohnson Add constants.
* Apr 08, 2013 1826 djohnson Remove delivery options.
* May 22, 2013 1650 djohnson Remove option instance variable.
+ * Feb 4, 2014 2686 dhladky This one got missed previously.
*
*
*
@@ -46,6 +48,7 @@ import com.raytheon.uf.common.serialization.annotations.DynamicSerializeElement;
@XmlAccessorType(XmlAccessType.NONE)
@DynamicSerialize
@RegistryObject({ GroupDefinition.GROUP_NAME_SLOT })
+@RegistryObjectVersion(value = 1.0f)
public class GroupDefinition {
public static final String GROUP_NAME_SLOT = "groupName";
diff --git a/edexOsgi/com.raytheon.uf.common.datadelivery.registry/src/com/raytheon/uf/common/datadelivery/registry/InitialPendingSharedSubscription.java b/edexOsgi/com.raytheon.uf.common.datadelivery.registry/src/com/raytheon/uf/common/datadelivery/registry/InitialPendingSharedSubscription.java
index 3806bfaab0..bda72428d3 100644
--- a/edexOsgi/com.raytheon.uf.common.datadelivery.registry/src/com/raytheon/uf/common/datadelivery/registry/InitialPendingSharedSubscription.java
+++ b/edexOsgi/com.raytheon.uf.common.datadelivery.registry/src/com/raytheon/uf/common/datadelivery/registry/InitialPendingSharedSubscription.java
@@ -25,6 +25,7 @@ import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlRootElement;
import com.raytheon.uf.common.registry.annotations.RegistryObject;
+import com.raytheon.uf.common.registry.annotations.RegistryObjectVersion;
import com.raytheon.uf.common.registry.annotations.SlotAttribute;
import com.raytheon.uf.common.registry.ebxml.RegistryUtil;
import com.raytheon.uf.common.serialization.annotations.DynamicSerialize;
@@ -43,6 +44,7 @@ import com.raytheon.uf.common.serialization.annotations.DynamicSerializeElement;
* Sept 30, 2013 1797 dhladky Generics
* Oct 23, 2013 2484 dhladky Unique ID for subscriptions updated.
* Nov 14, 2013 2548 mpduff Add a subscription type slot.
+ * Feb 18, 2013 2786 dhladky Forgot this one in version changes.
*
*
*
@@ -57,6 +59,7 @@ import com.raytheon.uf.common.serialization.annotations.DynamicSerializeElement;
Subscription.OWNER_SLOT,
InitialPendingSubscription.CHANGE_REQUEST_ID_SLOT,
Subscription.ORIGINATING_SITE_SLOT, Subscription.SUBSCRIPTION_TYPE_SLOT })
+@RegistryObjectVersion(value = 1.0f)
public class InitialPendingSharedSubscription
extends SharedSubscription implements
InitialPendingSubscription {
diff --git a/edexOsgi/com.raytheon.uf.common.datadelivery.registry/src/com/raytheon/uf/common/datadelivery/registry/InitialPendingSiteSubscription.java b/edexOsgi/com.raytheon.uf.common.datadelivery.registry/src/com/raytheon/uf/common/datadelivery/registry/InitialPendingSiteSubscription.java
index 00d8ec71ff..6ff83d667e 100644
--- a/edexOsgi/com.raytheon.uf.common.datadelivery.registry/src/com/raytheon/uf/common/datadelivery/registry/InitialPendingSiteSubscription.java
+++ b/edexOsgi/com.raytheon.uf.common.datadelivery.registry/src/com/raytheon/uf/common/datadelivery/registry/InitialPendingSiteSubscription.java
@@ -25,6 +25,7 @@ import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlRootElement;
import com.raytheon.uf.common.registry.annotations.RegistryObject;
+import com.raytheon.uf.common.registry.annotations.RegistryObjectVersion;
import com.raytheon.uf.common.registry.annotations.SlotAttribute;
import com.raytheon.uf.common.registry.ebxml.RegistryUtil;
import com.raytheon.uf.common.serialization.annotations.DynamicSerialize;
@@ -47,6 +48,7 @@ import com.raytheon.uf.common.serialization.annotations.DynamicSerializeElement;
* May 21, 2013 2020 mpduff Rename UserSubscription to SiteSubscription.
* Sept 30, 2013 1797 dhladky Some Generics
* Nov 14, 2013 2548 mpduff Add a subscription type slot.
+ * Feb 18, 2013 2786 dhladky Forgot this one in version changes.
*
*
*
@@ -61,6 +63,7 @@ import com.raytheon.uf.common.serialization.annotations.DynamicSerializeElement;
Subscription.OWNER_SLOT,
InitialPendingSubscription.CHANGE_REQUEST_ID_SLOT,
Subscription.ORIGINATING_SITE_SLOT, Subscription.SUBSCRIPTION_TYPE_SLOT })
+@RegistryObjectVersion(value = 1.0f)
public class InitialPendingSiteSubscription
extends SiteSubscription implements
InitialPendingSubscription {
diff --git a/edexOsgi/com.raytheon.uf.common.datadelivery.registry/src/com/raytheon/uf/common/datadelivery/registry/RecurringSubscription.java b/edexOsgi/com.raytheon.uf.common.datadelivery.registry/src/com/raytheon/uf/common/datadelivery/registry/RecurringSubscription.java
index 7e312e1d3e..eb38210751 100644
--- a/edexOsgi/com.raytheon.uf.common.datadelivery.registry/src/com/raytheon/uf/common/datadelivery/registry/RecurringSubscription.java
+++ b/edexOsgi/com.raytheon.uf.common.datadelivery.registry/src/com/raytheon/uf/common/datadelivery/registry/RecurringSubscription.java
@@ -69,6 +69,7 @@ import com.raytheon.uf.common.time.util.TimeUtil;
* Jan 24, 2014 2709 bgonzale Fix setting of active period end. Change active period checks
* to check day of year. removed now unused active period methods.
* Jan 28, 2014 2636 mpduff Changed to use GMT calendar.
+ * Feb 12, 2014 2636 mpduff Return new instance of calculated start and end.
*
*
*
@@ -500,7 +501,7 @@ public abstract class RecurringSubscription
return TimeUtil.newGmtCalendar(subscriptionStart);
}
- return startConstraint;
+ return TimeUtil.newGmtCalendar(startConstraint.getTime());
}
@Override
@@ -516,7 +517,7 @@ public abstract class RecurringSubscription
return TimeUtil.newGmtCalendar(subscriptionEnd);
}
- return endConstraint;
+ return TimeUtil.newGmtCalendar(endConstraint.getTime());
}
/**
@@ -1072,6 +1073,7 @@ public abstract class RecurringSubscription
/**
* @return the subscriptionState
*/
+ @Override
public SubscriptionState getSubscriptionState() {
return subscriptionState;
}
@@ -1080,6 +1082,7 @@ public abstract class RecurringSubscription
* @param subscriptionState
* the subscriptionState to set
*/
+ @Override
public void setSubscriptionState(SubscriptionState subscriptionState) {
this.subscriptionState = subscriptionState;
}
diff --git a/edexOsgi/com.raytheon.uf.common.datadelivery.registry/src/com/raytheon/uf/common/datadelivery/registry/Subscription.java b/edexOsgi/com.raytheon.uf.common.datadelivery.registry/src/com/raytheon/uf/common/datadelivery/registry/Subscription.java
index 846f3d5675..aafaf50254 100644
--- a/edexOsgi/com.raytheon.uf.common.datadelivery.registry/src/com/raytheon/uf/common/datadelivery/registry/Subscription.java
+++ b/edexOsgi/com.raytheon.uf.common.datadelivery.registry/src/com/raytheon/uf/common/datadelivery/registry/Subscription.java
@@ -28,6 +28,7 @@ import javax.xml.bind.annotation.XmlEnum;
import javax.xml.bind.annotation.XmlEnumValue;
import com.raytheon.uf.common.datadelivery.registry.Utils.SubscriptionStatus;
+
/**
* Definition of a subscription.
*
@@ -47,6 +48,7 @@ import com.raytheon.uf.common.datadelivery.registry.Utils.SubscriptionStatus;
* Jan 08, 2014 2615 bgonzale Added calculate start and calculate end methods.
* Jan 14, 2014 2459 mpduff Change Subscription status code
* Jan 24, 2013 2709 bgonzale Added method inActivePeriodWindow.
+ * Feb 05, 2014 2677 mpduff Add subscription state getter/setter.
*
*
*
@@ -704,4 +706,19 @@ public interface Subscription {
* Deactivate the subscription
*/
void deactivate();
+
+ /**
+ * Set the subscription's state
+ *
+ * @param state
+ * The state to set
+ */
+ void setSubscriptionState(SubscriptionState state);
+
+ /**
+ * Get the subscription's state
+ *
+ * @return This subscrition's state
+ */
+ SubscriptionState getSubscriptionState();
}
\ No newline at end of file
diff --git a/edexOsgi/com.raytheon.uf.common.datadelivery.registry/src/com/raytheon/uf/common/datadelivery/registry/handlers/BaseSubscriptionHandler.java b/edexOsgi/com.raytheon.uf.common.datadelivery.registry/src/com/raytheon/uf/common/datadelivery/registry/handlers/BaseSubscriptionHandler.java
index 3fec6a4621..e5cb07a228 100644
--- a/edexOsgi/com.raytheon.uf.common.datadelivery.registry/src/com/raytheon/uf/common/datadelivery/registry/handlers/BaseSubscriptionHandler.java
+++ b/edexOsgi/com.raytheon.uf.common.datadelivery.registry/src/com/raytheon/uf/common/datadelivery/registry/handlers/BaseSubscriptionHandler.java
@@ -22,8 +22,10 @@ package com.raytheon.uf.common.datadelivery.registry.handlers;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
+import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
+import java.util.Map;
import java.util.Set;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
@@ -60,6 +62,7 @@ import com.raytheon.uf.common.status.UFStatus.Priority;
* Sep 11, 2013 2352 mpduff Add siteId to getSubscribedToDataSetNames method.
* Jan 14, 2014 2459 mpduff Validate subs should be scheduled before returning them.
* Jan 17, 2014 2459 mpduff Persist the state of the expired subs.
+ * Jan 29, 2014 2636 mpduff Scheduling refactor.
*
*
*
@@ -198,14 +201,14 @@ public abstract class BaseSubscriptionHandler getActiveForRoute(Network route)
throws RegistryHandlerException {
- return getActiveForRoutes(route);
+ return getActiveForRoutes(route).get(route);
}
/**
* {@inheritDoc}
*/
@Override
- public List getActiveForRoutes(Network... routes)
+ public Map> getActiveForRoutes(Network... routes)
throws RegistryHandlerException {
SubscriptionFilterableQuery query = getQuery();
query.setActive(true);
@@ -215,10 +218,13 @@ public abstract class BaseSubscriptionHandler returnList = new ArrayList();
+ Map> returnMap = new HashMap>();
+ for (Network network : routes) {
+ returnMap.put(network, new ArrayList());
+ }
for (T sub : response.getResults()) {
if (((RecurringSubscription) sub).shouldSchedule()) {
- returnList.add(sub);
+ returnMap.get(sub.getRoute()).add(sub);
} else if (((RecurringSubscription) sub).shouldUpdate()) {
updateList.add(sub);
}
@@ -250,6 +256,6 @@ public abstract class BaseSubscriptionHandler
*
@@ -102,10 +105,10 @@ public class EmptyAdhocSubscriptionHandler implements IAdhocSubscriptionHandler
}
@Override
- public List getActiveForRoutes(Network... routes)
- throws RegistryHandlerException {
- // TODO Auto-generated method stub
- return null;
+ public Map> getActiveForRoutes(
+ Network... routes) throws RegistryHandlerException {
+ // an empty map
+ return new HashMap>(0);
}
@Override
diff --git a/edexOsgi/com.raytheon.uf.common.datadelivery.registry/src/com/raytheon/uf/common/datadelivery/registry/handlers/EmptySharedSubscriptionHandler.java b/edexOsgi/com.raytheon.uf.common.datadelivery.registry/src/com/raytheon/uf/common/datadelivery/registry/handlers/EmptySharedSubscriptionHandler.java
index 28fab17f77..49b1704e74 100644
--- a/edexOsgi/com.raytheon.uf.common.datadelivery.registry/src/com/raytheon/uf/common/datadelivery/registry/handlers/EmptySharedSubscriptionHandler.java
+++ b/edexOsgi/com.raytheon.uf.common.datadelivery.registry/src/com/raytheon/uf/common/datadelivery/registry/handlers/EmptySharedSubscriptionHandler.java
@@ -21,7 +21,9 @@ package com.raytheon.uf.common.datadelivery.registry.handlers;
import java.util.Collection;
import java.util.Collections;
+import java.util.HashMap;
import java.util.List;
+import java.util.Map;
import java.util.Set;
import com.raytheon.uf.common.datadelivery.registry.Network;
@@ -40,7 +42,8 @@ import com.raytheon.uf.common.registry.handler.RegistryHandlerException;
*
* Date Ticket# Engineer Description
* ------------ ---------- ----------- --------------------------
- * Nov 4, 2013 2545 bgonzale Initial creation
+ * Nov 04, 2013 2545 bgonzale Initial creation
+ * Jan 29, 2014 2636 mpduff Scheduling refactor.
*
*
*
@@ -51,8 +54,13 @@ import com.raytheon.uf.common.registry.handler.RegistryHandlerException;
public class EmptySharedSubscriptionHandler implements
ISharedSubscriptionHandler {
- /* (non-Javadoc)
- * @see com.raytheon.uf.common.datadelivery.registry.handlers.ISubscriptionTypeHandler#getByPendingSubscription(com.raytheon.uf.common.datadelivery.registry.PendingSubscription)
+ /*
+ * (non-Javadoc)
+ *
+ * @see com.raytheon.uf.common.datadelivery.registry.handlers.
+ * ISubscriptionTypeHandler
+ * #getByPendingSubscription(com.raytheon.uf.common.datadelivery
+ * .registry.PendingSubscription)
*/
@Override
public SharedSubscription getByPendingSubscription(
@@ -60,8 +68,11 @@ public class EmptySharedSubscriptionHandler implements
return null;
}
- /* (non-Javadoc)
- * @see com.raytheon.uf.common.datadelivery.registry.handlers.ISubscriptionTypeHandler#getByPendingSubscriptionId(java.lang.String)
+ /*
+ * (non-Javadoc)
+ *
+ * @see com.raytheon.uf.common.datadelivery.registry.handlers.
+ * ISubscriptionTypeHandler#getByPendingSubscriptionId(java.lang.String)
*/
@Override
public SharedSubscription getByPendingSubscriptionId(String id)
@@ -69,8 +80,12 @@ public class EmptySharedSubscriptionHandler implements
return null;
}
- /* (non-Javadoc)
- * @see com.raytheon.uf.common.datadelivery.registry.handlers.ISubscriptionTypeHandler#getActiveByDataSetAndProvider(java.lang.String, java.lang.String)
+ /*
+ * (non-Javadoc)
+ *
+ * @see com.raytheon.uf.common.datadelivery.registry.handlers.
+ * ISubscriptionTypeHandler#getActiveByDataSetAndProvider(java.lang.String,
+ * java.lang.String)
*/
@Override
public List getActiveByDataSetAndProvider(
@@ -79,8 +94,11 @@ public class EmptySharedSubscriptionHandler implements
return Collections.EMPTY_LIST;
}
- /* (non-Javadoc)
- * @see com.raytheon.uf.common.datadelivery.registry.handlers.IBaseSubscriptionHandler#getByName(java.lang.String)
+ /*
+ * (non-Javadoc)
+ *
+ * @see com.raytheon.uf.common.datadelivery.registry.handlers.
+ * IBaseSubscriptionHandler#getByName(java.lang.String)
*/
@Override
public SharedSubscription getByName(String name)
@@ -88,8 +106,11 @@ public class EmptySharedSubscriptionHandler implements
return null;
}
- /* (non-Javadoc)
- * @see com.raytheon.uf.common.datadelivery.registry.handlers.IBaseSubscriptionHandler#getByNames(java.util.Collection)
+ /*
+ * (non-Javadoc)
+ *
+ * @see com.raytheon.uf.common.datadelivery.registry.handlers.
+ * IBaseSubscriptionHandler#getByNames(java.util.Collection)
*/
@Override
public List getByNames(Collection names)
@@ -97,8 +118,11 @@ public class EmptySharedSubscriptionHandler implements
return Collections.EMPTY_LIST;
}
- /* (non-Javadoc)
- * @see com.raytheon.uf.common.datadelivery.registry.handlers.IBaseSubscriptionHandler#getByOwner(java.lang.String)
+ /*
+ * (non-Javadoc)
+ *
+ * @see com.raytheon.uf.common.datadelivery.registry.handlers.
+ * IBaseSubscriptionHandler#getByOwner(java.lang.String)
*/
@Override
public List getByOwner(String owner)
@@ -106,8 +130,11 @@ public class EmptySharedSubscriptionHandler implements
return Collections.EMPTY_LIST;
}
- /* (non-Javadoc)
- * @see com.raytheon.uf.common.datadelivery.registry.handlers.IBaseSubscriptionHandler#getByGroupName(java.lang.String)
+ /*
+ * (non-Javadoc)
+ *
+ * @see com.raytheon.uf.common.datadelivery.registry.handlers.
+ * IBaseSubscriptionHandler#getByGroupName(java.lang.String)
*/
@Override
public List getByGroupName(String group)
@@ -115,8 +142,11 @@ public class EmptySharedSubscriptionHandler implements
return Collections.EMPTY_LIST;
}
- /* (non-Javadoc)
- * @see com.raytheon.uf.common.datadelivery.registry.handlers.IBaseSubscriptionHandler#getByFilters(java.lang.String, java.lang.String)
+ /*
+ * (non-Javadoc)
+ *
+ * @see com.raytheon.uf.common.datadelivery.registry.handlers.
+ * IBaseSubscriptionHandler#getByFilters(java.lang.String, java.lang.String)
*/
@Override
public List getByFilters(String group, String officeId)
@@ -124,8 +154,11 @@ public class EmptySharedSubscriptionHandler implements
return Collections.EMPTY_LIST;
}
- /* (non-Javadoc)
- * @see com.raytheon.uf.common.datadelivery.registry.handlers.IBaseSubscriptionHandler#getSubscribedToDataSetNames(java.lang.String)
+ /*
+ * (non-Javadoc)
+ *
+ * @see com.raytheon.uf.common.datadelivery.registry.handlers.
+ * IBaseSubscriptionHandler#getSubscribedToDataSetNames(java.lang.String)
*/
@Override
public Set getSubscribedToDataSetNames(String siteId)
@@ -133,16 +166,23 @@ public class EmptySharedSubscriptionHandler implements
return Collections.EMPTY_SET;
}
- /* (non-Javadoc)
- * @see com.raytheon.uf.common.datadelivery.registry.handlers.IBaseSubscriptionHandler#getActive()
+ /*
+ * (non-Javadoc)
+ *
+ * @see com.raytheon.uf.common.datadelivery.registry.handlers.
+ * IBaseSubscriptionHandler#getActive()
*/
@Override
public List getActive() throws RegistryHandlerException {
return Collections.EMPTY_LIST;
}
- /* (non-Javadoc)
- * @see com.raytheon.uf.common.datadelivery.registry.handlers.IBaseSubscriptionHandler#getActiveForRoute(com.raytheon.uf.common.datadelivery.registry.Network)
+ /*
+ * (non-Javadoc)
+ *
+ * @see com.raytheon.uf.common.datadelivery.registry.handlers.
+ * IBaseSubscriptionHandler
+ * #getActiveForRoute(com.raytheon.uf.common.datadelivery.registry.Network)
*/
@Override
public List getActiveForRoute(Network route)
@@ -150,17 +190,26 @@ public class EmptySharedSubscriptionHandler implements
return Collections.EMPTY_LIST;
}
- /* (non-Javadoc)
- * @see com.raytheon.uf.common.datadelivery.registry.handlers.IBaseSubscriptionHandler#getActiveForRoutes(com.raytheon.uf.common.datadelivery.registry.Network[])
+ /*
+ * (non-Javadoc)
+ *
+ * @see com.raytheon.uf.common.datadelivery.registry.handlers.
+ * IBaseSubscriptionHandler
+ * #getActiveForRoutes(com.raytheon.uf.common.datadelivery
+ * .registry.Network[])
*/
@Override
- public List getActiveForRoutes(Network... routes)
- throws RegistryHandlerException {
- return Collections.EMPTY_LIST;
+ public Map> getActiveForRoutes(
+ Network... routes) throws RegistryHandlerException {
+ return new HashMap>(0);
}
- /* (non-Javadoc)
- * @see com.raytheon.uf.common.registry.handler.IRegistryObjectHandler#getById(java.lang.String)
+ /*
+ * (non-Javadoc)
+ *
+ * @see
+ * com.raytheon.uf.common.registry.handler.IRegistryObjectHandler#getById
+ * (java.lang.String)
*/
@Override
public SharedSubscription getById(String id)
@@ -168,69 +217,104 @@ public class EmptySharedSubscriptionHandler implements
return null;
}
- /* (non-Javadoc)
- * @see com.raytheon.uf.common.registry.handler.IRegistryObjectHandler#getAll()
+ /*
+ * (non-Javadoc)
+ *
+ * @see
+ * com.raytheon.uf.common.registry.handler.IRegistryObjectHandler#getAll()
*/
@Override
public List getAll() throws RegistryHandlerException {
return Collections.EMPTY_LIST;
}
- /* (non-Javadoc)
- * @see com.raytheon.uf.common.registry.handler.IRegistryObjectHandler#store(java.lang.Object)
+ /*
+ * (non-Javadoc)
+ *
+ * @see
+ * com.raytheon.uf.common.registry.handler.IRegistryObjectHandler#store(
+ * java.lang.Object)
*/
@Override
public void store(SharedSubscription obj) throws RegistryHandlerException {
}
- /* (non-Javadoc)
- * @see com.raytheon.uf.common.registry.handler.IRegistryObjectHandler#update(java.lang.Object)
+ /*
+ * (non-Javadoc)
+ *
+ * @see
+ * com.raytheon.uf.common.registry.handler.IRegistryObjectHandler#update
+ * (java.lang.Object)
*/
@Override
public void update(SharedSubscription obj) throws RegistryHandlerException {
}
- /* (non-Javadoc)
- * @see com.raytheon.uf.common.registry.handler.IRegistryObjectHandler#delete(java.lang.Object)
+ /*
+ * (non-Javadoc)
+ *
+ * @see
+ * com.raytheon.uf.common.registry.handler.IRegistryObjectHandler#delete
+ * (java.lang.Object)
*/
@Override
public void delete(SharedSubscription obj) throws RegistryHandlerException {
}
- /* (non-Javadoc)
- * @see com.raytheon.uf.common.registry.handler.IRegistryObjectHandler#deleteById(java.lang.String, java.lang.String)
+ /*
+ * (non-Javadoc)
+ *
+ * @see
+ * com.raytheon.uf.common.registry.handler.IRegistryObjectHandler#deleteById
+ * (java.lang.String, java.lang.String)
*/
@Override
public void deleteById(String username, String registryId)
throws RegistryHandlerException {
}
- /* (non-Javadoc)
- * @see com.raytheon.uf.common.registry.handler.IRegistryObjectHandler#deleteByIds(java.lang.String, java.util.List)
+ /*
+ * (non-Javadoc)
+ *
+ * @see
+ * com.raytheon.uf.common.registry.handler.IRegistryObjectHandler#deleteByIds
+ * (java.lang.String, java.util.List)
*/
@Override
public void deleteByIds(String username, List registryIds)
throws RegistryHandlerException {
}
- /* (non-Javadoc)
- * @see com.raytheon.uf.common.registry.handler.IRegistryObjectHandler#delete(java.lang.String, java.lang.Object)
+ /*
+ * (non-Javadoc)
+ *
+ * @see
+ * com.raytheon.uf.common.registry.handler.IRegistryObjectHandler#delete
+ * (java.lang.String, java.lang.Object)
*/
@Override
public void delete(String username, SharedSubscription obj)
throws RegistryHandlerException {
}
- /* (non-Javadoc)
- * @see com.raytheon.uf.common.registry.handler.IRegistryObjectHandler#delete(java.util.Collection)
+ /*
+ * (non-Javadoc)
+ *
+ * @see
+ * com.raytheon.uf.common.registry.handler.IRegistryObjectHandler#delete
+ * (java.util.Collection)
*/
@Override
public void delete(Collection objects)
throws RegistryHandlerException {
}
- /* (non-Javadoc)
- * @see com.raytheon.uf.common.registry.handler.IRegistryObjectHandler#delete(java.lang.String, java.util.Collection)
+ /*
+ * (non-Javadoc)
+ *
+ * @see
+ * com.raytheon.uf.common.registry.handler.IRegistryObjectHandler#delete
+ * (java.lang.String, java.util.Collection)
*/
@Override
public void delete(String username, Collection objects)
diff --git a/edexOsgi/com.raytheon.uf.common.datadelivery.registry/src/com/raytheon/uf/common/datadelivery/registry/handlers/EmptySiteSubscriptionHandler.java b/edexOsgi/com.raytheon.uf.common.datadelivery.registry/src/com/raytheon/uf/common/datadelivery/registry/handlers/EmptySiteSubscriptionHandler.java
index 12f534c042..02a9e2275c 100644
--- a/edexOsgi/com.raytheon.uf.common.datadelivery.registry/src/com/raytheon/uf/common/datadelivery/registry/handlers/EmptySiteSubscriptionHandler.java
+++ b/edexOsgi/com.raytheon.uf.common.datadelivery.registry/src/com/raytheon/uf/common/datadelivery/registry/handlers/EmptySiteSubscriptionHandler.java
@@ -21,7 +21,9 @@ package com.raytheon.uf.common.datadelivery.registry.handlers;
import java.util.Collection;
import java.util.Collections;
+import java.util.HashMap;
import java.util.List;
+import java.util.Map;
import java.util.Set;
import com.raytheon.uf.common.datadelivery.registry.Network;
@@ -40,7 +42,8 @@ import com.raytheon.uf.common.registry.handler.RegistryHandlerException;
*
* Date Ticket# Engineer Description
* ------------ ---------- ----------- --------------------------
- * Nov 4, 2013 2545 bgonzale Initial creation
+ * Nov 04, 2013 2545 bgonzale Initial creation
+ * Jan 29, 2014 2636 mpduff Scheduling refactor.
*
*
*
@@ -50,8 +53,13 @@ import com.raytheon.uf.common.registry.handler.RegistryHandlerException;
public class EmptySiteSubscriptionHandler implements ISiteSubscriptionHandler {
- /* (non-Javadoc)
- * @see com.raytheon.uf.common.datadelivery.registry.handlers.ISubscriptionTypeHandler#getByPendingSubscription(com.raytheon.uf.common.datadelivery.registry.PendingSubscription)
+ /*
+ * (non-Javadoc)
+ *
+ * @see com.raytheon.uf.common.datadelivery.registry.handlers.
+ * ISubscriptionTypeHandler
+ * #getByPendingSubscription(com.raytheon.uf.common.datadelivery
+ * .registry.PendingSubscription)
*/
@Override
public SiteSubscription getByPendingSubscription(PendingSubscription pending)
@@ -59,8 +67,11 @@ public class EmptySiteSubscriptionHandler implements ISiteSubscriptionHandler {
return null;
}
- /* (non-Javadoc)
- * @see com.raytheon.uf.common.datadelivery.registry.handlers.ISubscriptionTypeHandler#getByPendingSubscriptionId(java.lang.String)
+ /*
+ * (non-Javadoc)
+ *
+ * @see com.raytheon.uf.common.datadelivery.registry.handlers.
+ * ISubscriptionTypeHandler#getByPendingSubscriptionId(java.lang.String)
*/
@Override
public SiteSubscription getByPendingSubscriptionId(String id)
@@ -68,8 +79,12 @@ public class EmptySiteSubscriptionHandler implements ISiteSubscriptionHandler {
return null;
}
- /* (non-Javadoc)
- * @see com.raytheon.uf.common.datadelivery.registry.handlers.ISubscriptionTypeHandler#getActiveByDataSetAndProvider(java.lang.String, java.lang.String)
+ /*
+ * (non-Javadoc)
+ *
+ * @see com.raytheon.uf.common.datadelivery.registry.handlers.
+ * ISubscriptionTypeHandler#getActiveByDataSetAndProvider(java.lang.String,
+ * java.lang.String)
*/
@Override
public List getActiveByDataSetAndProvider(
@@ -78,8 +93,11 @@ public class EmptySiteSubscriptionHandler implements ISiteSubscriptionHandler {
return Collections.EMPTY_LIST;
}
- /* (non-Javadoc)
- * @see com.raytheon.uf.common.datadelivery.registry.handlers.IBaseSubscriptionHandler#getByName(java.lang.String)
+ /*
+ * (non-Javadoc)
+ *
+ * @see com.raytheon.uf.common.datadelivery.registry.handlers.
+ * IBaseSubscriptionHandler#getByName(java.lang.String)
*/
@Override
public SiteSubscription getByName(String name)
@@ -87,8 +105,11 @@ public class EmptySiteSubscriptionHandler implements ISiteSubscriptionHandler {
return null;
}
- /* (non-Javadoc)
- * @see com.raytheon.uf.common.datadelivery.registry.handlers.IBaseSubscriptionHandler#getByNames(java.util.Collection)
+ /*
+ * (non-Javadoc)
+ *
+ * @see com.raytheon.uf.common.datadelivery.registry.handlers.
+ * IBaseSubscriptionHandler#getByNames(java.util.Collection)
*/
@Override
public List getByNames(Collection names)
@@ -96,8 +117,11 @@ public class EmptySiteSubscriptionHandler implements ISiteSubscriptionHandler {
return Collections.EMPTY_LIST;
}
- /* (non-Javadoc)
- * @see com.raytheon.uf.common.datadelivery.registry.handlers.IBaseSubscriptionHandler#getByOwner(java.lang.String)
+ /*
+ * (non-Javadoc)
+ *
+ * @see com.raytheon.uf.common.datadelivery.registry.handlers.
+ * IBaseSubscriptionHandler#getByOwner(java.lang.String)
*/
@Override
public List getByOwner(String owner)
@@ -105,8 +129,11 @@ public class EmptySiteSubscriptionHandler implements ISiteSubscriptionHandler {
return Collections.EMPTY_LIST;
}
- /* (non-Javadoc)
- * @see com.raytheon.uf.common.datadelivery.registry.handlers.IBaseSubscriptionHandler#getByGroupName(java.lang.String)
+ /*
+ * (non-Javadoc)
+ *
+ * @see com.raytheon.uf.common.datadelivery.registry.handlers.
+ * IBaseSubscriptionHandler#getByGroupName(java.lang.String)
*/
@Override
public List getByGroupName(String group)
@@ -114,8 +141,11 @@ public class EmptySiteSubscriptionHandler implements ISiteSubscriptionHandler {
return Collections.EMPTY_LIST;
}
- /* (non-Javadoc)
- * @see com.raytheon.uf.common.datadelivery.registry.handlers.IBaseSubscriptionHandler#getByFilters(java.lang.String, java.lang.String)
+ /*
+ * (non-Javadoc)
+ *
+ * @see com.raytheon.uf.common.datadelivery.registry.handlers.
+ * IBaseSubscriptionHandler#getByFilters(java.lang.String, java.lang.String)
*/
@Override
public List getByFilters(String group, String officeId)
@@ -123,8 +153,11 @@ public class EmptySiteSubscriptionHandler implements ISiteSubscriptionHandler {
return Collections.EMPTY_LIST;
}
- /* (non-Javadoc)
- * @see com.raytheon.uf.common.datadelivery.registry.handlers.IBaseSubscriptionHandler#getSubscribedToDataSetNames(java.lang.String)
+ /*
+ * (non-Javadoc)
+ *
+ * @see com.raytheon.uf.common.datadelivery.registry.handlers.
+ * IBaseSubscriptionHandler#getSubscribedToDataSetNames(java.lang.String)
*/
@Override
public Set getSubscribedToDataSetNames(String siteId)
@@ -132,16 +165,23 @@ public class EmptySiteSubscriptionHandler implements ISiteSubscriptionHandler {
return Collections.EMPTY_SET;
}
- /* (non-Javadoc)
- * @see com.raytheon.uf.common.datadelivery.registry.handlers.IBaseSubscriptionHandler#getActive()
+ /*
+ * (non-Javadoc)
+ *
+ * @see com.raytheon.uf.common.datadelivery.registry.handlers.
+ * IBaseSubscriptionHandler#getActive()
*/
@Override
public List getActive() throws RegistryHandlerException {
return Collections.EMPTY_LIST;
}
- /* (non-Javadoc)
- * @see com.raytheon.uf.common.datadelivery.registry.handlers.IBaseSubscriptionHandler#getActiveForRoute(com.raytheon.uf.common.datadelivery.registry.Network)
+ /*
+ * (non-Javadoc)
+ *
+ * @see com.raytheon.uf.common.datadelivery.registry.handlers.
+ * IBaseSubscriptionHandler
+ * #getActiveForRoute(com.raytheon.uf.common.datadelivery.registry.Network)
*/
@Override
public List getActiveForRoute(Network route)
@@ -149,86 +189,130 @@ public class EmptySiteSubscriptionHandler implements ISiteSubscriptionHandler {
return Collections.EMPTY_LIST;
}
- /* (non-Javadoc)
- * @see com.raytheon.uf.common.datadelivery.registry.handlers.IBaseSubscriptionHandler#getActiveForRoutes(com.raytheon.uf.common.datadelivery.registry.Network[])
+ /*
+ * (non-Javadoc)
+ *
+ * @see com.raytheon.uf.common.datadelivery.registry.handlers.
+ * IBaseSubscriptionHandler
+ * #getActiveForRoutes(com.raytheon.uf.common.datadelivery
+ * .registry.Network[])
*/
@Override
- public List getActiveForRoutes(Network... routes)
- throws RegistryHandlerException {
- return Collections.EMPTY_LIST;
+ public Map> getActiveForRoutes(
+ Network... routes) throws RegistryHandlerException {
+ return new HashMap>(0);
}
- /* (non-Javadoc)
- * @see com.raytheon.uf.common.registry.handler.IRegistryObjectHandler#getById(java.lang.String)
+ /*
+ * (non-Javadoc)
+ *
+ * @see
+ * com.raytheon.uf.common.registry.handler.IRegistryObjectHandler#getById
+ * (java.lang.String)
*/
@Override
public SiteSubscription getById(String id) throws RegistryHandlerException {
return null;
}
- /* (non-Javadoc)
- * @see com.raytheon.uf.common.registry.handler.IRegistryObjectHandler#getAll()
+ /*
+ * (non-Javadoc)
+ *
+ * @see
+ * com.raytheon.uf.common.registry.handler.IRegistryObjectHandler#getAll()
*/
@Override
public List getAll() throws RegistryHandlerException {
return Collections.EMPTY_LIST;
}
- /* (non-Javadoc)
- * @see com.raytheon.uf.common.registry.handler.IRegistryObjectHandler#store(java.lang.Object)
+ /*
+ * (non-Javadoc)
+ *
+ * @see
+ * com.raytheon.uf.common.registry.handler.IRegistryObjectHandler#store(
+ * java.lang.Object)
*/
@Override
public void store(SiteSubscription obj) throws RegistryHandlerException {
}
- /* (non-Javadoc)
- * @see com.raytheon.uf.common.registry.handler.IRegistryObjectHandler#update(java.lang.Object)
+ /*
+ * (non-Javadoc)
+ *
+ * @see
+ * com.raytheon.uf.common.registry.handler.IRegistryObjectHandler#update
+ * (java.lang.Object)
*/
@Override
public void update(SiteSubscription obj) throws RegistryHandlerException {
}
- /* (non-Javadoc)
- * @see com.raytheon.uf.common.registry.handler.IRegistryObjectHandler#delete(java.lang.Object)
+ /*
+ * (non-Javadoc)
+ *
+ * @see
+ * com.raytheon.uf.common.registry.handler.IRegistryObjectHandler#delete
+ * (java.lang.Object)
*/
@Override
public void delete(SiteSubscription obj) throws RegistryHandlerException {
}
- /* (non-Javadoc)
- * @see com.raytheon.uf.common.registry.handler.IRegistryObjectHandler#deleteById(java.lang.String, java.lang.String)
+ /*
+ * (non-Javadoc)
+ *
+ * @see
+ * com.raytheon.uf.common.registry.handler.IRegistryObjectHandler#deleteById
+ * (java.lang.String, java.lang.String)
*/
@Override
public void deleteById(String username, String registryId)
throws RegistryHandlerException {
}
- /* (non-Javadoc)
- * @see com.raytheon.uf.common.registry.handler.IRegistryObjectHandler#deleteByIds(java.lang.String, java.util.List)
+ /*
+ * (non-Javadoc)
+ *
+ * @see
+ * com.raytheon.uf.common.registry.handler.IRegistryObjectHandler#deleteByIds
+ * (java.lang.String, java.util.List)
*/
@Override
public void deleteByIds(String username, List registryIds)
throws RegistryHandlerException {
}
- /* (non-Javadoc)
- * @see com.raytheon.uf.common.registry.handler.IRegistryObjectHandler#delete(java.lang.String, java.lang.Object)
+ /*
+ * (non-Javadoc)
+ *
+ * @see
+ * com.raytheon.uf.common.registry.handler.IRegistryObjectHandler#delete
+ * (java.lang.String, java.lang.Object)
*/
@Override
public void delete(String username, SiteSubscription obj)
throws RegistryHandlerException {
}
- /* (non-Javadoc)
- * @see com.raytheon.uf.common.registry.handler.IRegistryObjectHandler#delete(java.util.Collection)
+ /*
+ * (non-Javadoc)
+ *
+ * @see
+ * com.raytheon.uf.common.registry.handler.IRegistryObjectHandler#delete
+ * (java.util.Collection)
*/
@Override
public void delete(Collection objects)
throws RegistryHandlerException {
}
- /* (non-Javadoc)
- * @see com.raytheon.uf.common.registry.handler.IRegistryObjectHandler#delete(java.lang.String, java.util.Collection)
+ /*
+ * (non-Javadoc)
+ *
+ * @see
+ * com.raytheon.uf.common.registry.handler.IRegistryObjectHandler#delete
+ * (java.lang.String, java.util.Collection)
*/
@Override
public void delete(String username, Collection objects)
diff --git a/edexOsgi/com.raytheon.uf.common.datadelivery.registry/src/com/raytheon/uf/common/datadelivery/registry/handlers/IBaseSubscriptionHandler.java b/edexOsgi/com.raytheon.uf.common.datadelivery.registry/src/com/raytheon/uf/common/datadelivery/registry/handlers/IBaseSubscriptionHandler.java
index 115d28950d..76bbe397f8 100644
--- a/edexOsgi/com.raytheon.uf.common.datadelivery.registry/src/com/raytheon/uf/common/datadelivery/registry/handlers/IBaseSubscriptionHandler.java
+++ b/edexOsgi/com.raytheon.uf.common.datadelivery.registry/src/com/raytheon/uf/common/datadelivery/registry/handlers/IBaseSubscriptionHandler.java
@@ -21,6 +21,7 @@ package com.raytheon.uf.common.datadelivery.registry.handlers;
import java.util.Collection;
import java.util.List;
+import java.util.Map;
import java.util.Set;
import com.raytheon.uf.common.datadelivery.registry.Network;
@@ -44,6 +45,7 @@ import com.raytheon.uf.common.registry.handler.RegistryHandlerException;
* Feb 20, 2013 1543 djohnson Add ability to filter on routes.
* May 28, 2013 1650 djohnson Add getByNames.
* Sep 11, 2013 2352 mpduff Add siteId to getSubscribedToDataSetNames method.
+ * Jan 29, 2014 2636 mpduff Scheduling refactor.
*
*
*
@@ -151,6 +153,6 @@ public interface IBaseSubscriptionHandler extends
* @throws RegistryHandlerException
* on error
*/
- List getActiveForRoutes(Network... routes)
+ Map> getActiveForRoutes(Network... routes)
throws RegistryHandlerException;
}
diff --git a/edexOsgi/com.raytheon.uf.common.datadelivery.registry/src/com/raytheon/uf/common/datadelivery/registry/handlers/PendingSubscriptionHandler.java b/edexOsgi/com.raytheon.uf.common.datadelivery.registry/src/com/raytheon/uf/common/datadelivery/registry/handlers/PendingSubscriptionHandler.java
index 7533344f14..7a66ae50bf 100644
--- a/edexOsgi/com.raytheon.uf.common.datadelivery.registry/src/com/raytheon/uf/common/datadelivery/registry/handlers/PendingSubscriptionHandler.java
+++ b/edexOsgi/com.raytheon.uf.common.datadelivery.registry/src/com/raytheon/uf/common/datadelivery/registry/handlers/PendingSubscriptionHandler.java
@@ -22,8 +22,10 @@ package com.raytheon.uf.common.datadelivery.registry.handlers;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
+import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
+import java.util.Map;
import java.util.Set;
import com.google.common.collect.Lists;
@@ -54,6 +56,7 @@ import com.raytheon.uf.common.util.CollectionUtil;
* May 28, 2013 1650 djohnson Add getByNames.
* May 29, 2013 1650 djohnson Fix ability to delete multiple types of subscriptions at once.
* Sep 11, 2013 2352 mpduff Add siteId to getSubscribedToDataSetNames method.
+ * Jan 29, 2014 2636 mpduff Scheduling refactor.
*
*
*
@@ -186,12 +189,36 @@ public class PendingSubscriptionHandler implements IPendingSubscriptionHandler {
* {@inheritDoc}
*/
@Override
- public List getActiveForRoutes(
+ public Map> getActiveForRoutes(
Network... routes) throws RegistryHandlerException {
- List subs = Lists.newArrayList();
- subs.addAll(siteSubscriptionHandler.getActiveForRoutes(routes));
- subs.addAll(sharedSubscriptionHandler.getActiveForRoutes(routes));
- return subs;
+ Map> returnMap = new HashMap>(
+ 2);
+
+ Map> subMap = siteSubscriptionHandler
+ .getActiveForRoutes(routes);
+ returnMap
+ .putAll((Map extends Network, ? extends List>) subMap);
+
+ Map> sharedSubMap = sharedSubscriptionHandler
+ .getActiveForRoutes(routes);
+
+ // Check for existing networks and add to them if they exist
+ for (Map.Entry> entry : sharedSubMap
+ .entrySet()) {
+ Network key = entry.getKey();
+ if (returnMap.containsKey(key)) {
+ returnMap.get(key).addAll(entry.getValue());
+ } else {
+ List sharedList = entry
+ .getValue();
+
+ returnMap.put(key, new ArrayList(
+ sharedList.size()));
+ returnMap.get(key).addAll(sharedList);
+ }
+ }
+
+ return returnMap;
}
/**
diff --git a/edexOsgi/com.raytheon.uf.common.datadelivery.registry/src/com/raytheon/uf/common/datadelivery/registry/handlers/SubscriptionHandler.java b/edexOsgi/com.raytheon.uf.common.datadelivery.registry/src/com/raytheon/uf/common/datadelivery/registry/handlers/SubscriptionHandler.java
index 9329495aab..21d2b452a8 100644
--- a/edexOsgi/com.raytheon.uf.common.datadelivery.registry/src/com/raytheon/uf/common/datadelivery/registry/handlers/SubscriptionHandler.java
+++ b/edexOsgi/com.raytheon.uf.common.datadelivery.registry/src/com/raytheon/uf/common/datadelivery/registry/handlers/SubscriptionHandler.java
@@ -19,9 +19,12 @@
**/
package com.raytheon.uf.common.datadelivery.registry.handlers;
+import java.util.ArrayList;
import java.util.Collection;
+import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
+import java.util.Map;
import java.util.Set;
import com.google.common.collect.Lists;
@@ -59,6 +62,7 @@ import com.raytheon.uf.common.util.CollectionUtil;
* May 31, 2013 1650 djohnson Fix ability to get shared subscriptions by id.
* Sep 11, 2013 2352 mpduff Add siteId to getSubscribedToDataSetNames method.
* Jan 20, 2014 2538 mpduff Added AdhocSubscriptionHandler.
+ * Jan 29, 2014 2636 mpduff Scheduling refactor.
*
*
*
@@ -250,12 +254,32 @@ public class SubscriptionHandler implements ISubscriptionHandler {
* {@inheritDoc}
*/
@Override
- public List getActiveForRoutes(Network... routes)
- throws RegistryHandlerException {
- List subs = Lists.newArrayList();
- subs.addAll(siteSubscriptionHandler.getActiveForRoutes(routes));
- subs.addAll(sharedSubscriptionHandler.getActiveForRoutes(routes));
- return subs;
+ public Map> getActiveForRoutes(
+ Network... routes) throws RegistryHandlerException {
+ Map> returnMap = new HashMap>();
+ Map> subMap = siteSubscriptionHandler
+ .getActiveForRoutes(routes);
+ returnMap
+ .putAll((Map extends Network, ? extends List>) subMap);
+
+ Map> sharedSubMap = sharedSubscriptionHandler
+ .getActiveForRoutes(routes);
+ // Check for existing networks and add to them if they exist
+ for (Map.Entry> entry : sharedSubMap
+ .entrySet()) {
+ Network key = entry.getKey();
+ if (returnMap.containsKey(key)) {
+ returnMap.get(key).addAll(entry.getValue());
+ } else {
+ List sharedList = entry.getValue();
+
+ returnMap.put(key,
+ new ArrayList(sharedList.size()));
+ returnMap.get(key).addAll(sharedList);
+ }
+ }
+
+ return returnMap;
}
/**
diff --git a/edexOsgi/com.raytheon.uf.common.dataplugin.gfe/src/com/raytheon/uf/common/dataplugin/gfe/server/notify/CombinationsFileChangedNotification.java b/edexOsgi/com.raytheon.uf.common.dataplugin.gfe/src/com/raytheon/uf/common/dataplugin/gfe/server/notify/CombinationsFileChangedNotification.java
new file mode 100644
index 0000000000..7884b433a0
--- /dev/null
+++ b/edexOsgi/com.raytheon.uf.common.dataplugin.gfe/src/com/raytheon/uf/common/dataplugin/gfe/server/notify/CombinationsFileChangedNotification.java
@@ -0,0 +1,83 @@
+/**
+ * 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.uf.common.dataplugin.gfe.server.notify;
+
+import com.raytheon.uf.common.message.WsId;
+import com.raytheon.uf.common.serialization.annotations.DynamicSerialize;
+import com.raytheon.uf.common.serialization.annotations.DynamicSerializeElement;
+
+/**
+ * Combinations File Changed Notification
+ *
+ *
+ *
+ * SOFTWARE HISTORY
+ *
+ * Date Ticket# Engineer Description
+ * ------------ ---------- ----------- --------------------------
+ * Feb 5, 2014 #2591 randerso Initial creation
+ *
+ *
+ *
+ * @author randerso
+ * @version 1.0
+ */
+
+@DynamicSerialize
+public class CombinationsFileChangedNotification extends GfeNotification {
+
+ @DynamicSerializeElement
+ private String combinationsFileName;
+
+ @DynamicSerializeElement
+ private WsId whoChanged;
+
+ /**
+ * default constructor for serialization
+ */
+ public CombinationsFileChangedNotification() {
+ super();
+ }
+
+ public CombinationsFileChangedNotification(String combinationsFileName,
+ WsId whoChanged, String siteID) {
+ super();
+ this.siteID = siteID;
+ this.combinationsFileName = combinationsFileName;
+ this.whoChanged = whoChanged;
+ }
+
+ public String getCombinationsFileName() {
+ return combinationsFileName;
+ }
+
+ public void setCombinationsFileName(String combinationsFileName) {
+ this.combinationsFileName = combinationsFileName;
+ }
+
+ public WsId getWhoChanged() {
+ return whoChanged;
+ }
+
+ public void setWhoChanged(WsId whoChanged) {
+ this.whoChanged = whoChanged;
+ }
+
+}
diff --git a/edexOsgi/com.raytheon.uf.common.dataplugin.warning/utility/common_static/base/warngen/VM_global_library.vm b/edexOsgi/com.raytheon.uf.common.dataplugin.warning/utility/common_static/base/warngen/VM_global_library.vm
old mode 100644
new mode 100755
diff --git a/edexOsgi/com.raytheon.uf.common.dataplugin.warning/utility/common_static/base/warngen/airportWeatherWarning.vm b/edexOsgi/com.raytheon.uf.common.dataplugin.warning/utility/common_static/base/warngen/airportWeatherWarning.vm
old mode 100644
new mode 100755
diff --git a/edexOsgi/com.raytheon.uf.common.dataplugin.warning/utility/common_static/base/warngen/airportWeatherWarning.xml b/edexOsgi/com.raytheon.uf.common.dataplugin.warning/utility/common_static/base/warngen/airportWeatherWarning.xml
old mode 100644
new mode 100755
diff --git a/edexOsgi/com.raytheon.uf.common.dataplugin.warning/utility/common_static/base/warngen/arealFloodAdvisory.vm b/edexOsgi/com.raytheon.uf.common.dataplugin.warning/utility/common_static/base/warngen/arealFloodAdvisory.vm
old mode 100644
new mode 100755
index d24a1e0afd..78775d8d12
--- a/edexOsgi/com.raytheon.uf.common.dataplugin.warning/utility/common_static/base/warngen/arealFloodAdvisory.vm
+++ b/edexOsgi/com.raytheon.uf.common.dataplugin.warning/utility/common_static/base/warngen/arealFloodAdvisory.vm
@@ -13,7 +13,9 @@
## Phil Kurimski 09-13-2012 for OB 12.9.1-12 ##
## Phil Kurimski 02-05-2013 for OB13.2.1-3 Added rain so far section ##
## Mike Dangelo 09-18-2013 added code for init pos & pathcasting ##
-## Evan Bookbinder 09-18-2013 implemented config.vm
+## Evan Bookbinder 09-18-2013 implemented config.vm ##
+## Mike Rega 01-17-2104 added GP Alaska changes 14.2.1 ##
+## Mike Dangelo 1/24/2014 made many changes for first bullet to match 10-922
###################################################################################
#parse("config.vm")
#if(${action} == "EXT")
@@ -24,24 +26,24 @@
#set($extend = false)
#end
##
-#set($advType = "FLOOD ADVISORY")
+#set($advType = "FLOOD ADVISORY FOR...")
#set($advTypeShort = "MINOR FLOODING")
#if(${list.contains(${bullets}, "general")})
- #set($advType = "FLOOD ADVISORY")
+ #set($advType = "FLOOD ADVISORY FOR...")
#set($advTypeShort = "MINOR FLOODING")
#elseif(${list.contains(${bullets}, "small")})
- #set($advType = "SMALL STREAM FLOOD ADVISORY")
+ #set($advType = "SMALL STREAM FLOOD ADVISORY FOR...")
#set($advTypeShort = "SMALL STREAM FLOODING")
#elseif(${list.contains(${bullets}, "uss")})
- #set($advType = "URBAN AND SMALL STREAM FLOOD ADVISORY")
+ #set($advType = "URBAN AND SMALL STREAM FLOOD ADVISORY FOR...")
#set($advTypeShort = "URBAN AND SMALL STREAM FLOODING")
#set($extend = false)
#elseif(${list.contains(${bullets}, "arroyo")})
- #set($advType = "ARROYO AND SMALL STREAM FLOOD ADVISORY")
+ #set($advType = "ARROYO AND SMALL STREAM FLOOD ADVISORY FOR...")
#set($advTypeShort = "ARROYO AND SMALL STREAM FLOODING")
#set($extend = false)
#elseif(${list.contains(${bullets}, "hydrologic")})
- #set($advType = "HYDROLOGIC ADVISORY")
+ #set($advType = "HYDROLOGIC ADVISORY FOR...")
#set($advTypeShort = "MINOR FLOODING")
#set($extend = false)
#end
@@ -53,15 +55,16 @@
#set($hycType = "")
#elseif(${list.contains(${bullets}, "SM")})
#set($ic = "SM")
- #set($hycType = "MELTING SNOW")
+ #set($hycType = "SNOWMELT")
#elseif(${list.contains(${bullets}, "RS")})
#set($ic = "RS")
- #set($hycType = "RAIN AND MELTING SNOW")
+ #set($hycType = "RAIN AND SNOWMELT")
#elseif(${list.contains(${bullets}, "IJ")})
#set($ic = "IJ")
- #set($hycType = "ICE JAM FLOODING")
+ #set($hycType = "AN ICE JAM")
#elseif(${list.contains(${bullets}, "IC")})
#set($ic = "IC")
+ #set($hycType = "")
#elseif(${list.contains(${bullets}, "DR")})
#set($ic = "DR")
#set($hycType = "A DAM FLOODGATE RELEASE")
@@ -71,10 +74,35 @@
#elseif(${list.contains(${bullets}, "OT")})
#set($ic = "OT")
#set($hycType = "GROUND WATER FLOODING")
-#elseif(${list.contains(${bullets}, "rapidRiver")})
- #set($hycType = "RAPID RIVER RISES")
+#end
+#if(${list.contains(${bullets}, "rapidRises")})
+ #set($advType = "FLOOD ADVISORY FOR RAPID RISES FOR...")
+#if(${list.contains(${bullets}, "small")})
+ #set($advType = "SMALL STREAM FLOOD ADVISORY FOR RAPID RISES FOR...")
+#end
+#if(${list.contains(${bullets}, "uss")})
+ #set($advType = "URBAN AND SMALL STREAM FLOOD ADVISORY FOR RAPID RISES FOR...")
+#end
+#if(${list.contains(${bullets}, "arroyo")})
+ #set($advType = "ARROYO AND SMALL STREAM FLOOD ADVISORY FOR RAPID RISES FOR...")
+#end
+#if(${list.contains(${bullets}, "hydrologic")})
+ #set($advType = "HYDROLOGIC ADVISORY FOR RAPID RISES FOR...")
+#end
#elseif(${list.contains(${bullets}, "poorDrainage")})
- #set($hycType = "MINOR FLOODING OF POOR DRAINAGE AREAS")
+ #set($advType = "FLOOD ADVISORY FOR MINOR FLOODING FOR POOR DRAINAGE AREAS FOR...")
+#if(${list.contains(${bullets}, "small")})
+ #set($advType = "SMALL STREAM FLOOD ADVISORY FOR POOR DRAINAGE AREAS FOR...")
+#end
+#if(${list.contains(${bullets}, "uss")})
+ #set($advType = "URBAN AND SMALL STREAM FLOOD ADVISORY FOR POOR DRAINAGE AREAS FOR...")
+#end
+#if(${list.contains(${bullets}, "arroyo")})
+ #set($advType = "ARROYO AND SMALL STREAM FLOOD ADVISORY FOR POOR DRAINAGE AREAS FOR...")
+#end
+#if(${list.contains(${bullets}, "hydrologic")})
+ #set($advType = "HYDROLOGIC ADVISORY FOR POOR DRAINAGE AREAS FOR...")
+#end
#end
##
${WMOId} ${vtecOffice} 000000 ${BBBId}
@@ -112,20 +140,31 @@ ${dateUtil.format(${now}, ${timeFormat.header}, ${localtimezone})}
#if(${productClass}=="T")
THIS IS A TEST MESSAGE. ##
#end
-${advType} FOR...
-#if(${hycType} != "")
- ${hycType} IN...
+${advType}
+#### modified by GP
+#if(${hycType} != "" && ${alaska} != "true")
+${hycType} IN...
#end
+#if(${hycType} != "" && ${alaska} == "true")
+${hycType} ##
+#end
+#if(${alaska}=="true")
+!**INSERT RIVER/STREAM OR AREA**! IN !**INSERT GEO AREA**!...
+#elseif(${wrZoneCounty}=="true")
+#firstBullet(${affectedCounties})
+#else
#firstBullet(${areas})
+#end
+### GP end
#set($report = "!** warning basis **!")
#set($report2 = "")
#set($cause = "HEAVY RAIN")
#if(${list.contains(${bullets}, "SM")})
- #set($cause = "SNOW MELT")
+ #set($cause = "SNOWMELT")
#end
#if(${list.contains(${bullets}, "RS")})
- #set($cause = "HEAVY RAIN AND SNOW MELT")
+ #set($cause = "HEAVY RAIN AND SNOWMELT")
#end
#if(${list.contains(${bullets}, "IJ")})
#set($cause = "AN ICE JAM")
@@ -227,6 +266,11 @@ ${advType} FOR...
#if(${list.contains(${bullets}, "satelliteEstimates")} && ${list.contains(${bullets}, "thunder")})
#set($report = "SATELLITE ESTIMATES INDICATE ${cause} FROM THUNDERSTORMS OVER !** LOCATION **! THAT WILL CAUSE ${advTypeShort}${report2}.")
#end
+#### added by GP
+#if(${list.contains(${bullets}, "onlyGauge")})
+ #set($report = "REPORTING GAUGES INDICATE !**EVENT TYPE**!." )
+#end
+### GP end
* ##
#if(${productClass}=="T")
THIS IS A TEST MESSAGE. ##
diff --git a/edexOsgi/com.raytheon.uf.common.dataplugin.warning/utility/common_static/base/warngen/arealFloodAdvisory.xml b/edexOsgi/com.raytheon.uf.common.dataplugin.warning/utility/common_static/base/warngen/arealFloodAdvisory.xml
old mode 100644
new mode 100755
index dd7fa2792f..1dfb76e93a
--- a/edexOsgi/com.raytheon.uf.common.dataplugin.warning/utility/common_static/base/warngen/arealFloodAdvisory.xml
+++ b/edexOsgi/com.raytheon.uf.common.dataplugin.warning/utility/common_static/base/warngen/arealFloodAdvisory.xml
@@ -11,6 +11,9 @@
Phil Kurimski 02-05-2013 Added rain so far section
Mike Dangelo 09-18-2013 to optionally allow =true for pathcasting, and add pointMarker.xml 'include'
Phil Kurimski 09-19-2013 added geospatialConfig.xml
+ Mike Rega 01-17-2014 added Alaska GP changes for 14.2.1
+ Mike Dangelo 1/23/2014 added IC and advType group to bottom of bullets (for info only, they are locked anyway, no need to have it at the top)
+
-->
@@ -64,8 +67,8 @@ turned on unless the corresponding .vm file is turned on in a given template's .
- false
+Must be paired with proper vm code (which are commented out in arealFloodAdvisory.vm)! -->
+false
180
@@ -91,20 +94,23 @@ Must be paired with proper vm code (also commented out in arealFloodAdvisory.vm)
3600
-ic,advType
+ic,advType,optType
-
+
+
+
+
-
-
+
+
@@ -116,12 +122,13 @@ Must be paired with proper vm code (also commented out in arealFloodAdvisory.vm)
+
+
+
-
-
@@ -137,7 +144,7 @@ Must be paired with proper vm code (also commented out in arealFloodAdvisory.vm)
-
+
@@ -147,18 +154,6 @@ Must be paired with proper vm code (also commented out in arealFloodAdvisory.vm)
-
-
-
-
-
-
-
-
-
-
-
-
@@ -166,12 +161,13 @@ Must be paired with proper vm code (also commented out in arealFloodAdvisory.vm)
+
+
+
-
-
@@ -188,28 +184,34 @@ Must be paired with proper vm code (also commented out in arealFloodAdvisory.vm)
-
+
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
+
+
+
+
+
+
+
@@ -217,12 +219,13 @@ Must be paired with proper vm code (also commented out in arealFloodAdvisory.vm)
+
+
+
-
-
@@ -239,12 +242,30 @@ Must be paired with proper vm code (also commented out in arealFloodAdvisory.vm)
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/edexOsgi/com.raytheon.uf.common.dataplugin.warning/utility/common_static/base/warngen/arealFloodAdvisoryFollowup.vm b/edexOsgi/com.raytheon.uf.common.dataplugin.warning/utility/common_static/base/warngen/arealFloodAdvisoryFollowup.vm
old mode 100644
new mode 100755
index e495c4981c..6fefb1dee6
--- a/edexOsgi/com.raytheon.uf.common.dataplugin.warning/utility/common_static/base/warngen/arealFloodAdvisoryFollowup.vm
+++ b/edexOsgi/com.raytheon.uf.common.dataplugin.warning/utility/common_static/base/warngen/arealFloodAdvisoryFollowup.vm
@@ -7,7 +7,8 @@
## Mike Dangelo 9-13-2012 minor tweaks to ${variables} ##
## Phil Kurimski 2-05-2013 for OB13.2.1-3 Added rain so far section ##
## Mike Dangelo 9-18-2013 added initial position and pathcasting options
-## Evan Bookbinder 9-18-2013 implemented config.vm
+## Evan Bookbinder 9-18-2013 implemented config.vm ##
+## Mike Rega 1-18-2014 added Alaska GP changes for 14.2.1 ##
##################################################################################
#parse("config.vm")
#if(${action} == "EXT")
@@ -38,21 +39,13 @@
#set ($report = "!** warning basis **!")
#set ($report2 = "")
#set ($cause = "HEAVY RAIN")
-#if(${list.contains(${bullets}, "rapidRiver")})
- #set ($report2 = ". RAPID RIVER RISES WILL RESULT IN MINOR FLOODING")
- #set ($hycType = "FOR RAPID RIVER RISES ")
-#end
-#if(${list.contains(${bullets}, "poorDrainage")})
- #set ($report2 = ". OVERFLOWING POOR DRAINAGE AREAS WILL RESULT IN MINOR FLOODING")
- #set ($hycType = "FOR MINOR FLOODING OF POOR DRAINAGE AREAS ")
-#end
#if(${ic} == "SM")
- #set ($cause = "SNOW MELT")
- #set ($hycType = "FOR MELTING SNOW ")
+ #set ($cause = "SNOWMELT")
+ #set ($hycType = "FOR SNOWMELT ")
#end
#if(${ic} == "RS")
- #set ($cause = "HEAVY RAIN AND SNOW MELT")
- #set ($hycType = "FOR RAIN AND MELTING SNOW ")
+ #set ($cause = "RAIN AND SNOWMELT")
+ #set ($hycType = "FOR RAIN AND SNOWMELT ")
#end
#if(${ic} == "IJ")
#set ($cause = "AN ICE JAM")
@@ -65,6 +58,14 @@
#if(${ic} == "IC")
#set ($cause = "AN ICE JAM AND HEAVY RAIN")
#end
+#if(${list.contains(${bullets}, "rapidRises")})
+ #set ($report2 = ". RAPID RISES WILL RESULT IN MINOR FLOODING")
+ #set ($hycType = "${hycType}FOR RAPID RISES ")
+#end
+#if(${list.contains(${bullets}, "poorDrainage")})
+ #set ($report2 = ". OVERFLOWING POOR DRAINAGE AREAS WILL RESULT IN MINOR FLOODING")
+ #set ($hycType = "${hycType}FOR MINOR FLOODING IN POOR DRAINAGE AREAS ")
+#end
#set($rainAmount = "")
#if(${list.contains(${bullets}, "rain1")} )
#set($rainAmount = "UP TO ONE INCH OF RAIN HAS ALREADY FALLEN.")
@@ -144,6 +145,11 @@
#if(${list.contains(${bullets}, "public")} && ${list.contains(${bullets}, "plainRain")})
#set ($report = "THE PUBLIC REPORTED ${cause} IN !** LOCATION **! THAT WILL CAUSE ${advTypeShort}${report2}")
#end
+#### added by GP
+#if(${list.contains(${bullets}, "onlyGauge")})
+ #set ($report = "REPORTING GAUGES INDICATE !**EVENT TYPE**!." )
+#end
+### GP end
##########################################
## FLOOD ADVISORY FOLLOW-UP HEADER INFO ##
##########################################
@@ -196,7 +202,15 @@ ${dateUtil.format(${now}, ${timeFormat.header}, ${localtimezone})}
THIS IS A TEST MESSAGE.##
#end
...THE ${advType} ${hycType}HAS BEEN CANCELLED FOR ##
+#### modified by GP
+#if(${alaska}=="true")
+!**INSERT RIVER/STREAM OR AREA**! IN !**INSERT GEO AREA**!...
+#elseif(${wrZoneCounty}=="true")
+#headlineLocList(${affectedCounties} true true true false)...
+#else
#headlineLocList(${areas} true true true false)...
+#end
+#### GP End
#if(${list.contains(${bullets}, "recedingWater")})
THE HIGH WATER IS RECEDING...AND IS NO LONGER EXPECTED TO POSE A THREAT. PLEASE CONTINUE TO HEED ANY ROAD CLOSURES.
@@ -220,7 +234,15 @@ EXPIRED AT ${dateUtil.format(${expire}, ${timeFormat.clock}, 15, ${localtimezone
#else
WILL EXPIRE AT ${dateUtil.format(${expire}, ${timeFormat.clock}, 15, ${localtimezone})} FOR ##
#end
+#### modified by GP
+#if(${alaska}=="true")
+!**INSERT RIVER/STREAM OR AREA**! IN !**INSERT GEO AREA**!...
+#elseif(${wrZoneCounty}=="true")
+#headlineLocList(${affectedCounties} true true true false)...
+#else
#headlineLocList(${areas} true true true false)...
+#end
+#### GP End
#if(${list.contains(${bullets}, "recedingWater")})
THE HIGH WATER IS RECEDING...AND IS NO LONGER EXPECTED TO POSE A THREAT. PLEASE CONTINUE TO HEED ANY ROAD CLOSURES.
@@ -240,7 +262,15 @@ THE HEAVY RAIN HAS ENDED...AND FLOODING IS NO LONGER EXPECTED TO POSE A THREAT.
THIS IS A TEST MESSAGE.##
#end
...THE ${advType} ${hycType}REMAINS IN EFFECT #secondBullet(${dateUtil},${expire},${timeFormat},${localtimezone},${secondtimezone}) FOR ##
+#### modified by GP
+#if(${alaska}=="true")
+!**INSERT RIVER/STREAM OR AREA**! IN !**INSERT GEO AREA**!...
+#elseif(${wrZoneCounty}=="true")
+#headlineLocList(${afectedCounties} true true true false)...
+#else
#headlineLocList(${areas} true true true false)...
+#end
+### GP end
########### END HEADLINE CODE ####################
#if(${productClass}=="T")
@@ -302,6 +332,11 @@ THIS IS A TEST MESSAGE. ##
#locationsList("SOME LOCATIONS THAT WILL EXPERIENCE FLOODING INCLUDE..." "THIS FLOODING" 0 ${cityList} ${otherPoints} ${areas} ${dateUtil} ${timeFormat} 0)
#end
+## parse file command here is to pull in mile marker info
+## #parse("mileMarkers.vm")
+## Uncomment below to pull in point marker info
+## #parse("pointMarkers.vm")
+
#if(${list.contains(${bullets}, "addRainfall")})
ADDITIONAL RAINFALL OF !** Edit Amount **! INCHES IS EXPECTED OVER THE AREA. THIS ADDITIONAL RAIN WILL MAKE MINOR FLOODING.
@@ -338,7 +373,7 @@ EXCESSIVE RUNOFF FROM HEAVY RAINFALL WILL CAUSE ELEVATED LEVELS ON SMALL CREEKS
#end
#if(${list.contains(${bullets}, "ruralCTA")})
-EXCESSIVE RUNOFF FROM HEAVY RAINFALL WILL CAUSE FLOODING OF SMALL CREEKS AND STREAMS...HIGHWAYS AND UNDERPASSES. ADDITIONALLY...COUNTRY ROADS AND FARMLANDS ALONG THE BANKS OF CREEKS...STREAMS AND OTHER LOW LYING AREAS ARE SUBJECT TO FLOODING.
+EXCESSIVE RUNOFF FROM HEAVY RAINFALL WILL CAUSE FLOODING OF SMALL CREEKS AND STREAMS...AS WELL AS FARM AND COUNTRY ROADS. DO NOT ATTEMPT TO TRAVEL ACROSS FLOODED ROADS. FIND ALTERNATE ROUTES.
#end
#if(${list.contains(${bullets}, "donotdriveCTA")})
@@ -409,7 +444,15 @@ ${dateUtil.format(${now}, ${timeFormat.header}, ${localtimezone})}
THIS IS A TEST MESSAGE.##
#end
...THE ${advType} ${hycType}HAS BEEN CANCELLED FOR ##
+#### modified by GP
+#if(${alaska}=="true")
+!**INSERT RIVER/STREAM OR AREA**! IN !**INSERT GEO AREA**!...
+#elseif(${wrZoneCounty}=="true")
+#headlineLocList(${cancelaffectedCounties} true true true false)...
+#else
#headlineLocList(${cancelareas} true true true false)...
+#end
+#### GP End
###REPLACE headlineLocList ABOVE WITH THE FOLLOWING FOR ZONE BASED PRODUCT W/ COUNTY HEADLINE
###headlineLocList(${cancelaffectedCounties} true true true false)...
########### END NEW HEADLINE CODE ####################
@@ -446,27 +489,80 @@ ${dateUtil.format(${now}, ${timeFormat.header}, ${localtimezone})}
THIS IS A TEST MESSAGE.##
#end
...THE ${advType} REMAINS IN EFFECT UNTIL ${dateUtil.format(${expire}, ${timeFormat.clock}, 15, ${localtimezone})} FOR ##
+#### modified by GP
+#if(${alaska}=="true")
+!**INSERT RIVER/STREAM OR AREA**! IN !**INSERT GEO AREA**!...
+#elseif(${wrZoneCounty}=="true")
+#headlineLocList(${affectedCounties} true true true false)...
+#else
#headlineLocList(${areas} true true true false)...
+#end
+#### GP End
########### END NEW HEADLINE CODE ####################
#if(${productClass}=="T")
THIS IS A TEST MESSAGE. ##
+#end
+############# IF TRACK IS ENABLED AND stormPosition SELECTED ###############################################
+#if(${list.contains(${bullets},"stormPosition")})
#thirdBullet(${dateUtil},${event},${timeFormat},${localtimezone},${secondtimezone})
-...!** warning basis **!
+#if(${stormType} == "line")
+...A LINE OF THUNDERSTORMS PRODUCING HEAVY RAIN WAS LOCATED ##
+#handleClosestPoints(${list}, ${closestPoints}, ${otherClosestPoints}, ${stormType}, ${nearPhrase} , ${maxLandNearDistance}, ${overPhrase}, ${maxLandOverDistance}, ${landDistanceUnits}, ${useSecondReferenceLine})
#else
+...A THUNDERSTORM PRODUCING HEAVY RAIN WAS LOCATED ##
+#handleClosestPoints(${list}, ${closestPoints}, ${otherClosestPoints}, ${stormType}, ${nearPhrase} , ${maxLandNearDistance}, ${overPhrase}, ${maxLandOverDistance}, ${landDistanceUnits}, ${useSecondReferenceCell})
+#end
+#if(${movementSpeed} < ${landStationary} || ${stationary})
+...AND IS STATIONARY. ##
+#else
+#if(${stormType} == "line")
+...AND MOVING ##
+#else
+...MOVING ##
+#end
+#direction(${movementDirectionRounded}) AT ${mathUtil.roundTo5(${movementSpeed})} MPH. ##
+#end
+${rainAmount}
+#else
+###############IF TRACK IS NOT ENABLED OR stormPosition IS NOT SELECTED #######################################
#thirdBullet(${dateUtil},${event},${timeFormat},${localtimezone},${secondtimezone})
...${report}. ${rainAmount}
+
#end
-
-#set ($phenomena = "FLASH FLOOD")
-#set ($warningType = "ADVISORY")
-
+############################################
+######## (CITY LIST) #########
+############################################
+############# IF TRACK IS ENABLED AND pathcast AND stormPosition BOTH SELECTED ###############################################
+#if(${list.contains(${bullets},"pathcast")} && ${list.contains(${bullets}, "stormPosition")})
#if(${productClass}=="T")
THIS IS A TEST MESSAGE. ##
#end
-#locationsList("SOME LOCATIONS THAT WILL EXPERIENCE MINOR FLOODING INCLUDE" "THE FLOODING IS EXPECTED TO IMPACT MAINLY RURAL AREAS OF" 0 ${cityList} ${otherPoints} ${areas} ${dateUtil} ${timeFormat} 0)
+#if($movementSpeed < 3 )
+#pathCast("HEAVY RAIN WILL CONTINUE OVER THE FOLLOWING LOCATIONS..." "HEAVY RAIN" ${pathCast} ${otherPoints} ${areas} ${dateUtil} ${timeFormat} 0)
+
+#else
+#pathCast("HEAVY RAIN WILL MOVE OVER THE FOLLOWING LOCATIONS..." "HEAVY RAIN" ${pathCast} ${otherPoints} ${areas} ${dateUtil} ${timeFormat} 0)
+
+#end
+#end
+#if(${list.contains(${bullets}, "listofcities")})
+#if(${productClass}=="T")
+THIS IS A TEST MESSAGE. ##
+#end
+#### THE THIRD ARGUMENT IS A NUMBER SPECIFYING THE NUMBER OF COLUMNS TO OUTPUT THE CITIES LIST IN
+#### 0 IS A ... SEPARATED LIST, 1 IS ONE PER LINE, >1 IS A COLUMN FORMAT
+#### IF YOU USE SOMETHING OTHER THAN "LOCATIONS IMPACTED INCLUDE" LEAD IN BELOW, MAKE SURE THE
+#### ACCOMPANYING XML FILE PARSE STRING IS CHANGED TO MATCH!
+#locationsList("SOME LOCATIONS THAT WILL EXPERIENCE FLOODING INCLUDE..." "THIS FLOODING" 0 ${cityList} ${otherPoints} ${areas} ${dateUtil} ${timeFormat} 0)
+
+#end
+## parse file command here is to pull in mile marker info
+## #parse("mileMarkers.vm")
+## Uncomment below to pull in point marker info
+## #parse("pointMarkers.vm")
#if(${list.contains(${bullets}, "addRainfall")})
ADDITIONAL RAINFALL OF !** Edit Amount **! INCHES IS EXPECTED OVER THE AREA. THIS ADDITIONAL RAIN WILL MAKE MINOR FLOODING.
@@ -480,12 +576,6 @@ MINOR FLOODING IS OCCURRING NEAR !** Enter Location **!.
#drainages(${riverdrainages})
#end
-
-## parse file command here is to pull in mile marker info
-## #parse("mileMarkers.vm")
-## Uncomment below pull in point marker info
-## #parse("pointMarkers.vm")
-
#####################
## CALL TO ACTIONS ##
#####################
@@ -574,7 +664,15 @@ ${dateUtil.format(${now}, ${timeFormat.header}, ${localtimezone})}
THIS IS A TEST MESSAGE.##
#end
...THE ${advType} ${hycType}HAS BEEN CANCELLED FOR ##
+#### modified by GP
+#if(${alaska}=="true")
+!**INSERT RIVER/STREAM OR AREA**! IN !**INSERT GEO AREA**!...
+#elseif(${wrZoneCounty}=="true")
+#headlineLocList(${affectedCounties} true true true false)...
+#else
#headlineLocList(${areas} true true true false)...
+#end
+#### GP End
########### END NEW HEADLINE CODE ####################
!** THE HEAVY RAIN HAS ENDED (AND/OR) FLOOD WATER IS RECEDING. THEREFORE...THE FLOODING THREAT HAS ENDED. **!
@@ -609,7 +707,15 @@ ${dateUtil.format(${now}, ${timeFormat.header}, ${localtimezone})}
THIS IS A TEST MESSAGE.##
#end
...THE ${advType} REMAINS IN EFFECT UNTIL ${dateUtil.format(${expire}, ${timeFormat.clock}, 15, ${localtimezone})} FOR ##
+#### modified by GP
+#if(${alaska}=="true")
+!**INSERT RIVER/STREAM OR AREA**! IN !**INSERT GEO AREA**!...
+#elseif(${wrZoneCounty}=="true")
+#headlineLocList(${affectedCounties} true true true false)...
+#else
#headlineLocList(${areas} true true true false)...
+#end
+#### GP End
########### END NEW HEADLINE CODE ####################
#if(${productClass}=="T")
@@ -646,6 +752,8 @@ MINOR FLOODING IS OCCURRING NEAR !** Enter Location **!.
## parse file command here is to pull in mile marker info
## #parse("mileMarkers.vm")
+## Uncomment below to pull in point marker info
+## #parse("pointMarkers.vm")
#####################
## CALL TO ACTIONS ##
diff --git a/edexOsgi/com.raytheon.uf.common.dataplugin.warning/utility/common_static/base/warngen/arealFloodAdvisoryFollowup.xml b/edexOsgi/com.raytheon.uf.common.dataplugin.warning/utility/common_static/base/warngen/arealFloodAdvisoryFollowup.xml
old mode 100644
new mode 100755
index baf4575499..0344345968
--- a/edexOsgi/com.raytheon.uf.common.dataplugin.warning/utility/common_static/base/warngen/arealFloodAdvisoryFollowup.xml
+++ b/edexOsgi/com.raytheon.uf.common.dataplugin.warning/utility/common_static/base/warngen/arealFloodAdvisoryFollowup.xml
@@ -9,8 +9,9 @@
Evan Bookbinder 09-12-2012 Added settings for locations shapefile
Added new areaSource object
Phil Kurimski 02-05-2013 Added rain so far section
- Mike Dangelo 09-18-2013 to optionally allow =true for pathcasting, and add pointMarker.xml 'include'
+ Mike Dangelo 09-18-2013 to optionally allow true for pathcasting, and add pointMarker.xml 'include'
Phil Kurimski 09-19-2013 added geospatialConfig.xml
+ Mike Dangelo 1/23/2014 added IC and advType group to bottom of bullets (for info only, they are locked anyway, no need to have it at the top)
-->
@@ -72,7 +73,7 @@ Must be paired with proper vm code (also commented out in arealFloodAdvisoryFoll
30
-ic,advType
+ic,advType,optType
@@ -83,40 +84,52 @@ Must be paired with proper vm code (also commented out in arealFloodAdvisoryFoll
-
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
@@ -128,8 +141,6 @@ Must be paired with proper vm code (also commented out in arealFloodAdvisoryFoll
-
-
@@ -146,22 +157,34 @@ Must be paired with proper vm code (also commented out in arealFloodAdvisoryFoll
-
+
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -191,12 +214,30 @@ Must be paired with proper vm code (also commented out in arealFloodAdvisoryFoll
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/edexOsgi/com.raytheon.uf.common.dataplugin.warning/utility/common_static/base/warngen/arealFloodWarning.vm b/edexOsgi/com.raytheon.uf.common.dataplugin.warning/utility/common_static/base/warngen/arealFloodWarning.vm
old mode 100644
new mode 100755
index 1f501cbff6..4026ad5847
--- a/edexOsgi/com.raytheon.uf.common.dataplugin.warning/utility/common_static/base/warngen/arealFloodWarning.vm
+++ b/edexOsgi/com.raytheon.uf.common.dataplugin.warning/utility/common_static/base/warngen/arealFloodWarning.vm
@@ -7,6 +7,7 @@
## Mike Dangelo 9-16-2013 fixed name of bullet for specific stream and removed redundant CTA
## Mike Dangelo 09-18-2013 added code for init pos & pathcasting
## Evan Bookbinder 9-18-2013 implemented config.vm
+## Mike Rega 01-18-2014 added Alaska GP changes for 14.2.1
#################################### SET SOME VARIABLES ###################################
#parse("config.vm")
##
@@ -19,11 +20,11 @@
#end
##
#if(${list.contains(${bullets}, "smallstreams")})
- #set($advType = "SMALL STREAM FLOOD WARNING")
+ #set($advType = "FLOOD WARNING FOR SMALL STREAMS IN...")
#elseif(${list.contains(${bullets}, "urbansmallstreams")})
- #set($advType = "URBAN AND SMALL STREAM FLOOD WARNING")
+ #set($advType = "FLOOD WARNING FOR URBAN AREAS AND SMALL STREAMS IN...")
#else
- #set($advType = "FLOOD WARNING")
+ #set($advType = "FLOOD WARNING FOR...")
#end
#set($ic = "ER")
#set($hycType = "")
@@ -32,29 +33,28 @@
#set($hycType = "")
#elseif(${list.contains(${bullets}, "sm")})
#set($ic = "SM")
- #set($hycType = "SNOW MELT")
+ #set($hycType = "SNOWMELT")
#elseif(${list.contains(${bullets}, "dm")})
#set($ic = "DM")
#set($hycType = "A LEVEE FAILURE")
#elseif(${list.contains(${bullets}, "dr")})
#set($ic = "DR")
- #set($hycType = "A DAM GATE RELEASE")
+ #set($hycType = "A DAM FLOODGATE RELEASE")
#elseif(${list.contains(${bullets}, "rs")})
#set($ic = "RS")
- #set($hycType = "RAIN AND SNOW MELT")
+ #set($hycType = "RAIN AND SNOWMELT")
#elseif(${list.contains(${bullets}, "ij")})
#set($ic = "IJ")
#set($hycType = "AN ICE JAM")
#elseif(${list.contains(${bullets}, "ic")})
#set($ic = "IC")
- #set($hycType = "AN ICE JAM WITH RAIN AND SNOW MELT")
+ #set($hycType = "")
#elseif(${list.contains(${bullets}, "go")})
#set($ic = "GO")
- #set($hycType = "A GLACIAL LAKE OUTBURST")
+ #set($hycType = "A GLACIER-DAMMED LAKE OUTBURST")
#elseif(${list.contains(${bullets}, "mc")})
#set($ic = "MC")
#set($hycType = "")
-## #set($hycType = "FOR MULTIPLE CAUSES")
#elseif(${list.contains(${bullets}, "uu")})
#set($ic = "UU")
#set($hycType = "")
@@ -99,11 +99,22 @@ ${dateUtil.format(${now}, ${timeFormat.header}, ${localtimezone})}
#if(${productClass}=="T")
THIS IS A TEST MESSAGE. ##
#end
-${advType} FOR...
-#if(${hycType} != "")
+${advType}
+### modified by GP
+#if(${hycType} != "" && ${alaska} != "true")
${hycType} IN...
#end
+#if(${hycType} != "" && ${alaska} == "true")
+ ${hycType}...
+#end
+#if(${alaska}=="true")
+!**INSERT RIVER/STREAM OR AREA**! IN !**INSERT GEO AREA**!
+#elseif(${wrZoneCounty}=="true")
+#firstBullet(${affectedCounties})
+#else
#firstBullet(${areas})
+#end
+### GP end
#################################
######## SECOND BULLET ##########
@@ -170,6 +181,9 @@ THIS IS A TEST MESSAGE. ##
#if(${list.contains(${bullets}, "satelliteGauge")})
#set($report = "SATELLITE ESTIMATES AND RAIN GAUGE DATA INDICATE HEAVY RAINFALL THAT WILL CAUSE FLOODING IN THE WARNING AREA.")
#end
+#if(${list.contains(${bullets}, "onlyGauge")})
+ #set($report = "REPORTING GAUGES INDICATE !**EVENT TYPE**!." )
+#end
#if(${list.contains(${bullets}, "genericFlood")})
#set($report = "!** ENTER REASON AND FORECAST FOR FLOOD **!")
#end
diff --git a/edexOsgi/com.raytheon.uf.common.dataplugin.warning/utility/common_static/base/warngen/arealFloodWarning.xml b/edexOsgi/com.raytheon.uf.common.dataplugin.warning/utility/common_static/base/warngen/arealFloodWarning.xml
old mode 100644
new mode 100755
index 8c47809de2..46bf0d452e
--- a/edexOsgi/com.raytheon.uf.common.dataplugin.warning/utility/common_static/base/warngen/arealFloodWarning.xml
+++ b/edexOsgi/com.raytheon.uf.common.dataplugin.warning/utility/common_static/base/warngen/arealFloodWarning.xml
@@ -12,6 +12,8 @@
Mike Dangelo 09-16-2013 fixed specific stream error, and added 6 days to durations
Mike Dangelo 09-18-2013 to optionally allow =true for pathcasting, and add pointMarker.xml 'include'
Phil Kurimski 09-19-2013 added geospatialConfig.xml
+ Mike Rega 01-18-2014 added Alaska GP changes for 14.2.1
+ Mike Dangelo 1/23/2014 added IC group to bottom of COR and EXT bullets (it's locked anyway, no need to have it at the top)
-->
@@ -89,20 +91,20 @@ Must be paired with proper vm code (also commented out in arealFloodWarning.vm)!
10080
-ic
+ic,ttt,tipe,exttype
-
-
-
+
+
+
-
-
+
+
-
+
@@ -115,8 +117,11 @@ Must be paired with proper vm code (also commented out in arealFloodWarning.vm)!
-
-
+
+
+
+
+
@@ -135,7 +140,7 @@ Must be paired with proper vm code (also commented out in arealFloodWarning.vm)!
-
+
@@ -149,20 +154,6 @@ Must be paired with proper vm code (also commented out in arealFloodWarning.vm)!
-
-
-
-
-
-
-
-
-
-
-
-
-
-
@@ -170,8 +161,9 @@ Must be paired with proper vm code (also commented out in arealFloodWarning.vm)!
-
-
+
+
+
@@ -191,7 +183,7 @@ Must be paired with proper vm code (also commented out in arealFloodWarning.vm)!
-
+
@@ -202,24 +194,27 @@ Must be paired with proper vm code (also commented out in arealFloodWarning.vm)!
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
-
+
+
+
+
+
+
+
+
+
+
@@ -227,8 +222,9 @@ Must be paired with proper vm code (also commented out in arealFloodWarning.vm)!
-
-
+
+
+
@@ -248,7 +244,7 @@ Must be paired with proper vm code (also commented out in arealFloodWarning.vm)!
-
+
@@ -259,6 +255,23 @@ Must be paired with proper vm code (also commented out in arealFloodWarning.vm)!
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/edexOsgi/com.raytheon.uf.common.dataplugin.warning/utility/common_static/base/warngen/arealFloodWarningFollowup.vm b/edexOsgi/com.raytheon.uf.common.dataplugin.warning/utility/common_static/base/warngen/arealFloodWarningFollowup.vm
old mode 100644
new mode 100755
index faa00785c2..bd5712a1a4
--- a/edexOsgi/com.raytheon.uf.common.dataplugin.warning/utility/common_static/base/warngen/arealFloodWarningFollowup.vm
+++ b/edexOsgi/com.raytheon.uf.common.dataplugin.warning/utility/common_static/base/warngen/arealFloodWarningFollowup.vm
@@ -9,17 +9,18 @@
## Mike Dangelo 9-16-2013 slight modifications to urbanCTA output
## Mike Dangelo 9-18-2013 added initial position and pathcasting options
## Evan Bookbinder 9-18-2013 implemented config.vm
+## Mike Rega 1-18-2014 added Alaska GP changes for 14.2.1
#################################### SET SOME VARs ###################################
#parse("config.vm")
#set($hycType = "")
#set($floodReason = "")
#set($floodType = "FLOODING")
#if(${ic} == "SM")
- #set($hycType = "RAPID SNOW MELT")
- #set($floodReason = " RAPID SNOW MELT IS OCCURRING AND WILL CONTINUE TO CAUSE ${floodType}.")
+ #set($hycType = "RAPID SNOWMELT")
+ #set($floodReason = " RAPID SNOWMELT IS OCCURRING AND WILL CONTINUE TO CAUSE ${floodType}.")
#elseif(${ic} == "RS")
- #set($hycType = "RAIN AND SNOW MELT")
- #set($floodReason = " RAPID SNOW MELT IS ALSO OCCURRING AND WILL ADD TO THE ${floodType}.")
+ #set($hycType = "RAIN AND SNOWMELT")
+ #set($floodReason = " RAPID SNOWMELT IS ALSO OCCURRING AND WILL ADD TO THE ${floodType}.")
#elseif(${ic} == "IJ")
#set($hycType = "ICE JAM FLOODING")
#set($floodReason = " AN ICE JAM IS OCCURRING AND WILL CONTINUE TO CAUSE ${floodType}.")
@@ -126,19 +127,40 @@ ${dateUtil.format(${now}, ${timeFormat.header}, ${localtimezone})}
#if(${action}=="EXP" || ${action}=="CAN")
...THE FLOOD WARNING FOR ##
-#if(${hycType} != "")
+#### modified by GP
+#if(${hycType} != "" && ${alaska} != "true")
${hycType} IN ##
#end
+#if(${hycType} != "" && ${alaska} == "true")
+${hycType} ##
+#end
+#if(${alaska}=="true")
+!**INSERT RIVER/STREAM OR AREA**! IN !**INSERT GEO AREA**! ${expcanHLTag}...
+#elseif(${wrZoneCounty}=="true")
+#headlineLocList(${affectedCounties} true true true false) ${expcanHLTag}...
+#else
#headlineLocList(${areas} true true true false) ${expcanHLTag}...
+#end
+### GP end
+
## SLIGHTLY DIFFERENT VARIABLE FOR PARTIAL CANCELLATION HEADLINE
#elseif(${action}=="CANCON" || ${CORCAN}=="true")
...THE FLOOD WARNING FOR ##
-#if(${hycType} != "")
+### added by GP
+#if(${hycType} != "" && ${alaska} != "true")
${hycType} IN ##
#end
+#if(${hycType} != "" && ${alaska} == "true")
+${hycType} ##
+#end
+#if(${alaska}=="true")
+!**INSERT RIVER/STREAM OR AREA**! IN !**INSERT GEO AREA**! ${expcanHLTag}...
+#elseif(${wrZoneCounty}=="true")
+#headlineLocList(${cancelaffectedCounties} true true true false) ${expcanHLTag}...
+#else
#headlineLocList(${cancelareas} true true true false) ${expcanHLTag}...
-###REPLACE headlineLocList ABOVE WITH THE FOLLOWING FOR ZONE BASED PRODUCT W/ COUNTY HEADLINE
-###headlineLocList(${cancelaffectedCounties} true true true false) ${expcanHLTag}...
+#end
+### GP end
#end
############################
## END CAN/EXP HEADLINE ####
@@ -222,7 +244,15 @@ THIS IS A TEST MESSAGE.##
FOR ${hycType} ##
#end
REMAINS IN EFFECT #secondBullet(${dateUtil},${expire},${timeFormat},${localtimezone},${secondtimezone}) FOR ##
+### added by GP
+#if(${alaska}=="true")
+!**INSERT RIVER/STREAM OR AREA**! IN !**INSERT GEO AREA**!...
+#elseif(${wrZoneCounty}=="true")
+#headlineLocList(${affectedCounties} true true true false)...
+#else
#headlineLocList(${areas} true true true false)...
+#end
+### GP end
################################################
#################################
@@ -249,7 +279,9 @@ REMAINS IN EFFECT #secondBullet(${dateUtil},${expire},${timeFormat},${localtimez
#elseif(${list.contains(${bullets}, "satellite")})
#set($reportBy = "SATELLITE ESTIMATES INDICATED")
#elseif(${list.contains(${bullets}, "satelliteGauge")})
- #set($reportBy = "SATELLITE ESTIMATES AND AUTOMATED RAIN GAUGES INDICATED")
+ #set($reportBy = "SATELLITE ESTIMATES AND AUTOMATED RAIN GAUGES INDICATED")
+#elseif(${list.contains(${bullets}, "onlyGauge")})
+ #set($reportBy = "REPORTING GAUGES INDICATED")
#elseif(${list.contains(${bullets}, "trainedSpotters")})
#set($reportBy = "TRAINED WEATHER SPOTTERS REPORTED")
#elseif(${list.contains(${bullets}, "lawEnforcement")})
diff --git a/edexOsgi/com.raytheon.uf.common.dataplugin.warning/utility/common_static/base/warngen/arealFloodWarningFollowup.xml b/edexOsgi/com.raytheon.uf.common.dataplugin.warning/utility/common_static/base/warngen/arealFloodWarningFollowup.xml
old mode 100644
new mode 100755
index e5f20972d0..a27a2b2487
--- a/edexOsgi/com.raytheon.uf.common.dataplugin.warning/utility/common_static/base/warngen/arealFloodWarningFollowup.xml
+++ b/edexOsgi/com.raytheon.uf.common.dataplugin.warning/utility/common_static/base/warngen/arealFloodWarningFollowup.xml
@@ -9,6 +9,8 @@
Mike Dangelo 09-16-2013 changed name bullets to 'specific' stream, slight urbanCTA modification
Mike Dangelo 09-18-2013 added initial position and pathcasting options
Phil Kurimski 09-19-2013 added geospatialConfig.xml
+ Mike Rega 01-18-2014 added Alaska GP changes for 14.2.1
+ Mike Dangelo 1/23/2014 added IC group to bottom of CON bullets (it's locked anyway, no need to have it at the top)
-->
@@ -63,7 +65,7 @@ turned on unless the corresponding .vm file is turned on in a given template's .
+Must be paired with proper vm code (which are commented out in arealFloodWarningFollowup.vm)! -->
false
@@ -82,7 +84,7 @@ Must be paired with proper vm code (also commented out in arealFloodWarningFollo
- bulletGroup: Only one bullet can be selected per bulletGroup
- parseString: this string must MATCH a unique phrase in the associated bulletText.
This will be used to highlight the appropriate bullet on a follow up-->
-ic
+ic,ttt
@@ -94,6 +96,23 @@ Must be paired with proper vm code (also commented out in arealFloodWarningFollo
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -101,6 +120,23 @@ Must be paired with proper vm code (also commented out in arealFloodWarningFollo
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -112,8 +148,9 @@ Must be paired with proper vm code (also commented out in arealFloodWarningFollo
-
-
+
+
+
@@ -134,7 +171,7 @@ Must be paired with proper vm code (also commented out in arealFloodWarningFollo
-
+
@@ -145,6 +182,23 @@ Must be paired with proper vm code (also commented out in arealFloodWarningFollo
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -152,8 +206,9 @@ Must be paired with proper vm code (also commented out in arealFloodWarningFollo
-
-
+
+
+
@@ -178,7 +233,7 @@ Must be paired with proper vm code (also commented out in arealFloodWarningFollo
-
+
@@ -189,6 +244,23 @@ Must be paired with proper vm code (also commented out in arealFloodWarningFollo
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/edexOsgi/com.raytheon.uf.common.dataplugin.warning/utility/common_static/base/warngen/burnScarFlashFloodWarning.vm b/edexOsgi/com.raytheon.uf.common.dataplugin.warning/utility/common_static/base/warngen/burnScarFlashFloodWarning.vm
old mode 100644
new mode 100755
index aa0d01e273..d72b5be8ba
--- a/edexOsgi/com.raytheon.uf.common.dataplugin.warning/utility/common_static/base/warngen/burnScarFlashFloodWarning.vm
+++ b/edexOsgi/com.raytheon.uf.common.dataplugin.warning/utility/common_static/base/warngen/burnScarFlashFloodWarning.vm
@@ -34,8 +34,8 @@
#set($snowMelt = "")
#if(${list.contains(${bullets}, "icrs")})
#set($ic = "RS")
- #set($hycType = "RAIN AND SNOW MELT IN...")
- #set($snowMelt = "RAPID SNOW MELT IS ALSO OCCURRING AND WILL ADD TO THE FLOODING.")
+ #set($hycType = "RAIN AND SNOWMELT IN...")
+ #set($snowMelt = "RAPID SNOWMELT IS ALSO OCCURRING AND WILL ADD TO THE FLOODING.")
#end
##
${WMOId} ${vtecOffice} 000000 ${BBBId}
diff --git a/edexOsgi/com.raytheon.uf.common.dataplugin.warning/utility/common_static/base/warngen/burnScarFlashFloodWarning.xml b/edexOsgi/com.raytheon.uf.common.dataplugin.warning/utility/common_static/base/warngen/burnScarFlashFloodWarning.xml
old mode 100644
new mode 100755
index 873ce06e9e..95b7e3bccf
--- a/edexOsgi/com.raytheon.uf.common.dataplugin.warning/utility/common_static/base/warngen/burnScarFlashFloodWarning.xml
+++ b/edexOsgi/com.raytheon.uf.common.dataplugin.warning/utility/common_static/base/warngen/burnScarFlashFloodWarning.xml
@@ -86,7 +86,7 @@ turned on unless the corresponding .vm file is turned on in a given template's .
-
+
@@ -62,7 +63,8 @@ turned on unless the corresponding .vm file is turned on in a given template's .
- false
+ false
+
+
+
-
@@ -124,15 +128,15 @@ Must be paired with proper vm code (also commented out in flashFloodWarning.vm)!
-
-
-
+
+
@@ -146,7 +150,7 @@ Must be paired with proper vm code (also commented out in flashFloodWarning.vm)!
-
+
@@ -154,9 +158,11 @@ Must be paired with proper vm code (also commented out in flashFloodWarning.vm)!
-
-
-
+
+
+
+
+
@@ -182,7 +188,7 @@ Must be paired with proper vm code (also commented out in flashFloodWarning.vm)!
-
+
@@ -195,8 +201,8 @@ Must be paired with proper vm code (also commented out in flashFloodWarning.vm)!
-
-
+
+
@@ -204,9 +210,11 @@ Must be paired with proper vm code (also commented out in flashFloodWarning.vm)!
-
-
-
+
+
+
+
+
@@ -233,7 +241,7 @@ Must be paired with proper vm code (also commented out in flashFloodWarning.vm)!
-
+
diff --git a/edexOsgi/com.raytheon.uf.common.dataplugin.warning/utility/common_static/base/warngen/flashFloodWarningFollowup.vm b/edexOsgi/com.raytheon.uf.common.dataplugin.warning/utility/common_static/base/warngen/flashFloodWarningFollowup.vm
old mode 100644
new mode 100755
index e9c73c7d55..6d95249a68
--- a/edexOsgi/com.raytheon.uf.common.dataplugin.warning/utility/common_static/base/warngen/flashFloodWarningFollowup.vm
+++ b/edexOsgi/com.raytheon.uf.common.dataplugin.warning/utility/common_static/base/warngen/flashFloodWarningFollowup.vm
@@ -14,6 +14,7 @@
## Mike Dangelo 09-18-2013 added code for init pos & pathcasting, and added pointMarkers parse line
## Mike Dangelo 09-19-2013 implemented config.vm
## Gene Petrescu 09-20-2013 added AK modifications (GP comments)
+## Mike Rega 01-18-2014 added Alaska GP changes for 14.2.1
#################################### SET SOME VARs ###################################
#parse("config.vm")
#set($hycType = "")
@@ -23,8 +24,8 @@
#set($burnCTA = "")
###OVERRIDE DEFAULT EXECESSIVE RAINFALL IF NECESSARY
#if(${ic} == "RS")
- #set($hycType = "RAIN AND SNOW MELT")
- #set($snowMelt = "RAPID SNOW MELT IS ALSO OCCURRING AND WILL ADD TO THE ${floodType}.")
+ #set($hycType = "EXTREMELY RAPID SNOWMELT")
+ #set($snowMelt = "RAPID SNOWMELT IS ALSO OCCURRING AND WILL ADD TO THE ${floodType}.")
#end
##
#set($endwarning = "THE HEAVY RAIN HAS ENDED...AND FLOODING IS NO LONGER EXPECTED TO POSE A THREAT. PLEASE CONTINUE TO HEED ALL ROAD CLOSURES.")
@@ -95,11 +96,11 @@ ${dateUtil.format(${now}, ${timeFormat.header}, ${localtimezone})}
...THIS MESSAGE IS FOR TEST PURPOSES ONLY...
#end
-#################################################################
-#################################################################
-## LETS START WITH EXPIRATION AND CANCELLATION SEGMENTS #####
-#################################################################
-#################################################################
+#############################################
+#############################################
+## EXPIRATION AND CANCELLATION SEGMENTS ####
+#############################################
+#############################################
### CREATE PHRASING DEPENDING ON WHETHER WE ISSUE EXP PRIOR TO EXPIRATION TIME OR NOT
#if(${now.compareTo(${expire})} >= 0 && ${action}=="EXP" )
#set($expcanHLTag = "HAS EXPIRED")
@@ -117,27 +118,39 @@ ${dateUtil.format(${now}, ${timeFormat.header}, ${localtimezone})}
##
#if(${action}=="EXP" || ${action}=="CAN")
...THE FLASH FLOOD WARNING FOR ##
-#if(${hycType} != "")
-${hycType} IN ##
+### modified by GP
+#if(${hycType} != "" && ${alaska} == "false")
+ ${hycType} IN ##
#end
-###REMMED OUT FOR Alaska. This would output the headline in zone format
+#if(${hycType} != "" && ${alaska} == "true")
+ ${hycType} ##
+#end
+#if(${alaska}=="true")
+!**INSERT RIVER/STREAM OR AREA**! IN !**INSERT GEO AREA**! ${expcanHLTag}...
+#elseif(${wrZoneCounty}=="true")
+#headlineLocList(${affectedCounties} true true true false) ${expcanHLTag}...
+#else
#headlineLocList(${areas} true true true false) ${expcanHLTag}...
-###REPLACE headlineLocList ABOVE WITH THE FOLLOWING FOR ZONE BASED PRODUCT W/ COUNTY HEADLINE
-###headlineLocList(${affectedCounties} true true true false) ${expcanHLTag}...
-###UNCOMMENT LINE BELOW FOR AK - Temp fix until hydro shapefiles can be created
-###!**INSERT RIVER/STREAM OR AREA**! IN !**INSERT GEO AREA**! ${expcanHLTag}...
+#end
+### GP end
## SLIGHTLY DIFFERENT VARIABLE FOR PARTIAL CANCELLATION HEADLINE
#elseif(${action}=="CANCON" || ${CORCAN}=="true")
...THE FLASH FLOOD WARNING FOR ##
-#if(${hycType} != "")
+### added by GP
+#if(${hycType} != "" && ${alaska} == "false")
${hycType} IN ##
#end
-###REMMED OUT FOR Alaska. This would output the headline in zone format
+#if(${hycType} != "" && ${alaska} == "true")
+${hycType} ##
+#end
+#if(${alaska}=="true")
+!**INSERT RIVER/STREAM OR AREA**! IN !**INSERT GEO AREA**! ${expcanHLTag}...
+#elseif(${wrZoneCounty}=="true")
+#headlineLocList(${cancelaffectedCounties} true true true false) ${expcanHLTag}...
+#else
#headlineLocList(${cancelareas} true true true false) ${expcanHLTag}...
-###REPLACE headlineLocList ABOVE WITH THE FOLLOWING FOR ZONE BASED PRODUCT W/ COUNTY HEADLINE
-###headlineLocList(${cancelaffectedCounties} true true true false) ${expcanHLTag}...
-###UNCOMMENT LINE BELOW FOR AK - Temp fix until hydro shapefiles can be created
-###!**INSERT RIVER/STREAM OR AREA**! IN !**INSERT GEO AREA**! ${expcanHLTag}...
+#end
+### GP end
#end
############################
## END CAN/EXP HEADLINE ####
@@ -221,12 +234,16 @@ THIS IS A TEST MESSAGE.##
FOR ${hycType} ##
#end
REMAINS IN EFFECT #secondBullet(${dateUtil},${expire},${timeFormat},${localtimezone},${secondtimezone}) FOR ##
-###REMMED OUT FOR Alaska. This would output the headline in zone format
+### added by GP
+#if(${alaska}=="true")
+!**INSERT RIVER/STREAM OR AREA**! IN !**INSERT GEO AREA**!...
+#elseif(${wrZoneCounty}=="true")
+#headlineLocList(${affectedCounties} true true true false)...
+#else
#headlineLocList(${areas} true true true false)...
-###REPLACE LINE ABOVE WITH THE FOLLOWING IF YOU USE COUNTY HEADLINE INSTEAD OF ZONES
-###headlineLocList(${affectedCounties} true true true false)...
-###UNCOMMENT LINE BELOW for AK - Temp fix until hydro shapefiles can be created
-###!**INSERT RIVER/STREAM OR AREA**! IN !**INSERT GEO AREA**!...
+#end
+
+### GP end
################################################
#################################
@@ -336,6 +353,7 @@ REMAINS IN EFFECT #secondBullet(${dateUtil},${expire},${timeFormat},${localtimez
#if(${list.contains(${bullets}, "satelliteGauge")} && ${list.contains(${bullets}, "thunder")})
#set($report = "SATELLITE ESTIMATES AND AUTOMATED RAIN GAUGES INDICATED THAT THUNDERSTORMS WERE PRODUCING HEAVY RAIN OVER THE WARNED AREA.")
#end
+### added by GP
#if(${list.contains(${bullets}, "onlyGauge")})
#set($report = "GAUGE REPORTS INDICATED THAT HEAVY RAIN WAS FALLING OVER THE WARNED AREA.")
#end
@@ -345,6 +363,7 @@ REMAINS IN EFFECT #secondBullet(${dateUtil},${expire},${timeFormat},${localtimez
#if(${list.contains(${bullets}, "onlyGauge")} && ${list.contains(${bullets}, "plainRain")})
#set($report = "GAUGE REPORTS INDICATED HEAVY RAIN WAS FALLING OVER THE WARNED AREA.")
#end
+### GP end
#if(${productClass}=="T")
THIS IS A TEST MESSAGE. ##
diff --git a/edexOsgi/com.raytheon.uf.common.dataplugin.warning/utility/common_static/base/warngen/flashFloodWarningFollowup.xml b/edexOsgi/com.raytheon.uf.common.dataplugin.warning/utility/common_static/base/warngen/flashFloodWarningFollowup.xml
old mode 100644
new mode 100755
index 9284ac84ea..0d808bcaac
--- a/edexOsgi/com.raytheon.uf.common.dataplugin.warning/utility/common_static/base/warngen/flashFloodWarningFollowup.xml
+++ b/edexOsgi/com.raytheon.uf.common.dataplugin.warning/utility/common_static/base/warngen/flashFloodWarningFollowup.xml
@@ -8,6 +8,7 @@
Modified by Mike Dangelo 09-19-2013 added some point source var's for trackable storms - set trackEnabled to true to activate
Modified by Phil Kurimski 09-19-2013 added geospatialConfig.xml
Modified by Gene Petrescu 09-20-2013 added Alaska Modifications (G
+ Modified by Mike Rega 01-18-2014 added Alaska GP changes for 14.2.1
-->
@@ -72,7 +73,7 @@ Must be paired with proper vm code (also commented out in flashFloodWarningFollo
30
-ic
+ic,ffwEMER
@@ -94,7 +95,7 @@ Must be paired with proper vm code (also commented out in flashFloodWarningFollo
-
+
@@ -102,9 +103,11 @@ Must be paired with proper vm code (also commented out in flashFloodWarningFollo
-
-
-
+
+
+
+
+
@@ -145,8 +148,8 @@ Must be paired with proper vm code (also commented out in flashFloodWarningFollo
-
-
+
+
@@ -154,9 +157,11 @@ Must be paired with proper vm code (also commented out in flashFloodWarningFollo
-
-
-
+
+
+
+
+
diff --git a/edexOsgi/com.raytheon.uf.common.dataplugin.warning/utility/common_static/base/warngen/forecasterName.vm b/edexOsgi/com.raytheon.uf.common.dataplugin.warning/utility/common_static/base/warngen/forecasterName.vm
old mode 100644
new mode 100755
diff --git a/edexOsgi/com.raytheon.uf.common.dataplugin.warning/utility/common_static/base/warngen/geospatialConfig_COUNTY.xml b/edexOsgi/com.raytheon.uf.common.dataplugin.warning/utility/common_static/base/warngen/geospatialConfig_COUNTY.xml
old mode 100644
new mode 100755
diff --git a/edexOsgi/com.raytheon.uf.common.dataplugin.warning/utility/common_static/base/warngen/geospatialConfig_MARINE.xml b/edexOsgi/com.raytheon.uf.common.dataplugin.warning/utility/common_static/base/warngen/geospatialConfig_MARINE.xml
old mode 100644
new mode 100755
diff --git a/edexOsgi/com.raytheon.uf.common.dataplugin.warning/utility/common_static/base/warngen/geospatialConfig_ZONE.xml b/edexOsgi/com.raytheon.uf.common.dataplugin.warning/utility/common_static/base/warngen/geospatialConfig_ZONE.xml
old mode 100644
new mode 100755
diff --git a/edexOsgi/com.raytheon.uf.common.dataplugin.warning/utility/common_static/base/warngen/immediateCause.txt b/edexOsgi/com.raytheon.uf.common.dataplugin.warning/utility/common_static/base/warngen/immediateCause.txt
old mode 100644
new mode 100755
diff --git a/edexOsgi/com.raytheon.uf.common.dataplugin.warning/utility/common_static/base/warngen/impactSevereThunderstormWarning.vm b/edexOsgi/com.raytheon.uf.common.dataplugin.warning/utility/common_static/base/warngen/impactSevereThunderstormWarning.vm
old mode 100644
new mode 100755
diff --git a/edexOsgi/com.raytheon.uf.common.dataplugin.warning/utility/common_static/base/warngen/impactSevereThunderstormWarning.xml b/edexOsgi/com.raytheon.uf.common.dataplugin.warning/utility/common_static/base/warngen/impactSevereThunderstormWarning.xml
old mode 100644
new mode 100755
diff --git a/edexOsgi/com.raytheon.uf.common.dataplugin.warning/utility/common_static/base/warngen/impactSevereWeatherStatement.vm b/edexOsgi/com.raytheon.uf.common.dataplugin.warning/utility/common_static/base/warngen/impactSevereWeatherStatement.vm
old mode 100644
new mode 100755
index 69093663ea..0d6a506fad
--- a/edexOsgi/com.raytheon.uf.common.dataplugin.warning/utility/common_static/base/warngen/impactSevereWeatherStatement.vm
+++ b/edexOsgi/com.raytheon.uf.common.dataplugin.warning/utility/common_static/base/warngen/impactSevereWeatherStatement.vm
@@ -6,6 +6,7 @@
## UPDATED -- Kurimski 5-20-13 2013 IBW Changes ##
## UPDATED -- Kurimski 9/17/13 Tor Emer Headline ##
## UPDATED -- Bookbinder 9/18/13 Implement config.vm ##
+## Mike Dangelo 1/24/2014 added logic to keep defaultCTAs from being used in a TOR EMER (duplication)
################################################################
## Commented out Impact statements Feb 2013 and created file to
## be parsed into the template called impactStatements.vm
@@ -961,6 +962,9 @@ THIS IS AN EXTREMELY DANGEROUS TORNADO WITH COMPLETE DEVASTATION LIKELY. YOU COU
#end
#end
+#if(${list.contains(${bullets}, "torEmergencyCTA")} || ${list.contains(${bullets}, "torEmergency")})
+ #set($dummy='dummy')
+#else
#if(${list.contains(${bullets}, "defaultMobileCTA")})
${preAmbleTOR}TAKE COVER NOW! MOVE TO A BASEMENT OR AN INTERIOR ROOM ON THE LOWEST FLOOR OF A STURDY BUILDING. AVOID WINDOWS. IF IN A MOBILE HOME...A VEHICLE OR OUTDOORS...MOVE TO THE CLOSEST SUBSTANTIAL SHELTER AND PROTECT YOURSELF FROM FLYING DEBRIS.
@@ -968,6 +972,7 @@ ${preAmbleTOR}TAKE COVER NOW! MOVE TO A BASEMENT OR AN INTERIOR ROOM ON THE LOWE
#if(${list.contains(${bullets}, "defaultUrbanCTA")})
${preAmbleTOR}TAKE COVER NOW! MOVE TO A BASEMENT OR AN INTERIOR ROOM ON THE LOWEST FLOOR OF A STURDY BUILDING. AVOID WINDOWS. IF IN A VEHICLE OR OUTDOORS...MOVE TO THE CLOSEST SUBSTANTIAL SHELTER AND PROTECT YOURSELF FROM FLYING DEBRIS.
+#end
#end
#if(${list.contains(${bullets}, "motoristsCTA")})
MOTORISTS SHOULD NOT TAKE SHELTER UNDER HIGHWAY OVERPASSES. IF YOU CANNOT SAFELY DRIVE AWAY FROM THE TORNADO...AS A LAST RESORT...EITHER PARK YOUR VEHICLE AND STAY PUT...OR ABANDON YOUR VEHICLE AND LIE DOWN IN A LOW LYING AREA AND PROTECT YOURSELF FROM FLYING DEBRIS.
diff --git a/edexOsgi/com.raytheon.uf.common.dataplugin.warning/utility/common_static/base/warngen/impactSevereWeatherStatement.xml b/edexOsgi/com.raytheon.uf.common.dataplugin.warning/utility/common_static/base/warngen/impactSevereWeatherStatement.xml
old mode 100644
new mode 100755
diff --git a/edexOsgi/com.raytheon.uf.common.dataplugin.warning/utility/common_static/base/warngen/impactSpecialMarineWarning.vm b/edexOsgi/com.raytheon.uf.common.dataplugin.warning/utility/common_static/base/warngen/impactSpecialMarineWarning.vm
old mode 100644
new mode 100755
diff --git a/edexOsgi/com.raytheon.uf.common.dataplugin.warning/utility/common_static/base/warngen/impactSpecialMarineWarning.xml b/edexOsgi/com.raytheon.uf.common.dataplugin.warning/utility/common_static/base/warngen/impactSpecialMarineWarning.xml
old mode 100644
new mode 100755
diff --git a/edexOsgi/com.raytheon.uf.common.dataplugin.warning/utility/common_static/base/warngen/impactSpecialMarineWarningFollowup.vm b/edexOsgi/com.raytheon.uf.common.dataplugin.warning/utility/common_static/base/warngen/impactSpecialMarineWarningFollowup.vm
old mode 100644
new mode 100755
diff --git a/edexOsgi/com.raytheon.uf.common.dataplugin.warning/utility/common_static/base/warngen/impactSpecialMarineWarningFollowup.xml b/edexOsgi/com.raytheon.uf.common.dataplugin.warning/utility/common_static/base/warngen/impactSpecialMarineWarningFollowup.xml
old mode 100644
new mode 100755
diff --git a/edexOsgi/com.raytheon.uf.common.dataplugin.warning/utility/common_static/base/warngen/impactStatements.vm b/edexOsgi/com.raytheon.uf.common.dataplugin.warning/utility/common_static/base/warngen/impactStatements.vm
old mode 100644
new mode 100755
index da4ff95233..d8d6e55c85
--- a/edexOsgi/com.raytheon.uf.common.dataplugin.warning/utility/common_static/base/warngen/impactStatements.vm
+++ b/edexOsgi/com.raytheon.uf.common.dataplugin.warning/utility/common_static/base/warngen/impactStatements.vm
@@ -6,6 +6,7 @@
## EDITED EVAN BOOKBINDER 2-25-13 FOR IBW 2013 ##
## EDITED PHIL KURIMSKI 5-20-13 FOR UPDATED IMPACT STATEMENTS ##
## EDITED PHIL KURIMSKI 9-17-13 FOR SMW IMPACT STATEMENTS ##
+## Mike D - 1/23/2014 changed to approved torEMER CTA wording, fixed typo in one $torImpact string
################################################################
##
################################################################
@@ -94,10 +95,10 @@
#end
############################################################################
## IF A TORNADO EMERGENCY IS SELECTED THE FOLLOWING IMPACT STATEMENT
-## WILL BE USED FOR HEIGHTED AWARENESS OF THIS DANGEROUS SITUATION
+## WILL BE USED TO HEIGHTEN AWARENESS OF THIS DANGEROUS SITUATION
############################################################################
#if(${list.contains($bullets, "torEmergency")})
-#set ($torimpact = "YOU COULD BE KILLED IF NOT UNDERGROUND OR IN A TORNADO SHELTER. COMPLETE DESTRUCTION OF NEIGHBORHOODS...BUSINESSES AND VEHICLES WILL OCCUR. FLYING DEBRIS WILL DEADLY TO PEOPLE AND ANIMALS.")
+#set ($torimpact = "A LARGE...EXTREMELY DANGEROUS...AND POTENTIALLY DEADLY TORNADO IS ON THE GROUND. TO PROTECT YOUR LIFE...TAKE COVER NOW. MOVE TO AN INTERIOR ROOM ON THE LOWEST FLOOR OF A STURDY BUILDING. AVOID WINDOWS. IF IN A MOBILE HOME...A VEHICLE OR OUTDOORS...MOVE TO THE CLOSEST SUBSTANTIAL SHELTER AND PROTECT YOURSELF FROM FLYING DEBRIS.")
#end
############################################################################
## Since the SVS template uses both the torimpact and svrimpact variables
diff --git a/edexOsgi/com.raytheon.uf.common.dataplugin.warning/utility/common_static/base/warngen/impactTornadoWarning.vm b/edexOsgi/com.raytheon.uf.common.dataplugin.warning/utility/common_static/base/warngen/impactTornadoWarning.vm
old mode 100644
new mode 100755
index 292b2a12fd..0dfadfe621
--- a/edexOsgi/com.raytheon.uf.common.dataplugin.warning/utility/common_static/base/warngen/impactTornadoWarning.vm
+++ b/edexOsgi/com.raytheon.uf.common.dataplugin.warning/utility/common_static/base/warngen/impactTornadoWarning.vm
@@ -7,6 +7,8 @@
## UPDATED -- Kurimski 5/20/13 Addl IBW Changes ##
## UPDATED -- Kurimski 9/17/13 Tor Emer Headline ##
## UPDATED -- Bookbinder 9/18/2013 implement config.vm ##
+## Mike D -- 1/23/2014 used approved wording for torEmerCTA and fixed position of 3rd bullet torEmer mention (immed. below "* AT" para).
+## Mike D -- 1/24/2014 added logic to keep defaultCTAs from being used in a TOR EMER (duplication)
##########################################################
## Commented out Impact statements Feb 2013 and created file to
## be parsed into the template called impactStatements.vm
@@ -383,10 +385,10 @@ THIS IS A TEST MESSAGE. ##
#end
############################################################################
## IF A TORNADO EMERGENCY IS SELECTED THE FOLLOWING WILL OVERRIDE CERTAIN
-## VARIABLES TO HEIGHTED AWARENESS OF THIS DANGEROUS SITUATION
+## VARIABLES TO HEIGHTEN AWARENESS OF THIS DANGEROUS SITUATION
############################################################################
#if(${list.contains(${bullets}, "torEmergency")})
- #set($reportType = "TORNADO EMERGENCY FOR !** LOCATION **!. A CONFIRMED LARGE AND DESTRUCTIVE TORNADO WAS OBSERVED")
+ #set($reportType = "A CONFIRMED LARGE AND DESTRUCTIVE TORNADO WAS OBSERVED")
#set($ctaSelected = "YES")
#set($torTag = "OBSERVED")
#set($torHazard = "DEADLY TORNADO")
@@ -468,6 +470,13 @@ THIS IS A TEST MESSAGE. ##
## Section to include the dangerous storm wording as well as the hazard ##
##########################################################################
+#####################################################################
+### TORNADO EMERGENCY PER NWS 10-511 DIRECTIVE GOES WITH 3RD BULLET #
+#####################################################################
+#if(${list.contains($bullets, "torEmergency")})
+#wrapText("THIS IS A TORNADO EMERGENCY FOR !** EDIT LOCATION(S) **!. TAKE COVER NOW." 2 2)
+
+#end
#wrapText("${pdstor}" 2 2)
#wrapText("HAZARD...${hazard}" 2 11)
@@ -477,16 +486,6 @@ THIS IS A TEST MESSAGE. ##
#wrapText("IMPACT...${torimpact}" 2 11)
-#####################################################################
-### TORNADO EMERGENCY PER NWS 10-511 DIRECTIVE GOES WITH 3RD BULLET #
-#####################################################################
-###if(${list.contains(${bullets}, "torEmergency")})
-###wrapText("THIS IS A TORNADO EMERGENCY FOR !** EDIT LOCATION(S) **!...TAKE IMMEDIATE TORNADO PRECAUTIONS NOW." 2 2)
-##
-###end
-###################################################
-######## GENERATE PATHCAST OR CITIES LIST #########
-###################################################
#if(${stormType} == "line")
#set($otherLead = "THESE TORNADIC STORMS")
#else
@@ -551,7 +550,7 @@ PRECAUTIONARY/PREPAREDNESS ACTIONS...
##
#if(${list.contains(${bullets}, "torEmergencyCTA")} || ${list.contains(${bullets}, "torEmergency")})
#if(${list.contains(${bullets}, "torEmergency")})
-THIS IS AN EXTREMELY DANGEROUS TORNADO WITH COMPLETE DEVASTATION LIKELY. YOU COULD BE KILLED IF NOT UNDERGROUND OR IN A TORNADO SHELTER. DO NOT DELAY...SEEK SHELTER NOW! IF NO UNDERGROUND SHELTER IS AVAILABLE SEEK SHELTER IN AN INTERIOR ROOM OF THE LOWEST LEVEL OF A STRUCTURE...OR IF TIME ALLOWS...CONSIDER MOVING TO AN UNDERGROUND SHELTER ELSEWHERE. MOBILE HOMES AND OUTBUILDINGS WILL OFFER NO SHELTER FROM THIS TORNADO.
+TO REPEAT...A LARGE...EXTREMELY DANGEROUS...AND POTENTIALLY DEADLY TORNADO IS ON THE GROUND. TO PROTECT YOUR LIFE...TAKE COVER NOW. MOVE TO AN INTERIOR ROOM ON THE LOWEST FLOOR OF A STURDY BUILDING. AVOID WINDOWS. IF IN A MOBILE HOME...A VEHICLE OR OUTDOORS...MOVE TO THE CLOSEST SUBSTANTIAL SHELTER AND PROTECT YOURSELF FROM FLYING DEBRIS.
#else
!** YOU SELECTED THE TORNADO EMERGENCY CTA WITHOUT SELECTING THE TORNADO EMERGENCY HEADER. PLEASE CLOSE THIS WINDOW AND RE-GENERATE THIS WARNING **!
@@ -562,13 +561,17 @@ THIS IS AN EXTREMELY DANGEROUS TORNADO WITH COMPLETE DEVASTATION LIKELY. YOU COU
THIS TORNADO WARNING REPLACES THE SEVERE THUNDERSTORM WARNING ISSUED FOR THE SAME AREA.
#end
+#if(${list.contains(${bullets}, "torEmergencyCTA")} || ${list.contains(${bullets}, "torEmergency")})
+ #set($dummy='dummy')
+#else
#if(${list.contains(${bullets}, "defaultMobileCTA")})
-${preAmble}TAKE COVER NOW! MOVE TO A BASEMENT OR AN INTERIOR ROOM ON THE LOWEST FLOOR OF A STURDY BUILDING. AVOID WINDOWS. IF IN A MOBILE HOME...A VEHICLE OR OUTDOORS...MOVE TO THE CLOSEST SUBSTANTIAL SHELTER AND PROTECT YOURSELF FROM FLYING DEBRIS.
+${preAmble}TAKE COVER NOW! MOVE TO A BASEMENT OR AN INTERIOR ROOM ON THE LOWEST FLOOR OF A STURDY BUILDING. AVOID WINDOWS. IF YOU ARE IN A MOBILE HOME...A VEHICLE OR OUTDOORS...MOVE TO THE CLOSEST SUBSTANTIAL SHELTER AND PROTECT YOURSELF FROM FLYING DEBRIS.
#end
#if(${list.contains(${bullets}, "defaultUrbanCTA")})
-${preAmble}TAKE COVER NOW! MOVE TO A BASEMENT OR AN INTERIOR ROOM ON THE LOWEST FLOOR OF A STURDY BUILDING. AVOID WINDOWS. IF IN A VEHICLE OR OUTDOORS...MOVE TO THE CLOSEST SUBSTANTIAL SHELTER AND PROTECT YOURSELF FROM FLYING DEBRIS.
+${preAmble}TAKE COVER NOW! MOVE TO A BASEMENT OR AN INTERIOR ROOM ON THE LOWEST FLOOR OF A STURDY BUILDING. AVOID WINDOWS. IF YOU ARE IN A VEHICLE OR OUTDOORS...MOVE TO THE CLOSEST SUBSTANTIAL SHELTER AND PROTECT YOURSELF FROM FLYING DEBRIS.
+#end
#end
#if(${list.contains(${bullets}, "motoristsCTA")})
MOTORISTS SHOULD NOT TAKE SHELTER UNDER HIGHWAY OVERPASSES. IF YOU CANNOT SAFELY DRIVE AWAY FROM THE TORNADO...AS A LAST RESORT...EITHER PARK YOUR VEHICLE AND STAY PUT...OR ABANDON YOUR VEHICLE AND LIE DOWN IN A LOW LYING AREA AND PROTECT YOURSELF FROM FLYING DEBRIS.
diff --git a/edexOsgi/com.raytheon.uf.common.dataplugin.warning/utility/common_static/base/warngen/impactTornadoWarning.xml b/edexOsgi/com.raytheon.uf.common.dataplugin.warning/utility/common_static/base/warngen/impactTornadoWarning.xml
old mode 100644
new mode 100755
index b586372932..1fc9ae1c8b
--- a/edexOsgi/com.raytheon.uf.common.dataplugin.warning/utility/common_static/base/warngen/impactTornadoWarning.xml
+++ b/edexOsgi/com.raytheon.uf.common.dataplugin.warning/utility/common_static/base/warngen/impactTornadoWarning.xml
@@ -10,6 +10,7 @@
Phil Kurimski 02-04-2013 OB13.2.1-5 Changed Sig Tor to Considerable
Phil Kurimski 05-20-2013 Added selection for very weak tornadoes and landspouts
Phil Kurimski 09-19-2013 added geospatialConfig.xml
+ Mike Dangelo 1/23/2014 changed parseString for defaultCTAs to match iTW.vm statements, removed cta1 bulletGroup from COR to ensure it is selected when doing a COR for a torEMER
-->
@@ -127,11 +128,10 @@ turned on unless the corresponding .vm file is turned on in a given template's .
-
+
-
-
-
+
+
@@ -200,9 +200,8 @@ turned on unless the corresponding .vm file is turned on in a given template's .
-
-
-
+
+
diff --git a/edexOsgi/com.raytheon.uf.common.dataplugin.warning/utility/common_static/base/warngen/marineWeatherStatement.vm b/edexOsgi/com.raytheon.uf.common.dataplugin.warning/utility/common_static/base/warngen/marineWeatherStatement.vm
old mode 100644
new mode 100755
diff --git a/edexOsgi/com.raytheon.uf.common.dataplugin.warning/utility/common_static/base/warngen/marineWeatherStatement.xml b/edexOsgi/com.raytheon.uf.common.dataplugin.warning/utility/common_static/base/warngen/marineWeatherStatement.xml
old mode 100644
new mode 100755
diff --git a/edexOsgi/com.raytheon.uf.common.dataplugin.warning/utility/common_static/base/warngen/marineWeatherStatementAshfall.vm b/edexOsgi/com.raytheon.uf.common.dataplugin.warning/utility/common_static/base/warngen/marineWeatherStatementAshfall.vm
old mode 100644
new mode 100755
diff --git a/edexOsgi/com.raytheon.uf.common.dataplugin.warning/utility/common_static/base/warngen/marineWeatherStatementAshfall.xml b/edexOsgi/com.raytheon.uf.common.dataplugin.warning/utility/common_static/base/warngen/marineWeatherStatementAshfall.xml
old mode 100644
new mode 100755
diff --git a/edexOsgi/com.raytheon.uf.common.dataplugin.warning/utility/common_static/base/warngen/mileMarkers.vm b/edexOsgi/com.raytheon.uf.common.dataplugin.warning/utility/common_static/base/warngen/mileMarkers.vm
old mode 100644
new mode 100755
index fffa1b98a1..96104c8885
--- a/edexOsgi/com.raytheon.uf.common.dataplugin.warning/utility/common_static/base/warngen/mileMarkers.vm
+++ b/edexOsgi/com.raytheon.uf.common.dataplugin.warning/utility/common_static/base/warngen/mileMarkers.vm
@@ -1,13 +1,13 @@
#*
-UPDATED 9-16-2013 BY MIKE DANGELO AND EVAN BOOKBINDER
+CREATED 9-16-2013 BY EVAN BOOKBINDER
+### THIS PLUG-IN VM FILE ALLOWS YOU TO CONSOLIDATE ALL YOUR
+### MILEMARKER/EXIT/ROUTE OUTPUT INTO A SINGLE FUNCTION CALL
+### A #parse("mileMarkers.vm") entry in your WarnGen .vm templates will thus
+### generate any milemarker info intersected by your warning polygon.
-### THIS PLUG-IN VM FILE ALLOWS YOU TO CONSOLIDATE ALL YOUR MILEMARKER/EXIT/ROUTE
-### OUTPUT INTO A SINGLE FUNCTION CALL
-
-Mile Marker Macro
-macro "mmarkers" use (called out of VM_global_library.vm):
+##GENERAL INFORMATION##
+Mile Marker Macro (VM_global_library.vm):
#macro(mmarkers $markers $id $name $type $simplify)
-where the argument:
$markers is a string, and is the exact "variable" set in the XML "pointSource" tag for this road
-
$id is the sequential ID database field to determine logical breaks in the mile markers
@@ -21,8 +21,11 @@ $simplify is a boolean value (true or false)
- true concatenates (FROM MM 2 to 4),
- false is a big list (MM 2...3...AND 4)
+###########################
CONFIGURATION:
-#COMMENT OUT LINES 59-62 BELOW AS NEEDED, REPLACING THE EXAMPLE WITH YOUR MILE MARKER/ROUTE ENTRIES
+###########################
+#COMMENT OUT LINES 61-64 BELOW AS NEEDED, REPLACING/ADDING TO THE EXAMPLE WITH YOUR
+#MILE MARKER/ROUTE ENTRIES
#EACH LINE CONTAINS A VARIABLE MM1,MM2,MM3,etc... REFERENCING AN ARRAY (LIST) OF DATA THAT
#WILL BE PASSED TO THE MMARKERS ROUTINE.
@@ -38,7 +41,7 @@ The items in the array are as follows:
intersections, false might be a better option)
NOTE: PLEASE ENSURE PROPER SYNTAX. Java Objects are ${variable}, Text Strings are 'TEXT', and
- Booleans are true/false (no quote)
+ Booleans are true/false (no quote)..see examples below
ALSO ENSURE THAT EACH LINE CONTAINS A UNIQUE VARIABLE NAME: MM1, MM2, MM3, etc..
@@ -46,9 +49,9 @@ HERE IS AN EXAMPLE:
e.g.
#set ($mm1 = [${i435mm},${i435mmid},'INTERSTATE 435','MILE MARKER',true])
#set ($mm2 = [${i70momm},${i70mommid},'INTERSTATE 70 IN MISSOURI','MILE MARKER',true])
- #set ($mm3 = [${i35momm},${i35mommid},'INTERSTATE 70 IN KANSAS','MILE MARKER',true])
+ #set ($mm3 = [${route22mm},${route22mmid},'ROUTE 22','EXIT',true])
-After creating these, we must create a list containing all of our variable names
+After creating these, we must create a match list containing all of our variable names
e.g.
#set ($varList = [$mm1,$mm2,$mm3])
*#
diff --git a/edexOsgi/com.raytheon.uf.common.dataplugin.warning/utility/common_static/base/warngen/mileMarkers.xml b/edexOsgi/com.raytheon.uf.common.dataplugin.warning/utility/common_static/base/warngen/mileMarkers.xml
old mode 100644
new mode 100755
index 666e8379c0..ae1f732c41
--- a/edexOsgi/com.raytheon.uf.common.dataplugin.warning/utility/common_static/base/warngen/mileMarkers.xml
+++ b/edexOsgi/com.raytheon.uf.common.dataplugin.warning/utility/common_static/base/warngen/mileMarkers.xml
@@ -8,7 +8,7 @@
SHOULD BE MODIFIED.
EXAMPLE FOR INTERSTATE 435 in the Kansas City Metro follows:
-
+
The point source variables i435mm & i435mmid are used in the mileMarkers.vm
file. The pointSource attribute must match whatever database table you created
with the importMarkersInfo.sh script. In this case our database table for
@@ -24,6 +24,7 @@
true
1000
100
+ true
gid
@@ -35,29 +36,7 @@
true
1000
100
-
- gid
-
-
-
-
- i35mo
- NAME
- POINTS
- true
- 1000
- 100
-
- gid
-
-
-
- i35mo
- GID
- POINTS
- true
- 1000
- 100
+ true
gid
diff --git a/edexOsgi/com.raytheon.uf.common.dataplugin.warning/utility/common_static/base/warngen/nonConvectiveFlashFloodWarning.vm b/edexOsgi/com.raytheon.uf.common.dataplugin.warning/utility/common_static/base/warngen/nonConvectiveFlashFloodWarning.vm
old mode 100644
new mode 100755
index 7c85ae101a..6453d4b93e
--- a/edexOsgi/com.raytheon.uf.common.dataplugin.warning/utility/common_static/base/warngen/nonConvectiveFlashFloodWarning.vm
+++ b/edexOsgi/com.raytheon.uf.common.dataplugin.warning/utility/common_static/base/warngen/nonConvectiveFlashFloodWarning.vm
@@ -10,6 +10,11 @@
## to add "U" Unknown servity ##
## VERSION AWIPS II 1.7 - SEP 17 2013 OB13.5.2-4 ##
## Phil Kurimski - Added FFW Emergency Headline ##
+## Gene Petrescu - SEP 20 2013 ##
+## added AK modifications ##
+## VERSION AWIPS II 1.8 - JAN 18 2014 OB14.2.1 ##
+## Mike Rega - added Alaska GP changes ##
+## Mike Dangelo 1/24/2014 tweaks to hycTypes to match 10-922
######################################################
##
#parse("config.vm")
@@ -20,12 +25,12 @@
#set($starttime = ${dateUtil.format(${start}, ${timeFormat.ymdthmz})})
#set($extend = false)
#end
-#if(${list.contains(${bullets}, "sev1")})
+#if(${list.contains(${bullets}, "sev3")} || ${list.contains(${bullets}, "ffwEmergency")})
+ #set($sev = "3")
+#elseif(${list.contains(${bullets}, "sev1")})
#set($sev = "1")
#elseif(${list.contains(${bullets}, "sev2")})
#set($sev = "2")
-#elseif(${list.contains(${bullets}, "sev3")})
- #set($sev = "3")
#elseif(${list.contains(${bullets}, "sevUnk")})
#set($sev = "U")
#else
@@ -42,6 +47,9 @@
#set($ruleofthumb = "")
#set($sitespecCTA = "")
#set($volcanoCTA = "")
+### added by GP
+#set($glacierCTA = "")
+### GP end
#set($emergencyHeadline = "!** ENTER LOCATION **!")
#if(${list.contains(${bullets}, "levee")})
#set($ic = "DM")
@@ -53,26 +61,36 @@
#set($reportType1 = "THE FLOODGATES ON THE !** **! DAM WERE OPENED CAUSING FLASH FLOODING DOWNSTREAM ON THE !** **! RIVER")
#elseif(${list.contains(${bullets}, "glacier")})
#set($ic = "GO")
- #set($hycType = "A GLACIAL-DAMMED LAKE OUTBURST FLOODING")
- #set($reportType1 = "A GLACIER AT !** **! HAS MELTED...RELEASING LARGE QUANTITIES OF IMPOUNDED WATER AND CAUSING FLASH FLOODING !** **!")
+### modified by GP
+ #set($hycType = "A GLACIER-DAMMED LAKE OUTBURST")
+ #set($ctaSelected = "YES")
+ #set($reportType1 = "A GLACIER-DAMMED LAKE AT !** **! IS RAPIDLY RELEASING LARGE QUANTITIES OF IMPOUNDED WATER RESULTING IN FLASH FLOODING !** **!")
+ #set($glacierCTA = "STAY AWAY FROM IMPACTED WATERWAYS. WATER LEVELS CAN RISE VERY RAPIDLY EVEN IN DRY WEATHER. VERY COLD GLACIAL MELT WATER INCREASES THE RISK FOR HYPOTHERMIA.")
+### GP end
#elseif(${list.contains(${bullets}, "icejam")})
#set($ic = "IJ")
- #set($hycType = "ICE JAM FLOODING")
+ #set($hycType = "AN ICE JAM")
#set($reportType1 = "AN ICE JAM ON THE !** **! RIVER AT !** **! BROKE CAUSING FLASH FLOODING DOWNSTREAM")
#elseif(${list.contains(${bullets}, "rain")})
#set($ic = "RS")
- #set($hycType = "EXTREMELY RAPID RAIN SNOW MELT")
- #set($reportType1 = "RAIN FALLING ON EXISTING SNOWPACK WAS GENERATING FLASH FLOODING FROM EXCESSIVE RUNOFF")
+ #set($hycType = "EXTREMELY RAPID SNOWMELT")
+ #set($reportType1 = "EXTREMELY RAPID SNOWMELT !** COMBINED WITH HEAVY RAIN **! IS GENERATING FLASH FLOODING")
#elseif(${list.contains(${bullets}, "volcano")})
#set($ic = "SM")
- #set($hycType = "VOLCANIC SNOW MELT")
+### modified by GP
+ #set($hycType = "EXTREMELY RAPID SNOWMELT CAUSED BY VOLCANIC ERUPTION")
+ #set($ctaSelected = "YES")
#set($reportType1 = "ACTIVITY OF THE !** **! VOLCANO WAS CAUSING RAPID SNOWMELT ON ITS SLOPES AND GENERATING FLASH FLOODING")
+ #set($volcanoCTA = "PERSONS IN THE VICINITY OF !** DRAINAGE **! SHOULD HEAD TO HIGHER GROUND IMMEDIATELY. FLOODS DUE TO VOLCANO INDUCED SNOWMELT CAN OCCUR VERY RAPIDLY AND IMPACT AREAS WELL AWAY FROM NORMAL WATERWAY CHANNELS.")
+### end GP
#elseif(${list.contains(${bullets}, "volcanoLahar")})
#set($ic = "SM")
- #set($hycType = "VOLCANIC SNOW MELT")
+### modified by GP
+ #set($hycType = "VOLCANIC INDUCED DEBRIS FLOW")
#set($ctaSelected = "YES")
#set($reportType1 = "ACTIVITY OF THE !** **! VOLCANO WAS CAUSING RAPID MELTING OF SNOW AND ICE ON THE MOUNTAIN. THIS WILL RESULT IN A TORRENT OF MUD...ASH...ROCK AND HOT WATER TO FLOW DOWN THE MOUNTAIN THROUGH !** DRAINAGE **! AND GENERATE FLASH FLOODING")
- #set($volcanoCTA = "PERSONS IN THE VICINITY OF !** DRAINAGE **! SHOULD HEAD TO HIGHER GROUND IMMEDIATELY.")
+ #set($volcanoCTA = "PERSONS IN THE VICINITY OF !** DRAINAGE **! SHOULD HEAD TO HIGHER GROUND IMMEDIATELY. VOLCANIC DEBRIS FLOWS ARE EXTREMELY DANGEROUS. VOLCANIC DEBRIS FLOWS CAN IMPACT AREAS WELL AWAY FROM NORMAL WATERWAY CHANNELS.")
+### end GP
#elseif(${list.contains(${bullets}, "dam")})
#set($ic = "DM")
#set($hycType = "A DAM FAILURE")
@@ -99,7 +117,7 @@
## Parse command to include a damInfo.vm file with site specific dam
## information. Sites can include their information in this file.
#########################################################################
-##parse ("damInfo.vm")
+#parse ("damInfo.vm")
##
${WMOId} ${vtecOffice} 000000 ${BBBId}
FFW${siteId}
@@ -140,8 +158,18 @@ THIS IS A TEST MESSAGE. ##
## to come in line with the 10-922 directive
#######################################################################
FLASH FLOOD WARNING FOR...
+#### added by GP
+#if(${alaska}=="true")
+ ${hycType} ON THE...
+!**INSERT RIVER/STREAM OR AREA**! IN !**INSERT GEO AREA**!
+#elseif(${wrZoneCounty}=="true")
+ ${hycType} IN...
+#firstBullet(${affectedCounties})
+#else
${hycType} IN...
#firstBullet(${areas})
+#end
+### GP end
* ##
#if(${productClass}=="T")
@@ -168,6 +196,20 @@ THIS IS A TEST MESSAGE. ##
#if(${list.contains(${bullets}, "public")})
#set($report = "THE PUBLIC REPORTED ${reportType1}")
#end
+### added by GP
+#if(${list.contains(${bullets}, "onlyGauge")})
+ #set($report = "GAUGES INDICATED ${reportType1}")
+#end
+#if(${list.contains(${bullets}, "CAP")})
+ #set($report = "THE CIVIL AIR PATROL REPORTED ${reportType1}")
+#end
+#if(${list.contains(${bullets}, "alaskaVoc")})
+ #set($report = "THE ALASKA VOLCANO OBSERVATORY REPORTED ${reportType1}")
+#end
+#if(${list.contains(${bullets}, "cascadeVoc")})
+ #set($report = "THE CASCADES VOLCANO OBSERVATORY REPORTED ${reportType1}")
+#end
+### GP end
* ##
#if(${productClass}=="T")
@@ -179,7 +221,7 @@ THIS IS A TEST MESSAGE. ##
## Flash Flood Emergency per NWS 10-922 Directive goes with third bullet #
##########################################################################
#if(${list.contains(${bullets}, "ffwEmergency")})
-#wrapText("THIS IS A FLASH FLOOD EMERGENCY FOR ${emergencyHeadline}. SEEK HIGHER GROUND NOW!" 2 2)
+#wrapText("THIS IS A FLASH FLOOD EMERGENCY FOR ${emergencyHeadline}." 2 2)
#end
#set($phenomena = "FLASH FLOOD")
@@ -256,6 +298,8 @@ ${sitespecCTA}
${volcanoCTA}
+${glacierCTA}
+
#if(${list.contains(${bullets}, "ffwEmergencyCTA")} || ${list.contains(${bullets}, "ffwEmergency")})
#if(${list.contains(${bullets}, "ffwEmergency")})
MOVE TO HIGHER GROUND NOW. THIS IS AN EXTREMELY DANGEROUS AND LIFE THREATENING SITUATION. DO NOT ATTEMPT TO TRAVEL UNLESS YOU ARE FLEEING AN AREA SUBJECT TO FLOODING OR UNDER AN EVACUATION ORDER.
diff --git a/edexOsgi/com.raytheon.uf.common.dataplugin.warning/utility/common_static/base/warngen/nonConvectiveFlashFloodWarning.xml b/edexOsgi/com.raytheon.uf.common.dataplugin.warning/utility/common_static/base/warngen/nonConvectiveFlashFloodWarning.xml
old mode 100644
new mode 100755
index 8040086cc1..2efcef54dc
--- a/edexOsgi/com.raytheon.uf.common.dataplugin.warning/utility/common_static/base/warngen/nonConvectiveFlashFloodWarning.xml
+++ b/edexOsgi/com.raytheon.uf.common.dataplugin.warning/utility/common_static/base/warngen/nonConvectiveFlashFloodWarning.xml
@@ -13,7 +13,9 @@
Modified Phil Kurimski 02-05-2013 Reordered GUI selections to make more sense
Added additional valid duration times
Modified Evan Bookbinder 06-26-2013 Added "U" Unknown severity
- Modified Phil Kurimski 09-19-2013 added geospatialConfig.xml
+ Modified Phil Kurimski 09-19-2013 added geospatialConfig.xml
+ Modified Mike Rega 01-18-2014 added Alaska GP changes for 14.2.1
+ Mike Dangelo - 1/23/2014 multiple changes to CTAs for FFW EMER
-->
true
-
+false
+
+
true
@@ -82,50 +85,60 @@ turned on unless the corresponding .vm file is turned on in a given template's .
4320
5760
7200
+ 8640
10080
-
-dam,ic
+dam,ic,ffwEMER
-
+
-
+
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+
-
-
+
+
@@ -143,8 +156,7 @@ turned on unless the corresponding .vm file is turned on in a given template's .
-
-
+
+
+
+
+
+
+
@@ -188,17 +206,23 @@ turned on unless the corresponding .vm file is turned on in a given template's .
-
+
+
+
+
+
+
+
-
+
-
-
+
+
@@ -216,7 +240,7 @@ turned on unless the corresponding .vm file is turned on in a given template's .
-
+
+
+
+
+
+
+
@@ -258,17 +288,23 @@ turned on unless the corresponding .vm file is turned on in a given template's .
-
+
+
+
+
+
+
+
-
+
-
-
+
+
@@ -286,7 +322,7 @@ turned on unless the corresponding .vm file is turned on in a given template's .
-
+
@@ -36,8 +37,7 @@ turned on unless the corresponding .vm file is turned on in a given template's .
-
-
+
-dam,ic
+dam,ic,ffwEMER
@@ -95,9 +95,15 @@ turned on unless the corresponding .vm file is turned on in a given template's .
-
-
-
+
+
+
+
+
+
+
+
@@ -140,9 +146,15 @@ turned on unless the corresponding .vm file is turned on in a given template's .
-
-
-
+
+
+
+
+
+
+
+
@@ -174,16 +186,22 @@ turned on unless the corresponding .vm file is turned on in a given template's .
-
+
-
-
-
+
+
+
+
+
+
+
+
@@ -194,8 +212,14 @@ turned on unless the corresponding .vm file is turned on in a given template's .
+
+
+
+
+
+
-
+
@@ -212,6 +236,11 @@ turned on unless the corresponding .vm file is turned on in a given template's .
+
+
+
+
+
@@ -247,16 +276,22 @@ turned on unless the corresponding .vm file is turned on in a given template's .
-
+
-
-
-
+
+
+
+
+
+
+
+
@@ -267,8 +302,14 @@ turned on unless the corresponding .vm file is turned on in a given template's .
+
+
+
+
+
+
-
+
@@ -285,6 +326,11 @@ turned on unless the corresponding .vm file is turned on in a given template's .
+
+
+
+
+
diff --git a/edexOsgi/com.raytheon.uf.common.dataplugin.warning/utility/common_static/base/warngen/officeCityTimezone.txt b/edexOsgi/com.raytheon.uf.common.dataplugin.warning/utility/common_static/base/warngen/officeCityTimezone.txt
old mode 100644
new mode 100755
diff --git a/edexOsgi/com.raytheon.uf.common.dataplugin.warning/utility/common_static/base/warngen/pointMarkers.vm b/edexOsgi/com.raytheon.uf.common.dataplugin.warning/utility/common_static/base/warngen/pointMarkers.vm
old mode 100644
new mode 100755
diff --git a/edexOsgi/com.raytheon.uf.common.dataplugin.warning/utility/common_static/base/warngen/pointMarkers.xml b/edexOsgi/com.raytheon.uf.common.dataplugin.warning/utility/common_static/base/warngen/pointMarkers.xml
old mode 100644
new mode 100755
diff --git a/edexOsgi/com.raytheon.uf.common.dataplugin.warning/utility/common_static/base/warngen/severeThunderstormWarning.vm b/edexOsgi/com.raytheon.uf.common.dataplugin.warning/utility/common_static/base/warngen/severeThunderstormWarning.vm
old mode 100644
new mode 100755
index ddf4eecd29..2026a34d82
--- a/edexOsgi/com.raytheon.uf.common.dataplugin.warning/utility/common_static/base/warngen/severeThunderstormWarning.vm
+++ b/edexOsgi/com.raytheon.uf.common.dataplugin.warning/utility/common_static/base/warngen/severeThunderstormWarning.vm
@@ -7,6 +7,7 @@
## Mike Dangelo 2-4-2013 NWS Mets detected a svr ##
## Evan Bookbinder 9-16-2013 Fixed CTA ##
## Evan Bookbinder 9-18-2013 Implemented config.vm ##
+## Mike Dangelo 1/23/2014, law enf CTA change to match SVS parseString
################################################################
##
#parse("config.vm")
@@ -293,7 +294,7 @@ THE CORRECT LOCATIONS BULLET SELECTED **!.
#end
## Uncomment below pull in mile marker info
-## #parse("mileMarkers.vm")
+#parse("mileMarkers.vm")
## Uncomment below pull in point marker info
## #parse("pointMarkers.vm")
@@ -408,7 +409,7 @@ THIS STORM HAS A HISTORY OF PRODUCING DESTRUCTIVE WINDS AND LARGE HAIL. THIS IS
#end
##
#if(${list.contains(${bullets}, "lawEnforcementCTA")})
-TO REPORT SEVERE WEATHER...CONTACT YOUR NEAREST LAW ENFORCEMENT AGENCY. THEY WILL RELAY YOUR REPORT TO THE NATIONAL WEATHER SERVICE OFFICE IN ${officeLoc}.
+TO REPORT SEVERE WEATHER...CONTACT THE NATIONAL WEATHER SERVICE...OR YOUR LOCAL AUTHORITY WHO WILL RELAY YOUR REPORT TO THE NATIONAL WEATHER SERVICE OFFICE IN ${officeLoc}.
#end
##
diff --git a/edexOsgi/com.raytheon.uf.common.dataplugin.warning/utility/common_static/base/warngen/severeThunderstormWarning.xml b/edexOsgi/com.raytheon.uf.common.dataplugin.warning/utility/common_static/base/warngen/severeThunderstormWarning.xml
old mode 100644
new mode 100755
diff --git a/edexOsgi/com.raytheon.uf.common.dataplugin.warning/utility/common_static/base/warngen/severeWeatherStatement.vm b/edexOsgi/com.raytheon.uf.common.dataplugin.warning/utility/common_static/base/warngen/severeWeatherStatement.vm
old mode 100644
new mode 100755
index b27a3611b6..ce629abeb0
--- a/edexOsgi/com.raytheon.uf.common.dataplugin.warning/utility/common_static/base/warngen/severeWeatherStatement.vm
+++ b/edexOsgi/com.raytheon.uf.common.dataplugin.warning/utility/common_static/base/warngen/severeWeatherStatement.vm
@@ -4,10 +4,12 @@
## RECENT HISTORY:
## Mike Dangelo 9-13-2012 minor tweaks to ${variables} ##
## Mike Dangelo 2-5-2013 NWS Mets Detected options ##
-## PHIL KURIMSKI 2-6-2013 Tor emergency preamble ##
+## PHIL KURIMSKI 2-6-2013 Tor emergency preamble ##
## EVAN BOOKBINDER 9-16-2013 CTA WORDING FIX ##
## PHIL KURIMSKI 9-17-2013 Tor emergency headline ##
## EVAN BOOKBINDER 9-18-2013 Implemented config.vm ##
+## MIKE DANGELO 1-22-2104 Tweaked default CTA wording to fix parseString problems and torEmerCTA to use new verbage ##
+## Removed preAmbleTOR (not used) -mmd 1/23/2014, preAmble for other tor-sighted/confirmed bullets retained
#################################################################
##
###################################################################
@@ -16,14 +18,7 @@
#parse("config.vm")
#set($windhailTag = "")
#set($TORhailTag = "")
-###############################################################################
-## Establish the preamble for the default CTA if a Tor Emergency is selected
-###############################################################################
-#if(${list.contains($bullets, "torEmergency")})
- #set($preAmble = "TO REPEAT...A LARGE...EXTREMELY DANGEROUS AND POTENTIALLY DEADLY TORNADO IS ON THE GROUND. TO PROTECT YOUR LIFE...")
-#else
- #set($preAmble = "")
-#end
+#set($preAmble = "")
############################################
## CREATE INITIAL SET OF VARIABLES ##
############################################
@@ -418,22 +413,22 @@ ${dateUtil.format(${now}, ${timeFormat.header}, ${localtimezone})}
#else
#set($reportType2 = "THIS TORNADO")
#end
- #set($preAmbleTOR = "TO REPEAT...A TORNADO HAS BEEN OBSERVED! TO PROTECT YOUR LIFE...")
+ #set($preAmble = "TO REPEAT...A TORNADO HAS BEEN OBSERVED. TO PROTECT YOUR LIFE...")
#elseif(${list.contains(${bullets}, "confirmedLargeTOR")})
#set($reportType = "NATIONAL WEATHER SERVICE DOPPLER RADAR AND STORM SPOTTERS WERE TRACKING A LARGE AND EXTREMELY DANGEROUS TORNADO")
- #set($preAmbleTOR = "TO REPEAT...A LARGE...EXTREMELY DANGEROUS AND POTENTIALLY DEADLY TORNADO IS ON THE GROUND! TO PROTECT YOUR LIFE...")
+ #set($preAmble = "TO REPEAT...A LARGE...EXTREMELY DANGEROUS AND POTENTIALLY DEADLY TORNADO IS ON THE GROUND. TO PROTECT YOUR LIFE...")
#elseif(${list.contains(${bullets}, "spotterTOR")})
#set($reportType = "TRAINED WEATHER SPOTTERS REPORTED A ${reportType1}")
- #set($preAmbleTOR = "TO REPEAT...A TORNADO HAS BEEN SIGHTED! TO PROTECT YOUR LIFE...")
+ #set($preAmble = "TO REPEAT...A TORNADO HAS BEEN SIGHTED. TO PROTECT YOUR LIFE...")
#elseif(${list.contains(${bullets}, "lawEnforcementTOR")})
#set($reportType = "LOCAL LAW ENFORCEMENT REPORTED A ${reportType1}")
- #set($preAmbleTOR = "TO REPEAT...A TORNADO HAS BEEN SIGHTED! TO PROTECT YOUR LIFE...")
+ #set($preAmble = "TO REPEAT...A TORNADO HAS BEEN SIGHTED. TO PROTECT YOUR LIFE...")
#elseif(${list.contains(${bullets}, "emergencyManagementTOR")})
#set($reportType = "EMERGENCY MANAGEMENT REPORTED A ${reportType1}")
- #set($preAmbleTOR = "TO REPEAT...A TORNADO HAS BEEN SIGHTED! TO PROTECT YOUR LIFE...")
+ #set($preAmble = "TO REPEAT...A TORNADO HAS BEEN SIGHTED. TO PROTECT YOUR LIFE...")
#elseif(${list.contains(${bullets}, "publicTOR")})
#set($reportType = "THE PUBLIC REPORTED A ${reportType1}")
- #set($preAmbleTOR = "TO REPEAT...A TORNADO HAS BEEN SIGHTED! TO PROTECT YOUR LIFE...")
+ #set($preAmble = "TO REPEAT...A TORNADO HAS BEEN SIGHTED. TO PROTECT YOUR LIFE...")
#elseif(${list.contains(${bullets}, "spotterFunnelCloud")})
#set($reportType = "TRAINED WEATHER SPOTTERS REPORTED A FUNNEL CLOUD")
#if(${stormType} == "line")
@@ -710,10 +705,10 @@ LOCATIONS IMPACTED INCLUDE...
##############################################
#if(${list.contains(${bullets}, "specialEvent")})
#if(${stormType} == "line")
-THOSE ATTENDING THE !**now/venue name or location**! ARE IN THE PATH OF THESE STORMS AND SHOULD PREPARE FOR IMMINENT DANGEROUS WEATHER CONDITIONS. SEEK SHELTER NOW!
+THOSE ATTENDING THE !**now/venue name or location**! ARE IN THE PATH OF THESE STORMS AND SHOULD PREPARE FOR IMMINENT DANGEROUS WEATHER CONDITIONS. SEEK SHELTER NOW.
#else
-THOSE ATTENDING THE !**now/venue name or location**! ARE IN THE PATH OF THIS STORM AND SHOULD PREPARE FOR IMMINENT DANGEROUS WEATHER CONDITIONS. SEEK SHELTER NOW!
+THOSE ATTENDING THE !**now/venue name or location**! ARE IN THE PATH OF THIS STORM AND SHOULD PREPARE FOR IMMINENT DANGEROUS WEATHER CONDITIONS. SEEK SHELTER NOW.
#end
#end
@@ -741,7 +736,7 @@ PRECAUTIONARY/PREPAREDNESS ACTIONS...
#end
#if(${list.contains(${bullets}, "torEmergencyCTA")} || ${list.contains(${bullets}, "torEmergency")})
#if(${list.contains(${bullets}, "torEmergency")})
-THIS IS AN EXTREMELY DANGEROUS TORNADO WITH COMPLETE DEVASTATION LIKELY. YOU COULD BE KILLED IF NOT UNDERGROUND OR IN A TORNADO SHELTER. DO NOT DELAY...SEEK SHELTER NOW! IF NO UNDERGROUND SHELTER IS AVAILABLE SEEK SHELTER IN AN INTERIOR ROOM OF THE LOWEST LEVEL OF A STRUCTURE...OR IF TIME ALLOWS...CONSIDER MOVING TO AN UNDERGROUND SHELTER ELSEWHERE. MOBILE HOMES AND OUTBUILDINGS WILL OFFER NO SHELTER FROM THIS TORNADO.
+TO REPEAT...A LARGE...EXTREMELY DANGEROUS...AND POTENTIALLY DEADLY TORNADO IS ON THE GROUND. TO PROTECT YOUR LIFE...TAKE COVER NOW. MOVE TO AN INTERIOR ROOM ON THE LOWEST FLOOR OF A STURDY BUILDING. AVOID WINDOWS. IF IN A MOBILE HOME...A VEHICLE OR OUTDOORS...MOVE TO THE CLOSEST SUBSTANTIAL SHELTER AND PROTECT YOURSELF FROM FLYING DEBRIS.
#else
!** YOU SELECTED THE TORNADO EMERGENCY CTA WITHOUT SELECTING THE TORNADO EMERGENCY HEADER. PLEASE CLOSE THIS WINDOW AND RE-GENERATE THIS WARNING **!
@@ -749,11 +744,11 @@ THIS IS AN EXTREMELY DANGEROUS TORNADO WITH COMPLETE DEVASTATION LIKELY. YOU COU
#end
#end
#if(${list.contains(${bullets}, "defaultMobileCTA")})
-${preAmble}TAKE COVER NOW! MOVE TO A BASEMENT OR AN INTERIOR ROOM ON THE LOWEST FLOOR OF A STURDY BUILDING. AVOID WINDOWS. IF IN A MOBILE HOME OR OUTDOORS...MOVE TO THE CLOSEST SUBSTANTIAL SHELTER AND PROTECT YOURSELF FROM FLYING DEBRIS.
+${preAmble}TAKE COVER NOW. MOVE TO A BASEMENT OR AN INTERIOR ROOM ON THE LOWEST FLOOR OF A STURDY BUILDING. AVOID WINDOWS. IF YOU ARE IN A MOBILE HOME OR OUTDOORS...MOVE TO THE CLOSEST SUBSTANTIAL SHELTER AND PROTECT YOURSELF FROM FLYING DEBRIS.
#end
#if(${list.contains(${bullets}, "defaultUrbanCTA")})
-${preAmble}TAKE COVER NOW! MOVE TO A BASEMENT OR AN INTERIOR ROOM ON THE LOWEST FLOOR OF A STURDY BUILDING. AVOID WINDOWS. IF IN A VEHICLE OR OUTDOORS...MOVE TO THE CLOSEST SUBSTANTIAL SHELTER AND PROTECT YOURSELF FROM FLYING DEBRIS.
+${preAmble}TAKE COVER NOW. MOVE TO A BASEMENT OR AN INTERIOR ROOM ON THE LOWEST FLOOR OF A STURDY BUILDING. AVOID WINDOWS. IF YOU ARE IN A VEHICLE OR OUTDOORS...MOVE TO THE CLOSEST SUBSTANTIAL SHELTER AND PROTECT YOURSELF FROM FLYING DEBRIS.
#end
#if(${list.contains(${bullets}, "motoristsCTA")})
@@ -761,11 +756,11 @@ MOTORISTS SHOULD NOT TAKE SHELTER UNDER HIGHWAY OVERPASSES. IF YOU CANNOT SAFELY
#end
#if(${list.contains(${bullets}, "rainWrappedCTA")})
-HEAVY RAINFALL MAY OBSCURE THIS TORNADO. DO NOT WAIT TO SEE OR HEAR THE TORNADO. TAKE COVER NOW!
+HEAVY RAINFALL MAY OBSCURE THIS TORNADO. DO NOT WAIT TO SEE OR HEAR THE TORNADO. TAKE COVER NOW.
#end
#if(${list.contains(${bullets}, "nighttimeCTA")})
-TORNADOES ARE EXTREMELY DIFFICULT TO SEE AND CONFIRM AT NIGHT. DO NOT WAIT TO SEE OR HEAR THE TORNADO. TAKE COVER NOW!
+TORNADOES ARE EXTREMELY DIFFICULT TO SEE AND CONFIRM AT NIGHT. DO NOT WAIT TO SEE OR HEAR THE TORNADO. TAKE COVER NOW.
#end
#if(${list.contains(${bullets}, "largeTORCTA")})
@@ -784,7 +779,7 @@ THIS CLUSTER OF THUNDERSTORMS IS CAPABLE OF PRODUCING TORNADOES AND WIDESPREAD S
#end
#if(${list.contains(${bullets}, "waterCTA")})
-IF ON OR NEAR !**NAME OF WATER BODY **!...GET OUT OF THE WATER AND MOVE TO SAFE SHELTER IMMEDIATELY! IF YOU CAN HEAR THUNDER...YOU ARE CLOSE ENOUGH TO BE STRUCK BY LIGHTNING. IN ADDITION...SEVERE THUNDERSTORMS CAN PRODUCE LARGE CAPSIZING WAVES...EVEN ON SMALL BODIES OF WATER. MOVE INTO DOCK AND SEEK SAFE SHELTER NOW. DON'T BE CAUGHT ON THE WATER IN A THUNDERSTORM.
+IF ON OR NEAR !**NAME OF WATER BODY **!...GET OUT OF THE WATER AND MOVE TO SAFE SHELTER IMMEDIATELY. IF YOU CAN HEAR THUNDER...YOU ARE CLOSE ENOUGH TO BE STRUCK BY LIGHTNING. IN ADDITION...SEVERE THUNDERSTORMS CAN PRODUCE LARGE CAPSIZING WAVES...EVEN ON SMALL BODIES OF WATER. MOVE INTO DOCK AND SEEK SAFE SHELTER NOW. DON'T BE CAUGHT ON THE WATER IN A THUNDERSTORM.
#end
##
@@ -904,7 +899,7 @@ THIS IS AN EXTREMELY DANGEROUS SITUATION WITH TORNADO LIKE WIND SPEEDS EXPECTED.
#end
##
#if(${list.contains(${bullets}, "lightningCTA")})
-IN ADDITION TO LARGE HAIL AND DAMAGING WINDS...CONTINUOUS CLOUD TO GROUND LIGHTNING IS OCCURRING WITH THIS STORM. MOVE INDOORS IMMEDIATELY! LIGHTNING IS ONE OF NATURES LEADING KILLERS. REMEMBER...IF YOU CAN HEAR THUNDER...YOU ARE CLOSE ENOUGH TO BE STRUCK BY LIGHTNING.
+IN ADDITION TO LARGE HAIL AND DAMAGING WINDS...CONTINUOUS CLOUD TO GROUND LIGHTNING IS OCCURRING WITH THIS STORM. MOVE INDOORS IMMEDIATELY. LIGHTNING IS ONE OF NATURES LEADING KILLERS. REMEMBER...IF YOU CAN HEAR THUNDER...YOU ARE CLOSE ENOUGH TO BE STRUCK BY LIGHTNING.
#end
##
diff --git a/edexOsgi/com.raytheon.uf.common.dataplugin.warning/utility/common_static/base/warngen/severeWeatherStatement.xml b/edexOsgi/com.raytheon.uf.common.dataplugin.warning/utility/common_static/base/warngen/severeWeatherStatement.xml
old mode 100644
new mode 100755
index e870e42fc2..1483bf541d
--- a/edexOsgi/com.raytheon.uf.common.dataplugin.warning/utility/common_static/base/warngen/severeWeatherStatement.xml
+++ b/edexOsgi/com.raytheon.uf.common.dataplugin.warning/utility/common_static/base/warngen/severeWeatherStatement.xml
@@ -9,6 +9,8 @@
Evan Bookbinder 09-11-2012 Added settings for locations shapefile
Mike Dangelo 2-5-2013 NWS Mets Detected options (commented by default)
Phil Kurimski 09-19-2013 added geospatialConfig.xml
+ Richard Barnhill 10-28-2013 Changed/added torEMER bulletGroup to keep it locked on followups
+ Mike Dangelo 1-21-2014 Tweaked parseStrings for default safety rules, changed law enf CTA to match wording from both TOR and SVR
-->
-
-
-
+
+
+
+
@@ -303,7 +306,7 @@ turned on unless the corresponding .vm file is turned on in a given template's .
-
+
@@ -317,7 +320,7 @@ turned on unless the corresponding .vm file is turned on in a given template's .
-
+
-
-
+
+
@@ -429,7 +432,7 @@ turned on unless the corresponding .vm file is turned on in a given template's .
-
+
diff --git a/edexOsgi/com.raytheon.uf.common.dataplugin.warning/utility/common_static/base/warngen/shortTermForecast.vm b/edexOsgi/com.raytheon.uf.common.dataplugin.warning/utility/common_static/base/warngen/shortTermForecast.vm
old mode 100644
new mode 100755
index 4097824fae..e97abde500
--- a/edexOsgi/com.raytheon.uf.common.dataplugin.warning/utility/common_static/base/warngen/shortTermForecast.vm
+++ b/edexOsgi/com.raytheon.uf.common.dataplugin.warning/utility/common_static/base/warngen/shortTermForecast.vm
@@ -7,6 +7,7 @@
## Evan Bookbinder 4-25-2012 for OB 12.3.1 (MND)
## Mike Dangelo 9-13-2012 minor tweaks to ${variables}
## Evan Bookbinder 9-18-2013 implemented config.vm
+## Mike Dangelo 1/23/2014 Added blankStatement logic - default is still near-severe storm w/list of cities
################################################################
##
#parse("config.vm")
@@ -161,7 +162,12 @@ THIS IS A TEST MESSAGE. ##
######################################################
###### Storm current location description ##########
######################################################
+#if(${list.contains(${bullets}, "blankStatement")})
.NOW...
+
+#else
+.NOW...
+
#thirdBullet(${dateUtil},${event},${timeFormat},${localtimezone},${secondtimezone})
...${report}##
##Many of the variables passed below are controlled by config.vm
@@ -199,10 +205,6 @@ THIS IS A TEST MESSAGE. ##
#### ACCOMPANYING XML FILE PARSE STRING IS CHANGED TO MATCH!
#locationsList("LOCATIONS IMPACTED INCLUDE..." ${otherLead} 0 ${cityList} ${otherPoints} ${areas} ${dateUtil} ${timeFormat} 0)
-#else
-LOCATIONS IMPACTED INCLUDE...
- !** YOU DID NOT SELECT A PATHCAST OR LIST OF CITIES BULLET. PLEASE ENTER LOCATIONS IMPACTED OR REGENERATE THE WARNING WITH THE CORRECT LOCATIONS BULLET SELECTED **!.
-
#end
#if(${list.contains(${bullets}, "gustFrontPassage")})
@@ -235,6 +237,7 @@ LOCATIONS CAN EXPECT !** EXPECTED SNOW **! INCHES OF SNOW.
#if(${list.contains(${includedWatches}, "svrWatches")} && ${list.contains(${bullets}, "includeSvrWatches")})
#insertsvrwatches(${watches}, ${list}, ${secondtimezone}, ${dateUtil}, ${timeFormat})
+#end
#end
$$
diff --git a/edexOsgi/com.raytheon.uf.common.dataplugin.warning/utility/common_static/base/warngen/shortTermForecast.xml b/edexOsgi/com.raytheon.uf.common.dataplugin.warning/utility/common_static/base/warngen/shortTermForecast.xml
old mode 100644
new mode 100755
index c74eca389d..52a6eeb82f
--- a/edexOsgi/com.raytheon.uf.common.dataplugin.warning/utility/common_static/base/warngen/shortTermForecast.xml
+++ b/edexOsgi/com.raytheon.uf.common.dataplugin.warning/utility/common_static/base/warngen/shortTermForecast.xml
@@ -79,8 +79,8 @@ turned on unless the corresponding .vm file is turned on in a given template's .
-
+
@@ -102,7 +102,7 @@ turned on unless the corresponding .vm file is turned on in a given template's .
-
+
@@ -113,8 +113,8 @@ turned on unless the corresponding .vm file is turned on in a given template's .
-
+
diff --git a/edexOsgi/com.raytheon.uf.common.dataplugin.warning/utility/common_static/base/warngen/significantWeatherAdvisory.vm b/edexOsgi/com.raytheon.uf.common.dataplugin.warning/utility/common_static/base/warngen/significantWeatherAdvisory.vm
old mode 100644
new mode 100755
diff --git a/edexOsgi/com.raytheon.uf.common.dataplugin.warning/utility/common_static/base/warngen/significantWeatherAdvisory.xml b/edexOsgi/com.raytheon.uf.common.dataplugin.warning/utility/common_static/base/warngen/significantWeatherAdvisory.xml
old mode 100644
new mode 100755
diff --git a/edexOsgi/com.raytheon.uf.common.dataplugin.warning/utility/common_static/base/warngen/specialMarineWarning.vm b/edexOsgi/com.raytheon.uf.common.dataplugin.warning/utility/common_static/base/warngen/specialMarineWarning.vm
old mode 100644
new mode 100755
diff --git a/edexOsgi/com.raytheon.uf.common.dataplugin.warning/utility/common_static/base/warngen/specialMarineWarning.xml b/edexOsgi/com.raytheon.uf.common.dataplugin.warning/utility/common_static/base/warngen/specialMarineWarning.xml
old mode 100644
new mode 100755
diff --git a/edexOsgi/com.raytheon.uf.common.dataplugin.warning/utility/common_static/base/warngen/specialMarineWarningFollowup.vm b/edexOsgi/com.raytheon.uf.common.dataplugin.warning/utility/common_static/base/warngen/specialMarineWarningFollowup.vm
old mode 100644
new mode 100755
diff --git a/edexOsgi/com.raytheon.uf.common.dataplugin.warning/utility/common_static/base/warngen/specialMarineWarningFollowup.xml b/edexOsgi/com.raytheon.uf.common.dataplugin.warning/utility/common_static/base/warngen/specialMarineWarningFollowup.xml
old mode 100644
new mode 100755
diff --git a/edexOsgi/com.raytheon.uf.common.dataplugin.warning/utility/common_static/base/warngen/specialWeatherStatement.vm b/edexOsgi/com.raytheon.uf.common.dataplugin.warning/utility/common_static/base/warngen/specialWeatherStatement.vm
old mode 100644
new mode 100755
index f5502da633..a418dc057f
--- a/edexOsgi/com.raytheon.uf.common.dataplugin.warning/utility/common_static/base/warngen/specialWeatherStatement.vm
+++ b/edexOsgi/com.raytheon.uf.common.dataplugin.warning/utility/common_static/base/warngen/specialWeatherStatement.vm
@@ -5,6 +5,7 @@
## Phil Kurimski WFO DTX 2.05.2013 (BUILD 13.2.1-5) ##
## Phil Kurimski WFO DTX 9.16.2013 (BUILD 13.5.2-4) ##
## Evan Bookbinder 9.18.2013 Implemented config.vm ##
+## Mike Dangelo 1/23/2014 Added blankStatement logic - default is still near-severe storm w/list of cities
############################################################
##
## SET SOME INITIAL VARIABLES
@@ -193,6 +194,10 @@ ${dateUtil.format(${now}, ${timeFormat.header}, ${localtimezone})}
#if(${productClass}=="T")
THIS IS A TEST MESSAGE. ##
#end
+#if(${list.contains(${bullets}, "blankStatement")})
+... !** headline **! ...
+
+#else
...${describeEvent} WILL AFFECT ##
#set($full = '')
#foreach (${area} in ${areas})
@@ -203,6 +208,7 @@ THIS IS A TEST MESSAGE. ##
#else
${full}
#end
+#end
######################################################
###### Storm current location description ##########
@@ -210,6 +216,10 @@ ${full}
#if(${productClass}=="T")
THIS IS A TEST MESSAGE. ##
#end
+#if(${list.contains(${bullets}, "blankStatement")})
+
+
+#else
#thirdBullet(${dateUtil},${event},${timeFormat},${localtimezone},${secondtimezone})...##
${describeMovement} WAS ##
##Many of the variables passed below are controlled by config.vm
@@ -231,15 +241,17 @@ ${describeMovement} WAS ##
#if(${windSpeed} > 0 && ${hailSize} > 0 && ${SvsR} == "RAIN")
${windThreat} AND ${hailThreat}${hailTrail} ARE POSSIBLE WITH ${thisEvent}.
+
#else
#if(${windSpeed} > 0)
${windThreat} ARE POSSIBLE WITH ${thisEvent}.
+
#end
#if(${hailSize} > 0 && ${SvsR} == "RAIN")
${hailThreat}${hailTrail} IS POSSIBLE WITH ${thisEvent}.
-#end
-#end
+#end
+#end
###################################################
######## GENERATE PATHCAST OR CITIES LIST #########
###################################################
@@ -352,7 +364,7 @@ THIS IS A TEST MESSAGE. DO NOT TAKE ACTION BASED ON THIS MESSAGE.
#tml(${TMLtime}, ${timeFormat}, ${movementDirection}, ${movementInKnots}, ${eventLocation})
-
+#end
$$
diff --git a/edexOsgi/com.raytheon.uf.common.dataplugin.warning/utility/common_static/base/warngen/specialWeatherStatement.xml b/edexOsgi/com.raytheon.uf.common.dataplugin.warning/utility/common_static/base/warngen/specialWeatherStatement.xml
old mode 100644
new mode 100755
index 7e3165ac1b..b296717f9a
--- a/edexOsgi/com.raytheon.uf.common.dataplugin.warning/utility/common_static/base/warngen/specialWeatherStatement.xml
+++ b/edexOsgi/com.raytheon.uf.common.dataplugin.warning/utility/common_static/base/warngen/specialWeatherStatement.xml
@@ -2,6 +2,7 @@
Mike Dangelo 1.25.2013 (on build 12.12.1-12)
Phil Kurimski 2.05.2013 (on build 13.2.1-5)
Phil Kurimski 9-19-2013 added geospatialConfig.xml
+ Mike Dangelo 1/23/2014 added blankStatement bullet
-->
@@ -75,6 +76,7 @@ turned on unless the corresponding .vm file is turned on in a given template's .
+
@@ -128,6 +130,7 @@ turned on unless the corresponding .vm file is turned on in a given template's .
+
diff --git a/edexOsgi/com.raytheon.uf.common.dataplugin.warning/utility/common_static/base/warngen/states.txt b/edexOsgi/com.raytheon.uf.common.dataplugin.warning/utility/common_static/base/warngen/states.txt
old mode 100644
new mode 100755
diff --git a/edexOsgi/com.raytheon.uf.common.dataplugin.warning/utility/common_static/base/warngen/stormReports.vm b/edexOsgi/com.raytheon.uf.common.dataplugin.warning/utility/common_static/base/warngen/stormReports.vm
old mode 100644
new mode 100755
diff --git a/edexOsgi/com.raytheon.uf.common.dataplugin.warning/utility/common_static/base/warngen/stormReports.xml b/edexOsgi/com.raytheon.uf.common.dataplugin.warning/utility/common_static/base/warngen/stormReports.xml
old mode 100644
new mode 100755
diff --git a/edexOsgi/com.raytheon.uf.common.dataplugin.warning/utility/common_static/base/warngen/tornadoWarning.vm b/edexOsgi/com.raytheon.uf.common.dataplugin.warning/utility/common_static/base/warngen/tornadoWarning.vm
old mode 100644
new mode 100755
index f5b3df0152..7eb81f5c3c
--- a/edexOsgi/com.raytheon.uf.common.dataplugin.warning/utility/common_static/base/warngen/tornadoWarning.vm
+++ b/edexOsgi/com.raytheon.uf.common.dataplugin.warning/utility/common_static/base/warngen/tornadoWarning.vm
@@ -7,6 +7,8 @@
## PHIL KURIMSKI 2-6-2013 Put tor emergency back in as 3rd bullet ##
## PHIL KURIMSKI 9-17-2013 Put tor emergency as a headline ##
## Evan Bookbinder 9-18-2013 Implemented config.vm ##
+## Josh Huber and Mike Dangelo 1/22/14 Emer CTA wording tweak ##
+## Mike Dangelo 1/24/2014 - Removed preAmbleTOR (not used), preAmble for other tor-sighted/confirmed bullets retained, law enf CTA changed to match SVS parseString, prevented largeTORCTA if confirmedLarge not selected as type.
###############################################################################
## ESTABLISH SOME INITIAL VARIABLES
#parse("config.vm")
@@ -15,20 +17,12 @@
#set($reportType = "A TORNADO WAS REPORTED")
#set($pathcastLead = "THIS TORNADIC STORM")
#set($moveLead = " DOPPLER RADAR SHOWED THIS TORNADO MOVING")
+#set($preAmble = "")
#if(${stormType} == "line")
#set($reportType = "A LINE OF TORNADO PRODUCING STORMS WAS REPORTED")
#set($pathcastLead = "THESE TORNADIC STORMS")
#set($moveLead = " DOPPLER RADAR SHOWED THESE STORMS MOVING")
#end
-##
-###############################################################################
-## Establish the preamble for the default CTA if a Tor Emergency is selected
-###############################################################################
-#if(${list.contains($bullets, "torEmergency")})
- #set($preAmble = "TO REPEAT...A LARGE...EXTREMELY DANGEROUS AND POTENTIALLY DEADLY TORNADO IS ON THE GROUND. TO PROTECT YOUR LIFE...")
-#else
- #set($preAmble = "")
-#end
#######################################
## HANDLE HAIL POSSIBILITIES ##########
#######################################
@@ -218,7 +212,7 @@ THIS IS A TEST MESSAGE. ##
#set($pathcastLead = "THE TORNADO")
#set($moveLead = " DOPPLER RADAR SHOWED THIS TORNADO MOVING")
#end
- #set($preAmble = "TO REPEAT...A LARGE...EXTREMELY DANGEROUS AND POTENTIALLY DEADLY TORNADO IS ON THE GROUND. TAKE IMMEDIATE ACTION TO PROTECT YOUR LIFE. ")
+ #set($preAmble = "TO REPEAT...A LARGE AND EXTREMELY DANGEROUS TORNADO HAS BEEN SIGHTED. ")
#end
#if(${list.contains(${bullets}, "spotter")})
#set($reportType = "TRAINED WEATHER SPOTTERS REPORTED A TORNADO")
@@ -418,7 +412,7 @@ PRECAUTIONARY/PREPAREDNESS ACTIONS...
##
#if(${list.contains(${bullets}, "torEmergencyCTA")} || ${list.contains(${bullets}, "torEmergency")})
#if(${list.contains(${bullets}, "torEmergency")})
-THIS IS AN EXTREMELY DANGEROUS TORNADO WITH COMPLETE DEVASTATION LIKELY. YOU COULD BE KILLED IF NOT UNDERGROUND OR IN A TORNADO SHELTER. DO NOT DELAY...SEEK SHELTER NOW! IF NO UNDERGROUND SHELTER IS AVAILABLE SEEK SHELTER IN AN INTERIOR ROOM OF THE LOWEST LEVEL OF A STRUCTURE...OR IF TIME ALLOWS...CONSIDER MOVING TO AN UNDERGROUND SHELTER ELSEWHERE. MOBILE HOMES AND OUTBUILDINGS WILL OFFER NO SHELTER FROM THIS TORNADO.
+TO REPEAT...A LARGE...EXTREMELY DANGEROUS...AND POTENTIALLY DEADLY TORNADO IS ON THE GROUND. TO PROTECT YOUR LIFE...TAKE COVER NOW. MOVE TO AN INTERIOR ROOM ON THE LOWEST FLOOR OF A STURDY BUILDING. AVOID WINDOWS. IF IN A MOBILE HOME...A VEHICLE OR OUTDOORS...MOVE TO THE CLOSEST SUBSTANTIAL SHELTER AND PROTECT YOURSELF FROM FLYING DEBRIS.
#else
!** YOU SELECTED THE TORNADO EMERGENCY CTA WITHOUT SELECTING THE TORNADO EMERGENCY HEADER. PLEASE CLOSE THIS WINDOW AND RE-GENERATE THIS WARNING **!
@@ -429,13 +423,17 @@ THIS IS AN EXTREMELY DANGEROUS TORNADO WITH COMPLETE DEVASTATION LIKELY. YOU COU
THIS TORNADO WARNING REPLACES THE SEVERE THUNDERSTORM WARNING ISSUED FOR THE SAME AREA.
#end
+#if(${list.contains(${bullets}, "torEmergencyCTA")} || ${list.contains(${bullets}, "torEmergency")})
+ #set($dummy='dummy')
+#else
#if(${list.contains(${bullets}, "defaultMobileCTA")})
-${preAmble}TAKE COVER NOW. MOVE TO A BASEMENT OR AN INTERIOR ROOM ON THE LOWEST FLOOR OF A STURDY BUILDING. AVOID WINDOWS. IF IN A MOBILE HOME OR OUTDOORS...MOVE TO THE CLOSEST SUBSTANTIAL SHELTER AND PROTECT YOURSELF FROM FLYING DEBRIS.
+${preAmble}TAKE COVER NOW. MOVE TO A BASEMENT OR AN INTERIOR ROOM ON THE LOWEST FLOOR OF A STURDY BUILDING. AVOID WINDOWS. IF YOU ARE IN A MOBILE HOME OR OUTDOORS...MOVE TO THE CLOSEST SUBSTANTIAL SHELTER AND PROTECT YOURSELF FROM FLYING DEBRIS.
#end
#if(${list.contains(${bullets}, "defaultUrbanCTA")})
-${preAmble}TAKE COVER NOW. MOVE TO A BASEMENT OR AN INTERIOR ROOM ON THE LOWEST FLOOR OF A STURDY BUILDING. AVOID WINDOWS. IF IN A VEHICLE OR OUTDOORS...MOVE TO THE CLOSEST SUBSTANTIAL SHELTER AND PROTECT YOURSELF FROM FLYING DEBRIS.
+${preAmble}TAKE COVER NOW. MOVE TO A BASEMENT OR AN INTERIOR ROOM ON THE LOWEST FLOOR OF A STURDY BUILDING. AVOID WINDOWS. IF YOU ARE IN A VEHICLE OR OUTDOORS...MOVE TO THE CLOSEST SUBSTANTIAL SHELTER AND PROTECT YOURSELF FROM FLYING DEBRIS.
+#end
#end
#if(${list.contains(${bullets}, "motoristsCTA")})
MOTORISTS SHOULD NOT TAKE SHELTER UNDER HIGHWAY OVERPASSES. IF YOU CANNOT SAFELY DRIVE AWAY FROM THE TORNADO...AS A LAST RESORT...EITHER PARK YOUR VEHICLE AND STAY PUT...OR ABANDON YOUR VEHICLE AND LIE DOWN IN A LOW LYING AREA AND PROTECT YOURSELF FROM FLYING DEBRIS.
@@ -449,12 +447,14 @@ HEAVY RAINFALL MAY OBSCURE THIS TORNADO. DO NOT WAIT TO SEE OR HEAR THE TORNADO.
TORNADOES ARE EXTREMELY DIFFICULT TO SEE AND CONFIRM AT NIGHT. DO NOT WAIT TO SEE OR HEAR THE TORNADO. TAKE COVER NOW.
#end
-#if(${list.contains(${bullets}, "largeTORCTA")})
+#if(${list.contains(${bullets}, "confirmedLarge")})
+#if(${list.contains(${bullets}, "meteorologistsLarge")} || ${list.contains(${bullets}, "largeTORCTA")})
A LARGE AND EXTREMELY DANGEROUS TORNADO IS ON THE GROUND. TAKE IMMEDIATE TORNADO PRECAUTIONS. THIS IS A LIFE-THREATENING SITUATION.
+#end
#end
#if(${list.contains(${bullets}, "lawEnforcementCTA")})
-IF A TORNADO OR OTHER SEVERE WEATHER IS SPOTTED...REPORT IT TO THE NATIONAL WEATHER SERVICE OR YOUR LOCAL AUTHORITY WHO WILL RELAY YOUR REPORT. THIS ACT MAY SAVE LIVES OF OTHERS IN THE PATH OF DANGEROUS WEATHER.
+IF A TORNADO OR OTHER SEVERE WEATHER IS SPOTTED...CONTACT THE NATIONAL WEATHER SERVICE...OR YOUR LOCAL AUTHORITY WHO WILL RELAY YOUR REPORT TO THE NATIONAL WEATHER SERVICE OFFICE IN ${officeLoc}. THIS ACT MAY SAVE LIVES OF OTHERS IN THE PATH OF DANGEROUS WEATHER.
#end
#if(${list.contains(${bullets}, "squallCTA")} && ${stormType} == "line")
diff --git a/edexOsgi/com.raytheon.uf.common.dataplugin.warning/utility/common_static/base/warngen/tornadoWarning.xml b/edexOsgi/com.raytheon.uf.common.dataplugin.warning/utility/common_static/base/warngen/tornadoWarning.xml
old mode 100644
new mode 100755
index 2c9a8c5178..8ce77e182a
--- a/edexOsgi/com.raytheon.uf.common.dataplugin.warning/utility/common_static/base/warngen/tornadoWarning.xml
+++ b/edexOsgi/com.raytheon.uf.common.dataplugin.warning/utility/common_static/base/warngen/tornadoWarning.xml
@@ -10,6 +10,8 @@
Evan Bookbinder 09-11-2012 Added settings for locations shapefile
Create new areaSource objects
Mike Dangelo 2-4-2013 Added commented bullet for NWS METS DECTECTED
+ Richard Barnhill 10-28-2013 Changed/added torEMER bulletGroup to keep it locked on followups
+ Mike Dangelo 1-23-2014 Changed parseStrings for default safety rules CTAs and law enf CTA
-->
@@ -71,11 +73,11 @@ turned on unless the corresponding .vm file is turned on in a given template's .
50
60
-
+torEMER
-
+
-
-
+
+
@@ -139,7 +141,7 @@ turned on unless the corresponding .vm file is turned on in a given template's .
-
+
-
-
+
+
diff --git a/edexOsgi/com.raytheon.uf.common.geospatial/src/com/raytheon/uf/common/geospatial/util/EnvelopeIntersection.java b/edexOsgi/com.raytheon.uf.common.geospatial/src/com/raytheon/uf/common/geospatial/util/EnvelopeIntersection.java
index b14345305e..c4a0298c74 100644
--- a/edexOsgi/com.raytheon.uf.common.geospatial/src/com/raytheon/uf/common/geospatial/util/EnvelopeIntersection.java
+++ b/edexOsgi/com.raytheon.uf.common.geospatial/src/com/raytheon/uf/common/geospatial/util/EnvelopeIntersection.java
@@ -92,6 +92,15 @@ public class EnvelopeIntersection {
sourceREnvelope.getCoordinateReferenceSystem(),
targetREnvelope.getCoordinateReferenceSystem());
if (sourceCRSToTargetCRS.isIdentity()) {
+ /*
+ * Referenced envelope will only perform an intersection if the CRSs
+ * are identical. However it is possible to get an identity math
+ * transform with slight variences in the object types of the CRSs.
+ * This is known to happen on Equidistant Cylindrical projections.
+ * To get around this force the source envelope into the target CRS.
+ */
+ sourceREnvelope = new ReferencedEnvelope(sourceREnvelope,
+ targetREnvelope.getCoordinateReferenceSystem());
com.vividsolutions.jts.geom.Envelope intersection = sourceREnvelope
.intersection(targetREnvelope);
if (intersection == null) {
diff --git a/edexOsgi/com.raytheon.uf.common.ohd/utility/common_static/base/hydro/Apps_defaults b/edexOsgi/com.raytheon.uf.common.ohd/utility/common_static/base/hydro/Apps_defaults
index d3908a8b55..d26831c84d 100644
--- a/edexOsgi/com.raytheon.uf.common.ohd/utility/common_static/base/hydro/Apps_defaults
+++ b/edexOsgi/com.raytheon.uf.common.ohd/utility/common_static/base/hydro/Apps_defaults
@@ -125,6 +125,7 @@
#
#10/01/09 - Added 5 tokens for arcnav application. //only for arcnav for raxum application
#10/03/12 - Added token section for script execution
+#02/18/14 - Added section for run_report_alarm service configuration.
# ==============================================================================
@@ -179,6 +180,42 @@ MpeRUCFreezingLevel : ON
MpeLightningSrv : ON
#====================================================================================
+#===================== run_report_alarm Configuration ===============================
+# These settings modify behavior of the EDEX RunReportAlarmSrv service, which
+# replaced the original run_report_alarm script ported from A1 hydro.
+#
+## Mandatory Arguments:
+## alarm_product_id : The product id that will be used to write the alarm
+## report product into the textdb.
+##
+## Optional Arguments:
+## alarm_file_suffix : A Java date/time format string that will be used as
+## the alarm report's file extension when the product is
+## written to disk. Product file path is
+## ${whfs_product_dir}/PRODUCT_ID.FILE_SUFFIX.
+##
+## alarm_report_mode : Report mode. Valid values are one of the following:
+## ALL, FRESH, RECENT, UNREPORTED, NEAREST, NEAR_NOW,
+## LATEST_MAXFCST, or NEW_OR_INCREASED.
+##
+## alarm_filter : Additional filtering options for the product.
+## Valid values can one or many of the following:
+## 'O', 'F', 'T', 'M', 'R', 'L', 'U', 'D'.
+##
+## alarm_pe_filter : Physical element filter.
+##
+## alarm_minutes : For certain report modes, creates a window going back
+## or forward the specified number of minutes.
+## Valid values are 1 - 999999.
+##
+## alarm_verbose : Whether or not to create a "verbose mode" report.
+## Valid values are TRUE or FALSE.
+##
+
+alarm_product_id : CCCACRXXX
+alarm_file_suffix : MMdd.HHmm
+alarm_report_mode : NEAREST
+
# ==============================================================================
# Executable directory tokens.
@@ -204,7 +241,7 @@ server_name : ONLINE # Informix database server name
db_name : hd_ob92lwx # IHFS database name
damcat_db_name : dc_ob5xxx # Dam Catalog database name
hdb_db_name : ob81_histdata # Historical database.
-pghost : localhost # The machine PostGres is running on
+pghost : dx1f # The machine PostGres is running on
pguser : awips # The user allowed to access PostGres
pgport : 5432 # The PostGres Server port
adb_name : adb_ob7xxx # RFC archive database name
@@ -1843,7 +1880,11 @@ dhm_d2d_notify_bin_dir : /awips/fxa/bin # d2d notify bin dir
rdhm_input_dir : $(geo_data)
dhm_rain_plus_melt_data_dir: $(geo_data)
# ================== end of SSHP Directory Structure tokens ========================
-
+# nrldb tokens
+nrldb_log : $(whfs_log_dir)/nrldb
+nrldb_data : $(whfs_local_data_dir)/nrldb
+nrldb_config : $(whfs_config_dir)/nrldb
+nrldb_tmp : /awips/hydroapps/whfs/local/data/output
# The syntax needed in the file is:
#
diff --git a/edexOsgi/com.raytheon.uf.common.topo/src/com/raytheon/uf/common/topo/TopoQuery.java b/edexOsgi/com.raytheon.uf.common.topo/src/com/raytheon/uf/common/topo/TopoQuery.java
index ba67260fde..bb2463d5fd 100644
--- a/edexOsgi/com.raytheon.uf.common.topo/src/com/raytheon/uf/common/topo/TopoQuery.java
+++ b/edexOsgi/com.raytheon.uf.common.topo/src/com/raytheon/uf/common/topo/TopoQuery.java
@@ -88,6 +88,8 @@ import com.vividsolutions.jts.geom.Coordinate;
* Feb 15, 2013 1638 mschenke Moved from edex.topo project (not edex
* specific)
* Aug 06, 2013 2235 bsteffen Added Caching version of TopoQuery.
+ * Feb 10, 2014 2788 randerso Removed override of CRS from Topo file.
+ * Fixed handling of fill values (missing data)
*
*
*
@@ -198,10 +200,6 @@ public class TopoQuery {
CoordinateReferenceSystem crs = CRSCache.getInstance()
.getCoordinateReferenceSystem(crsString);
- crs = MapUtil.constructEquidistantCylindrical(
- MapUtil.AWIPS_EARTH_RADIUS, MapUtil.AWIPS_EARTH_RADIUS, 0,
- 0);
-
double[] input = new double[] { ulLon, ulLat, lrLon, lrLat };
double[] output = new double[4];
@@ -288,6 +286,7 @@ public class TopoQuery {
public double[] getHeight(Coordinate[] coords) {
final int size = coords.length;
double[] topo = new double[size];
+ Arrays.fill(topo, Double.NaN);
double[] input = new double[size * 2];
double[] output = new double[input.length];
@@ -310,15 +309,18 @@ public class TopoQuery {
Request request = Request.buildPointRequest(points);
ShortDataRecord record = (ShortDataRecord) dataStore.retrieve("/",
"full", request);
+ short fillValue = record.getFillValue().shortValue();
short[] data = record.getShortData();
// bounds checking?
for (int i = 0; i < size; i++) {
- topo[i] = data[i];
+ short value = data[i];
+ if (value != fillValue) {
+ topo[i] = value;
+ }
}
} catch (Exception e) {
statusHandler.handle(Priority.PROBLEM,
"Error retriving topo value for lat/lons", e);
- Arrays.fill(topo, Double.NaN);
}
return topo;
@@ -367,8 +369,9 @@ public class TopoQuery {
if (first) {
first = false;
- } else if (Math.abs(p1.getOrdinate(0) - prev) > 180.0
- || (Math.abs(p1.getOrdinate(0)) > 180 && Math.abs(prev) < 180)) {
+ } else if ((Math.abs(p1.getOrdinate(0) - prev) > 180.0)
+ || ((Math.abs(p1.getOrdinate(0)) > 180) && (Math
+ .abs(prev) < 180))) {
crossedDLHoriz = true;
}
prev = p1.getOrdinate(0);
@@ -424,8 +427,9 @@ public class TopoQuery {
if (first) {
first = false;
- } else if (Math.abs(p1.getOrdinate(0) - prev) > 180.0
- || (Math.abs(p1.getOrdinate(0)) > 180 && Math.abs(prev) < 180)) {
+ } else if ((Math.abs(p1.getOrdinate(0) - prev) > 180.0)
+ || ((Math.abs(p1.getOrdinate(0)) > 180) && (Math
+ .abs(prev) < 180))) {
crossedDLVert = true;
}
prev = p1.getOrdinate(0);
@@ -541,7 +545,7 @@ public class TopoQuery {
worldRect.getMaxY() };
double[] crsCorners = new double[worldCorners.length];
GeneralEnvelope env = new GeneralEnvelope(2);
- if (worldCorners[2] > worldGeomPM.getGridRange().getHigh(0) + 1) {
+ if (worldCorners[2] > (worldGeomPM.getGridRange().getHigh(0) + 1)) {
worldGeomDL.getGridToCRS(PixelInCell.CELL_CORNER)
.transform(worldCorners, 0, crsCorners, 0,
worldCorners.length / 2);
@@ -643,7 +647,7 @@ public class TopoQuery {
}
// if grid is too big to load into memory
- if (width * height > TOPO_LIMIT) {
+ if ((width * height) > TOPO_LIMIT) {
// try the next interpolation level if it exists
int level = topoLevel + 1;
if (level < numLevels) {
@@ -675,15 +679,18 @@ public class TopoQuery {
y + intersection.height });
rec = (ShortDataRecord) dataStore.retrieve("", dataset,
request);
+ short fillValue = rec.getFillValue().shortValue();
- int xOffset = intersection.x - worldRect.x + rectOffset;
+ int xOffset = (intersection.x - worldRect.x) + rectOffset;
int yOffset = intersection.y - worldRect.y;
int recOffset = 0;
for (int j = 0; j < intersection.height; j++) {
for (int i = 0; i < intersection.width; i++) {
- topoValues[j + yOffset][i + xOffset] = rec
- .getShortData()[i + recOffset];
+ short value = rec.getShortData()[i + recOffset];
+ if (value != fillValue) {
+ topoValues[j + yOffset][i + xOffset] = value;
+ }
}
recOffset += intersection.width;
// someData = true;
@@ -697,10 +704,6 @@ public class TopoQuery {
rectOffset += worldRect.width;
}
- // if (!someData) {
- // throw new EdexException("No topo data available");
- // }
-
Envelope env = computeEnv(new Rectangle(rectangles[0].x,
rectangles[0].y, width, height));
@@ -789,8 +792,10 @@ public class TopoQuery {
int sx = (int) Math.round(coord[0]);
int sy = (int) Math.round(coord[1]);
- if (sx >= 0 && sx < sourceWidth && sy >= 0 && sy < sourceHeight)
- output[y * targetWidth + x] = sourceData[sy][sx];
+ if ((sx >= 0) && (sx < sourceWidth) && (sy >= 0)
+ && (sy < sourceHeight)) {
+ output[(y * targetWidth) + x] = sourceData[sy][sx];
+ }
}
}
@@ -812,9 +817,9 @@ public class TopoQuery {
MathTransform mt = null;
for (MathTransform mti : transforms) {
- if (mt == null)
+ if (mt == null) {
mt = mti;
- else {
+ } else {
mt = mtFactory.createConcatenatedTransform(mt, mti);
}
}
diff --git a/edexOsgi/com.raytheon.uf.common.topo/src/com/raytheon/uf/common/topo/TopoUtils.java b/edexOsgi/com.raytheon.uf.common.topo/src/com/raytheon/uf/common/topo/TopoUtils.java
index 98a51d978b..696016ea35 100644
--- a/edexOsgi/com.raytheon.uf.common.topo/src/com/raytheon/uf/common/topo/TopoUtils.java
+++ b/edexOsgi/com.raytheon.uf.common.topo/src/com/raytheon/uf/common/topo/TopoUtils.java
@@ -50,7 +50,8 @@ import com.raytheon.uf.common.geospatial.CRSCache;
*
* Date Ticket# Engineer Description
* ------------ ---------- ----------- --------------------------
- * Aug 2, 2013 bsteffen Initial creation
+ * Aug 2, 2013 bsteffen Initial creation
+ * Feb 10, 2014 #2788 randerso Changed default topo file name
*
*
*
@@ -60,7 +61,9 @@ import com.raytheon.uf.common.geospatial.CRSCache;
public class TopoUtils {
- private static final String DEFAULT_TOPO_PATH = "/topo/srtm30.hdf";
+ // NOTE: this file is actually a symbolic link to the desired topo data file
+ // allowing the topo data set to be changed without updating Java code
+ private static final String DEFAULT_TOPO_PATH = "/topo/defaultTopo.h5";
private static final String FULL_TOPO_DATASET = "/full";
diff --git a/edexOsgi/com.raytheon.uf.common.topo/utility/common_static/base/styleRules/topoImageryStyleRules.xml b/edexOsgi/com.raytheon.uf.common.topo/utility/common_static/base/styleRules/topoImageryStyleRules.xml
index bb6cd39900..46bdf4e5e7 100644
--- a/edexOsgi/com.raytheon.uf.common.topo/utility/common_static/base/styleRules/topoImageryStyleRules.xml
+++ b/edexOsgi/com.raytheon.uf.common.topo/utility/common_static/base/styleRules/topoImageryStyleRules.xml
@@ -21,7 +21,7 @@
- srtm30.hdf
+ defaultTopo.h5
kft
diff --git a/edexOsgi/com.raytheon.uf.common.util/src/com/raytheon/uf/common/util/ClusterIdUtil.java b/edexOsgi/com.raytheon.uf.common.util/src/com/raytheon/uf/common/util/ClusterIdUtil.java
new file mode 100644
index 0000000000..e139593c9e
--- /dev/null
+++ b/edexOsgi/com.raytheon.uf.common.util/src/com/raytheon/uf/common/util/ClusterIdUtil.java
@@ -0,0 +1,85 @@
+/**
+ * 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.uf.common.util;
+
+import java.net.InetAddress;
+import java.net.UnknownHostException;
+
+
+/**
+ * Utility class that returns the Cluster Id name from the environment or parsed
+ * from the host name.
+ *
+ *
+ *
+ * SOFTWARE HISTORY
+ *
+ * Date Ticket# Engineer Description
+ * ------------ ---------- ----------- --------------------------
+ * Feb 13, 2014 2771 bgonzale Initial creation
+ *
+ *
+ *
+ * @author bgonzale
+ * @version 1.0
+ */
+
+public class ClusterIdUtil {
+
+ private static final String ENV_VAR_NAME = "CLUSTER_ID";
+
+ /**
+ * Return the data delivery for this instance of Data Delivery.
+ *
+ * @return Data Delivery identification.
+ */
+ public static String getId() {
+ String id = System.getenv(ENV_VAR_NAME);
+
+ if (id == null || id.trim().length() == 0) {
+ try {
+ id = parseClusterNameFromHostname(InetAddress.getLocalHost()
+ .getHostName());
+ } catch (UnknownHostException e) {
+ // no data delivery id set, and unable to parse from host.
+ throw new RuntimeException("No " + ENV_VAR_NAME
+ + " set in the environment and unable "
+ + "to determine the name from hostname.", e);
+ }
+ }
+ return id;
+ }
+
+ static String parseClusterNameFromHostname(String hostname) {
+ /*
+ * Host names in the format of blah.company.com or dx1-blah.company.com
+ * or dx1-blah where the blah is the name desired.
+ */
+ int firstDotIndex = hostname.indexOf('.');
+ int endIndex = firstDotIndex == -1 ? hostname.length() : firstDotIndex;
+ int firstHyphenIndex = hostname.indexOf('-');
+ int startIndex = firstHyphenIndex == -1 ? 0 : firstHyphenIndex + 1;
+ // catch cases where a hyphen may be in the company.com part of the
+ // address and not in the blah part
+ startIndex = startIndex > endIndex ? 0 : startIndex;
+ return hostname.substring(startIndex, endIndex);
+ }
+
+}
diff --git a/edexOsgi/com.raytheon.uf.edex.archive/src/com/raytheon/uf/edex/archive/DatabaseArchiveProcessor.java b/edexOsgi/com.raytheon.uf.edex.archive/src/com/raytheon/uf/edex/archive/DatabaseArchiveProcessor.java
index 4bbb77c4d1..8c81d43e9c 100644
--- a/edexOsgi/com.raytheon.uf.edex.archive/src/com/raytheon/uf/edex/archive/DatabaseArchiveProcessor.java
+++ b/edexOsgi/com.raytheon.uf.edex.archive/src/com/raytheon/uf/edex/archive/DatabaseArchiveProcessor.java
@@ -74,15 +74,17 @@ import com.raytheon.uf.edex.database.processor.IDatabaseProcessor;
*
* Date Ticket# Engineer Description
* ------------ ---------- ----------- --------------------------
- * Dec 10, 2013 2555 rjpeter Initial creation
- *
+ * Dec 10, 2013 2555 rjpeter Initial creation.
+ * Jan 23, 2014 2555 rjpeter Updated to be a row at a time using ScrollableResults.
+ * Feb 04, 2014 2770 rferrel The dumpPdos now dumps all PluginDataObjects.
*
*
* @author rjpeter
* @version 1.0
*/
-public class DatabaseArchiveProcessor implements IDatabaseProcessor {
+public class DatabaseArchiveProcessor>
+ implements IDatabaseProcessor {
private static final transient IUFStatusHandler statusHandler = UFStatus
.getHandler(DatabaseArchiveProcessor.class);
@@ -110,9 +112,11 @@ public class DatabaseArchiveProcessor implements IDatabaseProcessor {
protected int fetchSize = 1000;
+ protected int entriesInMemory = 0;
+
protected Set datastoreFilesToArchive = new HashSet();
- protected Set filesCreatedThisSession = new HashSet();
+ protected Map filesCreatedThisSession = new HashMap();
protected Set dirsToCheckNumbering = new HashSet();
@@ -120,6 +124,8 @@ public class DatabaseArchiveProcessor implements IDatabaseProcessor {
protected boolean failed = false;
+ protected Map>> pdosByFile;
+
public DatabaseArchiveProcessor(String archivePath, String pluginName,
PluginDao dao, IPluginArchiveFileNameFormatter nameFormatter) {
this.archivePath = archivePath;
@@ -136,46 +142,43 @@ public class DatabaseArchiveProcessor implements IDatabaseProcessor {
* .util.List)
*/
@Override
- public boolean process(List> objects) {
- if ((objects != null) && !objects.isEmpty()) {
- Set datastoreFiles = new HashSet();
- statusHandler.info(pluginName + ": Processing rows " + recordsSaved
- + " to " + (recordsSaved + objects.size()));
-
- @SuppressWarnings("unchecked")
- List> pdos = (List>) objects;
- Map>> pdosByFile = new HashMap>>();
- for (PersistableDataObject> pdo : pdos) {
- String path = nameFormatter.getFilename(pluginName, dao, pdo);
- if (path.endsWith(".h5")) {
- datastoreFiles.add(path);
- path = path.substring(0, path.length() - 3);
- }
-
- List> list = pdosByFile.get(path);
- if (list == null) {
- list = new LinkedList>();
- pdosByFile.put(path, list);
- }
-
- list.add(pdo);
+ public boolean process(T object) {
+ if (object != null) {
+ if (pdosByFile == null) {
+ pdosByFile = new HashMap>>(
+ (int) (fetchSize * 1.3));
}
- if (statusHandler.isPriorityEnabled(Priority.DEBUG)) {
- statusHandler.debug(pluginName + ": Processed "
- + objects.size() + " rows into " + pdosByFile.size()
- + " files");
+ String path = nameFormatter.getFilename(pluginName, dao, object);
+ if (path.endsWith(".h5")) {
+ datastoreFilesToArchive.add(path);
+ path = path.substring(0, path.length() - 3);
}
- try {
- savePdoMap(pdosByFile);
- datastoreFilesToArchive.addAll(datastoreFiles);
- recordsSaved += pdos.size();
- } catch (Exception e) {
- statusHandler.error(pluginName
- + ": Error occurred saving data to archive", e);
- failed = true;
- return false;
+ List> list = pdosByFile.get(path);
+ if (list == null) {
+ list = new LinkedList>();
+ pdosByFile.put(path, list);
+ }
+
+ list.add(object);
+
+ entriesInMemory++;
+ if (entriesInMemory >= fetchSize) {
+ try {
+ savePdoMap(pdosByFile);
+ pdosByFile.clear();
+ int prev = recordsSaved;
+ recordsSaved += entriesInMemory;
+ entriesInMemory = 0;
+ statusHandler.info(pluginName + ": Processed rows " + prev
+ + " to " + recordsSaved);
+ } catch (Exception e) {
+ statusHandler.error(pluginName
+ + ": Error occurred saving data to archive", e);
+ failed = true;
+ return false;
+ }
}
}
@@ -188,6 +191,20 @@ public class DatabaseArchiveProcessor implements IDatabaseProcessor {
*/
@Override
public void finish() {
+ if (entriesInMemory > 0) {
+ try {
+ savePdoMap(pdosByFile);
+ int prev = recordsSaved;
+ recordsSaved += entriesInMemory;
+ statusHandler.info(pluginName + ": Processed rows " + prev
+ + " to " + recordsSaved);
+ } catch (Exception e) {
+ statusHandler.error(pluginName
+ + ": Error occurred saving data to archive", e);
+ failed = true;
+ }
+ }
+
for (File dir : dirsToCheckNumbering) {
checkFileNumbering(dir);
}
@@ -370,7 +387,10 @@ public class DatabaseArchiveProcessor implements IDatabaseProcessor {
+ fileCount);
fileMap.put(fileCount, newFile);
writeDataToDisk(newFile, pdos);
- filesCreatedThisSession.add(newFile.getAbsolutePath());
+ FileStatus status = new FileStatus();
+ status.dupElimUntilIndex = 0;
+ status.fileFull = pdos.size() >= fetchSize;
+ filesCreatedThisSession.put(newFile.getAbsolutePath(), status);
// check if we have added another digit and should add a 0 to
// previous numbers
@@ -404,14 +424,15 @@ public class DatabaseArchiveProcessor implements IDatabaseProcessor {
Iterator fileIter = fileMap.values().iterator();
while (fileIter.hasNext()) {
File dataFile = fileIter.next();
+ int dupElimUntil = Integer.MAX_VALUE;
+ FileStatus prevFileStatus = filesCreatedThisSession
+ .get(dataFile.getAbsolutePath());
- if (filesCreatedThisSession
- .contains(dataFile.getAbsolutePath())) {
- statusHandler
- .debug(pluginName
- + ": Skipping dup check on data file created this session: "
- + dataFile.getName());
- continue;
+ if (prevFileStatus != null) {
+ dupElimUntil = prevFileStatus.dupElimUntilIndex;
+ if ((dupElimUntil <= 0) && prevFileStatus.fileFull) {
+ continue;
+ }
}
List> pdosFromDisk = readDataFromDisk(dataFile);
@@ -424,13 +445,17 @@ public class DatabaseArchiveProcessor implements IDatabaseProcessor {
.iterator();
boolean needsUpdate = false;
int dupsRemoved = 0;
- while (pdoIter.hasNext()) {
+ int index = 0;
+ while (pdoIter.hasNext() && (index < dupElimUntil)) {
PersistableDataObject> pdo = pdoIter.next();
+
if (identifierSet.contains(pdo.getIdentifier())) {
pdoIter.remove();
needsUpdate = true;
dupsRemoved++;
}
+
+ index++;
}
if (statusHandler.isPriorityEnabled(Priority.DEBUG)
@@ -443,6 +468,15 @@ public class DatabaseArchiveProcessor implements IDatabaseProcessor {
if (!fileIter.hasNext() && (pdosFromDisk.size() < fetchSize)) {
// last file, add more data to it
needsUpdate = true;
+
+ if (prevFileStatus == null) {
+ prevFileStatus = new FileStatus();
+ prevFileStatus.dupElimUntilIndex = pdosFromDisk.size();
+ prevFileStatus.fileFull = pdos.size() >= fetchSize;
+ filesCreatedThisSession.put(dataFile.getAbsolutePath(),
+ prevFileStatus);
+ }
+
int numToAdd = fetchSize - pdosFromDisk.size();
numToAdd = Math.min(numToAdd, pdos.size());
@@ -463,6 +497,9 @@ public class DatabaseArchiveProcessor implements IDatabaseProcessor {
if (needsUpdate) {
if (!pdosFromDisk.isEmpty()) {
writeDataToDisk(dataFile, pdosFromDisk);
+ if (prevFileStatus != null) {
+ prevFileStatus.fileFull = pdosFromDisk.size() >= fetchSize;
+ }
} else {
dirsToCheckNumbering.add(dataFile.getParentFile());
dataFile.delete();
@@ -629,8 +666,11 @@ public class DatabaseArchiveProcessor implements IDatabaseProcessor {
Iterator> pdoIter = pdos.iterator();
writer = new BufferedWriter(new FileWriter(dumpFile));
- statusHandler.info(String.format("%s: Dumping records to: %s",
- pluginName, dumpFile.getAbsolutePath()));
+
+ if (statusHandler.isPriorityEnabled(Priority.INFO)) {
+ statusHandler.info(String.format("%s: Dumping records to: %s",
+ pluginName, dumpFile.getAbsolutePath()));
+ }
while (pdoIter.hasNext()) {
PersistableDataObject> pdo = pdoIter.next();
@@ -640,9 +680,11 @@ public class DatabaseArchiveProcessor implements IDatabaseProcessor {
// otherwise was read from file and will be recorded in
// a previous entry
writer.write("" + pluginDataObject.getId() + ":");
- writer.write(pluginDataObject.getDataURI());
- writer.write("\n");
+ } else {
+ writer.write("-:");
}
+ writer.write(pluginDataObject.getDataURI());
+ writer.write("\n");
} else {
writer.write(pdo.getIdentifier().toString());
writer.write("\n");
@@ -736,4 +778,22 @@ public class DatabaseArchiveProcessor implements IDatabaseProcessor {
}
}
}
+
+ /**
+ * Inner class for tracking status of files that have been written out this
+ * session.
+ */
+ private static class FileStatus {
+ /**
+ * Apply dup elim logic until this index is reached.
+ */
+ private int dupElimUntilIndex;
+
+ /**
+ * Way of tracking if file is considered full. Tracked so that if the
+ * file doesn't need to be dup elim'd due to being written this session
+ * and the file is full then there is no reason to deserialize it.
+ */
+ private boolean fileFull;
+ }
}
diff --git a/edexOsgi/com.raytheon.uf.edex.database/src/com/raytheon/uf/edex/database/dao/CoreDao.java b/edexOsgi/com.raytheon.uf.edex.database/src/com/raytheon/uf/edex/database/dao/CoreDao.java
index c4bf5da325..9318c58209 100644
--- a/edexOsgi/com.raytheon.uf.edex.database/src/com/raytheon/uf/edex/database/dao/CoreDao.java
+++ b/edexOsgi/com.raytheon.uf.edex.database/src/com/raytheon/uf/edex/database/dao/CoreDao.java
@@ -43,6 +43,8 @@ import net.sf.ehcache.management.ManagementService;
import org.hibernate.Criteria;
import org.hibernate.Query;
+import org.hibernate.ScrollMode;
+import org.hibernate.ScrollableResults;
import org.hibernate.Session;
import org.hibernate.Transaction;
import org.hibernate.criterion.Criterion;
@@ -95,10 +97,9 @@ import com.raytheon.uf.edex.database.query.DatabaseQuery;
* 5/14/08 1076 brockwoo Fix for distinct with multiple properties
* Oct 10, 2012 1261 djohnson Incorporate changes to DaoConfig, add generic to {@link IPersistableDataObject}.
* Apr 15, 2013 1868 bsteffen Rewrite mergeAll in PluginDao.
- *
* Nov 08, 2013 2361 njensen Changed method signature of saveOrUpdate to take Objects, not PersistableDataObjects
* Dec 13, 2013 2555 rjpeter Added processByCriteria and fixed Generics warnings.
- *
+ * Jan 23, 2014 2555 rjpeter Updated processByCriteriato be a row at a time using ScrollableResults.
*
*
* @author bphillip
@@ -460,8 +461,9 @@ public class CoreDao extends HibernateDaoSupport {
* @throws DataAccessLayerException
* If the query fails
*/
- public int processByCriteria(final DatabaseQuery query,
- final IDatabaseProcessor processor) throws DataAccessLayerException {
+ public int processByCriteria(final DatabaseQuery query,
+ final IDatabaseProcessor processor)
+ throws DataAccessLayerException {
int rowsProcessed = 0;
try {
// Get a session and create a new criteria instance
@@ -480,24 +482,29 @@ public class CoreDao extends HibernateDaoSupport {
"Error populating query", e);
}
- if (processor.getBatchSize() > 0) {
- hibQuery.setMaxResults(processor.getBatchSize());
- } else if (query.getMaxResults() != null) {
- hibQuery.setMaxResults(query.getMaxResults());
+ int batchSize = processor.getBatchSize();
+ if (batchSize <= 0) {
+ batchSize = 1000;
}
- List> results = null;
- boolean continueProcessing = false;
- int count = 0;
+ hibQuery.setFetchSize(processor.getBatchSize());
- do {
- hibQuery.setFirstResult(count);
- results = hibQuery.list();
- continueProcessing = processor.process(results);
- count += results.size();
+ int count = 0;
+ ScrollableResults rs = hibQuery
+ .scroll(ScrollMode.FORWARD_ONLY);
+ boolean continueProcessing = true;
+
+ while (rs.next() && continueProcessing) {
+ Object[] row = rs.get();
+ if (row.length > 0) {
+ continueProcessing = processor
+ .process((T) row[0]);
+ }
+ count++;
+ if ((count % batchSize) == 0) {
getSession().clear();
- } while (continueProcessing && (results != null)
- && (results.size() > 0));
+ }
+ }
processor.finish();
return count;
}
diff --git a/edexOsgi/com.raytheon.uf.edex.database/src/com/raytheon/uf/edex/database/processor/IDatabaseProcessor.java b/edexOsgi/com.raytheon.uf.edex.database/src/com/raytheon/uf/edex/database/processor/IDatabaseProcessor.java
index 9fd67b00cc..0a3a4e7e73 100644
--- a/edexOsgi/com.raytheon.uf.edex.database/src/com/raytheon/uf/edex/database/processor/IDatabaseProcessor.java
+++ b/edexOsgi/com.raytheon.uf.edex.database/src/com/raytheon/uf/edex/database/processor/IDatabaseProcessor.java
@@ -19,12 +19,9 @@
**/
package com.raytheon.uf.edex.database.processor;
-import java.util.List;
-
/**
* Interface for working with a batched set of results inside a database
- * session. Process can be called multiple times based on the batchSize of the
- * processor.
+ * session. Process will be called for each row.
*
*
*
@@ -32,21 +29,22 @@ import java.util.List;
*
* Date Ticket# Engineer Description
* ------------ ---------- ----------- --------------------------
- * Dec 9, 2013 2555 rjpeter Initial creation
+ * Dec 9, 2013 2555 rjpeter Initial creation.
+ * Jan 23, 2014 2555 rjpeter Updated to be a row at a time using ScrollableResults.
*
*
* @author rjpeter
* @version 1.0
*/
-public interface IDatabaseProcessor {
+public interface IDatabaseProcessor {
/**
- * Perform any processing on this batch of objects.
+ * Perform any processing on this row.
*
- * @param objects
+ * @param row
* @return True if should continue processing, false otherwise.
*/
- public boolean process(List> objects);
+ public boolean process(T row);
/**
* Perform any post processing if necessary.
diff --git a/edexOsgi/com.raytheon.uf.edex.datadelivery.bandwidth.ncf/META-INF/MANIFEST.MF b/edexOsgi/com.raytheon.uf.edex.datadelivery.bandwidth.ncf/META-INF/MANIFEST.MF
index f1e04cccf9..c574d10d32 100644
--- a/edexOsgi/com.raytheon.uf.edex.datadelivery.bandwidth.ncf/META-INF/MANIFEST.MF
+++ b/edexOsgi/com.raytheon.uf.edex.datadelivery.bandwidth.ncf/META-INF/MANIFEST.MF
@@ -19,4 +19,5 @@ Require-Bundle: com.raytheon.uf.common.datadelivery.bandwidth;bundle-version="1.
com.raytheon.uf.common.registry.ebxml;bundle-version="1.0.0",
com.raytheon.uf.common.datadelivery.service;bundle-version="1.0.0"
Import-Package: com.raytheon.edex.site,
- com.raytheon.uf.common.event
+ com.raytheon.uf.common.event,
+ com.raytheon.uf.edex.datadelivery.util
diff --git a/edexOsgi/com.raytheon.uf.edex.datadelivery.bandwidth.ncf/res/spring/bandwidth-datadelivery-edex-impl-monolithic.xml b/edexOsgi/com.raytheon.uf.edex.datadelivery.bandwidth.ncf/res/spring/bandwidth-datadelivery-edex-impl-monolithic.xml
index 3558bc5adc..a6e3c69731 100644
--- a/edexOsgi/com.raytheon.uf.edex.datadelivery.bandwidth.ncf/res/spring/bandwidth-datadelivery-edex-impl-monolithic.xml
+++ b/edexOsgi/com.raytheon.uf.edex.datadelivery.bandwidth.ncf/res/spring/bandwidth-datadelivery-edex-impl-monolithic.xml
@@ -11,15 +11,15 @@
SBN
+
+
+
+
+
-
-
-
-
-
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
\ No newline at end of file
diff --git a/edexOsgi/com.raytheon.uf.edex.datadelivery.bandwidth.ncf/res/spring/bandwidth-datadelivery-edex-impl-ncf.xml b/edexOsgi/com.raytheon.uf.edex.datadelivery.bandwidth.ncf/res/spring/bandwidth-datadelivery-edex-impl-ncf.xml
index ffd26a10ef..197d631d48 100644
--- a/edexOsgi/com.raytheon.uf.edex.datadelivery.bandwidth.ncf/res/spring/bandwidth-datadelivery-edex-impl-ncf.xml
+++ b/edexOsgi/com.raytheon.uf.edex.datadelivery.bandwidth.ncf/res/spring/bandwidth-datadelivery-edex-impl-ncf.xml
@@ -26,19 +26,19 @@
+
+
+
+
+
SBN
-
-
-
-
-
-
+
-
-
-
-
-
-
+
\ No newline at end of file
diff --git a/edexOsgi/com.raytheon.uf.edex.datadelivery.bandwidth.ncf/src/com/raytheon/uf/edex/datadelivery/bandwidth/ncf/MonolithicBandwidthManagerCreator.java b/edexOsgi/com.raytheon.uf.edex.datadelivery.bandwidth.ncf/src/com/raytheon/uf/edex/datadelivery/bandwidth/ncf/MonolithicBandwidthManagerCreator.java
index d88467860f..ed144881a9 100644
--- a/edexOsgi/com.raytheon.uf.edex.datadelivery.bandwidth.ncf/src/com/raytheon/uf/edex/datadelivery/bandwidth/ncf/MonolithicBandwidthManagerCreator.java
+++ b/edexOsgi/com.raytheon.uf.edex.datadelivery.bandwidth.ncf/src/com/raytheon/uf/edex/datadelivery/bandwidth/ncf/MonolithicBandwidthManagerCreator.java
@@ -30,6 +30,7 @@ import com.raytheon.uf.edex.datadelivery.bandwidth.EdexBandwidthContextFactory.I
import com.raytheon.uf.edex.datadelivery.bandwidth.IBandwidthManager;
import com.raytheon.uf.edex.datadelivery.bandwidth.dao.IBandwidthDao;
import com.raytheon.uf.edex.datadelivery.bandwidth.dao.IBandwidthDbInit;
+import com.raytheon.uf.edex.datadelivery.bandwidth.hibernate.IFindSubscriptionsForScheduling;
import com.raytheon.uf.edex.datadelivery.bandwidth.retrieval.RetrievalManager;
import com.raytheon.uf.edex.datadelivery.bandwidth.util.BandwidthDaoUtil;
@@ -50,7 +51,8 @@ import com.raytheon.uf.edex.datadelivery.bandwidth.util.BandwidthDaoUtil;
* ------------ ---------- ----------- --------------------------
* Nov 13, 2013 2545 bgonzale Initial creation
* Dec 04, 2013 2566 bgonzale use bandwidthmanager method to retrieve spring files.
- * Jan 14, 2014 2692 dhladky AdhocSubscription handler
+ * Jan 14, 2014 2692 dhladky AdhocSubscription handler
+ * Jan 30, 2014 2636 mpduff Scheduling refactor.
*
*
*
@@ -78,16 +80,20 @@ public class MonolithicBandwidthManagerCreator bandwidthDao, RetrievalManager retrievalManager,
+ public MonolithicBandwidthManager(
+ IBandwidthDbInit dbInit,
+ IBandwidthDao bandwidthDao,
+ RetrievalManager retrievalManager,
BandwidthDaoUtil bandwidthDaoUtil,
IDataSetMetaDataHandler dataSetMetaDataHandler,
ISubscriptionHandler subscriptionHandler,
IAdhocSubscriptionHandler adhocSubscriptionHandler,
- ISubscriptionNotificationService subscriptionNotificationService) {
+ ISubscriptionNotificationService subscriptionNotificationService,
+ IFindSubscriptionsForScheduling findSubscriptionsStrategy) {
super(dbInit, bandwidthDao, retrievalManager, bandwidthDaoUtil,
- dataSetMetaDataHandler, subscriptionHandler, adhocSubscriptionHandler,
- subscriptionNotificationService);
+ dataSetMetaDataHandler, subscriptionHandler,
+ adhocSubscriptionHandler, subscriptionNotificationService,
+ findSubscriptionsStrategy);
}
@Override
@@ -107,11 +113,12 @@ public class MonolithicBandwidthManagerCreator
*
* @author djohnson
* @version 1.0
*/
-public class NcfBandwidthManagerCreator implements IEdexBandwidthManagerCreator {
+public class NcfBandwidthManagerCreator
+ implements IEdexBandwidthManagerCreator {
/**
* NCF {@link BandwidthManager} implementation.
*/
- static class NcfBandwidthManager extends EdexBandwidthManager {
+ static class NcfBandwidthManager
+ extends EdexBandwidthManager {
private static final String MODE_NAME = "centralRegistry";
@@ -89,16 +92,20 @@ public class NcfBandwidthManagerCreator impl
* @param retrievalManager
* @param bandwidthDaoUtil
*/
- public NcfBandwidthManager(IBandwidthDbInit dbInit,
- IBandwidthDao bandwidthDao, RetrievalManager retrievalManager,
+ public NcfBandwidthManager(
+ IBandwidthDbInit dbInit,
+ IBandwidthDao bandwidthDao,
+ RetrievalManager retrievalManager,
BandwidthDaoUtil bandwidthDaoUtil,
IDataSetMetaDataHandler dataSetMetaDataHandler,
ISubscriptionHandler subscriptionHandler,
IAdhocSubscriptionHandler adhocSubscriptionHandler,
- ISubscriptionNotificationService subscriptionNotificationService) {
+ ISubscriptionNotificationService subscriptionNotificationService,
+ IFindSubscriptionsForScheduling findSubscriptionsStrategy) {
super(dbInit, bandwidthDao, retrievalManager, bandwidthDaoUtil,
- dataSetMetaDataHandler, subscriptionHandler, adhocSubscriptionHandler,
- subscriptionNotificationService);
+ dataSetMetaDataHandler, subscriptionHandler,
+ adhocSubscriptionHandler, subscriptionNotificationService,
+ findSubscriptionsStrategy);
}
/**
@@ -140,7 +147,8 @@ public class NcfBandwidthManagerCreator impl
*/
@Override
protected Set scheduleSbnSubscriptions(
- List> subscriptions) throws SerializationException {
+ List> subscriptions)
+ throws SerializationException {
return scheduleSubscriptions(subscriptions);
}
}
@@ -155,10 +163,12 @@ public class NcfBandwidthManagerCreator impl
IDataSetMetaDataHandler dataSetMetaDataHandler,
ISubscriptionHandler subscriptionHandler,
IAdhocSubscriptionHandler adhocSubscriptionHandler,
- ISubscriptionNotificationService subscriptionNotificationService) {
+ ISubscriptionNotificationService subscriptionNotificationService,
+ IFindSubscriptionsForScheduling findSubscriptionsStrategy) {
return new NcfBandwidthManager(dbInit, bandwidthDao, retrievalManager,
- bandwidthDaoUtil, dataSetMetaDataHandler, subscriptionHandler, adhocSubscriptionHandler,
- subscriptionNotificationService);
+ bandwidthDaoUtil, dataSetMetaDataHandler, subscriptionHandler,
+ adhocSubscriptionHandler, subscriptionNotificationService,
+ findSubscriptionsStrategy);
}
}
diff --git a/edexOsgi/com.raytheon.uf.edex.datadelivery.bandwidth.ncf/src/com/raytheon/uf/edex/datadelivery/bandwidth/sbn/SbnSimulator.java b/edexOsgi/com.raytheon.uf.edex.datadelivery.bandwidth.ncf/src/com/raytheon/uf/edex/datadelivery/bandwidth/sbn/SbnSimulator.java
index 2d4980ef02..e0b1d8ca53 100644
--- a/edexOsgi/com.raytheon.uf.edex.datadelivery.bandwidth.ncf/src/com/raytheon/uf/edex/datadelivery/bandwidth/sbn/SbnSimulator.java
+++ b/edexOsgi/com.raytheon.uf.edex.datadelivery.bandwidth.ncf/src/com/raytheon/uf/edex/datadelivery/bandwidth/sbn/SbnSimulator.java
@@ -24,12 +24,12 @@ import java.io.IOException;
import java.util.List;
import com.google.common.annotations.VisibleForTesting;
-import com.raytheon.edex.site.SiteUtil;
import com.raytheon.uf.common.status.IUFStatusHandler;
import com.raytheon.uf.common.status.UFStatus;
import com.raytheon.uf.common.util.FileUtil;
import com.raytheon.uf.common.util.file.FilenameFilters;
import com.raytheon.uf.edex.core.EDEXUtil;
+import com.raytheon.uf.edex.datadelivery.util.DataDeliveryIdUtil;
/**
* The SBN simulator. Reads files from a configured directory, and then places
@@ -43,6 +43,7 @@ import com.raytheon.uf.edex.core.EDEXUtil;
* ------------ ---------- ----------- --------------------------
* Mar 14, 2013 1648 djohnson Initial creation
* Oct 18, 2013 2267 bgonzale Added distribution to and check in site specific directories.
+ * Feb 11, 2014 2771 bgonzale Use Data Delivery ID instead of Site.
* Feb 13, 2014 2828 bgonzale Add purge method.
*
*
@@ -102,7 +103,7 @@ public class SbnSimulator {
*/
public SbnSimulator() {
this(new File(System.getProperty("sbn.retrieval.transfer.directory")),
- new CopyFileToManualIngest(), SiteUtil.getSite());
+ new CopyFileToManualIngest(), DataDeliveryIdUtil.getId());
}
/**
diff --git a/edexOsgi/com.raytheon.uf.edex.datadelivery.bandwidth/META-INF/MANIFEST.MF b/edexOsgi/com.raytheon.uf.edex.datadelivery.bandwidth/META-INF/MANIFEST.MF
index 59f18f75dc..9d3f5605c9 100644
--- a/edexOsgi/com.raytheon.uf.edex.datadelivery.bandwidth/META-INF/MANIFEST.MF
+++ b/edexOsgi/com.raytheon.uf.edex.datadelivery.bandwidth/META-INF/MANIFEST.MF
@@ -37,12 +37,13 @@ Require-Bundle: com.raytheon.uf.common.status;bundle-version="1.12.1174",
org.quartz;bundle-version="1.8.6"
Export-Package: com.raytheon.uf.edex.datadelivery.bandwidth,
com.raytheon.uf.edex.datadelivery.bandwidth.dao,
+ com.raytheon.uf.edex.datadelivery.bandwidth.hibernate,
com.raytheon.uf.edex.datadelivery.bandwidth.interfaces,
com.raytheon.uf.edex.datadelivery.bandwidth.processing,
com.raytheon.uf.edex.datadelivery.bandwidth.registry,
com.raytheon.uf.edex.datadelivery.bandwidth.retrieval,
- com.raytheon.uf.edex.datadelivery.bandwidth.registry,
com.raytheon.uf.edex.datadelivery.bandwidth.util
Import-Package: com.raytheon.uf.common.datadelivery.event.retrieval,
com.raytheon.uf.common.datadelivery.registry,
- com.raytheon.uf.common.stats
+ com.raytheon.uf.common.stats,
+ com.raytheon.uf.edex.datadelivery.util
diff --git a/edexOsgi/com.raytheon.uf.edex.datadelivery.bandwidth/res/spring/bandwidth-datadelivery-edex-impl-wfo.xml b/edexOsgi/com.raytheon.uf.edex.datadelivery.bandwidth/res/spring/bandwidth-datadelivery-edex-impl-wfo.xml
index 44094ada6b..a714a13ed2 100644
--- a/edexOsgi/com.raytheon.uf.edex.datadelivery.bandwidth/res/spring/bandwidth-datadelivery-edex-impl-wfo.xml
+++ b/edexOsgi/com.raytheon.uf.edex.datadelivery.bandwidth/res/spring/bandwidth-datadelivery-edex-impl-wfo.xml
@@ -26,19 +26,19 @@
+
+
+
+
+
OPSNET
-
-
-
-
-
-
+
-
-
-
-
-
-
-
-
-
-
-
+
+
\ No newline at end of file
diff --git a/edexOsgi/com.raytheon.uf.edex.datadelivery.bandwidth/res/spring/bandwidth-datadelivery-edex-impl.xml b/edexOsgi/com.raytheon.uf.edex.datadelivery.bandwidth/res/spring/bandwidth-datadelivery-edex-impl.xml
index 97313a4dd5..e9d9b5d503 100644
--- a/edexOsgi/com.raytheon.uf.edex.datadelivery.bandwidth/res/spring/bandwidth-datadelivery-edex-impl.xml
+++ b/edexOsgi/com.raytheon.uf.edex.datadelivery.bandwidth/res/spring/bandwidth-datadelivery-edex-impl.xml
@@ -50,5 +50,6 @@
+
\ No newline at end of file
diff --git a/edexOsgi/com.raytheon.uf.edex.datadelivery.bandwidth/res/spring/bandwidth-datadelivery.xml b/edexOsgi/com.raytheon.uf.edex.datadelivery.bandwidth/res/spring/bandwidth-datadelivery.xml
index 96c2ae68b2..316759038f 100644
--- a/edexOsgi/com.raytheon.uf.edex.datadelivery.bandwidth/res/spring/bandwidth-datadelivery.xml
+++ b/edexOsgi/com.raytheon.uf.edex.datadelivery.bandwidth/res/spring/bandwidth-datadelivery.xml
@@ -29,9 +29,6 @@
-
-
@@ -43,7 +40,7 @@
-
+
*
@@ -125,11 +127,15 @@ class BandwidthGraphDataAdapter {
for (BandwidthAllocation allocation : allocationList) {
if (allocation instanceof SubscriptionRetrieval) {
- final SubscriptionRetrieval subRetrieval = (SubscriptionRetrieval) allocation;
- String subName = subRetrieval.getBandwidthSubscription()
- .getName();
- subAllocationMapping.addAllocationForSubscription(subName,
- allocation);
+ // Don't display fulfilled or cancelled allocations
+ if (allocation.getStatus() != RetrievalStatus.FULFILLED
+ && allocation.getStatus() != RetrievalStatus.CANCELLED) {
+ final SubscriptionRetrieval subRetrieval = (SubscriptionRetrieval) allocation;
+ String subName = subRetrieval
+ .getBandwidthSubscription().getName();
+ subAllocationMapping.addAllocationForSubscription(
+ subName, allocation);
+ }
}
}
}
diff --git a/edexOsgi/com.raytheon.uf.edex.datadelivery.bandwidth/src/com/raytheon/uf/edex/datadelivery/bandwidth/BandwidthManager.java b/edexOsgi/com.raytheon.uf.edex.datadelivery.bandwidth/src/com/raytheon/uf/edex/datadelivery/bandwidth/BandwidthManager.java
index 61b928db3a..4ddca51a63 100644
--- a/edexOsgi/com.raytheon.uf.edex.datadelivery.bandwidth/src/com/raytheon/uf/edex/datadelivery/bandwidth/BandwidthManager.java
+++ b/edexOsgi/com.raytheon.uf.edex.datadelivery.bandwidth/src/com/raytheon/uf/edex/datadelivery/bandwidth/BandwidthManager.java
@@ -80,6 +80,7 @@ import com.raytheon.uf.edex.datadelivery.bandwidth.retrieval.RetrievalPlan;
import com.raytheon.uf.edex.datadelivery.bandwidth.retrieval.RetrievalStatus;
import com.raytheon.uf.edex.datadelivery.bandwidth.util.BandwidthDaoUtil;
import com.raytheon.uf.edex.datadelivery.bandwidth.util.BandwidthUtil;
+import com.raytheon.uf.edex.datadelivery.util.DataDeliveryIdUtil;
import com.raytheon.uf.edex.registry.ebxml.exception.EbxmlRegistryException;
/**
@@ -128,7 +129,7 @@ import com.raytheon.uf.edex.registry.ebxml.exception.EbxmlRegistryException;
* adhoc subscription.
* Sep 25, 2013 1797 dhladky separated time from gridded time
* Oct 23, 2013 2385 bphillip Change schedule method to scheduleAdhoc
- * Oct 30, 2013 2448 dhladky Moved methods to TimeUtil.
+ * Oct 30, 2013 2448 dhladky Moved methods to TimeUtil.
* Nov 04, 2013 2506 bgonzale Added removeBandwidthSubscriptions method.
* Nov 19, 2013 2545 bgonzale changed getBandwidthGraphData to protected.
* Dec 04, 2013 2566 bgonzale added method to retrieve and parse spring files for a mode.
@@ -140,6 +141,12 @@ import com.raytheon.uf.edex.registry.ebxml.exception.EbxmlRegistryException;
* Jan 14, 2014 2459 mpduff Change to subscription status.
* Jan 25, 2014 2636 mpduff Don't do an initial adhoc query for a new subscription.
* Jan 24, 2013 2709 bgonzale Before scheduling adhoc, check if in active period window.
+ * Jan 29, 2014 2636 mpduff Scheduling refactor.
+ * Jan 30, 2014 2686 dhladky refactor of retrieval.
+ * Feb 06, 2014 2636 bgonzale fix overwrite of unscheduled subscription list. fix scheduling
+ * of already scheduled BandwidthAllocations.
+ * Feb 11, 2014 2771 bgonzale Added handler for GET_DATADELIVERY_ID request.
+ * Feb 10, 2014 2636 mpduff Changed how retrieval plan is updated over time.
*
*
*
@@ -263,13 +270,16 @@ public abstract class BandwidthManager
final int numberOfRetrievalTimes = retrievalTimes.size();
List newSubscriptions = Lists
.newArrayListWithCapacity(numberOfRetrievalTimes);
+ statusHandler.info("Scheduling subscription " + subscription.getName());
for (Calendar retrievalTime : retrievalTimes) {
- statusHandler.info("Scheduling subscription ["
- + subscription.getName()
- + String.format(
- "] retrievalTime [%1$tY%1$tm%1$td%1$tH%1$tM",
- retrievalTime) + "]");
+ if (statusHandler.isPriorityEnabled(Priority.DEBUG)) {
+ statusHandler.info("Scheduling subscription ["
+ + subscription.getName()
+ + String.format(
+ "] retrievalTime [%1$tY%1$tm%1$td%1$tH%1$tM",
+ retrievalTime) + "]");
+ }
// Add the current subscription to the ones BandwidthManager already
// knows about.
@@ -307,7 +317,7 @@ public abstract class BandwidthManager
statusHandler.info("Scheduling subscription ["
+ dao.getName()
+ String.format(
- "] baseReferenceTime [%1$tY%1$tm%1$td%1$tH%1$tM",
+ "] baseReferenceTime %1$tY%1$tm%1$td%1$tH%1$tM",
retrievalTime));
return aggregate(new BandwidthSubscriptionContainer(subscription,
@@ -329,24 +339,27 @@ public abstract class BandwidthManager
List retrievals = getAggregator().aggregate(
bandwidthSubscriptions);
timer.lap("aggregator");
+ if (CollectionUtil.isNullOrEmpty(retrievals)) {
+ return new ArrayList(0);
+ }
- // Create a separate list of BandwidthReservations to schedule
- // as the aggregation process may return all subsumed
- // SubscriptionRetrievals
- // for the specified Subscription.
+ /*
+ * Create a separate list of BandwidthReservations to schedule as the
+ * aggregation process may return all subsumedSubscriptionRetrievalsfor
+ * the specified Subscription.
+ */
List reservations = new ArrayList();
-
for (SubscriptionRetrieval retrieval : retrievals) {
-
- // New RetrievalRequests will be marked as "PROCESSING"
- // we need to make new BandwidthReservations for these
- // SubscriptionRetrievals.
-
- // TODO: How to process "rescheduled" RetrievalRequests
- // in the case where subscription aggregation has determined
- // that an existing subscription has now be subsumed or
- // altered to accommodate a new super set of subscriptions...
- //
+ /*
+ * New RetrievalRequests will be marked as "PROCESSING" we need to
+ * make new BandwidthReservations for these SubscriptionRetrievals.
+ */
+ /*
+ * TODO: How to process "rescheduled" RetrievalRequests in the case
+ * where subscription aggregation has determined that an existing
+ * subscription has now be subsumed or altered to accommodate a new
+ * super set of subscriptions...
+ */
if ((retrieval.getStatus().equals(RetrievalStatus.RESCHEDULE) || retrieval
.getStatus().equals(RetrievalStatus.PROCESSING))
&& !retrieval.isSubsumed()) {
@@ -355,23 +368,13 @@ public abstract class BandwidthManager
.getBandwidthSubscription();
Calendar retrievalTime = bandwidthSubscription
.getBaseReferenceTime();
- Calendar startTime = TimeUtil.newCalendar(retrievalTime);
+ Calendar startTime = TimeUtil.newGmtCalendar(retrievalTime
+ .getTime());
- int delayMinutes = retrieval.getDataSetAvailablityDelay();
int maxLatency = retrieval.getSubscriptionLatency();
-
- if (statusHandler.isPriorityEnabled(Priority.DEBUG)) {
- statusHandler.debug("Adding availability minutes of ["
- + delayMinutes
- + "] to retrieval start time of "
- + String.format("[%1$tY%1$tm%1$td%1$tH%1$tM]",
- retrievalTime));
- }
-
- startTime.add(Calendar.MINUTE, delayMinutes);
retrieval.setStartTime(startTime);
- Calendar endTime = TimeUtil.newCalendar();
+ Calendar endTime = TimeUtil.newGmtCalendar();
endTime.setTimeInMillis(startTime.getTimeInMillis());
if (statusHandler.isPriorityEnabled(Priority.DEBUG)) {
@@ -444,17 +447,9 @@ public abstract class BandwidthManager
return unscheduled;
}
- /**
- * {@inheritDoc}
- */
@Override
public List schedule(Subscription subscription) {
- // TODO: In 13.6.1 pull out all of the subscription stuff into a
- // separate plugin, BandwidthManager should not work with Subscription
- // objects directly, it should have extension plugins that can allocate
- // bandwidth in their own types (e.g. registry syncing should be able to
- // sync into the bandwidth management infrastructure if required)
- List unscheduled;
+ List unscheduled = null;
final DataType dataSetType = subscription.getDataSetType();
switch (dataSetType) {
@@ -475,6 +470,58 @@ public abstract class BandwidthManager