/*
 * ElementList.java
 *
 * Created on 2007/03/16, 22:16
 *
 * To change this template, choose Tools | Template Manager
 * and open the template in the editor.
 */

package org.itscool.stylist.el;

import java.util.LinkedList;
import java.util.StringTokenizer;
import org.itscool.commons.bean.BeanUtil;

/**
 * EL式の展開結果を保持するクラスです<br>
 * たとえばEL式が${aaa.bbb.ccc}の場合<br>
 * "aaa"、"bbb"、"ccc"をリストに保持します。<br>
 * 
 * @author KANO
 */
public class ElementList extends LinkedList{
    public static final String LINE=System.getProperty("line.separator");
    private String tagString;
    
    public String toString(){
        StringBuffer sb = new StringBuffer();
        int listSize = this.size();
        for(int i=0; i<listSize; i++ ){
            String str = (String)this.get(i);
            sb.append(str);
            if( (i+1) < listSize ){
                sb.append(", ");
            }
        }
        
        return sb.toString();
    }
    
    public String getElement(int index){
        return (String)this.get(index);
    }
    
    /**
     * 引数propertyで指定された文字列からEL式を展開します
     * @param property EL式の中身
     * @return EL式の展開結果をリストで返します
     */
    public  static ElementList createElementList(String property){
        ElementList elems = new ElementList();
        elems.setTagString(property);
        StringTokenizer propertySt = new StringTokenizer(property, ".");
        while(propertySt.hasMoreTokens()){
            property = propertySt.nextToken().trim();
            if( property == null || property.length() == 0 ){
                continue;
            }
            property = property.substring(0, property.length());
            
            elems.add(property);
        }
        return elems;
    }
    
    /**
     * タグ文字列を取得します
     * @return タグ文字列を返します
     */
    public String getTagString() {
        return tagString;
    }
    
    /**
     * タグ文字列をセットします
     * @param tagString タグ文字列
     */
    public void setTagString(String tagString) {
        this.tagString = tagString;
    }
}