Your project deliverable should submitted on a floppy disk. There are three main components that you must provide: Source code (yours only, not mine) HTML API documentation (JavaDoc) High Level Design Document Please organize your floppy disk accordingly (it makes the build process go more smoothly): a:\ | + source (contains all .java files - no subdirectories please) | + docs (contains all .html JavaDoc files AND the high level design document) | - readme.txt (instructions on what, if any, extra credit to look for). SOURCE CODE ----------- I will build and run your projects, so please do not submit .class files - it only wastes your time copying them, and mine filtering them out. Your project will be built and tested using the Ant open-source Java build tool version 1.5.2 and a java compiler compatible with version 1.4.1 or later. The build process consists of: 1. Your source will be copied to a temporary directory on my hard drive 2. Your source will be compiled as follows: SET CLASSPATH=.;hurtzcommon.jar javac -d . *.java * note that no third party jar files or anything else will be in the classpath. The initial testing process consists of: 1. From your source directory I will create a new inventory file: SET CLASSPATH=.;hurtzcommon.jar java edu.cod.cis218.server.HurtzDBCreator cars.dat 1000 * the filename and number will vary in reality. * I will also run this test without supplying parameters to see if you provide a usage explanation or alternatively, prompt me for this information. 2. From your source directory I will run a verifier utility to ensure that you wrote the proper number of cars using the correct technique (Object Serialization). SET CLASSPATH=hurtzcommon.jar;dbverifier.jar java DatabaseVerifier cars.dat 100 * the dbverifier.jar file is of my creation, and includes the DatabaseVerifier * again, the the filename and number will vary in reality, but will match the parameters supplied to your HurtzDBCreator 3. I will start the server: SET CLASSPATH=.;hurtzcommon.jar java edu.cod.cis218.server.HurtzRentalServer 8888 cars.dat * 8888 is the port number for the server to listen on * cars.dat is the name of the data file created in step 1 4. I will open up a new command window and change to your source directory. From there, I will start the client: SET CLASSPATH=.;hurtzcommon.jar java edu.cod.cis218.client.HurtzAgentTerminal localhost 8888 * localhost is the name of the machine the server is running on * 8888 is the port number the server is running on. The funtional testing process consists of: 0. Check initial state 1. First, attempt to search with no criteria supplied. The lowest-priced car in inventory should be returned. 2. Attempt to create an invalid criteria selection (e.g. a Ford Stratus, or a car with 7 doors). * check user notification * check to see if search is performed or aborted 3. Attempt to search a bogus price (e.g. "shoe183.23$") * check error handling of NumberFormatException 4. Attempt to search with valid, partial criteria * check display of results in results panel * check state (Rent button should be enabled) 5. Hit reset button * check state 6. Attempt to search with valid, full criteria * check to make sure new results are displayed 7. Rent that car * check success/failure notification 8. Search again with the same criteria as step 5 * check to see that a new,different car is returned. 9. Shutdown server. Search again with a valid criteria set * check error notification. -- If applicable -- 10. Restart server. Search one last time with valid criteria. General notes about build/test: On randomly selected projects, I will test one person's client against another person's server. The protocol for communicating between the client and server is extremely simple, and the format is fixed, so they should be interoperable. Here is the client/server handshake: Search ------------------------------- Client Server Criteria---------------> <---------------Car Rent ------------------------------- Client Server Car--------------------> <-------------------Boolean I reserve the right to test the client on a separate machine than the server, especially if I believe that you have hard-coded "localhost" in the client for the name of the machine the server is running on. For students attempting the multi-threaded server, the following additional tests will be performed: A. Start multiple clients and acertain that all can connect and operate normally with the server (i.e. Search/Rent work in their basic forms) B. In one client, search for a specific set of criteria. In a second client, search for the same set of criteria. * check to make sure each client gets the same result. C. Rent the found vehicle in using the first client. Attempt to also rent the found vehicle in the second client. * check success/failure and notification. D. Use console autoclient utility to connect many, many times and perform random operations. Check integrity of results. * check to see that search engine "database" doesn't get corrupted * check to see that client closure is handled properly (i.e. doesn't affect the other clients). DOCS ---- The docs directory should contain the index.html page which lists all packages and classes (there are ancillary files as well), and the root of the html tree (edu/cod/cis218/client, edu/cod.cis218/server) that contains the html for the indiviual classes. I will check the generated documentation on each class you supply. I will also review your source code for standard documentation (explanatory comments, etc). The high level design document must be submitted in a form that is widely available. Currently, this includes: Word98 format, Rich Text Format (rtf), Plain Text Format (txt), or Adobe Acrobat (pdf). Please name the file appropriately (i.e. if it is a Acrobat file, the file extension should be .pdf, not .doc). An example high level design document for a slightly different system is supplied (examplehld.txt).