/*********************************************************************
*  All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名			：eo顧客基幹システム
*	モジュール名		：JBSbatDKTanaMoveRsltSakusei
*	ソースファイル名	：JBSbatDKTanaMoveRsltSakusei.java
*	作成者				：富士通　
*	作成日				：2011年09月02日
*＜機能概要＞
*　棚移動結果ファイル作成部品です。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v1.00.00	2011/09/02   富士通		新規作成
*********************************************************************/
package eo.business.service;

import static eo.business.util.table.JBSbatCC_T_DLYD_TRN_REQ.DLYD_TRN_REQ_NO;
import static eo.common.constant.JDKStrConst.SHORI_IRAI_RESULT_APP_ERROR;
import eo.business.common.JDKEFileKanriBaseService;
import eo.business.util.file.JBSbatDKIFM090;
import eo.common.constant.JDKStrConst;
import eo.common.constant.JPCBatchMessageConstant;
import eo.framework.file.JBSbatDefFileUtil;
import eo.framework.file.JBSbatOutputFileUtil;
import eo.framework.item.JBSbatOutputItem;
import eo.framework.item.JBSbatServiceInterfaceMap;
import eo.framework.util.JBSbatAplConst;

/**
* (クラスの機能概要) <p>
*<BR>
* @author 富士通
*/
public class JBSbatDKTanaMoveRsltSakusei extends JDKEFileKanriBaseService
{
	/** 中間ファイル名(ジョブID除く) */
	private static final String MID_FILE_NAME = "_TANAMOVE_IRAI_NO.csv";

	/** 棚移動ディレイド処理依頼番号ファイル定義ファイル */
	private static final String DEF_TANAMOVE_IRAI_NO = "DKIFM090.def";

	/**
	 * 主処理実行
	 * @return JBSbatOutputItem　出力情報
	 */
	@Override
	public JBSbatOutputItem execute() throws Exception
	{
		// 主処理実行
		super.execute();
		
		// スキップフラグがtrueでない場合のみ中間ファイルを出力
		if (!skipFlg)
		{
			// 処理依頼番号
			String dlydTrnReqNo = dlydMap.get(DLYD_TRN_REQ_NO).toString();
			// 中間ファイル名
			String midFileName = super.jobid + MID_FILE_NAME;
			// 定義ファイル
			JBSbatDefFileUtil defData = null;
			// ファイルパス（パス + ファイル名）
			String outputFilePath = null;
			
			// ファイル
			JBSbatOutputFileUtil outputFileUtil = null;
			try
			{		
				// ファイルパス（パス + ファイル名）の取得
				outputFilePath = this.rnktPath(JBSbatAplConst.getAplConstValue(JDKStrConst.ENV_MID_DIR), midFileName);
				
				// ファイル形式の設定
				outputFileUtil = new JBSbatOutputFileUtil(outputFilePath);
				outputFileUtil.setEncode(JDKStrConst.ENCODE_SJIS);		// 文字コード
				outputFileUtil.setLine(JDKStrConst.LINE_LF);			// 改行コード
	
				// 中間ファイルを作成する
				outputFileUtil.createWriter();
	
				String defFilePath = rnktPath(JBSbatAplConst.getAplConstValue(JDKStrConst.DK_DIR_IND), DEF_TANAMOVE_IRAI_NO);
				defData = new JBSbatDefFileUtil(defFilePath, outputFileUtil);
			}
			catch (Exception ex)
			{
				// 棚移動ディレイド処理依頼番号ファイル作成失敗
				updateShoriIraiResult(SHORI_IRAI_RESULT_APP_ERROR);
				commonItem.getLogPrint().printBusinessErrorLog(JPCBatchMessageConstant.EDKB0030CE,
						new String[] {outputFilePath});
				throw ex;
			}
			try
			{
				// 棚移動ディレイド処理依頼番号ファイル内容設定
				JBSbatServiceInterfaceMap outDataMap = new JBSbatServiceInterfaceMap();
				
				// ディレイド処理依頼番号
				outDataMap.set(JBSbatDKIFM090.DLYD_TRN_REQ_NO, dlydTrnReqNo);
				
				// ファイル出力
				outputFileUtil.print(outDataMap, defData);
			}
			catch (Exception ex)
			{
				// 棚移動ディレイド処理依頼番号ファイル書き込み失敗
				updateShoriIraiResult(SHORI_IRAI_RESULT_APP_ERROR);
				commonItem.getLogPrint().printBusinessErrorLog(JPCBatchMessageConstant.EDKB0050CE,
						new String[] {outputFilePath});
				throw ex;
			}
			finally
			{
				// ファイルのクローズ
				try
				{
					if (outputFileUtil != null)
					{
						outputFileUtil.close();
					}
				}
				catch (Exception ex2)
				{
					super.logPrint.printDebugLog("ファイル書込みオブジェクトのクローズ失敗:" + outputFilePath);
				}
			}
		}
		return null;
	}

	/**
	 * JobId取得
	 * @return JobId
	 */
	@Override
	protected String getJobId()
	{
		return "EO50G0110J0";
	}

	/**
	 * 作成するファイル名（日本語名）を取得する
	 * @return ファイル名
	 */
	@Override
	protected String getCreateJPFileName()
	{
		return "棚移動結果送信ファイル";
	}
}
