/*********************************************************************
 * All Rights reserved,Copyright (c) K-Opticom
 **********************************************************************
 *＜プログラム内容＞
 *   システム名      ：eo顧客基幹システム
 *   モジュール名    ：JFUYakkanKiyakuArea
 *   ソースファイル名：JFUYakkanKiyakuArea.java
 *   作成者          ：富士通
 *   日付            ：2012年09月08日
 *＜機能概要＞
 *   フロント画面契約約款規約一覧エリア出力カスタムタグです。
 *＜修正履歴＞
 *   バージョン  修正日       修正者      修正内容
 *   v4.00       2012/09/08   FJ)岡井     【案件番号：ANK-1198-00-00】新規作成
 *
 **********************************************************************/
package eo.web.webview.common;

import java.util.Map;

import javax.servlet.jsp.JspException;

import com.fujitsu.futurity.web.x33.X33VCustomTagBase;

/**
 * フロント画面契約約款規約一覧エリア出力カスタムタグです。 <br>
 *
 * @author 富士通
 */
@SuppressWarnings("serial")
public class JFUYakkanKiyakuArea extends X33VCustomTagBase
{

	/** 定義取得パス 文言 */
	private static final String PATH_MONGON = "DISPSETTING/COMMONSETTING/DISPTEXT[@groupid='YAKKAN_KIYAKU']";
	/** 定義取得パス リンク */
	private static final String PATH_LINK = "DISPSETTING/COMMONSETTING/OUTLINK[@groupid='YAKKAN_KIYAKU']";
	/** 属性名 */
	private static final String QUERY_ATTR_NAME = "id";

	/** リンク文言取得ID */
	private static final String GET_MONGON_ID = "mongon";
	/** リンク前文言取得ID */
	private static final String GET_BF_MONGON_ID = "before";
	/** リンク後文言取得ID */
	private static final String GET_AF_MONGON_ID = "after";
	/** リンクURL取得ID */
	private static final String GET_LINK_URL_ID = "url";

	/** Pタグ開始 */
	private static final String HTML_CAUTION = "<p class=\"caution\">";
	/** Aタグ開始 */
	private static final String HTML_START_A = "<a href=\"javascript:void(0);\" id=\"yakkan_kiyaku_area\" onclick=\"openWin('#');\">";
	/** SPANタグ */
	private static final String HTML_SPAN = "<span class=\"link_icon\" title=\"#\">#</span>";
	/** Aタグ終了 */
	private static final String HTML_END_A = "</a>";
	/** Pタグ終了 */
	private static final String HTML_END_P = "</p>";

	/** 置換文字列 */
	private static final String REPLACE_STR = "#";

	/**
	 * カスタムタグ開始処理を行います。 <br>
	 *
	 * @throws JspException JSPで発生する例外
	 * @return 処理結果
	 * @see javax.servlet.jsp.tagext.TagSupport#doStartTag()
	 */
	@Override
	public int doStartTag() throws JspException
	{
		try
		{
			// 文言一覧を取得
			Map<String, String> mongonMap = JFUWebCommon.getDispItemsAsMap(PATH_MONGON, QUERY_ATTR_NAME);
			// リンク一覧を取得
			Map<String, String> linkMap = JFUWebCommon.getLinkItemsAsMap(PATH_LINK, QUERY_ATTR_NAME);

			// どの定義も取得できていない場合、出力しない
			if((mongonMap == null || mongonMap.size() == 0) && (linkMap == null || linkMap.size() == 0))
			{
				return SKIP_BODY;
			}

			// 各文言を取得
			String linkMongon = mongonMap.get(GET_MONGON_ID);
			String bfMongon = mongonMap.get(GET_BF_MONGON_ID);
			String afMongon = mongonMap.get(GET_AF_MONGON_ID);

			// リンクURLを取得
			String linkStr = linkMap.get(GET_LINK_URL_ID);

			// リンク文言が取得できていない場合、出力しない
			if(linkMongon == null || linkMongon.length() == 0)
			{
				return SKIP_BODY;
			}

			// 各文言の取得状態に応じて出力するHTMLを制御する
			if((bfMongon == null || bfMongon.length() == 0) && (afMongon == null || afMongon.length() == 0))
			{
				if(linkStr == null || linkStr.length() == 0)
				{
					// 両方取得できていない場合、出力しない
					return SKIP_BODY;
				}
				else
				{
					// リンクURLのみ取得できている場合、リンクのみ表示する
					outputHtml(HTML_CAUTION);
					outputHtml(HTML_START_A.replace(REPLACE_STR, linkStr));
					outputHtml(HTML_SPAN.replace(REPLACE_STR, linkMongon));
					outputHtml(HTML_END_A);
					outputHtml(HTML_END_P);
				}
			}
			else
			{
				if(linkStr == null || linkStr.length() == 0)
				{
					// URLが取得できていない場合、出力しない
					return SKIP_BODY;
				}
				else
				{
					outputHtml(HTML_CAUTION);

					// リンク前文言が取得できている場合、出力する
					if(bfMongon != null && bfMongon.length() > 0)
					{
						outputHtml(bfMongon);
					}

					outputHtml(HTML_START_A.replace(REPLACE_STR, linkStr));
					outputHtml(HTML_SPAN.replace(REPLACE_STR, linkMongon));
					outputHtml(HTML_END_A);

					// リンク後文言が取得できている場合、出力する
					if(afMongon != null && afMongon.length() > 0)
					{
						outputHtml(afMongon);
					}

					outputHtml(HTML_END_P);
				}
			}
		}
		catch (Exception e)
		{
			// 何かエラーがある場合、出力しない
			return SKIP_BODY;
		}

		return SKIP_BODY;
	}
}