INTRODUCTION
ABCD is A Better CD Designer. The idea grew out of a frustration with
trying to organize a snowballing backlog of digital photos so that
photos could be both accessible for my own use and easily shared with
others.
Most photo organizers keep photos by file names. Some better ones
associate them with keywords, which is better, but still depends on
choosing lots and lots of keywords without getting lost in them all.
An earlier design for ABCD actually used a database to store lots of
facts about each photo: who, what, where, when, why, and how. This way
a simple application could find photos fitting any reasonable
criteria. This design had potential, but has one big drawback: it is
hard to share photos with people who are not running the same
database.
ABCD solves this problem by creating a directory tree and storing
photos in it. Each photo can be stored in multiple places in the
directory tree. For instance, a picture of my son with his grandmother
from Christmas 2005 could be accessed through paths 2005/Christmas,
Families/RYoung/Aaron, Families/Young/Mary, and any other categories
it might belong in. The tree is used to generate HTML code, which can
be viewed by any browser.
ABCD consists of 3 pieces. At the core is the XML database, which
stores the photo information. Photo information includes the directory
tree and all the files and references associated with it, along with
optional data attached to all of them. The front-end editor is used to
create and edit a database, and the back-end HTML generator uses HTML
template files to translate the database into HTML code.
ABCD was designed with the following goals:
- provide a relatively simple design for storing photos with associated data.
Make sure photos are easy to locate.
- store data in a standard, (relatively) human-readable form, so
other applications can edit and access it
- make it easy to combine smaller databases into a larger one that
will fill a DVD
- be expandable to provide custom handling for other types of files
besides just photos (mp3, avi, doc, etc.)
- have a very flexible way to generate HTML code from the database,
so that the same database can be used to output a CD, website, or
any other desirable format, and accessed by people without any
special software
The goals were addressed as follows:
- provide a relatively simple design for storing photos with associated data.
Make sure photos are easy to locate.
Folder tree paradigm familiar to all computer users. Photos are stored just once
but can be accessed
in multiple locations in the folder tree, making locating a particular photo
simple.
- store data in a standard, (relatively) human-readable form, so
other applications can edit and access it
Data stored in an XML database, so it can be edited by hand, or other
applications can easily be written to use the same database.
- make it easy to combine smaller databases into a larger one that
will fill a DVD
Merge function and drag-and-drop interface to combine and edit databases.
- be expandable to provide custom handling for other types of files
besides just photos (mp3, avi, doc, etc.)
Written in OO Java, with Item object expandable to different file types
- have a very flexible way to generate HTML code from the database,
so that the same database can be used to output a CD, website, or
any other desirable format, and accessed by people without any
special software
Output controlled by HTML template files, a combination of standard
HTML code and tags written in the IC scripting language
REQUIREMENTS
Java version 1.6 or higher
SAMPLE OUTPUT
Here is a sample of the output of a
project. These are a few photos from a trip to Mongolia a few
years ago. I shrunk the pictures so they would not take up too much
space on the web, but you can get an idea of the organization from
these pages.
email: 
Features
Usage: Data Editor
Usage: Generating pages
Main page