/*********************************************************************
*  All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名			：eo顧客基幹システム
*	モジュール名		：JBSbatKKOpsvkeiDelTrgtChsht
*	ソースファイル名	：JBSbatKKOpsvkeiDelTrgtChsht.java
*	作成者				：富士通　
*	作成日				：2012年02月22日
*＜機能概要＞
*　オプションサービス契約消去対象抽出部品です。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v3.00.00	2012/02/22	FJ)敷地		【ANK-0046-00-00】新規作成
*	v4.00.00	2012/07/02	FJ)			メーリングリストのエイジング値が取得できない
*	v4.00.01	2013/01/05	FJ)大木		性能改善（必要な項目のすべてを最初のSQLで取得）
*	v5.00.00	2013/02/13  FJ)高橋		IT1-2013-0000285 対応
*
*********************************************************************/
package eo.business.service;

import eo.business.common.JBSbatBusinessService;
import eo.business.common.JBSbatKKConst;
import eo.business.util.file.JBSbatKKIFM160;
import eo.business.util.table.JBSbatKK_T_OPSVKEI_ISP;
import eo.business.util.table.JBSbatKK_T_OPSVKEI_TEL;
import eo.business.util.table.JBSbatKK_T_OP_SVC_KEI;
import eo.business.util.table.JBSbatKK_T_SBOPSVKEI_ISP;
import eo.business.util.table.JBSbatKK_T_SVC_KEI;
import eo.framework.item.JBSbatCommonItem;
import eo.framework.item.JBSbatOutputItem;
import eo.framework.item.JBSbatServiceInterfaceMap;

/**
* (クラスの機能概要) <p>
*<BR>
* @author 富士通
*/
public class JBSbatKKOpsvkeiDelTrgtChsht extends JBSbatBusinessService
{
	/**▼▼▼▼▼▼ツールから生成した宣言です 開始▼▼▼▼▼▼*/
	/**▲▲▲▲▲▲ツールから生成した宣言です 終了▲▲▲▲▲▲*/

	/******************************************************************/
	/** 消去処理種別                                                 **/
	/******************************************************************/
	/** 消去処理種別（エイジング更新） */
	private static final String DEL_TRAN_SBT_AGING_UPD         = "2";
	/** 消去処理種別（消去SOD発行・エイジング更新） */
	private static final String DEL_TRAN_SBT_DEL_SOD_AGING_UPD = "3";

	/******************************************************************/
	/** 消去対象種別                                                 **/
	/******************************************************************/
	/** 消去対象種別（メールアドレス） */
	private static final String DEL_TRGT_SBT_MLAD      = "03";
	/** 消去対象種別（メールエイリアス） */
	private static final String DEL_TRGT_SBT_MAILALIAS = "04";
	/** 消去対象種別（メーリングリスト名） */
	private static final String DEL_TRGT_SBT_MLLIST_NM = "05";
	/** 消去対象種別（ＵＲＬ） */
	private static final String DEL_TRGT_SBT_URL       = "07";
	/** 消去対象種別（固定ＩＰアドレス） */
	private static final String DEL_TRGT_SBT_FIXIPAD   = "08";
	/** 消去対象種別（０５０電話番号） */
	private static final String DEL_TRGT_SBT_050_TELNO = "10";
	// IT1-2013-0000285 2013/02/13 ADD START
	/** 消去対象種別（ｗｅｂＩＤ） */
	private static final String DEL_TRGT_SBT_WEBID = "14";
	/** 消去対象種別（ＰＯＰＩＤ） */
	private static final String DEL_TRGT_SBT_POPID = "15";
	// IT1-2013-0000285 2013/02/13 ADD END
	
	/******************************************************************/
	/** ＳＱＬワークキー                                             **/
	/******************************************************************/
	/** ＳＱＬワークキー（ＵＲＬ） */
	private static final String KEY_URL          = "URL";
	/** ＳＱＬワークキー（オーダ発行条件有無フラグ） */
	private static final String KEY_ORDER_UM_FLG = "ORDER_UM_FLG";

	/**
	 * 初期処理
	 * @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
	{
	/**▼▼▼▼▼▼業務サービスの主処理を記述してください。▼▼▼▼▼▼*/
		JBSbatOutputItem outputBean = new JBSbatOutputItem();

		// オプションサービスコードの取得
		String opSvcCd = inMap.getString(JBSbatKK_T_OP_SVC_KEI.OP_SVC_CD);
		
		//--オプションサービスコードの判別処理
		if(opSvcCd.equals(JBSbatKKConst.OP_SVC_CD_EMAIL))
		{	// Eメールの場合

			// 消去対象データ設定処理(Eメール)
			setDelTrgtDataEmail(inMap, outputBean);
		}
		else if(opSvcCd.equals(JBSbatKKConst.OP_SVC_CD_MY_HP))
		{	// Myホームページの場合

			// 消去対象データ設定処理(Myホームページ)
			setDelTrgtDataMyHp(inMap, outputBean);
		}
		else if(opSvcCd.equals(JBSbatKKConst.OP_SVC_CD_MLLIST))
		{	// メーリングリストの場合

			// 消去対象データ設定処理(メーリングリスト)
			setDelTrgtDataMllist(inMap, outputBean);
		}
		else if(opSvcCd.equals(JBSbatKKConst.OP_SVC_CD_FIXIPAD))
		{	// 固定グローバルIPアドレスの場合

			// 消去対象データ設定処理(固定グローバルIP)
			setDelTrgtDataFixipad(inMap, outputBean);
		}
		else if(opSvcCd.equals(JBSbatKKConst.OP_SVC_CD_050_TELNO))
		{	// 050ナンバープラスの場合

			// 消去対象データ設定処理(050ナンバープラス)
			setDelTrgtData050TelNo(inMap, outputBean);
		}
		/* 120314_IPv6対応は巻き@-1では対応しないため、一時的にコメントアウト
		else if(opSvcCd.equals(JBSbatKKConst.OP_SVC_CD_IPV6_AD))
		{	// IPv6の場合
			
			//消去対象データ設定処理(IPv6)
			setDelTrgtDataIpv6(outmap, outputBean, selectWhereParam);
		}
		*/

		return outputBean;
	/**▲▲▲▲▲▲業務サービスの主処理を記述してください。▲▲▲▲▲▲*/
	}

	/**
	 * 業務サービス終了処理
	 * @throws Exception
	 */
	public void terminal() throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの終了処理を記述してください。▼▼▼▼▼▼*/
		/**▼▼▼▼▼▼ツールから生成した終了処理のソースです 開始▼▼▼▼▼▼*/
		/**▲▲▲▲▲▲ツールから生成した終了処理のソースです 終了▲▲▲▲▲▲*/
	/**▲▲▲▲▲▲業務サービスの終了処理を記述してください。▲▲▲▲▲▲*/
	}

	/**▼▼▼▼▼▼ツールから生成したメソッドです 開始▼▼▼▼▼▼*/
	/**▲▲▲▲▲▲ツールから生成したメソッドです 終了▲▲▲▲▲▲*/

	/**
	 * データ初期化処理<br>
	 * <br>
	 * @param	inMap		入力電文
	 * @throws	Exception
	 */
	private JBSbatServiceInterfaceMap initData(
			JBSbatServiceInterfaceMap inMap
	) throws Exception
	{
		JBSbatServiceInterfaceMap outMap = new JBSbatServiceInterfaceMap();

		String svkeiNo      = inMap.getString(JBSbatKK_T_SVC_KEI.SVC_KEI_NO);			// 「サービス契約」サービス契約番号
		String svkeiGadtm   = inMap.getString("SVKEI_GADTM"); 							// 「サービス契約」世代登録年月日時分秒
		String opsvkeiNo    = inMap.getString(JBSbatKK_T_OP_SVC_KEI.OP_SVC_KEI_NO);		// 「オプションサービス契約」オプションサービス契約番号
		String opsvkeiGadtm = inMap.getString("OPSVKEI_GADTM"); 						// 「オプションサービス契約」世代登録年月日時分秒

		// 出力レコードの共通部設定
		if(outMap != null)
		{
			outMap.setString(JBSbatKKIFM160.SVKEI_NO,      svkeiNo);			// サービス契約番号
			outMap.setString(JBSbatKKIFM160.SVKEI_GADTM,   svkeiGadtm);			// サービス契約世代登録年月日
			outMap.setString(JBSbatKKIFM160.OPSVKEI_NO,    opsvkeiNo);			// オプションサービス契約番号
			outMap.setString(JBSbatKKIFM160.OPSVKEI_GADTM, opsvkeiGadtm);		// オプションサービス契約世代登録年月日時分秒
		}

		return outMap;
	}

	/**
	 * 消去対象データ設定処理(Eメール)<br>
	 * <Br>
	 * @param	inMap		入力電文
	 * @param	outputBean	出力情報
	 * @throws	Exception
	 */
	private void setDelTrgtDataEmail(
			JBSbatServiceInterfaceMap inMap,
			JBSbatOutputItem outputBean
	) throws Exception
	{
		String mlad  = inMap.getString(JBSbatKK_T_OPSVKEI_ISP.MLAD);		// メールアドレス取得
		String alias = inMap.getString(JBSbatKK_T_SBOPSVKEI_ISP.ALIAS);		// メールエイリアス取得

		if (mlad != null && ! "".equals(mlad))
		{
			// 初期化
			JBSbatServiceInterfaceMap outMap = initData(inMap);

			outMap.setString(JBSbatKKIFM160.DEL_TRAN_SBT, getDelTranSbt(inMap));	// 消去処理種別
			outMap.setString(JBSbatKKIFM160.DEL_TRGT_SBT, DEL_TRGT_SBT_MLAD);		// 消去対象種別(メールアドレス)
			outMap.setString(JBSbatKKIFM160.MLAD,         mlad);					// メールアドレス
			//--消去対象データの設定
			outMap.setOutFlg(true);
			outputBean.addOutMapList(outMap);
		}

		if(alias != null && ! "".equals(alias))
		{
			// 初期化
			JBSbatServiceInterfaceMap outMap = initData(inMap);

			outMap.setString(JBSbatKKIFM160.DEL_TRAN_SBT, DEL_TRAN_SBT_AGING_UPD);		// 消去処理種別(エイジング更新)
			outMap.setString(JBSbatKKIFM160.DEL_TRGT_SBT, DEL_TRGT_SBT_MAILALIAS);		// 消去対象種別(メールエイリアス)
			outMap.setString(JBSbatKKIFM160.MAILALIAS,    alias);						// メールエイリアス
			//--消去対象データの設定
			outMap.setOutFlg(true);
			outputBean.addOutMapList(outMap);
		}
		
		// IT1-2013-0000285 2013/02/13 ADD START
		String popID = inMap.getString(JBSbatKK_T_OPSVKEI_ISP.POP_ID);			// POPID取得

		if(popID != null && ! "".equals(popID))
		{
			// 初期化
			JBSbatServiceInterfaceMap outMap = initData(inMap);

			outMap.setString(JBSbatKKIFM160.DEL_TRAN_SBT, DEL_TRAN_SBT_AGING_UPD);	// 消去処理種別(エイジング更新)
			outMap.setString(JBSbatKKIFM160.DEL_TRGT_SBT, DEL_TRGT_SBT_POPID);		// 消去対象種別(POPID)
			outMap.setString(JBSbatKKIFM160.POP_ID,          popID);					// POPID
			//--消去対象データの設定
			outMap.setOutFlg(true);
			outputBean.addOutMapList(outMap);
		}
		// IT1-2013-0000285 2013/02/13 ADD END
	}

	/**
	 * 消去対象データ設定処理(Myホームページ※URL)<br>
	 * <br>
	 * @param	inMap		入力電文
	 * @param	outputBean	出力情報
	 * @throws	Exception
	 */
	private void setDelTrgtDataMyHp(
			JBSbatServiceInterfaceMap inMap,
			JBSbatOutputItem outputBean
	) throws Exception
	{
		String url = inMap.getString(KEY_URL);			// URL取得

		if(url != null && ! "".equals(url))
		{
			// 初期化
			JBSbatServiceInterfaceMap outMap = initData(inMap);

			outMap.setString(JBSbatKKIFM160.DEL_TRAN_SBT, getDelTranSbt(inMap));	// 消去処理種別
			outMap.setString(JBSbatKKIFM160.DEL_TRGT_SBT, DEL_TRGT_SBT_URL);		// 消去対象種別(URL)
			outMap.setString(JBSbatKKIFM160.URL,          url);						// URL
			//--消去対象データの設定
			outMap.setOutFlg(true);
			outputBean.addOutMapList(outMap);
		}
		
		// IT1-2013-0000285 2013/02/13 ADD START
		String webID = inMap.getString(JBSbatKK_T_OPSVKEI_ISP.WEB_ID);			// webID取得

		if(webID != null && ! "".equals(webID))
		{
			// 初期化
			JBSbatServiceInterfaceMap outMap = initData(inMap);

			outMap.setString(JBSbatKKIFM160.DEL_TRAN_SBT, DEL_TRAN_SBT_AGING_UPD);	// 消去処理種別(エイジング更新)
			outMap.setString(JBSbatKKIFM160.DEL_TRGT_SBT, DEL_TRGT_SBT_WEBID);		// 消去対象種別(webID)
			outMap.setString(JBSbatKKIFM160.WEB_ID,          webID);					// webID
			//--消去対象データの設定
			outMap.setOutFlg(true);
			outputBean.addOutMapList(outMap);
		}
		// IT1-2013-0000285 2013/02/13 ADD END
	}

	/**
	 * 消去対象データ設定処理(メーリングリスト)<br>
	 * <br>
	 * @param	inMap		入力電文
	 * @param	outputBean	出力情報
	 * @throws	Exception
	 */
	private void setDelTrgtDataMllist(
			JBSbatServiceInterfaceMap inMap,
			JBSbatOutputItem outputBean
	) throws Exception
	{
		// ※domainは、SQL文内にて結合済
		String mllist = inMap.getString(JBSbatKK_T_OPSVKEI_ISP.MLLIST_NM);		// メーリングリスト名取得

		if(mllist != null && ! "".equals(mllist))
		{
			// 初期化
			JBSbatServiceInterfaceMap outMap = initData(inMap);

			outMap.setString(JBSbatKKIFM160.DEL_TRAN_SBT, getDelTranSbt(inMap));		// 消去処理種別
			outMap.setString(JBSbatKKIFM160.DEL_TRGT_SBT, DEL_TRGT_SBT_MLLIST_NM);		// 消去対象種別(メーリングリスト名)
			outMap.setString(JBSbatKKIFM160.MLLIST_NM,    mllist);						// メーリングリスト名
			//--消去対象データの設定
			outMap.setOutFlg(true);
			outputBean.addOutMapList(outMap);
		}
	}

	/**
	 * 消去対象データ設定処理(固定グローバルIP)<br>
	 * <br>
	 * @param	inMap		入力電文
	 * @param	outputBean	出力情報
	 * @throws	Exception
	 */
	private void setDelTrgtDataFixipad(
			JBSbatServiceInterfaceMap inMap,
			JBSbatOutputItem outputBean
	) throws Exception
	{
		String fixipad = inMap.getString(JBSbatKK_T_OPSVKEI_ISP.KOTEI_IP_AD);	// 固定IPアドレス取得

		if(fixipad != null && ! "".equals(fixipad))
		{
			// 初期化
			JBSbatServiceInterfaceMap outMap = initData(inMap);

			outMap.setString(JBSbatKKIFM160.DEL_TRAN_SBT, DEL_TRAN_SBT_AGING_UPD);	// 消去処理種別(エイジング更新)
			outMap.setString(JBSbatKKIFM160.DEL_TRGT_SBT, DEL_TRGT_SBT_FIXIPAD);	// 消去対象種別(固定IPアドレス)
			outMap.setString(JBSbatKKIFM160.FIXIPAD,      fixipad);					// 固定IPアドレス
			//--消去対象データの設定
			outMap.setOutFlg(true);
			outputBean.addOutMapList(outMap);
		}
	}
	
	/**
	 * 消去対象データ設定処理(050ナンバープラス)<br>
	 * <br>
	 * @param	inMap		入力電文
	 * @param	outputBean	出力情報
	 * @throws	Exception
	 */
	private void setDelTrgtData050TelNo(
			JBSbatServiceInterfaceMap inMap,
			JBSbatOutputItem outputBean
	) throws Exception
	{
		String telNo505 = inMap.getString(JBSbatKK_T_OPSVKEI_TEL.N_050_OP_TELNO);

		if(telNo505 != null && ! "".equals(telNo505))
		{
			// 初期化
			JBSbatServiceInterfaceMap outMap = initData(inMap);

			outMap.setString(JBSbatKKIFM160.DEL_TRAN_SBT, DEL_TRAN_SBT_AGING_UPD);		// 消去処理種別(エイジング更新)
			outMap.setString(JBSbatKKIFM160.DEL_TRGT_SBT, DEL_TRGT_SBT_050_TELNO);		// 消去対象種別(050電話番号)
			outMap.setString(JBSbatKKIFM160.TELNO_050,    telNo505);					// 050電話番号
			//--消去対象データの設定
			outMap.setOutFlg(true);
			outputBean.addOutMapList(outMap);
		}
	}

	/**
	 * 消去処理種別の取得処理<br>
	 * <br>
	 * @param	inMap		入力電文
	 * @return	String		消去処理種別
	 * @throws	Exception
	 */
	private String getDelTranSbt(JBSbatServiceInterfaceMap inMap) throws Exception
	{
		String delTranSbt = null;

		// オーダ発行有無フラグ番号取得
		// ※「NULL」ではない場合は、条件に合ったオーダ発行条件スキーマのレコード数が設定されている
		Object orderUmFlg = inMap.get(KEY_ORDER_UM_FLG);

		if(orderUmFlg != null && ! "".equals(orderUmFlg))
		{
			// 登録SOD発行済み
			delTranSbt = DEL_TRAN_SBT_DEL_SOD_AGING_UPD;	// 消去SOD発行・エイジング更新
		}
		else
		{
			// 登録SOD未発行
			delTranSbt = DEL_TRAN_SBT_AGING_UPD;			// エイジング更新
		}

		return delTranSbt;
	}
}
