/** * Utility methods, all static. * * @author H W Yau. * @version $Revision: 1.4 $ $Date: 1999/02/16 18:53:59 $ */ public final class Utilities { public static boolean DEBUG=false; private static String className="Utilities"; /** * Static method which behaves like the Unix `which' command. OS * specific dependencies are handled by the Java.lang.System * properties. * * @param executable The executable to search for. * @param pathEnv The list of paths in which to search, in the style of the * OS's PATH environment variable. * @return The full pathname of where the executable lives, * or failing that the error message "<executable> not found.". */ public static String which(String executable, String pathEnv) { String executablePath; String paths[]; paths=splitString(System.getProperty("path.separator"),pathEnv); for(int i=0; i<paths.length; i++ ) { if( paths[i].length() > 0 ) { java.io.File pathFile=new java.io.File(paths[i]); if( pathFile.isDirectory() ) { String filesInDirectory[]; filesInDirectory=pathFile.list(); for(int j=0; j<filesInDirectory.length; j++ ) { if( DEBUG ) { System.out.println("DBG: Matching "+filesInDirectory[j]); } if( filesInDirectory[j].equals(executable) ) { executablePath=paths[i]+System.getProperty("file.separator")+executable; return executablePath; } } } else { if( DEBUG ) { System.out.println("DBG: path "+paths[i]+" is not a directory!"); } } } } /* for i */ executablePath=executable+" not found."; return executablePath; } /** * Static method which behaves like the Perl join() function. * * @param joinChar The character on which to join. * @param stringArray The array of strings to join. * @return A string of the joined string array. */ public static String joinString(String joinChar,String stringArray[]) { return joinString(joinChar,stringArray,0); } /** * Static method which behaves like the Perl join() function. * * @param joinChar The character on which to join. * @param stringArray The array of strings to join. * @param index The array index on which to start joining. * @return A string of the joined string array. */ public static String joinString(String joinChar,String stringArray[],int index) { String methodName="join"; StringBuffer tmpString; int nStrings = java.lang.reflect.Array.getLength(stringArray); if( nStrings <= index ) { tmpString = new StringBuffer(); } else { tmpString = new StringBuffer(stringArray[index]); for(int i=(index+1); i < nStrings; i++) { tmpString.append(joinChar).append(stringArray[i]); } } return tmpString.toString(); } /** * Static method which behaves like the Perl split() function. * * @param splitChar The character on which to split. * @param arg The string to be split. * @return A string array of the split string. */ public static String[] splitString(String splitChar,String arg) reads Root writes Root { String methodName="split"; String myArgs[]; int nArgs=0; int foundIndex=0, fromIndex=0; while( (foundIndex=arg.indexOf(splitChar,fromIndex)) > -1 ) { nArgs++; fromIndex=foundIndex+1; } if( DEBUG ) { System.out.println("DBG "+className+"."+methodName+": "+nArgs); } myArgs = new String[nArgs+1]; nArgs=0; fromIndex=0; while( (foundIndex=arg.indexOf(splitChar,fromIndex)) > -1 ) { if( DEBUG ) { System.out.println("DBG "+className+"."+methodName+": "+fromIndex+" "+foundIndex); } myArgs[nArgs]=arg.substring(fromIndex,foundIndex); nArgs++; fromIndex=foundIndex+1; } myArgs[nArgs]=arg.substring(fromIndex); return myArgs; } }