1 14 package org.jmanage.core.alert; 15 16 import org.jmanage.core.config.AlertConfig; 17 import org.jmanage.core.config.AlertDeliveryConstants; 18 19 import java.util.*; 20 21 27 public class AlertDeliveryFactory { 28 29 private static Map typeToAlertDeliveryMap = new HashMap(); 30 31 static{ 32 List deliveryTypes = AlertSystemConfig.getInstance().getDeliveryTypes(); 33 for(Iterator it=deliveryTypes.iterator(); it.hasNext(); ){ 34 AlertSystemConfig.DeliveryType deliveryType = 35 (AlertSystemConfig.DeliveryType)it.next(); 36 typeToAlertDeliveryMap.put(deliveryType.getType(), 37 instantiate(deliveryType.getClassName())); 38 } 39 } 40 41 private static AlertDelivery instantiate(String className){ 42 try { 43 Class clazz = Class.forName(className); 44 return (AlertDelivery)clazz.newInstance(); 45 } catch (Exception e) { 46 throw new RuntimeException (e); 47 } 48 } 49 50 public static AlertDelivery getAlertDelivery(String deliveryType){ 51 52 AlertDelivery delivery = 53 (AlertDelivery)typeToAlertDeliveryMap.get(deliveryType); 54 if(delivery == null) { 55 throw new RuntimeException ("Invalid deliveryType=" + deliveryType); 56 } 57 return delivery; 58 } 59 60 public static List getAlertDeliveries(AlertConfig alertConfig) { 61 String [] deliveryTypes = alertConfig.getAlertDelivery(); 62 List deliveries = new ArrayList(deliveryTypes.length); 63 for(int i=0; i < deliveryTypes.length; i++){ 64 deliveries.add(getAlertDelivery(deliveryTypes[i])); 65 } 66 return deliveries; 67 } 68 } 69 | Popular Tags |