View Javadoc

    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  }