New features
Changes to the existing API
The major story for MetaModel 2.0 has been to enable writing of data to your datastores. To allow this we've designed an API for updating data that has high isolation properties, provides fluent update builders and works cross different datastore backends.
The new update API supports creating tables and inserting records into tables.
The data updating API has been implemented for CSV files, Excel spreadsheets and JDBC databases. While we want to provide implementations for the remaining datastores also, these are our first set which covers the most popular datastore types.
Some datastores (Excel in particular) support visual styling of values. In MetaModel 2.0 we include the ability to get styling attributes of values in order to see eg. if values are colored, written in bold text or have other special visual representations. Styling in MetaModel is compatible with Cascading Style Sheets capabilities, so it allows for easy utilization in web applications and the like.
The styling information is available in the Row interface, which now includes a number of getStyle(...) methods.
The packages in MetaModel have been slightly revised. Each datastore module now has it's own package, such as org.eobjects.metamodel.jdbc and org.eobjects.metamodel.csv.
If you've used the DataContextFactory to retrieve your DataContexts, then there should be no need for changing consuming code.
For the first time in MetaModel's history, we've added an operator, namely IN.
IN works in MetaModel like it works in SQL. It allows you to define an array or collection of values that you wish to use in a WHERE clause, and set a filter that includes any record where the value of the record match with either of the values in your IN set.
The two modules "MetaModel-core" and "MetaModel-querypostprocessor" have been merged, and are now just "MetaModel-core". The reason for this was that there was a common dependency for both modules by all other modules and also a strong interdependency between the two. For the sake of managability and ease for our contributors, the two modules are now merged.