package org.itscool.stylist.mapping;

import java.util.HashMap;

/**
 * IncludeMappingクラスはアクションの実行結果をJSPのインクルードとして返すときの
 * JSP情報を保持するクラスです<BR>
 * 一つのIncludeMappingインスタンスは初期設定ファイル中の一つの<include-mappings>要素内に
 * 含まれている<include>に対応します。<BR>
 * <br>
 *【設定ファイルの設定情報とIncludeMappingクラスのプロパティに対応する項目】<BR>
 * 　name ：部分JSPを配置するレイアウトJSPの論理名を指定します<br>
 * 　path ：レイアウトJSPのパスを指定します<br>
 * @author KANO
 * @since jdk1.4.1
 * @version 1.00A 2004/11/1
 */
public class LayoutMapping{
    /** 部分JSPを配置するレイアウトJSPの論理名 */
    private String name;
    /** レイアウトJSPのパスを指定します */
    private String path = null;
    /** 拡張属性 */
    private String extendz = null;
    
    private HashMap putMap;
    
    
    /**
     * IncludeMappingインスタンスの初期化を行います
     * @param name 部分JSPを配置するレイアウトJSPの論理名
    */
    public LayoutMapping(String name){
        this.name = name;
    }
    
    /**
     * レイアウトJSPのパスの遷移先を取得します
     * @return レイアウトJSPのパス
    */
    public String getPath(){
        return path;
    }
    
    /**
     * レイアウトJSPのパスをセットします
     * @param path レイアウトJSPのパス
    */
    public void setPath(String path){
        this.path = path;
    }
    
    /**
     * 部分JSPを配置するレイアウトJSPの論理名を取得します
     * @return 入力エラーチェッククラス名
    */
    public String getName(){
        return name;
    }
    
    /**
     * 部分JSPを配置するレイアウトJSPの論理名をセットします
     * @param name 入力エラーチェッククラス名
    */
    public void setName(String name){
        this.name = name;
    }
    
    /**
     * インクルードする部分JSP情報を追加します
     * @param name 部分JSPを呼び出すための論理名
     * @param put インクルードするJSPのパス名
     */
    public void addPut(String name, LayoutPutMapping put){
        if( putMap == null ){
            putMap = new HashMap();
        }
        putMap.put(name, put);
    }
    
    /**
     * インクルードする部分JSP情報を取得します
     * @param name 部分JSPを呼び出すための論理名
     * @return インクルードする部分JSP情報を返します
     */
    public LayoutPutMapping getPut(String name){
        return (LayoutPutMapping)putMap.get(name);
    }
    
    /**
     * インクルードする部分JSP情報のリストを取得します
     * @return インクルードする部分JSP情報のリストを返します
     */
    public HashMap getPuts(){
        return putMap;
    }
    
    /**
     * @return extendz
     */
    public String getExtendz() {
        return extendz;
    }
    /**
     * @param extendz extendz を設定します。
     */
    public void setExtendz(String extendz) {
        this.extendz = extendz;
    }
    
    public LayoutMapping getParent(String extendz){
        LayoutMappings mappings = LayoutMappings.getInstance();
        LayoutMapping mapping = (LayoutMapping)mappings.get(extendz);
        
        return mapping;
    }
}
