Project

General

Profile

CDM Library » History » Version 115

Andreas Müller, 10/30/2013 03:01 PM

1 114 Niels Hoffmann
~~~
2
<code class="html">
3
<div style="font-size:300%; color: #600;">Outdated!</div>
4
~~~
5
6 115 Andreas Müller
Please see http://cybertaxonomy.eu/cdmlib for documentation or [[CdmLibraryDev]] for development resources.
7 114 Niels Hoffmann
8
9
10
----
11
12
13 1 Markus Döring
14 112 Niels Hoffmann
15
16
17 1 Markus Döring
# CDM Java Library
18
19
20 113 Niels Hoffmann
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.
21 1 Markus Döring
22 113 Niels Hoffmann
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.
23 1 Markus Döring
24
25 113 Niels Hoffmann
{{>toc}}
26 1 Markus Döring
27 113 Niels Hoffmann
28 10 Markus Döring
29
30 65 Markus Döring
31 95 Andreas Müller
## Download
32
33
34
The latest version is available at the [[CdmLibraryDownload|CDM Library Download site]]
35
36
37
38 69 Markus Döring
39 70 Markus Döring
## Implementation
40 69 Markus Döring
41 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:
42 1 Markus Döring
43 74 Markus Döring
* MavenSite:cdmlib-commons
44 1 Markus Döring
45 74 Markus Döring
* MavenSite:cdmlib-model
46 1 Markus Döring
47 74 Markus Döring
* MavenSite:cdmlib-persistence
48 69 Markus Döring
49 94 Andreas Müller
* MavenSite:cdmlib-ext
50
51 74 Markus Döring
* MavenSite:cdmlib-services
52 69 Markus Döring
53 74 Markus Döring
* MavenSite:cdmlib-remote
54 69 Markus Döring
55 74 Markus Döring
* MavenSite:cdmlib-io
56 69 Markus Döring
57
58 1 Markus Döring
59 103 Andreas Müller
### layers
60 1 Markus Döring
61 104 Andreas Müller
[!cdmlib-arch4png|width=600px!]
62
63 83 Markus Döring
64
65
66
67 1 Markus Döring
### Domain Model - _cdmlib-model_
68 70 Markus Döring
69 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.
70
71 1 Markus Döring
72 70 Markus Döring
73 1 Markus Döring
#### Property change support
74 65 Markus Döring
75 83 Markus Döring
We have implemented java.bean propertyChangeSupport methods for the entire cdm domain classes to send change events to registered listeners. 
76 1 Markus Döring
77 70 Markus Döring
The [[TaxonomicEditor]] makes use of these through a data binding framework. See wiki:JavaResources#DataBinding for more.
78 1 Markus Döring
79 65 Markus Döring
80
81 1 Markus Döring
#### XML binding
82
83
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.
84 108 Andreas Müller
85
86
87
#### Name parser
88
89
Documentation is available at [[NameParserDocumentation]]
90 38 Markus Döring
91 1 Markus Döring
92 31 Markus Döring
93 72 Markus Döring
### Persistence Layer - _cdmlib-persistence_
94 1 Markus Döring
95 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.
96 21 Markus Döring
97 70 Markus Döring
98 1 Markus Döring
99 72 Markus Döring
### API - _cdmlib-services_
100 70 Markus Döring
101 72 Markus Döring
Work in progress. see "CdmLibrary#Servicelayer" or wiki:CdmAPI for now.
102 21 Markus Döring
103 1 Markus Döring
104
105 72 Markus Döring
### CDM Server - _cdmlib-remote_
106 1 Markus Döring
107 72 Markus Döring
That is the CdmServer community store.
108
109
110
111
### Import/Export - _cdmlib-io_
112
113
Supported import formats:
114
115 105 Andreas Müller
* BerlinModel database
116 72 Markus Döring
117 94 Andreas Müller
* TCS
118
119
* ABCD
120
121
* SDD
122 1 Markus Döring
123 105 Andreas Müller
* CDM XML
124 1 Markus Döring
125 105 Andreas Müller
* EndNote
126
127 111 Andreas Kohlbecker
* Excel (!NormalExplicit as described in http://code.google.com/p/gbif-providertoolkit/wiki/DataTransformations#Normalized_Explicit; see attachment:"GbifTaxonomyFormats.xls")
128 105 Andreas Müller
129 1 Markus Döring
Planned:
130
131 105 Andreas Müller
* DarwinCore
132 1 Markus Döring
133 105 Andreas Müller
134
Supported export formats:
135
136
* CDM XML
137
138
* BerlinModel database
139
140
* SDD
141
142
* TCS-RDF
143
144
Planned:
145
146
* TCS
147
148
* ABCD
149
150
* DarwinCore
151
152
* EndNote
153
154
155 1 Markus Döring
156 84 Andreas Müller
For more information about data conversion see [[SampleDataConversion]]
157
158 82 Markus Döring
159
160
## Releases
161
162
Releases are currently in 2 flavours:
163
164
165 1 Markus Döring
166 82 Markus Döring
### Versioning strategy
167 1 Markus Döring
168 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. 
169 1 Markus Döring
170 82 Markus Döring
171 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.
172
173
174
175
### Change Log
176
177 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]].
178
179 98 Andreas Müller
180
All other changes should be documented at [[CdmLibraryChanges]].
181
182
Beside the model changes the highest priority for documentation have changes to signatures of visible methods and changes to semantics of existing methods.
183
184
If you just add some new functionality we highly appreciate it's documentation but documentation should not run into a unproductive overhead.
185
186 82 Markus Döring
187 83 Markus Döring
   
188 82 Markus Döring
189
### Sourcecode via Subversion
190
191
The Maven project is available from our subversion server. For releases please see:
192
193
_http://dev.e-taxonomy.eu/svn/tags/cdmlib/_
194
195
196
197
198
### Eclipse plugin
199
200
For the cdmlib-service module we host an Eclipse plugin update site which is available here:
201
202 115 Andreas Müller
_http://cybertaxonomy.eu/cdmlib/update/_
203 102 Andreas Müller
204
205
206 110 Andreas Müller
## Developers Guide
207 102 Andreas Müller
208
209
See [[CdmLibraryDevelopersGuide]] for further information on how to develop the library
210 106 Andreas Müller
211
212
213 110 Andreas Müller
## Reference Documentation
214 106 Andreas Müller
215
216 109 Andreas Müller
A reference documentation is available [here](http://dev.e-taxonomy.eu/trac/attachment/wiki/CdmLibrary/ReferenceDocumentation.pdf.) This documentation is work in progress.