Project Specification

You are required to use an object-oriented design for the following specified system, and implement the system using Java Standard Edition 6 or later.

You are required to design and develop a single-user, standalone software system to maintain a simple directory of insurance companies for an independent insurance broker. A database file and Java interface specification are provided. The database file is a flat, delimited text file with one record per line. The text database file is named insurance.db. The Java interface specifies the strict ‘data access’ protocol that your design must adhere to. This is provided by the Java source file DAO.java.

Your task is to design and develop a software system with at least the following two tiers:

  • A data tier which must provide an implementation of the protocol specified by the DAO interface.
  • A presentation tier which provides a client/user graphical user interface using the Java Swing toolkit.

You are expected to use Java packaging to partition your code according to the number of tiers in your system.

The database

The data file format is one record per line, with each line containing the following six data fields:

  • Company name
  • Telephone number
  • Web address
  • A list of types of insurance cover
  • Broker percentage
  • General description

The structure of the provided text database must not be altered. This means that any other data format, such as binary files, SQL/JDBC, XML or serialised objects are not permissible. Failure to adhere to the above instructions will result in an automatic failure.

Database persistence

On exiting each session with the application the current state of the data records must be persisted to the text database file. That is to say, if any records have been deleted, created or modified during the execution of the application by the User, then these changes must be reflected in the persisted database file, and should be visible the next time that the application is run.

The data access protocol

You should try to complete all of the functionality defined in the DAO interface. Failing this, you should try to complete as much functionality as possible. All data access functionality should be thoroughly tested.

It will be preferable to partially complete the functional requirements of the data access protocol so that the implemented functionality is tested and working correctly than to attempt to complete all functionality specifications but fail to get them working correctly.

Note that the data access protocol specifies two custom exception classes that should be employed to report problems under program control without exiting the system.

The User interface

The Graphical User Interface (GUI) must be developed using classes from the Java Swing package, and must not be designed using a form-based drag-and-drop GUI design tool.

That is to say, auto-generated code is not permissible for the GUI component.

  • When started, the GUI should present the list of records currently stored in the database to the User. This list must be displayed using a JTable component.
  • The GUI should facilitate all of the behavioural requirements as specified in the data access protocol. That is to say, create, delete, update, select (and display an individual record) and search records as specified below.
  • On exit, the system must persist any updates to the database.

The GUI component must conform to the following specific search requirements:

  • The client/User of the GUI is required to enter search criteria to find matching data records on the insurance cover type field only. The User should be able to enter multiple search string patterns and be given the option to search using a Boolean combination. For example, the User should be allowed to search on ‘Buildings’ AND ‘Contents’. Alternatively, the User should be allowed to search on ‘Buildings’ OR ‘Contents’. In either case, the GUI should enable the User to select the search type and the correct matching records should be presented to the User.
  • The GUI must present search results using a JTable component

Other notes:

  • The GUI must not employ the GridBagLayout layout manager

Documenting your code

In addition to the basic implementation, you are also required to complete source code documentation generated using the Javadoc tool and generate complete HTML source code documentation. This HTML code documentation must reside in its own sub-folder called “docs”.

Academic Honesty!
It is not our intention to break the school's academic policy. Posted solutions are meant to be used as a reference and should not be submitted as is. We are not held liable for any misuse of the solutions. Please see the frequently asked questions page for further questions and inquiries.
Kindly complete the form. Please provide a valid email address and we will get back to you within 24 hours. Payment is through PayPal, Buy me a Coffee or Cryptocurrency. We are a nonprofit organization however we need funds to keep this organization operating and to be able to complete our research and development projects.