[jsword-devel] ProjectB Primer

Joe Walker jsword-devel@bibletechnologieswg.org
Wed, 10 Apr 2002 11:25:16 +0100


ProjectB Primer part 1: Architecture overview.

ProjectB is split into 3 sections - model, view and controller.
The key interfaces in the model (Book and Bible) give you access to various
texts plus simple search capabilities.
The controller builds on this to add more advanced search functions and a
few other non view specific bits and pieces.
There are a number of views of which only the Swing GUI and the CLI are up
to date. There are also servlet/applet/awt UIs and even a very old COM

The design of the model aims for:
- Source independence: None of the UIs should care where the data comes
from. It could be Sword data files, ProjectB data files, SomeOtherVendor
data files, a SOAP connection across the net, etc.
- View independence: The data should be viewable on a PDA, Swing GUI, WML,
HTML, etc, but should look good on those that support styled text. This
means using XML as a view-independent content source. I understand there is
a standard in development (?) to do just this (there certainly wasn't when I
started) so I would like to switch to that when it is done.
- Not creating heavy search burndens. There are 2 fairly simple methods to
implement to allow all of the search functionality to work.

Most of the interest in the controller layer is around search. There are 2
methods of searching: command based ("aaron & moses") or best match based
("For god so loves")

The Swing GUI is bean based. There are beans for most things, so rebuilding
the GUI to look quite different should be fairly easy.
All of the views use XSLT to convert the XML from the model into something
that should be viewable. For the CLI interface the XSL strips off any style
hints. For swing and the old servlet UIs there were a number of XSLT sheets
to allow the user to select their look.