Project

General

Profile

CDM Library » History » Version 104

Andreas Müller, 09/23/2009 04:04 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 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.
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
* [[BerlinModel]] database
94
95 94 Andreas Müller
* TCS
96
97
* ABCD
98
99
* SDD
100
101
* EDIT XML
102
103 72 Markus Döring
Planned:
104 1 Markus Döring
105 94 Andreas Müller
* DarwinCOre
106 1 Markus Döring
107
* TaxonX
108
109 84 Andreas Müller
For more information about data conversion see [[SampleDataConversion]]
110
111 82 Markus Döring
112
113
## Releases
114
115
Releases are currently in 2 flavours:
116
117
118 1 Markus Döring
119 82 Markus Döring
### Versioning strategy
120 1 Markus Döring
121 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. 
122 1 Markus Döring
123 82 Markus Döring
124 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.
125
126
127
128
### Change Log
129
130 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]].
131
132 98 Andreas Müller
133
All other changes should be documented at [[CdmLibraryChanges]].
134
135
Beside the model changes the highest priority for documentation have changes to signatures of visible methods and changes to semantics of existing methods.
136
137
If you just add some new functionality we highly appreciate it's documentation but documentation should not run into a unproductive overhead.
138
139 82 Markus Döring
140 83 Markus Döring
   
141 82 Markus Döring
142
### Sourcecode via Subversion
143
144
The Maven project is available from our subversion server. For releases please see:
145
146
_http://dev.e-taxonomy.eu/svn/tags/cdmlib/_
147
148
149
150
151
### Eclipse plugin
152
153
For the cdmlib-service module we host an Eclipse plugin update site which is available here:
154
155
_http://wp5.e-taxonomy.eu/cdmlib/update/_
156 102 Andreas Müller
157
158
159
### Developers Guide
160
161
162
See [[CdmLibraryDevelopersGuide]] for further information on how to develop the library