/////////////////////////////////////////////////////////////////
//Copyright (C) 2005 NTT CORPORATION.
//
//	ロール管理処理　ロールの選択画面表示Actionクラス
//
//		変更履歴
//			2005.02.16  新規作成  氏名 石崎賢太郎
//
//	機能
//
//	ロール選択画面表示Actionクラスです。
//
/////////////////////////////////////////////////////////////////
package jp.co.ntt.lms.xmf.actions.xmo.Roles;

import java.util.Vector;

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

import jp.co.ntt.lms.xmo.Roles.RolesClient;
import jp.co.ntt.lms.xmo.Roles.RolesEnv;

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;

/**
 * ロール選択画面表示Actionクラスです。
 * 
 * @author Kentaro Ishizaki (UNITEC)
 * @version 1.0
 */
public class RolesSelectAction extends Action
{
	/**
	 * strutsフレームワークから呼ばれるメソッドです。
	 * 
	 * @param mapping マッピングオブジェクト。
	 * @param form アクションフォームオブジェクト。
	 * @param request リクエストオブジェクト。
	 * @param response レスポンスオブジェクト。
	 * @return ActionForward アクションフォワードオブジェクト。
	 * @throws Exception
	 */
	public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception
	{
		///////////////////////////////////////////
		// パラメータ取得
		// 	・returnURL	戻りページ		必須
		///////////////////////////////////////////
		String strReturnURL_o = request.getParameter("returnURL"); 		// 戻りページ

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

		///////////////////////////////////////////
		// パラメータチェック
		///////////////////////////////////////////
		if( strReturnURL_o == null || strReturnURL_o.equals( "" ) ) {
			Exception e = new Exception();
			e.printStackTrace();
			request.setAttribute("message", "");
			request.setAttribute("detail", "");
			request.setAttribute("close", "on");
			request.setAttribute("errorurl", "../Com/ComSystemErr.vm");
			return mapping.findForward("error");
		}

		////////////////////////////////////
		//管理選択ロールの取得
		////////////////////////////////////
		RolesClient objRoles = new RolesClient();
		Vector vecRolesList = new Vector();
		String strRoleMax = null;
		int		iRoleMax_o;

		//取得できなかったらエラー
		if(!objRoles.select()){
			// 検索がうまくいかなかった場合
			if( objRoles.isErr() ) {
				// エラーの場合
				response.sendRedirect( objRoles.getURL() );
			}
			else {
				String strMessage =  objRoles.getMessage();
				request.setAttribute("message", strMessage);
				request.setAttribute("detail", "");
				request.setAttribute("close", "on");
				request.setAttribute("errorurl", "");
				return mapping.findForward("error");
			}
		}
		//ロール情報を取得する。
		while(objRoles.next()){
			String[] strRolesInfo = new String[2];
			strRolesInfo[0] = objRoles.getRoleID();
			strRolesInfo[1] = objRoles.getRoleName();
			vecRolesList.add(strRolesInfo);
		}
		//ロール情報リストをベクターから配列にコピーします。
		String[][] strRolesCopy_o = new String[vecRolesList.size()][2];
		vecRolesList.copyInto( strRolesCopy_o );
		
		// ロール最大数を取得する。
		RolesEnv objEnv = RolesEnv.getInstance();
		try{
			strRoleMax = objEnv.getRolesMax();
			iRoleMax_o = Integer.parseInt(strRoleMax);
		}catch( Exception e ){
			String strMessage = resources.getMessage("M053001");
			String strDetail = resources.getMessage("D053002");
			e.printStackTrace();
			request.setAttribute("message", strMessage);
			request.setAttribute("detail", strDetail);
			request.setAttribute("close", "on");
			request.setAttribute("errorurl", "");
			return mapping.findForward("error");
		}
		
		
		// リクエストに変数をセット
		request.setAttribute("strReturnURL_o", strReturnURL_o);
		request.setAttribute("strRolesCopy_o", strRolesCopy_o);
		request.setAttribute("iRoleMax_o", new Integer(iRoleMax_o));
		
		return mapping.findForward("success");
	}
}
