/////////////////////////////////////////////////////////////////
//Copyright (C) 2005 NTT CORPORATION.
//
//	WBTʃO@i󋵈ꗗ([U[P)
//
//		ύX
//			2005.01.31  VK쐬  OGA
//
//	@\
//
//	̉ʂ͐i󋵈ꗗ([U[P)\܂
//
/////////////////////////////////////////////////////////////////

/*
 * 쐬: 2005/02/20
 *
 * TODO ̐ꂽt@C̃ev[gύXɂ͎փWv:
 * EBhE - ݒ - Java - R[hEX^C - R[hEev[g
 */
package jp.co.ntt.lms.xmf.actions.lo.wbt.IndividualLog;

import java.text.DecimalFormat;
import java.util.Vector;

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

import jp.co.ntt.lms.xmf.actions.lo.wbt.IndividualLog.inc.*;
import jp.co.ntt.lms.lo.WBT.IndividualLog.*;
import jp.co.ntt.lms.Common.RDF.*;
import jp.co.ntt.lms.xmo.Assignments.AssignmentsClient;
import jp.co.ntt.lms.xmo.util.*;
import jp.co.ntt.lms.xmo.Lo.LoClient;

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

/**
 * @author Administrator
 *
 * TODO ̐ꂽ^Rg̃ev[gύXɂ͎փWv:
 * EBhE - ݒ - Java - R[hEX^C - R[hEev[g
 */
public class UserProgressStatusAction extends Action{
	private IndividualLogMessga_inc IndividualLogMessga_inc = new IndividualLogMessga_inc();
	private IndividualLogCommon_inc IndividualLogCommon_inc = new IndividualLogCommon_inc();
	private IndividualStub_inc IndividualStub_inc = new IndividualStub_inc();
	private IndividualLogComFunc_inc IndividualLogComFunc_inc = new IndividualLogComFunc_inc();

	public ActionForward execute(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response)
			throws Exception {
		///////////////////////////////////////////
		// p[^擾
		// 	ELoID		LoID		// K{
		// 	EuserId	[U[ID	// K{
		// 	ELoType	Lo^Cv	// K{
		// 	EUID		UID			// K{
		///////////////////////////////////////////
		///////////////////////////////////////////
		// p[^擾
		// 	ELoID		LoID		// K{
		// 	EuserId	[U[ID	// K{
		// 	ELoType	Lo^Cv	// K{
		// 	EUID		UID			// K{
		///////////////////////////////////////////
		String strLoID_o         = request.getParameter( IndividualLogCommon_inc.STR_LOID_o );          // LoID
		String strUserID_o       = request.getParameter( IndividualLogCommon_inc.STR_USERID_o );        // [U[ID
		String strLoType_o       = request.getParameter( IndividualLogCommon_inc.STR_LOTYPE_o );        // Lo^Cv
		String strUID_o          = request.getParameter( IndividualLogCommon_inc.STR_UID_o );           // UID

		// RealLOID擾
		///////////////////////////////////////////

		///////////////////////////////////////////
		// p[^`FbN
		///////////////////////////////////////////
		
		// LoID̓̓`FbN
		if( strLoID_o == null || strLoID_o.equals( "" ) ) {
			request.setAttribute("message", IndividualLogMessga_inc.M072001);
			request.setAttribute("detail", IndividualLogMessga_inc.D072001);
			request.setAttribute("close", "on");

			return mapping.findForward("error");
		}
		// [U[ID̓̓`FbN
		if( strUserID_o == null || strUserID_o.equals( "" ) ) {
			request.setAttribute("message", IndividualLogMessga_inc.M072002);
			request.setAttribute("detail", IndividualLogMessga_inc.D072002);
			request.setAttribute("close", "on");

			return mapping.findForward("error");
		}
		// Lo^Cv̓̓`FbN
		if( strLoType_o == null || strLoType_o.equals( "" ) ) {
			request.setAttribute("message", IndividualLogMessga_inc.M072003);
			request.setAttribute("detail", IndividualLogMessga_inc.D072003);
			request.setAttribute("close", "on");

			return mapping.findForward("error");
		}
		// UID̓̓`FbN
		if( strUID_o == null || strUID_o.equals( "" ) ) {
			request.setAttribute("message", IndividualLogMessga_inc.M072004);
			request.setAttribute("detail", IndividualLogMessga_inc.D072004);
			request.setAttribute("close", "on");

			return mapping.findForward("error");
		}

		///////////////////////////////////////////
		// RDFNode̎擾
		// EstrUID_o	UID			K{
		///////////////////////////////////////////
		RDFNode objNode = (RDFNode)IndividualStub_inc.getTargetRDFNode( strUID_o , strLoID_o , request.getSession() );
		if( objNode == null ){
			request.setAttribute("message", IndividualLogCommon_inc.MSG_MAKE_STOREDATA_o);
			request.setAttribute("detail", "");
			request.setAttribute("close", "on");

			return mapping.findForward("error");
		}

		////////////////////////
		// f[^̎擾
		////////////////////////
		IndividualLogUserProgressStatusStoreData objStoreData = new IndividualLogUserProgressStatusStoreData( strLoID_o, strUserID_o, strLoType_o , objNode);
		if( objStoreData.makeStoreData() != true ){
			request.setAttribute("message", IndividualLogCommon_inc.MSG_MAKE_STOREDATA_o);
			request.setAttribute("detail", "");
			request.setAttribute("close", "on");

			return mapping.findForward("error");
		}

		// f[^Ȃꍇ
		if( objStoreData.getMaxData() == 0 ){
			request.setAttribute("message", IndividualLogCommon_inc.MSG_DATA_ZERO_o);
			request.setAttribute("detail", "");
			request.setAttribute("close", "on");

			return mapping.findForward("error");
		}

		Vector vecStoreData = objStoreData.getStoreData(0);

		// ANZX񐔁EݐϊwKԁE_iŐV^ōjEAUEiAU
		// ݐϊwKԂ̂݁AԒPʂ̂߂ɏ_ȉB
		int intAccess = 0, intAccesscnt = 0;
		float fltStudyTime = 0, intStudyTimecnt = 0;
		float fltLastScore = 0;
		int intLastScorecnt = 0;
		float fltHighScore = 0;
		int intHighScorecnt = 0;
		int	intCompleteAU = 0, intCompleteAUcnt = 0;
		int	intPassAU = 0, intPassAUcnt = 0;

		// uAU
		int	intAttendAUcnt = 0;

		// uiwKJn̂ȂA\݂̎u܂ށj
		int	intAttendcnt = 0;

		String strAU_ID = "   ";

		int intAU_ID;

		float fltAverage = 0;
		// ϕ\tH[}bg
		DecimalFormat objAverageFormat = new DecimalFormat( IndividualLogCommon_inc.DEF_AVERAGE_FORMAT );
		// _\tH[}bg
		DecimalFormat objScoreFormat = new DecimalFormat( IndividualLogCommon_inc.DEF_SCORE_FORMAT );

		String	strScore;
		String	strAverage1, strSum1;
		String	strAverage2, strSum2;
		String	strAverage3, strSum3;
		String	strAverage4, strSum4;
		String	strAverage5, strSum5;
		String	strAverage6, strSum6;

		// _ȉʂŎľܓ
		fltAverage = IndividualLogComFunc_inc.getMathRound( (float)intAccess, (float)intAccesscnt );

		// \ptH[}bgɕϊ
		strSum1 = objScoreFormat.format(intAccess);
		strAverage1 = objAverageFormat.format(fltAverage);

		// _ȉʂŎľܓ
		fltAverage = IndividualLogComFunc_inc.getMathRound( (float)fltStudyTime, (float)intStudyTimecnt );

		// \ptH[}bgɕϊ
		strSum2 = objAverageFormat.format(fltStudyTime);
		strAverage2 = objAverageFormat.format(fltAverage);

		// _ȉʂŎľܓ
		fltAverage = IndividualLogComFunc_inc.getMathRound( fltLastScore, (float)intLastScorecnt );

		// \ptH[}bgɕϊ
		strSum3 = objScoreFormat.format(fltLastScore);
		strAverage3 = objAverageFormat.format(fltAverage);

		// _ȉʂŎľܓ
		fltAverage = IndividualLogComFunc_inc.getMathRound( fltHighScore, (float)intHighScorecnt );

		// \ptH[}bgɕϊ
		strSum4 = objScoreFormat.format(fltHighScore);
		strAverage4 = objAverageFormat.format(fltAverage);

		// p[Zg\@_ȉʂŎľܓ
		fltAverage = IndividualLogComFunc_inc.getMathRound2( (float)intCompleteAUcnt, (float)intAttendcnt );

		// \ptH[}bgɕϊ
		strSum5 = objScoreFormat.format(intCompleteAUcnt);
		strAverage5 = objAverageFormat.format(fltAverage);

		// p[Zg\@_ȉʂŎľܓ
		fltAverage = IndividualLogComFunc_inc.getMathRound2( (float)intPassAUcnt, (float)intAttendcnt );

		// \ptH[}bgɕϊ
		strSum6 = objScoreFormat.format(intPassAUcnt);
		strAverage6 = objAverageFormat.format(fltAverage);

		request.setAttribute("IndividualLogCommon_inc",IndividualLogCommon_inc);
		request.setAttribute("objStoreData",objStoreData);
		request.setAttribute("strLoID_o",strLoID_o);
		request.setAttribute("IndividualLogComFunc_inc",IndividualLogComFunc_inc);
		request.setAttribute("objAverageFormat",objAverageFormat);
		request.setAttribute("objScoreFormat",objScoreFormat);
		request.setAttribute("strAU_ID",strAU_ID);
						
		request.setAttribute("strSum1",strSum1);
		request.setAttribute("strSum2",strSum2);
		request.setAttribute("strSum3",strSum3);
		request.setAttribute("strSum4",strSum4);
		request.setAttribute("strSum5",strSum5);
		request.setAttribute("strSum6",strSum6);
				
		request.setAttribute("strAverage1",strAverage1);
		request.setAttribute("strAverage2",strAverage2);
		request.setAttribute("strAverage3",strAverage3);
		request.setAttribute("strAverage4",strAverage4);
		request.setAttribute("strAverage5",strAverage5);
		request.setAttribute("strAverage6",strAverage6);
		request.setAttribute("intLastScorecnt",new Integer(intLastScorecnt));
		request.setAttribute("intHighScorecnt",new Integer(intHighScorecnt));
		request.setAttribute("intAttendcnt",new Integer(intAttendcnt));
		
		
		return mapping.findForward("success");
	}
}
