content: /*
   * $Id: ItemList.java,v 1.1 2006/04/15 14:10:48 platform Exp $
   * Created on 2006-3-24
   */
  package org.json.simpleForBukkit;
  
  import java.util.ArrayList;
  import java.util.List;
  import java.util.StringTokenizer;
  
  /**
   * |a:b:c| => |a|,|b|,|c|
   * |:| => ||,||
   * |a:| => |a|,||
   * @author FangYidong<fangyidong@yahoo.com.cn>
   */
  public class ItemList {
  	private String sp=",";
  	List<Object> items=new ArrayList<Object>();
  	
  	
  	public ItemList(){}
  	
  	
  	public ItemList(String s){
  		this.split(s,sp,items);
  	}
  	
  	public ItemList(String s,String sp){
  		this.sp=s;
  		this.split(s,sp,items);
  	}
  	
  	public ItemList(String s,String sp,boolean isMultiToken){
  		split(s,sp,items,isMultiToken);
  	}
  	
  	public List<Object> getItems(){
  		return this.items;
  	}
  	
  	public String[] getArray(){
  		return (String[])this.items.toArray();
  	}
  	
  	public void split(String s,String sp,List<Object> append,boolean isMultiToken){
  		if(s==null || sp==null)
  			return;
  		if(isMultiToken){
  			StringTokenizer tokens=new StringTokenizer(s,sp);
  			while(tokens.hasMoreTokens()){
  				append.add(tokens.nextToken().trim());
  			}
  		}
  		else{
  			this.split(s,sp,append);
  		}
  	}
  	
  	public void split(String s,String sp,List<Object> append){
  		if(s==null || sp==null)
  			return;
  		int pos=0;
  		int prevPos=0;
  		do{
  			prevPos=pos;
  			pos=s.indexOf(sp,pos);
  			if(pos==-1)
  				break;
  			append.add(s.substring(prevPos,pos).trim());
  			pos+=sp.length();
  		}while(pos!=-1);
  		append.add(s.substring(prevPos).trim());
  	}
  	
  	public void setSP(String sp){
  		this.sp=sp;
  	}
  	
  	public void add(int i,String item){
  		if(item==null)
  			return;
  		items.add(i,item.trim());
  	}
  
  	public void add(String item){
  		if(item==null)
  			return;
  		items.add(item.trim());
  	}
  	
  	public void addAll(ItemList list){
  		items.addAll(list.items);
  	}
  	
  	public void addAll(String s){
  		this.split(s,sp,items);
  	}
  	
  	public void addAll(String s,String sp){
  		this.split(s,sp,items);
  	}
  	
  	public void addAll(String s,String sp,boolean isMultiToken){
  		this.split(s,sp,items,isMultiToken);
  	}
  	
  	/**
  	 * @param i 0-based
  	 * @return
  	 */
  	public String get(int i){
  		return (String)items.get(i);
  	}
  	
  	public int size(){
  		return items.size();
  	}
  
  	public String toString(){
  		return toString(sp);
  	}
  	
  	public String toString(String sp){
  		StringBuffer sb=new StringBuffer();
  		
  		for(int i=0;i<items.size();i++){
  			if(i==0)
  				sb.append(items.get(i));
  			else{
  				sb.append(sp);
  				sb.append(items.get(i));
  			}
  		}
  		return sb.toString();
  
  	}
  	
  	public void clear(){
  		items.clear();
  	}
  	
  	public void reset(){
  		sp=",";
  		items.clear();
  	}
  }
  