--------------- 1. WHAT's NEW --------------- A list of changes in recent versions: 0.1.14: (16-Oct-2007) * Automatic fixes as reported by IntelliJ-IDEA's inspections * Updated the copyright header on all java-files 0.1.13: (12-Oct-2007) * [BUG] Fixed divide operations that nad no defined scale. 0.1.12: (24-Sep-2007) * All releases are now built with JDK 1.4. However, we are still compatible with JDK 1.2.2 and all releases run and compile under that release. * [BUG] The boot-class always reconfigured the logging system to use System.out logging, even if the user configured something else. * [BUG] The DefaultFunctionRegistry should have cached the loaded class-objects to avoid resource-contentions in the JDK's classloader. 0.1.11: (15-Aug-2007) * Added MIN, MAX, and MOD functions * [BUG] NumberSequence and Arrays from ranges should now work * Marked unimplemented methods with UnsupportedOperationException * Removed use of System.out in favor of JCommon logging * [BUG] Reworked some functionality that was not Java 1.2 compliant * Removed some old CVS artifacts 0.1.10: (30-Jul-2007) * [BUG] A misplaced instanceof test prevented the distinction between java.sql.Date and java.sql.Time objects. * [BUG] A rouge System.out statement was left in the generated formula parser and caused funny messages. 0.1.9: (24-Jun-2007) * [BUG] Percentage Operator did not set the scale correctly * [BUG] Divide operator did not remove unneccessary trailing zeros. * [BUG] Fixed a NullPointerException in the Numeric-Operators. * [BUG] Some operations returned 'null' instead of a NA()-TypeValue-Pair. * [BUG] The parser did not handle parenthesis correctly resulting in invalid results in computations. * Added support for inline arrays to the parser. * NULL-Values (aka NA()) are now treated like in Excel. Any operation performed on an NA() value results in NA(). There is no implicit conversion into ZERO for numeric operations anymore. 0.1.8: (21-May-2007) * [BUG] The automatic type conversion was not always working. * [BUG] The 'greater equal', 'lower equal' and 'not equal' operators did not work as expected. * The date-formats used in the automatic conversion can now be configured using the global configuration. * New functions added Date: - DAY() - HOUR() - MONTH() - WEEKDAY() - YEAR() Math: - EVEN() - ODD() - AVERAGE() Information: - ISNONTEXTFUNCTION() - ISEVEN() - ISODD() - ISNUMBER() - ISREF() 0.1.7: (27-Apr-2007) * [BUG] Fixed a couple of type-conversion issues when converting from and to numeric types. Now, if a value is not convertible, a TypeConversionException will be thrown. 0.1.6: (01-Apr-2007) * [BUG] Comparing two untyped (Any-Type) values always failed. The new implementation now tries to convert these values into Numbers, Dates, and Strings to compare them. (This is a quick-fix for Bug #1680148; however, it needs more testing before we can close that bug.) * New functions added Date: - NOW() - TODAY() 0.1.5: (07-Mar-2007) * Exposed some previously private variables to allow proper inspection of formulas. 0.1.4: (01-Mar-2007) * [BUG] The parser did not accept empty parameters so that syntactilly valid formulas like "IF(;;;)" failed to parse. * [BUG] The TRIM(..) function was invalid. TRIM has to remove all leading, trailing and all duplicate inner whitespaces from the give text. * New functions added Text: - REPLACE( - SUBSTITUTE(text, old_text, new_text, nth_appearance ) Math: - ABS(number) Date: - DATEDIF(date1,date2,interval) 0.1.3: (25-Jan-2007) * [BUG] The power operator was not registered. * [BUG] The 'minus' prefix operator did not work. * New functions added Text: - LEFT(text[,length=1]) - EXACT(text1,text2) - FIND(needle,hay[,startIndex]) - LEN(text) - LOWER(text) - MID(text,start,length) - REPT(text,count) - TEXT(value) - T(value) - TRIM(text) - UPPER(text) - URLENCODE(text[,encoding]) Information: - NA - ISNA(value) - ISTEXT(value) - ISLOGICAL(value) - ISERROR(value) - CHOOSE(condition,value[,..]) - ISBLANK(value) 0.1.2: (22-Dec-2006) * [BUG] The parser failed when being faced with functions that have no parameters. * New function NULL allows to return a NULL-reference. * Added the 'ISBLANK' function from OpenFormula. 0.1.1: (11-Dec-2006) * The FormulaContext now is able to signal errors using Exceptions. The ToDo list has grown a bit after studying the holy books of Formula-computation. Version 0.2 will see some major internal API changes. 0.1.0: (03-Dec-2006) * Initial version. This version happily deals with plain types and somehow it even handles arrays without crashing. Code for database support exists, but is not in a usable state (yet). I don't even think about OLAP cubes now. * Functions use a parameter callback now. This way, we avoid to pre- evaluate all the parameters and therefore optimize the evaluation of the whole formula.