package com.fujitsu.futurity.bp.custom.common;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;

import com.fujitsu.futurity.bp.x21.bpm.exception.RequestParameterException;
import com.fujitsu.futurity.bp.x21.bpm.parameter.IRequestParameterReadOnly;

import eo.common.util.JDKCommonUtil;
import eo.common.util.JPCUtilCommon;

public class JDKPreviousValueCarrier extends JPCUtilCommon {
	/**
	 * 以前の結果値を設定します。
	 * @throws RequestParameterException 
	 */
	@SuppressWarnings("unchecked")
	public static String put(IRequestParameterReadOnly param, String...keies) throws RequestParameterException {
		if (keies == null || keies.length == 0)
		{
			return null;
		}
		
		int size = keies.length;
		Map map = (Map)param.getMappingWorkArea();
		if (map == null)
		{
			return null;
		}
		
		for (int i = 0;i < size - 1;i++) 
		{
			Object o = map.get(keies[i]);
			if (o instanceof HashMap)
			{
				map = (Map)o;
			}
			else if (o instanceof ArrayList)
			{
				map = (Map)((ArrayList)o).get(0);
			}
			else
			{
				return null;
			}
		}
		
		String key = keies[size - 1];
		if (!map.containsKey(key))
		{
			return null;
		}
		
		String val = map.get(key).toString();
		return JDKCommonUtil.isNull(val) ? null : val;
	}
}
