The CDM library itself is devided into several layers, as to provide a seperation of concerns.

CDM Library layers

Domain Model - cdmlib-model

Domain objects (also called business objects sometimes) are directly taken as POJOs from the CommonDataModel. The logic inherent to the domain objects are restricted to their own object graph, i.e. their own properties and related objects. But not unrelated objects available through DAOs only. Typical logic includes validation and calculations.

Property change support

We have implemented java.bean propertyChangeSupport methods for the entire cdm domain classes to send change events to registered listeners. The TaxonomicEditor makes use of these through a data binding framework. See wiki:JavaResources#DataBinding for more.

XML binding

For data exchange purposes, serialization/deserialization of the domain objects of the cdmlib-model to/from XML format is supported via the [https://jaxb.dev.java.net/ JAXB] framework.

Name parser

Documentation is available at NameParserDocumentation

Persistence Layer - cdmlib-persistence

we use Hibernate for persistence. We run unit and integration tests for MySQL, Hypersonic, Postgres and MS SQL Server on a regular basis.

API - cdmlib-services

Work in progress. see "CdmLibrary#Servicelayer" or wiki:CdmAPI for now.