package org.itscool.stylist.mapping;

import java.util.LinkedList;

import org.itscool.commons.util.UrlUtil;

/**
 * IncludeMappingインスタンスを保持する配列クラスです<BR>
 * <BR>
 * このクラスは次のキーと値の配列で管理されます<BR>
 * 　キー：Includeを呼び出すための<include name=>タグで指定されたJSPの論理名(name)<BR>
 *   値  ：Includeインスタンス<BR>
 *
 * @author KANO
 * @since jdk1.4.1
 * @version 1.00A 2004/11/1 
*/
public class LayoutMappings extends LinkedList{
    /** 唯一のIncludeMappingインスタンス */
    private static LayoutMappings instance;
    
    /**
     * 唯一のIncludeMappingインスタンスを取得します
     * @return IncludeMappingインスタンスを返します
    */
    public static synchronized LayoutMappings getInstance(){
        if( instance == null ){
            instance = new LayoutMappings();
        }
        return instance;
    }
    
    public Object get(String servletPath){
        
        String layoutPath = null;
        ///for( int i=0; i<this.size(); i++ ){
        for( int i=this.size()-1; i>=0; i-- ){
                LayoutMapping layout = (LayoutMapping)super.get(i);
            
            if( layout == null){
                return null;
            }
            //ワイルドカード対応検索
            if( UrlUtil.isURLMatch(layout.getName(), servletPath) ){
                return layout;
            }
        }
        return null;
    }
    
}
