Project

General

Profile

CDM Library » History » Version 101

Andreas Müller, 12/15/2008 07:17 PM

1 1 Markus Döring
2
# CDM Java Library
3
4
5
{{>toc}}
6
7
8
9 22 Markus Döring
The CDM Library is meant to be a shared library for the between several applications which can be of any kind, i.e. J2EE having an application container, simple command line tools or swing desktop applications.
10 1 Markus Döring
11 82 Markus Döring
The library defines a persistent domain model, EDITs [[CommonDataModel]], that can be serialised and read in XML. Business logic shared between applications should be part of this library as much as possible, while application specific logic has to stay out. We are developing this library in collaboration with the [CATE](http://www.cate-project.org/) project initially, but we seeking development collaboration with other projects like Key2Nature and PESI as well.
12 10 Markus Döring
13
14 65 Markus Döring
15 95 Andreas Müller
## Download
16
17
18
The latest version is available at the [[CdmLibraryDownload|CDM Library Download site]]
19
20
21
22 69 Markus Döring
23 70 Markus Döring
## Implementation
24 69 Markus Döring
25 74 Markus Döring
We use Wikipedia:Apache_Maven 2 for this project. The CDM library itself is devided into several maven subprojects, providing the following seperation of concerns:
26 1 Markus Döring
27 74 Markus Döring
* MavenSite:cdmlib-commons
28 1 Markus Döring
29 74 Markus Döring
* MavenSite:cdmlib-model
30 1 Markus Döring
31 74 Markus Döring
* MavenSite:cdmlib-persistence
32 69 Markus Döring
33 94 Andreas Müller
* MavenSite:cdmlib-ext
34
35 74 Markus Döring
* MavenSite:cdmlib-services
36 69 Markus Döring
37 74 Markus Döring
* MavenSite:cdmlib-remote
38 69 Markus Döring
39 74 Markus Döring
* MavenSite:cdmlib-io
40 69 Markus Döring
41
42 1 Markus Döring
43 83 Markus Döring
### Current layers
44 1 Markus Döring
45 83 Markus Döring
![](cdmlib-arch2.png)
46
47
48
### Planned layers
49
50
Reuse service layer for all clients (Eclipse editor, CDM Server, CATE webapplication) and create DTOs made of preloaded domain classes instead of seperate classes.
51
52
53
![](cdmlib-arch3.png)
54
55
56
57 1 Markus Döring
### Domain Model - _cdmlib-model_
58 70 Markus Döring
59 69 Markus Döring
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.
60
61 1 Markus Döring
62 70 Markus Döring
63 1 Markus Döring
#### Property change support
64 65 Markus Döring
65 83 Markus Döring
We have implemented java.bean propertyChangeSupport methods for the entire cdm domain classes to send change events to registered listeners. 
66 1 Markus Döring
67 70 Markus Döring
The [[TaxonomicEditor]] makes use of these through a data binding framework. See wiki:JavaResources#DataBinding for more.
68 1 Markus Döring
69 65 Markus Döring
70
71 70 Markus Döring
#### XML binding
72 61 Markus Döring
73 85 Anahit Babadshanjan
For data exchange purposes, we want to serialize/deserialize the domain objects of the cdmlib-model to/from XML format using the [JAXB](https://jaxb.dev.java.net/) framework.
74 38 Markus Döring
75 1 Markus Döring
76 31 Markus Döring
77 72 Markus Döring
### Persistence Layer - _cdmlib-persistence_
78 1 Markus Döring
79 70 Markus Döring
we use Hibernate for persistence. We run unit and integration tests for [[MySQL]], Hypersonic, Postgres and MS SQL Server on a regular basis.
80 21 Markus Döring
81 70 Markus Döring
82 1 Markus Döring
83 72 Markus Döring
### API - _cdmlib-services_
84 70 Markus Döring
85 72 Markus Döring
Work in progress. see "CdmLibrary#Servicelayer" or wiki:CdmAPI for now.
86 21 Markus Döring
87 1 Markus Döring
88
89 72 Markus Döring
### CDM Server - _cdmlib-remote_
90 1 Markus Döring
91 72 Markus Döring
That is the CdmServer community store.
92
93
94
95
### Import/Export - _cdmlib-io_
96
97
Supported import formats:
98
99
* [[BerlinModel]] database
100
101 94 Andreas Müller
* TCS
102
103
* ABCD
104
105
* SDD
106
107
* EDIT XML
108
109 72 Markus Döring
Planned:
110 1 Markus Döring
111 94 Andreas Müller
* DarwinCOre
112 1 Markus Döring
113
* TaxonX
114
115 84 Andreas Müller
For more information about data conversion see [[SampleDataConversion]]
116
117 82 Markus Döring
118
119
## Releases
120
121
Releases are currently in 2 flavours:
122
123
124 1 Markus Döring
125 82 Markus Döring
### Versioning strategy
126 1 Markus Döring
127 83 Markus Döring
Starting with the frozen [[CommonDataModel]] v1 we release minor upgrades for every model change in the library. Inferior version numbers (3rd level) are for bug-fixes and library extensions, which do not change the core model classes. This guarantees that all bug-fix releases are still working on the same database structure. 
128 1 Markus Döring
129 82 Markus Döring
130 98 Andreas Müller
For example: Svn:tags/cdmlib/rel_1.1.0 and rel_1.1.8 will work both on the same database structure as generated by hibernate. But for rel_1.2.0 you will have to update or better recreate your database, currently still losing all your data. In a later stage we will provide stable import/export formats to migrate your data to new versions.
131
132
133
134
### Change Log
135
136 99 Andreas Müller
All substantial changes to the library should be documented. This applies very strictly to all *model changes*. For them a separate changelog site has been setup at [[CdmChanges]].
137
138 98 Andreas Müller
139
All other changes should be documented at [[CdmLibraryChanges]].
140
141
Beside the model changes the highest priority for documentation have changes to signatures of visible methods and changes to semantics of existing methods.
142
143
If you just add some new functionality we highly appreciate it's documentation but documentation should not run into a unproductive overhead.
144
145 82 Markus Döring
146 83 Markus Döring
   
147 82 Markus Döring
148
### Sourcecode via Subversion
149
150
The Maven project is available from our subversion server. For releases please see:
151
152
_http://dev.e-taxonomy.eu/svn/tags/cdmlib/_
153
154
155
156
157
### Eclipse plugin
158
159
For the cdmlib-service module we host an Eclipse plugin update site which is available here:
160
161
_http://wp5.e-taxonomy.eu/cdmlib/update/_