Also see the Developer Documentation Home Page.
* JWorkTime - Time Sheet sample application
* Copyright Michael Hamilton, 2004.
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* GNU General Public License for more details.
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
* Copyright Michael Hamilton, 2004.
* Some included utility programs are distributed under the 
* terms of the GNU LESSER GENERAL PUBLIC LICENSE Version 2.1.
* $Id: README.txt,v 1.8 2004/05/18 09:02:50 michael Exp $

JWorkTime (Java WorkTime) is a simple time sheeting system.
It's primary purpose is to serve as a research platform for
the application of J2EE and related technologies.

JWorkTime is currently implemented using Tapestry, Hibernate,
and Jboss.  The JWorkTime application interfaces to the 
original "WorkTime" PostgreSQL database.  WorkTime is another
experimental application implemented using the Zope web 
engine (

JWorkTime is unsuitable for installation in open environments
such as the Internet where it might be exposed to untrustworthy
users. Although some features of JWorkTime use username and
password based authentication, user access to WorkTime is
mostly anonymous and unrestricted. Although JWorkTime includes
some examples of restricted access mechanisms, other parts of
the application may not be secure against misuse or tampering.
Should you decide to use JWorkTime 1.0 in a production environment
it is up to you to assess and implement any additional security
policies that your organisation might require.

Development File structure

  build.xml (sole ant build file)
    Important ant Targets:
      clean (remove generated directories)
      compile (generate, compile java)
      deploy (copy to jboss)
      doc (generate top level developer doc dir)
      eclipsepath (generate eclipse path from ant path)
      ear (create the ear in the lib dir)
      war (create the war in the lib dir)
  bin (generated)
  doc (generated)
    README.txt (this file)
    index.html (index to the following Developer docs)
    api (javadoc)
    cvshist (cvs2html)
    doxygen (doxygen class ref)
    screendumps (some sample screens)
  ejbgen (generated source - ejb xdoclet)
  hibgen (generated source - hibernate hib2java)
  lib (generated jars, wars, ears for deployment)
    config (non java source)
      ejb (specs)
      hibenate (specs - it's a legacy database -> define it with xml)
      web (all war related stuff)
        html (Tapestry page .html defs) 
        WEB-INF (includes Tapestry .page defs and .jwc component defs)
    doc (manually written docs - copied to generated doc)
      jworktime (JWorkTime Java sources)
        common (shared over entire project)
        db (persistence - hibernate)
        dto (custom data transfer objects - partially generated by hasmapDtoGen.awk)
        logic (server side bus. logic)
        rcmd (remote command pattern beans)
        rcmdclient (Business layer delegates that hide the ejb layer)
        web (Tapestry web UI code)
    util (non-java utilities written for JWorkTime)
      create_database.sql - initial load of data
      hashmapDtoGen.awk - generates DTO code from specially marked up java.
      doxygen - doxygen documentation generator configs.
Database setup (PostgreSQL)
   Create a database called worktime 
     with a user:  worktime 
     and password: worktime
     Main hibernate config file.
     If you decide to change the db username or password then also change
     them in this file (obviously this is not production ready).
   The util/create_database.sql will populate the tables to get you going.