Free Library System

Copyright ã 1999 Dave Dunkin

This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

Purpose

The Free Library System (fls) is a system for maintaining a database of items and borrowers of a library. The goal is to provide simple yet powerful and flexible ways to:

  1. Search the catalog for items
  2. Provide circulation functions
  3. Communicate with other libraries running fls

Fls is powerful through its flexibility because it is open source (under the GNU Public License) and therefore intended to be extended to fit more closely to individual applications, while still fully functional "out-of-the-box". The goal is to be simple first and flexible second.

Design Overview

Fls is a three-tier, object-oriented database front end, implemented in Java. Java was chosen because it is easy to develop in, yet extremely powerful. It provides the database and network connectivity necessary to meet the goals of the project. It is also platform independent and is therefore portable between many operating environments including Microsoft Windows 9x/NT and the various flavors of UNIX/Linux.

The system is three-tier to provide a level of abstraction between the fls API and the database all data is stored in. The backend may be any SQL database system with appropriate JDBC drivers. The middle tier provides a way for data objects to be manipulated and moved to and from the backend without the client side knowing anything about the database. Most of the manipulation of data is done in the middle tier, allowing for easy development of clients. The middle tier also provides many services central to the operation of a library including all circulation. The client side may be a Java applet, providing a rich graphical interface, or servlet, providing a thin web interface. The client may also be a Java console application suitable for telnet. Because the system is open source, the possibilities are endless.

The system is object-oriented in that items and borrowers are represented by Java classes. These classes all have an identification code and a reference to the library that owns them. All information associated with these objects may exist in the object at runtime. The information is not guaranteed to be accurate or up to date, but may be brought up-to-date at any time. The core class StdLibraryObject contains the id and library reference. Two core classes (Item and Borrower) extend StdLibraryObject and may be extended themselves to provide additional information about the item or borrower types that they represent. The Book class is a core class that extends Item and contains additional information associated with books. These objects are manipulated by and transparently passed between the middle and client tiers.

Phase Implementation Scheme

Phase 1

Phase 2

Phase 3

Object Identification

An fls object id contains three important pieces of information:

  1. The type of object
  2. The owning library of the object
  3. The object number

The information may be retrieved from the single id through the use of a key. The default key uses the following format for the id:

The IKey interface is provided to allow variance from the default behavior.

Database Organization

See the database design doc for more details.

Circulation

Each library will keep a record of items it loans out. Each library will keep a record of libraries each borrower has loans from. Loan information is stored in a table as described above.

Client Applet

The client applet will communicate with the middle tier through RMI. It will be a modular system with a container to contain all the modules. The modules will initially consist of a search module, and circulation module, and a record maintenance module.