KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > jmanage > core > config > ApplicationTypes


1 /**
2 * Copyright (c) 2004-2005 jManage.org
3 *
4 * This is a free software; you can redistribute it and/or
5 * modify it under the terms of the license at
6 * http://www.jmanage.org.
7 *
8 * Unless required by applicable law or agreed to in writing, software
9 * distributed under the License is distributed on an "AS IS" BASIS,
10 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
11 * See the License for the specific language governing permissions and
12 * limitations under the License.
13 */

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 JavaDoc;
24 import java.util.logging.Level JavaDoc;
25 import java.util.logging.Logger JavaDoc;
26 import java.util.*;
27
28 /**
29  *
30  * <p>
31  * Date: Sep 25, 2005
32  * @author Rakesh Kalra
33  */

34 public class ApplicationTypes {
35
36     private static final Logger JavaDoc logger =
37             Loggers.getLogger(ApplicationTypes.class);
38
39     private static final String JavaDoc CONFIG_FILE = CoreUtils.getConfigDir() +
40             File.separatorChar + "system" +
41             File.separatorChar + "application-type-config.xml";
42
43     /* app type/id to ApplicationType mapping */
44     private static Map applications = new TreeMap();
45     /* module id to ModuleConfig mapping */
46     private static Map modules = new HashMap();
47
48     public static void init(){
49         try {
50             File JavaDoc configFile = new File JavaDoc(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 JavaDoc(e);
58         }
59     }
60
61     public static ApplicationType getApplicationType(String JavaDoc 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 JavaDoc 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         /* initialize modules */
78         List modules = rootElement.getChild("modules").getChildren();
79         initModules(modules);
80         /* initialize applications */
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 JavaDoc id = moduleElement.getAttributeValue("id");
89             String JavaDoc connectionFactory =
90                     moduleElement.getAttributeValue("connectionFactory");
91             Element configElement = moduleElement.getChild("config");
92             String JavaDoc configClass = configElement.getAttributeValue("class");
93             Boolean JavaDoc displayHost =
94                     Boolean.valueOf(configElement.getAttributeValue("displayHost"));
95             Boolean JavaDoc displayPort =
96                     Boolean.valueOf(configElement.getAttributeValue("displayPort"));
97             Boolean JavaDoc displayURL =
98                     Boolean.valueOf(configElement.getAttributeValue("displayURL"));
99             Boolean JavaDoc displayUsername =
100                     Boolean.valueOf(configElement.getAttributeValue("displayUsername"));
101             Boolean JavaDoc 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 JavaDoc id = appElement.getAttributeValue("id");
118             String JavaDoc name = appElement.getAttributeValue("name");
119             String JavaDoc moduleId = appElement.getAttributeValue("module");
120             Boolean JavaDoc 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