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. |