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 org.jdom.*; 61 62 65 public class MailLog_Helper 66 extends BasicLogger_Helper 67 { 68 195 public void configure(Object o, Element e) 196 throws SyslogInitException 197 { 198 super.configure(o, e); 199 200 MailLog log = (MailLog)o; 201 202 String smtpServer = null; 203 int port = 25; 204 205 String fromName = "Syslog"; 206 String fromAddress = null; 207 Vector to = new Vector(); 208 Vector cc = new Vector(); 209 Vector bcc = new Vector(); 210 boolean html = false; 211 212 String sf = "SubjectFormat"; 213 String classString = "class"; 214 215 Element formatElement = e.getChild(sf, e.getNamespace()); 216 if (formatElement != null) 217 { 218 String formatClass = formatElement.getAttributeValue(classString); 219 if (formatClass == null) 220 { 221 throw new IllegalArgumentException ( 222 MessageFormat.format( 223 Syslog.getResourceString(MessageConstants.XML_MUST_SPECIFY_ATTRIBUTE_MESSAGE), 224 new Object [] { classString, sf } )); 225 } 226 try 227 { 228 SyslogMailSubjectFormatter subjectFormat = 229 (SyslogMailSubjectFormatter)Class.forName(formatClass).newInstance(); 230 XMLConfigHelper helper = XMLConfigUtil.getConfigHelper(subjectFormat); 231 try 232 { 233 helper.configure(subjectFormat, formatElement); 234 } 235 catch (Exception x) 236 { 237 x.printStackTrace(); 238 throw new IllegalArgumentException (MessageFormat.format( 239 Syslog.getResourceString(MessageConstants.MAILLOG_CANNOT_CONFIGURE_SUBJECT_FORMAT_MESSAGE), 240 new Object [] { formatClass })); 241 } 242 } 243 catch (Exception x) 244 { 245 x.printStackTrace(); 246 throw new IllegalArgumentException (MessageFormat.format( 247 Syslog.getResourceString(MessageConstants.MAILLOG_CANNOT_CONFIGURE_SUBJECT_FORMAT_MESSAGE), 248 new Object [] { formatClass })); 249 } 250 } 251 252 String tmp = e.getChildTextTrim("server", e.getNamespace()); 253 if (tmp != null) 254 { 255 log.setMailServer(tmp); 256 } 257 else 258 { 259 throw new IllegalArgumentException ( 260 MessageFormat.format( 261 Syslog.getResourceString(MessageConstants.XML_MUST_SPECIFY_PARAM_MESSAGE), 262 new Object [] { "server" } )); 263 } 264 265 tmp = e.getChildTextTrim("workQueue", e.getNamespace()); 266 if (tmp != null) 267 { 268 log.setWorkQueue(tmp); 269 } 270 else 271 { 272 throw new IllegalArgumentException ( 273 MessageFormat.format( 274 Syslog.getResourceString(MessageConstants.XML_MUST_SPECIFY_PARAM_MESSAGE), 275 new Object [] { "workQueue" } )); 276 } 277 278 tmp = e.getChildTextTrim("port", e.getNamespace()); 279 if (tmp != null) 280 log.setMailPort(Integer.parseInt(tmp)); 281 282 tmp = e.getChildTextTrim("html", e.getNamespace()); 283 log.setHTML("true".equalsIgnoreCase(tmp)); 284 285 tmp = e.getChildTextTrim("from", e.getNamespace()); 286 if (tmp != null) 287 { 288 log.setFromAddress(tmp); 289 } 290 else 291 { 292 throw new IllegalArgumentException ( 293 MessageFormat.format( 294 Syslog.getResourceString(MessageConstants.XML_MUST_SPECIFY_PARAM_MESSAGE), 295 new Object [] { "from" } )); 296 } 297 298 log.setFromName(e.getChildTextTrim("fromName", e.getNamespace())); 299 300 tmp = e.getChildTextTrim("to", e.getNamespace()); 301 if (tmp != null) 302 { 303 StringTokenizer st = new StringTokenizer(tmp, ", "); 304 while (st.hasMoreTokens()) 305 to.add(st.nextToken()); 306 log.setTo(to); 307 } 308 309 tmp = e.getChildTextTrim("cc", e.getNamespace()); 310 if (tmp != null) 311 { 312 StringTokenizer st = new StringTokenizer(tmp, ", "); 313 while (st.hasMoreTokens()) 314 cc.add(st.nextToken()); 315 log.setCC(cc); 316 } 317 318 tmp = e.getChildTextTrim("bcc", e.getNamespace()); 319 if (tmp != null) 320 { 321 StringTokenizer st = new StringTokenizer(tmp, ", "); 322 while (st.hasMoreTokens()) 323 bcc.add(st.nextToken()); 324 log.setBCC(bcc); 325 } 326 327 if (to.size() == 0) 328 { 329 throw new IllegalArgumentException ( 330 MessageFormat.format( 331 Syslog.getResourceString(MessageConstants.XML_MUST_SPECIFY_PARAM_MESSAGE), 332 new Object [] { "to" } )); 333 } 334 335 tmp = e.getChildTextTrim("transportAgentName", e.getNamespace()); 336 if (tmp != null) 337 { 338 log.setTransportAgent(tmp); 339 } 340 341 log.init(); 342 } 343 344 public Element getConfiguration(Object o, Element element) 345 { 346 Element e = super.getConfiguration(o, element); 347 348 MailLog log = (MailLog)o; 349 350 Vector to = log.getTo(); 351 Vector cc = log.getCC(); 352 Vector bcc = log.getBCC(); 353 354 e.getChildren().add((new Element("workQueue")) 355 .setText(log.getWorkQueue())); 356 e.getChildren().add((new Element("server")) 357 .setText(log.getMailServer())); 358 e.getChildren().add((new Element("port")) 359 .setText(String.valueOf(log.getMailPort()))); 360 e.getChildren().add((new Element("html")) 361 .setText(String.valueOf(log.getHTML()))); 362 e.getChildren().add((new Element("from")) 363 .setText(log.getFromAddress())); 364 365 if (log.getFromName() != null) 366 e.getChildren().add((new Element("fromName")).setText(log.getFromName())); 367 368 e.getChildren().add((new Element("to")).setText(assembleAddressList(to))); 369 370 if (cc.size() > 0) 371 e.getChildren().add((new Element("cc")).setText(assembleAddressList(cc))); 372 if (bcc.size() > 0) 373 e.getChildren().add((new Element("bcc")).setText(assembleAddressList(bcc))); 374 375 Object formatClass = log.getSubjectFormatter(); 376 Element formatElement = new Element("SubjectFormat"); 377 formatElement.setAttribute("class", formatClass.getClass().getName()); 378 379 try 380 { 381 XMLConfigHelper helper = XMLConfigUtil.getConfigHelper(formatClass); 382 formatElement = helper.getConfiguration(formatClass, formatElement); 383 e.getChildren().add(formatElement); 384 } 385 catch (Exception x) 386 { 387 x.printStackTrace(); 388 } 389 390 e.getChildren().add((new Element("transportAgentName")).setText(log.getTransportAgent())); 391 392 return e; 393 } 394 395 private String assembleAddressList(Vector list) 396 { 397 StringBuffer b = new StringBuffer (); 398 Enumeration e = list.elements(); 399 while (e.hasMoreElements()) 400 { 401 b.append(e.nextElement()); 402 if (e.hasMoreElements()) 403 b.append(", "); 404 } 405 return b.toString(); 406 } 407 } 408 | Popular Tags |