/*******************************************************************************
 *	All Rights reserved,Copyright (c) K-Opticom
 ********************************************************************************
 *＜プログラム内容＞
 *	システム名		：eo顧客基幹システム
 *	モジュール名	：CRW04801SFLogic
 *	ソースファイル名：CRW04801SFLogic.java
 *	作成者			：富士通
 *	日付			：2012年01月10日
 *＜機能概要＞
 *	エクスポート結果ファイル一覧照会画面 ビューロジック
 *＜修正履歴＞
 *	バージョン	修正日		修正者		修正内容
 *	ｖ1.00.00
 *
 ********************************************************************************/

package eo.web.webview.CRW04801SF;

import java.util.HashMap;

import com.fujitsu.futurity.web.x31.X31CWebConst;
import com.fujitsu.futurity.web.x31.X31SDataBeanAccess;
import com.fujitsu.futurity.web.x31.X31SDataBeanAccessArray;

import eo.common.constant.JPCModelConstant;
import eo.web.webview.JCCWebBusinessLogic;
import eo.web.webview.CommonInfoCF.CommonInfoCFConst;
import eo.web.webview.common.JCCWebCommon;
import eo.web.webview.common.JCRScreenConst;
import eo.web.webview.common.JCRWebCommon;
import eo.web.webview.mapping.CRSV0262_CRSV0262OPDBMapper;
import eo.web.webview.mapping.CRSV0263_CRSV0263OPDBMapper;
import eo.web.webview.mapping.CRSV0264_CRSV0264OPDBMapper;

/**
 * エクスポート結果ファイル一覧照会画面 ビューロジック
 * @author FJ
 *
 */
public class CRW04801SFLogic extends JCCWebBusinessLogic 
{
	/**
	 * 対応履歴電子ファイル管理 文書種別コード：クエリ
	 */
	private static final String BUNSHO_SBT_CD_QUERY = "03";
	/**
	 * ソート項目名：
	 */
	private static final String SORT_SHITEI_KMK_NM_EXP_FILE = "TORK_EFILE_KNRI_NO";
	
	/**
	 * 初期表示処理
	 * @return boolean
	 * @throws Exception
	 */
	public boolean init() throws Exception
	{
		// -------------------------------------------------- //
		// (1)引継情報の取得
		// -------------------------------------------------- //
		// なし。
		// -------------------------------------------------- //
		// (2)サービスフォームBeanの設定
		// -------------------------------------------------- //
		// (a)サービスフォームBeanの全項目をクリアする。
		clearDataBean();
		// (b)サービスフォームBean項目の設定
		X31SDataBeanAccess svBean = getServiceFormBean();
		//  ＫＥＹ＿文書種別コード
		svBean.sendMessageString(CRW04801SFConst.KEY_BUNSHO_SBT_CD, X31CWebConst.DATABEAN_SET_VALUE, BUNSHO_SBT_CD_QUERY);
		//  ＳＯＲＴ指定項目名
		svBean.sendMessageString(CRW04801SFConst.SORT_SHITEI_KMK_NM, X31CWebConst.DATABEAN_SET_VALUE, SORT_SHITEI_KMK_NM_EXP_FILE);
		// -------------------------------------------------- //
		// (3)サービス呼出処理
		// -------------------------------------------------- //
		X31SDataBeanAccess[] beans = {svBean};
		// ユースケースID格納用マップ
		HashMap<Object, String> paramMap = new HashMap<Object, String>();
		// ユースケースID格納
		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, "CRSV0262");
		// マッピング用Map
		HashMap<String, Object> dataMap = new HashMap<String, Object>();
		// サービス実行結果データ用Map
		HashMap<String, Object> outputMap = new HashMap<String, Object>();
		// マッピングクラス
		CRSV0262_CRSV0262OPDBMapper mapper = new CRSV0262_CRSV0262OPDBMapper();
		// マッピング処理（上り）
		mapper.setCRSV026201SC(beans, dataMap, JPCModelConstant.FUNC_CD_1);
		// サービス実行
		invokeService(paramMap, dataMap, outputMap);
		// -------------------------------------------------- //
		// (4)サービス処理結果の設定
		// -------------------------------------------------- //
		mapper.getCRSV026201SC(beans, outputMap);

		// -------------------------------------------------- //
		// (5)引継情報の設定
		// -------------------------------------------------- //
		// なし。
		// -------------------------------------------------- //
		// (6)共有フォームBeanの設定
		// -------------------------------------------------- //
		X31SDataBeanAccess cfBean = getCommonInfoBean();
		// 遷移先画面IDを共有フォームBeanに設定
		cfBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE,
				JCRScreenConst.SCREEN_ID_CRW04801);
		// 遷移先画面名を共有フォームBeanに設定
		cfBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE,
				JCRScreenConst.SCREEN_NAME_CRW04801);
		
		return true;
	}
	
	/**
	 * ファイル名リンク処理
	 * @return boolean
	 * @throws Exception
	 */
	public boolean clickLinkFileNm() throws Exception
	{
		// -------------------------------------------------- //
		// (1)引継情報の取得
		// -------------------------------------------------- //
		// なし。
		// -------------------------------------------------- //
		// (2)サービスフォームBeanの設定
		// -------------------------------------------------- //
		// なし。
		// -------------------------------------------------- //
		// (3)サービス呼出処理
		// -------------------------------------------------- //
		// なし。
		// -------------------------------------------------- //
		// (4)サービス処理結果の設定
		// -------------------------------------------------- //
		// なし。
		// -------------------------------------------------- //
		// (5)引継情報の設定
		// -------------------------------------------------- //
		// なし。
		// -------------------------------------------------- //
		// (6)共有フォームBeanの設定
		// -------------------------------------------------- //
		X31SDataBeanAccess cfBean = getCommonInfoBean();
		// 遷移先画面IDを共有フォームBeanに設定
		cfBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE,
				JCRScreenConst.SCREEN_ID_CRW04801);
		// 遷移先画面名を共有フォームBeanに設定
		cfBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE,
				JCRScreenConst.SCREEN_NAME_CRW04801);
		// -------------------------------------------------- //
		// (7)その他
		// -------------------------------------------------- //
		X31SDataBeanAccess svBean = getServiceFormBean();
		String index = svBean.sendMessageString(CRW04801SFConst.IDX_DOWN_LOAD_FILE, 
											X31CWebConst.DATABEAN_GET_VALUE);
		//エクスポート結果ファイル一覧(選択前).電子ファイル管理番号
		String key = getListItemByIndex(svBean,CRW04801SFConst.FILE_LIST_BF, 
											CRW04801SFConst.L0_EFILE_KANRI_NO_01, index);
		//エクスポート結果ファイル一覧(選択前).対応履歴文書ファイル名
		String fileName = getListItemByIndex(svBean, CRW04801SFConst.FILE_LIST_BF, 
											CRW04801SFConst.L0_TAIORRKI_BUNSHO_FILE_NM_01, index);
		//・選択した添付ファイルに該当する電子ファイル管理番号、対応履歴文書ファイル名を元に、
		//  電子管理ファイルダウンロード処理部品 (JCCWebCommon.setDownloadFile)を使用し、ダウンロードファイル情報を取得する。
		JCCWebCommon.setDownloadFile(this, key, fileName);
		
		return true;
	}
	
	/**
	 * 削除確認ボタン押下処理
	 * @return boolean
	 * @throws Exception
	 */
	public boolean confirmDlt() throws Exception
	{
		// -------------------------------------------------- //
		// (1)引継情報の取得
		// -------------------------------------------------- //
		// なし。
		// -------------------------------------------------- //
		// (2)サービスフォームBeanの設定
		// -------------------------------------------------- //
		X31SDataBeanAccess svBean = getServiceFormBean();
		editExportFileList(svBean);
		// -------------------------------------------------- //
		// (3)サービス呼出処理
		// -------------------------------------------------- //
		X31SDataBeanAccess[] beans = {svBean};
		// ユースケースID格納用マップ
		HashMap<Object, String> paramMap = new HashMap<Object, String>();
		// ユースケースID格納
		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, "CRSV0263");
		// マッピング用Map
		HashMap<String, Object> dataMap = new HashMap<String, Object>();
		// サービス実行結果データ用Map
		HashMap<String, Object> outputMap = new HashMap<String, Object>();
		// マッピングクラス
		CRSV0263_CRSV0263OPDBMapper mapper = new CRSV0263_CRSV0263OPDBMapper();
		mapper.setDELEXPORTFILECC(this, beans, dataMap, JPCModelConstant.FUNC_CD_2);
		// サービス実行
		invokeService(paramMap, dataMap, outputMap);
		// -------------------------------------------------- //
		// (4)サービス処理結果の設定
		// -------------------------------------------------- //
		// なし。
		// -------------------------------------------------- //
		// (5)引継情報の設定
		// -------------------------------------------------- //
		// なし。
		// -------------------------------------------------- //
		// (6)共有フォームBeanの設定
		// -------------------------------------------------- //
		X31SDataBeanAccess cfBean = getCommonInfoBean();
		// 遷移先画面IDを共有フォームBeanに設定
		cfBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE,
				JCRScreenConst.SCREEN_ID_CRW04802);
		// 遷移先画面名を共有フォームBeanに設定
		cfBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE,
				JCRScreenConst.SCREEN_NAME_CRW04802);
		return true;
	}
	
	/**
	 * 確定ボタン押下処理
	 * @return boolean
	 * @throws Exception
	 */
	public boolean fix() throws Exception
	{
		// -------------------------------------------------- //
		// (1)引継情報の取得
		// -------------------------------------------------- //
		// なし。
		// -------------------------------------------------- //
		// (2)サービスフォームBeanの設定
		// -------------------------------------------------- //
		// なし。
		// -------------------------------------------------- //
		// (3)サービス呼出処理
		// -------------------------------------------------- //
		X31SDataBeanAccess svBean = getServiceFormBean();
		
		X31SDataBeanAccess[] beans = {svBean};
		// ユースケースID格納用マップ
		HashMap<Object, String> paramMap = new HashMap<Object, String>();
		// ユースケースID格納
		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, "CRSV0264");
		// マッピング用Map
		HashMap<String, Object> dataMap = new HashMap<String, Object>();
		// サービス実行結果データ用Map
		HashMap<String, Object> outputMap = new HashMap<String, Object>();
		// マッピングクラス
		CRSV0264_CRSV0264OPDBMapper mapper = new CRSV0264_CRSV0264OPDBMapper();
		mapper.setDELEXPORTFILECC(this, beans, dataMap, JPCModelConstant.FUNC_CD_1);
		// サービス実行
		invokeService(paramMap, dataMap, outputMap);
		// -------------------------------------------------- //
		// (4)サービス処理結果の設定
		// -------------------------------------------------- //
		// なし。
		// -------------------------------------------------- //
		// (5)引継情報の設定
		// -------------------------------------------------- //
		// なし。
		// -------------------------------------------------- //
		// (6)共有フォームBeanの設定
		// -------------------------------------------------- //
		// なし。
		// -------------------------------------------------- //
		// (7)その他
		// -------------------------------------------------- //
		this.init();
		
		return true;
	}
	
	/**
	 * キャンセルボタン押下処理
	 * @return boolean
	 * @throws Exception
	 */
	public boolean cancel() throws Exception
	{
		// -------------------------------------------------- //
		// (1)引継情報の取得
		// -------------------------------------------------- //
		// なし。
		// -------------------------------------------------- //
		// (2)サービスフォームBeanの設定
		// -------------------------------------------------- //
		// なし。
		// -------------------------------------------------- //
		// (3)サービス呼出処理
		// -------------------------------------------------- //
		// なし。
		// -------------------------------------------------- //
		// (4)サービス処理結果の設定
		// -------------------------------------------------- //
		// なし。
		// -------------------------------------------------- //
		// (5)引継情報の設定
		// -------------------------------------------------- //
		// なし。
		// -------------------------------------------------- //
		// (6)共有フォームBeanの設定
		// -------------------------------------------------- //
		X31SDataBeanAccess cfBean = getCommonInfoBean();
		// 遷移先画面IDを共有フォームBeanに設定
		cfBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE,
				JCRScreenConst.SCREEN_ID_CRW04801);
		// 遷移先画面名を共有フォームBeanに設定
		cfBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE,
				JCRScreenConst.SCREEN_NAME_CRW04801);
		return true;
	}
	
	/**
	 * サービスフォームBean 全項目のクリアを行います。
	 * 
	 */
	private void clearDataBean()
	{
		X31SDataBeanAccess svBean = getServiceFormBean();
		
		//総件数(選択前)
		svBean.sendMessageString(CRW04801SFConst.TOTAL_CNT_BF, X31CWebConst.DATABEAN_CLEAR);
		//総件数(選択後)
		svBean.sendMessageString(CRW04801SFConst.TOTAL_CNT_AF, X31CWebConst.DATABEAN_CLEAR);
		//ＫＥＹ＿文書種別コード
		svBean.sendMessageString(CRW04801SFConst.KEY_BUNSHO_SBT_CD, X31CWebConst.DATABEAN_CLEAR);
		//ＳＯＲＴ指定項目名
		svBean.sendMessageString(CRW04801SFConst.SORT_SHITEI_KMK_NM, X31CWebConst.DATABEAN_CLEAR);
		//ダウンロードファイルインデックス
		svBean.sendMessageString(CRW04801SFConst.IDX_DOWN_LOAD_FILE, X31CWebConst.DATABEAN_CLEAR);
		// リスト エクスポート結果ファイル一覧(選択前)
		svBean.getDataBeanArray(CRW04801SFConst.FILE_LIST_BF).clearArray();
		// リスト エクスポート結果ファイル一覧(選択後)
		svBean.getDataBeanArray(CRW04801SFConst.FILE_LIST_AF).clearArray();
		
	}
	
	/**
	 * 指定されたリスト(list_nm)で、指定したIndex(index)に該当する指定した項目(kmk_nm)の値を返します。
	 * <BR>
	 * @param sv_bean サービスフォームBean
	 * @param list_nm リストの名称
	 * @param kmk_nm 項目の名称
	 * @param index 取得するIndex
	 * @return String 引数で指定された項目に対する値
	 */
	private String getListItemByIndex(X31SDataBeanAccess sv_bean,String list_nm, String kmk_nm, String index)
	{
		// 指定されたIndexの型変換
		int listIndex = Integer.parseInt(index);
		// リスト取得
		X31SDataBeanAccessArray beanArray = sv_bean.getDataBeanArray(list_nm);
		
		// 指定したIndexで指定した項目を取得
		String retStr = beanArray.getDataBean(listIndex).sendMessageString(kmk_nm, X31CWebConst.DATABEAN_GET_VALUE);
		
		return retStr;
	}
	
	/**
	 * 選択前のエクスポートファイルリストから選択された分のみ選択後のエクスポートファイルリストへ
	 * セットします。
	 * <BR>
	 * @param sv_bean サービスフォームBean
	 */
	private void editExportFileList(X31SDataBeanAccess sv_bean)
	{
		//(1) 問合せリスト編集処理(editToiawaseList)
		//    問合せリスト（選択前）
		//問合せリスト（選択前）
		X31SDataBeanAccessArray exportFileListBf = sv_bean.getDataBeanArray(CRW04801SFConst.FILE_LIST_BF);
		//実行チェックボックスがONの件数
		int iSelectedCnt = 0;
		//問合せリスト（選択後）
		X31SDataBeanAccessArray exportFileListAf = sv_bean.getDataBeanArray(CRW04801SFConst.FILE_LIST_AF);
		//問合せリスト（選択後）クリア
		exportFileListAf.clearArray();
		for(int iCnt = 0;iCnt < exportFileListBf.getCount();iCnt++)
		{
			//問合せリスト（選択前）
			X31SDataBeanAccess subBeanBf = exportFileListBf.getDataBean(iCnt);
			//問合せリスト（選択後）
			X31SDataBeanAccess subBeanAf = null;
			//  (a) サービスフォームBean.問合せリスト(選択前).実行がtrue(チェック有)場合、下記処理を行う。
			//      サービスフォームBean.総件数(選択前)分処理を繰り返す。
			boolean execFlg =subBeanBf.sendMessageBoolean(CRW04801SFConst.L0_DEL_01, X31CWebConst.DATABEAN_GET_VALUE); 
			if(execFlg)
			{
				iSelectedCnt++;
				//   (ｱ) 行スタイルを取得する。
				String lineStyle = JCRWebCommon.getLineStyle(iSelectedCnt);
				//   (ｲ) 問合せリスト(選択後)のサービスフォームBeanを設定する。
				subBeanAf = exportFileListAf.addDataBean();
				
				//明細インデックス
				subBeanAf.sendMessageString(CRW04801SFConst.L1_LINE_NO_02, X31CWebConst.DATABEAN_SET_VALUE, String.valueOf(iSelectedCnt));
				//ファイル名
				subBeanAf.sendMessageString(CRW04801SFConst.L1_TAIORRKI_BUNSHO_FILE_NM_02, X31CWebConst.DATABEAN_SET_VALUE, 
							subBeanBf.sendMessageString(CRW04801SFConst.L0_TAIORRKI_BUNSHO_FILE_NM_01, X31CWebConst.DATABEAN_GET_VALUE));
				//対応履歴電子ファイル管理番号
				subBeanAf.sendMessageString(CRW04801SFConst.L1_TORK_EFILE_KNRI_NO_02, X31CWebConst.DATABEAN_SET_VALUE, 
							subBeanBf.sendMessageString(CRW04801SFConst.L0_TORK_EFILE_KNRI_NO_01, X31CWebConst.DATABEAN_GET_VALUE));
				//電子ファイル管理番号
				subBeanAf.sendMessageString(CRW04801SFConst.L1_EFILE_KANRI_NO_02, X31CWebConst.DATABEAN_SET_VALUE, 
						subBeanBf.sendMessageString(CRW04801SFConst.L0_EFILE_KANRI_NO_01, X31CWebConst.DATABEAN_GET_VALUE));
				//世代登録年月日時分秒
				subBeanAf.sendMessageString(CRW04801SFConst.L1_GENE_ADD_DTM_02, X31CWebConst.DATABEAN_SET_VALUE, 
						subBeanBf.sendMessageString(CRW04801SFConst.L0_GENE_ADD_DTM_01, X31CWebConst.DATABEAN_GET_VALUE));
				//更新前更新年月日時分秒
				subBeanAf.sendMessageString(CRW04801SFConst.L1_UPD_DTM_BF_02, X31CWebConst.DATABEAN_SET_VALUE, 
						subBeanBf.sendMessageString(CRW04801SFConst.L0_UPD_DTM_BF_01, X31CWebConst.DATABEAN_GET_VALUE));
				//行スタイルクラス
				subBeanAf.sendMessageString(CRW04801SFConst.L1_LINE_STYLE_CLASS_02, X31CWebConst.DATABEAN_SET_VALUE, lineStyle);
			}
		}
		//    (b) (a)以外のサービスフォームBeanを設定する。
		//       総件数(選択後)
		sv_bean.sendMessageString(CRW04801SFConst.TOTAL_CNT_AF, X31CWebConst.DATABEAN_SET_VALUE, String.valueOf(iSelectedCnt));
	}

}
