5. Implementation

5.1 Development

The development of ADBV has involved high learning curves at times. This all began with learning how to program in Java, and in particular, how to use IBM Visual Age for Java (VAJ), and create and access databases using IBM DB2 along with JDBC [12]. This knowledge was developed from previous experience in C++ and the Microsoft Access database. The transition from C++ to Java was not too great, but the specifics of calls to JDBC, especially alongside DB2, were more difficult to learn at times.

Apart from this, most of the Java code was not too difficult to write or find out about how to write, and so the development has been quite smooth throughout the project. However, during this development two major problems have arisen which did slow the progress of the project.

The first was the problem of loading a Java application into memory and executing it. This needed to be done, so that the viewers for each template could be loaded and executed. The problem was solved by extending the java.lang.Classloader class (ADBVClient.ADBVClientClassLoader) to load the viewer application into memory and then create a new instance of it.

The second problem was how to save and retrieve the Java application to and from the BLOB field within the T_CLASSES table. This problem took a lot longer to solve and stopped development for a few weeks whilst pleas for help and ideas were sent out to many different people. This problem was finally resolved though, using java.io.BinaryStreams and java.sql.PreparedStatements, which allowed for the transfer of large amounts of binary data to and from the database.

5.2 Listings

The accompanying disk contains all source code listings for the Abstract Database Viewer. (See Appendix 2 for information about the accompanying disk.)

5.3 User Documentation

The User Documentation is presented in Appendix 3

5.4 System Maintenance

The source code is well documented, and JavaDoc has been supplied and created. With reference to this and the data flow diagrams and data dictionary presented in Appendix 1, along with the data structures and object diagrams presented in Section 4 above, it should be possible to maintain the packages as they stand.

Currently, the system will only allow the use of template databases running on IBM’s DB2 database. When the template tables are created in the function checkTablesExist in class ADBVTool.ADBVTool, the data type BLOB is used to create one of the fields in table T_CLASSES. This will need to be changed for any database that does not understand the BLOB data type. In addition, when this field is created, it has a maximum size limit of 64Kb. To update this value, change the creation statement in checkTablesExist and update the maxBLOBsize constant defined in class ADBVTool.ADBVToolViewers to the same value.

A similar problem with accessing databases is that of doing so by the client user program, as the system is only distributed with the JDBC drivers necessary for accessing DB2 databases. It has been left to the viewer application developer as to how to provide the necessary drivers for accessing the data databases.

The complete package has been designed using JDK v.1.1. It is believed that the package will not work under v.1.0 or v.1.2, as certain event models are different in each case, and errors will occur throughout if the programs are not executed under v.1.1.