/*********************************************************************
*  All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名				：eo顧客基幹システム
*	モジュール名			：JBSbatCHMineoCicTrgtTmpFileCheck
*	ソースファイル名			：JBSbatCHMineoCicTrgtTmpFileCheck.java
*	作成者				：富士通　
*	作成日				：2021年07月17日
*＜機能概要＞
*	受信したファイル「CIC対象一時ファイル」のフォーマットチェックを行う。
*	チェックＮＧとなった場合は、システムエラーを返却する。
*＜修正履歴＞
*	バージョン	修正日		修正者			修正内容				障害／仕様変更No.
*	v54.00.00			2021/07/17		GDC)k.abuan			ANK-4064-00-00_CIC連携の自動化対応
*********************************************************************/
package eo.business.service;

import eo.business.common.JACbatDebugLogUtil;
import eo.business.common.JBSbatBusinessService;
import eo.business.util.file.JBSbatCHIFE093;
import eo.common.constant.JACStrConst;
import eo.framework.application.JBSbatBusinessException;
import eo.framework.item.JBSbatCommonItem;
import eo.framework.item.JBSbatOutputItem;
import eo.framework.item.JBSbatServiceInterfaceMap;
import eo.framework.util.JBSbatCheckUtil;


/**
* 受信したファイル「CIC対象一時ファイル」のフォーマットチェックを行う。
* チェックＮＧとなった場合は、システムエラーを返却する。 <p> <BR>
* @author 富士通
*/
public class JBSbatCHMineoCicTrgtTmpFileCheck extends JBSbatBusinessService
{
	/**▼▼▼▼▼▼ツールから生成した宣言です 開始▼▼▼▼▼▼*/
	
	/** サービス契約番号 */
	private static final String MESS_SVC_KEI_NO = "サービス契約番号";
	
	/** MESS_ID_EKKB0060TE */
	private static final String MESS_ID_EKKB0060TE = "EKKB0060TE";

	/** MESS_ID_EKKB0070TE */
	private static final String MESS_ID_EKKB0070TE = "EKKB0070TE";
	
	/** MESS_ID_EKKB0080TE */
	private static final String MESS_ID_EKKB0080TE = "EKKB0080TE";
	
	/**
	 * 初期処理
	 * @param JBSbatCommonItem commonItem　バッチ共通パラメータ電文
	 * @throws Exception
	 */
	public void initial(JBSbatCommonItem commonItem) throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの初期処理を記述してください。▼▼▼▼▼▼*/
		/**▼▼▼▼▼▼ツールから生成した初期化のソースです 開始▼▼▼▼▼▼*/
		
		// 共通パラメータを設定します
		super.setCommonInfo(commonItem);
		
		/**▲▲▲▲▲▲ツールから生成した初期化のソースです 終了▲▲▲▲▲▲*/
		
		assert 	JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][initial]");
		assert 	JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][initial][opeDate=" + super.opeDate + "]");
		assert 	JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][initial][freeItem=" + super.freeItem + "]");
		assert 	JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][initial]");
		
	/**▲▲▲▲▲▲業務サービスの初期処理を記述してください。▲▲▲▲▲▲*/
	}

	/**
	 * 主処理
	 * @param inMap　入力電文
	 * @return JBSbatOutputItem　出力情報
	 * @throws Exception
	 */
	public JBSbatOutputItem execute(JBSbatServiceInterfaceMap inMap) throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの主処理を記述してください。▼▼▼▼▼▼*/

		assert 	JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][execute]");
		assert 	inMap != null ? JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][execute][inMap=" + inMap.getMap().toString() + "]") : true;
		
		// 利用停止予告対象データ作成
		JBSbatOutputItem outputItem = new JBSbatOutputItem();
		
		singleCheckCHIFE093_INF1(inMap);
		
		assert 	JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][execute]");
		return outputItem;
	/**▲▲▲▲▲▲業務サービスの主処理を記述してください。▲▲▲▲▲▲*/
	}
	
	/**
	 * 業務サービス終了処理
	 * @throws Exception
	 */
	public void terminal() throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの終了処理を記述してください。▼▼▼▼▼▼*/
		/**▼▼▼▼▼▼ツールから生成した終了処理のソースです 開始▼▼▼▼▼▼*/
		/**▲▲▲▲▲▲ツールから生成した終了処理のソースです 終了▲▲▲▲▲▲*/
		
		assert 	JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][terminal]");
		assert 	JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][terminal]");
		
	/**▲▲▲▲▲▲業務サービスの終了処理を記述してください。▲▲▲▲▲▲*/
	}
	
	private void singleCheckCHIFE093_INF1(JBSbatServiceInterfaceMap inMap) throws Exception
	{
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][singleCheckCHIFE093_INF1]");
		
		// 単項目チェックを行います
		String strValue = null;

		// サービス契約番号項目チェック
		strValue = (String)inMap.get(JBSbatCHIFE093.CUST_ID);
		
		// 必須チェック
		// サービス契約番号が空白・NULLの場合
		if(strValue == null || strValue.equals(JACStrConst.KARA_MOJI))
		{
			assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][singleCheckCHIFE093_INF1][サービス契約番号が空白・NULL]");
			assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][singleCheckCHIFE093_INF1]");
			throw new JBSbatBusinessException(MESS_ID_EKKB0060TE, new String[]{MESS_SVC_KEI_NO});
		}
		// 桁数チェック
		// サービス契約番号≠空文字　かつ　サービス契約番号の桁数≠10の場合
		if(!strValue.equals(JACStrConst.KARA_MOJI) && strValue.length() != 10)
		{
			assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][singleCheckCHIFE093_INF1][サービス契約番号≠空文字　かつ　サービス契約番号の桁数≠10]");
			assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][singleCheckCHIFE093_INF1]");
			throw new JBSbatBusinessException(MESS_ID_EKKB0070TE, new String[]{MESS_SVC_KEI_NO});
		}
		// 属性チェック
		// サービス契約番号≠空文字　かつ　サービス契約番号の属性≠半角英数字１の場合
		if(!strValue.equals(JACStrConst.KARA_MOJI) && !JBSbatCheckUtil.invoke(strValue, new String[]{"hannkakuesuuji1"}))
		{
			assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][singleCheckCHIFE093_INF1][サービス契約番号≠空文字　かつ　サービス契約番号の属性≠半角英数字１]");
			assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][singleCheckCHIFE093_INF1]");
			throw new JBSbatBusinessException(MESS_ID_EKKB0080TE, new String[]{MESS_SVC_KEI_NO});
		}
		
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][singleCheckCHIFE093_INF1]");
	}
}
