2 * Copyright (c) 2005 UPS_SCS NL
5 package org.wamblee.crawler.kiss;
7 import java.io.ByteArrayOutputStream;
9 import java.io.IOException;
10 import java.util.Arrays;
11 import java.util.Date;
13 import javax.mail.internet.AddressException;
14 import javax.mail.internet.InternetAddress;
15 import javax.xml.transform.TransformerException;
17 import org.apache.commons.mail.EmailException;
18 import org.apache.commons.mail.HtmlEmail;
19 import org.apache.xml.serialize.OutputFormat;
20 import org.apache.xml.serialize.XMLSerializer;
21 import org.dom4j.Element;
22 import org.w3c.dom.Document;
23 import org.wamblee.io.FileResource;
24 import org.wamblee.io.InputResource;
25 import org.wamblee.xml.XSLT;
27 public class MailNotifier implements Notifier {
31 private String _subject;
32 private String _htmlXslt;
33 private String _textXslt;
34 private MailServer _server;
36 public MailNotifier( String aFrom, String aTo, String aSubject,
37 String aHtmlXslt, String aTextXslt, MailServer aServer) {
41 _htmlXslt = aHtmlXslt;
42 _textXslt = aTextXslt;
46 public void send( Element aReport ) throws NotificationException {
47 HtmlEmail mail = new HtmlEmail();
50 mail.setTo(Arrays.asList(new InternetAddress[] { new InternetAddress(_to) }));
51 mail.setSentDate(new Date());
52 mail.setSubject(_subject);
54 String htmlText = transformReport( aReport, new FileResource(new File(_htmlXslt)) );
55 String plainText = transformReport( aReport, new FileResource(new File(_textXslt)) );
57 mail.setHtmlMsg(htmlText);
58 mail.setTextMsg(plainText);
62 catch (EmailException e) {
63 throw new NotificationException(e.getMessage(), e);
64 } catch (TransformerException e) {
65 throw new NotificationException(e.getMessage(), e);
66 } catch (IOException e) {
67 throw new NotificationException(e.getMessage(), e);
68 } catch (AddressException e) {
69 throw new NotificationException(e.getMessage(), e);
77 * @throws TransformerException
79 private String transformReport( Element aReport, InputResource aXslt ) throws IOException, TransformerException {
80 String reportXmlText = aReport.asXML();
81 Document document = new XSLT().transform(reportXmlText.getBytes(), aXslt);
82 ByteArrayOutputStream transformed = new ByteArrayOutputStream();
83 XMLSerializer serializer = new XMLSerializer(transformed, new OutputFormat());
84 serializer.serialize(document);
85 return transformed.toString();
91 public static void main( String[] args ) {
92 // TODO Auto-generated method stub