/*
 * RuntimeParameters.java
 * Copyright (C) 2008 Cyber Beans Corporation. All rights reserved.
 */
package jp.co.cybec.cb3.session;

import java.io.Serializable;
import java.util.HashMap;
import java.util.Map;

/**
 * 起動パラメータクラス。<br>
 * アプリケーション起動時に指定された引数を保持します。<br>
 * <pre>
 * 例：コンソール>java (略) xxx.ServiceProviderImpl -ServiceName sample -AppParams key1=value1 key2=value2 ...
 * </pre>
 * 起動時に上記のような引数が指定された場合、-AppParams以降がRuntimeParametersに格納され、
 * {@link RuntimeParameters#get(String)}を使用して取得することができます。
 * <pre>
 * runtimeParameters.get("key1") → "value1"
 * runtimeParameters.get("key2") → "value2"
 *  …
 * </pre>
 *
 * @author Naoko Sugimoto
 */
public class RuntimeParameters implements Serializable {

	/**
	 * シリアルバージョンID
	 */
	private static final long serialVersionUID = 2577283536937064218L;

	/** 起動パラメータ */
	private Map<String, String> runtimeParameters = null;

	/**
	 * コンストラクタ。
	 * @param parameterMap 起動パラメータのマップ。Serializableでなければならない。
	 */
	public RuntimeParameters(Map<String, String> parameterMap) {

		if (parameterMap == null) {
			runtimeParameters = new HashMap<String, String>();
		} else {
			runtimeParameters = parameterMap;
		}
	}

	/**
	 * 起動パラメータを返します。
	 * @param key 起動パラメータのキー
	 * @return パラメータの値
	 */
	public String get(String key) {
		return runtimeParameters.get(key);
	}

	/**
	 * 指定されたキーが起動パラメータに存在するかどうかを判定します。
	 * @param key 起動パラメータのキー
	 * @return キーが存在する場合はtrue、存在しない場合はfalse
	 */
	public boolean containsKey(String key) {
		return runtimeParameters.containsKey(key);
	}

	/**
	 * {@inheritDoc}
	 */
	@Override
	public String toString() {
		// クラス名を出力。
		StringBuilder st = new StringBuilder(this.getClass().getSimpleName());
		// パラメータを出力。
		st.append(runtimeParameters);
		return st.toString();
	}
}
