1. GeneStructure classes

 

Exon, ExonProtein and Intron subclass abstract GeneStructure (Java, API) class.  GeneStructure implements the Comparable interface.  This helps us with sorting Exons and ordering them from lowest to highest sequence index.

 

 

2. The GUI classes

 

 

ExonController (Java, API) AlignmentViewer, ExonProteinViewer, and ExonViewer

 

 

ExonController most of the work to manage the Exons such as adding, combining  and removing Exons, zooming into and out of the sequence area.  It also does work to communicate to the server to through the Controller class obtain sequence and protein info, and run models on the server.

 

The ExonViewer class is used for indicating the current Exon structure selected or being modified.

 

The AlignmentViewer presents a model-based alignment in 50 character width lines.

 

The ExonProteinViewer is used compare the target protein and the Exon translated proteins concatenated together but displayed in alternating colors.

 

 

3. Controller classes

 

These consist of the Controller and CgiClient (Java, API)  classes.  These encapsulate and centralize communication back and forth to the server.

 

 

 

Three Packages:

 

 

1. model, util and vis.

 

The model package contains the GeneStructure classes: Exon, ExonProtein, GeneStructure, and Intron.

 

The util package contains the utility classes:  BaseToProtein, Controller and CgiClient.

 

The vis package contains the viewer classes: AlignmentViewer, ExonController, ExonViewer, SequenceViewer and Interface classes.

 

Java Documentation:

 

The following documentation I generated by implementing Java’s javadoc.  Here we can view the API for all packages and classes.

 

 

The Applet:

 

The applet class GeneTool (Java) does little more than instantiate and contain the viewer classes and pass server parameter to the controller class.  It's kept very simple.

 

The gene.html file contains the following information to set up the applet and register it with the server.

 

 

The Server:

 

In our case we can utilize either perl-cgi or servlets to perform database access.  There are two servers (plantsp and reagent).  Plantsp runs perl and reagent runs a java application server for jsps and servlets.

 

In either case, the interface to the controller classes remains the same.  It can post to the perl-cgi or the servlets identically.

 

Using the Servlet based paradigm, there are two servlets, getProteinInfo and getAlignmentInfo.  Both of these use java beans as the data access layer to access the mySQL DBMS via JDBC.