/////////////////////////////////////////////////////////////////
//Copyright (C) 2005 NTT CORPORATION.
//
//ManifestInfo オブジェクト生成クラス
//
//変更履歴
//2005.02.03  新規作成  森　智志
//
//機能
//
//ManifestInfoを生成します。
//
/////////////////////////////////////////////////////////////////
package jp.co.ntt.lms.lo.lom.learnableinfo;

import java.util.*;

/**
 * ManifestInfoを生成します。
 * manifest ノードのBeanクラスです。
 * @author s-mori
 * @version 1.0
 */
public class ManifestInfo extends ScormXMLInfo {

	private List lomList = null;
	private int index = -1;
	
	/**
	 * コンストラクタ。
	 * インスタンスの生成を禁止しています。
	 */
	private ManifestInfo(){
	}
	
	/**
	 * コンストラクタ
	 * @param identifier manifestノードの識別子
	 */
	public ManifestInfo(String identifier){
		if(identifier == null || identifier.equals("")){
			throw new NullPointerException("Identifier is null.");
		}
		this.identifier = identifier;
		
		this.lomList = new ArrayList();
		
	}
	
	/**
	 * 格納したノードが manifest ノードかどうかを返します。
	 * このクラスでは、常に true を返します。
	 */
	public boolean isManifest(){
		return true;
	}
	
	/**
	 * LomInfoオブジェクトをリストに追加します。
	 * @param lomInfo LomInfoオブジェクト
	 */
	public void addLomInfo(LomInfo lomInfo){
		if(lomInfo != null){
			lomList.add(lomInfo);
		}
	}

	/**
	 * LomInfoオブジェクトのリストを返します。
	 * @return lomInfoオブジェクトのリスト
	 */
	public List getLomInfoList(){
		return this.lomList;
	}
	
	/**
	 * LomInfoオブジェクトのうち、指定したインデックスに相当するオブジェクトを返します。
	 * @param i インデックス番号
	 * @return インデックスに対応するLomInfoオブジェクト
	 */
	public LomInfo getLomInfo(int i){
		return (LomInfo)lomList.get(i);
	}
	
	/**
	 * 現在のインデックスのLomInfoオブジェクトを返します。
	 * @return 現在のインデックス留のLomInfoオブジェクト
	 */
	public LomInfo getLomInfo(){
		return getLomInfo(index);
	}

	/**
	 * 次のLomInfoオブジェクトにインデックスを進めます。
	 * @return 次のLomInfoオブジェクトが存在すればtrue
	 */
	public boolean nextLomInfo(){
		index++;
		return (index < lomList.size());
	}
	
	/**
	 * リストに含まれるLomInfoオブジェクトの個数を返します。
	 * @return LomInfoオブジェクトの個数
	 */
	public int lomInfoSize(){
		return lomList.size();
	}
	
}
