import org.wamblee.io.InputResource;
import org.wamblee.xml.XSLT;
+/**
+ * A notifier that uses SMTP to notify users by mail.
+ *
+ */
public class MailNotifier implements Notifier {
-
+
private String _from;
+
private String _to;
+
private String _subject;
+
private String _htmlXslt;
+
private String _textXslt;
+
private MailServer _server;
-
- public MailNotifier( String aFrom, String aTo, String aSubject,
+
+ /**
+ * Constructs the notifier.
+ *
+ * @param aFrom
+ * Sender mail address to use.
+ * @param aTo
+ * Recipient mail address to use.
+ * @param aSubject
+ * Subject to use in the email.
+ * @param aHtmlXslt
+ * XSLT file to transform the report into HTML.
+ * @param aTextXslt
+ * XSLT file to transform the report into text.
+ * @param aServer
+ * Mail server to use.
+ */
+ public MailNotifier(String aFrom, String aTo, String aSubject,
String aHtmlXslt, String aTextXslt, MailServer aServer) {
_from = aFrom;
_to = aTo;
_subject = aSubject;
_htmlXslt = aHtmlXslt;
- _textXslt = aTextXslt;
+ _textXslt = aTextXslt;
_server = aServer;
}
- public void send( Element aReport ) throws NotificationException {
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.wamblee.crawler.kiss.Notifier#send(org.dom4j.Element)
+ */
+ public void send(Element aReport) throws NotificationException {
HtmlEmail mail = new HtmlEmail();
try {
mail.setFrom(_from);
- mail.setTo(Arrays.asList(new InternetAddress[] { new InternetAddress(_to) }));
+ mail
+ .setTo(Arrays
+ .asList(new InternetAddress[] { new InternetAddress(
+ _to) }));
mail.setSentDate(new Date());
mail.setSubject(_subject);
-
- String htmlText = transformReport( aReport, new FileResource(new File(_htmlXslt)) );
- String plainText = transformReport( aReport, new FileResource(new File(_textXslt)) );
-
+
+ String htmlText = transformReport(aReport, new FileResource(
+ new File(_htmlXslt)));
+ String plainText = transformReport(aReport, new FileResource(
+ new File(_textXslt)));
+
mail.setHtmlMsg(htmlText);
mail.setTextMsg(plainText);
-
+
_server.send(mail);
- }
- catch (EmailException e) {
+ } catch (EmailException e) {
throw new NotificationException(e.getMessage(), e);
- } catch (TransformerException e) {
+ } catch (TransformerException e) {
throw new NotificationException(e.getMessage(), e);
- } catch (IOException e) {
+ } catch (IOException e) {
throw new NotificationException(e.getMessage(), e);
- } catch (AddressException e) {
+ } catch (AddressException e) {
throw new NotificationException(e.getMessage(), e);
}
}
/**
+ * Transforms a report into a destination format.
+ *
* @param aReport
- * @return
+ * Report to transform
+ * @param aXslt
+ * XSLT to use.
+ * @return Transformed result.
* @throws IOException
+ * In case of IO problems.
* @throws TransformerException
+ * In case of problems transforming.
*/
- private String transformReport( Element aReport, InputResource aXslt ) throws IOException, TransformerException {
+ private String transformReport(Element aReport, InputResource aXslt)
+ throws IOException, TransformerException {
String reportXmlText = aReport.asXML();
- Document document = new XSLT().transform(reportXmlText.getBytes(), aXslt);
- ByteArrayOutputStream transformed = new ByteArrayOutputStream();
- XMLSerializer serializer = new XMLSerializer(transformed, new OutputFormat());
- serializer.serialize(document);
- return transformed.toString();
+ return new XSLT().textTransform(reportXmlText.getBytes(), aXslt);
}
-
- /**
- * @param args
- */
- public static void main( String[] args ) {
- // TODO Auto-generated method stub
-
- }
-
}