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

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

--------------
Release 2.4.1:
--------------
** Improvement
	* [EMPIREDB-169] - Allow access to page properties in resource requests via EL.
	* [EMPIREDB-168] - Extend JSF2 Input Controls by adding missing attributes and improve input value parsing and validation.
	* [EMPIREDB-167] - Review DBRecord state handling. Changed state from int constants to state enum. Improved method overrides 
	* [EMPIREDB-165] - JSF2: detect model changes for record bound input controls
	* [EMPIREDB-164] - Check Numeric values when encoding sql commands. New method DBDatabaseDriver.getSQLNumberString()
	* [EMPIREDB-163] - New function Record.isFieldRequired() to determine whether a field is required or not
	* [EMPIREDB-162] - JSF2: Support partial submits for Input control validation. Overridable method FacesApplication.isPartialSubmit()
	* [EMPIREDB-161] - JSF2: Format and parse Input Values with according to the users locale
	* [EMPIREDB-160] - JSF2: Preserve submitted form values when validation error occurs
	* [EMPIREDB-158] - Avoid accidentally missing command parameter values when using DBDatabase.executeSQL. New executeInsert, executeUpdate and executeDelete on DBDatabase.
	* [EMPIREDB-157] - Miscellaneous small improvements such as new overloads and improved JavaDoc

** Bugfix
	* [EMPIREDB-171] - ObjectUtils.compareEquals returns false for BigDecimals with equal value but different scale
	* [EMPIREDB-166] - Overwriting set expressions does not remove prepared statement parameter
	* [EMPIREDB-154] - <e:input> component failed inside a datatable
	* [EMPIREDB-153] - DBDatabaseDriverPostgreSQL.createReverseFunction throws syntax error exception

--------------
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


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

--------------
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()
