KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > jester > MainArguments


1 package jester;
2
3 import java.io.PrintStream JavaDoc;
4 import java.util.ArrayList JavaDoc;
5 import java.util.Iterator JavaDoc;
6 import java.util.List JavaDoc;
7
8 /**
9  * Handling of the arguments given to the main method in TestTester.
10  */

11 public class MainArguments {
12     public static final String JavaDoc CLASSPATH_PROPERTY = "java.class.path";
13     
14     private static final String JavaDoc OPTIONAL_ARGUMENT_START = "-";
15     private static final String JavaDoc CLASSPATH_OPTION_START = OPTIONAL_ARGUMENT_START+"cp=";
16     private static final String JavaDoc SHOW_PROGRESS_DIALOG_OPTION_START = OPTIONAL_ARGUMENT_START+"q";
17     
18     private List JavaDoc directoryOrFileNames = null;
19     private String JavaDoc testClassName = null;
20     private FileExistenceChecker aFileExistenceChecker;
21     private boolean shouldShowProgressDialog = true;
22     
23     public MainArguments(String JavaDoc[] args, FileExistenceChecker aFileExistenceChecker) throws JesterArgumentException {
24         this.aFileExistenceChecker = aFileExistenceChecker;
25         readArguments(args);
26     }
27     
28     public static void printUsage(PrintStream JavaDoc out, String JavaDoc version) {
29         out.println("Jester version " + version);
30         out.println("java jester.TestTester <TestSuite> <sourceDirOrFile> <sourceDirOrFile> ...");
31         out.println("example usage: java jester.TestTester com.xpdeveloper.tests.TestAll com/xpdeveloper/server");
32         out.println("for FAQ see http://jester.sourceforge.net");
33         out.println("Copyright (2000-2005) Ivan Moore. Read the license.");
34     }
35
36     public String JavaDoc[] getDirectoryOrFileNames() {
37         return (String JavaDoc[]) directoryOrFileNames.toArray(new String JavaDoc[directoryOrFileNames.size()]);
38     }
39     
40     public String JavaDoc getTestClassName() {
41         return testClassName;
42     }
43     
44     public boolean shouldShowProgressDialog(){
45         return shouldShowProgressDialog;
46     }
47     
48     private void readArguments(String JavaDoc[] arguments) throws JesterArgumentException {
49         List JavaDoc normalArgs = new ArrayList JavaDoc();
50         List JavaDoc optionalArgs = new ArrayList JavaDoc();
51         for (int i = 0; i < arguments.length; i++) {
52             if(arguments[i].trim().startsWith(OPTIONAL_ARGUMENT_START)){
53                 optionalArgs.add(arguments[i]);
54             }else{
55                 normalArgs.add(arguments[i]);
56             }
57         }
58         setTestClassFromArguments(normalArgs);
59         setDirectoriesOrFilesToMutateFromArguments(normalArgs);
60         setOptionalClasspathFromArguments(optionalArgs);
61         setOptionalShouldShowProgressDialogFromArguments(optionalArgs);
62         
63         if (testClassName == null) throw new JesterArgumentException("missing test class name argument");
64         checkDirectoriesOrFilesToMutateExist();
65     }
66
67     private void checkDirectoriesOrFilesToMutateExist() throws JesterArgumentException {
68         if (directoryOrFileNames == null) throw new JesterArgumentException("missing source directory/file name argument");
69         for (Iterator JavaDoc name = directoryOrFileNames.iterator(); name.hasNext();) {
70             String JavaDoc directoryOrFileName = (String JavaDoc) name.next();
71             if(!aFileExistenceChecker.exists(directoryOrFileName)){
72                 throw new JesterArgumentException("source directory/file \""+directoryOrFileName+"\" does not exist");
73             }
74         }
75     }
76     
77     private void setTestClassFromArguments(List JavaDoc normalArgs) throws JesterArgumentException {
78         if(normalArgs.size() == 0){
79             throw new JesterArgumentException("Missing Test Class Argument");
80         }
81         testClassName = (String JavaDoc) normalArgs.get(0);
82     }
83     
84     private void setDirectoriesOrFilesToMutateFromArguments(List JavaDoc normalArgs) throws JesterArgumentException {
85         if(normalArgs.size() < 2){
86             throw new JesterArgumentException("Missing Directories Or Files To Mutate Arguments");
87         }
88         directoryOrFileNames = new ArrayList JavaDoc();
89         directoryOrFileNames.addAll(normalArgs);
90         directoryOrFileNames.remove(0);
91     }
92     
93     private void setOptionalClasspathFromArguments(List JavaDoc optionalArgs) {
94         for (Iterator JavaDoc args = optionalArgs.iterator(); args.hasNext();) {
95             String JavaDoc arg = (String JavaDoc) args.next();
96             if (arg.startsWith(CLASSPATH_OPTION_START))
97             {
98                 String JavaDoc classpath = arg.substring(CLASSPATH_OPTION_START.length());
99                 System.setProperty(CLASSPATH_PROPERTY, classpath);
100             }
101         }
102     }
103
104     private void setOptionalShouldShowProgressDialogFromArguments(List JavaDoc optionalArgs) {
105         for (Iterator JavaDoc args = optionalArgs.iterator(); args.hasNext();) {
106             String JavaDoc arg = (String JavaDoc) args.next();
107             if (arg.startsWith(SHOW_PROGRESS_DIALOG_OPTION_START))
108             {
109                 shouldShowProgressDialog = false;
110                 return;
111             }
112         }
113     }
114 }
115
Popular Tags