001    package railo.runtime.util;
002    
003    import java.util.ArrayList;
004    import java.util.List;
005    
006    /**
007     * class to operate some String List Operations and some list Operations
008     */
009    public final class ListUtil {
010            
011            /**
012             * creates a List from a String "List"
013             * @param str String to creates List from
014             * @param delimeter delimeter to split string
015             * @return List 
016             */
017            public static List stringToList(String str,char delimeter) {
018                    ArrayList list=new ArrayList();
019                    int len=str.length();
020                    if(len==0) return list;
021                    StringBuffer el=new StringBuffer();
022                    
023                    for(int i=0;i<len;i++) {
024                            char c=str.charAt(i);
025                            if(c==delimeter) {
026                                    list.add(el.toString());
027                                    if(el.length()>0) el=new StringBuffer();
028                            }
029                            else {
030                                    el.append(c);
031                            }
032                    }
033                    list.add(el.toString());
034                    return list;
035            }       
036            
037            /**
038             * creates a List from a String "List", trims empty values at start and end
039             * @param str String to creates List from
040             * @param delimeter delimeter to split string
041             * @return List 
042             */
043            public static List stringToListTrim(String str,char delimeter) {
044                    ArrayList list=new ArrayList();
045                    int len=str.length();
046                    if(len==0) return list;
047                    StringBuffer el=new StringBuffer();
048                    boolean hasStart=false;
049                    
050                    for(int i=0;i<len;i++) {
051                            char c=str.charAt(i);
052                            if(c==delimeter) {
053                                    if(!hasStart) {
054                                            if(el.length()>0) {
055                                                    list.add(el.toString());
056                                                    hasStart=true;
057                                            }
058                                    }
059                                    else {
060                                            list.add(el.toString());
061                                    }
062                                    if(el.length()>0) el=new StringBuffer();
063                            }
064                            else {
065                                    el.append(c);
066                            }
067                    }
068                    if(el.length()>0)list.add(el.toString());
069                    
070                    // remove empty items on the end
071                    for(int i=list.size()-1;i>=0;i--){
072                            if(list.get(i).toString().length()==0) {
073                                    list.remove(i);
074                            }
075                            else break;
076                    }
077                    
078                    
079                    return list;
080            }
081            
082            /**
083             * creates a List from a String "List", remove all empty values
084             * @param str String to creates List from
085             * @param delimeter delimeter to split string
086             * @return List 
087             */
088            public static List stringToListRemoveEmpty(String str,char delimeter) {
089                    ArrayList list=new ArrayList();
090                    int len=str.length();
091                    if(len==0) return list;
092                    StringBuffer el=new StringBuffer();
093                    
094                    for(int i=0;i<len;i++) {
095                            char c=str.charAt(i);
096                            if(c==delimeter) {
097                                    if(el.length()>0) {
098                                            list.add(el.toString());
099                                            el=new StringBuffer();
100                                    }
101                            }
102                            else {
103                                    el.append(c);
104                            }
105                    }
106                    if(el.length()>0)list.add(el.toString());
107                    return list;
108            }
109            
110            /**
111             * cast all Elememts of a list to a String array, make simple cast of the object by toString method
112             * @param list List to cast to a String Array
113             * @return String array from List
114             */
115            public static String[] toStringArray(List list) {
116                    int i=list.size();
117                    String[] arr=new String[i];
118                    for(i--;i>=0;i--) {
119                            arr[i]=list.get(i).toString();
120                    }
121                    return arr;
122            }
123            
124    
125    }