Project

General

Profile

CDM Library » History » Version 106

Andreas Müller, 09/23/2009 04:44 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 103 Andreas Müller
### layers
44 1 Markus Döring
45 104 Andreas Müller
[!cdmlib-arch4png|width=600px!]
46
47 83 Markus Döring
48
49
50
51 1 Markus Döring
### Domain Model - _cdmlib-model_
52 70 Markus Döring
53 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.
54
55 1 Markus Döring
56 70 Markus Döring
57 1 Markus Döring
#### Property change support
58 65 Markus Döring
59 83 Markus Döring
We have implemented java.bean propertyChangeSupport methods for the entire cdm domain classes to send change events to registered listeners. 
60 1 Markus Döring
61 70 Markus Döring
The [[TaxonomicEditor]] makes use of these through a data binding framework. See wiki:JavaResources#DataBinding for more.
62 1 Markus Döring
63 65 Markus Döring
64
65 70 Markus Döring
#### XML binding
66 61 Markus Döring
67 105 Andreas Müller
For data exchange purposes, serialization/deserialization of the domain objects of the cdmlib-model to/from XML format is supported via the [JAXB](https://jaxb.dev.java.net/) framework.
68 38 Markus Döring
69 1 Markus Döring
70 31 Markus Döring
71 72 Markus Döring
### Persistence Layer - _cdmlib-persistence_
72 1 Markus Döring
73 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.
74 21 Markus Döring
75 70 Markus Döring
76 1 Markus Döring
77 72 Markus Döring
### API - _cdmlib-services_
78 70 Markus Döring
79 72 Markus Döring
Work in progress. see "CdmLibrary#Servicelayer" or wiki:CdmAPI for now.
80 21 Markus Döring
81 1 Markus Döring
82
83 72 Markus Döring
### CDM Server - _cdmlib-remote_
84 1 Markus Döring
85 72 Markus Döring
That is the CdmServer community store.
86
87
88
89
### Import/Export - _cdmlib-io_
90
91
Supported import formats:
92
93 105 Andreas Müller
* BerlinModel database
94 72 Markus Döring
95 94 Andreas Müller
* TCS
96
97
* ABCD
98
99
* SDD
100 1 Markus Döring
101 105 Andreas Müller
* CDM XML
102 1 Markus Döring
103 105 Andreas Müller
* EndNote
104
105
* Excel (NormalExplicit) 
106
107 1 Markus Döring
Planned:
108
109 105 Andreas Müller
* DarwinCore
110 1 Markus Döring
111 105 Andreas Müller
112
Supported export formats:
113
114
* CDM XML
115
116
* BerlinModel database
117
118
* SDD
119
120
* TCS-RDF
121
122
Planned:
123
124
* TCS
125
126
* ABCD
127
128
* DarwinCore
129
130
* EndNote
131
132
133 1 Markus Döring
134 84 Andreas Müller
For more information about data conversion see [[SampleDataConversion]]
135
136 82 Markus Döring
137
138
## Releases
139
140
Releases are currently in 2 flavours:
141
142
143 1 Markus Döring
144 82 Markus Döring
### Versioning strategy
145 1 Markus Döring
146 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. 
147 1 Markus Döring
148 82 Markus Döring
149 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.
150
151
152
153
### Change Log
154
155 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]].
156
157 98 Andreas Müller
158
All other changes should be documented at [[CdmLibraryChanges]].
159
160
Beside the model changes the highest priority for documentation have changes to signatures of visible methods and changes to semantics of existing methods.
161
162
If you just add some new functionality we highly appreciate it's documentation but documentation should not run into a unproductive overhead.
163
164 82 Markus Döring
165 83 Markus Döring
   
166 82 Markus Döring
167
### Sourcecode via Subversion
168
169
The Maven project is available from our subversion server. For releases please see:
170
171
_http://dev.e-taxonomy.eu/svn/tags/cdmlib/_
172
173
174
175
176
### Eclipse plugin
177
178
For the cdmlib-service module we host an Eclipse plugin update site which is available here:
179
180
_http://wp5.e-taxonomy.eu/cdmlib/update/_
181 102 Andreas Müller
182
183
184
### Developers Guide
185
186
187
See [[CdmLibraryDevelopersGuide]] for further information on how to develop the library
188 106 Andreas Müller
189
190
191
### Reference Documentation
192
193
194
A reference documentation is available at . This documentation is work in progress.