1 14 package org.jmanage.core.config; 15 16 import org.jmanage.core.util.CoreUtils; 17 import org.jmanage.core.util.Loggers; 18 import org.jdom.input.SAXBuilder; 19 import org.jdom.Document; 20 import org.jdom.JDOMException; 21 import org.jdom.Element; 22 23 import java.io.File ; 24 import java.util.logging.Level ; 25 import java.util.logging.Logger ; 26 import java.util.*; 27 28 34 public class ApplicationTypes { 35 36 private static final Logger logger = 37 Loggers.getLogger(ApplicationTypes.class); 38 39 private static final String CONFIG_FILE = CoreUtils.getConfigDir() + 40 File.separatorChar + "system" + 41 File.separatorChar + "application-type-config.xml"; 42 43 44 private static Map applications = new TreeMap(); 45 46 private static Map modules = new HashMap(); 47 48 public static void init(){ 49 try { 50 File configFile = new File (CONFIG_FILE); 51 Document config = new SAXBuilder().build(configFile); 52 init(config); 53 logger.info("ApplicationRegistry initialized from " + CONFIG_FILE); 54 } catch (JDOMException e) { 55 logger.log(Level.SEVERE, "Error reading config file " + 56 CONFIG_FILE); 57 throw new RuntimeException (e); 58 } 59 } 60 61 public static ApplicationType getApplicationType(String id){ 62 return (ApplicationType)applications.get(id); 63 } 64 65 public static Map getAll(){ 66 return applications; 67 } 68 69 private static ModuleConfig getModule(String id){ 70 final ModuleConfig config = (ModuleConfig)modules.get(id); 71 assert config != null: "Invalid module id: " + id; 72 return config; 73 } 74 75 private static void init(Document config){ 76 Element rootElement = config.getRootElement(); 77 78 List modules = rootElement.getChild("modules").getChildren(); 79 initModules(modules); 80 81 List applications = rootElement.getChild("application-types").getChildren(); 82 initApplications(applications); 83 } 84 85 private static void initModules(List modulesList){ 86 for(Iterator it= modulesList.iterator(); it.hasNext();){ 87 Element moduleElement = (Element)it.next(); 88 String id = moduleElement.getAttributeValue("id"); 89 String connectionFactory = 90 moduleElement.getAttributeValue("connectionFactory"); 91 Element configElement = moduleElement.getChild("config"); 92 String configClass = configElement.getAttributeValue("class"); 93 Boolean displayHost = 94 Boolean.valueOf(configElement.getAttributeValue("displayHost")); 95 Boolean displayPort = 96 Boolean.valueOf(configElement.getAttributeValue("displayPort")); 97 Boolean displayURL = 98 Boolean.valueOf(configElement.getAttributeValue("displayURL")); 99 Boolean displayUsername = 100 Boolean.valueOf(configElement.getAttributeValue("displayUsername")); 101 Boolean displayPassword = 102 Boolean.valueOf(configElement.getAttributeValue("displayPassword")); 103 MetaApplicationConfig metaConfig = new MetaApplicationConfig( 104 displayHost.booleanValue(), displayPort.booleanValue(), 105 displayURL.booleanValue(), displayUsername.booleanValue(), 106 displayPassword.booleanValue(), 107 configClass); 108 ModuleConfig moduleConfig = 109 new ModuleConfig(id, metaConfig, connectionFactory); 110 modules.put(id, moduleConfig); 111 } 112 } 113 114 private static void initApplications(List applicationList){ 115 for(Iterator it=applicationList.iterator(); it.hasNext(); ){ 116 Element appElement = (Element)it.next(); 117 String id = appElement.getAttributeValue("id"); 118 String name = appElement.getAttributeValue("name"); 119 String moduleId = appElement.getAttributeValue("module"); 120 Boolean compatibleJMX = 121 Boolean.valueOf(appElement.getAttributeValue("compatibleJMX")); 122 ModuleConfig module = getModule(moduleId); 123 if(!module.isAvailable()){ 124 logger.log(Level.WARNING, "Skipping application: " + id + 125 " as the module: " + moduleId + " is not available"); 126 continue; 127 } 128 ApplicationType application = new ApplicationType(id, name, module, 129 compatibleJMX.booleanValue(), 130 appElement.getAttributeValue("defaultHost"), 131 appElement.getAttributeValue("defaultPort"), 132 appElement.getAttributeValue("defaultURL")); 133 applications.put(id, application); 134 } 135 } 136 } 137 | Popular Tags |