I've been doing a lot of work on the code lately, aside from the design documentation, and now recently migrating to sourceforge. Yesterday I was finally able to condense down the number of times a progress bar runs through to just one time, rather than show a new progress bar every time a new portion of the background task completes. This was much needed for the user's sake, because, every time a progress bar repeats I believe faith is sort of lost in the progress bar. Why have a progress bar if it keeps repeating from 0 to 100%? Basically to get this working it was a simple math equation, but its much better for the user now.
I've also removed the iTunes version checking as the implementation was poor, this puts it back on the user to make sure iTunes is up to date, but if people are looking for a way to remove duplicates, then I'm sure they are as good about keeping software up to date as I usually am. So, for now, the version of iTunes isn't considered.
Next, I've removed the jAudioTagger libraries from iTunesDSM. It was neat to see the track tag information show up next to the songs in the table, but didn't really serve any purpose. On the plus side, not having to read track tag information is a real speed boost.
Next, I have figured out how to only have to read the options file once throughout each instance of the program. It seemed obvious to do that, but I wasn't sure how to implement it. Now in the very top most class a public static final instance of the Options class is created and set to what the OptionsReadTask class returns. Therefore, the options instance can be accessed from any class later. This again improves speed of the program and greatly reduces the number of times files are accessed in iTunesDSM.
Finally, I've run across a threading issue that I hadn't even thought of. The communication to iTunes is accomplished by JACOB, essentially adding COM support to Java. When I created a playlist in iTunes to add music tracks to, sometimes I couldn't remove the old playlist in time, to create a new one, and the AddTracksTask background task would just finish instantaneously. So for the time being, I've had to remove the functionality that removes old iTunesDSM playlists, and just continually add a new playlist every time tracks are added through iTunesDSM.
Look for the new update soon as well as information on how to download from Sourceforge!