Apache Empire-db
Copyright 2008-2018 The Apache Software Foundation

For more Information about a particular issue please visit
https://issues.apache.org/jira/browse/EMPIREDB

--------------
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()
