/*********************************************************************
* All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*   システム名      ：eo顧客基幹システム
*   モジュール名    ：JCCDenshiFileMapUtil
*   ソースファイル名：JCCDenshiFileMapUtil.java
*   作成者          ：富士通
*   日付            ：2011年04月19日
*＜機能概要＞
*  電子ファイル管理登録サービスIF用のサービス情報を生成します。
*＜修正履歴＞
*   バージョン  修正日       修正者      修正内容
*   v18.00.00   2015/08/11   FJ) 阪口   【ANK-2631-00-00】ワンストップ案件（ＳＴＥＰ１）※koptWebBからkoptWebAへコピー
*
**********************************************************************/

package eo.web.webview.commonOneStop;

import java.util.ArrayList;
import java.util.HashMap;

import com.fujitsu.futurity.web.x31.X31CWebConst;


import eo.common.util.JCCFrameworkException;

/**
 * 電子ファイル管理登録サービスIF用のサービス情報を生成します。
 * <br>
 * @author 富士通
 */
public class JCCDenshiFileMapUtil
{
	/**
	 *  電子ファイル管理登録サービスIF サービスインターフェイスID
	 */
	private static final String SERVICE_IF_ID = "ECC0041D010";
	
	
	/**
	 * 電子管理ファイルサービス生成処理です。
	 * 電子ファイル管理登録サービスIF用のサービス情報を生成します。
	 * 
	 * @param inputMap     サービス情報マップ
	 * @param attachMap    添付ファイル情報マップ
	 * @param sysId        システムID
	 * @param fileCodeList 実ファイルに紐付けるファイルコード
	 * @param byteList     実ファイルバイナリ
	 * @param fileDelYmd   ファイル削除年月日
	 * @param funcCode      機能コード
	 * 
	 */
	public static void setDenshiFileService(HashMap<String, Object> inputMap, HashMap<String, Object> attachMap, String sysId,
			ArrayList<String> fileCodeList, ArrayList<byte[]> byteList, ArrayList<String> fileDelYmd, String funcCode)
	{
		// サービス情報マップチェック
		if (inputMap == null)
		{
			throw new JCCFrameworkException("サービス情報マップがnullです");
		}
		// 添付ファイル情報マップチェック
		if (attachMap == null)
		{
			throw new JCCFrameworkException("添付ファイル情報マップがnullです");
		}
		// 電子ファイルリストチェック
		if (byteList == null)
		{
			throw new JCCFrameworkException("電子ファイルリストがnullです");
		}
		// システムIDチェック
		if (sysId == null)
		{
			throw new JCCFrameworkException("システムIDがnullです");
		}
		// 機能コードチェック
		if (funcCode == null)
		{
			throw new JCCFrameworkException("機能コードがnullです");
		}
		String strFuncCode = funcCode;
		strFuncCode = strFuncCode.replaceAll(" ", "");		//半角空白削除
		strFuncCode = strFuncCode.replaceAll("　", "");	//全角空白削除
		if ("".equals(strFuncCode))			
		{
			throw new JCCFrameworkException("機能コードが空白です");
		}
		
		if(byteList.size() != fileCodeList.size() || fileCodeList.size() != fileDelYmd.size())
		{
			throw new JCCFrameworkException("各リストの格納数に差異があります");
		}
		
		// サービス情報格納用リストを作成
		ArrayList<HashMap<String, Object>> serviceMapList =  new ArrayList<HashMap<String, Object>>();
		HashMap<String, Object> ifMap = null;
		
		// 添付情報格納用リストを作成
		ArrayList<HashMap<String, Object>> attachMapList =  new ArrayList<HashMap<String, Object>>();
		HashMap<String, Object> atMap = null;
		
		for(int i = 0 ; i < fileCodeList.size() ; i++)
		{
			ifMap =  new HashMap<String, Object>();
			ifMap.put("func_code", funcCode);				// 機能コード
			ifMap.put("sys_cd", sysId);						// システムID
			ifMap.put("file_cd", fileCodeList.get(i));		// ファイルコード
			ifMap.put("file_del_ymd", fileDelYmd.get(i));	// ファイル削除年月日
			
			atMap =  new HashMap<String, Object>();
			atMap.put(X31CWebConst.TELEGRAM_INFO_ATTACH_IDENTIFUCD, "identifyCD" + i);
			atMap.put(X31CWebConst.TELEGRAM_INFO_ATTACH_LIST_NAMAE, "list_name" + i);
			atMap.put(X31CWebConst.TELEGRAM_INFO_ATTACH_ITEM_NAMAE, "item_name" + i);
			atMap.put(X31CWebConst.TELEGRAM_INFO_ATTACH_INDEX, "index" + i);
			atMap.put(X31CWebConst.TELEGRAM_INFO_ATTACH_FILE, byteList.get(i));
			
			serviceMapList.add(ifMap);
			attachMapList.add(atMap);
		}

		inputMap.put(SERVICE_IF_ID, serviceMapList);
		attachMap.put(X31CWebConst.TELEGRAM_INFO_ATTACH_FILE_LIST, attachMapList);
	}
}

