/*
このファイルの中身は、NTT オープンソースライセンス　バージョン 1.0（「本
契約」という）の適用を受けます。
本契約を遵守しない限り、このファイルを使用してはなりません。
本契約のコピーは、次のＵＲＬから入手できます。
【配布サイトのURL】 http://www.oss.ecl.ntt.co.jp/lms/

本契約に基づき頒布されるソフトウェアは、現状のまま、明示又は黙示のあらゆ
る種類の保証なしで、頒布されます。本契約に基づく権利及び制限を律する特定
の文言については、本契約を参照してください。

「オリジナルコード」は、 NTT Cyber Space Laboratories Code です。 
「オリジナルコード」の「初期開発者」は、日本電信電話株式会社です。  
日本電信電話株式会社により創作された部分は、Copyright (C) 2004 
日本電信電話株式会社 です。
全ての権利が留保されます。 
「コントリビュータ」：_____________________________________ 


The contents of this file are subject to the NTT Opensource License
Version 1.0 (the License); you may not use this file except in
compliance with the License. You may obtain a copy of the License at
【配布サイトのURL】 http://www.oss.ecl.ntt.co.jp/lms/

Software distributed under the License is distributed on an AS IS
basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the
License for the specific language governing rights and limitations
under the License.

The Original Code is NTT Cyber Space Laboratories Code .

The Initial Developer of the Original Code is NIPPON TELEGRAPH AND 
TELEPHONE CORPORATION.
Portions created by the NIPPON TELEGRAPH AND TELEPHONE CORPORATION 
are Copyright (C) 2004 NIPPON TELEGRAPH AND TELEPHONE CORPORATION. 
All Rights Reserved.

Contributor(s) ______________________________________.
*/

//
//	MailSendAction.java メール送信Beanクラス
//			変更履歴
//				2004/01/08	新規作成	工藤明洋
//
package jp.co.ntt.lms.xms.common.mail;

import java.util.Collections;
import java.util.Vector;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;

import jp.co.ntt.lms.xmo.Mail.MailClient;
import jp.co.ntt.lms.xmo.Mail.MailConst;
import jp.co.ntt.lms.xmo.Mail.MailTemplateVO;
import jp.co.ntt.lms.xmo.Mail.TemplateListVO;
import jp.co.ntt.lms.xms.framework.XmsBusinessAction;
import jp.co.ntt.lms.xms.framework.XmsException;
import jp.co.ntt.lms.xms.framework.XmsRequest;
import jp.co.ntt.lms.xms.framework.XmsResponse;
import jp.co.ntt.lms.xms.framework.XmsSystemException;
import jp.co.ntt.lms.xms.framework.XmsWarningException;
import jp.co.ntt.lms.xms.logsumup.LoLogCommon_inc;

/**
 * メール送信処理クラスです。<BR>
 *	
 * メールテンプレートフレームを持つ画面からのメール送信処理を行います。
 *	
 */
public class MailTemplateReadAction extends XmsBusinessAction {

	/**
	 * 初期化処理を行います。<BR>
	 * 処理はありません。<BR>
	 * @param xmsRequest リクエストオブジェクト
	 * @param xmsResponse レスポンスオブジェクト
	 * @return なし
	 */
	protected void initProcessRequest( XmsRequest xmsRequest )
		throws XmsException	{
	}

	/**
	 * メール送信処理を行います。<BR>
	 * @param xmsRequest リクエストオブジェクト
	 * @param xmsResponse レスポンスオブジェクト
	 * @return なし
	 * @exception XmsException	処理中に例外が発生した場合
	 */
	protected void processRequest( XmsRequest xmsRequest, XmsResponse xmsResponse )
		throws XmsException {

		try {
			MailTemplateBean bean = new MailTemplateBean();

			TemplateListVO voMailTempList = null;

			// リクエスト情報を取得
			HttpServletRequest request = xmsRequest.getRequest();

			// --- セッションからメール種別を取得 --- //
			// セッションを取得
			HttpSession session = request.getSession();

			// セッションからメール種別を取得します。

			String strMailType = ( String ) session.getAttribute( MailConst.SKEY_MAILTYPE );

			if( strMailType == null ) {
				// メール種別が取得できなかった場合
				// ワーニングとする
				throw new XmsWarningException( "" );
			}


			// --- メールテンプレート一覧の取得 --- //
			// メールテンプレートの一覧を取得します。
			MailClient objMailC = new MailClient();
			if (objMailC.getTemplateList( strMailType ) == true)
			{	// メールテンプレートの一覧を取得できた場合

				Vector vcTemplateList = objMailC.getTemplateListResult();

				// --- メールテンプレート情報の取得 --- //
				// テンプレート一覧から先頭のテンプレートファイルパスを取り出
				// します。
				if (vcTemplateList != null && vcTemplateList.isEmpty() == false) {

					// TemplateListVOのタイトルを比較して順序付けする。
					Collections.sort(vcTemplateList.subList(1, vcTemplateList.size()));

					// リクエストパラメータからテンプレートファイル名を取得します。
					String strFileName = new LoLogCommon_inc().charEncode(request.getParameter("templatetype"));

					String strTemplatePath = "";
					if ( (strFileName != null) && (strFileName.equals("") == false) )
					{	// テンプレートファイル名がパラメータ指定されている場合
						strTemplatePath = objMailC.getTemplateDirectoryPath(strMailType) + strFileName;
					}
					else
					{	// パラメータ指定されていない場合
						voMailTempList = (TemplateListVO)vcTemplateList.get(0);
						strTemplatePath = voMailTempList.getTemplatePath();
					}
	
					if (objMailC.getTemplateInfo( strTemplatePath ) == true)
					{	// メールテンプレートの情報を取得できた場合
	
						// 指定したテンプレートパスからテンプレートの情報を取得します。
						MailTemplateVO voMailInfo = 
							objMailC.getTemplateResult();
	
						// 業務アクション結果に取得情報を設定します。
						bean.setTemplateList( vcTemplateList );
						bean.setTemplateInfo( voMailInfo );
	
					}
				}

				// --- 置換キーワードの取得 --- //
				if (objMailC.getKeywordList() == true)
				{	// 置換キーワードが取得できた場合
					Vector KeywordList = 
						objMailC.getKeywordListResult();

					// 業務アクション結果に置換キーワード情報を設定します。
					bean.setChangeKeywordList( KeywordList );
				}
			}

			xmsResponse.setBusinessBean( bean );
			
		}
		catch(XmsException ex) {
			throw ex;	
		}
		catch (Exception ex)
		{
			//例外処理
			throw new XmsSystemException( ex );
		}

	}

}