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; ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access