/*********************************************************************
* All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*   システム名      ：eo顧客基幹システム
*   モジュール名    ：OneStopDataBeanAccess
*   ソースファイル名：OneStopDataBeanAccess.java
*   作成者          ：富士通
*   日付            ：2011年04月27日
*＜機能概要＞
*   ワンストップ用擬似データBeanアクセスクラスです。
*   ※ワンストップ共通関連チェック専用の部品です。
*＜修正履歴＞
*   バージョン  修正日       修正者      修正内容
*   v18.00.00   2015/07/10   FJ)阪口     【ANK-2631-00-00】ワンストップ案件（ＳＴＥＰ１）
*   v18.00.01   2015/09/02   FJ)森杉     【ANK-2694-00-00】ワンストップ案件（ＳＴＥＰ２）eventIDが「GET_COUNT」の対応を追加
*
**********************************************************************/

package eo.web.webview.common;

import java.util.HashMap;
import java.util.ArrayList;


/**
 * ワンストップ用擬似データBeanアクセスクラスです。<p>
 * <BR>
 * @author 富士通
 */
public class OneStopDataBeanAccess extends HashMap<String, Object>
{
	
	/**
	 * ワンストップデータBeanにアクセスします。
	 * ※CLEAR機能のみ実装しています。
	 * 
	 * @param componentID アクセスするデータBeanの項目名
	 * @param eventID データBeanの処理種別
	 * @return true
	 */	
	public Object sendMessage(String componentID, String eventID)
	{
		if ("CLEAR".equals(eventID))
		{
			if (this.containsKey(componentID))
			{
				if (this.get(componentID) instanceof String)
				{
					this.put(componentID, "");
				}
				else if (this.get(componentID) instanceof ArrayList)
				{
					((ArrayList)this.get(componentID)).clear();
				}
			}
		}
// ANK-2694-00-00 ADD START 【ワンストップ用】
		else if ("GET_COUNT".equals(eventID))
		{
			if (this.containsKey(componentID))
			{
				if (this.get(componentID) instanceof ArrayList)
				{
					return Integer.valueOf(((ArrayList)this.get(componentID)).size());
				}
				else
				{
					return new Integer(1);
				}
			}
			else
			{
				return new Integer(0);
			}
		}
// ANK-2694-00-00 ADD END   【ワンストップ用】

		return (Object)Boolean.valueOf(true);
	}
	
	/**
	 * ワンストップデータBeanのString型項目にアクセスします。
	 * ※GET_VALUE機能のみ実装しています。
	 * 
	 * @param componentID アクセスするデータBeanの項目名
	 * @param eventID データBeanの処理種別
	 * @return componentIDで指定されたデータBeanの項目値
	 */	
	public String sendMessageString(String componentID, String eventID)
	{
		if ("GET_VALUE".equals(eventID))
		{
			String value = (String)this.get(componentID);
			if (value == null)
			{
				return "";
			}
			return value;
		}
		else
		{
			return "";
		}
	}
	
	/**
	 * ワンストップデータBeanのString型項目にアクセスします。
	 * ※SET_VALUE機能／ADD_VALUE機能のみ実装しています。
	 * 
	 * @param componentID アクセスするデータBeanの項目名
	 * @param eventID データBeanの処理種別
	 * @param value 設定する値
	 * @return SET_VALUEの場合：設定した値／ADD_VALUEの場合：空白
	 */	
	public String sendMessageString(String componentID, String eventID, String value)
	{
		if (value == null)
		{
			value = "";
		}
		
		if ("SET_VALUE".equals(eventID))
		{
			return (String)this.put(componentID, value);
		}
		else if ("ADD_VALUE".equals(eventID))
		{
			ArrayList<Object> list = (ArrayList<Object>)this.get(componentID);
			if (list == null)
			{
				list = new ArrayList<Object>();
				this.put(componentID, list);
			}
			list.add(value);
			return "";
		}
		else
		{
			return "";
		}
	}
	
	/**
	 * データタイプBean項目に対するワンストップデータBeanアクセスクラスリストを取得
	 * 
	 * @param componentID アクセスするデータBeanの項目名
	 * @return ワンストップデータBeanアクセスクラスリスト
	 */	
	public OneStopDataBeanAccessArray getDataBeanArray(String componentID)
	{
		OneStopDataBeanAccessArray dataBeanArray = null;
		if (this.get(componentID) == null)
		{
			dataBeanArray = new OneStopDataBeanAccessArray();
			this.put(componentID, dataBeanArray);
		}
		else
		{
			dataBeanArray = (OneStopDataBeanAccessArray)this.get(componentID);
		}
    	return dataBeanArray;
	}
}
