/*********************************************************************
* All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*   システム名      ：eo顧客基幹システム
*   モジュール名    ：物流管理システム
*   ソースファイル名：JDKCommon26CC.java
*   作成者          ：富士通
*   日付            ：2011年09月29日
*＜機能概要＞
*   Ver情報一覧照会再検索CCクラスです。
*＜修正履歴＞
*   バージョン  修正日       修正者      修正内容
*   v1.00.00    2011/09/29   FJ          新規作成
*
**********************************************************************/
package com.fujitsu.futurity.bp.custom.common;

import static com.fujitsu.futurity.bp.custom.constant.DKSV0102_DKSV0102OP.DKSV010201CC;

import java.util.HashMap;
import java.util.Map;

import com.fujitsu.futurity.bp.custom.mapping.DKSV0102_DKSV0102OP_EDKA0010001BSMapper;
import com.fujitsu.futurity.bp.x21.bpm.ServiceComponentRequestInvoker;
import com.fujitsu.futurity.bp.x21.bpm.db.SessionHandle;
import com.fujitsu.futurity.bp.x21.bpm.parameter.IRequestParameterReadWrite;
import com.fujitsu.futurity.bp.x21.cc.AbstractCommonComponent;
import com.fujitsu.futurity.bp.x21.cc.exception.SCCallException;
import com.fujitsu.futurity.model.ejb.common.JSYejbLog;
import com.fujitsu.futurity.model.ejb.common.StatusCodes;

/**
 * Ver情報照会再検索CCクラスです。
 * @author 富士通
 */
public class JDKCommon27CC extends AbstractCommonComponent
{
	/** ＣＣ名 */
	private static final String CCNAME = DKSV010201CC;
	/** マッパー */
	private static final DKSV0102_DKSV0102OP_EDKA0010001BSMapper MAPPER = new DKSV0102_DKSV0102OP_EDKA0010001BSMapper();
	

	/**
	 * Ver情報一覧データ再検索処理を行います。
	 * @param handle セッションハンドル
	 * @param param パラメータ
	 * @param fixedText 定型文字
	 * @return パラメータ
	 * @throws Throwable 
	 */
	@SuppressWarnings("unchecked")
	public IRequestParameterReadWrite getVerFileListReSearch(SessionHandle handle, 
			IRequestParameterReadWrite param, String fixedText) throws Throwable
	{
		
		// ◇上りマッピング処理
		// 上りマッピングの処理結果を取得するためのマップを生成
		HashMap<String, Object> paramMap = new HashMap<String, Object>();

		// リクエストパラメータを引数に上りマッピング処理メソッドを実行
		paramMap = MAPPER.editInMsg(param);

		// ◇ＳＣ呼出実行
		// SC呼び出し部品のインスタンス生成（引数にはログに出力するクラス名を渡す。空文字を設定した場合はログに出力されない。
		ServiceComponentRequestInvoker scCall = new ServiceComponentRequestInvoker();
		JSYejbLog.println(JSYejbLog.DEBUG, this.getClass(), "宅内機器一覧照会(1)処理の実行");
		Map<?, ?> result = scCall.run(paramMap, handle);
		
		// ◇下りマッピング処理
		param = MAPPER.editResultRP(result, param);
		
		if (JDKBPCommon.hasError(param))
		{
			throw new SCCallException("宅内機器一覧照会(1)処理失敗", "0", StatusCodes.RELATION_ERR);
		}
		
		JDKBPCommon.throwScExceptionIfHasError("宅内機器一覧照会(1)処理リターンコード不正", param);
		
		HashMap dataMap = (HashMap)param.getData(CCNAME);
		int totalSearchNum = Integer.parseInt((String)dataMap.get("total_search_num"));
		if (totalSearchNum == 0)
		{
			dataMap.put("search_err_flg", "1");
			dataMap.put("total_page_num", new String());
		} 
		else if (totalSearchNum == 9999)
		{
			dataMap.put("search_err_flg", "2");
			dataMap.put("total_page_num", new String());
		}
		else
		{
			// エラーがなかったら、総ページ数の計算を行う
			int dispNum = Integer.parseInt((String)dataMap.get("display_num"));
			
			int totalPageNum = totalSearchNum / dispNum;
			int zan = totalSearchNum % dispNum;
			if (zan > 0)
			{
				totalPageNum = totalPageNum + 1;
			}
			dataMap.put("total_page_num", String.valueOf(totalPageNum));
		}
		
		return param;

	}

}
