this file is imported in the multipage it provides some string parsing
[cdmlib.git] / src / docbkx / service.xml
1 <?xml version="1.0" encoding="UTF-8"?>
2 <chapter version="5.0" xml:id="service" xmlns="http://docbook.org/ns/docbook"
3 xmlns:ns5="http://www.w3.org/1999/xhtml"
4 xmlns:ns4="http://www.w3.org/2000/svg"
5 xmlns:ns3="http://www.w3.org/1998/Math/MathML"
6 xmlns:ns2="http://www.w3.org/1999/xlink"
7 xmlns:ns="http://docbook.org/ns/docbook">
8 <info>
9 <title>Services</title>
10 </info>
11
12 <section>
13 <para>The service layer of the CDM contains a set of service objects that
14 are intended to provide basic query, search and persistence functionality
15 for the CDM objects, plus business logic to support common tasks. These
16 objects are intended to be singleton services used across the whole
17 application. As with the persistence layer, the services are strongly
18 typed, generic service objects, with a single service per (significant
19 base) class. All service classes implement
20 <interfacename>IService</interfacename> and most implement
21 <interfacename>IVersionableService</interfacename>, providing access to
22 generic base methods to deal with the class.</para>
23
24 <figure>
25 <title>An overview of the cdm service layer</title>
26
27 <mediaobject>
28 <imageobject role="html">
29 <imagedata fileref="resources/images/service.png" format="png" />
30 </imageobject>
31
32 <imageobject role="fo">
33 <imagedata contentwidth="160mm"
34 fileref="resources/images/service.png" format="png"
35 scalefit="1" />
36 </imageobject>
37
38 <caption>The Service layer in the CDM Java Library. There is a service for each major type of data that the CDM deals with.</caption>
39 </mediaobject>
40 </figure>
41
42 <table frame="all" xml:id="iservice-methods">
43 <title><interfacename>IService</interfacename> methods</title>
44
45 <tgroup align="left" cols="2" colsep="1" rowsep="1">
46 <colspec colname="c1" />
47
48 <colspec colname="c2" />
49
50 <thead>
51 <row>
52 <entry>Method</entry>
53
54 <entry>Description</entry>
55 </row>
56 </thead>
57
58 <tbody>
59 <row>
60 <entry>
61 <methodsynopsis>
62 <type>UUID</type>
63
64 <methodname>saveOrUpdate</methodname>
65
66 <methodparam>
67 <type>T</type>
68
69 <parameter>newOrTransientEntity</parameter>
70 </methodparam>
71 </methodsynopsis>
72 </entry>
73
74 <entry>
75 <para>Makes a new object persistent, or persists the state of a
76 transient object.</para>
77 </entry>
78 </row>
79
80 <row>
81 <entry>
82 <methodsynopsis>
83 <type>Map&lt;UUID,T&gt;</type>
84
85 <methodname>save</methodname>
86
87 <methodparam>
88 <type>Collection&lt;T&gt;</type>
89
90 <parameter>newEntities</parameter>
91 </methodparam>
92 </methodsynopsis>
93 </entry>
94
95 <entry>
96 <para>Makes a collection of new objects persistent.</para>
97 </entry>
98 </row>
99
100 <row>
101 <entry>
102 <methodsynopsis>
103 <type>UUID</type>
104
105 <methodname>save</methodname>
106
107 <methodparam>
108 <type>T</type>
109
110 <parameter>newEntity</parameter>
111 </methodparam>
112 </methodsynopsis>
113 </entry>
114
115 <entry>
116 <para>Makes a new object persistent.</para>
117 </entry>
118 </row>
119
120 <row>
121 <entry>
122 <methodsynopsis>
123 <type>UUID</type>
124
125 <methodname>update</methodname>
126
127 <methodparam>
128 <type>T</type>
129
130 <parameter>newEntity</parameter>
131 </methodparam>
132 </methodsynopsis>
133 </entry>
134
135 <entry>
136 <para>Makes changes to a transient object persistent.</para>
137 </entry>
138 </row>
139
140 <row>
141 <entry>
142 <methodsynopsis>
143 <type>UUID</type>
144
145 <methodname>merge</methodname>
146
147 <methodparam>
148 <type>T</type>
149
150 <parameter>newEntity</parameter>
151 </methodparam>
152 </methodsynopsis>
153 </entry>
154
155 <entry>
156 <para>Merges the state of a detached object into the persisted
157 version.</para>
158 </entry>
159 </row>
160
161 <row>
162 <entry>
163 <methodsynopsis>
164 <type>UUID</type>
165
166 <methodname>delete</methodname>
167
168 <methodparam>
169 <type>T</type>
170
171 <parameter>persistentEntity</parameter>
172 </methodparam>
173 </methodsynopsis>
174 </entry>
175
176 <entry>
177 <para>Deletes a persistent object.</para>
178 </entry>
179 </row>
180
181 <row>
182 <entry>
183 <methodsynopsis>
184 <type>List&lt;T&gt;</type>
185
186 <methodname>list</methodname>
187
188 <methodparam>
189 <type>Class&lt;? extends T&gt;</type>
190
191 <parameter>clazz</parameter>
192 </methodparam>
193
194 <methodparam>
195 <type>Integer</type>
196
197 <parameter>pageSize</parameter>
198 </methodparam>
199
200 <methodparam>
201 <type>Integer</type>
202
203 <parameter>pageNumber</parameter>
204 </methodparam>
205
206 <methodparam>
207 <type>List&lt;OrderHint&gt;</type>
208
209 <parameter>orderHints</parameter>
210 </methodparam>
211
212 <methodparam>
213 <type>List&lt;String&gt;</type>
214
215 <parameter>propertyPaths</parameter>
216 </methodparam>
217 </methodsynopsis>
218 </entry>
219
220 <entry>
221 <para>Returns a (sub-)list of objects matching the type
222 <parameter>clazz</parameter>, sorted according to the order
223 hints and initialized according to the propertyPaths.</para>
224 </entry>
225 </row>
226
227 <row>
228 <entry>
229 <methodsynopsis>
230 <type>Pager&lt;T&gt;</type>
231
232 <methodname>page</methodname>
233
234 <methodparam>
235 <type>Class&lt;? extends T&gt;</type>
236
237 <parameter>clazz</parameter>
238 </methodparam>
239
240 <methodparam>
241 <type>Integer</type>
242
243 <parameter>pageSize</parameter>
244 </methodparam>
245
246 <methodparam>
247 <type>Integer</type>
248
249 <parameter>pageNumber</parameter>
250 </methodparam>
251
252 <methodparam>
253 <type>List&lt;OrderHint&gt;</type>
254
255 <parameter>orderHints</parameter>
256 </methodparam>
257
258 <methodparam>
259 <type>List&lt;String&gt;</type>
260
261 <parameter>propertyPaths</parameter>
262 </methodparam>
263 </methodsynopsis>
264 </entry>
265
266 <entry>
267 <para>Returns a paged (sub-)list of objects matching the type
268 <parameter>clazz</parameter>, sorted according to the order
269 hints and initialized according to the propertyPaths.</para>
270 </entry>
271 </row>
272
273 <row>
274 <entry>
275 <methodsynopsis>
276 <type>int</type>
277
278 <methodname>count</methodname>
279
280 <methodparam>
281 <type>Class&lt;? extends T&gt;</type>
282
283 <parameter>clazz</parameter>
284 </methodparam>
285 </methodsynopsis>
286 </entry>
287
288 <entry>
289 <para>Returns a count of objects matching the type
290 <parameter>clazz</parameter>.</para>
291 </entry>
292 </row>
293
294 <row>
295 <entry>
296 <methodsynopsis>
297 <type>T</type>
298
299 <methodname>find</methodname>
300
301 <methodparam>
302 <type>UUID</type>
303
304 <parameter>uuid</parameter>
305 </methodparam>
306 </methodsynopsis>
307 </entry>
308
309 <entry>
310 <para>Returns an object of type T matching the supplied uuid if
311 it exists.</para>
312 </entry>
313 </row>
314
315 <row>
316 <entry>
317 <methodsynopsis>
318 <type>Collection&lt;T&gt;</type>
319
320 <methodname>find</methodname>
321
322 <methodparam>
323 <type>Collection&lt;UUID&gt;</type>
324
325 <parameter>uuids</parameter>
326 </methodparam>
327 </methodsynopsis>
328 </entry>
329
330 <entry>
331 <para>Returns a collection of objects of type T matching the
332 uuids supplied, if they exist.</para>
333 </entry>
334 </row>
335
336 <row>
337 <entry>
338 <methodsynopsis>
339 <type>T</type>
340
341 <methodname>load</methodname>
342
343 <methodparam>
344 <type>UUID</type>
345
346 <parameter>uuid</parameter>
347 </methodparam>
348
349 <methodparam>
350 <type>Collection&lt;String&gt;</type>
351
352 <parameter>propertyPaths</parameter>
353 </methodparam>
354 </methodsynopsis>
355 </entry>
356
357 <entry>
358 <para>Returns an object of type T with properties initialized
359 according to the rules described below.</para>
360 </entry>
361 </row>
362
363 <row>
364 <entry>
365 <methodsynopsis>
366 <type>Set&lt;T&gt;</type>
367
368 <methodname>load</methodname>
369
370 <methodparam>
371 <type>Collection&lt;UUID&gt;</type>
372
373 <parameter>uuids</parameter>
374 </methodparam>
375
376 <methodparam>
377 <type>Collection&lt;String&gt;</type>
378
379 <parameter>propertyPaths</parameter>
380 </methodparam>
381 </methodsynopsis>
382 </entry>
383
384 <entry>
385 <para>Returns a collection of objects of type T matching the
386 uuids supplied, if they exist, initialized according to the
387 rules described below.</para>
388 </entry>
389 </row>
390
391 <row>
392 <entry>
393 <methodsynopsis>
394 <type>boolean</type>
395
396 <methodname>exists</methodname>
397
398 <methodparam>
399 <type>UUID</type>
400
401 <parameter>uuid</parameter>
402 </methodparam>
403 </methodsynopsis>
404 </entry>
405
406 <entry>
407 <para>Returns true if there is an object of type T in the
408 database matching the supplied uuid.</para>
409 </entry>
410 </row>
411
412 <row>
413 <entry>
414 <methodsynopsis>
415 <type>Class&lt;T&gt;</type>
416
417 <methodname>getType</methodname>
418 </methodsynopsis>
419 </entry>
420
421 <entry>
422 <para>Returns the class of objects that this Service provides
423 access to.</para>
424 </entry>
425 </row>
426 </tbody>
427 </tgroup>
428 </table>
429
430 <table frame="all" xml:id="iversionableservice-methods">
431 <title><interfacename>IVersionableService</interfacename>
432 methods</title>
433
434 <tgroup align="left" cols="2" colsep="1" rowsep="1">
435 <colspec colname="c1" />
436
437 <colspec colname="c2" />
438
439 <thead>
440 <row>
441 <entry>Method</entry>
442
443 <entry>Description</entry>
444 </row>
445 </thead>
446
447 <tbody>
448 <row>
449 <entry>
450 <methodsynopsis>
451 <type>Pager&lt;AuditEventRecord&lt;T&gt;&gt;</type>
452
453 <methodname>pageAuditEvents</methodname>
454
455 <methodparam>
456 <type>T</type>
457
458 <parameter>versionablentity</parameter>
459 </methodparam>
460
461 <methodparam>
462 <type>Integer</type>
463
464 <parameter>pageSize</parameter>
465 </methodparam>
466
467 <methodparam>
468 <type>Integer</type>
469
470 <parameter>pageNumber</parameter>
471 </methodparam>
472
473 <methodparam>
474 <type>AuditEventSort</type>
475
476 <parameter>sort</parameter>
477 </methodparam>
478 </methodsynopsis>
479 </entry>
480
481 <entry>
482 <para>Makes a new object persistent, or persists the state of a
483 transient object.</para>
484 </entry>
485 </row>
486
487 <row>
488 <entry>
489 <methodsynopsis>
490 <type>AuditEvent</type>
491
492 <methodname>getNextAuditEvent</methodname>
493
494 <methodparam>
495 <type>T</type>
496
497 <parameter>t</parameter>
498 </methodparam>
499 </methodsynopsis>
500 </entry>
501
502 <entry>
503 <para>Makes a collection of new objects persistent.</para>
504 </entry>
505 </row>
506
507 <row>
508 <entry>
509 <methodsynopsis>
510 <type>AuditEvent</type>
511
512 <methodname>getPreviousAuditEvent</methodname>
513
514 <methodparam>
515 <type>T</type>
516
517 <parameter>t</parameter>
518 </methodparam>
519 </methodsynopsis>
520 </entry>
521
522 <entry>
523 <para>Makes a new object persistent.</para>
524 </entry>
525 </row>
526
527 <row>
528 <entry>
529 <methodsynopsis>
530 <type>boolean</type>
531
532 <methodname>existed</methodname>
533
534 <methodparam>
535 <type>UUID</type>
536
537 <parameter>uuid</parameter>
538 </methodparam>
539 </methodsynopsis>
540 </entry>
541
542 <entry>
543 <para>Makes a new object persistent.</para>
544 </entry>
545 </row>
546 </tbody>
547 </tgroup>
548 </table>
549
550 <section>
551 <info>
552 <title>Paging Resultsets</title>
553 </info>
554
555 <para>In addition to being able to return results as a
556 <interfacename>java.util.List</interfacename>, service layer methods can
557 return results as a <interfacename>Pager</interfacename>. Pagers contain
558 a sublist of the total result set, plus a count of the total number of
559 matching objects. In addition, they contain a number of convenience
560 methods to facilitate the rendering of paged resultsets, including the
561 generation of labels for pages, based upon the matching objects.</para>
562 </section>
563 </section>
564 </chapter>