/*********************************************************************
* All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*   システム名      ：eo顧客基幹システム
*   モジュール名    ：物流管理システム
*   ソースファイル名：JDKWebCommon.java
*   作成者          ：富士通
*   日付            ：2011年05月28日
*＜機能概要＞
*   物流管理システムの共通処理クラスです。
*＜修正履歴＞
*   バージョン  修正日       修正者      修正内容
*   v1.00.00    2011/05/28   FJ          新規作成
*
**********************************************************************/
package eo.web.webview.common;

import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;

import com.fujitsu.futurity.web.x31.X31BWebBusinessLogic;
import com.fujitsu.futurity.web.x31.X31CWebConst;
import com.fujitsu.futurity.web.x31.X31SDataBeanAccess;
import com.fujitsu.futurity.web.x31.X31SDataBeanAccessArray;

import eo.common.constant.JDKStrConst;
import eo.common.constant.JPCOnlineMessageConstant;
import eo.common.util.JDKCommonUtil;
import eo.common.util.JPCUtilCommon;
import eo.web.webview.JCCWebBusinessLogic;

/**
 * 物流管理システム共通処理
 * @author 富士通
 */
public class JDKWebCommon
{

	/**
	 * ディレイド依頼処理 サービスインターフェイスID
	 */
	private static final String DLYD_SIF_ID = "ECC0111D010";
	/**
	 * ファイルアップロード用 リスト名
	 */
	private static final String FILE_UPLOAD_LIST_NAME = "list_name";
	/**
	 * ファイルアップロード用 アイテム名
	 */
	private static final String FILE_UPLOAD_ITEM_NAME = "item_name";
	/**
	 * ファイルアップロード用 インデックス
	 */
	private static final String FILE_UPLOAD_INDEX = "index";
	
	/**
	 * サービスフォームビーンからkeyで指定されたデータを取得します。
	 * @param logic ロジックオブジェクト
	 * @param keies キー
	 * @return 設定されているデータ
	 */
	public static String getData(JCCWebBusinessLogic logic, String...keies)
	{
		return getData(getParentBean(logic, keies), keies[keies.length - 1]);
	}

	/**
	 * サービスフォームビーンからkeyで指定されたデータを取得します。
	 * @param bean データビーン
	 * @param keies キー
	 * @return 設定されているデータ
	 */
	public static String getData(X31SDataBeanAccess bean, String...keies)
	{
		return getParentBean(bean, keies).sendMessageString(keies[keies.length - 1], X31CWebConst.DATABEAN_GET_VALUE);
	}
	
	/**
	 * サービスフォームビーンからkeyで指定されたデータを取得します。
	 * @param logic ロジックオブジェクト
	 * @param keies キー
	 * @return 設定されているデータ
	 */
	public static Long getDataL(JCCWebBusinessLogic logic, String...keies)
	{
		return getDataL(getParentBean(logic, keies), keies[keies.length - 1]);
	}

	/**
	 * サービスフォームビーンからkeyで指定されたデータを取得します。
	 * @param bean データビーン
	 * @param keies キー
	 * @return 設定されているデータ
	 */
	public static Long getDataL(X31SDataBeanAccess bean, String...keies)
	{
		return getParentBean(bean, keies).sendMessageLong(keies[keies.length - 1], X31CWebConst.DATABEAN_GET_VALUE);
	}
	
	/**
	 * サービスフォームビーンからkeyで指定されたデータを取得します。
	 * @param logic ロジックオブジェクト
	 * @param keies キー
	 * @return 設定されているデータ
	 */
	public static Boolean getDataB(JCCWebBusinessLogic logic, String...keies)
	{
		return getDataB(getParentBean(logic, keies), keies[keies.length - 1]);
	}

	/**
	 * サービスフォームビーンからkeyで指定されたデータを取得します。
	 * @param bean データビーン
	 * @param keies キー
	 * @return 設定されているデータ
	 */
	public static Boolean getDataB(X31SDataBeanAccess bean, String...keies)
	{
		return getParentBean(bean, keies).sendMessageBoolean(keies[keies.length - 1], X31CWebConst.DATABEAN_GET_VALUE);
	}

	/**
	 * サービスフォームビーンのkeyで指定された変数にvalueを設定します。
	 * @param logic ロジックオブジェクト
	 * @param value 設定したい値
	 * @param keies キー
	 */
	public static void setData(JCCWebBusinessLogic logic, String value, String...keies)
	{
		setData(getParentBean(logic, keies), value, keies[keies.length - 1]);
	}

	/**
	 * サービスフォームビーンのkeyで指定された変数にvalueを設定します。
	 * @param bean データビーン
	 * @param value 設定したい値
	 * @param keies キー
	 */
	public static void setData(X31SDataBeanAccess bean, String value, String...keies)
	{
		X31SDataBeanAccess subBean = getParentBean(bean, keies);
		subBean.sendMessageString(keies[keies.length - 1], X31CWebConst.DATABEAN_SET_VALUE, value);
	}
	
	/**
	 * サービスフォームビーンのkeyで指定された変数にvalueを設定します。
	 * @param logic ロジックオブジェクト
	 * @param value 設定したい値
	 * @param keies キー
	 * @return 設定されているデータ
	 */
	public static void setData(JCCWebBusinessLogic logic, Long value, String...keies)
	{
		setData(getParentBean(logic, keies), value, keies[keies.length - 1]);
	}

	/**
	 * サービスフォームビーンのkeyで指定された変数にvalueを設定します。
	 * @param bean データビーン
	 * @param value 設定したい値
	 * @param keies キー
	 * @return 設定されているデータ
	 */
	public static void setData(X31SDataBeanAccess bean, Long value, String...keies)
	{
		X31SDataBeanAccess subBean = getParentBean(bean, keies);
		subBean.sendMessageLong(keies[keies.length - 1], X31CWebConst.DATABEAN_SET_VALUE, value);
	}
	
	/**
	 * サービスフォームビーンのkeyで指定された変数にvalueを設定します。
	 * @param logic ロジックオブジェクト
	 * @param value 設定したい値
	 * @param keies キー
	 * @return 設定されているデータ
	 */
	public static void setData(JCCWebBusinessLogic logic, Boolean value, String...keies)
	{
		setData(getParentBean(logic, keies), value, keies[keies.length - 1]);
	}
	
	/**
	 * サービスフォームビーンのkeyで指定された変数にvalueを設定します。
	 * @param bean データビーン
	 * @param value 設定したい値
	 * @param keies キー
	 * @return 設定されているデータ
	 */
	public static void setData(X31SDataBeanAccess bean, Boolean value, String...keies)
	{
		X31SDataBeanAccess subBean = getParentBean(bean, keies);
		subBean.sendMessageBoolean(keies[keies.length - 1], X31CWebConst.DATABEAN_SET_VALUE, value);
	}

	/**
	 * サービスフォームビーンからデータビーンオブジェクトを取得します。
	 * @param logic ロジックオブジェクト
	 * @param keies キー
	 * @return 設定されているデータビーン
	 */
	public static X31SDataBeanAccess getParentBean(JCCWebBusinessLogic logic, String...keies)
	{
		return getParentBean(logic.getServiceFormBean(), keies);
	}

	/**
	 * サービスフォームビーンからサブデータビーンオブジェクトを取得します。
	 * @param bean データビーン
	 * @param keies キー
	 * @return 設定されているデータビーン
	 */
	public static X31SDataBeanAccess getParentBean(X31SDataBeanAccess bean, String...keies)
	{
		if (keies.length == 1)
		{
			return bean;
		}
		X31SDataBeanAccess tempolary = bean;
		int length = keies.length;
		for (int i = 0 ; i < length - 1 ; i++)
		{
			tempolary = tempolary.getDataBeanArray(keies[i]).getDataBean(0);
		}
		return tempolary;
	}
	
	/**
	 * サービスフォームビーンからデータビーンオブジェクトを取得します。
	 * @param logic ロジックオブジェクト
	 * @param keies キー
	 * @return 設定されているデータビーン
	 */
	public static X31SDataBeanAccess getBean(JCCWebBusinessLogic logic, String...keies)
	{
		return getBean(logic.getServiceFormBean(), keies);
	}

	/**
	 * サービスフォームビーンからサブデータビーンオブジェクトを取得します。
	 * @param bean データビーン
	 * @param keies キー
	 * @return 設定されているデータビーン
	 */
	public static X31SDataBeanAccess getBean(X31SDataBeanAccess bean, String...keies)
	{
		return getParentBean(bean, keies).getDataBeanArray(keies[keies.length - 1]).getDataBean(0);
	}
	
	
	/**
	 * プルダウンの名称にインデックスを付加します。
	 */
	public static void appendPrefix(X31SDataBeanAccess bean, String dataLabel)
	{
		int dataCount = (Integer)bean.sendMessage(dataLabel, X31CWebConst.DATABEAN_GET_COUNT);
		int fillLevel = Integer.toString(dataCount).length();
		int addCount = 0;
		for (int i = 0;i < dataCount;i++) 
		{
			String value = bean.sendMessageString(dataLabel, X31CWebConst.DATABEAN_GET_VALUE, i);

			if (JDKCommonUtil.isNull(value)) {
				addCount = -1;
			}
			else
			{
				String filledIndex = JPCUtilCommon.fillZero(Integer.toString(i + 1 + addCount), fillLevel, false);
				bean.sendMessageString(dataLabel, X31CWebConst.DATABEAN_SET_VALUE, i, String.format("%s.%s", filledIndex, value));
			}
		}
	}

	/**
	 * プルダウンの選択値を設定します。<br>
	 * このメソッドで対応しているプルダウンのデータビーン形式は以下の通り<br>
	 * &nbsp;pullDownLabel プルダウンの変数名<br>
	 * &nbsp;&nbsp;selectLabel(Long) 選択インデックス。selectタグのvalueにマッピングされる。<br>
	 * &nbsp;&nbsp;codeLabel(String) 選択された値のコード値を保持する。<br>
	 * &nbsp;&nbsp;nameLabel(String) 選択された値の名称を保持する。<br>
	 * &nbsp;&nbsp;codeListLabel(String*) プルダウンで使用するコードの一覧<br>
	 * &nbsp;&nbsp;nameListLabel(String*) プルダウンに表示する名称の一覧<br>
	 * @param logic ロジッククラスインスタンス
	 * @param pullDownLabel プルダウンをまとめてる変数名
	 * @param selectLabel 選択値が格納される変数名
	 * @param codeLabel 選択したコード
	 * @param nameLabel 選択した名称
	 * @param codeListLabel コードの一覧
	 * @param nameListLabel 名称の一覧
	 */
	public static void storePullDown(JCCWebBusinessLogic logic, String pullDownLabel,
										String selectLabel,
										String codeLabel, String nameLabel, 
										String codeListLabel, String nameListLabel)
	{
		storePullDown(logic, pullDownLabel, selectLabel, codeLabel, codeListLabel);
		storePullDown(logic, pullDownLabel, selectLabel, nameLabel, nameListLabel);
	}

	/**
	 * プルダウンの選択値を設定します。<br>
	 * @param logic ロジッククラスインスタンス
	 * @param pullDownLabel プルダウンをまとめてる変数名
	 * @param selectLabel 選択値が格納される変数名
	 * @param codeLabel 選択した値
	 * @param listLabel 値の一覧
	 */
	public static void storePullDown(JCCWebBusinessLogic logic, String pullDownLabel,
										String selectLabel,
										String codeLabel, String listLabel)
	{
		Long selectedIndex = getDataL(logic, pullDownLabel, selectLabel);

		X31SDataBeanAccess pulldown = logic.getServiceFormBean().getDataBeanArray(pullDownLabel).getDataBean(0);
		String selected = "";
		if ((Integer)pulldown.sendMessage(listLabel, X31CWebConst.DATABEAN_GET_COUNT) != 0)
		{
			selected = pulldown.sendMessageString(listLabel,
														X31CWebConst.DATABEAN_GET_VALUE,
														selectedIndex.intValue());
			
		}
		
		selected = getFollowOf(selected, ".");
		setData(logic, selected, pullDownLabel, codeLabel);
	}
	/**
	 * プルダウンを初期化します。<br>
	 * 対応しているプルダウンのデータ形式はstorePullDownを参照すること。
	 * @param logic ロジッククラスインスタンス
	 * @param pullDownLabel プルダウンをまとめてる変数名
	 * @param selectLabel 選択値が格納される変数名
	 * @param codeLabel 選択したコード
	 * @param nameLabel 選択した名称
	 * @param codeListLabel コードの一覧
	 * @param nameListLabel 名称の一覧
	 */
	public static void clearPullDown(JCCWebBusinessLogic logic, String pullDownLabel,
										String selectLabel,
										String codeLabel, String nameLabel, 
										String codeListLabel, String nameListLabel)
	{
		X31SDataBeanAccess pullDown = logic.getServiceFormBean().getDataBeanArray(pullDownLabel).getDataBean(0);
		
		pullDown.sendMessage(codeListLabel, X31CWebConst.DATABEAN_CLEAR);
		pullDown.sendMessage(nameListLabel, X31CWebConst.DATABEAN_CLEAR);
		pullDown.sendMessage(selectLabel, X31CWebConst.DATABEAN_CLEAR);
		pullDown.sendMessage(codeLabel, X31CWebConst.DATABEAN_CLEAR);
		pullDown.sendMessage(nameLabel, X31CWebConst.DATABEAN_CLEAR);
	}
	
	
	/**
	 * strの中からseparateに続く文字列を切り出して返す。<br>
	 * もしstrにseparateが含まれていなかった場合は、strを無加工で返す。<br>
	 * @param str 切り出される文字列
	 * @param separate 切り出しポイント
	 * @return 切り出された文字列
	 */
	public static String getFollowOf(String str, String separate)
	{
		if (JDKCommonUtil.isNull(str))
		{
			return str;
		}
		
		int index = str.indexOf(separate);
		if (index == -1 )
		{
			return str;
		}
		
		return str.substring(index + 1, str.length());
	}
	
	
	/**
	 * 文字列からサブ文字列を切り出します。指定のインデックスが不正だった場合でも例外を発生させません。
	 * @param org 元の文字列
	 * @param start 切り出し開始インデックス
	 * @param end 切り出し終了インデックス
	 * @return 切り出された文字列
	 */
	public static String substr(String org, int start, int end)
	{
		if (org == null)
		{
			return "";
		}
		
		int length = org.length();
		
		if (length < end)
		{
			end = length;
		}
		
		if (end < start)
		{
			return "";
		}
		
		if (start < 0)
		{
			start = 0;
		}
		
		return org.substring(start, end);
	}
	

	/**
	 * 同じ構造のデータビーンタイプにデータをコピーします。
	 * @param src データの移送元
	 * @param dest データの移送先
	 */
	public static void copyStructure(X31SDataBeanAccess src, X31SDataBeanAccess dest, String...excepts)
	{
		Set<String> exceptSet = new HashSet<String>();
		if (excepts != null)
		{
			for (String except : excepts)
			{
				exceptSet.add(except);
			}
		}
		for (String itemName : src.getItemNameList())
		{
			if (exceptSet.contains(itemName))
			{
				continue;
			}
			setData(dest, getData(src, itemName), itemName);
		}
	}
	
	
	/**
	 * マップから特定キー情報を抽出します。
	 * @param map 特定キーを含むデータ
	 * @param matchers 特定キーであることを判定するオブジェクト
	 * @return mapから matchersで一致した項目
	 */
	@SuppressWarnings("unchecked")
	public static Map<String, String> extract(Map map, Comparable...matchers)
	{
		Map errors = new HashMap();
		
		Set keies = map.keySet();
		for (Object keyObject : keies)
		{
			String key = keyObject.toString();
			
			Object value = map.get(key);
			if (value instanceof List)
			{
				List childErrorList = new ArrayList();
				for (Object o : (List)value)
				{
					Map childErrors = extract((Map)o, matchers);
					if (!childErrors.isEmpty())
					{
						childErrorList.add(childErrors);
					}
				}
				
				if (!childErrorList.isEmpty())
				{
					errors.put(key, childErrorList);
				}
				
				continue;
			}
			
			if (value instanceof Map)
			{
				Map childErrors = extract((Map)value, matchers);
				if (!childErrors.isEmpty())
				{
					errors.put(key, childErrors);
				}
				continue;
			}
			
			for (Comparable matcher : matchers)
			{
				if (matcher.compareTo(key.toString()) == 0)
				{
					errors.put(key, map.get(key).toString());
					break;
				}
			}
		}
		
		return errors;
	}
	
	/**
	 * 開始一致判定
	 * @param baseStr 基準文字
	 * @return 開始一致比較
	 */
	@SuppressWarnings("unchecked")
	public static Comparable startWith(final String baseStr)
	{
		return new Comparable()
		{
			
			/**
			 * 比較処理
			 * @param target 比較対象
			 * @return 比較結果
			 */
			@Override
			public int compareTo(Object target)
			{
				return target.toString().startsWith(baseStr) ? 0 : -1;
			}
		};
	}

	/**
	 * 終了一致判定
	 * @param baseStr 基準文字
	 * @return 終了一致比較
	 */
	@SuppressWarnings("unchecked")
	public static Comparable endWith(final String baseStr)
	{
		return new Comparable()
		{
			
			/**
			 * 比較処理
			 * @param target 比較対象
			 * @return 比較結果
			 */
			@Override
			public int compareTo(Object target)
			{
				return target.toString().endsWith(baseStr) ? 0 : -1;
			}
		};
	}

	/**
	 * 完全一致判定
	 * @param baseStr 基準文字
	 * @return 完全一致比較
	 */
	@SuppressWarnings("unchecked")
	public static Comparable equal(final String baseStr)
	{
		return new Comparable()
		{
			
			/**
			 * 比較処理
			 * @param target 比較対象
			 * @return 比較結果
			 */
			@Override
			public int compareTo(Object target)
			{
				return target.toString().equals(baseStr) ? 0 : -1;
			}
		};
	}

	/**
	 * 運用日付時分秒取得
	 * @param bl 業務ロジック
	 * @return String 運用日付時分秒。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	public static String getOpeDateTime(X31BWebBusinessLogic bl) throws Exception 
	{
		String strDate = JCCWebCommon.getOpeDate(bl, null);
		String strTime = JCCWebCommon.getSysDateTime().substring(8);

		return (strDate + strTime);
	}
	
	/**
	 * データビーンをソートします。
	 * @param array ソート対象の配列
	 * @param compare 比較オブジェクト
	 */
	public static void sort (X31SDataBeanAccessArray array, Comparator<X31SDataBeanAccess> comparator)
	{
		List<MappedDataBean> list = new ArrayList<MappedDataBean>();
		int size = array.getCount();
		for (int i = 0; i < size;i++)
		{
			X31SDataBeanAccess data = array.getDataBean(i);
			list.add(new JDKWebCommon().new MappedDataBean(data));
		}
		
		Collections.sort(list, new JDKWebCommon().new MappedDataComparator(comparator));
		for (int i = 0;i < list.size();i++)
		{
			Map<String, String> map = list.get(i).map;
			Set<String> keies = map.keySet();
			for (String key : keies)
			{
				setData(array.getDataBean(i), map.get(key), key);
			}
		}
	}
	

	/**
	 * データビーンをマップとともに保持します
	 */
	class MappedDataBean
	{
		/** データビーンと同様の内容 */
		Map<String, String> map;
		/** データビーン */
		X31SDataBeanAccess data;
		
		/**
		 * コンストラクタ
		 * @param data 保持対象のデータビーン
		 */
		public MappedDataBean(X31SDataBeanAccess data)
		{
			this.data = data;
			this.map = new HashMap<String, String>();
			for (String itemName : data.getItemNameList())
			{
				map.put(itemName, getData(data, itemName));
			}
		}
	}

	/**
	 * MappedDataBeanのソートオブジェクト
	 */
	class MappedDataComparator implements Comparator<MappedDataBean>
	{
		/** MappedDataBeanはそれが内包するX31SDataBeanAccessについてソートされる */
		Comparator<X31SDataBeanAccess> comparator;
		
		/**
		 * コンストラクタ
		 * @param comparator X31SDataBeanAccessの比較オブジェクト
		 */
		public MappedDataComparator(Comparator<X31SDataBeanAccess> comparator)
		{
			this.comparator = comparator;
		}
		
		/**
		 * MappedDataBeanの大小比較はX31SDataBeanAccessの大小比較により実施される
		 */
		@Override
		public int compare(MappedDataBean arg0, MappedDataBean arg1) {
			return comparator.compare(arg0.data, arg1.data);
		}
	}
	

	/**
	 * ディレイド依頼処理用のByte配列のマッピングを行います。
	 * <BR>
	 * @param attachMap バイト配列用マッピング HashMap
	 * @param svBean サービスフォームBean
	 * @throws UnsupportedEncodingException 
	 */
	public static void setByteArrayMapping(HashMap<String, Object> attachMap, String propName, JCCWebBusinessLogic logic) throws UnsupportedEncodingException
	{
		//バイト配列へ変換 
		String eFile = getData(logic, propName);
		byte[] binaryFile = eFile.getBytes(JDKStrConst.CHAR_SET_SJIS);
		
		HashMap<String, Object> fileMap = new HashMap<String, Object>();
		ArrayList<HashMap<String, Object>> fileList = new ArrayList<HashMap<String, Object>>();
		
		fileMap.put(X31CWebConst.TELEGRAM_INFO_ATTACH_IDENTIFUCD, DLYD_SIF_ID);
		fileMap.put(X31CWebConst.TELEGRAM_INFO_ATTACH_LIST_NAMAE, FILE_UPLOAD_LIST_NAME);
		fileMap.put(X31CWebConst.TELEGRAM_INFO_ATTACH_ITEM_NAMAE, FILE_UPLOAD_ITEM_NAME);
		fileMap.put(X31CWebConst.TELEGRAM_INFO_ATTACH_INDEX, FILE_UPLOAD_INDEX);
		fileMap.put(X31CWebConst.TELEGRAM_INFO_ATTACH_FILE, binaryFile);
		//リストへ追加
		fileList.add(fileMap);
		attachMap.put(X31CWebConst.TELEGRAM_INFO_ATTACH_FILE_LIST, fileList);
	}

	/**
	 * ディレイド依頼処理用のByte配列のマッピングを行います。
	 * <BR>
	 * @param attachMap バイト配列用マッピング HashMap
	 * @param svBean サービスフォームBean
	 * @throws UnsupportedEncodingException 
	 */
	public static void setByteArrayMapping2(HashMap<String, Object> attachMap, String propName, JCCWebBusinessLogic logic) throws UnsupportedEncodingException
	{
		//バイト配列へ変換 
		String eFile = getData(logic, propName);
		byte[] binaryFile = eFile.getBytes(JDKStrConst.CHAR_SET_WIN31J);
		
		HashMap<String, Object> fileMap = new HashMap<String, Object>();
		ArrayList<HashMap<String, Object>> fileList = new ArrayList<HashMap<String, Object>>();
		
		fileMap.put(X31CWebConst.TELEGRAM_INFO_ATTACH_IDENTIFUCD, DLYD_SIF_ID);
		fileMap.put(X31CWebConst.TELEGRAM_INFO_ATTACH_LIST_NAMAE, FILE_UPLOAD_LIST_NAME);
		fileMap.put(X31CWebConst.TELEGRAM_INFO_ATTACH_ITEM_NAMAE, FILE_UPLOAD_ITEM_NAME);
		fileMap.put(X31CWebConst.TELEGRAM_INFO_ATTACH_INDEX, FILE_UPLOAD_INDEX);
		fileMap.put(X31CWebConst.TELEGRAM_INFO_ATTACH_FILE, binaryFile);
		//リストへ追加
		fileList.add(fileMap);
		attachMap.put(X31CWebConst.TELEGRAM_INFO_ATTACH_FILE_LIST, fileList);
	}

	/**
	 * ファイルアップロードの共通チェック処理を行います。
	 * @param fileInfoList
	 * @param logic
	 * @return true:エラーなし false:エラーあり
	 * @throws Exception 
	 */
	@SuppressWarnings("unchecked")
	public static boolean isCommonFileUploaded(ArrayList<HashMap<String, Object>>  fileInfoList, X31BWebBusinessLogic logic) throws Exception
	{
		// 一時ファイル情報取得状況
		HashMap fileInfoMap = fileInfoList.get(0);
		
		String retCode = (String)fileInfoMap.get("resultCode");
		
		if(!"FILE_INFO_OK".equals(retCode))
		{
			
			String msgId = "";
			String[] strMsg = null;
			
			if("FILE_EXTENSION_ERROR".equals(retCode))
			{
				
				// 拡張子 NG の場合 メッセージID:EKBB010-KW
				msgId = JPCOnlineMessageConstant.EKBB010_KW;
			}
			else if("FILE_SIZE_ZERO".equals(retCode))
			{
				
				// 0バイトファイルの場合 メッセージID:EKBB020-KW
				msgId = JPCOnlineMessageConstant.EKBB020_KW;
			}
			else if("FILE_SIZE_NG".equals(retCode))
			{
				
				// ファイルサイズ超過の場合 メッセージID:EKBB030-KW
				msgId = JPCOnlineMessageConstant.EKBB030_KW;
				
				// 置換え文字列セット
				strMsg = new String[] {JCCUploadRestrictionCache.getValue("FILEUPLOAD_DEFAULT_SIZE") + "Mバイト"};
			}
			else if("FILE_NOT_EXIST".equals(retCode) || "FILE_INFO_READ_ERROR".equals(retCode) || "PROPERTY_READ_ERROR".equals(retCode))
			{
				
				// ファイルが存在しない場合
				// ファイル情報取得失敗の場合
				// 設定ファイルの読み込み失敗の場合 メッセージID:EKBB040-KW
				msgId = JPCOnlineMessageConstant.EKBB040_KW;
				
			}
			
			// メッセージセット
			if(strMsg == null)
			{
				JCCWebCommon.setMessageInfo(logic, msgId);
			}
			else
			{
				JCCWebCommon.setMessageInfo(logic, msgId, strMsg);
			}
		
			// エラーあり
			return false;
		}
		
		// エラーなし
		return true;
	}
	
}

