src/org/objectweb/cjdbc/common/jmx/notifications/JmxNotification.java

説明を見る。
00001 00025 package org.objectweb.cjdbc.common.jmx.notifications; 00026 00027 import java.io.IOException; 00028 import java.io.StringReader; 00029 import java.io.StringWriter; 00030 import java.util.ArrayList; 00031 import java.util.Enumeration; 00032 import java.util.Hashtable; 00033 import java.util.Iterator; 00034 00035 import org.dom4j.Document; 00036 import org.dom4j.DocumentHelper; 00037 import org.dom4j.Element; 00038 import org.dom4j.io.OutputFormat; 00039 import org.dom4j.io.SAXReader; 00040 import org.dom4j.io.XMLWriter; 00041 00079 public class JmxNotification 00080 { 00084 private static final String ELT_jmxevent = "jmxevent"; 00085 private static final String ELT_info = "info"; 00086 private static final String ELT_source = "source"; 00087 private static final String ELT_data = "data"; 00088 private static final String ELT_priority = "priority"; 00089 private static final String ELT_sequence = "sequence"; 00090 private static final String ELT_type = "type"; 00091 private static final String ELT_description = "description"; 00092 private static final String ELT_time = "time"; 00093 private static final String ELT_controller = "controller"; 00094 private static final String ELT_mbean = "mbean"; 00095 private static final String ELT_class = "class"; 00096 private static final String ELT_server = "server"; 00097 private static final String ELT_value = "value"; 00098 00099 private static final String ATT_ip = "ip"; 00100 private static final String ATT_port = "port"; 00101 private static final String ATT_name = "name"; 00102 00103 String priority; 00104 String sequence; 00105 String type; 00106 String description; 00107 String controllerName; 00108 String mbeanClass; 00109 String mbeanName; 00110 String mbeanServerIP; 00111 String mbeanServerPort; 00112 String time; 00113 Hashtable dataList; 00114 00130 public JmxNotification(String priority, String sequence, String type, 00131 String description, String time, String controllerName, 00132 String mbeanClass, String mbeanName, String mbeanServerIP, 00133 String mbeanServerPort, Hashtable dataList) 00134 { 00135 this.priority = priority; 00136 this.sequence = sequence; 00137 this.type = type; 00138 this.description = description; 00139 this.controllerName = controllerName; 00140 this.mbeanClass = mbeanClass; 00141 this.mbeanName = mbeanName; 00142 this.mbeanServerIP = mbeanServerIP; 00143 this.mbeanServerPort = mbeanServerPort; 00144 this.time = time; 00145 this.dataList = dataList; 00146 } 00147 00157 public static JmxNotification createNotificationFromXmlString(String xml) 00158 throws Exception 00159 { 00160 StringReader sreader = new StringReader(xml); 00161 SAXReader reader = new SAXReader(); 00162 Document document = reader.read(sreader); 00163 return createNotificationFromXml(document); 00164 } 00165 00169 public Hashtable getDataList() 00170 { 00171 return dataList; 00172 } 00173 00180 public String getDataValue(String key) 00181 { 00182 if(!dataList.containsKey(key)) 00183 return null; 00184 else 00185 return(String) ((ArrayList)dataList.get(key)).get(0); 00186 } 00187 00191 public String getControllerName() 00192 { 00193 return controllerName; 00194 } 00195 00201 public String getControllerJmxName() 00202 { 00203 return getMbeanServerIP()+":"+getMbeanServerPort(); 00204 } 00205 00209 public void setControllerName(String controllerName) 00210 { 00211 this.controllerName = controllerName; 00212 } 00213 00217 public String getDescription() 00218 { 00219 return description; 00220 } 00221 00225 public void setDescription(String description) 00226 { 00227 this.description = description; 00228 } 00229 00233 public String getMbeanClass() 00234 { 00235 return mbeanClass; 00236 } 00237 00241 public void setMbeanClass(String mbeanClass) 00242 { 00243 this.mbeanClass = mbeanClass; 00244 } 00245 00249 public String getMbeanName() 00250 { 00251 return mbeanName; 00252 } 00253 00257 public void setMbeanName(String mbeanName) 00258 { 00259 this.mbeanName = mbeanName; 00260 } 00261 00265 public String getMbeanServerIP() 00266 { 00267 return mbeanServerIP; 00268 } 00269 00273 public void setMbeanServerIP(String mbeanServerIP) 00274 { 00275 this.mbeanServerIP = mbeanServerIP; 00276 } 00277 00281 public String getMbeanServerPort() 00282 { 00283 return mbeanServerPort; 00284 } 00285 00289 public void setMbeanServerPort(String mbeanServerPort) 00290 { 00291 this.mbeanServerPort = mbeanServerPort; 00292 } 00293 00297 public String getPriority() 00298 { 00299 return priority; 00300 } 00301 00305 public void setPriority(String priority) 00306 { 00307 this.priority = priority; 00308 } 00309 00313 public String getSequence() 00314 { 00315 return sequence; 00316 } 00317 00321 public void setSequence(String sequence) 00322 { 00323 this.sequence = sequence; 00324 } 00325 00329 public String getType() 00330 { 00331 return type; 00332 } 00333 00337 public void setType(String type) 00338 { 00339 this.type = type; 00340 } 00341 00348 public static JmxNotification createNotificationFromXml(Document document) 00349 { 00350 String priority = document.selectSingleNode( 00351 "//" + ELT_jmxevent + "/" + ELT_info + "/" + ELT_priority).getText(); 00352 String sequence = document.selectSingleNode( 00353 "//" + ELT_jmxevent + "/" + ELT_info + "/" + ELT_sequence).getText(); 00354 String type = document.selectSingleNode( 00355 "//" + ELT_jmxevent + "/" + ELT_info + "/" + ELT_type).getText(); 00356 String description = document.selectSingleNode( 00357 "//" + ELT_jmxevent + "/" + ELT_info + "/" + ELT_description).getText(); 00358 String time = document.selectSingleNode( 00359 "//" + ELT_jmxevent + "/" + ELT_info + "/" + ELT_time).getText(); 00360 00361 String controllerName = document.selectSingleNode( 00362 "//" + ELT_jmxevent + "/" + ELT_source + "/" + ELT_controller) 00363 .getText(); 00364 String mbeanclass = document.selectSingleNode( 00365 "//" + ELT_jmxevent + "/" + ELT_source + "/" + ELT_mbean + "/" 00366 + ELT_class).getText(); 00367 String mbeanname = document.selectSingleNode( 00368 "//" + ELT_jmxevent + "/" + ELT_source + "/" + ELT_mbean).valueOf( 00369 "@" + ATT_name); 00370 String serverip = document.selectSingleNode( 00371 "//" + ELT_jmxevent + "/" + ELT_source + "/" + ELT_mbean + "/" 00372 + ELT_server).valueOf("@" + ATT_ip); 00373 String serverport = document.selectSingleNode( 00374 "//" + ELT_jmxevent + "/" + ELT_source + "/" + ELT_mbean + "/" 00375 + ELT_server).valueOf("@" + ATT_port); 00376 00377 Element root = document.getRootElement(); 00378 00379 Hashtable dataList = new Hashtable(); 00380 for (Iterator i = root.elementIterator(ELT_data); i.hasNext();) 00381 { 00382 Element data = (Element) i.next(); 00383 ArrayList list = new ArrayList(); 00384 for (Iterator j = data.elementIterator(ELT_value); j.hasNext();) 00385 { 00386 Element value = (Element) j.next(); 00387 list.add(value.getTextTrim()); 00388 } 00389 dataList.put(data.valueOf("@" + ATT_name), list); 00390 } 00391 JmxNotification notif = new JmxNotification(priority, sequence, type, 00392 description, time, controllerName, mbeanclass, mbeanname, serverip, 00393 serverport, dataList); 00394 return notif; 00395 } 00396 00402 public Document toXmlDocument() 00403 { 00404 Document document = DocumentHelper.createDocument(); 00405 Element root = document.addElement(ELT_jmxevent); 00406 00407 // Describe info 00408 Element info = root.addElement(ELT_info); 00409 info.addElement(ELT_priority).addText(priority); 00410 info.addElement(ELT_sequence).addText(sequence); 00411 info.addElement(ELT_type).addText(type); 00412 info.addElement(ELT_description).addText(description); 00413 info.addElement(ELT_time).addText(time); 00414 00415 // Describe source 00416 Element source = root.addElement(ELT_source); 00417 source.addElement(ELT_controller).addText(controllerName); 00418 00419 // Describe mbean 00420 Element mbean = source.addElement(ELT_mbean).addAttribute(ATT_name, 00421 mbeanName); 00422 mbean.addElement(ELT_class).addText(mbeanClass); 00423 mbean.addElement(ELT_server).addAttribute(ATT_ip, mbeanServerIP) 00424 .addAttribute(ATT_port, mbeanServerPort); 00425 00426 // Describe data 00427 Enumeration keys = dataList.keys(); 00428 while (keys.hasMoreElements()) 00429 { 00430 String key = (String) keys.nextElement(); 00431 Element data = root.addElement(ELT_data).addAttribute(ATT_name, key); 00432 00433 Object entry = dataList.get(key); 00434 if (entry instanceof ArrayList) 00435 { 00436 ArrayList list = (ArrayList) entry; 00437 for (int i = 0; i < list.size(); i++) 00438 data.addElement(ELT_value).addText((String) list.get(i)); 00439 } 00440 else if (entry instanceof String[]) 00441 { 00442 String[] list = (String[]) entry; 00443 for (int i = 0; i < list.length; i++) 00444 data.addElement(ELT_value).addText(list[i]); 00445 } 00446 else if (entry instanceof String) 00447 { 00448 data.addElement(ELT_value).addText((String) entry); 00449 } 00450 } 00451 return document; 00452 } 00453 00457 public String toString() 00458 { 00459 StringWriter swriter = new StringWriter(); 00460 OutputFormat format = OutputFormat.createCompactFormat(); 00461 XMLWriter writer = new XMLWriter(swriter, format); 00462 try 00463 { 00464 writer.write(toXmlDocument()); 00465 } 00466 catch (IOException e) 00467 { 00468 // ignore 00469 } 00470 return swriter.getBuffer().toString(); 00471 } 00472 00476 public String getTime() 00477 { 00478 return time; 00479 } 00480 00484 public void setTime(String time) 00485 { 00486 this.time = time; 00487 } 00488 00492 public void setDataList(Hashtable dataList) 00493 { 00494 this.dataList = dataList; 00495 } 00496 }

CJDBCversion1.0.4に対してTue Oct 12 15:15:57 2004に生成されました。 doxygen 1.3.8