/*
このファイルの中身は、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) ______________________________________.
*/

//
// サンプルログ集計結果フレーム出力用・データクラス
// 
//
//	変更履歴
//	2004/01/08 新規作成	T.Nishiki
//
package jp.co.ntt.lms.xms.framework.sample;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import jp.co.ntt.lms.xms.framework.XmsException;
import jp.co.ntt.lms.xms.framework.XmsSystemException;
import jp.co.ntt.lms.xms.framework.base.LogResult;

/**
 * サンプルログ集計結果フレーム出力用・データクラス。<br>
 * 
 * @author nishiki
 */
public class SampleLogResult extends LogResult {
	
	/**
	 * ユーザIDのリスト。<br>
	 */
	private List userIdList;
	/**
	 * ＬＯＩＤのリスト。<br>
	 */
	private List loIdList;
	/**
	 * セッションIDのリスト。<br>
	 */
	private List sessionIdList;
	/** 
	 * 学習開始日付のリスト。<br>
	 */
	private List startDateList;
	/** 
	 * 学習終了日付のリスト。<br>
	 */
	private List endDateList;
	
	
	/**
	 * コンストラクタ。<br>
	 * 内部リストならびにカーソル位置の初期化を実施する。
	 */
	public SampleLogResult() {
		initialize();
	}

	/**
	 * 集計した結果のデータ件数を戻す。<br>
	 */
	public int size() {
		return userIdList.size();
	}

	/**
	 * カーソルが指し示す現在行のユーザIDを取得する。<br>
	 * @return 現在行のユーザID。
	 * @throws XmsException カーソルの位置が内部リストの範囲外の場合。
	 */
	public String getUserId()
			throws XmsException {
		String userId = null;
		try {
			userId = (String)userIdList.get( getCursorPos() );
		} catch ( Exception e ) {
			throw new XmsSystemException(e);
		}
		return userId;
	}

	/**
	 * カーソルが指し示す現在行のLOIDを取得する。<br>
	 * @return 現在行のLOID。
	 * @throws XmsException カーソルの位置が内部リストの範囲外の場合。
	 */
	public String getLoId()
			throws XmsException {
		String loId = null;
		try {
			loId = (String)loIdList.get( getCursorPos() );
		} catch ( Exception e ) {
			throw new XmsSystemException(e);
		}
		return loId;
	}

	/**
	 * カーソルが指し示す現在行のセッションIDを取得する。<br>
	 * @return 現在行のセッションID。
	 * @throws XmsException カーソルの位置が内部リストの範囲外の場合。
	 */
	public String getSessionId()
			throws XmsException {
		String sessionId = null;
		try {
			sessionId = (String)sessionIdList.get( getCursorPos() );
		} catch ( Exception e ) {
			throw new XmsSystemException(e);
		}
		return sessionId;
	}

	/**
	 * カーソルが指し示す現在行の学習開始日時を取得する。<br>
	 * @return 現在行の学習開始日時。
	 * @throws ArrayIndexOutOfBoundsException カーソルの位置が内部リストの範囲外の場合。
	 */
	public Date getStartDate()
			throws ArrayIndexOutOfBoundsException {
		Date startDate = null;
		startDate = (Date)startDateList.get( getCursorPos() );
		return startDate;
	}

	/**
	 * カーソルが指し示す現在行の学習終了日時を取得する。<br>
	 * @return 現在行の学習終了日時。
	 * @throws ArrayIndexOutOfBoundsException カーソルの位置が内部リストの範囲外の場合。
	 */
	public Date getEndDate()
			throws ArrayIndexOutOfBoundsException {
		Date endDate = null;
		endDate = (Date)endDateList.get( getCursorPos() );
		return endDate;
	}

	/**
	 * 検索結果を１行追加する。<br>
	 * 内部に保持しているリストの最後にそれぞれ追加する。
	 * @param userId    ユーザID。
	 * @param loId      ＬＯＩＤ。
	 * @param sessionId セッションID。
	 * @param startDate 学習開始日時。
	 * @param endDate   学習終了日時。
	 */
	void addLog( String userId, String loId,
			String sessionId, Date startDate, Date endDate ) {
		userIdList.add( userId );
		loIdList.add( loId );
		sessionIdList.add( sessionId );
		startDateList.add( startDate );
		endDateList.add( endDate );
	}
	
	/**
	 * 検索結果をすべて削除する。<br>
	 * 内部リストならびにカーソル位置の初期化を実施する。
	 */
	void clearLog() {
		initialize();
	}
	
	/**
	 * 内部リストならびにカーソル位置の初期化を実施する。<br>
	 */
	protected void initialize() {
		// カーソル位置の初期化。
		super.initialize();
		userIdList    = new ArrayList();
		loIdList      = new ArrayList();
		sessionIdList = new ArrayList();
		startDateList = new ArrayList();
		endDateList   = new ArrayList();
	}
}
