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