samskivert notes -*- mode: outline -*-

* To do:
Modify JORA such that if it doesn't find a matching public field in the
persistence object, it looks for getter/setter methods that will handle
the encoding/decoding of the composite fields during persistification.

Fix message.properties single quote handling. In messages that have
translation substitutions ({0}, {1}, etc.), one has to use '' but in plain
strings they have to use \'. It should be one or the other.

Make MessageManager.resolveBundle more efficient because presently it
iterates over all locales looking for an exact match *every* time a
message is fetched.

Make SiteResourceLoader cache the resources it loads (locate and make use
of someone else's caching services rather than rewheeling).

* Minimal database services
** Requirements
- Connection management (configuration file mapping database identifiers
  to JDBC info; connection pooling if desired; automatic reconnection on
  transient error)
- Support for retrying transation on transient error
- Mechanism for ironing out database idiosyncrasies

* O/R database services
** Requirements
- Generate schemas from XML description
- Generate Java source from XML description
- Load object from table
- Extensibility (extend tables & objects)
- Partial loads (load subset of object fields)
- Partial updates (update subset of object fields)
- Joins (populate objects w/data from multiple tables)
- Multiple queries (populate objects w/data from multiple queries)
- Support multiple operations in the same transaction
- Support automatic transation retries on transient errors
- Extensible support for smoothing over DB vendor inconsistencies
- Handle OID assignment
- Support mapping of multiple classes to one table (ie. address contains
  zipcode object, address table contains all the information)
- Loose coupling between in memory objects and data in database
- Ability to load entire object and dependencies at once or as needed

** Postponed or explicitly ignored requirements
- Object proxies with just in time loaded fields (use partial loads instead)
- Cursor support

** Related projects (in some sort of order)
- Castor http://castor.exolab.org/
- Town http://share.whichever.com/index.php?SCREEN=town
- POEM http://www.melati.org/
- s2j http://www.bitmechanic.com/projects/s2j/
- COBRA http://www.kimble.easynet.co.uk/cobra/index.htm
- DbGen http://dbgen.sourceforge.net/
- JORA http://www.ispras.ru/~knizhnik/
- TableGen http://tablegen.sourceforge.net/
- DECCO http://www.khill.org/decco/
- Osage http://osage.sourceforge.net/
- DOGEN http://sourceforge.net/projects/dogen/

** Related information
- http://www.ambysoft.com/mappingObjects.html
- http://www.ambysoft.com/persistenceLayer.html
