package org.itscool.stylist.tag;

import javax.servlet.jsp.JspException;
import javax.servlet.jsp.tagext.TagSupport;

import org.itscool.stylist.controller.Globals;
/**
 * 指定されたJSPをレイアウト用JSPにインクルードするためのタグです。<BR>
 * 出力する内容はname属性で指定したJSPをレイアウト用JSPの指定された
 * 位置にパディングします。
 * 
 * @author KANO
 * @since jdk1.4.1
 * @version 1.00A 2004/11/1
 * @version 1.11A 2005/05/20 Include機能を削除（Stylistとの分離）
*/
public class IncludeTag extends TagSupport {
    private String name;

    /**
     * 指定されたJSPをレイアウト用JSPにインクルードします
    */
    public int doStartTag() throws JspException {

        try {
//modify 2006/10/03 kano start
            String includeName = Globals.REQ_PARAM_INCLUDE + name;
            String buff =
                (String) pageContext.getRequest().getAttribute(includeName);
            if( buff != null && buff.length() > 0 ){
            	pageContext.getOut().print(buff);
            }else{
                throw new JspException("stylist.include failed [Body要素のサイズが０です]");
            }
//            //BODY要素のタグはサーブレットの実行結果(byte配列)を取得し、
//            //PageContextに出力します。
//            if (includeName.equals(Globals.REQ_PARAM_INCLUDE_BODY)) {
////              2005.05.20 -start-
////                String jspName = (String)pageContext.getRequest().getAttribute(Globals.REQ_PARAM_INCLUDE_CONTENTS_NAME);
////              2005.05.20 -start-
//                
//                byte[] buff =
//                    (byte[]) pageContext.getRequest().getAttribute(
//                        Globals.REQ_PARAM_INCLUDE_BODY);
//                if( buff != null && buff.length > 0 ){
//                	String str = new String(buff);
//                    pageContext.getOut().print(str);
//                }else{
////                  2005.05.20 -start-
////                  pageContext.include(jspName);
//                    throw new JspException("stylist.include failed [Body要素のサイズが０です]");
////                  2005.05.20 -end-
//                }
//            //BODY要素以外は、includeメソッドを使ってJSPを直接includeします
//            } else {
//
//                LayoutPutMapping result =
//                    (LayoutPutMapping) JspTagUtil.findObject(
//                        pageContext,
//                        includeName,
//                        JspTagUtil.SCOPE_REQUEST);
//                if (result == null) {
//                    throw new JspException("stylist.include failed ["+includeName+"要素のサイズが０です]");
//                } else {
//                    //String jsp = "<jsp:include path=\"" + result.getPath() + "\"/>";
//                    //System.out.println("include jsp:" + result.getPath());
//                    pageContext.include(result.getPath());
//                    //pageContext.getOut().print(jsp);
//                }
//
//            }
//modify 2006/10/03 kano end
        } catch (Exception e) {
            String err =
                "["
                    + name
                    + "]"
                    + "doStartTag() failed ("
                    + IncludeTag.class.getName()
                    + ") ("
                    + e.getMessage()
                    + ")";
            e.printStackTrace();
            throw new JspException(err);
        }

        return SKIP_BODY;
    }

    public int doEndTag() {
        return EVAL_PAGE;
    }

    /**
     * @return name
     */
    public String getName() {
        return name;
    }
    /**
     * @param name name を設定します。
     */
    public void setName(String name) {
        this.name = name;
    }

}
