/*********************************************************************
*  All Rights reserved,Copyright (c) K-Opticom ,2012				 *
**********************************************************************
*＜プログラム内容＞
*	システム名			：eo顧客基幹システム
*	モジュール名		：JBSbatKKEmTaiikiFileDlAdd
*	ソースファイル名	：JBSbatKKEmTaiikiFileDlAdd.java
*	作成者				：富士通　
*	作成日				：2012年05月23日
*＜機能概要＞
*　ＥＭ帯域制御ファイルダウンロード登録部品です。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v1.00.00	2012/05/23   富士通		新規作成
*********************************************************************/
package eo.business.service;


import java.io.File;
import java.util.regex.Pattern;

import eo.business.common.JBSbatBusinessService;
import eo.business.common.JCCbatDenshiFileUtil;
import eo.common.constant.JKKStrConst;
import eo.common.constant.JPCBatchMessageConstant;
import eo.framework.application.JBSbatBusinessError;
import eo.framework.db.JBSbatSQLAccess;
import eo.framework.item.JBSbatCommonDBInterface;
import eo.framework.item.JBSbatCommonItem;
import eo.framework.item.JBSbatOutputItem;
import eo.framework.log.JBSbatLogPrintControl;


/**
* ＥＭ帯域情報ファイル（退避）ダウンロード登録
* <p>
*<BR>
* @author 富士通
* @since 2012-05-23
*/
public class JBSbatKKEmTaiikiFileDlAdd extends JBSbatBusinessService
{

	/** テーブル(ダウンロードファイル管理)*/
	private static final String D_TBL_NAME_ZM_T_DL_FILE_KANRI = "ZM_T_DL_FILE_KANRI";

	/** テーブルアクセスクラス(ダウンロードファイル管理)*/
	private JBSbatSQLAccess dbZM_T_DL_FILE_KANRI = null;

	/**
	 * システムプロパティ filecd の定数<br/>
	 * 当インスタンス起動時に -D オプションで filecd にファイルコードが指定されること
	 */
	private static final String PROP_FILECD = "filecd";

	/**
	 * システムプロパティ outfile の定数<br/>
	 * 当インスタンス起動時に -D オプションで outfile にファイルパスが指定されること
	 */
	private static final String PROP_OUTFILE = "outfile";

	/**
	 * システムプロパティ reccnt の定数<br/>
	 * 当インスタンス起動時に -D オプションで reccnt にデータ件数が指定されること
	 */
	private static final String PROP_RECCNT = "reccnt";

	/**
	 * EM帯域情報ファイルの処理管理番号（ZM0271処理管理マスタで管理されている）
	 */
	private static final String TRN_KANRI_NO = "000000000065";

	/**
	 * ダウンロードファイル管理のレコード追加用SQL定義キー
	 */
	private static final String ZM0261_KK_INSERT_002 = "KK_INSERT_002";



	/**
	 * 初期処理
	 * 
	 * @param JBSbatCommonItem commonItem バッチ共通パラメータ電文
	 * @throws Exception 任意例外
	 */
	public void initial(JBSbatCommonItem commonItem) throws Exception
	{
		// 共通パラメータを設定します
		super.setCommonInfo(commonItem);

		logPrint.printDebugLog("■■■■開始■■■■");

		// DBアクセスクラスを生成します
		dbZM_T_DL_FILE_KANRI = new JBSbatSQLAccess(commonItem, D_TBL_NAME_ZM_T_DL_FILE_KANRI);
	}

	/**
	 * 主処理
	 * @return JBSbatOutputItem 出力情報
	 * @throws Exception 任意の例外
	 */
	public JBSbatOutputItem execute() throws Exception
	{
		//電子ファイル登録用パラメータ
		String fileCd = System.getProperty(PROP_FILECD);	//ファイルコード
		String filePath = System.getProperty(PROP_OUTFILE);	//ファイルパス
		String fileDelYmd = JKKStrConst.END_YMD_DEFAULT;	//ファイル削除日付＝なし

		File targetFile = null;
		if (null != filePath && 0 < filePath.length())
		{
			targetFile = new File(filePath);
//			if (targetFile.canExecute() || targetFile.isHidden() || targetFile.isDirectory())
//			{
//				throw new JBSbatBusinessError();
//			}
		}

		//ダウンロードファイル登録用パラメータ
		String recCnt = System.getProperty(PROP_RECCNT);	//データ件数

		//パラメータをチェック
		if (
			null != targetFile && targetFile.exists() &&
			null != recCnt && Pattern.matches("[0-9]+", recCnt))
		{
			//電子ファイル登録
			String[] ret = JCCbatDenshiFileUtil.createDenshiFile(this.commonItem, fileCd, targetFile.getPath(), fileDelYmd);

			logPrint.printDebugLog(
					JBSbatLogPrintControl.getMessage(JPCBatchMessageConstant.EKKB0110AI, new String[]{ret[0], ret[1]}));

			//ダウンロードファイル登録
			String[] dlFileParams = new String[]{
					TRN_KANRI_NO,			//処理管理番号
					targetFile.getName(),	//ファイル名
					recCnt,					//データ件数
					ret[0],					//電子ファイル管理番号
					ret[1]					//世代登録年月日時分秒
			};
			execZM_T_DL_FILE_KANRI_INSERT(dlFileParams);
		}
		else
		{
			commonItem.addErrorCount(1);
			logPrint.printBusinessErrorLog(JPCBatchMessageConstant.EKKB0060TE, new String[]{"システムプロパティ outfile"});
			throw new JBSbatBusinessError(JPCBatchMessageConstant.EKKB0060TE);
		}

		return null;
	}

	/**
	 * 業務サービス終了処理
	 * @throws Exception 
	 * 
	 */
	public void terminal() throws Exception
	{
		// DBアクセスクラスをクローズします
		dbZM_T_DL_FILE_KANRI.close();

		logPrint.printDebugLog("□□□□終了□□□□");
	}


	/**
	 * ZM0261 ダウンロードファイル管理にレコードを追加します
	 * 
	 * @param setParam
	 * @throws Exception
	 */
	private void execZM_T_DL_FILE_KANRI_INSERT(String[] setParam) throws Exception
	{
		int i = 0;

		// 設定値のマップを作成します
		JBSbatCommonDBInterface setMap = new JBSbatCommonDBInterface();
//		setMap.setValue("TRN_KANRI_NO", setParam[i++]);
//		setMap.setValue("FILE_NM", setParam[i++]);
//		setMap.setValue("DATA_CNT", setParam[i++]);
//		setMap.setValue("EFILE_KANRI_NO", setParam[i++]);
//		setMap.setValue("GENE_ADD_DTM", setParam[i++]);
		for (; i < setParam.length; i++)
		{
			setMap.setValue(setParam[i]);
		}

		// DBアクセスを実行します
		dbZM_T_DL_FILE_KANRI.executeBySqlDefine(setMap, ZM0261_KK_INSERT_002);
	}

}
