Project Manager Design Document


Keas Design Project Manager. (Project Webpage.)

The Project Manager (PM), will be both an online and desktop utility, written in Java and storing the project information inside a SQL database. The purpose of the PM is to track To Do, Changes, Features, and Project Descriptions, as well as version, site URL, and contact information. The PM will have some fairly unique features, will will be discussed below.

Work flow will gollow this basic path: The Project manager will enter a new project into the SQL database. The desktop app (DA) will then read the SQL DB and extact the relevant information. This will be displayed in the DA's Project Viewer. The Project is selected from a drop down list of projects, the relevant project data is displayed below it.

Once satisfied with the day's work, the user can then publish the SQL DB to the web. The target web will need a MySQL database, and a couple of scripts to load the data into the database, and then allow viewing of the data only. Research into Java and Databases shows that Applets cannot run connections to databases while on the internet. Bad security risk. So our solution is to publish the data, and provide some basic scripts to load, and then view the data. The scripts will need some modification in order to meet the individual's server requirements. But all of the necessary variables will be at the top of the script, surrounded by helpful comments.

If you have any questions or comments, please feel free to use the feedback form:

Document Revision: 3.0.2003.12.30

Key Elements.:

The primary elements of the PM are:

Components > Desktop:

  1. Swing interface with additional ``look n feels''
  2. MySQL database
  3. Java FTP, to transmit SQL db file.
  4. HTML 3.2 compliant viewer for projects.
  5. Document style interface (think word processor with multiple documents open.)

Components > Web:

  1. Scripts to Create/Load/View database. Perl, Python and PHP are all candidates. They are going to be simple scripts though. Nothing flashy about them.
  2. Drop down to choose Project
  3. Search feature to pull relevant items(Possible. Not 100% committed to this).

Module Descriptions:

The core application is made up of several classes (or modules). Each one containing a basic function. Adding or Editing items and projects, viewing the projects, removal of the project (along with it's items) and of course the database management.

Main Window:

First, the PM will be a java based application. This allows for cross platform capability and what we consider to be a unique layout. The main window is a JDesktop, which by itself is a hollow window. Each of the other modules will become JInternalFrames, or windows within the Deskotp window. This gives you a layout similar to a word processor with several open documents. Each sub-window can be minimized, covered by another, or closed. There will be a standard menu bar across the top of this window, allowing project additions, database maintenance, help browsing and other functions. A toolbar is another possibility. When the application is started the Project Viewer window(document) is invoked.

Project Viewer:

The project viewer is the first internal window displayed. This window defaults to a combobox drop down, where the projects are listed. Choosing one will query the server, and the resulting project data is displayed in a series of tables just below the combobox. At the very bottom of this sub-window is a text entry field for URLs. The main portion of the window is HTML 3.2 capable, and as such can display html pages. It points by default to the home page of the project.

Project Creator:

The project creator window comes into existance when the user clicks Project > Add Project. Here are the base fields for a project. Name, Version, Author, URL, Contact 1, Contact 2, and Date started. Once the fields are filled in to the user's satisfaction, clicking add will create the new project. We need to work out just how to auto refresh the project list once a new project has been added.

Project Item Creator:

The project item creator behaves quite like it's bigger counter part the project creator. However it is responsilbe for adding the various updates, such as Feature List, To-Do items, and Changes. Some of the information is pulled from the current project, namely the version and project name. The date is pulled from the system, while the type (Feature, Change, Todo) and description are user supplied. When add is clicked the date is stamped on the submission, then it's sent to the databsae, and the form is cleared for the next item.

Web Scripts

The second module is a web module that will read a database, and sort by project, the category (to do, changes, and features.) Further it will allow visitors to search for specific features/changes/to do. Implementing some kind of connection into the bug tracking database is a definite possiblity.

How things work (Desktop):

The user will have a Java Swing interface, that covers a SQL database, and two tables within the databse. The first table ProjName will house the Project's Name, Version, Author, Contact 1, Contact 2, Date started and Description. Table 2, ProjItems will house, Name, Version, Type (to do, feature, change), Date added, and text. New research has steered this project back to a standard SQL database (MySQL for now, other SQL types may be supported later.) This will add some steps to the publishing process, and the web based viewing. These steps will be noted.

When the application is launched, it will query the ProjName database in order to pull together a list of Projects. These will be used to seed the list in the main frame. Choosing an item from the list will generate an HTML table based off of a SQL query. The elements are Feature, To-Do, and Changes and the query will sort them by Version (descending).

The Menubar will house four main menu elements. File, Project, Database, and Help. Each element will have some sub-elements. File will have close and preferences. Help will have About and Help. Then comes Project. Project will have Add New Project, Add New Item, Delete Project, Edit Project. The Database menu will have: Create New Database (including tables), Delete Database (including Tables), Publish Project.

Sample SQL Query (to populate main list.):

SELECT Name,Version FROM ProjName; Is the query. This will return several rows of data. That data will be retrieved directly from the database and into a loop to build the List. This should prove shorter than reading the data out of the DB and into an array, and looping over the array.

Sample SQL Query 2 (to populate text box.):

SELECT * FROM ProjItems WHERE ProjItems.ItName = ProjName.Name ORDER BY ItType DESC; This will be used to pull the items specific to One project, and display it in the right hand text area.

Publishing and Reading the Database (WWW):

As noted above, the database backend has swung back to MySQL for now. What this means is that there will be additional steps to publish the data, and view it on the web. The steps are:

  1. Choose Database > Publish from DA's menu.
  2. Application will run an export query, to publish the database tables into two files.
  3. Applicaiton will then ftp the two files up to it's web site.
  4. Application will then execute a CGI program to load the data into the Databse (deleting the previous data and loading the updated material) This is a possible option. We may just have the data transmitted up to the server, and leave it there, waiting for the simple scripts (mentioned above) to be run.
  5. Visitor opens the Project viewer web page, Database is queried. Simple script here too. Messages and disclaimers telling people to build their own viewers, based on these.
  6. Operation is similar to the loading of the application, displaying a list of projects. Guests will be able to view all, one or several projects at a time. Searching based on key words etc is also a possibility.

Why Java?:

Writing this application in Java gives us the flexability to perform several feats with little effort. The desktop application will be able to store data in a very usable format independent of platform and database access. the web portion will have an applet that can access the SQL db, independently of it's host server's ability to provide the java classes for SQL access. The precompiled applet (written on a computer with SQL and the necessary Java modules...) should work without a problem. Using Java also gives us the cross-platform capability that is desirous in today's world. Java natively houses the FTP ability, as well as a cross platform GUI. All these elements combine to a portable, flexible application that should not be too resource intensive, and usable by virtually everyone.

The main window is comprised of a menu bar, ComboBox, SplitPane (which may go, or switch to horizontal layout) and a TextArea (which we are committed to changing to a JeditorPane.) The JEditorPane will be useful for the lightweight html used to format and display results from the database. It will also be able to link out to the project's website (if available.) Note-> Full url to html page will be required. Unless of course the page is one of the server defaults (index.htm,html,cgi, home.html etc..) The framework application is in progress now. Screen Shots.


S. F. Bell, <>
AIM: indyr5k
ICQ: 4365721
 Project Manager Design Document