/*********************************************************************
* All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*   システム名      ：プロジェクト共通
*   モジュール名    ：JTUBatCheckUtil
*   ソースファイル名：JTUBatCheckUtil.java
*   作成者          ：富士通
*   日付            ：2011年05月19日
*＜機能概要＞
*   チェック処理部品
*＜修正履歴＞
*   バージョン  修正日       修正者     修正内容
*   v3.00.00    2011/05/19   FJ) 北村	新規作成
*	v4.00.00    2012/06/22   FJ) 北村	住所コードチェック部品追加
*	v4.01.00    2012/08/03   FJ) 北村	【TAI-2012-0000094】JBSbatSQLAccessを複数回実行回避対応
*	v4.02.00    2012/08/14   FJ) 北村	単体製造品質チェック対応
**********************************************************************/
package eo.business.common;

import eo.common.constant.JTUStrConst;
import eo.framework.db.JBSbatSQLAccess;
import eo.framework.item.JBSbatCommonDBInterface;
import eo.framework.item.JBSbatCommonItem;

/**
 * 電話手続システム用共通チェック処理を提供する。<p>
 * ジョブで実装します。
 * <BR>
 * @author 富士通
 */
public class JTUBatCheckUtil extends JCCBatCommon
{
	
	/** SQL定義キー(TU_SELECT_001)*/
	private static final String CD_NM_KANRI_SELECT_001 = "TU_SELECT_001";
	
	/** 住所コード(都道府県まで設定)*/
	private static final String AD_CD_STATE = "000000000";
	/**
	 * チェック対象値がコード名称管理マスタに存在することをチェックします。
	 * <br>
	 * @param commonItem バッチ共通パラメータ電文
	 * @param value チェック対象の値
	 * @param groupCode コード種別
	 * @param dbCdNmKanri テーブルアクセスクラス
	 * @return チェックOKの場合true, チェックNGの場合false
	 * @throws Exception      業務サービス内で発生した例外全般。
	 */
	public boolean isCodeMaster(JBSbatCommonItem commonItem, String value, String groupCode, JBSbatSQLAccess dbCdNmKanri) throws Exception 
	{
		
		if (!isNotNull(value)) 
		{
			// チェック対象の値がNullの場合正常とする
			return true;
		}
		
		// 条件を設定
		JBSbatCommonDBInterface whereMap = new JBSbatCommonDBInterface();
		whereMap.setValue(groupCode); 	// コード種別コード
		whereMap.setValue(value); 			// コード区分
		whereMap.setValue(commonItem.getOpeDate()); 			// 運用日
		
		dbCdNmKanri.selectBySqlDefine(whereMap, CD_NM_KANRI_SELECT_001);
		
		boolean isResult = true;
		if(dbCdNmKanri.selectNext() == null)
		{
			// データが存在しない場合、エラー
			isResult = false;
		}
		
		return isResult;
	}
	
	/**
	 * 住所コードチェック処理
	 * <br>
	 * @param adCd 住所コード
	 * @return チェックOKの場合true, チェックNGの場合false
	 */
	public static boolean isAdCd(String adCd)
	{
		
		String adcd1 = adCd.substring(2, 11);
		
		// 住所コードが"0000000000"または"**000000000"の場合、falseを返す。
		if (JTUStrConst.AD_CD_KAIGAI.equals(adCd) || AD_CD_STATE.equals(adcd1))
		{
			return false;
		}
		
		return true;
	}
}
