View Javadoc

1   /***
2    *  The contents of this file are subject to the Mozilla Public
3    *  License Version 1.1 (the "License"); you may not use this file
4    *  except in compliance with the License. You may obtain a copy of
5    *  the License at http://www.mozilla.org/MPL/
6    *
7    *  Software distributed under the License is distributed on an "AS
8    *  IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
9    *  implied. See the License for the specific language governing
10   *  rights and limitations under the License.
11   *
12   *  The Original Code is pow2toolkit library.
13   *
14   *  The Initial Owner of the Original Code is
15   *  Power Of Two S.R.L. (www.pow2.com)
16   *
17   *  Portions created by Power Of Two S.R.L. are
18   *  Copyright (C) Power Of Two S.R.L.
19   *  All Rights Reserved.
20   *
21   * Contributor(s):
22   */
23  
24  package com.pow2.util;
25  
26  import java.io.PrintWriter;
27  import java.io.StringWriter;
28  import java.io.IOException;
29  import java.util.*;
30  
31  import org.apache.log4j.Category;
32  
33  
34  /***
35   *  Utility class.
36   *
37   * @author  Luca Fossato
38   * @created  16 June 2002
39   */
40  public class Util
41  {
42    /*** Log4j category. */
43    private static Category cat = Category.getInstance(Util.class);
44  
45  
46    /***
47     *  Get the last token from the input string.
48     *
49     * @param str            the string containing the token
50     * @param tokenSeparator the token separator string (i.e.: "'", ":", etc)
51     * @return  the last token from the input string
52     */
53    public static String getLastToken(String str, String tokenSeparator)
54    {
55      return str.substring(str.lastIndexOf(tokenSeparator) + 1, str.length());
56    }
57  
58  
59    /***
60     *  Test if the input string is null or empty (has 0 characters)
61     *
62     * @param  s the input string to test
63     * @return  true if the input string is null; false otherwise
64     */
65    public static boolean isNull(String s)
66    {
67      return ((s == null) || (s.length() < 1));
68    }
69  
70  
71    /***
72     *  Test if the input string is null or empty
73     *  or if it's equal to the input <code>val</code> parameter.
74     *
75     * @param  s the input string to test
76     * @param  val the value string to compare to <code>s</code>
77     * @return  true  if <code>s</code> is null, or empty, or if it's
78     *                equal to the <code>val</code> string;
79     *                false otherwise.
80     */
81    public static boolean isNull(String s, String val)
82    {
83      return (isNull(s) || (s.compareTo(val) == 0));
84    }
85  
86  
87    /***
88     *  Return the string representation of the input exception
89     *  stack trace.
90     *
91     * @param  t the input throwable object
92     * @return  the string representation of the stack trace of the input
93     *          throwable object
94     */
95    public static String stackTrace(Throwable t)
96    {
97      StringWriter sw = new StringWriter();
98  
99      t.printStackTrace(new PrintWriter(sw));
100     String s = sw.toString();
101 
102     try
103     {
104       sw.close();
105     }
106     catch (IOException e)
107     {
108       cat.error("::stackTrace - cannot close the StringWriter object", e);
109     }
110 
111     return s;
112   }
113 
114 
115   /***
116    *  Delimit the input string with single quote characters (').
117    *
118    * @param  v The new string value
119    * @return  the input string delimited with single quote characters;
120    */
121   public static String dbString(String v)
122   {
123     StringBuffer sb = new StringBuffer();
124 
125     return (isNull(v) ? "" : (sb.append("'").append(v).append("'").toString()));
126   }
127 
128 
129   /***
130    *  Dump the content of the input hash table.
131    *
132    * @param  table table the hash table to dump
133    * @param  html true to set the eof as "<br>\n", false to set it
134    *              as "\n"
135    * @return  Description of the Return Value
136    */
137   public static String dumpHashTable(Hashtable table, boolean html)
138   {
139     Enumeration keys   = table.keys();
140     Enumeration values = table.elements();
141     StringBuffer sb    = new StringBuffer();
142     String eof = "\n";
143 
144     if (html)
145       eof = "<br>\n";
146 
147     while (keys.hasMoreElements())
148       sb.append("  key [").append(keys.nextElement().toString()).
149          append("] = [").append(values.nextElement().toString()).
150          append("]").append(eof);
151 
152     return sb.toString();
153   }
154 
155 
156   /***
157    *  Add a new parameter to the input URL string representation.
158    *
159    * @param URL        the URL string representation
160    * @param paramName  the parameter name
161    * @param paramValue the parameter value
162    */
163   public static String addURLParameter(String URL, String paramName, String paramValue)
164   {
165     String param = new StringBuffer(paramName)
166                          .append("=")
167                          .append(paramValue)
168                          .toString();
169 
170     return addURLParameter(URL, param);
171   }
172 
173 
174   /***
175    *  Add a new parameter to the input URL string representation.
176    *
177    * @param URL       the URL string representation
178    * @param parameter the parameter string, encoded as "${paramName}=${paramValue}"
179    */
180   public static String addURLParameter(String URL, String parameter)
181   {
182     StringBuffer sb = new StringBuffer(URL);
183 
184     if (URL.lastIndexOf('?') == -1)
185       sb.append("?");
186     else
187       sb.append("&");
188 
189     sb.append(parameter);
190     return sb.toString();
191   }
192 
193 
194   /***
195    *  Remove the substring starting from the first character
196    *  of the input string to the input <code>until</code> string included.
197    *
198    * @param str   the string to process
199    * @param until the string to reach (it will removed, too)
200    * @return the substring starting from the first characther
201    *         after the input <code>until</code> string,
202    *         or null if <code>until</code> token isn't found
203    */
204   public static String remove(String str, String until)
205   {
206     String val  = null;
207     int    indx = str.indexOf(until);
208 
209     if (indx != -1)
210       val = (str.substring((indx + until.length()), str.length()));
211 
212     return val;
213   }
214 }