/////////////////////////////////////////////////////////////////
//Copyright (C) 2005 NTT CORPORATION.
//
//	LO登録メインアクションクラス
//
//		変更履歴
//			2005.02.07  新規作成  梅原 浩司
//
//	機能
//
//	このクラスはLO登録メインのアクションクラスです。
//
////////////////////////////////////////////////////////////////

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

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.xmo.*;
import jp.co.ntt.lms.lo.*;

/**
 *  LO登録メインアクションクラス
 * 
 *  このクラスはLO登録メインのアクションクラスです。
 * 
 *  @author 梅原 浩司
 *  @version 1.0
 */
public class LoInsertMainAction 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 {

		///////////////////////////////////////////
		// パラメータ取得
		// 	・parentID	親LoのID	必須
		// 	・returnURL	戻りページ		必須
		//	・strLoType	LO種別
		///////////////////////////////////////////
		String strParentID = request.getParameter( "parentID" );	// 親LoのID
		String strReturnURL = request.getParameter( "returnURL" );	// 戻りページ
		String strLoType = request.getParameter( "LoType" );		// Lo種別
		
		// メッセージリソース取得
		MessageResources resources = getResources(request);

		///////////////////////////////////////////
		// パラメータチェック
		///////////////////////////////////////////
		if( strParentID == null || strParentID.equals( "" ) ) {
			request.setAttribute("message", resources.getMessage("M042003"));
			request.setAttribute("detail", resources.getMessage("D042003"));
			request.setAttribute("close", "on");
			return mapping.findForward("error");
		}
		if( strReturnURL == null || strReturnURL.equals( "" ) ) {
			request.setAttribute("message", resources.getMessage("M042002"));
			request.setAttribute("detail", resources.getMessage("D042002"));
			request.setAttribute("close", "on");
			return mapping.findForward("error");
		}

		// パラメータの作成
		String strParam = "";

		strParam = "?parentID=" + strParentID + "&LoType=" + strLoType + "&returnURL=" + java.net.URLEncoder.encode( strReturnURL, "UTF-8");

		// LO種別の登録画面を取得する
		Environment objEnv = new Environment();
		String strLoServerName = objEnv.getLoServerName();
		LoTopClient objLoTop = new LoTopClient(strLoServerName, strLoType);

		String strLoInsertURL = null;
		// メニューを取得する
		// LOのセットアップメニューで登録を設定
		objLoTop.setValue( LoTopClient.SETUP_STATUS, LoTopClient.SETUP_INSERT );
		if( objLoTop.getMenuList() ) {
			// メニュー取得が成功した場合
			for( int i = 0; i < objLoTop.getMenuListSize(); i++ ) {
				// 登録種別のものがあったら、リダイレクト
				MenuData objMenu = objLoTop.getMenuData(i);
				if( objMenu.getLoMenuType().equals( MenuData.INSERT_MENU ) ) {
					strLoInsertURL = objMenu.getURL();
				}
			}
		}
		
		request.setAttribute("strParentID_o", strParentID);
		request.setAttribute("strReturnURL_o", strReturnURL);
		request.setAttribute("strLoType_o", strLoType);
		request.setAttribute("strLoInsertURL_o", strLoInsertURL);
		request.setAttribute("strLoInsertParam_o", strParam);
		
		return mapping.findForward("success");
	}
}
