/*********************************************************************
* All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*   システム名      ：eo顧客基幹システム
*   モジュール名    ：JCCFrontGlobalFooter
*   ソースファイル名：JCCFrontGlobalFooter.java
*   作成者          ：富士通
*   日付            ：2011年08月01日
*＜機能概要＞
*   フロントの共有フッター部表示用拡張タグクラスです
*＜修正履歴＞
*   バージョン  修正日       修正者      修正内容
*   v1.00.00    2011/08/01   FJ          新規作成
*   v5.00.00    2013/03/11   FJ)大村     白ロム引継ぎ対応：白ロム時の表示レイアウト変更＆リンクなし
*
**********************************************************************/

package eo.web.webview.common;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.io.StringWriter;

import javax.servlet.jsp.JspException;

import com.fujitsu.futurity.common.JSYwebLog;
import com.fujitsu.futurity.web.x33.X33VCustomTagBase;

/**
 * フロントの共有フッター部表示用拡張タグクラス
 * @author 富士通
 *
 */
public class JCCFrontGlobalFooter extends X33VCustomTagBase {


	/** フロント共有フォームビーンのテンプレートID */
	private static final String TEMPLATE_ID = "TagTemplate001";
	
	/** フロント共有フォームビーンのフロント区分の項目ID */
	private static final String FRONT_KBN = "FU_KBN";

	//白ロム引継ぎ対応：ヘッダー・フッター >>>
	/** フロント共有フォームビーンの申込回線サービスの項目ID */
	private static final String MSKM_KSN_SVC = "MSKM_KSN_SVC";

	/** フロント共有フォームビーンのＷｉＭＡＸＲＯＭの項目ID */
	private static final String RED_WIMAXROM = "RED_WIMAXROM";

	/** フロント共有フォームBean　リダイレクト情報　WiMAXROM 白ロム */
	public static final String WIMAXROM_WHITE = "0";

	/** フロント共有フォームビーン　ＷＥＢ新規情報　申込回線サービス モバイル単独 */
	public static final String MSKM_KSN_SVC_MOBILE = "3";

	/** 白ロム用のファイル取得変数 */
	public static final String FILE_PATH_WIMAX = "_WIMAX";
	//白ロム引継ぎ対応：ヘッダー・フッター <<<E
	
	/** 空文字 */
	public static final String EMPTY = "";
	
	/** スマートフォンフラグ */
	private String smart_phone_kbn = EMPTY;
	
	/** スマートフォン区分 1：スマートフォン */
	public static final String SMTRT_PTHONE_KBN_1 = "1";
	
	/**
	 * smart_phone_kbnフィールドのセッターメソッド
	 * @param smart_phone_kbn smart_phone_kbn属性
	 */
	public void setSmart_phone_kbn(String smart_phone_kbn)
	{
		this.smart_phone_kbn = smart_phone_kbn;
	}

	/**
	 * フロントの共通ヘッダー領域の生成を行う。
	 */
	@Override
	public int doStartTag() throws JspException
	{
		
// 2012/08/17 FST)arata Fortify対応 start
		StringWriter sw = null;
		FileReader fr = null;
		BufferedReader br = null;
		try {
			String path = getPathString();
			
			File file = new File(path);
			sw = new StringWriter(new Long(file.length()).intValue());
			fr = new FileReader(file);
			br = new BufferedReader(fr);
			char[] buf = new char[1024];
			
			int pos = 0;
			while (pos != -1)
			{
				pos = br.read(buf, 0, buf.length);
				if (pos != -1)
				{
					sw.write(buf, 0, pos);
				}
			}
			
			outputHtml(sw.getBuffer().toString());
		} catch (Exception e) {
			JSYwebLog.println(JSYwebLog.ERROR, getClass(), e, null, null, null);
			throw new JspException();
		}
		finally
		{
			try
			{
				if(sw != null)
				{
					sw.close();
				}
				if(fr != null)
				{
					fr.close();
				}
				if(br != null)
				{
					br.close();
				}
			}
			catch(IOException e)
			{
				JSYwebLog.println(JSYwebLog.ERROR, getClass(), e, null, null, null);
				throw new JspException();
			}
		}
// 2012/08/17 FST)arata Fortify対応 end
		return SKIP_BODY;
	}

	/**
	 * APLConstに設定されているファイル名をパス付で取得するメソッド
	 * @return APLConstに設定されているパス+ファイル名の文字列
	 * @throws JspException JSP例外
	 */
	private String getPathString() throws JspException
	{
		
// 2011/09/14 フロント区分取得時にExceptionが発生した場合は、固定のフロント区分を付与する。 start
		String frontKbn = null;
		try{
			// フロント区分取得
			frontKbn = getSFBeanData_String(TEMPLATE_ID, FRONT_KBN);
			
		}catch(Exception e){
			frontKbn = JCCWebCommon.getApplicationConst("DEFAULT_FRONT_KBN");
		}
// 2011/09/14 フロント区分取得時にExceptionが発生した場合は、固定のフロント区分を付与する。 end
		if (frontKbn == null || "".equals(frontKbn))
		{
// 2012/02/15 フロント区分が取得できない場合は固定のフロント区分を付与する。 start
			frontKbn = JCCWebCommon.getApplicationConst("DEFAULT_FRONT_KBN");
//			JSYwebLog.println(JSYwebLog.ERROR, getClass(), null, "BPCON0I002", new String[]{"フロント区分が取得できません。"}, null);
//			throw new JspException();
// 2012/02/15 フロント区分が取得できない場合は固定のフロント区分を付与する。 end
		}

		//白ロム引継ぎ対応：ヘッダー・フッター >>>
		String mskm_ksn_svc = "";
		try{
			// 申込回線サービス取得
			mskm_ksn_svc = getSFBeanData_String(TEMPLATE_ID, MSKM_KSN_SVC);
			
		}catch(Exception e){
		}
		String red_wimaxrom = "";
		try{
			// ＷｉＭＡＸＲＯＭ取得
			red_wimaxrom = getSFBeanData_String(TEMPLATE_ID, RED_WIMAXROM);
			
		}catch(Exception e){
		}

		String wimax = "";
		if (mskm_ksn_svc.equals(MSKM_KSN_SVC_MOBILE) && red_wimaxrom.equals(WIMAXROM_WHITE))
		{
			wimax += FILE_PATH_WIMAX;
		}
		//白ロム引継ぎ対応：ヘッダー・フッター <<<E
		
		// パス取得用
		String path = getPath(frontKbn);
		// ファイル名
		String fileName = EMPTY;
		
		if (null != smart_phone_kbn && 
				!EMPTY.equals(smart_phone_kbn) && 
				SMTRT_PTHONE_KBN_1.equals(smart_phone_kbn))
		{
			fileName = JCCWebCommon.getApplicationConst(frontKbn + "_FOOTER_FILE_SP");
		}
		else
		{
			//白ロム引継ぎ対応：ヘッダー・フッター >>>
			fileName = JCCWebCommon.getApplicationConst(frontKbn + wimax + "_FOOTER_FILE");
			//白ロム引継ぎ対応：ヘッダー・フッター <<<E
		}

		
		return path + fileName;
	}
	
	/**
	 * 前後の空白部分を除去し、"/"終わりでない場合"/"を付けた形でpathを生成し返却する。
	 * @param frontKbn フロント区分
	 * @return 処理後のパス
	 */
	private String getPath(String frontKbn)
	{
		String path = JCCWebCommon.getApplicationConst(frontKbn + "_FILE_PATH");
		if (! path.substring(path.length() - 1).equals("/"))
		{
			return path + "/";
		}
		
		return path;
	}

}
