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