/*
このファイルの中身は、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 新規作成 A.Shimoma
//
package jp.co.ntt.lms.xms.logsumup;

import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.List;

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

/**
 * ＬＯ利用数一覧結果フレーム用データ・クラス。<br>
 * 
 * @author shimoma
 */
public class LoLogMaterialUseResult extends LogResult {

	/** ID(グループID) */
	private String groupId;

	/** 名称(グループ名) */
	private String groupName;

	/** グルー外部ID */
	private String foreignId;

	/** LoID */
	private String LoID;

	/** LO名 */
	private String LoName;

	/** LOタイプ */
	private String LoType;

	/** Lo外部ID */
	private String LoForeignId;

	/** 配下フラグ */
	private String subordinateflg;

	/** 学習者(ユーザ）数 */
	private String userCount;

	/** リアルLOID */
	private String realLoId;

	/** 集計対象が配下か直下かのメッセージ */
	private String condidateTotalMassage;

	/** コンテナかどうか **/
	private boolean container;

	/** 教材かどうか **/
	private boolean materiall;

	/** csv用FROM */
	private String csvFromDate;

	/** csv用TO */
	private String csvToDate;

	/** 検索期間FROM */
	private String fromDate;

	/** 検索期間TO */
	private String toDate;

	/** 粒度 */
	private String termUnit;

	/** カウント対象 */
	private String countUnit;

	/** ヘッダタイトル */
	private String[] titleItems;

	/** ログデータ */
	private long[][] logData;

	/** ログデータリスト */
	private List logDataList;

	/** 合計 */
	private long[] totalCol;

	/** LO外部IDのリスト */
	private List LoNameList;

	/** LO外部IDのリスト */
	private List LoForeignIdList;

	/**
	 * コンストラクタ。<br>
	 * 内部リストならびにカーソル位置の初期化を実施する。
	 */
	public LoLogMaterialUseResult() {
		initialize();
	}

	/**
	 * 集計結果オブジェクトの数
	 * @return int オブジェクト数
	 * @see LogResult
	 */
	public int size() {
		return LoNameList.size();
	}

	/**
	 * 検索結果をすべて削除する。<br>
	 * 内部リストならびにカーソル位置の初期化を実施する。
	 */
	void clearLog() {
		initialize();
	}

	/**
	 * 内部リストならびにカーソル位置の初期化を実施する。<br>
	 */
	protected void initialize() {

		// カーソル位置の初期化。
		super.initialize();

		LoNameList = new ArrayList();
		LoForeignIdList = new ArrayList();
	}

	/**
	 * プロパティに設定されている値の一覧を返却します<br>
	 * 
	 * このオブジェクトのgetterメソッドを実行しプロパティの一覧を返します
	 *
	 * @return プロパティに設定されている値の一覧を返却します
	 */
	public String toString() {
		StringBuffer buffer = new StringBuffer();

		try {
			Method methods[] = this.getClass().getDeclaredMethods();
			for (int i = 0; i < methods.length; i++) {
				String methodName = methods[i].getName();
				if (methodName.startsWith("get")
					|| methodName.startsWith("is")) {
					Object o =
						(Object) this.getClass().getMethod(
							methodName,
							null).invoke(
							this,
							null);
					buffer.append("[");
					buffer.append(methodName);
					buffer.append(":");
					if (o == null) {
						buffer.append("null");
					} else {
						buffer.append(o.toString());
					}
					buffer.append("]");
					buffer.append("\r\n");

				}
			}

		} catch (Exception e) {
			//デバック用なのでなにもしない
		}
		return buffer.toString();
	}

	/**
	 * 検索結果を１行追加する。<br>
	 * 内部に保持しているリストの最後にそれぞれ追加する。<br>
	 * 
	 * @param loForeignId LO外部ID
	 */
	protected void addLog(String loName, String loForeignId) throws XmsException {
		
		// LO名を設定する
		LoNameList.add(loName);
		// LO外部IDを設定する
		LoForeignIdList.add(loForeignId);

	}


	/**
	 * 集計対象が配下か直下かのメッセージを取得する。
	 * @return condidateTotalMassage
	 */
	public String getCondidateTotalMassage() {
		return condidateTotalMassage;
	}

	/**
	 * コンテナかどうかを取得する。
	 * @return container
	 */
	public boolean isContainer() {
		return container;
	}

	/**
	 * カウント対象を取得する。
	 * @return countUnit
	 */
	public String getCountUnit() {
		return countUnit;
	}

	/**
	 * csv用FROMを取得する。
	 * @return csvFromDate
	 */
	public String getCsvFromDate() {
		return csvFromDate;
	}

	/**
	 * csv用TOを取得する。
	 * @return csvToDate
	 */
	public String getCsvToDate() {
		return csvToDate;
	}

	/**
	 * グループ外部IDを取得する。
	 * @return foreignId
	 */
	public String getForeignId() {
		return foreignId;
	}

	/**
	 * 検索期間FROMを取得する。
	 * @return String
	 */
	public String getFromDate() {
		return fromDate;
	}

	/**
	 * グループIDを取得する。
	 * @return groupId
	 */
	public String getGroupId() {
		return groupId;
	}

	/**
	 * グループ名を取得する。
	 * @return groupName
	 */
	public String getGroupName() {
		return groupName;
	}

	/**
	 * Lo外部IDを取得する。
	 * @return LoForeignId
	 */
	public String getLoForeignId() {
		return LoForeignId;
	}

	/**
	 * Lo外部IDリストを取得する。
	 * @return LoForeignIdList
	 */
	public List getLoForeignIdList() {
		return LoForeignIdList;
	}

	/**
	 * ログデータを取得する。
	 * @return logData
	 */
	public long[][] getLogData() {
		return logData;
	}
	/**
	 * ログデータリストを取得する。
	 * @return logDataList
	 */
	public List getLogDataList() {
		return logDataList;
	}
	/**
	 * LOIDを取得する。
	 * @return LoID
	 */
	public String getLoID() {
		return LoID;
	}

	/**
	 * LO名を取得する。
	 * @return LoName
	 */
	public String getLoName() {
		return LoName;
	}

	/**
	 * LO名リストを取得する。
	 * @return LoNameList
	 */
	public List getLoNameList() {
		return LoNameList;
	}

	/**
	 * LOタイプを取得する。
	 * @return LoType
	 */
	public String getLoType() {
		return LoType;
	}

	/**
	 * 教材かどうかを取得する。
	 * @return materiall
	 */
	public boolean isMateriall() {
		return materiall;
	}

	/**
	 * リアルLOIDを取得する。
	 * @return realLoId
	 */
	public String getRealLoId() {
		return realLoId;
	}

	/**
	 * 配下フラグを取得する。
	 * @return subordinateflg
	 */
	public String getSubordinateflg() {
		return subordinateflg;
	}

	/**
	 * 粒度を取得する。
	 * @return termUnit
	 */
	public String getTermUnit() {
		return termUnit;
	}

	/**
	 * ヘッダタイトルを取得する。
	 * @return titleItems
	 */
	public String[] getTitleItems() {
		return titleItems;
	}

	/**
	 * 検索期間TOを取得する。
	 * @return toDate
	 */
	public String getToDate() {
		return toDate;
	}

	/**
	 * 合計を取得する。
	 * @return totalCol
	 */
	public long[] getTotalCol() {
		return totalCol;
	}

	/**
	 * 学習者(ユーザ)数を取得する。
	 * @return userCount
	 */
	public String getUserCount() {
		return userCount;
	}

	/**
	 * 集計対象が配下か直下かのメッセージを設定する。
	 * @param condidateTotalMassage
	 */
	public void setCondidateTotalMassage(String condidateTotalMassage) {
		this.condidateTotalMassage = condidateTotalMassage;
	}

	/**
	 * コンテナかどうかを設定する。
	 * @param container
	 */
	public void setContainer(boolean container) {
		this.container = container;
	}

	/**
	 * カウント対象を設定する。
	 * @param countUnit
	 */
	public void setCountUnit(String countUnit) {
		this.countUnit = countUnit;
	}

	/**
	 * csv用FROMを設定する。
	 * @param csvFromDate
	 */
	public void setCsvFromDate(String csvFromDate) {
		this.csvFromDate = csvFromDate;
	}

	/**
	 * csv用TOを設定する。
	 * @param csvToDate
	 */
	public void setCsvToDate(String csvToDate) {
		this.csvToDate = csvToDate;
	}

	/**
	 * グループ外部IDを設定する。
	 * @param foreignId
	 */
	public void setForeignId(String foreignId) {
		this.foreignId = foreignId;
	}

	/**
	 * 検索期間FROMを設定する。
	 * @param fromDate
	 */
	public void setFromDate(String fromDate) {
		this.fromDate = fromDate;
	}

	/**
	 * グループIDを設定する。
	 * @param groupId
	 */
	public void setGroupId(String groupId) {
		this.groupId = groupId;
	}

	/**
	 * グループ名を設定する。
	 * @param groupName The groupName to set
	 */
	public void setGroupName(String groupName) {
		this.groupName = groupName;
	}

	/**
	 * Lo外部IDリストを設定する。
	 * @param loForeignId
	 */
	public void setLoForeignId(String loForeignId) {
		LoForeignId = loForeignId;
	}

	/**
	 * Lo外部IDリストを設定する。
	 * @param loForeignIdList
	 */
	public void setLoForeignIdList(List loForeignIdList) {
		LoForeignIdList = loForeignIdList;
	}

	/**
	 * ログデータリストを設定する。
	 * @param logDataList
	 */
	public void setLogData(long[][] logData) {
		this.logData = logData;
	}

	/**
	 * ログデータを設定する。
	 * @param logData
	 */
	public void setLogDataList(List logDataList) {
		this.logDataList = logDataList;
	}

	/**
	 * LOIDを設定する。
	 * @param loID
	 */
	public void setLoID(String loID) {
		LoID = loID;
	}

	/**
	 * LO名を設定する。
	 * @param loName
	 */
	public void setLoName(String loName) {
		LoName = loName;
	}

	/**
	 * LO名リストを設定する。
	 * @param loNameList
	 */
	public void setLoNameList(List loNameList) {
		LoNameList = loNameList;
	}

	/**
	 * LOタイプを設定する。
	 * @param loType
	 */
	public void setLoType(String loType) {
		LoType = loType;
	}

	/**
	 * 教材かどうかを設定する。
	 * @param materiall
	 */
	public void setMateriall(boolean materiall) {
		this.materiall = materiall;
	}

	/**
	 * リアルLOIDを設定する。
	 * @param realLoId
	 */
	public void setRealLoId(String realLoId) {
		this.realLoId = realLoId;
	}

	/**
	 * 配下フラグを設定する。
	 * @param subordinateflg
	 */
	public void setSubordinateflg(String subordinateflg) {
		this.subordinateflg = subordinateflg;
	}

	/**
	 * 粒度を設定する。
	 * @param termUnit
	 */
	public void setTermUnit(String termUnit) {
		this.termUnit = termUnit;
	}

	/**
	 * ヘッダタイトルを設定する。
	 * @param titleItems
	 */
	public void setTitleItems(String[] titleItems) {
		this.titleItems = titleItems;
	}

	/**
	 * 検索期間TOを設定する。
	 * @param toDate
	 */
	public void setToDate(String toDate) {
		this.toDate = toDate;
	}

	/**
	 * 合計を設定する。
	 * @param totalCol
	 */
	public void setTotalCol(long[] totalCol) {
		this.totalCol = totalCol;
	}

	/**
	 * 学習者(ユーザ)数を設定する。
	 * @param userCount The userCount to set
	 */
	public void setUserCount(String userCount) {
		this.userCount = userCount;
	}

}
