This is to report my progress with respect to the project requirements
for the midterm evaluation.
Project Requirements for first term:
1. Evaluate DB alternatives and select one
Various open source embedded DBMS alternatives like Apache
Derby,HSQLDB and H2 have been evaluated and HSQLDB selected after
extensive discussion on this mailing list.
The choice was made primarily due to the following:
A. High performance (Highest among all embedded relational DBMS)
C. Good documentation and support
D. Already being used successfully used in projects like open office
2. Implement a DB bundle that could be reused by others
A new database service has been designed and implemented as an OSGi bundle.
This service provides the developer access to the database while
automatically handling things like establishing and closing database
connections,preventing duplicate connections etc. It provides support
for simple as well as precompiled SQL queries (which also prevent SQL
injections) and allows use of database transactions in a DBMS
independent manner as far as possible.
This service can be used to store any kind of data in the database in
a easily by procuring a reference to this service,creating a new
connection to the database and using the DatabaseConnnection object
obtained to execute SQL on the database.
3. Provide the actual implementation of the history service
A new implementation has been developed for the history service using
the database service for storage of history records.
No changes have been made in the interface and it has been ensured
that the new implementation is compatible with the existing XML based
implementation so that the other services dependent on this service
(CallHistory and MsgHistory) can work unchanged.Also,to counter SQL
injection attacks precompiled SQL queries have been used.
This implementation may also be used as an example on use of the
4. Make sure all unit tests continue passing successfully
Modifications have been made such that all relevant unit tests i.e.
for History Service, Call History Service and Message History Service
Project Requirements for second term :
1. Provide DB configuration options in the config form
This requirement has been scrapped as it was deemed
unnecessary.Instead, it was suggested by Emil that it is much more
important that I develop code to provide functionality for importing
existing history records in the new implementation.I have added the
required functionality in my History Implementation.
2. Perform a comparative evaluation of the existing and the new
3. Implement the meta contact list over the same DB
I am currently working on this requirement.