1 package org.jerpa.component; 2 3 8 9 import org.w3c.dom.*; 10 import org.apache.xerces.parsers.*; 11 import org.jerpa.component.configuration.*; 12 import java.util.Vector ; 13 14 public class ComponentManager 15 { 16 Vector availableComponents = new Vector (); 17 Vector runningComponents = new Vector (); 18 19 public ComponentManager(Configuration config) 20 { 21 24 String confpath = System.getProperty("user.dir") + "/conf/jerpa.conf"; 25 DOMParser parser = new DOMParser(); 26 try 27 { 28 parser.parse(confpath); 29 Element root = parser.getDocument().getDocumentElement(); 30 NodeList componentList = root.getElementsByTagName("component"); 31 for (int j=0; j<componentList.getLength(); j++) 32 { 33 if (componentList.item(j).getNodeType()==Node.ELEMENT_NODE) 34 { 35 Element componentElement = (Element)componentList.item(j); 36 String componentRole = componentElement.getElementsByTagName("role").item(0).getFirstChild().getNodeValue(); 37 String componentClass = componentElement.getElementsByTagName("class").item(0).getFirstChild().getNodeValue(); 38 Element configurationElement = (Element)componentElement.getElementsByTagName("config").item(0); 39 ComponentModel cmodel = new ComponentModel(componentRole,componentClass,configurationElement); 41 addAvailable(cmodel); 42 }; 43 }; 44 } 45 catch (java.io.IOException e) 46 { 47 System.out.println(e.getMessage()); 48 } 49 catch (org.xml.sax.SAXException e) 50 { 51 System.out.println(e.getMessage()); 52 }; 53 }; 54 55 public void finalize() 56 { 57 runningComponents.removeAllElements(); 58 }; 59 60 public boolean hasComponent(java.lang.String role) 61 { 62 for (int i=0;i<availableComponents.size();i++) 63 { 64 ComponentModel temp = (ComponentModel)availableComponents.get(i); 65 if (temp.getRole().equals(role)) 66 { 67 return true; 68 }; 69 }; 70 return false; 71 }; 72 73 public Component lookup(java.lang.String role) 74 throws ComponentException 75 { 76 Component out = null; 81 for (int i=0;i<availableComponents.size();i++) 82 { 83 ComponentModel temp = (ComponentModel)availableComponents.get(i); 84 if (temp.getRole().equals(role)) 85 { 86 try 87 { 88 out = (Component)(Class.forName(temp.getClassname()).newInstance()); 89 } 90 catch (InstantiationException e) 91 { 92 System.out.println("FATAL ERROR (ComponentManager): Instatiation Error."); 93 System.out.println(e.getMessage()); 94 return null; 95 } 96 catch (IllegalAccessException e) 97 { 98 System.out.println("FATAL ERROR (ComponentManager): Illegal Access."); 99 System.out.println(e.getMessage()); 100 return null; 101 } 102 catch (ClassNotFoundException e) 103 { 104 System.out.println("FATAL ERROR (ComponentManager): Class Not Found."); 105 System.out.println(e.getMessage()); 106 return null; 107 }; 108 Configuration defaultConfig = out.getConfiguration(); 110 NodeList configItems = temp.getConfig().getElementsByTagName("item"); 111 for (int j=0; j<configItems.getLength(); j++) 112 { 113 NamedNodeMap attribs = configItems.item(j).getAttributes(); 114 String configType = attribs.getNamedItem("type").getNodeValue(); 115 String configName = attribs.getNamedItem("name").getNodeValue(); 116 String configValue = attribs.getNamedItem("value").getNodeValue(); 117 try 119 { 120 if (configType.equals("string")) 121 out.getConfiguration().getStringItem(configName).setValue(configValue); 122 if (configType.equals("integer")) 123 out.getConfiguration().getIntegerItem(configName).setValue(new Integer (configValue)); 124 } 125 catch (ConfigurationException e) 126 { 127 System.out.println("FATAL ERROR (ComponentManager): Configuration Name Mismatch."); 128 System.out.println(e.getMessage()); 129 return null; 130 } 131 catch (NumberFormatException e) 132 { 133 System.out.println("FATAL ERROR (ComponentManager): Configuration Value Wrong."); 134 System.out.println(e.getMessage()); 135 return null; 136 } 137 }; 138 out.init(this); 140 addRunning(out); 142 return out; 143 }; 144 }; 145 return null; 146 }; 147 148 public void release(Component component) 149 { 150 for (int i=0;i<runningComponents.size();i++) 151 { 152 if (((Component)(runningComponents.get(i))).getRole().equals(component.getRole())) 153 { 154 runningComponents.remove(i); 155 }; 156 }; 157 }; 158 159 private void addRunning(Component _in) 160 { 161 runningComponents.add(_in); 162 }; 163 164 private void addAvailable(ComponentModel _in) 165 { 166 availableComponents.add(_in); 167 }; 168 }; 169 170 | Popular Tags |