
Revised Edition
In addition to the original specifications, your team must add the following functionality to your program. These features emphasize specific design issues and are meant to help you think about what it means to "hard-code" things within your program and how to provide a interface for programmer's to access flexibility when using your program.
Specification
Before adding any new features to your program, you should refactor it based on a consensus of the individual team member's responses to the review of your project by another team. This should improve the design of your code and prepare it for future additions.
Next, you should complete the base features from the original specifications. For example, if you did not implement searching mail messages, you should complete that. You also completely implement at least one of the extra credit options. If your original submission was completely functional, then you do not need to add anything for this step.
You should add a GUI to your project using Java's swing package. I will leave the details of the interface up to you, but it should be similar to search features on any major computing platform and allow the user to do at least:
- perform a complex search
- sort the search results based on criteria like name, rank, file type, date modified, etc.
- allow the user to set search preferences like common words, directories to skip, level of links to follow, etc.
- perform multiple searches at once
- save search results and preferences
Additionally, you should allow the user to enter quoted (i.e., exact) search string.