/*
 * 作成日: 2005/10/12
 *
 * TODO この生成されたファイルのテンプレートを変更するには次へジャンプ:
 * ウィンドウ - 設定 - Java - コード・スタイル - コード・テンプレート
 */
package jp.co.ntt.lms.otm.util;

import javax.servlet.http.HttpSession;

import jp.co.ntt.lms.otm.OTMSession;

/**
 * @author yasu
 *
 * TODO この生成された型コメントのテンプレートを変更するには次へジャンプ:
 * ウィンドウ - 設定 - Java - コード・スタイル - コード・テンプレート
 */
public class OTMSessionUtil
{

	/**
	 * OTMセッションの開始時に呼び出す。
	 * OTMセッションは ユーザーが、メソッドLOを学習開始する際に開始される。
	 * 
	 * @param userId OTMセッションのユーザーID
	 * @param loID 実行中のLOID
	 * @param realUserID LMSにログイン中のユーザーID
	 * @param session
	 * @throws Exception
	 */
	public static void startOTMSession(String userId, String loID, String realUserID, HttpSession session) throws Exception
	{
		OTMSession otmSession = new OTMSession();
		otmSession.setUserID(userId);
		otmSession.setLoID(loID);
		otmSession.setRealUserID(realUserID);
		//ユーザーとLOから、アサインID を検索する。
		//OTMUser user = new OTMUser(userId);
		//String assignmentID = user.getAssignmentID(loID);
		//otmSession.setAssignmentID(assignmentID);
		
		//HTTPセッションにOTMセッションオブジェクトを格納する。
		session.setAttribute(OTMSession.OTM_SESSION_KEY, otmSession);
	}
	
	/**
	 * OTMセッションを終了する際に呼び出す。
	 * HTTPセッションから、OTMセッションオブジェクトを削除する。
	 * 
	 * @param session
	 */
	public static void endOTMSession(HttpSession session)
	{
		session.removeAttribute(OTMSession.OTM_SESSION_KEY);
	}
	
	/**
	 * 既に、OTMセッションが開始されているかどうか確認する。
	 * 
	 * @param session
	 * @return
	 */
	public static boolean checkSession(HttpSession session)
	{
		Object otmSession = session.getAttribute(OTMSession.OTM_SESSION_KEY);
		if (otmSession != null)
		{
			return true;
		}
		return false;
	}
	
	/**
	 * 現在のOTMセッションのユーザーIDを取得します。
	 * OTMセッションが開始されていない場合は、null を返却します。
	 * 
	 * @param session
	 * @return
	 */
	public static String getUserID(HttpSession session)
	{
		OTMSession otmSession = (OTMSession)session.getAttribute(OTMSession.OTM_SESSION_KEY);
		if (otmSession != null)
		{
			return otmSession.getUserID();
		}
		else
		{
		    return null;
		}
	}

	/**
	 * 現在LMSにログインしているユーザーのユーザーIDを取得します。
	 * OTMセッションが開始されていない場合は、null を返却します。
	 * 
	 * @param session
	 * @return
	 */
	public static String getRealUserID(HttpSession session)
	{
		OTMSession otmSession = (OTMSession)session.getAttribute(OTMSession.OTM_SESSION_KEY);
		if (otmSession != null)
		{
			return otmSession.getRealUserID();
		}
		else
		{
		    return null;
		}
	}
	
//	/**
//	 * 現在ログインしているユーザーが学習しているOTM教材の
//	 * アサインID を取得します。
//	 * 
//	 * @param session
//	 * @return
//	 */
//	public static String getAssignId(HttpSession session)
//	{
//		OTMSession otmSession = (OTMSession)session.getAttribute(OTMSession.OTM_SESSION_KEY);
//		return otmSession.getAssignmentID();
//	}
	
	/**
	 * 現在ログインしているユーザーが学習しているOTM教材の
	 * LOID を取得します。
	 * OTMセッションが開始されていない場合は、null を返却します。
	 * 
	 * @param session
	 * @return
	 */
	public static String getLOID(HttpSession session)
	{
		OTMSession otmSession = (OTMSession)session.getAttribute(OTMSession.OTM_SESSION_KEY);
		if (otmSession != null)
		{
			return otmSession.getLoID();
		}
		else
		{
		    return null;
		}
	}
}
