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

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

--------------
Release 3.5.0:
--------------

Summary: Release 3.5 has the following improvements and bugfixes:

** Improvements / Features
	EMPIREDB-493	ControlTag: allow label change with update rendering
	EMPIREDB-492	DBRowSet: allow record initialization from RecordData instead of DBRecordData
	EMPIREDB-491	DBQuery: swap collections for DBQueryColumns and original query columns
	EMPIREDB-490	Improve MenuItemTag, MenuListTag to allow customization overrides
	EMPIREDB-487	Allow to restore multiple session messages
	EMPIREDB-486	InputControl: improve support for multiple input components
	EMPIREDB-485	Oracle: Allow primary key with nullable column
	EMPIREDB-484	CodeGen: exclude-Pattern for tables and views
	EMPIREDB-483	Improve sql statement logging
	EMPIREDB-480	TextInputControl: Improve decimal format for expressions

** Bugfixes
	EMPIREDB-494	ValueUtils: Handle date conversion for DBDatabase.DBSystemDate
	EMPIREDB-489	StringUtils.lastIndexOfAny begins at wrong index
	EMPIREDB-488	DBRowSet:updateRecord: don't modify Timestamp in record if field value is NO_VALUE
	EMPIREDB-481	DBUtils - queryDataList the skipRows offset is not reset as expected

--------------
Release 3.4.0:
--------------

Summary: Release 3.4 has the following improvements and bugfixes:

** Improvements / Features
	EMPIREDB-479	Core:	Improve failed query logging
	EMPIREDB-478	Core:	DBCommand: automatically create command params from value expressions
	EMPIREDB-477	Core:	Add support for fulltext indexes and search	Improvement
	EMPIREDB-474	JSF:	Allow getting and setting context beans for BeanScope
	EMPIREDB-471	Core:	Remove time from values of type java.util.Date for DATE columns
	EMPIREDB-470	Core:	Improve DATETIME and TIMESTAMP handling
	EMPIREDB-469	Core:	Detect foreign key relations and check for existing foreign key records
	EMPIREDB-467	Core:	Add support for Materialized Views in Oracle
	EMPIREDB-466	JSF:	Improve CSS style class building
	EMPIREDB-465	JSF:	InputControl: update input style class on each ajax request
	EMPIREDB-464	Core:	Allow copying data from another record
	EMPIREDB-463	JSF:	JSF Tag encoding: format tooltip values (title attribute)
	EMPIREDB-462	JSF:	Sync Jsf and Jakarta extensions
	EMPIREDB-460	Core:	Replace calls to Apache commons.beanutils with own implementation
	EMPIREDB-459	Core:	DBRecordData and DataListEntry: sync value conversion getters
	EMPIREDB-457	JSF:	LabelTag: styleClass should include the Columns "styleClass" attribute

** Bugfixes
	EMPIREDB-476	JSF:	ControlTag / InputTag: allow override of autoControlId
	EMPIREDB-475	Core:	DBRecordData: get(column) should return enum instead of plain value
	EMPIREDB-473	JSF:	DBELResolver allow resolving of ColumnExpr and ColumnExpr[]
	EMPIREDB-468	Core:	DBMS handler getResultValue may not return a Date object for DataType.DATE
	EMPIREDB-461	JSF:	JSF Value Tag: text not properly escaped
	EMPIREDB-458	JSF:	ControlTag: wrong client-id rendered for UIInput inside <ui:repeat>

--------------
Release 3.3.0:
--------------

Summary: Release 3.3 has new features and improvements as well as several bugfixes

** Improvements / Features
	EMPIREDB-455	JSF:	TextInputControl: Add converter for numeric ValueExpressions
	EMPIREDB-454	Core:	DBCommand generate Select without OrderBy
	EMPIREDB-451	JSF:	Improve FacesUtils and FacesMessage handling
	EMPIREDB-450	JSF:	TabPageTag: allow label facet and label style class
	EMPIREDB-449	JSF:	Allow extra control label style classes
	EMPIREDB-448	Core:	StringUtils: allow custom Object stringifier
	EMPIREDB-446	JSF:	SelectInputControl add support for SelectItemsGroups
	EMPIREDB-445	JSF:	TagEncodingHelper: append control and input cssStyleClass by default
	EMPIREDB-444	Core:	Allow custom value type conversion via ObjectUtils
	EMPIREDB-443	Core:	DBTable, DBView, DBQuery make alias generation overridable
	EMPIREDB-441	JSF:	JSF-Extensions code cleanup
	EMPIREDB-440	JSF:	Improve ParameterMap
	EMPIREDB-439	JSF:	Improve ControlTag and InputTag input processing and rendering
	EMPIREDB-438	JSF:	TabViewTag show a blind div on tab change
	EMPIREDB-434	Core:	Improved handling of DBAliasExpr
	EMPIREDB-433	JSF:	Allow RowSet access by Alias
	EMPIREDB-432	JSF:	Allow custom Exception message formatting and escaping
	
** Bugfixes
	EMPIREDB-453	JSF:	InputControl value expressions bug in MyFaces
	EMPIREDB-452	Core:	Command Params in union statements not working
	EMPIREDB-447	JSF:	SelectInputControl: syncOptions fails when reloading whole list
	EMPIREDB-442	JSF:	DBQuery not updateable and Views columns not readonly by default
	EMPIREDB-437	JSF:	ControlTag not processing submitted values inside UIData
	EMPIREDB-436	JSF:	InputControls should not set value expressions on updateModel()
	EMPIREDB-435	JSF:	ListPageElement fix for invertSelection
	EMPIREDB-430	JSF:	InputTag and ControlTag value not validated properly inside UIData or repeat
	EMPIREDB-429	Core:	DBCommand findConstraintOn not considering all constraint types

--------------
Release 3.2.0:
--------------

Summary: Release 3.2 has new features and improvements as well as several bugfixes

** Improvements / Features
	EMPIREDB-428	JSF:	Create Jakarta Faces Extension for Jakarta EE 9
	EMPIREDB-427	JSF:	JSF CSS replace DataType style with InputControl style
	EMPIREDB-426	JSF:	JSF Page and PageElements improvements
	EMPIREDB-425	JSF:	Provide EntityType for Column
	EMPIREDB-424	JSF:	Allow programmatic Faces Configuration
	EMPIREDB-422	JSF:	JSF Input Control Improvements
	EMPIREDB-421	JSF:	Remove abstract method getDBContext() on Page
	EMPIREDB-420	Core:	API Cleanup DBColumExpr getSourceColumn() vs getUpdateColumn()
	EMPIREDB-419	Core:	Extend XMLConfiguration allowing variables and Map properties
	EMPIREDB-416	Core:	Improved SQL Case expressions
	EMPIREDB-410	Core:	Various small improvments like new method overloads
	EMPIREDB-408	Core:	Update dependencies
	
** Bugfixes
	EMPIREDB-429	Core:	DBCommand findConstraintOn not considering all constraint types
	EMPIREDB-423	Core:	DBDataModelParser Primary Key column order fix
	EMPIREDB-418	Core:	Oracle DBMS Handler fix for Boolean type CHAR and MERGE into
	EMPIREDB-414	Core:	Unable to set time column values using LocalTime when Prepared Statements are disabled
	EMPIREDB-412	Core:	DBColumnJoinExpr should not reuse additional constraints property.
	EMPIREDB-411	Core:	DBCalcExpr should skip a column alias
	EMPIREDB-409	Core:	ClassUtils.copy() fails for classes with static fields

--------------
Release 3.1.0:
--------------

Summary: Release 3.1 has some new core and jsf features as well as several bugfixes

** Improvements
	EMPIREDB-407	JSF:	Add "nounit" format option for eValue eInput
	EMPIREDB-406	JSF:	Provide example CSS for formGrid with mode "grid"
	EMPIREDB-405	JSF:	Make application of StyleClasses for JSF-tags more transparent and configurable
	EMPIREDB-404	JSF:	Improve ControlTag rendering options
	EMPIREDB-402	Core:	Allow Join definition using on(...) syntax
	EMPIREDB-401	Core:	Improve DBModelChecker primary key check
	EMPIREDB-398	Core:	DBCommand: Omit parent tables in subquery FROM clause
	EMPIREDB-397	Core:	PostgreSQL: Add support for websearch_to_tsquery
	EMPIREDB-395	JSF:	Field validation: allow min/max range constraints to be non-integers
	EMPIREDB-394	Core:	Optimize SQL-generation
	EMPIREDB-387	Core:	Update Vue Example Dependencies
	EMPIREDB-384	Core:	Provide type conversion for DBCmdParam
	
** Bugfixes
	EMPIREDB-403	Core:	SampleApp fails with DBCommandHSql
	EMPIREDB-400	Core:	Oracle statement params missing for limitRows / skipRows in subqueries
	EMPIREDB-399	Core:	XMLWriter saveAsFile swallows Exception
	EMPIREDB-396	Core:	queryRowCount not working for parameterized aggregate queries
	EMPIREDB-393	Core:	Query params missing for subquery constraints
	EMPIREDB-392	JSF:	e:input inside ui:repeat does not work
	EMPIREDB-391	Core:	DBCommand.clone does not copy join params
	EMPIREDB-390	Core:	DBCommand.join ignore null as addlConstraint params
	EMPIREDB-385	Core:	Change DBRecord.read param from long to object

--------------
Release 3.0.0:
--------------

Summary: Release 3.0 features a complete API rework hence introduces breaking changes from the previous 2.x branch.

** Improvement
	EMPIREDB-382	Core:	Provide easy access to native DBMS functions
	EMPIREDB-381	Core:	Improve PostgreSQL Handler / Add Postgres specific functions
	EMPIREDB-380	Core:	Reintegrate spring-boot example for version 3
	EMPIREDB-378	Core:	PostgeSQL: SQL Pattern for TIMESTAMP Columns
	EMPIREDB-374	Core:	replace log4jv1 usage - EOL and with multiple security vulnerabilities
	EMPIREDB-373	Core:	Improve Automatic prepared statements with DBCommand
	EMPIREDB-372	Core:	Allow method chaining by returning this on some DBCommand and DBRecord methods
	EMPIREDB-371	Core:	Deferred identiy setting for DBRecord
	EMPIREDB-370	Core:	Allow alternative DBRecord implementations
	EMPIREDB-369	Core:	Improve typesafety by using generics
	EMPIREDB-368	Core:	New queryBean functions and Bean Rowset mapping
	EMPIREDB-367	Core:	New query type DataList as bean replacement
	EMPIREDB-366	Core:	Remove Serializable from DBObject
	EMPIREDB-365	Core:	Add support for Java 8 time api
	EMPIREDB-364	Core:	Handle rollback on DBRecord to restore state
	EMPIREDB-363	Core:	New DBContext as replacement for Connection param
	EMPIREDB-362	Core:	Version 3 Complete API Rework
	
** Bugfix / Other
	EMPIREDB-375	Struts:	Removed support for Struts2 and all its modules due to outdated Struts version
	EMPIREDB-376	Core:	Do not use insecure http endpoints when doing maven build
	EMPIREDB-377	JSF:	Page - addFacesMessage always issues WARN-Message

--------------
Release 2.5.1:
--------------

** Improvement
	EMPIREDB-361	JSF:    NumberFormat allow MaximumFractionDigits<>MinimumFractionDigits
	EMPIREDB-360	JSF:    Add check for null on ValueExpressions supplied with input or control tag.
	EMPIREDB-359	Core:   Allow multiple occurrences of column placeholder in function expression template
	EMPIREDB-358	Core:   New example project for spring-boot integration
	EMPIREDB-355	JSF:    JSF extensions: Allow SelectControl to be rendered as listbox
	EMPIREDB-354	Core:   Miscellaneous small improvements
	EMPIREDB-353	Core:   Provide default implementation für delete with joins
	EMPIREDB-351	Core:   Improve ObjectUtils
	EMPIREDB-350	JSF:    Allow LInkTag to render child elements
	EMPIREDB-349	Core:   Improve DateUtils / add compare function
	EMPIREDB-348	JSF:    Improve readonly detection for InputContols, allow override
	EMPIREDB-346	Core:   Improve Enum value conversion / allow custom conversion
	EMPIREDB-345	JSF:    JSF TextAreaInputControl: add css style for rows and cols
	EMPIREDB-344	Core:   Allow replacement of select expressions in DBCommand
	EMPIREDB-343	JSF:    JSF InputControl: Allow override readonly attribute
	EMPIREDB-342	Core:   Impove allowed expressions for joins
	EMPIREDB-341	Core:   Improved table cloning for multiple- and self-joins
	EMPIREDB-337	JSF:    JSF Improve TabViewTag with option to hide tabBar
	EMPIREDB-336	Core:   Add validity checks for Join expressions
	EMPIREDB-334	Core:   Improve customizablity of data model code generation

** Bugfix
	EMPIREDB-357	Core:   StringUtils.compareEqual fails for arguments null + empty string
	EMPIREDB-356	Core:   SelectInputControl: option label not correctly updated
	EMPIREDB-352	Core:   DBExpr.getValueClass should return String.class for DataType CHAR
	EMPIREDB-347	Core:   Avoid unneccessary instances of SimpleDateFormat in ObjectUtils
	EMPIREDB-340	Core:   Omit command param if value is null
	EMPIREDB-335	JSF:    JSF add missing format option "nolookup" for text controls
	EMPIREDB-333	Core:   Fix Problem with parameter propagation for nested queries
	EMPIREDB-332	Core:   codegen example incorrect pom entries
	EMPIREDB-331	Core:   DBRowSet:initRecord falsely intializing fields with NO_VALUE

--------------
Release 2.5.0:
--------------

** Improvement
	EMPIREDB-329	Core:	Add full join support for column joins
	EMPIREDB-328	JSF:	Add css style class to input element if value of input control was modified
	EMPIREDB-327	JSF:	CheckboxInputControl ignores isFieldReadOnly
	EMPIREDB-325	JSF:	TextInputControl: required-Styleclass is not updated after ajax call
	EMPIREDB-324	Core:	Add caseWhen expression for multiple conditions
	EMPIREDB-322	Core:	Add DataModelChecker for SQL-Server
	EMPIREDB-321	JSF:	TextInputControl: Improve the ability to implement custom parsing
	EMPIREDB-319	Core: 	Improve partial record handling
	EMPIREDB-317	JSF:	Improve TagEncoding inside UIData components
	EMPIREDB-315	Core:	Extend Options allowing Entries to be active/inactive
	EMPIREDB-314	Core:	Add support for the SQL format function
	EMPIREDB-312	JSF:	Allow to customize whether to render the Input or the Value
	EMPIREDB-311	Core:	Allow Column Expression to be use with ValueTag
	EMPIREDB-310	JSF:	Improve ParamterMap for request parameter handling
	EMPIREDB-308	JSF:	WebApplication: Add "destroy"-method
	EMPIREDB-307	JSF:	Allow overrides of TagEncodingHelper class
	EMPIREDB-306	JSF:	Improve JSF Taglib support
	EMPIREDB-305	JSF:	Allow InputControl to render value wrapper tag
	EMPIREDB-304	Core:	Add isEnum() function to Column indicating whether an Enum-type has been set
	EMPIREDB-303	Core:	Add support for Unique-Indexes which allow null values
	EMPIREDB-301	Core:	DBCommandExpr: expose orderBy
	EMPIREDB-300	JSF:	Problem with prepared statements when using booleans with SelectInputControl
	EMPIREDB-299	Core:	Improve Oracle update statements using "MERGE INTO"
	EMPIREDB-298	JSF:	Allow update of required style after Ajax request with SelectInputControl
	EMPIREDB-296	JSF:	Allow page-specific idParams in ParameterMap
	EMPIREDB-294	Core:	Allow functions and command expression to be used as record values
	EMPIREDB-293	Core:	Allow driver to distinguish between DATETIME and TIMESTAMP
	EMPIREDB-291	Core:	Make table definition for update timestamp simpler
	EMPIREDB-290	Core:	Provide additional overloads to DBTable.addColumn for Enum value types
	EMPIREDB-289	Core:	Rename DataType TEXT to VARCHAR to align with SQL specification
	EMPIREDB-288	JSF:	Provide handler for view not found in web application
	
** Bugfix
	EMPIREDB-326	Core:	Fix DateTime conversion in ObjectUtils
	EMPIREDB-323	Core:	Fix multiple sql-functions on same column not possible with DBCommand
	EMPIREDB-320	JSF:	Fix skip default JSF input validation
	EMPIREDB-318	Core:	Fix field resolution failure for expressions with no UpdateColumn in DBQuery
	EMPIREDB-316	JSF:	Control-Rendering: distinguish between disabled and readOnly
	EMPIREDB-313	JSF:	Fix SelectInputControl not working for numeric enum columns
	EMPIREDB-309	JSF:	Fix JSF-LabelTag must not implement NamingContainter
	EMPIREDB-302	JSF:	Fix Support for NULL values in CheckboxInputControl
	EMPIREDB-297	Core:	Fix CodeGenerator failure for NVARCHAR columns in SQL-Server
	EMPIREDB-295	Core:	Fix incorrect From clause when using function expressions
	EMPIREDB-286	JSF:	Fix ControlTag using "colon"-Attribute for label rendering
	EMPIREDB-285	Core:	Fix correctly escape sequence name when dropping tables
	EMPIREDB-283	Core:	Fix PreparedStatements not working with MS SQL-Server >= 2016
	EMPIREDB-281	JSF:	Fix Allow modifying options with SelectInputControl in Ajax request
	EMPIREDB-280	Core:	Fix incorrect validation of null values in DBRecord.setValue

--------------
Release 2.4.7:
--------------

** Improvement
	EMPIREDB-278 Provide new accessors for Enum values on records
	EMPIREDB-277 JSF2 Extensions: Allow other inputControl to be used with selectTag
	EMPIREDB-276 Add support for pseudo table (like DUAL in Oracle)
	EMPIREDB-275 Allow provision of sequence gerneration expression for bulk insert statements
	EMPIREDB-274 Oracle: Correct MergeInto syntax
	EMPIREDB-272 Provide easy way to select column with a qualfied alias
	EMPIREDB-271 New application example with Vue.js framework and REST service
	EMPIREDB-270 JSF2 Extensions: Allow records to provide context specific css styles for JSF tags
	EMPIREDB-267 Allow DBCmdParams to be used as a value expression in an SQL statement
	EMPIREDB-266 Map query columns in DBReader to underlying table columns
	EMPIREDB-264 MySQL Driver: Update Keywords for version 5.7
	EMPIREDB-262 Add special enum handling to ObjectUtils.compareEqual function
	EMPIREDB-258 MS-SQL Server: Improve Driver to support latest features  
	EMPIREDB-256 Allow page redirect in overrides of method Page.checkPageAcces()
	EMPIREDB-254 Allow detection and handling of constraint violations when inserting or updating records
	EMPIREDB-253 Add UNION ALL support to DBCommand
	EMPIREDB-252 MySQL: Added Support for database specific CodeGenParser
	EMPIREDB-251 MySQL: Added Support for TINYINT, MEDIUMINT Integer Types

** Bugfix
	EMPIREDB-280 DBRecord.setValue does not correctly validate null for new records
	EMPIREDB-279 Sequences left after dropping my Database. Can't create a new one.
	EMPIREDB-273 Improve multi-region support in TagEncodingHelper / TextInputControl
	EMPIREDB-269 DBDatabaseDriverPostgreSQL: wrong SQLPhrase for DBSystemDate
	EMPIREDB-265 DDL syntax for DROP statements contains invalid quotes when a schema name is given.
	EMPIREDB-263 Not possible to set skipRows unless limitRows is also set
	EMPIREDB-261 DBCommand is not re-usable, when a CLOB column is involved
	EMPIREDB-255 Compiler error in code generated from codegen plugin
	EMPIREDB-250 MySQL: wrong SQL for CREATE VIEW with DBCombinedCmd

--------------
Release 2.4.6:
--------------

** Improvement
	EMPIREDB-252	Add Support for database specific CodeGenParser
	EMPIREDB-251	Add Support for TINYINT, MEDIUMINT Integer Types for MySQL
	EMPIREDB-249	Add "format" Support to MySQL convert expression
	EMPIREDB-245	Add Support for DELETE with JOIN for MySQL
	EMPIREDB-243	Add Eclipse m2e plugin lifecycle mapping
	EMPIREDB-242	Explicitly declare cross joins
	EMPIREDB-238	Miscellaneous small improvements
	EMPIREDB-237	Add support for the modulo function in SQL generation
	EMPIREDB-235	Improve Empire-JSF-Extensions for JSF 2.2
	EMPIREDB-233	Remove MSSQL DateFormat dependency
	EMPIREDB-232	Support InputControls to work correctly in MyFaces and inside UIData components
	EMPIREDB-231	Improve CheckboxInputControl
	EMPIREDB-229	Code cleanup and adjustment of maven project settings
	EMPIREDB-228	Allow access to TagEncodingHelper in derived classes
	EMPIREDB-227	Spring Integration including example

** Bugfix
	EMPIREDB-248	date functions not properly handled in PostgreSQL
	EMPIREDB-246	Label Required Mark check inconsistent
	EMPIREDB-241	Error in lower() implementation for PostgreSQL
	EMPIREDB-240	Update Spring dependencies in examples
	EMPIREDB-239	Enum-handling: take name or ordinal as field value
	EMPIREDB-236	Subquery join with DBQuery produces invalid join
	EMPIREDB-230	MSSQL DDL generates incorrect data type for BLOB with nonzero length
	EMPIREDB-226	Empire generates incorrect SQL when DBCommand's where list is empty

--------------
Release 2.4.4:
--------------
** Improvement
	EMPIREDB-221 	Allow batch execution through JDBC executeBatch
	EMPIREDB-220 	Allow override of fraction digits on JSF input tag
	EMPIREDB-219	Added source code for Eclipse-Code-Generation-Plugin
	EMPIREDB-217	Consistency check for data model definition vs deployed data model

** Bugfix
	EMPIREDB-223	join function in DBCommand requires a DBColumn instead of a DBColumnExpr
	EMPIREDB-218	Missing reserved keywords in DBDatabaseDriverMySQL
	EMPIREDB-216	Reserved words as column names not correctly escaped/quoted for derby
	EMPIREDB-215	Sequence generation and use for HSql to not agree in using toUpperCase
	EMPIREDB-214	SQLServer - wrong 'alterColumnPhrase'
	EMPIREDB-212	MySQL Nested Union bad syntax
	EMPIREDB-210	Wrong Java Type in Records for BLOB Columns
	EMPIREDB-209	Using a reserved word as a column alias in a select statement.
	EMPIREDB-208	Decimal fields don't support scales above 9
	EMPIREDB-125    Problem with the location of velocity templates on the code generator

--------------
Release 2.4.3:
--------------
** Improvement
	EMPIREDB-127 	Switch to Apache Maven 3.0.x

** Bugfix
	EMPIREDB-206	ExpireException may throw an ArrayOutOfBoundsException
	EMPIREDB-205	DBColumn implements equals() but not hashcode()
	EMPIREDB-204	PostgreSQL not supports size parameter on BYTEA
	EMPIREDB-202	BeanListPageElement does not navigate back to page 0.
	EMPIREDB-201	BeanListPageElement.getItemQueryCmd does not clear limit and skip rows
	EMPIREDB-194	DBSQLScript: allow to insert statements 

--------------
Release 2.4.2:
--------------
** Improvement
	EMPIREDB-192	Implement limitRows and skipRows for Oracle
	EMPIREDB-190	Improve DDL Syntax by allowing variable parameters for primary key and relations
	EMPIREDB-188	Allow replacement of statements in a DBScript
	EMPIREDB-183	Allow enabling / disabling foreign key constraints
	EMPIREDB-180	Strip Mojarra dependency from JSF2 extensions and show use of MyFaces in example
	EMPIREDB-178	Improve JSF example, add business logic for retired state
	EMPIREDB-173	Switch to ASF Parent 13 POM
	EMPIREDB-170	extend DBDatabase.querySingleValue to utilize DataType

** Bugfix
	EMPIREDB-193	DBRowSet has an equals() implementation but no hashCode() implementation.
	EMPIREDB-191	The spring example does not release connections.
	EMPIREDB-189	DBDatabase.getSingleInt with default does not return the default but throws an exception.
	EMPIREDB-185	MenuListTag not working in MyFaces
	EMPIREDB-182	Wrong datatype for uniqueid in SQLServer
	EMPIREDB-181	Do not check for item count in ListPageElement.isValid()
	EMPIREDB-179	String to date conversion: use SimpleDateFormatter
	EMPIREDB-177	Allow date entry in JSF-inputText 
	EMPIREDB-175	rename misleading method name that falsely suggests a redirect
	EMPIREDB-171	ObjectUtils.compareEquals fails on BigDecimal

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