/////////////////////////////////////////////////////////////////
//Copyright (C) 2005 NTT CORPORATION.
//
//コース管理 受講申請環境保持クラス
//
//変更履歴
//2005.02.10  新規作成  鏡味 克彦
//
//機能
//
//OLMSカスタマイズに伴うコース管理からの申請処理に関連する環境設定を保持します。
//
/////////////////////////////////////////////////////////////////

package jp.co.ntt.lms.lo.Course.Touchable;

import java.util.Hashtable;
import java.util.Properties;

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

/**
 * コース管理 環境情報保持クラス
 * コース管理からの申請処理に関連する環境設定を保持します。<br>
 * @author Katsuhiko Kagami(UNITEC)
 * @version 1.0
 * 
 */
public class TouchableLoEnv extends LoEnvironment {

	/** プロパティファイルの定義 */
	private static final String mstrFileName = "/conf/lo/Touchable.ini";

	/** 受講申請メールテンプレートのファイルパス */
	public static final String LO_ASSIGN_RQ_MAIL_TEMP_PATH = "lo_assign_rq_mail_temp_path";
	/** 購入申請メールテンプレートのファイルパス */
	public static final String LO_ASSIGN_BUY_RQ_MAIL_TEMP_PATH = "lo_assign_buy_rq_mail_temp_path";
	/** 受講申請承認通知メールテンプレートのファイルパス */
	public static final String LO_ASSIGN_OK_MAIL_TEMP_PATH = "lo_assign_ok_mail_temp_path";
	/** 受講申請拒否通知メールテンプレートのファイルパス */
	public static final String LO_ASSIGN_NG_MAIL_TEMP_PATH = "lo_assign_ng_mail_temp_path";

	/** 承認依頼メール送信処理用URLフォルダパス */
	public static final String LO_ASSIGN_RQ_MAIL_URL = "lo_assign_rq_mail_url";
	/** 承認URLフォルダパス */
	public static final String LO_ASSIGN_OK_MAIL_URL = "lo_assign_ok_mail_url";
	/** 否認URLフォルダパス */
	public static final String LO_ASSIGN_NG_MAIL_URL = "lo_assign_ng_mail_url";

	/** 受講申請の有効期間(cookieの有効期間) 単位：日 フォルダパス */
	public static final String EXPIRES = "Expires";
	/** コース管理起動Dir パス */
	public static final String LAUNCH_DIR = "launch_dir";
	/** コース管理起動URL */
	public static final String LAUNCH_URL = "launch_url";
	/** 推奨LO起動URL パス */
	public static final String RECOMMEND_LAUNCH_URL = "launch_recommend_url";

	/** プロパティファイルを保持します */
	private static Properties objProperty = null;

	/**
	 * コンストラクタ
	 * @throws LOException
	 */
	public TouchableLoEnv() throws LOException {
		super();
		//	環境情報の初期化が行われていない時のみ
		//	環境ファイルを読み込む
		synchronized( this.getClass() ) {
			if( objProperty == null ) {
				objProperty = loadProperty(mstrFileName);
			}
		}
	}

	/**
	 * LO受講申請要求メールテンプレートを取得します。
	 *
	 * @return String 承認依頼メールテンプレート
	 * @exception LOException LO固有の例外エラー
	 */
	public String getLO_assign_rq_mail_temp_path()
		throws LOException
	{
		try
		{
			String strAssign_rq_mail_temp_path = getProperty(LO_ASSIGN_RQ_MAIL_TEMP_PATH, objProperty);
			Hashtable htbMacro = new Hashtable();
			htbMacro.put( Environment.SYSTEM_DIR, mobjEnv.getSystemDir() );
			strAssign_rq_mail_temp_path = expand( strAssign_rq_mail_temp_path , htbMacro );
			return strAssign_rq_mail_temp_path ;

		}
		catch(Exception e)
		{
			throw new LOException(e.getMessage());
		}
	}

	/**
	 * LO購入申請要求メールテンプレートを取得します。
	 *
	 * @return String 購入依頼メールテンプレート
	 * @exception LOException LO固有の例外エラー
	 */
	public String getLO_assign_buy_rq_mail_temp_path()
		throws LOException
	{
		try
		{
			String strAssign_rq_mail_temp_path = getProperty(LO_ASSIGN_BUY_RQ_MAIL_TEMP_PATH, objProperty);
			Hashtable htbMacro = new Hashtable();
			htbMacro.put( Environment.SYSTEM_DIR, mobjEnv.getSystemDir() );
			strAssign_rq_mail_temp_path = expand( strAssign_rq_mail_temp_path , htbMacro );
			return strAssign_rq_mail_temp_path ;

		}
		catch(Exception e)
		{
			throw new LOException(e.getMessage());
		}
	}

	/**
	 * LO受講申請承認通知メールテンプレートを取得する
	 *
	 * @return String 承認通知メールテンプレート
	 * @exception LOException LO固有の例外エラー
	 */
	public String getLO_assign_ok_mail_temp_path()
		throws LOException
	{
		try
		{
			String strAssign_ok_mail_temp_path = getProperty(LO_ASSIGN_OK_MAIL_TEMP_PATH, objProperty);
			Hashtable htbMacro = new Hashtable();
			htbMacro.put( Environment.SYSTEM_DIR, mobjEnv.getSystemDir() );
			strAssign_ok_mail_temp_path = expand( strAssign_ok_mail_temp_path , htbMacro );
			return strAssign_ok_mail_temp_path ;

		}
		catch(Exception e)
		{
			throw new LOException(e.getMessage());
		}
	}

	/**
	 * 否認通知メールテンプレートを取得する
	 *
	 * @return String 拒否通知メールテンプレート
	 * @exception LOException LO固有の例外エラー
	 */
	public String getLO_assign_ng_mail_temp_path()
		throws LOException
	{
		try
		{
			String strAssign_ng_mail_temp_path = getProperty(LO_ASSIGN_NG_MAIL_TEMP_PATH, objProperty);
			Hashtable htbMacro = new Hashtable();
			htbMacro.put( Environment.SYSTEM_DIR, mobjEnv.getSystemDir() );
			strAssign_ng_mail_temp_path = expand( strAssign_ng_mail_temp_path , htbMacro );
			return strAssign_ng_mail_temp_path ;

		}
		catch(Exception e)
		{
			throw new LOException(e.getMessage());
		}
	}

	/**
	 * LO受講申請メール送信処理用URLを取得します。
	 * @return String 承認依頼メール送信処理用URL
	 * @exception LOException LO固有の例外エラー
	 */
	public String getLO_assign_rq_mail_url()
		throws LOException
	{
		try
		{
			String strAssign_rq_mail_url = getProperty(LO_ASSIGN_RQ_MAIL_URL, objProperty);
			Hashtable htbMacro = new Hashtable();
			htbMacro.put( Environment.SYSTEM_URL, mobjEnv.getSystemURL() );
			strAssign_rq_mail_url = expand( strAssign_rq_mail_url , htbMacro );
			return strAssign_rq_mail_url ;
		}
		catch(Exception e)
		{
			DebugLog.write( this.getClass(), e, DebugLog.HIGHT );
			throw new LOException(e.getMessage());
		}
	}

	/**
	 * LO受講申請要求の承認用URLを取得します。
	 *
	 * @return String 承認URL
	 * @exception LOException LO固有の例外エラー
	 */
	public String getLO_assign_ok_mail_url()
		throws LOException
	{
		try
		{
			String strAssign_ok_mail_url = getProperty(LO_ASSIGN_OK_MAIL_URL, objProperty);
			Hashtable htbMacro = new Hashtable();
			htbMacro.put( Environment.SYSTEM_URL, mobjEnv.getSystemURL() );
			strAssign_ok_mail_url = expand( strAssign_ok_mail_url , htbMacro );
			return strAssign_ok_mail_url ;
		}
		catch(Exception e)
		{
			DebugLog.write( this.getClass(), e, DebugLog.HIGHT );
			throw new LOException(e.getMessage());
		}
	}

	/**
	 * LO受講申請要求の拒否用URLを取得します。
	 *
	 * @return String 否認URL
	 * @exception LOException LO固有の例外エラー
	 */
	public String getLO_assign_ng_mail_url()
		throws LOException
	{
		try
		{
			String strAssign_ng_mail_url = getProperty(LO_ASSIGN_NG_MAIL_URL, objProperty);
			Hashtable htbMacro = new Hashtable();
			htbMacro.put( Environment.SYSTEM_URL, mobjEnv.getSystemURL() );
			strAssign_ng_mail_url = expand( strAssign_ng_mail_url , htbMacro );
			return strAssign_ng_mail_url;
		}
		catch(Exception e)
		{
			DebugLog.write( this.getClass(), e, DebugLog.HIGHT );
			throw new LOException(e.getMessage());
		}
	}

	/**
	 * 受講申請の有効期間(cookieの有効期間) 単位：日 を取得します
	 *
	 * @return String 有効期間
	 * @exception LOException LO固有の例外エラー
	 */
	public String getExpires()
		throws LOException
	{
		try
		{
			String strExpires = getProperty(EXPIRES, objProperty);
			return strExpires;
		}
		catch(Exception e)
		{
			DebugLog.write( this.getClass(), e, DebugLog.HIGHT );
			throw new LOException(e.getMessage());
		}
	}

	/**
	 * 学習可能LO起動ディレクトリを取得する
	 *
	 * @return String 学習可能LO起動ディレクトリ
	 * @exception LOException LO固有の例外エラー
	 */
	public String getLaunch_dir()
		throws LOException
	{
		try
		{
			return getProperty(LAUNCH_DIR, objProperty);
		}
		catch(Exception e)
		{
			DebugLog.write( this.getClass(), e, DebugLog.HIGHT );
			throw new LOException(e.getMessage());
		}
	}

	/**
	 * コース管理起動URLを取得する
	 *
	 * @return String コース管理起動URL
	 * @exception LOException LO固有の例外エラー
	 */
	public String getLaunch_URL()
		throws LOException
	{
		try
		{
			return getProperty(LAUNCH_URL, objProperty);
		}
		catch(Exception e)
		{
			DebugLog.write( this.getClass(), e, DebugLog.HIGHT );
			throw new LOException(e.getMessage());
		}
	}

	/**
	 * 推奨LO起動URLを取得する
	 *
	 * @return String 推奨LO起動URL
	 * @exception LOException LO固有の例外エラー
	 */
	public String getRecommendedLaunch_URL()
		throws LOException
	{
		try
		{
			return getProperty(RECOMMEND_LAUNCH_URL, objProperty);
		}
		catch(Exception e)
		{
			DebugLog.write( this.getClass(), e, DebugLog.HIGHT );
			throw new LOException(e.getMessage());
		}
	}
}
