/*********************************************************************
* All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*   システム名      ：eo顧客基幹システム
*   モジュール名    ：JKKBatSodProcessUtil
*   ソースファイル名：JKKBatSodProcessUtil.java
*   作成者          ：富士通
*   日付            ：2013年02月06日
*＜機能概要＞
*   サービスオーダ送信依頼バッチ(EO24501)用に各オーダ内容が処理可能なものかを判定する部品です。
*＜修正履歴＞
*   バージョン  修正日       修正者      修正内容
*   v4.00.00    2013/02/06   FJ）立和名  新規作成
*  v54.00.00    2021/03/03   FJ)三原    【ANK-3876-00-00】【eo定期】PSTNマイグレーションに伴うENUMサーバーへのSOD配信対応
*
**********************************************************************/
package eo.business.common;

/**
 * サービスオーダ送信依頼バッチ(EO24501)用に各オーダ内容が処理可能なものかを判定する部品です。
 * <br/>
 * @author 富士通
 * @since 2013-02-06 ロット２KT1-2013-0000170
 */
public class JKKBatSodProcessUtil
{


	/**
	 * ネットサービスオーダ処理対象テーブル
	 */
	private static String[][] netOdrJdgTbl = {
		  {"06", "02", "01", "101"}	//FTTH認証・登録
		 ,{"06", "04", "01", "102"}	//FTTH認証・パスワード変更
		 ,{"06", "03", "01", "103"}	//FTTH認証・解約
		 ,{"06", "08", "01", "104"}	//FTTH認証・消去
		 ,{"06", "07", "01", "105"}	//FTTH認証・回復
		 ,{"06", "10", "01", "106"}	//FTTH認証・一時停止
		 ,{"06", "11", "01", "107"}	//FTTH認証・停止解除
		 ,{"03", "02", "01", "108"}	//メール・登録
		 ,{"03", "04", "01", "109"}	//メール・パスワード変更
		 ,{"03", "04", "01", "110"}	//メール・エイリアス登録
		 ,{"03", "04", "01", "111"}	//メール・エイリアス変更
		 ,{"03", "04", "01", "112"}	//メール・エイリアス解約
		 ,{"03", "04", "01", "113"}	//メール・メールボックス容量変更
		 ,{"03", "04", "01", "114"}	//メール・ウイルスチェック登録
		 ,{"03", "04", "01", "115"}	//メール・ウイルスチェック解約
		 ,{"03", "03", "01", "116"}	//メール・解約
		 ,{"03", "03", "01", "117"}	//メール・解約(スケジュール日付あり)
		 ,{"03", "08", "01", "118"}	//メール・消去
		 ,{"03", "08", "01", "119"}	//メール・消去(スケジュール日付あり)
		 ,{"03", "07", "01", "120"}	//メール・回復
		 ,{"04", "02", "01", "121"}	//WEB・登録
		 ,{"04", "04", "01", "122"}	//WEB・パスワード変更
		 ,{"04", "04", "01", "123"}	//WEB・ホームページ容量変更
		 ,{"04", "04", "01", "124"}	//WEB・アクセス分析登録
		 ,{"04", "04", "01", "125"}	//WEB・アクセス分析解約
		 ,{"04", "03", "01", "126"}	//WEB・解約
		 ,{"04", "08", "01", "127"}	//WEB・消去
		 ,{"04", "07", "01", "128"}	//WEB・回復
		 ,{"05", "02", "01", "129"}	//ML・登録
		 ,{"", "", "", "130"}      	//ML・変更
		 ,{"05", "03", "01", "131"}	//ML・解約
		 ,{"05", "08", "01", "132"}	//ML・消去
		 ,{"05", "07", "01", "133"}	//ML・回復
		 ,{"08", "02", "01", "134"}	//ダイヤルアップ接続・登録
		 ,{"08", "04", "01", "135"}	//ダイヤルアップ接続・パスワード変更
		 ,{"08", "04", "01", "136"}	//ダイヤルアップ接続・プラン変更
		 ,{"08", "03", "01", "137"}	//ダイヤルアップ接続・解約
		 ,{"08", "08", "01", "138"}	//ダイヤルアップ接続・消去
		 ,{"", "", "", "139"}      	//ダイヤルアップ接続・回復
		 ,{"08", "10", "01", "140"}	//ダイヤルアップ接続・一時停止
		 ,{"08", "11", "01", "141"}	//ダイヤルアップ接続・停止解除
		 ,{"06", "04", "01", "142"}	//マルチセッション(動的)・登録
		 ,{"06", "04", "01", "143"}	//マルチセッション(動的)・解約
		 ,{"06", "02", "01", "144"}	//マルチセッション(静的)・登録
		 ,{"06", "03", "01", "145"}	//マルチセッション(静的)・解約
		 ,{"06", "08", "01", "146"}	//マルチセッション(静的)・消去
		 ,{"0A", "02", "01", "147"}	//ルーター向け接続情報・登録
		 ,{"0A", "04", "01", "148"}	//ルーター向け接続情報・パスワード変更
		 ,{"0A", "03", "01", "149"}	//ルーター向け接続情報・解約
		 ,{"0A", "08", "01", "150"}	//ルーター向け接続情報・消去
		 ,{"", "", "", "151"}      	//ルーター向け接続情報・回復
		 ,{"06", "04", "01", "152"}	//固定IPアドレス・登録
		 ,{"06", "04", "01", "153"}	//固定IPアドレス・回復
		 ,{"06", "03", "01", "154"}	//固定IPアドレス・解約
		 ,{"0B", "02", "01", "155"}	//IPv6・登録
		 ,{"0B", "04", "01", "156"}	//IPv6・変更
		 ,{"", "", "", "157"}      	//IPv6・解約
		 ,{"0B", "08", "01", "158"}	//IPv6・消去
		 ,{"Z2", "02", "13", "159"}	//ネット・BBR出荷
		 ,{"Z4", "02", "14", "160"}	//ネット・BBR返品
		 ,{"06", "07", "01", "161"}	//マルチセッション(静的)・回復
		 ,{"06", "04", "01", "162"}	//マルチセッション(静的)・変更
		 ,{"0A", "04", "01", "163"}	//ルーター向け接続情報・変更
		 ,{"06", "02", "01", "164"}	//フェムトセル・登録
		 ,{"06", "02", "01", "165"}	//フェムトセル・回復
		 ,{"06", "03", "01", "166"}	//フェムトセル・解約
		 ,{"06", "08", "01", "167"}	//フェムトセル・消去
		 ,{"06", "10", "01", "168"}	//フェムトセル・一時停止
		 ,{"06", "11", "01", "169"}	//フェムトセル・停止解除
		 ,{"06", "10", "01", "170"}	//マルチセッション(静的)・一時停止
		 ,{"06", "11", "01", "171"}	//マルチセッション(静的)・停止解除
		 ,{"", "", "", "172"}      	//マルチセッション(動的)・一時停止
		 ,{"", "", "", "173"}      	//マルチセッション(動的)・停止解除
	};
		//ｻｰﾋﾞｽｵｰﾀﾞｺｰﾄﾞ，要求種別ｺｰﾄﾞ，ｵｰﾀﾞ発行条件ｺｰﾄﾞ，ｵｰﾀﾞ内容ｺｰﾄﾞ

	/**
	 * 電話サービスオーダ処理対象テーブル
	 */
	private static String[][] telOdrJdgTbl = {
		  {"Z1", "02", "11", "201"}	//光電話・新規登録
		, {"23", "02", "01", "202"}	//Radius認証・登録
		, {"23", "04", "01", "203"}	//Radius認証・VLAN-ID変更
		, {"23", "03", "01", "204"}	//Radius認証・解約
		, {"23", "08", "01", "205"}	//Radius認証・消去
		, {"23", "07", "01", "206"}	//Radius認証・回復
		, {"20", "02", "01", "207"}	//OLS設定・登録
		, {"20", "04", "01", "208"}	//OLS設定・電話番号追加
		, {"20", "04", "01", "209"}	//OLS設定・電話番号解約
		, {"20", "04", "01", "210"}	//OLS設定・電話番号変更
		, {"20", "04", "01", "211"}	//OLS設定・発信者番号通知登録
		, {"20", "04", "01", "212"}	//OLS設定・発信者番号通知解約
		, {"20", "04", "01", "213"}	//OLS設定・VLAN-ID変更
		, {"20", "04", "01", "214"}	//OLS設定・割込電話登録
		, {"20", "03", "01", "215"}	//OLS設定・解約
		, {"20", "08", "01", "216"}	//OLS設定・消去
		, {"", "", "", "217"}		//OLS設定・回復
		, {"21", "02", "01", "218"}	//SIP・登録
		, {"21", "04", "01", "219"}	//SIP・オプション一括登録
		, {"21", "14", "01", "220"}	//SIP・トーキ(移転元解約)登録
		, {"21", "03", "01", "221"}	//SIP・トーキ(移転元解約)解約
		, {"21", "08", "01", "222"}	//SIP・トーキ(移転元解約)消去
		, {"21", "10", "01", "223"}	//SIP・一時停止
		, {"21", "11", "01", "224"}	//SIP・停止解除
		, {"21", "04", "01", "225"}	//SIP・番ポ情報登録
		, {"21", "04", "01", "226"}	//SIP・番ポ情報削除
		, {"21", "04", "01", "227"}	//SIP・WEBカスコンパスワード変更
		, {"21", "04", "01", "228"}	//SIP・リモート暗証番号初期化
		, {"21", "03", "01", "229"}	//SIP・解約
		, {"21", "08", "01", "230"}	//SIP・消去
		, {"21", "04", "01", "231"}	//SIP・発信者番号通知登録
		, {"21", "04", "01", "232"}	//SIP・発信者番号通知解約
		, {"", "", "", "233"}		//SIP・VLAN-ID変更
		, {"21", "04", "01", "234"}	//SIP・割込電話登録
		, {"21", "04", "01", "235"}	//SIP・割込電話解約
		, {"21", "04", "01", "236"}	//SIP・転送電話登録
		, {"21", "04", "01", "237"}	//SIP・転送電話解約
		, {"21", "04", "01", "238"}	//SIP・転送電話選択登録
		, {"21", "04", "01", "239"}	//SIP・転送電話選択解約
		, {"21", "04", "01", "240"}	//SIP・発信者番号表示登録
		, {"21", "04", "01", "241"}	//SIP・発信者番号表示解約
		, {"21", "04", "01", "242"}	//SIP・非通知着信拒否登録
		, {"21", "04", "01", "243"}	//SIP・非通知着信拒否解約
		, {"21", "04", "01", "244"}	//SIP・迷惑電話着信拒否登録
		, {"21", "04", "01", "245"}	//SIP・迷惑電話着信拒否解約
		, {"21", "04", "01", "246"}	//SIP・指定番号着信拒否登録
		, {"21", "04", "01", "247"}	//SIP・指定番号着信拒否解約
		, {"22", "02", "01", "248"}	//番号置換・登録
		, {"22", "08", "01", "249"}	//番号置換・消去
		, {"24", "02", "01", "250"}	//緊急通報・登録
		, {"24", "04", "01", "251"}	//緊急通報・変更
		, {"24", "08", "01", "252"}	//緊急通報・消去
		, {"21", "04", "01", "253"}	//SIP・国際電話停止登録
		, {"21", "04", "01", "254"}	//SIP・国際電話停止解約
		, {"20", "04", "01", "255"}	//OLS設定・ポート番号変更
		, {"20", "04", "01", "256"}	//OLS設定・VA変更
		, {"Z3", "02", "13", "257"}	//光電話・VA変更
		, {"Z4", "02", "14", "258"}	//光電話・VA返品
		, {"21", "14", "01", "259"}	//SIP・トーキ(移転先登録)登録
		, {"21", "03", "01", "260"}	//SIP・トーキ(移転先登録)解約
		, {"21", "08", "01", "261"}	//SIP・トーキ(移転先登録)消去
		, {"21", "14", "01", "262"}	//SIP・トーキ(休止)登録
		, {"21", "03", "01", "263"}	//SIP・トーキ(休止)解約
		, {"21", "08", "01", "264"}	//SIP・トーキ(休止)消去
//↓↓↓2013-12-04追加　ANK-1578-00-00多機能ルータ↓↓↓
		// ANK-3876-00-00 MOD START
//		, {"", "", "", "265"}			//DUMMY
		, {"28", "02", "01", "265"}		//ENUM設定・登録
		, {"28", "08", "01", "266"}		//ENUM設定・消去
		, {"", "", "", "267"}			//DUMMY
		// ANK-3876-00-00 MOD END
		, {"26", "02", "01", "401"}		//多機能ルータ設定・登録(ルータ機能・登録)
		, {"26", "04", "01", "402"}		//多機能ルータ設定・変更(ルータ機能・登録)
		, {"26", "04", "01", "403"}		//多機能ルータ設定・変更(ルータ機能・パスワード変更)
		, {"26", "04", "01", "404"}		//多機能ルータ設定・変更(ルータ機能・接続情報変更)
		, {"26", "04", "01", "405"}		//多機能ルータ設定・変更(ルータ機能・解約)
		, {"26", "02", "01", "406"}		//多機能ルータ設定・登録(VA機能・登録)
		, {"26", "04", "01", "407"}		//多機能ルータ設定・変更(VA機能・登録)
		, {"26", "04", "01", "408"}		//多機能ルータ設定・変更(VA機能・電話番号追加)
		, {"26", "04", "01", "409"}		//多機能ルータ設定・変更(VA機能・電話番号変更)
		, {"26", "04", "01", "410"}		//多機能ルータ設定・変更(VA機能・電話番号解約)
		, {"26", "04", "01", "411"}		//多機能ルータ設定・変更(VA機能・発信者番号通知登録)
		, {"26", "04", "01", "412"}		//多機能ルータ設定・変更(VA機能・発信者番号通知解約)
		, {"26", "04", "01", "413"}		//多機能ルータ設定・変更(VA機能・VLAN-ID変更)
		, {"26", "04", "01", "414"}		//多機能ルータ設定・変更(VA機能・割込電話登録)
		, {"26", "04", "01", "415"}		//多機能ルータ設定・変更(VA機能・VA変更1番号)
		, {"26", "04", "01", "416"}		//多機能ルータ設定・変更(VA機能・VA変更2番号)
		, {"26", "04", "01", "417"}		//多機能ルータ設定・変更(VA機能・解約)
		, {"26", "04", "01", "418"}		//多機能ルータ設定・変更(ルータ機能・無線/有線変更)
		, {"26", "03", "01", "419"}		//多機能ルータ設定・解約(ルータ機能・解約)
		, {"26", "08", "01", "420"}		//多機能ルータ設定・消去(ルータ機能・解約)
		, {"26", "03", "01", "421"}		//多機能ルータ設定・解約(VA機能・解約)
		, {"26", "08", "01", "422"}		//多機能ルータ設定・消去(VA機能・解約)
		, {"26", "03", "01", "423"}		//多機能ルータ設定・解約(機器返却)
		, {"26", "08", "01", "424"}		//多機能ルータ設定・消去(機器返却)
//↑↑↑2013-12-04追加　ANK-1578-00-00多機能ルータ↑↑↑
		// ANK-3754-00-00 ADD START
		, {"26", "04", "01", "425"}		//多機能ルータ設定・変更(あんしん発着信サービス契約変更(登録／解約)（１番号紐付く場合）)
		, {"26", "04", "01", "426"}		//多機能ルータ設定・変更(あんしん発着信サービス契約変更(登録／解約)（２番号紐付く場合）)
		// ANK-3754-00-00 ADD END
	};
		//ｻｰﾋﾞｽｵｰﾀﾞｺｰﾄﾞ，要求種別ｺｰﾄﾞ，ｵｰﾀﾞ発行条件ｺｰﾄﾞ，ｵｰﾀﾞ内容ｺｰﾄﾞ

	
	/**
	 * @since 2013-05-03変更　IT1-2013-00011xx対応のついでにリフレクション化
	 */
	private static String[][] mobOdrJdgTbl = {
		  {"30", "02", "01", "301"}	//Wi-Fiスポット・登録	即時発行
		, {"30", "04", "01", "302"}	//Wi-Fiスポット・変更
		, {"30", "08", "01", "303"}	//Wi-Fiスポット・消去
		, {"30", "10", "01", "304"}	//Wi-Fiスポット・一時停止
		, {"30", "11", "01", "305"}	//Wi-Fiスポット・停止解除
		, {"01", "02", "01", "306"}	//WiMAX・CUI登録
		, {"02", "02", "01", "307"}	//WiMAX・DEV登録
		, {"01", "03", "01", "308"}	//WiMAX・CUI消去
		, {"02", "03", "01", "309"}	//WiMAX・DEV消去
		, {"01", "10", "01", "310"}	//WiMAX・CUI一時停止
		, {"01", "11", "01", "311"}	//WiMAX・CUI停止解除
		, {"11", "02", "01", "312"}	//e-mobile・課金申請
		, {"12", "03", "01", "313"}	//e-mobile・解約申請
		, {"13", "10", "01", "314"}	//e-mobile・一時停止
		, {"14", "11", "01", "315"}	//e-mobile・停止解除
		// OM-2013-0002858 eoモバイル（UQ-WiMAX）の回復ができない 2013/10/07 START
//		, {"", "", "", "316"}		//WiMAX・CUI回復
//		, {"", "", "", "317"}		//WiMAX・DEV回復
		, {"01", "02", "01", "316"}		//WiMAX・CUI回復
		, {"02", "02", "01", "317"}		//WiMAX・DEV回復
		// OM-2013-0002858 eoモバイル（UQ-WiMAX）の回復ができない 2013/10/07 END
		, {"Z5", "02", "13", "318"}	//WiMAX・出荷
		, {"30", "02", "12", "301"}	//Wi-Fiスポット・登録	遅延発行
//↓↓↓2013-09-13変更　商用OM-2013-0001997（WiFiスポット・登録がプロビから異常応答で返される）↓↓↓
		, {"30", "04", "12", "302"}	//Wi-Fiスポット・変更	遅延発行
		, {"30", "08", "12", "303"}	//Wi-Fiスポット・消去	遅延発行
		, {"30", "10", "12", "304"}	//Wi-Fiスポット・一時停止	遅延発行
		, {"30", "11", "12", "305"}	//Wi-Fiスポット・停止解除	遅延発行
//↑↑↑2013-09-13変更　商用OM-2013-0001997（WiFiスポット・登録がプロビから異常応答で返される）↑↑↑
	};
		//ｻｰﾋﾞｽｵｰﾀﾞｺｰﾄﾞ，要求種別ｺｰﾄﾞ，ｵｰﾀﾞ発行条件ｺｰﾄﾞ，ｵｰﾀﾞ内容ｺｰﾄﾞ


	/**
	 * 電話サービスオーダ発行可能かどうかを判定します
	 * 
	 * @param svcOdrCd サービスオーダコード
	 * @param yokyuSbtCd 要求種別コード
	 * @param odrHakkoJokenCd オーダ発行条件コード
	 * @param odrNaiyoCd オーダ内容コード
	 * @return 判定結果
	 */
	public static boolean isLegalTelOrder(String svcOdrCd, String yokyuSbtCd, String odrHakkoJokenCd, 
			String odrNaiyoCd)
	{
		boolean jdg = false;
		
//↓↓↓2013-12-04追加　ANK-1578-00-00多機能ルータ↓↓↓
//		int pos = Integer.valueOf(odrNaiyoCd) - 201;	//201 = 光電話・新規登録(Z1)オーダのオーダ内容コード
		int pos = Integer.valueOf(odrNaiyoCd);
		if (400 > pos)
		{
			pos -= 201;			//201 = 光電話・新規登録(Z1)オーダのオーダ内容コード
		}
		else
		{
		// ANK-3876-00-00 MOD START
//			pos -= (401 - 65);	//401 = 多機能ルータ設定・登録(ルータ機能・登録)オーダのオーダ内容コード
			pos -= (401 - 67);	//401 = 多機能ルータ設定・登録(ルータ機能・登録)オーダのオーダ内容コード
		// ANK-3876-00-00 MOD END
		}
//↑↑↑2013-12-04追加　ANK-1578-00-00多機能ルータ↑↑↑
		
		String jdgSvcOrderCd = telOdrJdgTbl[pos][0];
		String jdgYokyuSbtCd = telOdrJdgTbl[pos][1];
		String jdgOdrHkkJkCd = telOdrJdgTbl[pos][2];
		String jdgOdrNaiyoCd = telOdrJdgTbl[pos][3];
		if (jdgSvcOrderCd.equals(svcOdrCd) && jdgYokyuSbtCd.equals(yokyuSbtCd)
		&&	jdgOdrHkkJkCd.equals(odrHakkoJokenCd) && jdgOdrNaiyoCd.equals(odrNaiyoCd))
		{
			jdg = true;
		}

		return jdg;
	}


	/**
	 * モバイルオーダ発行可能かどうかを判定します
	 * 
	 * @param svcOdrCd サービスオーダコード
	 * @param yokyuSbtCd 要求種別コード
	 * @param odrHakkoJokenCd オーダ発行条件コード
	 * @param odrNaiyoCd オーダ内容コード
	 * @return 判定結果
	 * @since 2013-05-03変更　IT1-2013-00011xx対応のついでにリフレクション化
	 */
	public static boolean isLegalMobileOrder(
			String svcOdrCd, String yokyuSbtCd, String odrHakkoJokenCd, String odrNaiyoCd)
	{
		boolean jdg = false;
		
		int pos = Integer.valueOf(odrNaiyoCd) - 301;	//301 = Wi-Fiスポット・登録オーダのオーダ内容コード
		if ("12".equals(odrHakkoJokenCd))
		{
			pos += (318-301+1);
		}
		
		String jdgSvcOrderCd = mobOdrJdgTbl[pos][0];
		String jdgYokyuSbtCd = mobOdrJdgTbl[pos][1];
		String jdgOdrHkkJkCd = mobOdrJdgTbl[pos][2];
		String jdgOdrNaiyoCd = mobOdrJdgTbl[pos][3];
		if (jdgSvcOrderCd.equals(svcOdrCd) && jdgYokyuSbtCd.equals(yokyuSbtCd)
		&&	jdgOdrHkkJkCd.equals(odrHakkoJokenCd) && jdgOdrNaiyoCd.equals(odrNaiyoCd))
		{
			jdg = true;
		}

		return jdg;
	}


	/**
	 * ネットオーダ発行可能かどうかを判定します
	 * 
	 * @param svcOdrCd サービスオーダコード
	 * @param yokyuSbtCd 要求種別コード
	 * @param odrHakkoJokenCd オーダ発行条件コード
	 * @param odrNaiyoCd オーダ内容コード
	 * @return 判定結果
	 * @since 2013-05-13
	 */
	public static boolean isLegalNetOrder(
			String svcOdrCd, String yokyuSbtCd, String odrHakkoJokenCd, String odrNaiyoCd)
	{
		boolean jdg = false;
		
		int pos = Integer.valueOf(odrNaiyoCd) - 101;	//101 = FTTH認証・登録オーダのオーダ内容コード
		
		String jdgSvcOrderCd = netOdrJdgTbl[pos][0];
		String jdgYokyuSbtCd = netOdrJdgTbl[pos][1];
		String jdgOdrHkkJkCd = netOdrJdgTbl[pos][2];
		String jdgOdrNaiyoCd = netOdrJdgTbl[pos][3];
		if (jdgSvcOrderCd.equals(svcOdrCd) && jdgYokyuSbtCd.equals(yokyuSbtCd)
		&&	jdgOdrHkkJkCd.equals(odrHakkoJokenCd) && jdgOdrNaiyoCd.equals(odrNaiyoCd))
		{
			jdg = true;
		}

		return jdg;
	}


}
