PageRenderTime 62ms CodeModel.GetById 26ms RepoModel.GetById 0ms app.codeStats 0ms

/ojc-core/component-common/component/src/com/sun/jbi/alerter/EventDataConverter.java

https://bitbucket.org/pymma/openesb-components
Java | 303 lines | 226 code | 26 blank | 51 comment | 4 complexity | 1137603261df34d413c032ceb0c53746 MD5 | raw file
  1. /*
  2. * BEGIN_HEADER - DO NOT EDIT
  3. *
  4. * The contents of this file are subject to the terms
  5. * of the Common Development and Distribution License
  6. * (the "License"). You may not use this file except
  7. * in compliance with the License.
  8. *
  9. * You can obtain a copy of the license at
  10. * https://open-jbi-components.dev.java.net/public/CDDLv1.0.html.
  11. * See the License for the specific language governing
  12. * permissions and limitations under the License.
  13. *
  14. * When distributing Covered Code, include this CDDL
  15. * HEADER in each file and include the License file at
  16. * https://open-jbi-components.dev.java.net/public/CDDLv1.0.html.
  17. * If applicable add the following below this CDDL HEADER,
  18. * with the fields enclosed by brackets "[]" replaced with
  19. * your own identifying information: Portions Copyright
  20. * [year] [name of copyright owner]
  21. */
  22. /*
  23. * @(#)EventDataConverter.java
  24. *
  25. * Copyright 2004-2007 Sun Microsystems, Inc. All Rights Reserved.
  26. *
  27. * END_HEADER - DO NOT EDIT
  28. */
  29. package com.sun.jbi.alerter;
  30. import java.util.Date;
  31. import java.sql.ResultSet;
  32. import java.sql.SQLException;
  33. import java.text.ParsePosition;
  34. import java.text.SimpleDateFormat;
  35. import java.util.HashMap;
  36. import java.util.Map;
  37. import java.util.Properties;
  38. import javax.management.openmbean.CompositeData;
  39. import javax.management.openmbean.CompositeDataSupport;
  40. import javax.management.openmbean.CompositeType;
  41. import javax.management.openmbean.OpenType;
  42. import javax.management.openmbean.SimpleType;
  43. /*
  44. * the class serialize and de-serialize event instance content.
  45. * current implementation use CompositeData as the means to serialize
  46. * it.
  47. */
  48. public class EventDataConverter {
  49. private final String[] itemNames = {CompositeDataEventElementType.EVENTDATE.getCompositeDataElement(),
  50. CompositeDataEventElementType.EVENTID.getCompositeDataElement(),
  51. CompositeDataEventElementType.EVENTENVIRONMENT.getCompositeDataElement(),
  52. CompositeDataEventElementType.EVENTLOGICALHOST.getCompositeDataElement(),
  53. CompositeDataEventElementType.EVENTSERVER.getCompositeDataElement(),
  54. CompositeDataEventElementType.EVENTCOMPONENTPROJECTPATH.getCompositeDataElement(),
  55. CompositeDataEventElementType.EVENTDEPLOYMENT.getCompositeDataElement(),
  56. CompositeDataEventElementType.EVENTCOMPONENTNAME.getCompositeDataElement(),
  57. CompositeDataEventElementType.EVENTSEVERITY.getCompositeDataElement(),
  58. CompositeDataEventElementType.EVENTTYPE.getCompositeDataElement(),
  59. CompositeDataEventElementType.EVENTSTATUS.getCompositeDataElement(),
  60. CompositeDataEventElementType.EVENTSTATE.getCompositeDataElement(),
  61. CompositeDataEventElementType.EVENTPHYSICALHOST.getCompositeDataElement(),
  62. CompositeDataEventElementType.EVENTMESSAGECODE.getCompositeDataElement(),
  63. CompositeDataEventElementType.EVENTMESSAGEDETAILS.getCompositeDataElement(),
  64. CompositeDataEventElementType.EVENTSERVERTYPE.getCompositeDataElement(),
  65. CompositeDataEventElementType.EVENTCOMPONENTTYPE.getCompositeDataElement(),
  66. CompositeDataEventElementType.DBEVENTID.getCompositeDataElement()};
  67. private final String[] itemDescriptions = {
  68. CompositeDataEventElementType.EVENTDATE.getDescription(),
  69. CompositeDataEventElementType.EVENTID.getDescription(),
  70. CompositeDataEventElementType.EVENTENVIRONMENT.getDescription(),
  71. CompositeDataEventElementType.EVENTLOGICALHOST.getDescription(),
  72. CompositeDataEventElementType.EVENTSERVER.getDescription(),
  73. CompositeDataEventElementType.EVENTCOMPONENTPROJECTPATH.getDescription(),
  74. CompositeDataEventElementType.EVENTDEPLOYMENT.getDescription(),
  75. CompositeDataEventElementType.EVENTCOMPONENTNAME.getDescription(),
  76. CompositeDataEventElementType.EVENTSEVERITY.getDescription(),
  77. CompositeDataEventElementType.EVENTTYPE.getDescription(),
  78. CompositeDataEventElementType.EVENTSTATUS.getDescription(),
  79. CompositeDataEventElementType.EVENTSTATE.getDescription(),
  80. CompositeDataEventElementType.EVENTPHYSICALHOST.getDescription(),
  81. CompositeDataEventElementType.EVENTMESSAGECODE.getDescription(),
  82. CompositeDataEventElementType.EVENTMESSAGEDETAILS.getDescription(),
  83. CompositeDataEventElementType.EVENTSERVERTYPE.getDescription(),
  84. CompositeDataEventElementType.EVENTCOMPONENTTYPE.getDescription(),
  85. CompositeDataEventElementType.DBEVENTID.getDescription()};
  86. private final OpenType[] itemTypes = { SimpleType.STRING, SimpleType.STRING,
  87. SimpleType.STRING,SimpleType.STRING,SimpleType.STRING,
  88. SimpleType.STRING,SimpleType.STRING,SimpleType.STRING,
  89. SimpleType.STRING,SimpleType.STRING,SimpleType.STRING,
  90. SimpleType.STRING,SimpleType.STRING,SimpleType.STRING,
  91. SimpleType.STRING,SimpleType.STRING,SimpleType.STRING,
  92. SimpleType.STRING};
  93. public EventDataConverter() {
  94. }
  95. public CompositeData getEventCompositeData(NotificationEvent event,String aDBEventID) throws Exception{
  96. CompositeType compositeType = new CompositeType("event","The Object Represent single event instance",
  97. itemNames,itemDescriptions,itemTypes);
  98. Map<String,String> map = getEventMap(event,aDBEventID);
  99. CompositeData compositeData = new CompositeDataSupport(compositeType,map);
  100. return compositeData;
  101. }
  102. public CompositeData getEventCompositeData(ResultSet aResultSet,String aDBEventID) throws Exception{
  103. CompositeType compositeType = new CompositeType("event","The Object Represent single event row in the persistence DB",
  104. itemNames,itemDescriptions,itemTypes);
  105. Map<String,String> map = getEventRowMap(aResultSet,aDBEventID);
  106. CompositeData compositeData = new CompositeDataSupport(compositeType,map);
  107. return compositeData;
  108. }
  109. public NotificationEvent getEventFromCompositeData(CompositeData compositeData) {
  110. NotificationEvent event = new NotificationEventImpl();
  111. Object[] eventData= compositeData.getAll(itemNames);
  112. populateEventObject(event,eventData);
  113. return event;
  114. }
  115. private Map<String,String> getEventRowMap(ResultSet aResultSet,String aDBEventID) throws SQLException {
  116. Map<String,String> properties = new HashMap<String,String>();
  117. properties.put(CompositeDataEventElementType.EVENTDATE.getCompositeDataElement(),
  118. aResultSet.getLong(2)+"");
  119. properties.put(CompositeDataEventElementType.EVENTID.getCompositeDataElement(),
  120. aResultSet.getInt(1)+"");
  121. properties.put(CompositeDataEventElementType.EVENTENVIRONMENT.getCompositeDataElement(),
  122. aResultSet.getString(4));
  123. properties.put(CompositeDataEventElementType.EVENTLOGICALHOST.getCompositeDataElement(),
  124. aResultSet.getString(5));
  125. properties.put(CompositeDataEventElementType.EVENTSERVER.getCompositeDataElement(),
  126. aResultSet.getString(7));
  127. properties.put(CompositeDataEventElementType.EVENTCOMPONENTPROJECTPATH.getCompositeDataElement(),
  128. aResultSet.getString(9));
  129. properties.put( CompositeDataEventElementType.EVENTDEPLOYMENT.getCompositeDataElement(),
  130. aResultSet.getString(17));
  131. properties.put(CompositeDataEventElementType.EVENTCOMPONENTNAME.getCompositeDataElement(),
  132. aResultSet.getString(10));
  133. properties.put(CompositeDataEventElementType.EVENTSEVERITY.getCompositeDataElement(),
  134. aResultSet.getInt(12)+"");
  135. properties.put( CompositeDataEventElementType.EVENTTYPE.getCompositeDataElement(),
  136. aResultSet.getString(11));
  137. properties.put(CompositeDataEventElementType.EVENTSTATUS.getCompositeDataElement(),
  138. aResultSet.getInt(16)+"");
  139. properties.put(CompositeDataEventElementType.EVENTSTATE.getCompositeDataElement(),
  140. aResultSet.getInt(13)+"");
  141. properties.put(CompositeDataEventElementType.EVENTPHYSICALHOST.getCompositeDataElement(),
  142. aResultSet.getString(3));
  143. properties.put(CompositeDataEventElementType.EVENTMESSAGECODE.getCompositeDataElement(),
  144. aResultSet.getString(14));
  145. properties.put( CompositeDataEventElementType.EVENTMESSAGEDETAILS.getCompositeDataElement(),
  146. aResultSet.getString(15));
  147. properties.put(CompositeDataEventElementType.EVENTSERVERTYPE.getCompositeDataElement(),
  148. aResultSet.getString(6));
  149. properties.put(CompositeDataEventElementType.EVENTCOMPONENTTYPE.getCompositeDataElement(),
  150. aResultSet.getString(8));
  151. return properties;
  152. }
  153. private Map<String,String> getEventMap(NotificationEvent event,String aDBEventID) {
  154. Map<String,String> properties = new HashMap<String,String>();
  155. properties.put(CompositeDataEventElementType.EVENTDATE.getCompositeDataElement(),
  156. event.getTimeStamp()+"");
  157. properties.put(CompositeDataEventElementType.EVENTID.getCompositeDataElement(),
  158. event.getId()+"");
  159. properties.put(CompositeDataEventElementType.EVENTENVIRONMENT.getCompositeDataElement(),
  160. event.getEnvironmentName());
  161. properties.put(CompositeDataEventElementType.EVENTLOGICALHOST.getCompositeDataElement(),
  162. event.getLogicalHostName());
  163. properties.put(CompositeDataEventElementType.EVENTSERVER.getCompositeDataElement(),
  164. event.getServerName());
  165. properties.put(CompositeDataEventElementType.EVENTCOMPONENTPROJECTPATH.getCompositeDataElement(),
  166. event.getComponentProjectPathName());
  167. properties.put( CompositeDataEventElementType.EVENTDEPLOYMENT.getCompositeDataElement(),
  168. event.getDeploymentName());
  169. properties.put(CompositeDataEventElementType.EVENTCOMPONENTNAME.getCompositeDataElement(),
  170. event.getComponentName());
  171. properties.put(CompositeDataEventElementType.EVENTSEVERITY.getCompositeDataElement(),
  172. event.getSeverity()+"");
  173. properties.put( CompositeDataEventElementType.EVENTTYPE.getCompositeDataElement(),
  174. event.getType());
  175. properties.put(CompositeDataEventElementType.EVENTSTATUS.getCompositeDataElement(),
  176. event.getObservationalState()+"");
  177. properties.put(CompositeDataEventElementType.EVENTSTATE.getCompositeDataElement(),
  178. event.getOperationalState()+"");
  179. properties.put(CompositeDataEventElementType.EVENTPHYSICALHOST.getCompositeDataElement(),
  180. event.getPhysicalHostName());
  181. properties.put(CompositeDataEventElementType.EVENTMESSAGECODE.getCompositeDataElement(),
  182. event.getMessageCode());
  183. properties.put( CompositeDataEventElementType.EVENTMESSAGEDETAILS.getCompositeDataElement(),
  184. event.getMessageDetails());
  185. properties.put(CompositeDataEventElementType.EVENTSERVERTYPE.getCompositeDataElement(),
  186. event.getServerType());
  187. properties.put(CompositeDataEventElementType.EVENTCOMPONENTTYPE.getCompositeDataElement(),
  188. event.getComponentType());
  189. properties.put(CompositeDataEventElementType.DBEVENTID.getCompositeDataElement(),
  190. aDBEventID);
  191. return properties;
  192. }
  193. private void populateEventObject(NotificationEvent event,Object[] eventData) {
  194. for (int index = 0; index < eventData.length; index++) {
  195. Object value = eventData[index];
  196. if(value == null) {
  197. continue;
  198. }
  199. String eventEntryValue = (String)value;
  200. switch (index) {
  201. //DATE
  202. case 0:
  203. event.setTimeStamp(Long.parseLong(eventEntryValue));
  204. break;
  205. //ID
  206. case 1:
  207. // id will be assigned by the DB (this column must have auto-increment attribute).
  208. break;
  209. //ENVIRONMENT
  210. case 2:
  211. event.setEnvironmentName(eventEntryValue);
  212. break;
  213. //LOGICALHOST
  214. case 3:
  215. event.setLogicalHostName(eventEntryValue);
  216. break;
  217. //SERVER
  218. case 4:
  219. event.setServerName(eventEntryValue);
  220. break;
  221. //COMPONENTPROJECTPATH
  222. case 5:
  223. event.setComponentProjectPathName(eventEntryValue);
  224. break;
  225. //DEPLOYMENT
  226. case 6:
  227. event.setDeploymentName(eventEntryValue);
  228. break;
  229. //COMPONENTNAME
  230. case 7:
  231. event.setComponentName(eventEntryValue);
  232. break;
  233. //SEVERITY
  234. case 8:
  235. event.setSeverity(Integer.parseInt(eventEntryValue));
  236. break;
  237. //TYPE
  238. case 9:
  239. event.setType(eventEntryValue);
  240. break;
  241. //STATUS
  242. case 10:
  243. event.setObservationalState(Integer.parseInt(eventEntryValue));
  244. break;
  245. //STATE
  246. case 11:
  247. event.setOperationalState(Integer.parseInt(eventEntryValue));
  248. break;
  249. //PHYSICALHOST
  250. case 12:
  251. event.setPhysicalHostName(eventEntryValue);
  252. break;
  253. //MESSAGECODE
  254. case 13:
  255. event.setMessageCode(eventEntryValue);
  256. break;
  257. //MESSAGEDETAILS
  258. case 14:
  259. event.setMessageDetails(eventEntryValue);
  260. break;
  261. //SERVERTYPE
  262. case 15:
  263. event.setServerType(eventEntryValue);
  264. break;
  265. //COMPONENTTYPE
  266. case 16:
  267. event.setComponentType(eventEntryValue);
  268. break;
  269. }
  270. }
  271. }
  272. public Date getEventDateFromString(String eventDate) {
  273. SimpleDateFormat sdf =
  274. new SimpleDateFormat("EEE MMM dd HH:mm:ss z yyyy");
  275. return sdf.parse(eventDate,new ParsePosition(0));
  276. }
  277. }