/*********************************************************************
*  All Rights reserved,Copyright (c) Fujitsu ,2011					 *
**********************************************************************
*＜プログラム内容＞
*	システム名			：eo顧客基幹システム
*	モジュール名		：JBSbatACDenpoChrgHjinSnd
*	ソースファイル名	：JBSbatACDenpoChrgHjinSnd.java
*	作成者				：富士通　
*	作成日				：2011年07月25日
*＜機能概要＞
*　電報利用課金法人分送信部品です。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v1.00.00	2011/07/25   富士通		新規作成
*********************************************************************/
package eo.business.service;

import java.util.ArrayList;
import java.util.HashMap;

import eo.business.common.JBSbatBusinessService;
import eo.business.common.JCCBatCommon;
import eo.common.constant.JACStrConst;
import eo.common.constant.JPCBatchMessageConstant;
import eo.framework.item.JBSbatCommonItem;
import eo.framework.item.JBSbatOutputItem;
import eo.framework.application.JBSbatBusinessException;

/**
* (クラスの機能概要) <p>
*<BR>
* @author 富士通
*/
public class JBSbatACDenpoChrgHjinSnd extends JBSbatBusinessService
{
	/**▼▼▼▼▼▼ツールから生成した宣言です 開始▼▼▼▼▼▼*/
	/**▲▲▲▲▲▲ツールから生成した宣言です 終了▲▲▲▲▲▲*/

	/**
	 * 初期処理
	 * @param JBSbatCommonItem commonItem　バッチ共通パラメータ電文
	 * @throws Exception
	 */
	public void initial(JBSbatCommonItem commonItem) throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの初期処理を記述してください。▼▼▼▼▼▼*/
		/**▼▼▼▼▼▼ツールから生成した初期化のソースです 開始▼▼▼▼▼▼*/
		// 共通パラメータを設定します
		super.setCommonInfo(commonItem);
		/**▲▲▲▲▲▲ツールから生成した初期化のソースです 終了▲▲▲▲▲▲*/
	/**▲▲▲▲▲▲業務サービスの初期処理を記述してください。▲▲▲▲▲▲*/
	}

	/**
	 * 主処理
	 * @return JBSbatOutputItem　出力情報
	 * @throws Exception
	 */
	public JBSbatOutputItem execute() throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの主処理を記述してください。▼▼▼▼▼▼*/
		// 変数宣言
		ArrayList<String> fileList = new ArrayList<String>();
		HashMap<String, Object> resultMap = new HashMap<String, Object>();
		String[] freeItem = this.freeItem.split(JACStrConst.FREE_DIV);

		/** (1) 電報利用課金(法人分)送信 */
		// (a) 送信情報をFree項目より取得
		String interFaceId = freeItem[0];
		String filePath = freeItem[1];
		
		// (b) 電報利用課金(法人分)送信実施
		fileList.add(filePath);
		JCCBatCommon.putFTP(commonItem, fileList, interFaceId, resultMap);
		
		// (c) エラーが発生した場合、業務例外をスロー
		String errKbn = resultMap.get(JACStrConst.FTP_ERR_KBN).toString();
		// 接続エラーの場合
		if (JACStrConst.FTP_ERR_KBN_CONNECT_ERR.equals(errKbn))
		{
			// 接続エラー情報を取得
			HashMap<?, ?> connectErr = (HashMap<?, ?>)resultMap.get(JACStrConst.FTP_CONNECT_ERR);
			// エラーフラグを取得
			boolean errFlg = Boolean.valueOf(connectErr.get(JACStrConst.FTP_CONNECT_ERR_FLG).toString()).booleanValue();
			// 接続エラーの判定処理
			if (!errFlg)
			{
				// 接続エラーの場合

				// エラーメッセージを取得
				String msg = connectErr.get(JACStrConst.FTP_CONNECT_ERR_MESSAGE).toString();
				// 業務例外を発生
				throw new JBSbatBusinessException(JPCBatchMessageConstant.EACB0530CE, new String[] {msg});
			}
		}
		// ファイルエラーの場合
		else if (JACStrConst.FTP_ERR_KBN_FILE_ERR.equals(errKbn))
		{	
			// ファイルエラーリストの回数分繰り返す
			ArrayList<?> fileErrList = (ArrayList<?>)resultMap.get(JACStrConst.FTP_FILE_ERR);
			for(int i = 0; i < fileErrList.size(); i++)
			{
				// ファイルエラー情報を取得
				HashMap<?, ?> fileErr = (HashMap<?, ?>)fileErrList.get(i);
				// エラーフラグを取得
				boolean errFlg = Boolean.valueOf(fileErr.get(JACStrConst.FTP_FILE_ERR_FLG).toString()).booleanValue();
				// ファイルエラーの判定処理
				if (!errFlg)
				{
					// エラーメッセージを取得
					String msg = fileErr.get(JACStrConst.FTP_FILE_ERR_MESSAGE).toString();
					// 業務例外を発生
					throw new JBSbatBusinessException(JPCBatchMessageConstant.EACB0530CE, new String[] {msg});
				}
			}
		}
		
		return null;
	/**▲▲▲▲▲▲業務サービスの主処理を記述してください。▲▲▲▲▲▲*/
	}

	/**
	 * 業務サービス終了処理
	 * @throws Exception
	 */
	public void terminal() throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの終了処理を記述してください。▼▼▼▼▼▼*/
		/**▼▼▼▼▼▼ツールから生成した終了処理のソースです 開始▼▼▼▼▼▼*/
		/**▲▲▲▲▲▲ツールから生成した終了処理のソースです 終了▲▲▲▲▲▲*/
	/**▲▲▲▲▲▲業務サービスの終了処理を記述してください。▲▲▲▲▲▲*/
	}

	/**▼▼▼▼▼▼ツールから生成したメソッドです 開始▼▼▼▼▼▼*/
	/**▲▲▲▲▲▲ツールから生成したメソッドです 終了▲▲▲▲▲▲*/
}
