/*
 * 作成日: 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.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 GroupsUpdateAction 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" );

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

		///////////////////////////////////////////
		// パラメータチェック
		///////////////////////////////////////////
		if( ( strGroupID_o == null ) || strGroupID_o.equals( "" ) ) {
			String strMessage =  msgResources.getMessage("M022004");
			String strDetail = msgResources.getMessage("D022004");
			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 strCustomMsgDir_o = "";// コメント
		String strGroupType_o = "";	// グループタイプ



		/////////////////////////////////////////////////////////////////////
		// アクションフラグがonの場合、送信されてきた更新情報を取得します
		/////////////////////////////////////////////////////////////////////
		if( strAction != null && strAction.equals( "on" ) ) {
			strGroupName_o = request.getParameter("group_name"); 	// グループ名
			strForeignID_o = request.getParameter("foreignID"); 	// 外部ID
			strCustomMsgDir_o = request.getParameter("txtDescription"); 	// コメント
			strGroupType_o = request.getParameter("group_type");;		// グループタイプ
		}

		/////////////////////////////////////////////////////////////////////
		// アクションフラグがoffの場合、データベースから取得する。
		/////////////////////////////////////////////////////////////////////
		else {
			//更新するグループ情報をデータベースから取得する。
			GroupsClient objGroups = new GroupsClient();
			// 検索条件の設定
			objGroups.setWhereGroupID( strGroupID_o );
			if( !objGroups.select() ) {
				// 検索がうまくいかなかった場合
				if( objGroups.isErr() ) {
					// エラーの場合
					response.sendRedirect( objGroups.getURL() );
				}
				else {
					String strMessage =  objGroups.getMessage();
					return getParamErrForward(map, request, strMessage, null, true );
				}
			}

			// グループ名の取得
			if( objGroups.next() ) {
				strGroupName_o = objGroups.getGroupName();
				strForeignID_o = objGroups.getForeignID();
				strCustomMsgDir_o = objGroups.getCustomMsgDir();
				strGroupType_o = objGroups.getGroupType();
			}
			else {
				//グループ名が存在しない場合エラーを出力する
				String strMessage =  msgResources.getMessage("M022007");
				return getParamErrForward(map, request, strMessage, null, true );
			}
		}

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

			// 更新情報の設定
			objGroups.setGroupName( strGroupName_o );			// グループ名指定
			objGroups.setForeignID( strForeignID_o );			// 外部ID
			objGroups.setCustomMsgDir( strCustomMsgDir_o );	// コメント指定
			// グループ種別がXMS2種別("1")のときはオブジェクトIDは外部IDと同値
			if( strGroupType_o != null && strGroupType_o.equals( "1" ) ) {
				objGroups.setOid( strForeignID_o );				// オブジェクトID（外部IDと同値)
			}
			// 更新条件の設定
			objGroups.setWhereGroupID( strGroupID_o );		// 更新グループID

			// 更新メソッド実行
			if( !objGroups.update() ) {
				// 更新がうまくいかなかった場合
				if( objGroups.isErr() ) {
					// エラーの場合
					response.sendRedirect( objGroups.getURL() );
				}
				else {
					String strMessage =  objGroups.getMessage();
					return getParamErrForward(map, request, strMessage, null, true );
				}
			}

			// エンコード変換処理
			//strGroupName_o = ComFunction.encodeSJIS( strGroupName_o );
			//strForeignID_o = ComFunction.encodeSJIS( strForeignID_o );
			//strCustomMsgDir_o = ComFunction.encodeSJIS( strCustomMsgDir_o );
		}
		
		// 表示用データを格納
		request.setAttribute("strAction", strAction);
		request.setAttribute("strCustomMsgDir_o", strCustomMsgDir_o);
		request.setAttribute("strForeignID_o", strForeignID_o);
		request.setAttribute("strGroupID_o", strGroupID_o);
		request.setAttribute("strGroupName_o", strGroupName_o);
		request.setAttribute("strGroupType_o", strGroupType_o);
		request.setAttribute("strReturnURL_o", strReturnURL_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");
	}
}
