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