New features

API for performing updates (write operations) on data

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.


Create data in CSV files, Excel spreadsheets and JDBC databases

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.


Support for visual styling of values

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.

Changes to the existing API

Modularization of packages

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.


Use of IN operator

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.


Core and Querypostprocessor modules have been merged

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.