/////////////////////////////////////////////////////////////////
//Copyright (C) 2005 NTT CORPORATION.
//
//	LO削除アクションクラス
//
//		変更履歴
//			2005.02.11  新規作成  梅原 浩司
//
//	機能
//
//	このクラスは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 java.net.URLEncoder;

import jp.co.ntt.lms.xmo.MenuData;
import jp.co.ntt.lms.xmo.MessageData;
import jp.co.ntt.lms.xmo.Environment;
import jp.co.ntt.lms.xmo.Lo.LoClient;
import jp.co.ntt.lms.lo.LoTopClient;

/**
 *  LO削除アクションクラス
 * 
 *  このクラスはLO削除画面のアクションクラスです。
 * 
 *  @author 梅原 浩司
 *  @version 1.0
 */
public class LoDeleteAction 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.MessageResources");

		// requestからLoIDと戻りURLを取得
		String strLoID = request.getParameter("selectID");
		if(strLoID == null)
		{
			strLoID = "";
		}
		String strReturnURL = request.getParameter("returnURL");
		if(strReturnURL == null)
		{
			strReturnURL = "";
		}
		// 親IDを取得
		String strParentID = request.getParameter("parentID");
		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");
		}

		///////////////////////////////////////////////////////////////////////////
		// LoXMOからLoIDをキーにLoTypeと外部IDを取得
		///////////////////////////////////////////////////////////////////////////
		LoClient objLoXMO = new LoClient();
		objLoXMO.setWhereLoID(strLoID);
		if(!objLoXMO.select())
		{
			// LoIDによるLoXMO取得失敗
			if(objLoXMO.isErr())
			{
				request.setAttribute("errorurl", objLoXMO.getURL());
			}
			else
			{
				request.setAttribute("message", objLoXMO.getMessage());
				request.setAttribute("detail", "");
				request.setAttribute("close", "");
			}
			return mapping.findForward("error");
		}
		// LoTypeと外部ID取得
		String strLoType    = "";
		String strForeignID = "";
		String strKeyWord = "";
		if(objLoXMO.next())
		{
			// LoIDから取得しているため必ず１件のはず
			strLoType    = objLoXMO.getLoType();
			strForeignID = objLoXMO.getForeignID();
			strKeyWord = objLoXMO.getKeyWord();
		}
		else
		{
			String strMessage = "ＬＯタイトルと外部ＩＤ取得失敗 LoID : " + strLoID;
			request.setAttribute("message", strMessage);
			request.setAttribute("detail", "");
			request.setAttribute("close", "");
			return mapping.findForward("error");
		}

		///////////////////////////////////////////////////////////////////////////
		// Loからメニューリスト取得
		///////////////////////////////////////////////////////////////////////////
		Environment objEnv     = new Environment();
		String strLoServerName = objEnv.getLoServerName();
		LoTopClient objLtc     = new LoTopClient(strLoServerName, strLoType);
		// LOのセットアップメニューで削除を設定
		objLtc.setValue( LoTopClient.SETUP_STATUS, LoTopClient.SETUP_DELETE );
		if(!objLtc.getMenuList())
		{
			// メニュー取得失敗ならばメッセージデータにエラーが存在
			MessageData objMd = (MessageData)objLtc.getMessageData();
			request.setAttribute("message", objMd.getMessage());
			request.setAttribute("detail", "");
			request.setAttribute("close", "");
			return mapping.findForward("error");
		}
		int intMenuSize = objLtc.getMenuListSize();
		for(int i = 0; i < intMenuSize; i++)
		{
			MenuData objMenu   = objLtc.getMenuData(i);
			String strURL      = objMenu.getURL();
			String strMenuType   = objMenu.getLoMenuType();
			String strUserType = objMenu.getLoMenuUser();
			// メニュー種別更新かつ指導者ならば
			if(strMenuType.equals(MenuData.DELETE_MENU) &&
				strUserType.equals(MenuData.INSTRUCTOR_MENU))
			{
		
				strReturnURL    = URLEncoder.encode(strReturnURL, "UTF-8");
				strKeyWord      = URLEncoder.encode(strKeyWord, "UTF-8");
				strForeignID    = URLEncoder.encode(strForeignID, "UTF-8");	

				String strParam = "?LoID=" + strLoID +
								  "&parentID=" + strParentID +
								  "&LoType=" + strLoType +
								  "&ForeignID=" + strForeignID +
								  "&KeyWord=" + strKeyWord +
								  "&returnURL=" + strReturnURL;

				request.setAttribute("strURL", strURL);
				request.setAttribute("strParam", strParam);
				return mapping.findForward("success");
			}
		}
		
		return mapping.findForward("success");
	}
}
