All Downloads are FREE. Search and download functionalities are using the official Maven repository.

nablarch.common.mail.MailRequester Maven / Gradle / Ivy

The newest version!
package nablarch.common.mail;

import nablarch.common.idgenerator.IdGenerator;
import nablarch.core.db.connection.AppDbConnection;
import nablarch.core.db.transaction.SimpleDbTransactionExecutor;
import nablarch.core.db.transaction.SimpleDbTransactionManager;
import nablarch.core.util.StringUtil;
import nablarch.core.util.annotation.Published;

/**
 * メール送信要求を行うクラス。
 * 

* 本クラスのメール送信要求メソッドを呼び出すことで、メール送信要求を管理用テーブル群にINSERTできる。 *

* メール送信要求の種類について
* メール送信要求は以下の二種類がある。 *

    *
  • 定型メール送信({@link TemplateMailContext})。 * 予めデータベースに登録されたテンプレートを元にメールを作成・送信する。
  • *
  • 非定型メール送信({@link FreeTextMailContext})。任意の件名・本文でメールを作成・送信する。
  • *
* メールの送信単位
* メール送信要求はメール送信要求APIの呼び出し毎に一つ作成さる。一つのメール送信要求につき一通のメールが送信される。 * * @author Shinsuke Yoshio * * @see MailUtil#getMailRequester() */ @Published(tag = "architect") public class MailRequester { /** メール共通設定を保持するデータオブジェクト */ private MailRequestConfig mailRequestConfig; /** メール関連のコード値を保持するデータオブジェクト */ private MailConfig mailConfig; /** メール送信要求IDジェネレータ */ private IdGenerator mailRequestIdGenerator; /** メール要求管理テーブルのスキーマ情報 */ private MailRequestTable mailRequestTable; /** メール送信先管理テーブルのスキーマ情報 */ private MailRecipientTable mailRecipientTable; /** 添付ファイル管理テーブルのスキーマ情報 */ private MailAttachedFileTable mailAttachedFileTable; /** メール送信時のDB登録に利用するトランザクションマネージャ */ private SimpleDbTransactionManager mailTransactionManager; /** 定型メールの件名と本文を構築するテンプレートエンジン処理クラス */ private TemplateEngineMailProcessor templateEngineMailProcessor; /** テンプレートエンジンを使用して件名と本文の準備をするクラス */ private final TemplateEngineContextPreparer templateEngineContextPreparer = new TemplateEngineContextPreparer(); /** * 非定型メールの送信要求を行う。 * * @param ctx 非定型メール送信要求 * @return メール送信要求ID * @throws AttachedFileSizeOverException * 添付ファイルのサイズが上限値を超えた場合 * @throws RecipientCountException * 宛先数が上限値を超えた場合 */ @Published public String requestToSend(FreeTextMailContext ctx) throws AttachedFileSizeOverException, RecipientCountException { return sendMail(ctx); } /** * 定型メールの送信要求を行う。 * * @param ctx 定型メール送信要求 * @return メール送信要求ID * @throws AttachedFileSizeOverException * 添付ファイルのサイズが上限値を超えた場合 * @throws RecipientCountException * 宛先数が上限値を超えた場合 */ @Published public String requestToSend(TemplateMailContext ctx) throws AttachedFileSizeOverException, RecipientCountException { templateEngineContextPreparer.prepareSubjectAndMailBody(ctx, templateEngineMailProcessor); return sendMail(ctx); } /** * メール送信要求処理 * * @param ctx * メール送信要求 * @return メール送信要求ID */ private String sendMail(final MailContext ctx) { // メール送信要求データをバリデーション ctx.validate(mailRequestConfig); // 返信先・差し戻し先・文字セットの指定がない場合、デフォルト値を適用。 if (StringUtil.isNullOrEmpty(ctx.getReturnPath())) { ctx.setReturnPath(mailRequestConfig.getDefaultReturnPath()); } if (StringUtil.isNullOrEmpty(ctx.getReplyTo())) { ctx.setReplyTo(mailRequestConfig.getDefaultReplyTo()); } if (StringUtil.isNullOrEmpty(ctx.getCharset())) { ctx.setCharset(mailRequestConfig.getDefaultCharset()); } if (mailTransactionManager != null) { return new SimpleDbTransactionExecutor(mailTransactionManager) { @Override public String execute(final AppDbConnection connection) { return setupMailWithTransactionName(ctx, mailTransactionManager.getDbTransactionName()); } }.doTransaction(); } else { return setupMail(ctx); } } /** * メール送信要求IDの採番、送信DBへの登録処理 * * @param ctx メール送信要求 * @param transactionName トランザクション名 * @return メール送信要求ID */ private String setupMailWithTransactionName(final MailContext ctx, final String transactionName) { // メール送信要求ID採番 final String mailRequestId = mailRequestIdGenerator.generateId(mailConfig.getMailRequestSbnId()); // 各DBに登録 mailRequestTable.insert(mailRequestId, ctx, transactionName); mailRecipientTable.insert(mailRequestId, ctx, mailConfig, transactionName); mailAttachedFileTable.insert(mailRequestId, ctx, transactionName); return mailRequestId; } /** * メール送信要求IDの採番、送信DBへの登録処理 * * @param ctx メール送信要求 * @return メール送信要求ID */ private String setupMail(final MailContext ctx) { // メール送信要求ID採番 final String mailRequestId = mailRequestIdGenerator.generateId(mailConfig.getMailRequestSbnId()); mailRequestTable.insert(mailRequestId, ctx); mailRecipientTable.insert(mailRequestId, ctx, mailConfig); mailAttachedFileTable.insert(mailRequestId, ctx); return mailRequestId; } /** * メール送信要求共通設定を保持するデータオブジェクトを設定する。 * * @param mailRequestConfig * メール送信要求共通設定を保持するデータオブジェクト */ public void setMailRequestConfig(MailRequestConfig mailRequestConfig) { this.mailRequestConfig = mailRequestConfig; } /** * メール関連のコード値を保持するデータオブジェクトを設定する。 * * @param mailConfig * メール関連のコード値を保持するデータオブジェクト */ public void setMailConfig(MailConfig mailConfig) { this.mailConfig = mailConfig; } /** * メール送信要求IDジェネレータを設定する。 * * @param mailRequestIdGenerator * メール送信要求IDジェネレータ */ public void setMailRequestIdGenerator(IdGenerator mailRequestIdGenerator) { this.mailRequestIdGenerator = mailRequestIdGenerator; } /** * mailSendRequestTable メール送信要求管理テーブルのスキーマ情報を設定する。 * * @param mailRequestTable * メール送信要求管理テーブルのスキーマ。 */ public void setMailRequestTable(MailRequestTable mailRequestTable) { this.mailRequestTable = mailRequestTable; } /** * メール送信先管理テーブルのスキーマ情報を設定する。 * * @param mailRecipientTable * メール送信先管理テーブルのスキーマ情報 */ public void setMailRecipientTable(MailRecipientTable mailRecipientTable) { this.mailRecipientTable = mailRecipientTable; } /** * 添付ファイル管理テーブルのスキーマ情報を設定する。 * * @param mailAttachedFileTable * 添付ファイル管理テーブルのスキーマ情報 */ public void setMailAttachedFileTable( MailAttachedFileTable mailAttachedFileTable) { this.mailAttachedFileTable = mailAttachedFileTable; } /** * メール送信時に利用するトランザクションマネージャを設定する。 * * @param mailTransactionManager * トランザクションマネージャ */ public void setMailTransactionManager(SimpleDbTransactionManager mailTransactionManager) { this.mailTransactionManager = mailTransactionManager; } /** * 定型メールの件名と本文を構築するテンプレートエンジン処理クラスを設定する。 * * @param templateEngineMailProcessor * 定型メールの件名と本文を構築するテンプレートエンジン処理クラス */ public void setTemplateEngineMailProcessor( TemplateEngineMailProcessor templateEngineMailProcessor) { this.templateEngineMailProcessor = templateEngineMailProcessor; } }




© 2015 - 2025 Weber Informatics LLC | Privacy Policy