/*********************************************************************
*  All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名			：eo顧客基幹システム
*	モジュール名		：JBSbatKKFocsRnkiInfHenshu
*	ソースファイル名	：JBSbatKKFocsRnkiInfHenshu.java
*	作成者				：FJ)柳
*	作成日				：2018年05月30日
*＜機能概要＞
*　ＦＯＣＳ連携情報編集部品です。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v37.01.00	2018/05/30  FJ)柳		【ANK-3366-16-00】eo光設備卸対応（FOCS向けVIEWの卸先事業者名について、半角変換が可能な文字は半角変換して返却）
*	v60.00.00	2022/08/05	FJ)原		【ANK-4269-00-00】マンション卸回線(WI-FIスキーム)の不備対応　STEP2
*********************************************************************/
package eo.business.service;

import java.util.ArrayList;

import eo.business.common.JBSbatBusinessService;
import eo.business.common.JKKBatConst;
import eo.business.util.file.JBSbatCCIFM047;
import eo.common.constant.JPCBatchMessageConstant;
import eo.common.util.JDKCommonUtil;
import eo.common.util.JKKCommonUtil;
import eo.framework.application.JBSbatBusinessException;
import eo.framework.file.JBSbatInputFileUtil;
import eo.framework.file.JBSbatOutputFileUtil;
import eo.framework.item.JBSbatCommonItem;
import eo.framework.item.JBSbatServiceInterfaceMap;
import eo.framework.item.JBSbatOutputItem;

/**
* ＦＯＣＳに連携する情報を編集する。<p>
*<BR>
* @author FJ)柳
*/
public class JBSbatKKFocsRnkiInfHenshu extends JBSbatBusinessService
{
	/**▼▼▼▼▼▼ツールから生成した宣言です 開始▼▼▼▼▼▼*/
	/**▲▲▲▲▲▲ツールから生成した宣言です 終了▲▲▲▲▲▲*/
    // ANK-4269-00-00 ADD START
	/** 改行コード */
	private static final String LF  = "LF";

	/** 文字コード */
	private static final String SJIS  = JKKBatConst.SJIS;

	/** コロン */
	private static final String DELIM = JKKBatConst.S_PARAM_DELIM;

	/** コロン */
	private static final String COMMA = JKKBatConst.S_SEP_CAM;

	/** ファイル連携先ディレクトリ(フルパス) */
	private String crFileDir = null;
	// ANK-4269-00-00 ADD END

	/**
	 * 初期処理
	 * @param JBSbatCommonItem commonItem　バッチ共通パラメータ電文
	 * @throws Exception
	 */
	public void initial(JBSbatCommonItem commonItem) throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの初期処理を記述してください。▼▼▼▼▼▼*/
		/**▼▼▼▼▼▼ツールから生成した初期化のソースです 開始▼▼▼▼▼▼*/
		// 共通パラメータを設定します
		super.setCommonInfo(commonItem);
		/**▲▲▲▲▲▲ツールから生成した初期化のソースです 終了▲▲▲▲▲▲*/
	/**▲▲▲▲▲▲業務サービスの初期処理を記述してください。▲▲▲▲▲▲*/
	}
	
	/**
	 * 主処理
	 * @param inMap　入力電文
	 * @return JBSbatOutputItem　出力情報
	 * @throws Exception
	 */
	public JBSbatOutputItem execute(JBSbatServiceInterfaceMap inMap) throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの主処理を記述してください。▼▼▼▼▼▼*/
		// -------------------------
		// 卸先事業者名半角変換
		// -------------------------
		// 卸先事業者コードを取得
		String orsjgsCd = inMap.getString(JBSbatCCIFM047.ORSJGS_CD);
		// 世代登録年月日時分秒を取得
		String geneAddDtm = inMap.getString(JBSbatCCIFM047.GENE_ADD_DTM);
		// 卸先事業者名を取得
		String orsjgsNm = inMap.getString(JBSbatCCIFM047.ORSJGS_NM);
		// 卸先事業者適用開始年月日を取得
		String orsjgsTstaymd = inMap.getString(JBSbatCCIFM047.ORSJGS_TSTAYMD);
		
		// 卸先事業者名を半角変換処理
		String hankakuOrsjgsNm = JKKCommonUtil.convertHalf(orsjgsNm);
		
		// -----------------------------------
		// 卸先事業者マスタ半角ファイル出力
		// -----------------------------------
		// ファイル出力用オブジェクト生成
		JBSbatOutputItem outputBean = new JBSbatOutputItem();
		// ファイル出力用インスタンス生成
		JBSbatServiceInterfaceMap outMap = new JBSbatServiceInterfaceMap();
		
		// 出力ファイル設定
		outMap.setString(JBSbatCCIFM047.ORSJGS_CD, orsjgsCd);				// 卸先事業者コード
		outMap.setString(JBSbatCCIFM047.GENE_ADD_DTM, geneAddDtm);			// 世代登録年月日時分秒
		outMap.setString(JBSbatCCIFM047.ORSJGS_NM, hankakuOrsjgsNm);		// 半角変換後の卸先事業者名
		outMap.setString(JBSbatCCIFM047.ORSJGS_TSTAYMD, orsjgsTstaymd);		// 卸先事業者適用開始年月日
		
		// 出力フラグの設定
		outMap.setOutFlg(true);
		
		// 出力ファイルリストに設定
		outputBean.addOutMapList(outMap);
		
		// ANK-4269-00-00 ADD START
		// -------------------------
		// スキーム事業者名半角変換
		// -------------------------
		// フリー項目より、スキーム事業者名を取得するファイル名を取得
		String[] fileNames = super.freeItem.split(DELIM);

		if (!super.freeItem.equals(""))
		{
			String fileName = fileNames[0];
			// フリー項目より、取得したファイル名のチェック
			if (fileName == null || fileName.length() == 0)
			{
				// パラメータ不正
				throw new JBSbatBusinessException(JPCBatchMessageConstant.EKKB0130CE,
						new String[]{super.freeItem});
			}

			// コピー元ファイルのデータ読み込み
			JBSbatInputFileUtil targetFile = new JBSbatInputFileUtil(fileName);
			super.logPrint.printDebugLog("処理対象ファイル:" + fileName);
			ArrayList<String> inArr = new ArrayList<String>();
			targetFile.setEncode(SJIS);
			targetFile.createReader();
			while (targetFile.ready())
			{
				// ファイルレコード取得
				String[] records = targetFile.readLine().split(COMMA);
				// コード区分名を半角変換処理
				records[2] = JKKCommonUtil.convertHalf(records[2]);
				String record = JDKCommonUtil.join(",", records);
				inArr.add(record);
			}
			targetFile.close();

			// コピー先ファイルの設定
			StringBuffer sb = new StringBuffer();
			crFileDir = fileNames[1];
			sb.append(this.crFileDir);
			JBSbatOutputFileUtil sendFile = new JBSbatOutputFileUtil(sb.toString());
			sendFile.setEncode(JKKBatConst.SJIS);
			sendFile.setLine(LF);
			sendFile.createWriter();
			for (String line : inArr) {
				// データをファイルに出力
				sendFile.write(line);
			}
			sendFile.close();
		}
		// ANK-4269-00-00 ADD END
		
		return outputBean;
	/**▲▲▲▲▲▲業務サービスの主処理を記述してください。▲▲▲▲▲▲*/
	}
	
	/**
	 * 業務サービス終了処理
	 * @throws Exception
	 */
	public void terminal() throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの終了処理を記述してください。▼▼▼▼▼▼*/
		/**▼▼▼▼▼▼ツールから生成した終了処理のソースです 開始▼▼▼▼▼▼*/
		/**▲▲▲▲▲▲ツールから生成した終了処理のソースです 終了▲▲▲▲▲▲*/
	/**▲▲▲▲▲▲業務サービスの終了処理を記述してください。▲▲▲▲▲▲*/
	}
	
	/**▼▼▼▼▼▼ツールから生成したメソッドです 開始▼▼▼▼▼▼*/
	/**▲▲▲▲▲▲ツールから生成したメソッドです 終了▲▲▲▲▲▲*/
}
