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