Posts in category metamodel

MetaModel joining the Apache Incubator

For the past months we've been working on a proposal to donate the MetaModel project to the Apache Foundation, where it will live initially as an Incubator project. And today the vote for accepting the project has ended - with 18 votes for, and none against - so we are extremely proud and happy to announce that MetaModel will be getting a new home at Apache.

The impact of this project change will be profound on the one side and on the other we will ensure that we do our best to please the existing user and developer base. Some of the certain changes include:

  • We're changing MetaModel's license from LGPL to the Apache license.
  • The dBase module will be removed from the main distribution of MetaModel, since it is not entirely ours to dispose of (there's a significant contribution from the xBaseJ project, which is GPL licensed). There will be a separate LGPL project, similar to that of SassyReader, created for the MetaModel support of dBase.
  • The project management style will become more open and accessible for everyone. Since Apache has much stricter policies and a great open source culture, we aim to conform to this process for the future direction of MetaModel.
  • The root package of the project will probably no longer be org.eobjects.metamodel, but rather something along the lines of org.apache.metamodel.
  • The source code will be moved to Apache's Git repository.
  • The bug tracking will be moved to Apache's JIRA system.
  • The continuous integration platform of Apache will be employed to do regular builds of MetaModel.

We hope that you will also help us in this process by having your voices heard on the new Apache dev. infrastructure, mailing lists etc. once that is in place. The status of the Apache incubation can be tracked here.

More details will follow as soon as the new environment for Apache MetaModel is available.

MetaModel 3.3 has been released!

We're very happy to announce the release of several busy months' work: MetaModel version 3.3!

With the 3.3 release we're opening a couple of new modules to fully-fledged business applications, namely Salesforce and SugarCRM. This means that you can now interact with these business applications just as if they where a regular database or data file. For our typical use-cases in the Information Management area, these additions make interactions a lot easier and unified with database interactions.

Additionally the 3.3 release contains the regular round of bugfixes and improvements, specifically the IBM DB2 support has been further optimized.

For all the details, see What's new in version 3.3 page on the MetaModel website.

MetaModel 3.2.5 released

We've just released MetaModel 3.2.5. Version 3.2.5 improves existing features on a number of areas, primarily on query parsing capabilities and on improved support for DB2 and MS SQL server. Totaling up to 10 significant improvements.

The full list of improvements can be found at the 3.2.5 milestone summary page.

We hope you will enjoy this release, which should be a drop-in replacement for other 3.2.x releases.

MetaModel 3.2.5 is available via our Google Code downloads and via the central Maven repository.

MetaModel 3.2.1 released

We've released version 3.2.1 of MetaModel. This release is a minor feature enhancement and bugfix release. Here's the list of changes:

  • We've drastically improved the performance of "DELETE FROM" statements on CSV files.
  • We've added mapping of unavailable-to-available data types when issuing "CREATE TABLE" statements containing unavailable data types on eg. DB2 or PostgreSQL. In these cases a proper data type will be automatically applied, eg. to use SMALLINT instead of BOOLEAN on DB2, or use BYTEA instead of BLOB on PostgreSQL.
  • A bug pertaining to multithreaded execution of compiled JDBC queries was fixed. We've created a pool of prepared statements to ensure parallel execution of compiled queries.
  • A bug pertaining to proper quoting of HAVING clause operands was fixed. When the data type of an aggregate function is different from data type of the functions argument, the quoting would not be correct under given circumstances.

Refer to the roadmap milestone for more details.

MetaModel 3.2.1 is available for direct download or as a Maven dependency.

MetaModel 3.0.1 released - minor bugfixes and improvements

Today we've released version 3.0.1 of MetaModel. This is a minor point release which contains the following bugfixes and improvements:

  • Fixed a bug pertaining to "first row" semantics in the JDBC module. This issue was effective when both "first row" and "max rows" was specified - one more row than desired would be produced.
  • The toSql() method of Table Creation builders now includes NOT NULL and PRIMARY KEY tokens in the ANSI SQL statement.
  • The documentation for POJO datastores has been updated since it contained a minor compilation issue due to an ambigiuous constructor.
  • A bug in the IBM DB2 support, related to handling of BLOBs was fixed.

This should be a drop-in replacement for version 3.0, so we encourage everyone to upgrade.

MetaModel 3.0 released! Type safe queries for ANY data

We've finally come to the day where we get to push the big red RELEASE button on the MetaModel 3.0 project!

This release is very significant since it marks the point where MetaModel is for the first time able to call itself a full CRUD capable API for practically any data format.

Go to the MetaModel website to read all about what a nice release this is:

Congratulations to everyone involved in this release. We hope you will all appreciate this major arcievement and help us spread the word about MetaModel even more.

MetaModel 2.2.2 released

MetaModel version 2.2.2 has just been released. This is a maintenance release to the 2.2 branch of MetaModel, containing primarily bugfixes and a few small but useful feature enhancements:

  • The MongoDB module now supports having Maps and Lists as column types. This means that the table-model applied to MongoDB now is structurally compatible with MongoDB's native model (which is key/value based).
  • Query filters now support logical AND operators. Previously AND was implied between all filter items and therefore not included as a choice, but if nested filters with AND + OR combinations are needed, the new AND operator is useful.
  • The DataContext.getColumnByQualifiedLabel(...) method is now fault-tolerant towards case differences.
  • DataSets are now automatically being closed when garbage collected. Although this is not a desirable use-case, it does allow for a late safe-guarding against unclosed resources.
  • A bug in the DataContextFactory.createExcelDataContext(...) method which caused it to go into stack overflow was fixed.

A detailed view of the work done can be seen in the milestone view.

We hope you enjoy the new release of MetaModel. Please provide your feedback on the MetaModel online forums.

MetaModel 2.2 released

Today we're announcing the release of MetaModel version 2.2! This new release represents an effort to sanitize, streamline and make the API of MetaModel more flexible. The two major areas of improvement are:

  • Introduction of an interceptor layer, which can be used for many purposes, for instance to do automatic conversion of data types. The interceptor layer allows you to enrich MetaModel's functionality and to monitor queries and updates on your data.
  • Improvement of the JDBC write speed by carefully adapting it to use batch updates, prepared statements and controlled commits. With these improvements MetaModel is becoming much more appropriate as a data writing API, even for large batches of data.

There's also a few other smaller additions to this release. You can read it all on the what's new in version 2.2 page and you can download the library from both google code or use it as a maven artifact, as always.

MetaModel 2.1 embraces MongoDB and expands XML features

MetaModel, the universal data access library that provides SQL-like querying capabilities to databases and other data formats alike, have just been released in version 2.1.

The 2.1 version of MetaModel is an exciting one. The primary archievements in this release has been to provide a mapping model for non-tabular datastores like the NoSQL database MongoDB and for XML files. This means that these two data formats that previously required you to do custom conversion and custom query implementations can now be queried (and in MongoDB's case also modified) in a standard fashion. For both MongoDB and XML files you have a choice of either letting MetaModel autodetect a table model (which may not be perfect, but good to begin with) or to specify your own table definitions and let MetaModel figure out the rest.

The 2.1 release also features a few bugfixes to the previous 2.0.2 release.

You can read all about what is new in 2.1 on the MetaModel website.

MetaModel can be downloaded as a independent distributable or as a Maven-style artifact for projects that use that.

We hope you like the new release. Please let us know of your experiences, either on the MetaModel forum or Google group.

MetaModel 2.0.2 improves performance, fixes bugs, adds MongoDB support

Dear everbody,

We're happy to tell you that MetaModel version 2.0.2 has been released. This release is a minor release, but even so it contains a few goodies worth noting:

  • The Excel adapter now uses the new Streaming API in Apache POI, which should mean that support for very large Excel spreadsheets just got a lot better.
  • A bug was fixed, which caused CSV writing not to respect the separator and quote char defined for the file format.
  • Performance improved in query postprocessing by applying sub-selections just-in-time, instead of ahead of time.
  • We've added a new experimental adaptor for MongoDB databases. The adaptor supports querying MongoDB using the well known MetaModel query API. Since MongoDB doesn't have schema definitions, you will have to define the schema yourself though.

To get MetaModel, simply use this Maven dependency:


Thanks to everyone who contributed! We hope you enjoy the new release of MetaModel.

MetaModel 2.0.1 released

We're happy to announce that MetaModel 2.0.1 has been released!

This release of MetaModel is a maintenance released which adds minor enhancements to the newly released 2.0 version. The highlights of the update are:

  • When writing CSV files in the UTF-8 encoding, MetaModel will automatically add a byte-order-mark (BOM) which will make tool support for reading the files (eg. in Excel) much better.
  • The LazyRef type has a new method for asynchronously loading the reference in a separate thread. This is nice if you know that you will need the reference, but don't need it instantly - then you can lazy load it asynchronously.
  • Additional testing and minor tweaking has gone into the framework. In particular we at Human Inference have been testing MetaModel deployments on non-Sun/Oracle Java implementations, like IBM Java on AIX and others platforms.

We hope you enjoy the new release of MetaModel.

MetaModel 2.0 has been released!

It is with great proudness that we can now say that MetaModel 2.0 has been released! MetaModel is a library that encapsulates the differences and enhances the capabilities of different datastores, such as databases, CSV files, Excel spreadsheets and a lot of other data formats!

Until now MetaModel have always been a read-only library, allowing you to query all sorts of datastores. But with the new 2.0 release we've extended the API with a capability to write data to the datastores as well! MetaModel continues to have a robust and type-safe API for data creation, just as it is the case with querying. This means that with MetaModel you can design very dynamic applications, while still relying on staticly typed data operations and the comfort and safety that this brings to execution. In short - MetaModel is "write once, run anywhere" for datastores.

Read more about the new release here:

As always, MetaModel is available both as a zip/tar.gz download and as a Maven artifact. Here's the dependency entry for your POM:


We hope you enjoy working with MetaModel. Please let us know your feedback at our online forum or the MetaModel mailing list.

MetaModel 2.0 release candidate 1

We've released the first release candidate for MetaModel version 2.0. The big news in MetaModel 2.0 is that we are now going to make it possible to write data back to the datastores. Until now MetaModel has been a read-only exploration and querying framework, but we are expanding the scope quite a lot, and thus also bumping the major version number!

You can grab MetaModel 2.0 RC1 from the central maven repo's:


There's a few new resources for those wanting to look into the new data creation API:

We hope you like the new 2.0 release candidate. Please provide your feedback asap, so we have time to adjust the API and the framework before a final release.

MetaModel 1.7.5 adds support for large Excel spreadsheets

Our data access framework, MetaModel 1.7.5 has just been released and is making it's way into the central Maven repos as we write this announcement.

This release contains improvements primarily in the MetaModel-excel module:

  • Memory consumption when reading OOXML-based Excel spreadsheets have been drastically improved. Previously there would be a huge overhead caused by DOM parsing of the XML documents in a spreadsheet. The Excel module has been rewritten to take advantage of Apache POI's SAX event API for reading Excel spreadsheets. This means that there will be little to no memory overhead when reading the data from an excel spreadsheet. Benchmarks show a decrease in memory consumed to about 1/5 of the previous amount.
  • An issue has been fixed which caused the Excel module to throw an unexpected exception when reading formulas which had errornous self-referencing expressions.

From a library consuming perspective, there are no breaking changes. This is a drop-in replacement for previous 1.7.x releases.

We hope you enjoy the new release. If you are using the MetaModel-excel module, we strongly encourage you to upgrade to version 1.7.5. Please go to the downloads page for more information.

MetaModel 1.7.4 released

We're happy to announce the release of MetaModel 1.7.4. The new version of MetaModel contains a critical bugfix and a minor improvement to functionality:

  • The critical bugfix pertained to an unsafe logging scenario where logging would potentially cause a stack overflow. This was because the hashCode() method of BaseObject contained a debug-logging message that would print the objects own toString() method which, unless modified, would include yet another call to hashCode(). The bug has been fixed by overriding the default toString() method of Object and using System.identityHashCode(...) instead of hashCode().
  • There's also a nice improvement in version 1.7.4: We've added support for fixed width files with individual column widths. What this means is that you can now read a file where each line has a fixed width, but the individual columns of the file has varying widths. This was not possible before, where all columns had to have equal widths, which was a bit restrictive.

All in all we're happy with the new release. It is available in the Central Maven repositories, simply use the following snippet in your POM:


The release is fully backwards compatible with the previous version 1.7.3.

Head on over to the MetaModel website for more information.

MetaModel 1.7.3 released

We've released MetaModel version 1.7.3 today! This release is a minor bugfix release which continues to stabilize and build a firm foundation for this data access framework.

The improvements added in version 1.7.3 are:

  • Handling of errors in Excel formulas. If an invalid calculation is made in a formula, MetaModel will simply return the formula as a string.
  • Handling of invalid Excel formulas. Similarly if a formula in excel is simply invalid (eg. using symbols that do not exist), MetaModel will simply return the formula as a string.
  • Improved handling of fetch size caluclation for JDBC queries. In particular some queries can be identified as only returning a single row (eg. COUNT(*) queries and the like). Such queries will get an appropriate fetch size of 1.
  • All Javadoc API Documentation warnings where fixed.

We hope you will enjoy the new version of MetaModel!

MetaModel 1.7.1 released

Due to the attention that we've received from our release earlier this week, we've quickly collected a few improvements to MetaModel 1.7 that where small but valuable. This is why we are today releasing MetaModel 1.7.1!

The release contains these new items:

  • Various minor improvements in the API Documentation.
  • Fixed a minor bug that occurred when CSV headers are configured to be read from an unexisting line number.
  • Added the capability to calculate an appropriate FETCH_SIZE for JDBC/database queries. This feature allows for better memory management when used with databases that take advantage of eager buffering.

Please turn to the MetaModel website for downloads!

MetaModel 1.7 released

Today is the day that MetaModel version 1.7 has been released! The focus of the new version was to bring additional configurability and handling of special corner cases into the framework. In addition we've also improved performance and fixed a few minor issues.

For a full list of new stuff, take a look at the What's new in MetaModel 1.7? page.

As always you can download MetaModel as a distributable or get it from the Maven repositories:


We look forward to getting your reactions and feedback. Please let us know if you use MetaModel and we will also be happy to add you to the list of projects that use it.

MetaModel 1.6 released

We're happy to announce today the release of MetaModel 1.6.

The new version of MetaModel has three focus points:

  • A new datastore type has been added: Fixed width value files. This enables MetaModel to read flat files where every value has the same length (ie. not separated as such, but formatted in character columns).
  • Full support for paging queries. The query interface now has a setFirstRow(int) method, which in combination with the existing setMaxRows(int) method allows for paging and finer grained control over the resulting data sets.
  • Bugfixes pertaining to DB2 support: Added specific dialect support to ensure that queries for DB2 are formatted correctly, especially with regard to fully qualified schema names in queries.

You can get the new MetaModel at our downloads page or through the central Maven repositories:


We hope you enjoy MetaModel - please let us know and provide feedback at the forums.

MetaModel 1.5 released. Unify your view on all datastores

MetaModel 1.5, an Open Source Java framework for accessing, exploring and querying different datastores using a unified API, have just been released. MetaModel provides a single view and a SQL/LINQ-like query engine for everything ranging from relational databases, CSV files, Excel spreadsheets, XML files, dBase (.dbf), MS Access (.mdb) and (.odb) databases.

The 1.5 release has been more than a year under way, including substantial new features and enhancements. Three major themes influence the new features of the 1.5 release:

Improved datastore compliancy

In addition to the already extensive set of supported datastore types, the following new datastore features have been added:

  • Support for Excel 2007+ (.xlsx) spreadsheets has been added.
  • Composite datastores have been added, allowing you to define queries that span multiple datastores.
  • Excel formula calculation have been added.

Fluent Query Builder API

MetaModel 1.5 retains the existing Querying API, which is extremely flexible but also complex, and therefore quite easy to make mistakes with. But MetaModel 1.5 adds a new layer of abstraction to the Querying API: The Query Builder API. With the Query Builder API you can define queries in an even easier, more safe and elegant way. The goal of the Query Builder API is to leverage the use of the compiler as far as possible for query expression.

An example demonstrates it quite well:

DataContext dc = DataContextFactory.create[your_datastore_type]DataContext (...);
Query q = dc.query()

Interfaces and immutability

Instead of the previous JavaBeans based API, the 1.5 release includes interfaces for just about everything in the library. This means that it is as of now easier to test, integrate and deploy MetaModel. It also allows for better encapsulation internally as well as improved safety by exposing only immutable variants of the data structures (like Table, Schema, Column etc.) that are modifiable only by the framework.

Today it was also announced that Human Inference, the European data quality authority has finished their acquisition of the site, to actively enter the market for entry-level Open Source data oriented applications. All projects on, including MetaModel, will remain Open Source, but heavily enforced by the invested time and resources that Human Inference is adding to these projects.

For more information about the acquisition, see the press release on the Human Inference website.

MetaModel is already in use in a lot of projects, including the DataCleaner data analysis/profiling application and Quipu, the data warehouse generator. It is also in Human Inference’s plans to expand the usage of MetaModel into their enterprise-grade data matching and deduplication applications. If you think MetaModel 1.5 sounds interesting, head over to the website to learn more. MetaModel is available as a Maven artifact or as a traditional download at Google code.

MetaModel 1.5 release candidate 4 is out

As mentioned earlier MetaModel 1.5 is almost done and today we take one of the final steps towards the release: The release of what looks like the last release candidate of 1.5: Release candidate 4 (RC4). Grab it while it's hot in the maven repositories:


RC4 improves on the previous release candidates with a few minor, but important, tweaks to the framework:

We are now just looking forward for the release of MetaModel 1.5 final. If you experience any issues or have any feedback to RC4, let us know ASAP.

MetaModel 1.5 release candidate(s) released

During the last couple of weeks a lot of attention has gone into the next major version of MetaModel. Two release candidates have been released so far. Get the latest one at the maven repositories and tell us what you think:


(notice the change of groupId to org.eobjects.metamodel).

The major changes in MetaModel 1.5 are:

  • Interfaces have been introduced for the types that are used throughout the library: DataContext, Schema, Table, Column, Relationship
  • Both mutable and immutable implementations of these types are offered.
  • A new query builder API is provided directly through the DataContext interface. The builder API will make sure that your queries are correctly built and makes it a lot easier to compose the queries correctly with auto-completion in your IDE because of a flexible set of interfaces for the various stages of building a query. Some examples are:
    DataContext dc = ...;
    Query q1 = dc.query.from(table).select(column1)
    Query q2 = dc.query.from(table)
  • Lots of minor bugfixes and improvements to performance.

We anticipate a final release of MetaModel 1.5 soon. Let us know what you think of the release candidates so that we can adjust if needed before the final release!

MetaModel 1.2 introduces cross-datastore querying and MS Access and dBase support

We're happy to present a new version of the wonderful MetaModel component. This version adds a radical new feature: Cross-datastore querying, which means that you can now execute queries that spans multiple datastores (ie. with transparent client-side joining, filtering, grouping etc.). You can check out a simple example of this at kasper's source (blog).

Version 1.2 also adds support for two long-awaited datastores: Microsoft Access databases and dBase databases. Access support is implemented for MetaModel with a core based on the Jackcess project. MetaModel's dBase support is based on a derivate of xBaseJ, courtesy of xBaseJ, American Coders and Joe McVerry.

To look into MetaModel 1.2, here are the crucial resources:

  • Downloadables at google code.
  • Javadocs available online.
  • Maven-support out of the box:

With MetaModel 1.2 we're feature-complete with all of the 1.x features of the MetaModel-roadmap. We hope that you will find it to be as great and useful as we ever intended it to be!

MetaModel 1.1.8 adds better SQL Server support

I'm happy to announce the release of MetaModel 1.1.8.

This release is a minor release with updates only relating to MS SQL Server. The changes are, however, profound in this regard. Microsoft SQL Server JDBC drivers are known to be quirky when it comes to metadata exploration and we are happy to say that MetaModel now addresses these issues. So if you're a MS SQL Server you should be sure to get the latest version of MetaModel!

MetaModel is as always available at the following locations:

  • Downloadables at google code.
  • Javadocs available online.
  • Maven-support out of the box:

We hope you're all satisified with the improvements of this release and don't hesitate to give us any feedback.

Explore and query all your datastores with MetaModel 1.1.7

We're pleased to announce the release of MetaModel 1.1.7. The major changes from our latest release is the introduction of two important improvements:

  • Microsoft SQL Server is finally supported and integration tests have been added to our portfolio of tests of supported databases. Thank you to Asbjørn Leeth for the major contributions of this feature.
  • We've added an option to configure the character encoding for opening CSV files.

With the addition of these two improvements we think that we've added some significant "drops in the ocean" on our way of becoming the most comprehensive and advanced framework for object-oriented querying and datastore-independent schema exploration.

If you use Maven, update your dependencies to the following:


... or if you don't, head on over to our download site at Google Code and download a copy of the release.

MetaModel 1.1.6 released: Small changes, a bug fixed

We've released yet another version of MetaModel, namely version 1.1.6.

This release contains very few changes to the 1.1.5 release:

  • A convenience method was added to the Query class: select(FunctionType, Column).
  • Upgrading the Apache POI version in MetaModel introduced a few bugs that we did not discover in the 1.1.5 milestone. In 1.1.6 we fixed these bugs and unittesting was significantly improved for this part of the code to prevent any new bugs from emerging.

We hope you enjoy this release and excuse for the hectic release schedule - the before mentioned bug fixes where critical and we hope that you appreciate the quick response from the community. announces the release of MetaModel 1.1.5

We have just released the newest version of MetaModel, 1.1.5. This release is a minor release which means no API changes, but a few upgrades in terms of performance, flexibility and ease of distribution (full list):

  • The most important upgrade have been to CSV performance. We encountered a bug when querying this type of datastore that meant that the whole DataSet was stored in memory while using it. This has undergone quite some refactoring so that it will now stream through memory as expected, thus keeping the door open for very large CSV files.
  • A minor change in the column naming scheme have been implemented for the Excel-based DataContext's. This means that if the first row of a spreadsheet contains only blank fields, we will automatically assign the names "[column 1]", "[column 2]" etc. accordingly.
  • The downloadable zip or tar.gz file will now contain a "MetaModel-1.1.5-all.jar" file, which is an assembled jar file containing the classes of all MetaModel modules (core, csv, jdbc, excel etc.), which should substantially ease deployment of the framework.

We hope you enjoy the new release of MetaModel and keep up the good work of providing the valuable feedback that drives development of it.

First commercial support company for DataCleaner and MetaModel

Today we are announcing the first company, Lund&Bendsen, to officially support DataCleaner and MetaModel on a commercial level. These projects are, as you know, independent projects that are run with the community in mind. But as time goes on they grow and for companies to pick them up and start using them in a commercial setting we also welcome third party commercial support to help spread the projects to environments where community-based support is insufficient.

Lund&Bendsen is a Danish company with a strong expertise in Java development and training. Their service offerings include training, customization, integration and enhancement of DataCleaner and MetaModel so if your company is considering applying DataCleaner they might be interested in hiring some professionals to aid them in the process.

Over time more companies are expected to join in on commercial support for the projects. Keep up to date on the DataCleaner support page and don't hesitate to contact us for any inquiries in this regard either.

MetaModel 1.1.4 released

A new release of MetaModel is ready for download. The new version, 1.1.4, is a bug-fix release with a critical issue for PostgreSQL databases fixed. Other than that no changes from 1.1.3, so it should be a drop-in replacement update.


  • You can download an archived version
  • Or get it using maven:

Maven issues and MetaModel 1.1.3-FINAL

As we where recently made aware of, we have once again messed up our maven deployments of MetaModel, sorry! If you're using maven for your Java projects and you just updated your <dependency> tag in your POM files, replacing the version entry "1.1.2" with "1.1.3", I'm sure you ran into a lot of ClassNotFoundException's, because the maven artifacts where in fact empty! We are very sorry about this poor release management situation, but here are a couple of ways that we (you) can fix this:

  1. You can add the eobjects maven repository to your POM. The eobjects maven repository contains valid maven artifacts so that's quite an easy fix:
        <name>Eobjects repository for Maven</name>
  1. You can wait a few hours and the central maven repo will have been updated with a couple of new artifacts with the "1.1.3-FINAL" version literal. So your new dependency will look like this:

MetaModel 1.1.3 released

We've just released MetaModel version 1.1.3. This is a stabilization release containing some microscopical bugfixes, specifically in regards of Schema serialization. If you're currently using any 1.1.x release of MetaModel, then you should do a drop-in replacement and expect no changes to your code.

As always MetaModel is available from our downloads page and through the maven repositories.

Unless anything urgent comes up this will be the last release of the 1.1 branch of MetaModel. The next focus of MetaModel 1.2 will be to include support for more datastore formats, including dBase and improved XML tag-to-table modelling.

And of course if you have any ideas for development, don't hesitate to let us know!

Error in the maven repository version of MetaModel 1.1.1

We have identified a problem with the MetaModel 1.1.1 artifacts in the maven repository, so we will be releasing MetaModel 1.1.2 very shortly. The problem was related to the upload process and caused the jar's in the repository to not contain any .class files! The downloadables from our website did not suffer from this problem, so if you're using those, you're OK.

The new maven artifacts can be downloaded using this dependency tag:


A single feature have been added in the 1.1.2 release - CSV and XML content is now accessible not only through files but all kinds of input sources, including internet URLs.

Update: After some repository-synchronization waiting time the 1.1.2 release have finally been submitted to the public Maven repositories!

Minor fix release of MetaModel

We've just released MetaModel 1.1.1, the successor to the major 1.1 release!

This release is a minor fix release and you should be able to make an easy drop-in replacement of the 1.1 release. Here are the three fixes/improvements that we have been working on for the update:

  • Minor bug fixed: The equals() method of SelectClause had a minor bug related to comparing the distinct property.
  • Improvement: The Column and Table classes have had a getQualifiedLabel() method added. The qualified label is a dot-separated qualified name such as "MY_SCHEMA.MY_TABLE.MY_COLUMN". The qualified label can be used as a unique identifier for the column but is not necessarily directly transferable to SQL syntax.
  • Improvement: Getters and setters have been added to the SelectItem class

MetaModel 1.1 released!

As I write this newsitem I'm uploading the new version of MetaModel to the maven repositories! So let me take the time to tell you what's new in this release.

First of all I'd like to say that this is really a release with lots of fundamental changes and we have sacrificed backwards-compatibility at some places, so be sure to check that everything is working exactly as before. That said - those things that we have changed will also cause you compilation problems, so if you do a drop-in replacement and your build fails, then it's because the features have changed. We think this is the easiest way for everybody to deal with changes - it's a lot more obvious that you need to do something if it's really keeping your application from working! The good thing is that the new MetaModel provides a lot of great improvements and new features!

Here's a sum-up of the changes made to MetaModel from version 1.0 to 1.1:

  • We've done a major restructuring of the project as to make it more modular and easier to figure out.
  • This also means that the way you create DataContext objects have changed. In 1.0 you used the constructor of DataContext. This approach have been replaced by a factory class, which does all the instantiation and initialization stuff for you: DataContextFactory.
  • The MetaModel project is now LGPL licensed instead of using the Apache License version 2.0. For more info see MetaModelLicense.
  • The built-in query-engine, "Query postprocessor", which is used to serve CSV, Excel and XML content, have gone through numerous improvements to performance and functinality.
  • Column types can now be detected, narrowed and transformed using the Query postprocessor engine. This means that you can use the engine to detect and retrieve Integer, Double, Date, Time and Boolean types as well as the old String-based values, even from text-only datastores such as CSV files.
  • The JDBC datastores now have a query rewriter component which allows for optimization of queries using native SQL-syntax.
  • Query postprocessor now also generates information schemas used to investigate metadata about CSV, Excel and XML files.
  • Database compliancy have grown constantly during development and will keep doing so forward on. You can check the supported databases here: MetaModelCompliancy

All in all I think this release marks a high degree of maturity for the MetaModel project and we're very proud to present it to you!

Eobjects announces change in preferred license

We've made a principal decision at to change the preferred license of our projects from the Apache License 2.0 to the Lesser General Public License (LGPL).

The main difference between the two licenses are that the LGPL requires any modifications to be contributed back to the Open Source community (ie. licensed under a similar license; LGPL or GPL). The projects are gaining the obvious advantages of the LGPL by ensuring that improvements are submitted back to the projects. This also means that we don't risk that anyone sell modified versions of our projects. It is still just as appropriate to use the projects as a part of commercial applications, but any modifications must be contributed back to the community.

Initially this change in license will affect the two flagship projects of DataCleaner and MetaModel. This means that the next versions of these projects (DataCleaner 1.5 and MetaModel 1.1 accordingly) will be LGPL licensed. Also, new projects will be LGPL licensed unless special circumstances suggest otherwise.

MetaModel 1.0.7 is out!

We're happy to announce that MetaModel 1.0.7 has just been released! The new release should be a drop-in replacement with minor improvements and bugfixes:

  • Improved memory handling and fixed a very slight memory leak (#191).
  • Added support for RIGHT JOIN when using the embedded query engine (#175).
  • XML support have been improved with more precise column types (#176).

You can download the new MetaModel at our google code download site. For all you maven people out there, here's the update to your POM: