/////////////////////////////////////////////////////////////////
//Copyright (C) 2005 NTT CORPORATION.
//
//	LO終結条件エラーチェックアクションクラス
//
//		変更履歴
//			2005.02.12  新規作成  梅原 浩司
//
//	機能
//
//	このクラスはLO終結条件エラーチェックのアクションクラスです。
//
////////////////////////////////////////////////////////////////

package jp.co.ntt.lms.xmf.actions.xmo.lo.conclusion;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.util.MessageResources;

import jp.co.ntt.lms.xmf.common.CommonFunction;
import jp.co.ntt.lms.Common.status.conclusion.*;

/**
 *  LO終結条件エラーチェックアクションクラス
 * 
 *  このクラスはLO終結条件エラーチェックのアクションクラスです。
 * 
 *  @author 梅原 浩司
 *  @version 1.0
 */
public class LoConclusionErrorCheckAction extends Action {

	/**
	 * executeメソッド
	 * 
	 * @param ActionMapping このアクションが選択されたときに使用されたActionMapping
	 * @param ActionForm 入力フォーム
	 * @param HttpServletRequest HTTPリクエスト
	 * @param HttpServletResponse HTTPレスポンス
	 * @return ActionForward アクションフォワード
	 * @throws Exception 
	 */
public ActionForward execute(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response) throws Exception {

		// メッセージリソース取得
		MessageResources resources = getResources(request, "msg.xmf.xmo.Lo.Conclusion.MessageResources");

		//-------------------------------------------------------------------------
		// 変数宣言
		//-------------------------------------------------------------------------
		String strWkLOID 	= "";	//Work用LOID
		String strErrMsg 	= "";	//構文エラーメッセージ
		String strErrChkRet = "";	//構文エラーチェックの結果(0:正常,1:構文エラー,2:システムエラー)
		boolean bInsMode    = false;

		//-------------------------------------------------------------------------
		// URLパラメータの取得
		//-------------------------------------------------------------------------
		String strParentID 		= CommonFunction.null2blank(request.getParameter("parentID"));
		String strLOID 			= CommonFunction.null2blank(request.getParameter("LoID"));
		String strLOType 		= CommonFunction.null2blank(request.getParameter("LoType"));
		String strConclusion 	= CommonFunction.null2blank(request.getParameter("hdnConclusion"));

		//-------------------------------------------------------------------------
		// 文字化け対応
		//-------------------------------------------------------------------------
		//strConclusion = CommonFunction.encodeSJIS(strConclusion);
		//文字列の両端のスペースを取り除く
		strConclusion = strConclusion.trim();

		//-------------------------------------------------------------------------
		//LOIDの判定(新規登録時：strParentIDを構文チェックにて使用)
		//          (更新登録時：strLOIDを構文チェックにて使用)
		//-------------------------------------------------------------------------
		//新規登録の場合
		if (strLOID.equals(""))
		{
			strWkLOID = strParentID;
			bInsMode = true;

		}
		//更新登録の場合
		else
		{
			strWkLOID = strLOID;
			bInsMode = false;
		}

		//-------------------------------------------------------------------------
		// 完結要件の条件式の構文チェックを行う
		// (NULL または""の場合はチェックしない)
		//-------------------------------------------------------------------------
		if (! strConclusion.equals("") || strConclusion == null)
		{
			// 完結要件文字列と対照LOIDを指定して、インスタンス化
			Conclusion objConclusion = new Conclusion( strConclusion, strWkLOID );

			// 構文チェック
			try {
			    objConclusion.check(bInsMode);
				strErrChkRet = resources.getMessage("STR_ERROR_OK");
			}
			catch( ConclusionParseException pe ) {
			    // 構文例外
			    strErrMsg = pe.getMessage();
				strErrChkRet = resources.getMessage("STR_ERROR_NG");
			}
			catch( ConclusionException ce ) {
			    // 実行時例外
			    // システムエラー処理 COm
				strErrChkRet = resources.getMessage("STR_ERROR_SYS");
			}
		}
		else
		{
			strErrChkRet = resources.getMessage("STR_ERROR_OK");
		}

		request.setAttribute("strConclusion", strConclusion);
		request.setAttribute("strErrChkRet", strErrChkRet);
		request.setAttribute("strErrMsg", strErrMsg);
		
		return mapping.findForward("success");
	}
}
