001    /*
002     * kiuruString.java
003     *
004     * Created on 27. marraskuuta 2002, 17:15
005     */
006    
007    package kiurubeans;
008    import kotkabeans.*;
009    import java.util.StringTokenizer;
010    import java.util.ArrayList;
011    /** Contains useful String handling routines.
012     * @author jusmaki
013     */
014    public class KiuruString {
015    
016      /** Creates a new instance of KiuruString */
017      public KiuruString() {
018      }
019      
020      
021      /** Converts a comma separated string into an array of objects.
022       * @return (actual) string array of tokens
023       * @param csvString String that is going to be separated.
024       * @param separator Separator of the tokens.
025       */
026      public static Object[] csvToArray(String csvString,String separator) {
027        if ((csvString==null) || (csvString.length()==0)) return null;
028        StringTokenizer sT = new StringTokenizer(csvString,separator);
029        ArrayList result = new ArrayList(10);
030        while(sT.hasMoreElements()) {
031          result.add(sT.nextElement());
032        }
033        Object[] res = result.toArray();
034        return res;
035      }
036      
037      /** Converts a comma separated string into a separated string with another separator
038       * @return Separated string containing tokens separated with new separators.
039       * @param CSVString String to be converted
040       * @param separator New separator
041       */
042      public static String CSVToGeneralCSV(String CSVString,String separator) {
043        if ((CSVString==null) || (CSVString.length()==0)) return "";
044        StringTokenizer sT = new StringTokenizer(CSVString,",");
045        StringBuffer result = new StringBuffer(50);
046        while (sT.hasMoreElements()) {
047          if (result.length()>0) result.append(separator);
048          result.append((String)sT.nextElement());
049        }
050        return result.toString();   
051      }
052      
053      /** Converts a string array into one "comma separated string" with optional separator
054       * @return <CODE>String</CODE> that contains the strings from the string array separated with
055       * <CODE>separator</CODE>.
056       * @param strings Strings to be combined
057       * @param separator Separator between different tokens
058       */
059      public static String arrayToGeneralCSV(String[] strings,String separator) {
060        if ((strings==null) || (strings.length==0)) return "";
061        StringBuffer result = new StringBuffer();
062        for (int i=0; i<strings.length; i++) {
063          if (i>0) result.append(separator);
064          result.append(strings[i]);
065        }
066        return result.toString();
067      }
068    
069      /** Converts a string array into one Comma separated string.
070       * @return Comma separated <CODE>string</CODE>
071       * @param strings String array containing Strings
072       */
073      public static String arrayToCSV(java.lang.String[] strings) {
074        return arrayToCSV(strings,"");
075      }
076      
077      /** Converts a string array into one sql query.
078       * @return Returns String: "<CODE>sqlfield in (string1,string2,...)</CODE>
079       * @param strings String array containing possible SQL values
080       * @param fieldname The name of the sqlfield that can be equal with Strings in String array.
081       */
082      public static String arrayToCSV(java.lang.String[] strings,String fieldname) {
083        if ((strings==null) ||(strings.length==0))
084          return fieldname + " IS NOT NULL";      
085        boolean empty=true;
086        StringBuffer sb=new StringBuffer(1000);
087        for (int i=0;i<strings.length;i++) {
088          if (!empty) 
089            sb.append(","); 
090          if (strings[i]!=null) {
091            if (!strings[i].equals("")) {
092              empty=false;
093              sb.append(strings[i]);
094            }
095          }
096        }
097       if (fieldname.equals("")) {
098         return new String(sb);
099       }
100       if (empty==true) {
101         return fieldname + "IS NOT NULL";
102       }
103       return fieldname + " IN ("+new String(sb)+")";
104      }
105    
106      /** Converts s to \"s\".
107       * @return The quoted string.
108       * @param s String to be quoted
109       */
110      public static String quote(String s) {
111        return "\""+s+"\"";
112      }
113      
114      /** Converts s to \\\"s\"\\
115       * @param s String to be quoted
116       * @return Quoted string that can be used in JavaScript code.
117       */
118      public static String jsQuote(String s) {
119        return "\\\""+s+"\\\"";
120      }
121       
122      /**
123       * Converts s to 's'.
124       * @param s String to be surrounded with "'"s.
125       * @return String that begins and ends with '.
126       */
127      public static String sqlQuote(String s) {
128        return "'"+s+"'";
129      }
130    
131      /**
132       * Converts s to 's'.
133       * @param i int to be surrounded with "'"s.
134       * @return String that begins and ends with '.
135       */
136      public static String sqlQuote(int i) {
137        return "'"+Integer.toString(i)+"'";
138      }
139      
140      /** Returns the trimmed sql String.
141       * @return <CODE>Null</CODE> if <CODE>s</CODE> is <CODE>null</CODE>. Else it returns
142       * trimmed sql String.
143       * @param s <CODE>String</CODE> to be trimmed
144       */ 
145      public static String sqlTrim(String s) {
146        if (s==null) return null;
147        return kotkabeans.Encoder.SQLEncode(s).trim();
148      }
149      
150      /**  Returns current page filename, no request parameters or path.
151       * @deprecated @see HtmlBean.getCurrentPage
152       * @return The filename of the current page, no request parameters or path.
153       * @param r <CODE>request</CODE>-object from the JSP-page.
154       * @throws MalformedURLException If current page is not valid URL.
155       */
156    /*  public static String getCurrentPage(javax.servlet.http.HttpServletRequest r) throws java.net.MalformedURLException {
157        return HtmlBean.getCurrentPage(r);
158      }*/
159      
160      /** Tests if a given String is null or empty.
161       *
162       * @param s String to be tested
163       * @return true if String is null or empty
164       */
165      public static boolean isEmpty(String s) {
166        return ((s==null) || (s.length()==0));
167      }
168      
169      /** Returns first occurence of any character of test in src.
170       * IE. returns -1 if strings have no common characters!
171       * @return Index of the first same character in two strings.
172       * -1, if strings have no common characters!
173       * @param src First string
174       * @param test Second string
175       */
176      public static int anyCharIndexOf(String src,String test) {
177        if ((src==null) || (test==null)) throw 
178          new IllegalArgumentException("src or test may not be null!");
179        if (src.length()==0) return -1;
180        int result=test.length();
181        for (int i=0; i<test.length(); i++) {
182          int temp = src.indexOf(test.charAt(i));
183          if ((temp>-1) && (temp<result)) result = temp;
184        }
185        if (result==test.length()) result=-1;
186        return result;
187      }
188      
189      /** Deletes characters of c from src string.
190       * @param src String we are manipulating.
191       * @param c Characters to be removed
192       * @return String that doesn't contain characters from <CODE>c</CODE>
193       */
194      public static String stripChars(String src,String c) {
195        if (src==null) return null;
196        StringBuffer result = new StringBuffer(src.length());
197        StringTokenizer t = new java.util.StringTokenizer(src,c);
198        while (t.hasMoreElements()) {
199          result.append(t.nextToken());
200        }
201        return result.toString();
202      }
203      
204    }