/*
 * 作成日: 2005/02/17
 *
 * TODO この生成されたファイルのテンプレートを変更するには次へジャンプ:
 * ウィンドウ - 設定 - Java - コード・スタイル - コード・テンプレート
 */
package jp.co.ntt.lms.xmf.actions.xmo.Groups;

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

import jp.co.ntt.lms.xmf.xmo.Com.ComFunction;
import jp.co.ntt.lms.xmo.Environment;
import jp.co.ntt.lms.xmo.Groups.GroupsClient;

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;

/**
 * @author Administrator
 *
 * TODO この生成された型コメントのテンプレートを変更するには次へジャンプ:
 * ウィンドウ - 設定 - Java - コード・スタイル - コード・テンプレート
 */
public class GroupsInsertAction extends Action {

	/* (非 Javadoc)
	 * @see org.apache.struts.action.Action#execute(org.apache.struts.action.ActionMapping, org.apache.struts.action.ActionForm, javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)
	 */
	public ActionForward execute(ActionMapping map, ActionForm form,
			HttpServletRequest request, HttpServletResponse response) throws Exception {

		// メッセージリソース取得
		MessageResources msgResources = getResources(request, "msg.xmf.xmo.Groups.GroupsMessage");
		
		// キャッシュ無効処理
		response.setHeader( "cache-control", "no-cache" );

		///////////////////////////////////////////
		// パラメータ取得
		// 	・parentID	親グループのID	必須
		// 	・returnURL	戻りページ		必須
		//	・action	アクションフラグ
		///////////////////////////////////////////
		String strParentID_o = request.getParameter("parentID");	// 親グループのID
		String strReturnURL_o = request.getParameter("returnURL"); // 戻りページ
		String strAction = request.getParameter( "action" );	//アクションフラグ

		///////////////////////////////////////////
		// パラメータチェック
		///////////////////////////////////////////
		if( ( strParentID_o == null || strParentID_o.equals( "" ) ) ) {
			String strMessage = msgResources.getMessage("M022001");
			String strDetail = msgResources.getMessage("D022001");
			return getParamErrForward(map, request, strMessage, strDetail, true );
		}
		if( strReturnURL_o == null || strReturnURL_o.equals( "" ) ) {
			String strMessage = msgResources.getMessage("M022006");
			return getParamErrForward(map, request, strMessage, null, true );
		}

		/////////////////////////////////////////////////////////////////////
		// フィールド入力文字列
		/////////////////////////////////////////////////////////////////////
		String strGroupName_o = "";	// グループ名
		String strForeignID_o = "";	// 外部ID
		String strDeleteFlag = "";	// 隠しフラグ
		String strGroupType = "";	// グループタイプ
		String strCustomMsgDir_o = "";// コメント


		String strMessage = null;	//サーバエラーメッセージ
		//XMsS.iniファイルからユーザPrefix情報を取得する
		Environment ObjEnv = new Environment();
		String StrPrefix=(String)ObjEnv.getGrPrefix();


		/////////////////////////////////////////////////////////////////////
		// アクションフラグがonの場合、送信されてきた登録情報を取得します
		/////////////////////////////////////////////////////////////////////
		if( strAction != null && strAction.equals( "on" ) ) {
			strGroupName_o = request.getParameter("group_name"); 	// グループ名

			//XMS.iniファイルにユーザPrefixが設定されていない場合
			if ( StrPrefix == null ){
				strForeignID_o = request.getParameter("foreignID"); 	// 外部ID
			}

			strCustomMsgDir_o = request.getParameter("txtDescription"); 	// コメント
			strDeleteFlag = "0";	// 隠しフラグ(固定)
			strGroupType = "1";		// グループタイプ
		}

		////////////////////////////////////////////////////
		// アクションフラグがonの場合、登録処理
		////////////////////////////////////////////////////
		if( strAction != null && strAction.equals( "on" ) ) {
			GroupsClient objGroups = new GroupsClient();

			// パラメータ設定
			objGroups.setGroupName( strGroupName_o );	// グループ名指定

			//XMS.iniファイルにユーザPrefixが設定されていない場合
			if ( StrPrefix == null ){
				objGroups.setForeignID( strForeignID_o );	// 外部ID指定
			}

			objGroups.setCustomMsgDir( strCustomMsgDir_o );	// コメント指定
			objGroups.setGroupType( "1" );			// グループタイプ(固定)
			objGroups.setDeleteFlag( "0" );			// 隠しフラグ(固定)
			objGroups.setParentID( strParentID_o );	// 親グループID

			// 登録メソッド実行
			if( !objGroups.insert() ) {
				// 登録がうまくいかなかった場合
				if( objGroups.isErr() ) {
					// エラーの場合
					request.setAttribute("MessageData", objGroups.getMessageData());
					return map.findForward("error");
				}
				else {

					strMessage =  objGroups.getMessage();

				}

			}
			// エンコード変換処理
			//strGroupName_o = ComFunction.encodeSJIS( strGroupName_o );
			//strForeignID_o = ComFunction.encodeSJIS( strForeignID_o );
			//strCustomMsgDir_o = ComFunction.encodeSJIS( strCustomMsgDir_o );
		}

		// 表示用データを格納
		request.setAttribute("strMessage", strMessage);
		request.setAttribute("strAction", strAction);
		request.setAttribute("strReturnURL_o", strReturnURL_o);
		request.setAttribute("strParentID_o", strParentID_o);
		request.setAttribute("StrPrefix", StrPrefix);
		request.setAttribute("strGroupName_o", strGroupName_o);
		request.setAttribute("strForeignID_o", strForeignID_o);
		request.setAttribute("strCustomMsgDir_o", strCustomMsgDir_o);
								
		return map.findForward("success");
	}

	private ActionForward getParamErrForward(ActionMapping map, HttpServletRequest request, String strMessage, String strDetail, boolean isClose){
		request.setAttribute("message", strMessage);
		request.setAttribute("detail", strDetail);
		if( isClose ) {
			request.setAttribute("close", "on");
		}
		return map.findForward("paramError");
	}
}
