Phase 1
DemJava abandoned in favor of plain java adaptive programming.
Plain Jane version with 4 different visitors. Objects created and
destroyed in traversal. (David Wagstaff)
Phase 2
Objects created and destroyed in visitor. (David Wagstaff)
Phase 3
Visitor clones itself inside the traversal. The clone traverses
a subdirectory (making even more clones for its subdirectories.) (David
Wagstaff)
Phase 4
Tried some reflection method for funky cloning. Interesting,
but confusing. (David Wagstaff)
Phase 5
More funky cloning. (David Wagstaff)
Phase 6
Visitor takes care of ALL cloning, not the traversal. (David
Wagstaff)
Phase 7
Put all the action back in traversal. Definitely back to better
design. (David Wagstaff)
Phase 8
Added threading. Actually thread waits until it's child
is dead, so the behavior is single threaded. (David Wagstaff)
Phase 9
Added ThreadPool because large directory trees can't have a thread
for every directory. Composite visitor made of simple visitors.
Used an instance variable as a way to pass info to run() method. threading
and cloning controlled by visitor. Just extend with the right supervisitor
and you have threading and cloning. If there are no more threads
(ThreadPool empty), then threads have to traverse into subdirectories (my
colleague called it "Boss with a Deadline Algorithm: if you can't
get an employee to do it, do it yourself.") (David Wagstaff)
Phase 10
Tried to separate ThreadPool from the object. Abandoned
this approach.(David Wagstaff)
Phase 11
Put cloning in run method. (David Wagstaff)
Phase 12
Separate ThreadPool object. (David Wagstaff)