1
2
3
4
5 package xjavadoc;
6
7 import java.io.File;
8 import java.io.FileFilter;
9 import java.util.LinkedList;
10
11 /***
12 * Various static utility methods
13 *
14 * @author Aslak Hellesøy
15 * @created 20. januar 2002
16 */
17 public class Util
18 {
19
20 private final static FileFilter _javaFilter =
21 new FileFilter()
22 {
23 public boolean accept( File f )
24 {
25 return f.getName().endsWith( ".java" );
26 }
27 };
28
29 private final static FileFilter _dirFilter =
30 new FileFilter()
31 {
32 public boolean accept( File f )
33 {
34 return f.isDirectory();
35 }
36 };
37
38 /***
39 * Returns an array of String containing relative names of all java files under
40 * root.
41 *
42 * @param root the root directory
43 * @return java file names
44 */
45 public static String[] getJavaFiles( File root )
46 {
47 LinkedList javaFileNames = new LinkedList();
48
49 descend( root, "", javaFileNames );
50 return ( String[] ) javaFileNames.toArray( new String[javaFileNames.size()] );
51 }
52
53 public static String getPackageNameFor( String qualifiedName )
54 {
55 String packageName = null;
56 int lastDotIndex = qualifiedName.lastIndexOf( '.' );
57
58 if( lastDotIndex == -1 )
59 {
60
61 packageName = "";
62 }
63 else
64 {
65 packageName = qualifiedName.substring( 0, lastDotIndex );
66 }
67 return packageName/package-summary.html">g> packageName;
68 }
69
70 public static String getQualifiedNameFor( String packageName, String unqualifiedName )/package-summary.html">> static String getQualifiedNameFor( String packageName, String unqualifiedName )
71 {
72 if( packageName/equals(/package-summary.html">>( packageName.equals( "" ) )
73 {
74 return unqualifiedName;
75 }
76 else
77 {
78 return packageName +/package-summary.html">ng> packageName + "." + unqualifiedName;
79 }
80 }
81
82 public final static StringBuffer appendDimensionAsString( final int n, final StringBuffer sb )
83 {
84 for( int i = 0; i < n; i++ )
85 {
86 sb.append( "[]" );
87 }
88 return sb;
89 }
90
91 public final static String toString( Object[] array, String delimiter )
92 {
93 StringBuffer sb = new StringBuffer();
94
95 for( int i = 0; i < array.length; i++ )
96 {
97 sb.append( array[i].toString() );
98 if( i < array.length - 1 )
99 {
100 sb.append( delimiter );
101 }
102 }
103 return sb.toString();
104 }
105 /***
106 * Return only class name of a full qualified (package+classname) string.
107 *
108 * @param qualifiedName
109 * @return
110 */
111 public static String classNameFromQualifiedClassName( String qualifiedName )
112 {
113 if( qualifiedName == null )
114 {
115 throw new IllegalArgumentException( "qualifiedName can't be null!" );
116 }
117
118 int dot_index = qualifiedName.lastIndexOf( '.' );
119
120 if( dot_index != -1 )
121 return qualifiedName.substring( dot_index + 1 );
122 else
123 return qualifiedName;
124 }
125
126 /***
127 * Recursively descends a directory and build a list of relative file names for
128 * java files.
129 *
130 * @param root the root directory
131 * @param dirName current directory relative filename
132 * @param javaFileNames the list where java file names will be added
133 */
134 private static void descend( File root, String dirName, LinkedList javaFileNames )
135 {
136 File dir = new File( root, dirName );
137
138 File[] javaFiles = dir.listFiles( _javaFilter );
139
140 for( int i = 0; i < javaFiles.length; i++ )
141 {
142 StringBuffer javaFileName = new StringBuffer();
143
144 if( dirName.length() != 0 )
145 {
146 javaFileName.append( dirName ).append( File.separator );
147 }
148 javaFileName.append( javaFiles[i].getName() );
149 javaFileNames.add( javaFileName.toString() );
150 }
151
152 File[] subDirs = dir.listFiles( _dirFilter );
153
154 for( int i = 0; i < subDirs.length; i++ )
155 {
156 StringBuffer subDirName = new StringBuffer( dirName );
157
158 if( dirName.length() != 0 )
159 {
160 subDirName.append( File.separator );
161 }
162 subDirName.append( subDirs[i].getName() );
163 descend( root, subDirName.toString(), javaFileNames );
164 }
165 }
166 }