/*
 * $Id: OQS4RConfig.java,v 1.6 2006/01/27 16:39:04 rampil Exp $
 * Copyright (c) 2004 LOGICAL-PARADOX.ORG
 */
package org.logical_paradox.rss.oqs4r;

import java.io.IOException;

import org.logical_paradox.rss.RSSConfig;
import org.logical_paradox.rss.RSSIllegalConfigException;
import org.logical_paradox.rss.RSSNullValueException;
import org.logical_paradox.rss.RSSValueFormatException;

/**
 * oqs4rのコンフィグ
 * @author  satoshi akabane@logical-paradox.org
 * @version $Revision: 1.6 $
 */
public class OQS4RConfig extends RSSConfig {
	// 分散サービスレジストリ
	private String dsr;
	// キャッシュタイムアウト秒数(msec)
	private int cacheExpireSec;
	// プーリングする接続数
	private int preparedConnections;
	// ログファイル名
	private String runlogFilename;
	// ログ設定
	private boolean runlogSwitch;
	// テストモード
	private boolean testMode;

	/**
	 * コンストラクタ
	 * @param fn ファイル名
	 * @throws IOException コンフィグファイルの読み込みに失敗した
	 * @throws RSSIllegalConfigException コンフィグファイルの内容がおかしい場合に発生する例外
	 */
	public OQS4RConfig(String fn) throws IOException, RSSIllegalConfigException {
		super(fn);
	}
	/**
	 * 接続先DSRを返す．
	 * @return DSR URI
	 */
	public String getDSRName() {
		return dsr;
	}
	/**
	 * キャッシュの有効期限(sec)を返す．
	 * @return 有効期限(sec)
	 */
	public int getCacheExpireSec() {
		return cacheExpireSec;
	}
	/**
	 * ランログ出力を許可するかどうかを返す．
	 * @return true:許可する / false:許可しない
	 */
	public boolean isEnableRunLog() {
		return runlogSwitch;
	}
	/**
	 * ランログのファイル名を返す．
	 * @return ランログファイル名
	 */
	public String getRunLogFilename() {
		return runlogFilename;
	}
	/**
	 * 事前接続されるコネクション数を返す．
	 * @return 事前接続されるコネクション数
	 */
	public int getPreparedConnections() {
		return preparedConnections;
	}
	/**
	 * テストモードかどうかを返す．
	 * @return true:テストモード / false:本番モード
	 */
	public boolean isTestMode() {
		return testMode;
	}
	/**
	 * パラメータ確認メソッド
	 * @return エラーメッセージ
	 */
	@Override
	protected String checkResourceVariables() {
		String errmsg = "";

		dsr = getProperty( "RSS_DSR" );
		if( dsr == null ) {
			errmsg += "RSS_DSRが指定されていません\n";
		}
		try {
			cacheExpireSec = getPropertyAsInt( "CACHE_EXPIRE_MSEC" );
		} catch(RSSValueFormatException vfe) {
			errmsg += "CACHE_EXPIRE_MSECの値が不正です\n";
		} catch(RSSNullValueException ne) {}
		try {
			preparedConnections = getPropertyAsInt( "PREPARED_CONNECTIONS" );
		} catch(RSSValueFormatException vfe) {
			errmsg += "PREPARED_CONNECTIONSの値が不正です\n";
		} catch(RSSNullValueException ne) {}

		runlogFilename = getProperty("OQS4R_RUNLOG_FILENAME");
		try {
			runlogSwitch = getPropertyAsBool( "OQS4R_RUNLOG_SW" );
		} catch(RSSValueFormatException vfe) {
			errmsg += "OQS4R_RUNLOG_SWの値が不正です\n";
		} catch(RSSNullValueException ne) {}
		try {
			testMode = getPropertyAsBool( "TEST_MODE" );
		} catch(RSSValueFormatException vfe) {
			errmsg += "TEST_MODEの値が不正です\n";
		} catch(RSSNullValueException ne) {}
		return errmsg;
	}


}
