/*********************************************************************
*	All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名		：Futurity
*	モジュール名	：JZEBatCommon
*	ソースファイル名：JZEBatCommon.java
*	作成者			：富士通
*	日付			：2012年02月08日
*＜機能概要＞
*	EUC管理バッチ共通部品
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v1.00.00	2012/02/08	富士通		新規作成
*
**********************************************************************/

package eo.business.common;

import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;

import eo.common.constant.JPCBatchMessageConstant;
import eo.framework.application.JBSbatBusinessException;
import eo.framework.item.JBSbatCommonItem;

/**
 * 対応履歴管理システムバッチ共通アクセッサー部品<p>
 * <BR>
 * @author 富士通
 */
public class JZEBatCommon extends JCCBatCommon
{
	/** プロパティ呼び出しkey（外部ファイル配置パス） */
	public static final String PATH_GAIBU_SEND_DIR = "ZE_GAIBU_SEND_DIR_PATH";
	
	/** 定数 "0"  */
	public static final String ZERO = "0";

	/** 定数 "1"  */
	public static final String ONE = "1";
	
	/**
	 * マスク対象項目をMapに設定する<br>
	 * @param commonItem バッチ共通パラメータ電文
	 * @param maskJokenList マスク条件リスト
	 * 
	 * @return マスク条件ファイルの内容を格納したMap
	 * @throws Exception 例外
	 */
	public static Map<String, Object> maskJokenSeisa(JBSbatCommonItem commonItem, 
														ArrayList<ArrayList<String>> maskJokenList) throws Exception
	{
		return JZEbatMaskSyori.maskJokenSeisa(commonItem, maskJokenList);
	}
	
	/**
	 * 検索文字マスク処理
	 * @param commonItem バッチ共通パラメータ電文
	 * @param maskData マスク対象データ
 	 * @param maskJokenList マスク条件リスト
	 * @return String マスク後の文字列データ
	 * @throws Exception 例外
	**/
	public static String maskKensakuMoji(JBSbatCommonItem commonItem,
											String maskData,
											List<Map<String,
											Object>> maskJokenList) throws Exception
	{
		
		return JZEbatMaskSyori.maskKensakuMoji(commonItem, maskData, maskJokenList);
	}

	/**
	 * 電話番号マスク処理
	 * 
	 * @param commonItem バッチ共通パラメータ電文
	 * @param maskData マスク対象データ
 	 * @param maskJokenList マスク条件リスト
	 * @return String マスク後の文字列データ
	 * @throws Exception 例外
	**/
	public static String maskTelNamber(JBSbatCommonItem commonItem,
											String maskData,
											List<Map<String,
											Object>> maskJokenList) throws Exception
	{
		
		return JZEbatMaskSyori.maskTelNamber(commonItem, maskData, maskJokenList);
	}

	
	/**
	 * メール検索置換処理
	 * 
	 * 検索対象データから検索文字列を検索し、マスク対象データを探す。
	 * 
	 * @param commonItem     バッチ共通パラメータ電文
	 * @param sarchMoji      検索文字列
	 * @param lineData       一行分のマスク検索対象データ
	 * @param maskHoukou     マスク方向
	 * @param zenReplaceMoji 全角置換文字
	 * @param hanReplaceMoji 半角置換文字
	 * @param maskJokenList  マスク条件List
	 * @return String        マスク置換済み文字列
	 * @throws Exception     例外
	 **/
	public static String sarchReplace(JBSbatCommonItem commonItem,
										String sarchMoji,
										String lineData,
										String maskHoukou,
										String zenReplaceMoji,
										String hanReplaceMoji,
										List<String> maskJokenList) throws Exception
	{

		return JZEbatMaskSyori.sarchMailReplace(commonItem, sarchMoji, lineData, 
				maskHoukou, zenReplaceMoji, hanReplaceMoji, maskJokenList);
	}


	/**
	 * メールアドレスマスク処理
	 * 
	 * マスク対象データからメールアドレスの判定を行い、メールアドレスと判定した場合マスク処理を行う。
	 * 
	 * @param commonItem バッチ共通パラメータ電文
	 * @param maskData マスク対象データ
 	 * @param maskJokenList マスク条件リスト
	 * @return String マスク後の文字列データ
	 * @throws Exception 例外
	**/
	public static String maskMailAddress(JBSbatCommonItem commonItem,
											String maskData,
											List<Map<String,
											Object>> maskJokenList) throws Exception
	{
		
		return JZEbatMaskSyori.maskMailAddress(commonItem, maskData, maskJokenList);
	}

	/**
	 * フォームメールマスク処理
	 * 
	 * 検索文字列からフォームメールに該当する文字列を判定し、フォームメールマスク処理を行う。
	 * 
	 * @param commonItem     バッチ共通パラメータ電文
	 * @param serchMoji      検索文字列
	 * @param maskData       マスク検索対象データ
	 * @param maskHoukou     マスク方向
	 * @param zenReplaceMoji 全角置換文字
	 * @param hanReplaceMoji 半角置換文字
	 * @param maskJokenList  マスク条件List
	 * @return String        マスク置換済み文字列
	 * @throws Exception     例外
	 **/
	public static String sarchFormMailReplace(JBSbatCommonItem commonItem,
					String serchMoji,
					String maskData,
					String maskHoukou,
					String zenReplaceMoji,
					String hanReplaceMoji,
					List<String> maskJokenList) throws Exception
	{

		return JZEbatMaskSyori.sarchFormMailReplace(commonItem, serchMoji, maskData, 
				maskHoukou, zenReplaceMoji, hanReplaceMoji, maskJokenList);
	}

	/**
	 * 対象文字列がnullの場合、空白文字で置き換える。
	 * @param targetStr 対象文字列
	 * @return String  変換後文字列
	 **/
	public static String nullToBlank(String targetStr)
	{
		return JZEbatMaskSyori.nullToBlank(targetStr);
	}

	/**
	 * 対象データがnullの場合、空白文字で置き換える。
	 * @param targetDec 対応データ
	 * @return String  変換後文字列
	 **/
	public static String nullToBlank(BigDecimal targetDec)
	{
		if(targetDec == null)
		{
			return "";
		}
		return JZEbatMaskSyori.nullToBlank(targetDec);
	}

	
	/**
	 * ファイル書込み処理
	 * 
	 * @param commonItem バッチ共通パラメータ電文
	 * @param writeDataList 対象文字列
	 * @param outputFile 対象文字列
	 * @throws Exception     例外
	 * 
	 **/
	public static void fileDataWrite(JBSbatCommonItem commonItem,
			List<String> writeDataList, String outputFile) throws Exception
	{
		JZEbatMaskSyori.fileDataWrite(commonItem, writeDataList, outputFile);
	}

	/**
	 * 他システムへ送信するファイルの配置先のパスをプロパティファイルから取得します。
	 * @param gaibuIfIdDitPath 外部インターフェイスID
	 * @return パス
	 * @throws JBSbatBusinessException
	 */
	public static String getGaibuSendDir(String gaibuIfIdDitPath) throws JBSbatBusinessException
	{

		String path = getApplicationConst(PATH_GAIBU_SEND_DIR);
		path = path + getApplicationConst(gaibuIfIdDitPath);
		if (null == path)
		{
			
			// EZMB0010CE:プロパティーファイルの設定が正しくありません。(項目名:%1%)
			throw new JBSbatBusinessException(JPCBatchMessageConstant.EZEB0010KW, new String[]{PATH_GAIBU_SEND_DIR});
		}

		return path;
	}

}
