Project

General

Profile

CDM Library » History » Version 117

Andreas Müller, 02/04/2021 09:48 AM

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