Text-File Databases

Problem

You wish to treat a text file as a database.

Solution

Write an Accessor class that returns objects of the correct type.

Discussion

On the JabaDot web site (see Section 18.13) there is a list of users. Each user has a login name, full name, password, email address, privilege level, and so forth, and is represented by a User object. These are stored in the User database.

There are several versions of this database, so I have an abstract class to represent all the user data accessors, called UserDB . One of its main functions is to read the database; this can be done in the constructor or in the getUsers( ) method.

Of course, for efficiency, we want to do this reading only once, even though we may have many users visiting the site. So the design pattern (see the Introduction to Chapter 8) known as singleton (ensure one single instance exists) is used; anybody wanting a UserDB object does not construct one (the constructor is private), but must call getInstance( ). Unsurprisingly, getInstance( ) returns the same value to anyone who calls it. The only implication of this is that some of the methods must be synchronized (see Chapter 24) to prevent complications when more than one user accesses the (single) UserDB object concurrently.

The code in Example 20-1 uses a class called JDConstants (JabaDot constants), which is a wrapper around a Properties object (see Section 7.4) to get values such as the location of the database.

Example 20-1. UserDB.java

package jabadot; ...

Get Java Cookbook now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.