package cute.gui; import com.thoughtworks.qdox.JavaDocBuilder; import com.thoughtworks.qdox.model.*; import javax.swing.*; import java.io.File; import java.io.IOException; /** * . * User: Koushik Sen (ksen@cs.uiuc.edu) * Date: Nov 10, 2005 * Time: 9:44:26 AM */ public class Utils { public static void populateTestableFunctions(String srcDirName,String srcFileName, DefaultComboBoxModel funModel,JComboBox funT){ // String mainClassName; JavaSource source; int selectionIndex=-1; try { funModel.removeAllElements(); if((new File(srcFileName)).exists() && (new File(srcDirName)).exists() && srcFileName.startsWith(srcDirName)){ JavaDocBuilder builder = new JavaDocBuilder(); builder.addSource(new File(srcFileName)); source = builder.getSources()[0]; JavaClass[] javaClasses = source.getClasses(); for (int i = 0; i < javaClasses.length; i++) { JavaClass javaClass = javaClasses[i]; JavaMethod[] methods = javaClass.getMethods(); for (int j = 0; j < methods.length; j++) { JavaMethod method = methods[j]; if(method.isPublic() && method.isStatic()){ JavaParameter[] parameters = method.getParameters(); if(parameters.length==0){ funModel.addElement(new StringBuffer(). append(javaClass.getFullyQualifiedName()). append("."). append(method.getName()).toString()); } if(method.getName().equals("main")){ if(parameters.length==1){ Type type = parameters[0].getType(); if(type.getValue().equals("java.lang.String") && type.isArray() && type.getDimensions()==1){ selectionIndex = funModel.getSize(); funModel.addElement(new StringBuffer(). append(javaClass.getFullyQualifiedName()). append(".").append(method.getName()).toString()); } } } } } } } else { if(!(new File(srcFileName)).exists()){ System.err.println("File "+srcFileName+ " not found!"); } if(!(new File(srcDirName)).exists()){ System.err.println("Directory "+srcDirName+ " not found!"); } if(!srcFileName.startsWith(srcDirName)){ System.err.println(srcFileName+" must be in the directory "+srcDirName); } } } catch (IOException ioe){ ioe.printStackTrace(); } if(selectionIndex>=0) funT.setSelectedIndex(selectionIndex); } public static boolean isPackageNameOk(String srcDirName,String srcFileName,MessageLogger box){ JavaSource source; String packageName = ""; String fileSeparator=System.getProperty("file.separator"); try { if((new File(srcFileName)).exists() && (new File(srcDirName)).exists() && srcFileName.startsWith(srcDirName)){ JavaDocBuilder builder = new JavaDocBuilder(); builder.addSource(new File(srcFileName)); source = builder.getSources()[0]; packageName = source.getPackage(); if(packageName==null){ packageName = ""; } } } catch (IOException ioe){ ioe.printStackTrace(); return false; } String tmp,tmp2; // detect package name from the srcDirName and srcFileName tmp = srcFileName.substring(srcDirName.length()); tmp = tmp.substring(1,tmp.lastIndexOf('.')); tmp = tmp.replaceAll("\\\\","."); tmp = tmp.replaceAll("/","."); if(tmp.indexOf('.')>0){ tmp = tmp.substring(0,tmp.lastIndexOf('.')); } else { tmp = ""; } tmp2 = srcFileName; tmp2 = tmp2.replaceAll("\\\\"," "); tmp2 = tmp2.replaceAll("/"," "); if(tmp2.indexOf(' ')>0) tmp2 = tmp2.substring(tmp2.lastIndexOf(' ')+1); if(!tmp.equals(packageName)){ box.ask(tmp2+" must be in the directory " +srcDirName+fileSeparator+packageName.replaceAll("\\.","/")); return false; } return true; } }