/////////////////////////////////////////////////////////////////
//Copyright (C) 2005 NTT CORPORATION.
//
//	ユーザの進捗を表すクラス
//
//		変更履歴
//			2005.01.27  新規作成  Katsuhiko.Sakurai(UNITEC)
//
//	機能
//
//	このクラスはユーザの進捗を表現するクラスです。
//
////////////////////////////////////////////////////////////////
package jp.co.ntt.lms.lo.progress;

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

import jp.co.ntt.lms.lo.progress.util.LearningProgressConfigurationManager;
import jp.co.ntt.lms.lo.progress.util.XMOInformationGetter;
import jp.co.ntt.lms.xmo.People.PeopleClient;

/**
 * ユーザ進捗クラスです。
 * 
 * @author Katsuhiko Sakurai (UNITEC)
 * @version 1.0
 */
public class PeopleProgress extends AbstractPeopleProgress {

	private PeopleClient peopleClient = null;
	
	/**
	 * コンストラクタです。
	 * 
	 * @param userID 対象となるユーザID
	 * @param loID 対象となるLoID 
	 * @param level 階層のレベル 
	 * @throws Exception
	 */
	public PeopleProgress( String userID, String loID, int level ) throws Exception{
		super(userID, loID, level);
	}
	
	/**
	 * コンストラクタです。
	 * 
	 * @param userID 対象となるユーザID
	 * @param loID 対象となるLoID 
	 * @param level 階層のレベル 
	 * @param config 外部設定ファイル情報 
	 * @throws Exception
	 */
	public PeopleProgress( String userID, String loID, int level,
			LearningProgressConfigurationManager config) throws Exception{
		
		super(userID, loID, level, config);

		// ユーザIDからPeopleクライアントを取得
		this.peopleClient = XMOInformationGetter.getPeople(userID);
	}
	
	/**
	 * 進捗リストを取得します。
	 * 
	 * @return List 自オブジェクトをリスト化して返します。
	 */
	public List getProgressList() {
		
		ArrayList list = new ArrayList();
		list.add(this);
		return list;
	}
	
	/**
	 * 進捗の項目名称を取得します。
	 * 
	 * @return String ユーザ名称 
	 */
	public String getItemName() {
		return this.peopleClient.getUserName();
	}


	/**
	 * 階層レベル付けされた項目名を取得します。
	 * 
	 * @return String 階層レベル付けされたユーザ名 
	 */
	public String getNestedItemName() {
		String space = "　";
		for(int i=1; i<=this.level; i++) space += space;
		
		return space + this.getItemName();
	}

	/**
	 * ユーザの説明を取得します。
	 * 
	 * @return String ユーザの説明 
	 */
	public String getExplanation() {
		return this.peopleClient.getCustomMsgDir();
	}
}
