001    /*
002     * JBoss, Home of Professional Open Source
003     *
004     * Distributable under LGPL license.
005     * See terms of license at gnu.org.
006     */
007    
008    package org.granite.util;
009    
010    import java.io.IOException;
011    import java.io.InputStream;
012    import java.util.StringTokenizer;
013    
014    /**
015     * @author <a href="mailto:theute@jboss.org">Thomas Heute</a>
016     */
017    public class Strings
018    {
019       
020       public static String unqualify(String name)
021       {
022          return unqualify(name, '.');
023       }
024       
025       public static String unqualify(String name, char sep)
026       {
027          return name.substring( name.lastIndexOf(sep)+1, name.length() );
028       }
029       
030       public static boolean isEmpty(String string)
031       {
032          return string == null || string.trim().length() == 0; 
033       }
034       
035       public static String nullIfEmpty(String string)
036       {
037          return isEmpty(string) ? null : string;
038       }
039    
040       public static String toString(Object component)
041       {
042          try {
043             PropertyDescriptor[] props = Introspector.getPropertyDescriptors(component.getClass());
044             StringBuilder builder = new StringBuilder();
045             for (PropertyDescriptor descriptor : props)
046             {
047                builder.append( descriptor.getName() )
048                   .append("=")
049                   .append( descriptor.getReadMethod().invoke(component) )
050                   .append("; ");
051             }
052             return builder.toString();
053          }
054          catch (Exception e) {
055             return "";
056          }
057       }
058    
059       public static String[] split(String strings, String delims)
060       {
061          if (strings==null)
062          {
063             return new String[0];
064          }
065          
066          StringTokenizer tokens = new StringTokenizer(strings, delims);
067          String[] result = new String[ tokens.countTokens() ];
068          int i=0;
069          while ( tokens.hasMoreTokens() )
070          {
071             result[i++] = tokens.nextToken();
072          }
073          return result;
074       }
075       
076       public static String toString(Object... objects)
077       {
078          return toString(" ", objects);
079       }
080       
081       public static String toString(String sep, Object... objects)
082       {
083          if (objects.length==0) return "";
084          StringBuilder builder = new StringBuilder();
085          for (Object object: objects)
086          {
087             builder.append(sep).append(object);
088          }
089          return builder.substring(2);
090       }
091       
092       public static String toClassNameString(String sep, Object... objects)
093       {
094          if (objects.length==0) return "";
095          StringBuilder builder = new StringBuilder();
096          for (Object object: objects)
097          {
098             builder.append(sep);
099             if (object==null)
100             {
101                builder.append("null");
102             }
103             else
104             {
105                builder.append( object.getClass().getName() );
106             }
107          }
108          return builder.substring(2);
109       }
110       
111       public static String toString(String sep, Class<?>... classes)
112       {
113          if (classes.length==0) return "";
114          StringBuilder builder = new StringBuilder();
115          for (Class<?> clazz: classes)
116          {
117             builder.append(sep).append( clazz.getName() );
118          }
119          return builder.substring(2);
120       }
121       
122       public static String toString(InputStream in) throws IOException {
123          StringBuffer out = new StringBuffer();
124          byte[] b = new byte[4096];
125          for ( int n; (n = in.read(b)) != -1; ) 
126          {
127             out.append(new String(b, 0, n));
128          }
129          return out.toString();
130      }
131    
132    }
133    
134