1 package com.ozacc.mail.impl; 2 3 import java.io.File; 4 import java.io.IOException; 5 6 import org.w3c.dom.Document; 7 import org.w3c.dom.Element; 8 import org.xml.sax.SAXException; 9 10 import com.ozacc.mail.Mail; 11 import com.ozacc.mail.MailBuildException; 12 import com.ozacc.mail.MailBuilder; 13 14 /*** 15 * メールデータのXMLファイルからMailインスタンスを生成するクラス。 16 * <p> 17 * ソースXMLを読み込む際に、DTDバリデーションが実行されますので妥当なXMLデータ(Valid XML Document)でなければいけません。 18 * メールデータXMLのDTDは、<a href="http://www.ozacc.com/library/dtd/ozacc-mail.dtd">http://www.ozacc.com/library/dtd/ozacc-mail.dtd</a>を参照。 19 * 20 * @since 1.0.1 21 * @author Tomohiro Otsuka 22 * @version $Id: XMLMailBuilderImpl.java,v 1.5 2004/09/17 23:07:16 otsuka Exp $ 23 */ 24 public class XMLMailBuilderImpl extends AbstractXMLMailBuilder implements MailBuilder { 25 26 /*** 27 * コンストラクタ。 28 */ 29 public XMLMailBuilderImpl() { 30 super(); 31 } 32 33 /*** 34 * @see com.ozacc.mail.MailBuilder#buildMail(java.lang.String) 35 */ 36 public Mail buildMail(String classPath) throws MailBuildException { 37 Document doc; 38 try { 39 doc = getDocumentFromClassPath(classPath); 40 } catch (SAXException e) { 41 throw new MailBuildException("XMLのパースに失敗しました。" + e.getMessage(), e); 42 } catch (IOException e) { 43 throw new MailBuildException("XMLファイルの読み込みに失敗しました。", e); 44 } 45 46 return buildMail(doc); 47 } 48 49 /*** 50 * @see com.ozacc.mail.MailBuilder#buildMail(java.io.File) 51 */ 52 public Mail buildMail(File file) throws MailBuildException { 53 Document doc; 54 try { 55 doc = getDocumentFromFile(file); 56 } catch (SAXException e) { 57 throw new MailBuildException("XMLのパースに失敗しました。" + e.getMessage(), e); 58 } catch (IOException e) { 59 throw new MailBuildException("XMLファイルの読み込みに失敗しました。", e); 60 } 61 62 return buildMail(doc); 63 } 64 65 /*** 66 * DOM DocumentからMailインスタンスを生成します。 67 * 68 * @param doc メールデータのDOM Document 69 * @return 生成されたMailインスタンス 70 */ 71 protected Mail buildMail(Document doc) { 72 Element root = doc.getDocumentElement(); 73 74 Mail mail = new Mail(); 75 setReturnPath(root, mail); 76 setFrom(root, mail); 77 setRecipients(root, mail); 78 setReplyTo(root, mail); 79 setSubject(root, mail); 80 setText(root, mail); 81 82 setHtml(root, mail); 83 84 return mail; 85 } 86 87 }