JeffBlodgett/FileFilter — pull request #1 by JeffBlodgett (2014-06-04 17:49:58+00:00)
Title: Initial interface for business logic

Took longer than I expected to get familiar with IntelliJ IDEA today. I've named the project "FileFilter" but we could revise that at any time. I've included two interface files for review. "IFileEnumerator" is centered about enumerating (getting a list) of files in a given folder and generating a list of duplicates found in the source. I'm thinking that a Comparator defining how we want to test for file similarity could be passed into a FileEnumerator instance for use by the method that identifies duplicate files.

I'll start working on the proposal this afternoon, if that is ok, since I have some statements to make about the "problems being solved". You could each edit it further after I check it in tomorrow morning (I'll do so by 9:00 AM). Assuming you agree to the interfaces thus far, I can flesh out some stub classes and tests for the two interfaces above - the goal being to get things compiling and tests passing as quickly as possible so one of us can begin coding the GUI (we'll need to further discuss what the GUI will look like soon - perhaps exchange some hand drawings).

At the moment I'm at a bit of a loss in what could/should be serialized. As you'll see in my initial take on the proposal, I foresaw this tool as (a) able to identify duplicate files in a given folder and (b) being able to copy that folder with or without particular duplicates to a given target path. What is useful about these things? Well, writing this utility in Java allows us to overcome the arbitrary 256-character pathname limit inherent in Windows.

I'm not sure what about points (a) and (b) would be useful if serialized and reloaded later. We may have to add additional functionality, such as the ability to compare a previous serialized file list with a freshly generated list. Then we could be talking about reporting on those files that have changed (new, modified, or missing/deleted). This would be a different mode of operation- a mode "b".