/*********************************************************************
*  All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名			：eo顧客基幹システム
*	モジュール名		：JBSbatACPointHkatJdgRsltInfSnd
*	ソースファイル名	：JBSbatACPointHkatJdgRsltInfSnd.java
*	作成者				：富士通　
*	作成日				：2012年06月12日
*＜機能概要＞
*　はぴeポイント引当審査結果データ送信部品です。
*＜修正履歴＞
*	バージョン	修正日		修正者	藤井	修正内容
*	v1.00.00	2012/06/12   富士通		新規作成
*********************************************************************/
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.JBSbatServiceInterfaceMap;
import eo.framework.item.JBSbatOutputItem;
import eo.framework.item.JBSbatCommonDBInterface;
import eo.framework.application.JBSbatBusinessException;
import eo.framework.db.JBSbatSQLAccess;
import eo.framework.util.JBSbatCheckUtil;

/**
* (クラスの機能概要) <p>
*<BR>
* @author 富士通
*/
public class JBSbatACPointHkatJdgRsltDtSnd extends JBSbatBusinessService
{
	/**▼▼▼▼▼▼ツールから生成した宣言です 開始▼▼▼▼▼▼*/
	/**▲▲▲▲▲▲ツールから生成した宣言です 終了▲▲▲▲▲▲*/

	/** インターフェイスID */
	private String interfaceID = null;
	
	/** ファイルパス */
	private ArrayList<String> fileList = null;
	
	/**
	 * 初期処理
	 * @param JBSbatCommonItem commonItem　バッチ共通パラメータ電文
	 * @throws Exception
	 */
	public void initial(JBSbatCommonItem commonItem) throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの初期処理を記述してください。▼▼▼▼▼▼*/
		/**▼▼▼▼▼▼ツールから生成した初期化のソースです 開始▼▼▼▼▼▼*/
		// 共通パラメータを設定します
		super.setCommonInfo(commonItem);
		/**▲▲▲▲▲▲ツールから生成した初期化のソースです 終了▲▲▲▲▲▲*/
		// ファイルパスとインターフェイスIDを取得
		String freeItem = commonItem.getFreeItem();
		String[] inf = freeItem.split(JACStrConst.FREE_DIV);
		
		// ファイルのリストを生成
		fileList = new ArrayList<String>();
		
		// インターフェイスIDを取得
		interfaceID = inf[0];
		
		// ファイルをリストに追加
		fileList.add(inf[1]);
	/**▲▲▲▲▲▲業務サービスの初期処理を記述してください。▲▲▲▲▲▲*/
	}

	/**
	 * 主処理
	 * @return JBSbatOutputItem　出力情報
	 * @throws Exception
	 */
	public JBSbatOutputItem execute() throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの主処理を記述してください。▼▼▼▼▼▼*/
		// 結果を格納するMAPを生成
		HashMap<String, Object> resultMap = new HashMap<String, Object>();
		
		// ファイル送信処理
		JCCBatCommon.putFTP(commonItem, fileList, interfaceID, resultMap);
		
		// エラー区分を取得
		String errKbn = resultMap.get(JACStrConst.FTP_ERR_KBN).toString();
		
		// エラー判定
		if (JACStrConst.FTP_ERR_KBN_NOMAL.equals(errKbn))
		{
			// 正常の場合
			
			// 通常終了
			return null;

		}
		else 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});
				}
			}
		}
		// nullを返却
		return null;
	/**▲▲▲▲▲▲業務サービスの主処理を記述してください。▲▲▲▲▲▲*/
	}

	/**
	 * 業務サービス終了処理
	 * @throws Exception
	 */
	public void terminal() throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの終了処理を記述してください。▼▼▼▼▼▼*/
		/**▼▼▼▼▼▼ツールから生成した終了処理のソースです 開始▼▼▼▼▼▼*/
		/**▲▲▲▲▲▲ツールから生成した終了処理のソースです 終了▲▲▲▲▲▲*/
	/**▲▲▲▲▲▲業務サービスの終了処理を記述してください。▲▲▲▲▲▲*/
	}

	/**▼▼▼▼▼▼ツールから生成したメソッドです 開始▼▼▼▼▼▼*/
	/**▲▲▲▲▲▲ツールから生成したメソッドです 終了▲▲▲▲▲▲*/
}
