/////////////////////////////////////////////////////////////////
//Copyright (C) 2005 NTT CORPORATION.
//
//	PerceptionLO「結果一覧」画面表示Actionクラス
//
//		変更履歴
//			2005.02.16  新規作成  氏名 石崎賢太郎
//
//	機能
//
//	PerceptionLOの個別ログ表示Actionクラスです。
//
/////////////////////////////////////////////////////////////////
package jp.co.ntt.lms.xmf.actions.lo.Perception;

import java.util.Vector;

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

import jp.co.ntt.lms.lo.LoTopClient;
import jp.co.ntt.lms.lo.Perception.PerceptionPropertyDef;
import jp.co.ntt.lms.lo.Perception.PerceptionResponseReportData;
import jp.co.ntt.lms.xmo.Environment;
import jp.co.ntt.lms.xmo.MessageData;

import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;

/**
 * PerceptionLOの個別ログ表示Actionクラスです。
 * 
 * @author Kentaro Ishizaki (UNITEC)
 * @version 1.0
 */
public class PerceptionIndividualLogReportAction 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
	{
		// URLパラメータの取得
		String strLoType = request.getParameter( "LoType" );
		String strResultID = request.getParameter( "ResultID" );	// ResultID

		
		// 「受講者個人レポート」情報の取得
		Environment objEnv = new Environment();
		String strLoServerName = objEnv.getLoServerName();

		// エラー画面表示内容格納バッファ
		StringBuffer sb = new StringBuffer();

		LoTopClient objLoTop = new LoTopClient(strLoServerName, strLoType);
		objLoTop.setValue(PerceptionPropertyDef.RESULT_ID, strResultID);
		
		// 検索処理
		if( !objLoTop.execute( "getAccessReport" ) ) {
			// 検索がうまくいかなかった場合
			MessageData objMessage = objLoTop.getMessageData();
			request.setAttribute("message", "");
			request.setAttribute("detail", "");
			request.setAttribute("close", "on");
			request.setAttribute("errorurl", objMessage.getURL());
			return mapping.findForward("error");
		}


		// 検索がうまくいった場合はデータを取得する
		Vector vecReport = (Vector)objLoTop.getExecute();
		
		// 配列にコピー
		String[][] arrayData = new String[vecReport.size()][2];

		String strReportURL = "";
		String strFault = "";
		String strFaultDescription = "";
		for( int i = 0; i < vecReport.size(); i++ ) {
			PerceptionResponseReportData objReport = (PerceptionResponseReportData)vecReport.get(i);
			// SOAPFaultの場合の処理、エラー内容を出力
			if( objReport.getFault() != null && !objReport.getFault().equals("")) {
				strFault = objReport.getFault();
				strFaultDescription = objReport.getFaultDescription();

				// 例外処理
				arrayData[i][0] = strFault;
				arrayData[i][1] = strFaultDescription;
			}
			// URL取得に成功した場合、「受講者個人レポート」画面へ遷移
			else{
				strReportURL = objReport.getURL();
				request.setAttribute("message", "");
				request.setAttribute("detail", "");
				request.setAttribute("close", "on");
				request.setAttribute("errorurl", strReportURL);
				return mapping.findForward("error");
			}
		}
		
		
		// リクエストに変数をセット
		request.setAttribute("arrayData", arrayData);
		
		return mapping.findForward("success");
	}
}
