Apache Empire-db
Copyright 2008-2012 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.4.0:
--------------
** New Feature
	* [EMPIREDB-140] - New Empire-db JSF extensions project (empire-db-jsf2) allows simplified web development with JFS 2.x implementations. An example project is also provided.

** Improvement
	* [EMPIREDB-149] - Simplified access to foreign key relations (see DBTable.getForeignKeyRelations())
	* [EMPIREDB-145] - Allow using DBQuery with UNION and INTERSECT commands
	* [EMPIREDB-144] - Allow generation of update commands with join expressions  
	* [EMPIREDB-143] - Provide access to native error message for SQL exceptions
	* [EMPIREDB-142] - Allow compare expressions to be wrapped with parenthesis
	* [EMPIREDB-141] - Miscellaneous small improvements
	* [EMPIREDB-138] - Optimized serialization by making database and rowset references transient

** Bugfix
	* [EMPIREDB-151] - DBDatabaseDriverHSQL fails on selection of NEXT VALUE
	* [EMPIREDB-150] - <sample:formInputRow> component failed to parse/resolve the "for" attribute 
	* [EMPIREDB-146] - Blob data type is not working with postgresql under v2.3
	* [EMPIREDB-147] - BLOB datatype under empire 2.3.1-SNAPSHOT

--------------
Release 2.3.0:
--------------
** New Feature
    * [EMPIREDB-79]  - Allow specification of delete action for each DBRelation (ON DELETE CASCADE)

** Improvement
    * [EMPIREDB-137] - Extend Record and Column interfaces by Record.isReadOnly() and Column.validate() methods
    * [EMPIREDB-133] - Simplify use of DBCommand:DBCommandParam class
    * [EMPIREDB-129] - Allow expression based indexes
    * [EMPIREDB-126] - Various small improvements, like new method overloads, code and javadoc cleanup, etc.
    * [EMPIREDB-123] - Allow to specify the character column length in bytes (Non-Unicode) or chars (Unicode) for DDL generation

** Bugfix
    * [EMPIREDB-136] - DBCommand.clone() modified to produce an independent clone of the original command.
    * [EMPIREDB-135] - Suppress column alias inside concatenations
    * [EMPIREDB-132] - Fix support for CLOB data type in Postgre SQL
    * [EMPIREDB-130] - Prepared Statements: Convert Enums to String to avoid SQLException
    * [EMPIREDB-128] - Velocity Template Table.vm does not handle tables without primary keys
    * [EMPIREDB-124] - Added missing Serializable on class commons.Options and commons.OptionEntry
    * [EMPIREDB-122] - Fixed support for Update/ Insert of Chinese characters with non-prepared statements
    * [EMPIREDB-121] - Fixed lower case expression for SQL-Server (lower instead of lcase)
    * [EMPIREDB-120] - Fixed FieldIllegalValueException for DataType.DATETIME and DataType.DATE if the value is empty (but DBTableColumn is nullable)

--------------
Release 2.2.0:
--------------
** New Feature
    * [EMPIREDB-110] - Add support for reverse-engineering of foreign-key relationships

** Improvement
    * [EMPIREDB-99] - Remove optional support for old style error handing
    * [EMPIREDB-103] - reduce getDDLScript duplicate code
    * [EMPIREDB-115] - Add parenthesis to the first select of a union/ intersect and allow driver to implement limit() and skip()
    * [EMPIREDB-116] - Add support for multi column foreign-keys to code generator
    * [EMPIREDB-117] - Allow Table, View and Column prefixes in generation process

** Bugfix
    * [EMPIREDB-104] - Create DDL Script on MSSQL should state not CREATE DATABASE if already exist
    * [EMPIREDB-105] - Support of long integer fields on MS SQL Server
    * [EMPIREDB-107] - Limit function for postgres sql not implemented
    * [EMPIREDB-109] - Missing conversion for Type double in ObjectUtils.convert
    * [EMPIREDB-113] - Should preserve the decimal digits of DECIMAL columns
    * [EMPIREDB-118] - Prevent columns to be added twice to a table or view

--------------
Release 2.1.0:
--------------
Major new features:
- New and improved utilization of prepared statements which can be enabled / disabled by database property. 
- Use of SLF4J instead of log4j 
EMPIREDB-101- [C/I]:  Create DDL Script on MySQL should state CREATE DATABASE IF NOT EXISTS
EMPIREDB-100- [C/I]:  Support of long integer fields for H2, Derby and MySQL
EMPIREDB-97 - [C/I]:  Added serialization to Empire-DB objects
EMPIREDB-95 - [C/I]:  Code optimizations/cleanup and javadoc improvements  
EMPIREDB-94 - [C/B]:  Added Postgre and Derby bigint support
EMPIREDB-93 - [C/B]:  DBRowSet.updateRecord log output does not report column name properly
EMPIREDB-92 - [C/I]:  Switch to Apache Parent pom version 8
EMPIREDB-91 - [C/I]:  Increase and optimize the use of prepared statements
EMPIREDB-81 - [C/B]:  Endless loop in DBSeqTable#getNextValue() fixed
EMPIREDB-77 - [C/I]:  Removed the Log4J compile-time dependency by switching to slf4j (same also EMPIREDB-38) 
EMPIREDB-38 - [C/I]:  Switched from log4j to slf4j

--------------
Release 2.0.7:
--------------
Major new features:
- Switched to latest struts version and added portlet support to struts2 extensions
- Support for limiting the number of rows returned by a query.  
EMPIREDB-90 - [C/B]:  The "createRecordProperties" switch in the codegenerator's configuration works not properly.     
EMPIREDB-89 - [S/I]:  Update Empire-Struts-Extensions to Struts 2.2.1 and provide Portlet Support     
EMPIREDB-88 - [C/B]:  CodeGenerator generates uppercase fieldnames where empire code expects lowercase names     
EMPIREDB-87 - [C/I]:  Use EXTRACT() function to extract the day, month or year from a date column in Oracle  
EMPIREDB-86 - [C/B]:  Correct some typos in the javadocs     
EMPIREDB-85 - [C/I]:  Remove declarations of unused dependencies (from pom.xml)     
EMPIREDB-84 - [C/B]:  Typo in section "Empire-db and Struts2 � Forms and controls"     
EMPIREDB-82 - [C/B]:  Cloning does not work if DBTable's column (DBColumn) are declared final (as per shipped examples). Causing table alias in resulting SQL queries to be wrong     
EMPIREDB-62 - [C/N]:  Allow to set limit for maximum number of rows returned     
EMPIREDB-60 - [C/B]:  Cloning of columns is restricted to current class     

--------------
Release 2.0.6:
--------------
Major new features:
- Code-Generator allows generation of Data Model code files for existing databases 
- Maven plugin for DB-Code-Generator  
- New example to demonstrate interoperability between Empire-db and Spring 
- Provided jars are now OSGi compatible

Issues resolved:
EMPIREDB-76 - [C/B]:  Erroneous translation of DataType.DOUBLE for postgres
EMPIREDB-73 - [C/N]:  Spring interoperability example provided by Eike Kettner     
EMPIREDB-72 - [C/I]:  Change various private modifiers to protected to allow overrides     
EMPIREDB-71 - [C/I]:  New enumeration DataMode for column classification as a replacement for the required flag        
EMPIREDB-70 - [C/B]:  Corrected MySQL indentifier quote     
EMPIREDB-67 - [C/I]:  Allow selection of (Mysql) Database Engine     
EMPIREDB-64 - [C/N]:  CodeGenerator Maven Plugin     
EMPIREDB-63 - [C/I]:  Provide overloads for DBDatabase.queryObjectList() and querySimpleList() to allow using other collection types.     
EMPIREDB-59 - [C/B]:  HSQL double has hard-coded illegal precision (FLOAT(80)) for HSQL 1.8     
EMPIREDB-57 - [C/B]:  HSQLDB driver fails to retrieve next sequence value for lower case sequence name     
EMPIREDB-56 - [C/B]:  getValue Function on DBReader does not fail on errors.     
EMPIREDB-52 - [C/N]:  CodeGenerator module for generating database definition code files from existing databases
EMPIREDB-35 - [C/I]:  Make sure our jars are OSGi compatible        

--------------
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-Extensions' 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 extensions 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()
