Apache Empire-db
Copyright 2008-2009 The Apache Software Foundation

The issues are categorized as follows:
[{C=Core}|{S=Struts Extensions}|{E=Examples}|{O=Other}
/{N=New Feature}|{B=Bug fix}|{I=Improvement}]

For more Information about a particular issue please visit
https://issues.apache.org/jira/browse/EMPIREDB

--------------
Release 2.0.5:
--------------
Major new features:
- Maven project management
- New database handlers for Apache Derby, H2, PostgreSQL
- New Examples showing WebService integration using Apache CXF
- Empire-DB Struts2-Extentions' dependencies updated from Struts 2.0.11 to Struts 2.1.6 

Issues resolved:
EMPIREDB-49 - [C/B]: The generation of table, view and query aliases now uses thread-safe counters  
EMPIREDB-46 - [C/B]: datetime-phrase issue in DBDatabaseDriverDerby
EMPIREDB-45 - [S/I]: Update struts extentions to accomodate latest struts release  
EMPIREDB-44 - [C/B]: error using apache derby and CLOB datatype  
EMPIREDB-42 - [C/I]: Extend DBReader to provide query results in a hash set  
EMPIREDB-41 - [C/I]: Deal with databases differences regarding SQL reverse function
EMPIREDB-40 - [C/B]: Postgresql cast problem 
EMPIREDB-37 - [C/N]: PostgreSQL "BLOB" type not exist but is possible to create a "bytea" column 
EMPIREDB-36 - [E/N]: New WebServices integration example using Apache CXF 
EMPIREDB-34 - [C/I]: Add support for stmt.executeUpdate with Statement.RETURN_GENERATED_KEYS instead of getPostInsertAutoIncValue() 
EMPIREDB-33 - [S/B]: BeanRecordProxy isFieldReadOnly wrong for new records 
EMPIREDB-32 - [C/N]: Unit tests 
EMPIREDB-31 - [E/B]: Advanced sample throws SQLException (wrong db user) 
EMPIREDB-30 - [C/N]: Support for PostgeSQL 
EMPIREDB-29 - [O/N]: Switch to Maven project management 
EMPIREDB-28 - [E/B]: SampleConfig in the demo application has invalid user 
EMPIREDB-27 - [C/B]: HSQLDB driver doesn't support conversion of value to DOUBLE 
EMPIREDB-26 - [S/I]: Extend HTMLTagDictionary to allow default cssClass for all input types 
EMPIREDB-25 - [C/I]: Implement getAttribute and setAttribute on BeanProperty class 
EMPIREDB-24 - [S/I]: Allow textarea to handle keypress and keyup events in order to check the maximum length of input 
EMPIREDB-23 - [C/B]: Maximum size is not passed to error message handler for DBErrors.FieldValueTooLong in DBTableColumn::checkValue 
EMPIREDB-22 - [C/B]: deleteReferenceRecords() does not sort the depending records by id 
EMPIREDB-21 - [S/I]: Allow empty record item parameter: The function getRecordKeyFromString should return null if the item string consists of the new item flag only. 
EMPIREDB-20 - [C/B]: Convert to char doesn't work for hsqldb 
EMPIREDB-19 - [S/B]: The form tag's "target" attribute is not rendered in HTML code 
EMPIREDB-18 - [C/B]: DBRecord.setModified(column, isModified) doesn't set the record state back from modified to valid 
EMPIREDB-17 - [S/B]: Checked attribute does not work on radio button tag. 
EMPIREDB-16 - [S/I]: Tag library definition does not allow java expressions for the cssClass attribute 
EMPIREDB-15 - [C/B]: Record fields are not cleared properly by createRecord. 
EMPIREDB-14 - [S/I]: Allow javascript code on anchors 

--------------
Release 2.0.4:
--------------
EMPIREDB-13 - [S/I]: Add column attribute to radioButtonTag and onClick attribute to menuItemTag 
EMPIREDB-12 - [S/I]: Allow reloading of current record from the session 
EMPIREDB-11 - [S/I]: WebAction.clearActionErrors does not remove Error from the session 
EMPIREDB-10 - [S/I]: Allow setting of record property name with control tag 
EMPIREDB-09 - [O/I]: Move build.xml from src directory to root directory. Change distribution scripts to meet apache incubator requirements.  
EMPIREDB-08 - [C/I]: Restrict access to DatabaseDriver object for all subclasses of DBColumnExpr to the addSQL function.  
EMPIREDB-07 - [C/I]: Add support for CASE WHEN expression with new class DBCaseExpr.java  
EMPIREDB-06 - [C/I]: Support for quoting of table, view and column names added.

--------------
Release 2.0.3:
--------------
EMPIREDB-5 - Added missing ASF headers. See JIRA for further information.
EMPIREDB-4 - Fixed several DBDatabaseDriverHSql bugs. See JIRA for further information.
EMPIREDB-3 - Added "useQuotes" property to DBColumn.
PRE-114: - All package names changed to org.apache.empire.

--------------
Release 2.0.2:
--------------
PRE-113: - NEW FEATURE: class BeanRecordProxy<T> implements the Record interface of any given JavaBean object.	
PRE-112: - NEW FEATURE: classes BeanDomain, BeanClass and BeanProperty allow metadata defition for JavaBean objects using the Column interface.
PRE-111: - DBDatabaseDriverOracle: new implementation for checkDatabase
PRE-110: - Method getSourceColumn added for data.Column
PRE-109: - DBRecordData: Type conversion moved to ObjectUtils
PRE-108: - NEW FEATURE: createView implemented for all Database Drivers
PRE-107: - DBView: canUpdateReocrds = Flag for updateable and non-updateable Views;

--------------
Release 2.0.1:
--------------
PRE-106: - NEW FEATURE: DBDatabaseDriverMySQL:	Driver for MySQL 5 added.
PRE-105: - NEW FEATURE: DBColumnExpr: Added Support for REVERSE() and INSTR() SQL Functions
PRE-104: - BUGFIX: DBRecord::getFieldValue(): Field Access to invalid DBRecord returned Boolean FALSE instead of null.
PRE-103: - DBDatabaseDriver: Function isSupported() and getPostInsertAutoIncValue() added
PRE-102: - DBColumnExpr: Substring function now excepts column expressions 
PRE-101: - DBSQLScript: New class to replace StringBuilder for DDL Script generation. See also DBDatabase::getCreateDDLScript()
