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.