1 14 package org.jmanage.core.alert; 15 16 import org.jmanage.core.config.ApplicationConfigManager; 17 import org.jmanage.core.config.AlertConfig; 18 import org.jmanage.core.config.ApplicationConfig; 19 import org.jmanage.core.util.Loggers; 20 import org.jmanage.core.alert.delivery.EmailAlerts; 21 22 import java.util.List ; 23 import java.util.Iterator ; 24 import java.util.LinkedList ; 25 import java.util.Collections ; 26 import java.util.logging.Logger ; 27 28 33 public class AlertEngine { 34 35 private static final Logger logger = Loggers.getLogger(AlertEngine.class); 36 37 private static final AlertEngine alertEngine = new AlertEngine(); 38 39 public static AlertEngine getInstance(){ 40 return alertEngine; 41 } 42 43 private List alerts = Collections.synchronizedList(new LinkedList ()); 44 45 private AlertEngine(){} 46 47 public void start(){ 48 List alertConfigs = ApplicationConfigManager.getAllAlerts(); 49 for(Iterator it=alertConfigs.iterator(); it.hasNext();){ 50 AlertConfig alertConfig = (AlertConfig)it.next(); 51 Alert alert = new Alert(alertConfig); 52 alert.register(); 53 } 54 55 EmailAlerts.getInstance(); 56 57 logger.info("AlertEngine started."); 58 } 59 60 public void stop(){ 61 for(Iterator it=alerts.iterator(); it.hasNext(); ){ 62 Alert alert = (Alert)it.next(); 63 alert.unregister(); 64 } 65 alerts.clear(); 67 logger.info("AlertEngine stopped."); 68 } 69 70 public synchronized void updateAlertConfig(AlertConfig alertConfig) { 71 Alert alert = new Alert(alertConfig); 72 int index = alerts.indexOf(alert); 73 if(index != -1){ 74 Alert oldAlert = (Alert)alerts.remove(index); 76 oldAlert.unregister(); 77 } 78 alert.register(); 80 alerts.add(alert); 82 } 83 84 public synchronized void removeAlertConfig(AlertConfig alertConfig){ 85 Alert alert = new Alert(alertConfig); 86 int index = alerts.indexOf(alert); 87 if(index != -1){ 88 Alert oldAlert = (Alert)alerts.remove(index); 89 oldAlert.unregister(); 90 } 91 } 92 93 public synchronized void updateApplication(ApplicationConfig config){ 94 for(Iterator it=config.getAlerts().iterator(); it.hasNext(); ){ 95 AlertConfig alertConfig = (AlertConfig)it.next(); 96 updateAlertConfig(alertConfig); 97 } 98 } 99 100 public synchronized void removeApplication(ApplicationConfig config){ 101 for(Iterator it=config.getAlerts().iterator(); it.hasNext(); ){ 102 AlertConfig alertConfig = (AlertConfig)it.next(); 103 removeAlertConfig(alertConfig); 104 } 105 } 106 } 107 | Popular Tags |