Changes from Alpha to 1.0 Release FEATURES: ========= This is a complete(?) list of the features added between the alpha and 1.0 releases. Mapping Language: * Added EmptyStringIsNull element to mapping language. For details, see the DTD. * Added DateTimeFormats, Locale, and Patterns elements to the mapping language so that a map can specify the format of dates, times, and timestamps. For details, see the DTD. * Added Options and Maps elements to the mapping language for structure. DOMToDBMS: * Added COMMIT_NONE (application must call commit) and changed default commit mode to COMMIT_AFTERINSERT. * Use cached of prepared INSERT statements instead of continually repreparing. DBMSToDOM: * Use cached of prepared SELECT statements instead of continually repreparing. (SEE IMPORTANT NOTE BELOW.) Map: * Added serialize method to serialize a map to an OutputStream. * Added getCreateStrings method to get CREATE TABLE statements. Package de.tudarmstadt.ito.schemas.dtd: Package de.tudarmstadt.ito.schemas.converters: * New packages for doing DDML<=>DTD conversion and representing DTDs as objects. MapFactory_DTD: * New map factory to generate Maps from DTDs or schemas. BUG FIXES: ========== This is a complete(?) list of the bugs fixed between the alpha and 1.0 releases. * Data conversions fixed. Some conversions previously threw exceptions. * Map compiler failed on some maps due to problems processing related classes. Fixed. * COMMIT_AFTERINSERT now works. (Code previously commented out.) * NullPointerException if an element type-as-class had child elements but none were mapped. Same problem if it had attributes but none were mapped. IMPORTANT! ========== This is a list of things you really need to know about: * Alpha mapping documents are no longer valid according to the 1.0 DTD. However, they can still be compiled by MapFactory_MapDocument if a non-validating parser is used. * If you want to take advantage of the cache of prepared SELECT statements, see the comments in Map.checkInSelectStmt. CODE CHANGES: ============= This is a rough listing of what has changed in the code. If you have modified the alpha code yourself and want to know exactly what has changed, please run a diff over the relevant files. Files not listed below have not changed. domutils/NameQualifier.java * Added SEPARATOR constant. domutils/NameQualifierImpl.java * getQualifiedName now uses NSName.getQualifiedName xmldbms/ClassMap.java * Added name variable. * Allocate Hashtables for attributeMaps and subelementTypeMaps when the class is constructed. xmldbms/DBMSToDOM.java * Various functions check select statements in and out. * processClassResultSet, processPropertyResultSet and processRelatedTables now close result sets. * Instantiates Parameters instead of calling static methods. * getDataValue uses the date/time formatters. * populateRow treats empty strings as nulls, if requested. xmldbms/DOMToDBMS.java * Changed default commmit mode to COMMIT_AFTERINSERT. * Added COMMIT_NONE. * Calls commit on Map object instead of Connection object. * Uses instanceof to test map type instead of try/catch. * setPropertyColumn treats empty strings as nulls, if requested. * Checks insert statements in and out. xmldbms/Map.java * Added serialize method. * Maintain caches of prepared INSERT and DELETE statements. * Commit now done through Map. * Added global variables for empty-string-as-null and date / time formatters. * Added finalize() method to close all open prepared statements. * Sort results in descending order for (supposedly) better performance in DBMSToDOM. * Added setConnection method and initColumnMetadata methods. * Moved methods for setting metadata from TempMap. xmldbms/Parameters.java * Complete rewrite. xmldbms/mapfactories/MapFactory_MapDocument.java * Added code to process new elements. * Added code to check if value returned for a non-existent attribute is an empty string instead of a null. This works around a bug in the Oracle parser. xmldbms/mapfactories/NSName.java * Moved to utils package xmldbms/mapfactories/TempClassMap.java * Changed elementType variable to name. xmldbms/mapfactories/TempMap.java * Added code to find maximum number of active statements and whether commit deletes prepared statements. * Fixed bug where some related classes through errors (see mappedTables). * Added globals to support new elements. * Moved getNSName to NSName. * Uses instanceof to test map type instead of try/catch. * Moved methods for setting metadata to Map. xmldbms/mapfactories/TempPropertyMap.java * Changed property variable to name. xmldbms/mapfactories/TempTable.java * Changed addPropertyColumn to mapPropertyColumn xmldbms/mapfactories/XMLDBMSConst.java * Added constants for new elements and attributes * Made all constants public * Added byte arrays for use in output utils/NSName.java * Moved from xmldbms/mapfactories * Made public * Change plain to local * Added new constructor and various public methods (getPrefixedName, getQualifiedName, and getNSName).