/*********************************************************************
* All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*   システム名      ：eo顧客基幹システム
*   モジュール名    ：JCCLdapCertifyUtil
*   ソースファイル名：JCCLdapCertifyUtil.java
*   作成者          ：富士通
*   日付            ：2012年02月20日
*＜機能概要＞
*  統合認証システム連携サービスIF用のサービス情報を生成します。
*＜修正履歴＞
*   バージョン  修正日       修正者      修正内容
*
**********************************************************************/

package eo.web.webview.common;

import java.util.HashMap;

import com.fujitsu.futurity.web.x31.X31BWebBusinessLogic;
import com.fujitsu.futurity.web.x31.X31CWebConst;

/**
 * 統合認証システム連携サービスIF用のサービス情報を生成します。
 * <br>
 * @author 富士通
 */
public class JCCLdapCertifyUtil
{
	/** ユースケースID */
	private static final String USECASE_ID = "CCSV0007";
	/** 統合認証システム連携SCキー */
	private static final String CCSV000701SC = "CCSV000701SC";
	/** ユーザーID */
	private static final String USER_ID = "user_id";
	/** パスワード */
	private static final String PASSWORD = "password";
	/** 機能コード */
	private static final String FUNC_CD = "func_code";
	
	/**
	 * ユーザ認証実行処理です。(ユーザーIDおよびパスワードで認証)<BR>
	 * ユーザ認証を行い、認証結果を返却します。(ユーザーIDおよびパスワードで認証)<BR>
	 * <BR>
	 * @param bl VIEWロジックインスタンス
	 * @param userId ユーザーID(6桁)
	 * @param password パスワード
	 * @return ユーザ認証結果情報
	 * <PRE>返却するHashMapの値は以下の通り
	 *  ninsho_stat                (String)     認証状態(認証OK:0　認証NG:1)
	 *  shk_password_flg           (String)     初期パスワードフラグ(変更済:0　未変更:1)
	 *  password_yk_kigen          (String)     パスワード有効期限
	 *  worker_kanri_div_cd        (String)     従業員管理区分CD
	 *  kanji_nm_fmlnm             (String)     漢字氏名(姓)
	 *  kanji_nm_fstnm             (String)     漢字氏名(名)
	 *  syozk_cd                   (String)     所属コード
	 *  syokui_cd                  (String)     職位コード
	 *  ECCTGN00001CBSMsg1List     (ArrayList)  兼務情報明細
	 *            kenmu_syozk_cd        (String)   兼務所属コード
	 *            kenmu_syokui_cd       (String)   兼務職位コード
	 *  ECCTGN00001CBSMsg2List     (ArrayList)  ワークグループ組織コード・立場コード明細
	 *            wkgrp_joi_org_cd      (String)   ワークグループ上位組織コード
	 *            wkgrp_org_cd          (String)   ワークグループ組織コード
	 *            wkgrp_position_cd     (String)   ワークグループ立場コード
	 *  ECCTGN00001CBSMsg3List     (ArrayList)  中間組織コード・立場コード明細
	 *            chukan_joi_org_cd     (String)   中間上位組織コード
	 *            chukan_org_cd         (String)   中間組織コード
	 *            chukan_position_cd    (String)   中間立場コード
	 *  ECCTGN00001CBSMsg4List     (ArrayList)  特別権限組織コード・立場コード明細
	 *            spcl_org_cd           (String)   特別権限組織コード
	 *            spcl_position_cd      (String)   特別権限立場コード
	 */
	public static HashMap<String, Object> getLdapCertifyResult(X31BWebBusinessLogic bl, String id, String pass) throws Exception
	{
		return setCertifyResult(bl, id, pass, "1");
	}
	
	/**
	 * ユーザ認証実行処理です。(ユーザーIDのみで認証)<BR>
	 * ユーザ認証を行い、認証結果を返却します。(ユーザーIDのみで認証)<BR>
	 * <BR>
	 * @param bl VIEWロジックインスタンス
	 * @param userId ユーザーID(6桁)
	 * @return ユーザ認証結果情報
	 * <PRE>返却するHashMapの値は以下の通り
	 *  ninsho_stat                (String)     認証状態(認証OK:0　認証NG:1)
	 *  shk_password_flg           (String)     初期パスワードフラグ(変更済:0　未変更:1)
	 *  password_yk_kigen          (String)     パスワード有効期限
	 *  worker_kanri_div_cd        (String)     従業員管理区分CD
	 *  kanji_nm_fmlnm             (String)     漢字氏名(姓)
	 *  kanji_nm_fstnm             (String)     漢字氏名(名)
	 *  syozk_cd                   (String)     所属コード
	 *  syokui_cd                  (String)     職位コード
	 *  ECCTGN00001CBSMsg1List     (ArrayList)  兼務情報明細
	 *            kenmu_syozk_cd        (String)   兼務所属コード
	 *            kenmu_syokui_cd       (String)   兼務職位コード
	 *  ECCTGN00001CBSMsg2List     (ArrayList)  ワークグループ組織コード・立場コード明細
	 *            wkgrp_joi_org_cd      (String)   ワークグループ上位組織コード
	 *            wkgrp_org_cd          (String)   ワークグループ組織コード
	 *            wkgrp_position_cd     (String)   ワークグループ立場コード
	 *  ECCTGN00001CBSMsg3List     (ArrayList)  中間組織コード・立場コード明細
	 *            chukan_joi_org_cd     (String)   中間上位組織コード
	 *            chukan_org_cd         (String)   中間組織コード
	 *            chukan_position_cd    (String)   中間立場コード
	 *  ECCTGN00001CBSMsg4List     (ArrayList)  特別権限組織コード・立場コード明細
	 *            spcl_org_cd           (String)   特別権限組織コード
	 *            spcl_position_cd      (String)   特別権限立場コード
	 */
	public static HashMap<String, Object> getLdapCertifyResultUserId(X31BWebBusinessLogic bl, String id) throws Exception
	{
		return setCertifyResult(bl, id, null, "2");
		
	}
	
	/**
	 * ユーザ認証設定処理です。<BR>
	 * 実際のユーザ認証は本メソッドで行います。<BR>
	 * <BR>
	 * @param bl VIEWロジックインスタンス
	 * @param id ユーザーID(6桁)
	 * @param pass パスワード
	 * @param funcCd 機能コード
	 * @return ユーザ認証結果情報
	 * @throws Exception
	 */
	private static HashMap<String, Object> setCertifyResult(X31BWebBusinessLogic bl, String id, String pass, String funcCd) throws Exception
	{
		HashMap<String, String> usecaseMap = new HashMap<String, String>();
		HashMap<String, String> paramMap = new HashMap<String, String>();
		HashMap<String, Object> inputMap = new HashMap<String, Object>();
		HashMap<String, Object> outputMap = new HashMap<String, Object>();
		
		// ユースケースID格納
		usecaseMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, USECASE_ID);
		paramMap.put(FUNC_CD, funcCd);			// 機能コード
		paramMap.put(USER_ID, id);				// ユーザーID
		paramMap.put(PASSWORD, pass);			// パスワード
		inputMap.put(CCSV000701SC, paramMap);
		
		bl.invokeService(usecaseMap, inputMap, outputMap);
		
		// 統合認証システム連携マップ取得(キー:"CCSV000701SC")
		return (HashMap)outputMap.get(CCSV000701SC);
		
	}
}

