This package makes up the core of Gestalt, the MCV framework.

The latest version can be obtained from http://www.kitefamily.co.uk/projects/gestalt

It is made up of a Dispatcher, Base Controller, Base Table and Base Row,
and also has a project generater called 'gestalt'.

The dispatcher, as its name suggests, dispatches requests to the appropriate
controller (which could be generated by gestalt, or hand-crafted).

The generated controller is actually quite bare-bones, as it inherits most of its
functionality (CRUD operations) from the Base Controller, Apache::Request::Controller

The Controller's job is to interact with the various other objects (mostly tables and rows aka
the data model, and templates - aka views) to make sure that the request is fulfilled sucessfuly.

The Base Table provides an interface to the data that represents a database table,
for example which columns are primary keys, which tables refer to this table,
and which foreign keys this table has.

The generated table provides the data itself, and inherits the interface from the
Base Table.

Likewise, the Base Row provides an interface to the rows within a given table,
allowing access to the data stored within an actual row.

The paginator does not have a generated counter-part, as its purpose is to provide
a book-like interface to viewing lots of "things" (such as rows).

Plugging in to Apache:

If your application is called 'mySpiffyApp' then add this to your httpd.conf:

    #####
    <Location /mySpiffyApp>
        SetHandler perl-script
        PerlHandler Web::Dispatcher
        SetEnv DispatcherConf /data/mySpiffyApp.cfg
    </Location>
    PerlRequire conf/startup.pl
    #####

The startup.pl script should 'use' all generated Controllers/Tables/Rows as well
as the dispatcher. This is because the dispatcher does not load modules of its
own accord because that would be a security risk (URI's map to module names)

For each application that your dispatcher dispatches to, you need to have your
own config file, the name of which is defined by the environment variable
"DispatcherConf". This configuration file defines things such as which database
is used for this app, where the templates are stored, and what the default
controller is called. An example is here:

    #####
    db_dsn="DBI:Pg:database=devicedb;host=127.0.0.1"
    db_username=myUserName
    db_password=myPassword

    templatePath="/data/templates/mySPiffyApp"

    defaultController=Devices
    ######


