| 1 package com.protomatter.syslog.xml; 2 3 52 53 import java.io.*; 54 import java.net.*; 55 import java.util.*; 56 import java.text.*; 57 58 import com.protomatter.xml.*; 59 import com.protomatter.syslog.*; 60 import com.protomatter.util.ChainedRuntimeException; 61 import org.jdom.*; 62 63 66 public class DatabaseLog_Helper 67 extends BasicLogger_Helper 68 { 69 196 public void configure(Object o, Element e) 197 throws SyslogInitException 198 { 199 super.configure(o, e); 200 201 if (Syslog.getLocalHostName() == null) 202 { 203 throw new IllegalArgumentException ( 204 MessageFormat.format( 205 Syslog.getResourceString(MessageConstants.XML_MUST_SPECIFY_ATTRIBUTE_MESSAGE), 206 new Object [] { "hostname", "Syslog" } )); 207 } 208 209 DatabaseLog log = (DatabaseLog)o; 210 211 String tmp = null; 212 213 tmp = e.getChildTextTrim("driver", e.getNamespace()); 214 if (tmp != null) 215 { 216 log.setDriver(tmp); 217 } 218 else 219 { 220 throw new IllegalArgumentException ( 221 MessageFormat.format( 222 Syslog.getResourceString(MessageConstants.XML_MUST_SPECIFY_PARAM_MESSAGE), 223 new Object [] { "driver" } )); 224 } 225 226 tmp = e.getChildTextTrim("url", e.getNamespace()); 227 if (tmp != null) 228 { 229 log.setURL(tmp); 230 } 231 else 232 { 233 throw new IllegalArgumentException ( 234 MessageFormat.format( 235 Syslog.getResourceString(MessageConstants.XML_MUST_SPECIFY_PARAM_MESSAGE), 236 new Object [] { "url" } )); 237 } 238 239 tmp = e.getChildTextTrim("messageWidth", e.getNamespace()); 240 if (tmp != null) 241 { 242 log.setMessageWidth(Integer.parseInt(tmp)); 243 } 244 245 tmp = e.getChildTextTrim("detailWidth", e.getNamespace()); 246 if (tmp != null) 247 { 248 log.setDetailWidth(Integer.parseInt(tmp)); 249 } 250 251 tmp = e.getChildTextTrim("tablePrefix", e.getNamespace()); 252 if (tmp != null) 253 { 254 log.setTablePrefix(tmp); 255 } 256 257 tmp = e.getChildTextTrim("numRetries", e.getNamespace()); 258 if (tmp != null) 259 { 260 try 261 { 262 log.setNumRetries(Integer.parseInt(tmp.trim())); 263 } 264 catch (NumberFormatException x) 265 { 266 throw new IllegalArgumentException ( 267 MessageFormat.format(Syslog.getResourceString(MessageConstants.MUST_BE_INTEGER_PARAM_MESSAGE), 268 new Object [] { "numRetries" } )); 269 } 270 } 271 272 tmp = e.getChildTextTrim("statementAdapter", e.getNamespace()); 273 if (tmp != null) 274 { 275 try 276 { 277 DatabaseLogStatementAdapter adapter = (DatabaseLogStatementAdapter)Class.forName(tmp).newInstance(); 278 log.setStatementAdapter(adapter); 279 } 280 catch (Exception x) 281 { 282 throw new ChainedRuntimeException(MessageFormat.format( 283 Syslog.getResourceString(MessageConstants.DATABASELOG_CANNOT_LOAD_STATEMENT_ADAPTER_MESSAGE), 284 new Object [] { tmp }), x); 285 } 286 } 287 288 Element element = e.getChild("ConnectionProperties", e.getNamespace()); 289 Properties props = new Properties(); 290 if (element != null) 291 { 292 Iterator params = element.getChildren("property", e.getNamespace()).iterator(); 293 while (params.hasNext()) 294 { 295 Element param = (Element)params.next(); 296 String name = param.getChildTextTrim("name", e.getNamespace()); 297 String value = param.getChildTextTrim("value", e.getNamespace()); 298 if (name != null && value != null) 299 props.put(name.trim(), value.trim()); 300 } 301 } 302 log.setProperties(props); 303 } 304 305 public Element getConfiguration(Object o, Element element) 306 { 307 Element e = super.getConfiguration(o, element); 308 309 DatabaseLog log = (DatabaseLog)o; 310 311 Element param = new Element("driver"); 312 param.setText(log.getDriver()); 313 e.getChildren().add(param); 314 315 param = new Element("url"); 316 param.setText(log.getURL()); 317 e.getChildren().add(param); 318 319 param = new Element("tablePrefix"); 320 param.setText(log.getTablePrefix()); 321 e.getChildren().add(param); 322 323 param = new Element("numRetries"); 324 param.setText(String.valueOf(log.getNumRetries())); 325 e.getChildren().add(param); 326 327 param = new Element("messageWidth"); 328 param.setText(String.valueOf(log.getMessageWidth())); 329 e.getChildren().add(param); 330 331 param = new Element("detailWidth"); 332 param.setText(String.valueOf(log.getDetailWidth())); 333 e.getChildren().add(param); 334 335 param = new Element("ConnectionProperties"); 336 337 Properties props = log.getProperties(); 338 Enumeration pe = props.keys(); 339 while (pe.hasMoreElements()) 340 { 341 String key = (String )pe.nextElement(); 342 String val = props.getProperty(key); 343 344 Element prop = new Element("property"); 345 prop.getChildren().add((new Element("name")).setText(key)); 346 prop.getChildren().add((new Element("value")).setText(val)); 347 param.getChildren().add(prop); 348 } 349 e.getChildren().add(param); 350 351 param = new Element("statementAdapter"); 352 param.setText(String.valueOf(log.getStatementAdapter().getClass().getName())); 353 e.getChildren().add(param); 354 355 356 return e; 357 } 358 } 359 | Popular Tags |