/*
このファイルの中身は、NTT オープンソースライセンス　バージョン 1.0（「本
契約」という）の適用を受けます。
本契約を遵守しない限り、このファイルを使用してはなりません。
本契約のコピーは、次のＵＲＬから入手できます。
【配布サイトのURL】 http://www.oss.ecl.ntt.co.jp/lms/

本契約に基づき頒布されるソフトウェアは、現状のまま、明示又は黙示のあらゆ
る種類の保証なしで、頒布されます。本契約に基づく権利及び制限を律する特定
の文言については、本契約を参照してください。

「オリジナルコード」は、 NTT Cyber Space Laboratories Code です。 
「オリジナルコード」の「初期開発者」は、日本電信電話株式会社です。  
日本電信電話株式会社により創作された部分は、Copyright (C) 2004 
日本電信電話株式会社 です。
全ての権利が留保されます。 
「コントリビュータ」：_____________________________________ 


The contents of this file are subject to the NTT Opensource License
Version 1.0 (the License); you may not use this file except in
compliance with the License. You may obtain a copy of the License at
【配布サイトのURL】 http://www.oss.ecl.ntt.co.jp/lms/

Software distributed under the License is distributed on an AS IS
basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the
License for the specific language governing rights and limitations
under the License.

The Original Code is NTT Cyber Space Laboratories Code .

The Initial Developer of the Original Code is NIPPON TELEGRAPH AND 
TELEPHONE CORPORATION.
Portions created by the NIPPON TELEGRAPH AND TELEPHONE CORPORATION 
are Copyright (C) 2004 NIPPON TELEGRAPH AND TELEPHONE CORPORATION. 
All Rights Reserved.

Contributor(s) ______________________________________.
*/
//
//	ScormLoEndLearnData
//	変更履歴
//		2004.02.01	新規作成
//

package jp.co.ntt.lms.lo.scorm;

import java.io.Serializable;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

import jp.co.ntt.lms.lo.LOException;
import jp.co.ntt.lms.xmo.util.DebugLog;

/**
 * SCORM LO学習終了情報クラス。<br>
 * @author T.Nishiki
 */
public class ScormLoEndLearnData implements Serializable {
	/**
	 * ユーザID。
	 */
	private String userID;

	/**
	 * 教材のLOID。
	 */
	private String loID;

	/**
	 * 教材の教材ID。
	 */
	private String materialID;

	/**
	 * 学習セッション回数（開始−終了を１単位とする回数）。
	 */
	private int studySession;

	/**
	 * ログインセッション回数（開始／再開−中断／終了を１単位とする回数）。
	 */
	private int loginSession;

	/**
	 * 終了理由。
	 */
	private String reason;

	/**
	 * 学習開始日時。
	 */
	private Date startDate;

	/**
	 * 学習ログ。
	 */
	private String studyLog;

	/**
	 * 完了状況。
	 */
	private boolean completionStatus;

	/**
	 * 合格状況。
	 */
	private boolean satisfiedStatus;

	/**
	 * ユーザIDを取得します。<br>
	 * @return ユーザIDを戻します。
	 */
	public String getUserID() {
		return userID;
	}

	/**
	 * ユーザIDを設定します。<br>
	 * @param userID ユーザID。
	 */
	public void setUserID(String userID) {
		this.userID = userID;
	}

	/**
	 * LOIDを取得します。<br>
	 * @return LOIDを戻します。
	 */
	public String getLoID() {
		return loID;
	}

	/**
	 * LOIDを設定します。<br>
	 * @param loID LOID。
	 */
	public void setLoID(String loID) {
		this.loID = loID;
	}

	/**
	 * 教材IDを取得します。<br>
	 * @return 教材IDを戻します。
	 */
	public String getMaterialID() {
		return materialID;
	}

	/**
	 * 教材IDを設定します。<br>
	 * @param materialID 教材ID。
	 */
	public void setMaterialID(String materialID) {
		this.materialID = materialID;
	}

	/**
	 * 学習セッション回数を取得します。<br>
	 * @return 学習セッション回数を設定します。
	 */
	public int getStudySession() {
		return studySession;
	}

	/**
	 * 学習セッション回数を設定します。<br>
	 * @param studySession 学習セッション回数。
	 */
	public void setStudySession(int studySession) {
		this.studySession = studySession;
	}

	/**
	 * ログインセッション回数を取得します。<br>
	 * @return ログインセッション回数を戻します。
	 */
	public int getLoginSession() {
		return loginSession;
	}

	/**
	 * ログインセッション回数を設定します。<br>
	 * @param loginSession ログインセッション回数。
	 */
	public void setLoginSession(int loginSession) {
		this.loginSession = loginSession;
	}

	/**
	 * 学習終了理由を戻します。<br>
	 * @return 学習終了理由を戻します。
	 */
	public String getReason() {
		return reason;
	}

	/**
	 * 学習終了理由を設定します。<br>
	 * @param reason 学習終了理由。
	 */
	public void setReason(String reason) {
		this.reason = reason;
	}

	/**
	 * 学習開始日時を戻します。<br>
	 * @return 学習開始日時を戻します。
	 */
	public Date getStartDate() {
		return startDate;
	}

	/**
	 * 学習開始日時を設定します。<br>
	 * @param startdateString 学習開始日時文字列。
	 *         求める書式は、以下を参照。
	 * @throws LOException 渡された日時文字列の書式が不正な場合。
	 * @see ScormLoConstant#START_STUDY_DATETIME_FORMAT
	 */
	public void setStartDate(String startdateString) throws LOException {
		try {
			SimpleDateFormat dateFormat = new SimpleDateFormat(
				ScormLoConstant.START_STUDY_DATETIME_FORMAT);
			this.startDate = dateFormat.parse(startdateString);
		}
		catch (ParseException e) {
			DebugLog.write(getClass(), e, DebugLog.HIGHT);
			throw new LOException(e.getMessage());
		}
	}


	/**
	 * 学習ログを取得します。<br>
	 * @return 学習ログ形式を戻します。
	 */
	public String getStudyLog() {
		return studyLog;
	}

	/**
	 * 学習ログを設定します。<br>
	 * @param studyLog 学習ログを設定します。
	 */
	public void setStudyLog(String studyLog) {
		this.studyLog = studyLog;
	}

	/**
	 * 完了状態を取得します。
	 * @return 完了していればtrue、完了していなければfalseを戻します。
	 */
	public boolean isCompletionStatus() {
		return completionStatus;
	}

	/**
	 * 完了状態を設定します。
	 * @param completionStatus
	 *         完了していればtrue、完了していなければfalseを渡します。
	 */
	public void setCompletionStatus(boolean completionStatus) {
		this.completionStatus = completionStatus;
	}

	/**
	 * 合格状態を設定します。
	 * @return 合格していればtrue、合格していなければfalseを戻します。
	 */
	public boolean isSatisfiedStatus() {
		return satisfiedStatus;
	}

	/**
	 * 合格状態を設定します。
	 * @param satisfiedStatus
	 *         合格していればtrue、合格していなければfalseを渡します。
	 */
	public void setSatisfiedStatus(boolean satisfiedStatus) {
		this.satisfiedStatus = satisfiedStatus;
	}

	/**
	 * このオブジェクトを文字列に変換します。
	 * @return このオブジェクトの内容を文字列にして戻します。
	 * @see java.lang.Object#toString()
	 */
	public String toString() {
		StringBuffer returnValue = new StringBuffer();

		returnValue.append( "[" + getClass() );
		returnValue.append( "[" );
		returnValue.append( "useID=" + userID );
		returnValue.append( ",loID=" + loID );
		returnValue.append( ",materialID=" + materialID );
		returnValue.append( ",studySession=" + studySession );
		returnValue.append( ",loginSession=" + loginSession );
		returnValue.append( ",reason=" + reason );
		returnValue.append( ",startdate=" + startDate );
		returnValue.append( ",studyLog=" + studyLog );
		returnValue.append( ",completionStatus=" + completionStatus );
		returnValue.append( ",satisfiedStatus=" + satisfiedStatus );
		returnValue.append( "]]" );
		return returnValue.toString();
	}
}
