Merge "ASM #17092 - Add cronOTRs.xml to radar NDM files" into asm_14.4.1

Former-commit-id: 346fc7563a680155c286bcbbcdaea25ec12b30fc
This commit is contained in:
Juliya Dynina 2015-02-12 09:20:27 -05:00 committed by Gerrit Code Review
commit ea11991a31
4 changed files with 59 additions and 11 deletions

View file

@ -37,13 +37,16 @@ import com.raytheon.rcm.config.RadarConfig;
* 2009-04-22 #1693 D. Friedman Initial checkin
* ...
* 2014-02-03 DR 14762 D. Friedman Add Category enum
* 2015-02-11 DR 17092 D. Friedman Handle NDM cronOTRs.xml updates.
* </pre>
*
*/
@XmlRootElement
@XmlAccessorType(XmlAccessType.FIELD)
public class ConfigEvent {
public static enum Category { GLOBAL_CONFIG, RADAR_CONFIG, PROD_DISTRIBUTION, NATIONAL_RPS_LISTS }
public static enum Category {
GLOBAL_CONFIG, RADAR_CONFIG, PROD_DISTRIBUTION, NATIONAL_RPS_LISTS, CRON_OTRS
}
private String radarID; // null indicates global configuration change.
private RadarConfig oldConfig;

View file

@ -27,6 +27,7 @@ import org.quartz.impl.StdSchedulerFactory;
import com.raytheon.rcm.config.Configuration;
import com.raytheon.rcm.config.RadarConfig;
import com.raytheon.rcm.config.Util;
import com.raytheon.rcm.event.ConfigEvent;
import com.raytheon.rcm.event.OtrEvent;
import com.raytheon.rcm.event.RadarEventAdapter;
import com.raytheon.rcm.event.RadarEventListener;
@ -37,6 +38,19 @@ import com.raytheon.rcm.request.Request;
import com.raytheon.rcm.server.Log;
import com.raytheon.rcm.server.RadarServer;
/**
* Represents the standard configuration model of the AWIPS 2 RadarServer.
*
* <pre>
*
* SOFTWARE HISTORY
* Date Ticket# Engineer Description
* ------------ ---------- ----------- --------------------------
* ...
* 2015-02-11 DR 17092 D. Friedman Handle NDM cronOTRs.xml updates.
* </pre>
*
*/
public class RequestScheduler extends RadarEventAdapter {
// Quartz job detail properties
@ -46,8 +60,6 @@ public class RequestScheduler extends RadarEventAdapter {
private RadarServer radarServer;
private OTRManager otrManager;
private CronOTRConfiguration cronConfig;
private Scheduler scheduler;
private Random random = new Random();
@ -71,6 +83,18 @@ public class RequestScheduler extends RadarEventAdapter {
return;
}
loadConfiguration();
}
private synchronized void loadConfiguration() {
if (scheduler != null) {
try {
scheduler.shutdown();
} catch (SchedulerException e) {
Log.errorf("Error stopping cron-OTR scheduler: %s", e);
}
}
try {
scheduler = StdSchedulerFactory.getDefaultScheduler();
scheduler.start();
@ -80,6 +104,7 @@ public class RequestScheduler extends RadarEventAdapter {
}
if (scheduler != null) {
CronOTRConfiguration cronConfig = null;
InputStream ins = null;
try {
ins = radarServer.getConfiguration().getDropInData("cronOTRs.xml");
@ -112,7 +137,7 @@ public class RequestScheduler extends RadarEventAdapter {
try {
scheduler.scheduleJob(jd, trigger);
} catch (Exception e) {
Log.errorf("Error schedule cron \"%s\": %s",
Log.errorf("Error scheduling cron \"%s\": %s",
cronOTR.getCron(), e);
}
@ -180,6 +205,12 @@ public class RequestScheduler extends RadarEventAdapter {
runCron(cronOTR);
}
public void handleConfigEvent(ConfigEvent event) {
if (event.getCategory() == ConfigEvent.Category.CRON_OTRS) {
loadConfiguration();
}
}
/**
* This class declared public only so that it can be instantiated by
* Quartz.

View file

@ -40,6 +40,8 @@ import com.raytheon.rcm.config.LinkType;
import com.raytheon.rcm.config.RadarConfig;
import com.raytheon.rcm.config.StandardProductDistInfoDB;
import com.raytheon.rcm.config.awips1.Awips1ConfigProvider;
import com.raytheon.rcm.event.ConfigEvent;
import com.raytheon.rcm.event.RadarEventListener;
import com.raytheon.rcm.server.Log;
@ -54,6 +56,7 @@ import com.raytheon.rcm.server.Log;
* ------------ ---------- ----------- --------------------------
* ...
* 2014-02-03 DR 14762 D. Friedman Handle updated NDM config files.
* 2015-02-11 DR 17092 D. Friedman Handle NDM cronOTRs.xml updates.
* </pre>
*
*/
@ -62,6 +65,7 @@ public class StandardConfigProvider implements ConfigurationProvider {
private static String WSR_88D_PROD_LIST_NAME = "prodList.txt";
private static String TDWR__PROD_LIST_NAME = "tdwrProdList.txt";
private static String WMO_SITE_INFO_NAME = "wmoSiteInfo.txt";
private static String CRON_OTRS_NAME = "cronOTRs.xml";
private static JAXBContext jaxbContext;
private static Unmarshaller u;
@ -266,6 +270,12 @@ public class StandardConfigProvider implements ConfigurationProvider {
loadProdListDB();
} else if (WMO_SITE_INFO_NAME.equals(name)) {
updateRegionCode();
} else if (CRON_OTRS_NAME.equals(name)) {
RadarEventListener target = config.getConfigurationEventTarget();
if (target != null) {
ConfigEvent ev = new ConfigEvent(ConfigEvent.Category.CRON_OTRS);
target.handleConfigEvent(ev);
}
} else if (Pattern.matches("^rps-.*OP.*$", name)) {
config.notifyNationalRpsLists();
} else {

View file

@ -32,6 +32,10 @@
<constructor-arg value="wmoSiteInfo.txt" />
<constructor-arg ref="radarServerNdmListener" />
</bean>
<bean factory-bean="ndmProc" factory-method="registerListener">
<constructor-arg value="cronOTRs.xml" />
<constructor-arg ref="radarServerNdmListener" />
</bean>
<camelContext id="rpgenvdata-camel" xmlns="http://camel.apache.org/schema/spring" errorHandlerRef="errorHandler">