001/*
002 * JBoss, Home of Professional Open Source
003 *
004 * Distributable under LGPL license.
005 * See terms of license at gnu.org.
006 */
007
008package org.granite.util;
009
010import java.io.IOException;
011import java.io.InputStream;
012import java.util.StringTokenizer;
013
014/**
015 * @author <a href="mailto:theute@jboss.org">Thomas Heute</a>
016 */
017public 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