The Motivation
The first thing to understand about this code is the motivation behind it. For a long time (maybe since the beginning), Sakai has shipped with a feature in the Site Info tool called "Import from file." The idea is that the maintainer of the site will upload a specially-formatted zip file that contains an archive of all her course materials. The tool works like a wizard, with four screens:
Asks for a file to upload.
Shows you a list of categories of content in your archive and allows you to choose the items that should be pulled in.
Displays a confirmation screen with a summary of what is about to happen and a "Finish" button.
Upon completion, it displays an "Import Complete" message and an "Ok" button.
The problem with this feature from the get-go was that the only archive files this tool understood were those produced by Sakai's archival functionality and Indiana University's legacy Oncourse system. The initial motivation then was to find a way to substitute other archive file formats for this one, namely Blackboard 5.5 archives in use at Texas State University.
All the code for reading and parsing an archive file was in the Site Info tool code itself, in a 12,000+ line file called SiteAction.java. The new design needed to factor the archive parsing and processing out into an independent module and provide the flexibility to support new archive types without breaking the existing support for Indiana's files.
UI Drives the Design
For better or for worse, the user interface of this feature dictated some major requirements: the fact that it gives you the opportunity to choose categories of content meant that any new archive parser must be able to provide something that satisfies the concept of content categories. Also, it implies that there must be a parsing step preceding the final import step.