c602f63f91ed1867ad9495d5d70071617400c3da
[utils] / crawler / kiss / src / org / wamblee / crawler / kiss / MailNotifier.java
1 /**
2  * Copyright (c) 2005 UPS_SCS NL
3  *  
4  */
5 package org.wamblee.crawler.kiss;
6
7 import java.io.ByteArrayOutputStream;
8 import java.io.File;
9 import java.io.IOException;
10 import java.util.Arrays;
11 import java.util.Date;
12
13 import javax.mail.internet.AddressException;
14 import javax.mail.internet.InternetAddress;
15 import javax.xml.transform.TransformerException;
16
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;
26
27 public class MailNotifier implements Notifier {
28     
29     private String _from;
30     private String _to;
31     private String _subject;
32     private String _htmlXslt;
33     private String _textXslt;
34     private MailServer _server;
35     
36     public MailNotifier( String aFrom, String aTo, String aSubject,
37             String aHtmlXslt, String aTextXslt, MailServer aServer) {
38         _from = aFrom;
39         _to = aTo;
40         _subject = aSubject;
41         _htmlXslt = aHtmlXslt;
42         _textXslt = aTextXslt; 
43         _server = aServer;
44     }
45
46     public void send( Element aReport ) throws NotificationException {
47         HtmlEmail mail = new HtmlEmail();
48         try {
49             mail.setFrom(_from);
50             mail.setTo(Arrays.asList(new InternetAddress[] { new InternetAddress(_to) }));
51             mail.setSentDate(new Date());
52             mail.setSubject(_subject);
53             
54             String htmlText = transformReport( aReport, new FileResource(new File(_htmlXslt)) );
55             String plainText = transformReport( aReport, new FileResource(new File(_textXslt)) );
56             
57             mail.setHtmlMsg(htmlText);
58             mail.setTextMsg(plainText);
59             
60             _server.send(mail);
61         }
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);
70         }
71     }
72
73     /**
74      * @param aReport
75      * @return
76      * @throws IOException
77      * @throws TransformerException
78      */
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();
86     }
87
88     /**
89      * @param args
90      */
91     public static void main( String[] args ) {
92         // TODO Auto-generated method stub
93
94     }
95
96 }