/////////////////////////////////////////////////////////////////
//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 java.util.Vector;

import jp.co.ntt.lms.xmo.Lo.LoClient;

/**
 *  LO登録トップアクションクラス
 * 
 *  このクラスはLO登録トップのアクションクラスです。
 * 
 *  @author 梅原 浩司
 *  @version 1.0
 */
public class LoInsertTopAction 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_o	LO種別
		///////////////////////////////////////////
		String strParentID_o = request.getParameter("parentID");	// 親LoのID
		String strReturnURL_o = request.getParameter("returnURL");	// 戻りページ
		String strLoType_o = request.getParameter("LoType");		// LO種別
		
		// メッセージリソース取得
		MessageResources resources = getResources(request);
		
		///////////////////////////////////////////
		// パラメータチェック
		///////////////////////////////////////////
		if( strParentID_o == null || strParentID_o.equals( "" ) ) {
			request.setAttribute("message", resources.getMessage("M042003"));
			request.setAttribute("detail", resources.getMessage("D042003"));
			request.setAttribute("close", "on");
			return mapping.findForward("error");
		}
		if( strReturnURL_o == null || strReturnURL_o.equals( "" ) ) {
			request.setAttribute("message", resources.getMessage("M042002"));
			request.setAttribute("detail", resources.getMessage("D042002"));
			request.setAttribute("close", "on");
			return mapping.findForward("error");
		}

		//LO種別情報を取得します
		LoClient objLo = new LoClient();

		// 親IDのLO種別を取得します
		objLo.setWhereLoID( strParentID_o );
		if( !objLo.select() ) {
			// 検索がうまくいかなかった場合
			if( objLo.isErr() ) {
				// エラーの場合
				request.setAttribute("errorurl", objLo.getURL());
			}
			else {
				request.setAttribute("message", objLo.getMessage());
				request.setAttribute("detail", "");
				request.setAttribute("close", "on");
			}
			return mapping.findForward("error");
		}
		if( objLo.next() ) {
			String strParentLoType = objLo.getLoType();
			// コンテナ以外の場合は登録できない
			if( !strParentLoType.equals( "0" ) ) {
				request.setAttribute("message", resources.getMessage("M042004"));
				request.setAttribute("detail", resources.getMessage("D042004"));
				request.setAttribute("close", "on");
				return mapping.findForward("error");
			}
		}

		// Lo種別一覧を取得します
		objLo.clear();
		if( !objLo.selectLoType() ) {
			request.setAttribute("message", resources.getMessage("M042004"));
			request.setAttribute("detail", resources.getMessage("D042004"));
			request.setAttribute("close", "on");
			request.setAttribute("errorurl", objLo.getURL());
			return mapping.findForward("error");
		}

		Vector vecLoTypeList = new Vector();
		while( objLo.next() ) {
			// LOサブ種別が"0"(主LO)のもののみリストに表示する
			if( objLo.getLoSubType().equals( "0" ) ) {
				String[] strLoInfo_o = new String[2];
				strLoInfo_o[0] = objLo.getLoType();
				strLoInfo_o[1] = objLo.getTypeName();
				vecLoTypeList.add( strLoInfo_o );
			}
		}

		//LO種別一覧をベクターから配列にコピーします。
		String[][] strLoTypeCopy_o = new String[vecLoTypeList.size()][2];
		vecLoTypeList.copyInto( strLoTypeCopy_o );
		
		// VMに渡す変数
		request.setAttribute("strParentID_o", strParentID_o);
		request.setAttribute("strReturnURL_o", strReturnURL_o);
		request.setAttribute("strLoType_o", strLoType_o);
		request.setAttribute("strLoTypeCopy_o", strLoTypeCopy_o);
		
		return mapping.findForward("success");
	}
}
