/*
* $Id: ItemList.java,v 1.2 2009-03-15 22:12:18 parg Exp $
* Created on 2006-3-24
*/
package org.json.simple;
import java.util.ArrayList;
import java.util.List;
import java.util.StringTokenizer;
/**
* �����÷ָ����ֿ���һ��item.�ָ�������һ����һ��item.ÿ��item���߲����ǿհ�.
* ���磺
* |a:b:c| => |a|,|b|,|c|
* |:| => ||,||
* |a:| => |a|,||
* @author FangYidong<fangyidong@yahoo.com.cn>
*/
public class ItemList {
private final static String sp=",";
List<String> items=new ArrayList<String>();
public ItemList(){}
/**
*
* @param s �ָ���������һ���ַ�������
*/
public ItemList(String s){
this.split(s,sp,items);
}
/**
*
* @param s �ָ���������һ���ַ�������
* @param sp �ָ���
*/
//public ItemList(String s,String sp){
// this.sp=s;
// this.split(s,sp,items);
//}
/**
*
* @param s
* @param sp
* @param isMultiToken sp�Ƿ�Ϊ��ָ���
*/
public ItemList(String s,String sp,boolean isMultiToken){
split(s,sp,items,isMultiToken);
}
public List<String> getItems(){
return this.items;
}
public String[] getArray(){
return (String[])this.items.toArray(new String[items.size()]);
}
public void split(String s,String sp,List<String> 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<String> 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());
}
/**
* ���÷ָ���.
* @param sp �ָ���
*/
//public void setSP(String sp){
// this.sp=sp;
//}
/**
* ���뵥��item.
* @param i �����λ��(֮ǰ)
* @param item
*/
public void add(int i,String item){
if(item==null)
return;
items.add(i,item.trim());
}
/**
* ���뵥��item.
* @param item
*/
public void add(String item){
if(item==null)
return;
items.add(item.trim());
}
/**
* ��һ��item.
* @param list �����list
*/
public void addAll(ItemList list){
items.addAll(list.items);
}
/**
* ��һ��item.
* @param s �ָ���������һ���ַ�������
*/
public void addAll(String s){
this.split(s,sp,items);
}
/**
* ��һ��item.
* @param s �ָ���������һ���ַ�������
* @param sp �ָ���
*/
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);
}
/**
* ��õ�i��item. 0-based.
* @param i
* @return
*/
public String get(int i){
return (String)items.get(i);
}
/**
* ���item��.
* @return
*/
public int size(){
return items.size();
}
/**
* �÷ָ����ָ��ı�ʾ.
*/
public String toString(){
return toString(sp);
}
/**
* �÷ָ����ָ��ı�ʾ.
* @param sp ����ø÷ָ����ָ�.
* @return
*/
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();
}
/**
* �������item.
*/
public void clear(){
items.clear();
}
/**
* ��λ.������ݣ����ָ�����Ĭ��ֵ.
*/
public void reset(){
//sp=",";
items.clear();
}
}