Project

General

Profile

Download (35.8 KB) Statistics
| Branch: | Tag: | Revision:
1
// $Id$
2
/**
3
* Copyright (C) 2013 EDIT
4
* European Distributed Institute of Taxonomy
5
* http://www.e-taxonomy.eu
6
*
7
* The contents of this file are subject to the Mozilla Public License Version 1.1
8
* See LICENSE.TXT at the top of this package for the full license terms.
9
*/
10
package eu.etaxonomy.taxeditor.editor.view.dataimport.transientServices;
11

    
12
import java.io.IOException;
13
import java.util.Collection;
14
import java.util.HashSet;
15
import java.util.List;
16
import java.util.Map;
17
import java.util.Set;
18
import java.util.UUID;
19

    
20
import org.apache.lucene.index.CorruptIndexException;
21
import org.apache.lucene.queryParser.ParseException;
22
import org.hibernate.LockMode;
23
import org.hibernate.Session;
24
import org.hibernate.criterion.Criterion;
25
import org.hibernate.envers.query.criteria.AuditCriterion;
26
import org.hibernate.search.spatial.impl.Rectangle;
27

    
28
import eu.etaxonomy.cdm.api.facade.DerivedUnitFacade;
29
import eu.etaxonomy.cdm.api.facade.DerivedUnitFacadeNotSupportedException;
30
import eu.etaxonomy.cdm.api.service.DeleteResult;
31
import eu.etaxonomy.cdm.api.service.IOccurrenceService;
32
import eu.etaxonomy.cdm.api.service.config.DeleteConfiguratorBase;
33
import eu.etaxonomy.cdm.api.service.config.IIdentifiableEntityServiceConfigurator;
34
import eu.etaxonomy.cdm.api.service.pager.Pager;
35
import eu.etaxonomy.cdm.api.service.search.SearchResult;
36
import eu.etaxonomy.cdm.api.service.util.TaxonRelationshipEdge;
37
import eu.etaxonomy.cdm.common.monitor.IProgressMonitor;
38
import eu.etaxonomy.cdm.model.common.Annotation;
39
import eu.etaxonomy.cdm.model.common.ISourceable;
40
import eu.etaxonomy.cdm.model.common.IdentifiableSource;
41
import eu.etaxonomy.cdm.model.common.LSID;
42
import eu.etaxonomy.cdm.model.common.Language;
43
import eu.etaxonomy.cdm.model.common.Marker;
44
import eu.etaxonomy.cdm.model.common.MarkerType;
45
import eu.etaxonomy.cdm.model.common.UuidAndTitleCache;
46
import eu.etaxonomy.cdm.model.description.DescriptionBase;
47
import eu.etaxonomy.cdm.model.location.Country;
48
import eu.etaxonomy.cdm.model.media.Media;
49
import eu.etaxonomy.cdm.model.media.Rights;
50
import eu.etaxonomy.cdm.model.molecular.DnaSample;
51
import eu.etaxonomy.cdm.model.molecular.Sequence;
52
import eu.etaxonomy.cdm.model.occurrence.DerivationEvent;
53
import eu.etaxonomy.cdm.model.occurrence.DerivedUnit;
54
import eu.etaxonomy.cdm.model.occurrence.DeterminationEvent;
55
import eu.etaxonomy.cdm.model.occurrence.FieldUnit;
56
import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationBase;
57
import eu.etaxonomy.cdm.model.taxon.Taxon;
58
import eu.etaxonomy.cdm.model.taxon.TaxonBase;
59
import eu.etaxonomy.cdm.model.view.AuditEvent;
60
import eu.etaxonomy.cdm.model.view.AuditEventRecord;
61
import eu.etaxonomy.cdm.persistence.dao.common.AuditEventSort;
62
import eu.etaxonomy.cdm.persistence.query.Grouping;
63
import eu.etaxonomy.cdm.persistence.query.MatchMode;
64
import eu.etaxonomy.cdm.persistence.query.OrderHint;
65
import eu.etaxonomy.cdm.strategy.cache.common.IIdentifiableEntityCacheStrategy;
66
import eu.etaxonomy.cdm.strategy.match.IMatchStrategy;
67
import eu.etaxonomy.cdm.strategy.merge.IMergeStrategy;
68

    
69
/**
70
 * @author pplitzner
71
 * @date 26.09.2013
72
 *
73
 */
74
public class TransientOccurenceService implements IOccurrenceService {
75

    
76
    private final IOccurrenceService defaultService;
77
    private final Collection<SpecimenOrObservationBase<?>> units;
78

    
79
    /**
80
     * @param defaultService
81
     */
82
    public TransientOccurenceService(IOccurrenceService defaultService) {
83
        this.defaultService = defaultService;
84
        this.units = new HashSet<SpecimenOrObservationBase<?>>();
85
    }
86

    
87
    /**
88
     * @param t
89
     * @param pageSize
90
     * @param pageNumber
91
     * @param sort
92
     * @param propertyPaths
93
     * @return
94
     * @see eu.etaxonomy.cdm.api.service.IVersionableService#pageAuditEvents(eu.etaxonomy.cdm.model.common.VersionableEntity, java.lang.Integer, java.lang.Integer, eu.etaxonomy.cdm.persistence.dao.common.AuditEventSort, java.util.List)
95
     */
96
    @Override
97
    public Pager<AuditEventRecord<SpecimenOrObservationBase>> pageAuditEvents(SpecimenOrObservationBase t, Integer pageSize, Integer pageNumber, AuditEventSort sort, List<String> propertyPaths) {
98
        return defaultService.pageAuditEvents(t, pageSize, pageNumber, sort, propertyPaths);
99
    }
100

    
101
    /**
102
     * @param annotatedObj
103
     * @param status
104
     * @param pageSize
105
     * @param pageNumber
106
     * @param orderHints
107
     * @param propertyPaths
108
     * @return
109
     * @see eu.etaxonomy.cdm.api.service.IAnnotatableService#getAnnotations(eu.etaxonomy.cdm.model.common.AnnotatableEntity, eu.etaxonomy.cdm.model.common.MarkerType, java.lang.Integer, java.lang.Integer, java.util.List, java.util.List)
110
     */
111
    @Override
112
    public Pager<Annotation> getAnnotations(SpecimenOrObservationBase annotatedObj, MarkerType status, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
113
        return defaultService.getAnnotations(annotatedObj, status, pageSize, pageNumber, orderHints, propertyPaths);
114
    }
115

    
116
    /**
117
     *
118
     * @see eu.etaxonomy.cdm.api.service.IService#clear()
119
     */
120
    @Override
121
    public void clear() {
122
        defaultService.clear();
123
    }
124

    
125
    /**
126
     * @param t
127
     * @param lockMode
128
     * @see eu.etaxonomy.cdm.api.service.IService#lock(eu.etaxonomy.cdm.model.common.ICdmBase, org.hibernate.LockMode)
129
     */
130
    @Override
131
    public void lock(SpecimenOrObservationBase t, LockMode lockMode) {
132
        defaultService.lock(t, lockMode);
133
    }
134

    
135
    /**
136
     * @param t
137
     * @param lockMode
138
     * @param propertyPaths
139
     * @see eu.etaxonomy.cdm.api.service.IService#refresh(eu.etaxonomy.cdm.model.common.ICdmBase, org.hibernate.LockMode, java.util.List)
140
     */
141
    @Override
142
    public void refresh(SpecimenOrObservationBase t, LockMode lockMode, List<String> propertyPaths) {
143
        defaultService.refresh(t, lockMode, propertyPaths);
144
    }
145

    
146
    /**
147
     *
148
     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#updateTitleCache()
149
     */
150
    @Override
151
    public void updateTitleCache() {
152
        defaultService.updateTitleCache();
153
    }
154

    
155
    /**
156
     * @param t
157
     * @return
158
     * @see eu.etaxonomy.cdm.api.service.IVersionableService#getNextAuditEvent(eu.etaxonomy.cdm.model.common.VersionableEntity)
159
     */
160
    @Override
161
    public AuditEventRecord<SpecimenOrObservationBase> getNextAuditEvent(SpecimenOrObservationBase t) {
162
        return defaultService.getNextAuditEvent(t);
163
    }
164

    
165
    /**
166
     * @param annotatableEntity
167
     * @param technical
168
     * @param pageSize
169
     * @param pageNumber
170
     * @param orderHints
171
     * @param propertyPaths
172
     * @return
173
     * @see eu.etaxonomy.cdm.api.service.IAnnotatableService#getMarkers(eu.etaxonomy.cdm.model.common.AnnotatableEntity, java.lang.Boolean, java.lang.Integer, java.lang.Integer, java.util.List, java.util.List)
174
     */
175
    @Override
176
    public Pager<Marker> getMarkers(SpecimenOrObservationBase annotatableEntity, Boolean technical, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
177
        return defaultService.getMarkers(annotatableEntity, technical, pageSize, pageNumber, orderHints, propertyPaths);
178
    }
179

    
180
    /**
181
     * @param clazz
182
     * @param stepSize
183
     * @param cacheStrategy
184
     * @param monitor
185
     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#updateTitleCache(java.lang.Class, java.lang.Integer, eu.etaxonomy.cdm.strategy.cache.common.IIdentifiableEntityCacheStrategy, eu.etaxonomy.cdm.common.monitor.IProgressMonitor)
186
     */
187
    @Override
188
    public void updateTitleCache(Class<? extends SpecimenOrObservationBase> clazz, Integer stepSize, IIdentifiableEntityCacheStrategy<SpecimenOrObservationBase> cacheStrategy, IProgressMonitor monitor) {
189
        defaultService.updateTitleCache(clazz, stepSize, cacheStrategy, monitor);
190
    }
191

    
192
    /**
193
     * @param t
194
     * @return
195
     * @see eu.etaxonomy.cdm.api.service.IVersionableService#getPreviousAuditEvent(eu.etaxonomy.cdm.model.common.VersionableEntity)
196
     */
197
    @Override
198
    public AuditEventRecord<SpecimenOrObservationBase> getPreviousAuditEvent(SpecimenOrObservationBase t) {
199
        return defaultService.getPreviousAuditEvent(t);
200
    }
201

    
202
    /**
203
     * @param iso639
204
     * @return
205
     * @see eu.etaxonomy.cdm.api.service.IOccurrenceService#getCountryByIso(java.lang.String)
206
     */
207
    @Override
208
    public Country getCountryByIso(String iso639) {
209
        return defaultService.getCountryByIso(iso639);
210
    }
211

    
212
    /**
213
     * @param clazz
214
     * @return
215
     * @see eu.etaxonomy.cdm.api.service.IService#count(java.lang.Class)
216
     */
217
    @Override
218
    public int count(Class<? extends SpecimenOrObservationBase> clazz) {
219
        return defaultService.count(clazz);
220
    }
221

    
222
    /**
223
     * @param name
224
     * @return
225
     * @see eu.etaxonomy.cdm.api.service.IOccurrenceService#getCountryByName(java.lang.String)
226
     */
227
    @Override
228
    public List<Country> getCountryByName(String name) {
229
        return defaultService.getCountryByName(name);
230
    }
231

    
232
    /**
233
     * @param type
234
     * @param determinedAs
235
     * @param limit
236
     * @param start
237
     * @param orderHints
238
     * @param propertyPaths
239
     * @return
240
     * @see eu.etaxonomy.cdm.api.service.IOccurrenceService#list(java.lang.Class, eu.etaxonomy.cdm.model.taxon.TaxonBase, java.lang.Integer, java.lang.Integer, java.util.List, java.util.List)
241
     */
242
    @Override
243
    public Pager<SpecimenOrObservationBase> list(Class<? extends SpecimenOrObservationBase> type, TaxonBase determinedAs, Integer limit, Integer start, List<OrderHint> orderHints, List<String> propertyPaths) {
244
        return defaultService.list(type, determinedAs, limit, start, orderHints, propertyPaths);
245
    }
246

    
247
    /**
248
     * @param clazz
249
     * @param from
250
     * @param to
251
     * @param criteria
252
     * @param pageSize
253
     * @param pageValue
254
     * @param sort
255
     * @param propertyPaths
256
     * @return
257
     * @see eu.etaxonomy.cdm.api.service.IVersionableService#pageAuditEvents(java.lang.Class, eu.etaxonomy.cdm.model.view.AuditEvent, eu.etaxonomy.cdm.model.view.AuditEvent, java.util.List, java.lang.Integer, java.lang.Integer, eu.etaxonomy.cdm.persistence.dao.common.AuditEventSort, java.util.List)
258
     */
259
    @Override
260
    public Pager<AuditEventRecord<SpecimenOrObservationBase>> pageAuditEvents(Class<? extends SpecimenOrObservationBase> clazz, AuditEvent from, AuditEvent to, List<AuditCriterion> criteria, Integer pageSize, Integer pageValue, AuditEventSort sort, List<String> propertyPaths) {
261
        return defaultService.pageAuditEvents(clazz, from, to, criteria, pageSize, pageValue, sort, propertyPaths);
262
    }
263

    
264
    /**
265
     * @param lsid
266
     * @return
267
     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#find(eu.etaxonomy.cdm.model.common.LSID)
268
     */
269
    @Override
270
    public SpecimenOrObservationBase find(LSID lsid) {
271
        return defaultService.find(lsid);
272
    }
273

    
274
    /**
275
     * @param persistentObject
276
     * @return
277
     * @see eu.etaxonomy.cdm.api.service.IService#delete(eu.etaxonomy.cdm.model.common.ICdmBase)
278
     */
279
    @Override
280
    public DeleteResult delete(SpecimenOrObservationBase persistentObject) {
281
        return defaultService.delete(persistentObject);
282
    }
283

    
284
    /**
285
     * @param clazz
286
     * @param technical
287
     * @param pageSize
288
     * @param pageNumber
289
     * @param propertyPaths
290
     * @return
291
     * @see eu.etaxonomy.cdm.api.service.IAnnotatableService#groupMarkers(java.lang.Class, java.lang.Boolean, java.lang.Integer, java.lang.Integer, java.util.List)
292
     */
293
    @Override
294
    public List<Object[]> groupMarkers(Class<? extends SpecimenOrObservationBase> clazz, Boolean technical, Integer pageSize, Integer pageNumber, List<String> propertyPaths) {
295
        return defaultService.groupMarkers(clazz, technical, pageSize, pageNumber, propertyPaths);
296
    }
297

    
298
    /**
299
     * @param uuid
300
     * @return
301
     * @see eu.etaxonomy.cdm.api.service.IService#exists(java.util.UUID)
302
     */
303
    @Override
304
    public boolean exists(UUID uuid) {
305
        return defaultService.exists(uuid);
306
    }
307

    
308
    /**
309
     * @param x
310
     * @param y
311
     * @return
312
     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#replace(eu.etaxonomy.cdm.model.common.IdentifiableEntity, eu.etaxonomy.cdm.model.common.IdentifiableEntity)
313
     */
314
    @Override
315
    public SpecimenOrObservationBase replace(SpecimenOrObservationBase x, SpecimenOrObservationBase y) {
316
        return defaultService.replace(x, y);
317
    }
318

    
319
    /**
320
     * @param uuidSet
321
     * @return
322
     * @see eu.etaxonomy.cdm.api.service.IService#find(java.util.Set)
323
     */
324
    @Override
325
    public List<SpecimenOrObservationBase> find(Set<UUID> uuidSet) {
326
        return defaultService.find(uuidSet);
327
    }
328

    
329
    /**
330
     * @param t
331
     * @param pageSize
332
     * @param pageNumber
333
     * @param propertyPaths
334
     * @return
335
     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#getSources(eu.etaxonomy.cdm.model.common.IdentifiableEntity, java.lang.Integer, java.lang.Integer, java.util.List)
336
     */
337
    @Override
338
    public Pager<IdentifiableSource> getSources(SpecimenOrObservationBase t, Integer pageSize, Integer pageNumber, List<String> propertyPaths) {
339
        return defaultService.getSources(t, pageSize, pageNumber, propertyPaths);
340
    }
341

    
342
    /**
343
     * @param uuid
344
     * @return
345
     * @see eu.etaxonomy.cdm.api.service.IService#find(java.util.UUID)
346
     */
347
    @Override
348
    public SpecimenOrObservationBase find(UUID uuid) {
349
        return defaultService.find(uuid);
350
    }
351

    
352
    /**
353
     * @param id
354
     * @return
355
     * @see eu.etaxonomy.cdm.api.service.IService#find(int)
356
     */
357
    @Override
358
    public SpecimenOrObservationBase find(int id) {
359
        return defaultService.find(id);
360
    }
361

    
362
    /**
363
     * @param t
364
     * @param pageSize
365
     * @param pageNumber
366
     * @param propertyPaths
367
     * @return
368
     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#getRights(eu.etaxonomy.cdm.model.common.IdentifiableEntity, java.lang.Integer, java.lang.Integer, java.util.List)
369
     */
370
    @Override
371
    public Pager<Rights> getRights(SpecimenOrObservationBase t, Integer pageSize, Integer pageNumber, List<String> propertyPaths) {
372
        return defaultService.getRights(t, pageSize, pageNumber, propertyPaths);
373
    }
374

    
375
    /**
376
     * @param clazz
377
     * @param technical
378
     * @return
379
     * @see eu.etaxonomy.cdm.api.service.IAnnotatableService#countMarkers(java.lang.Class, java.lang.Boolean)
380
     */
381
    @Override
382
    public int countMarkers(Class<? extends SpecimenOrObservationBase> clazz, Boolean technical) {
383
        return defaultService.countMarkers(clazz, technical);
384
    }
385

    
386
    /**
387
     * @param occurence
388
     * @param pageSize
389
     * @param pageNumber
390
     * @param propertyPaths
391
     * @return
392
     * @see eu.etaxonomy.cdm.api.service.IOccurrenceService#getMedia(eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationBase, java.lang.Integer, java.lang.Integer, java.util.List)
393
     */
394
    @Override
395
    public Pager<Media> getMedia(SpecimenOrObservationBase occurence, Integer pageSize, Integer pageNumber, List<String> propertyPaths) {
396
        return defaultService.getMedia(occurence, pageSize, pageNumber, propertyPaths);
397
    }
398

    
399
    /**
400
     * @param idSet
401
     * @return
402
     * @see eu.etaxonomy.cdm.api.service.IService#findById(java.util.Set)
403
     */
404
    @Override
405
    public List<SpecimenOrObservationBase> findById(Set<Integer> idSet) {
406
        return defaultService.findById(idSet);
407
    }
408

    
409
    /**
410
     * @param clazz
411
     * @param idInSource
412
     * @param idNamespace
413
     * @return
414
     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#getSourcedObjectByIdInSource(java.lang.Class, java.lang.String, java.lang.String)
415
     */
416
    @Override
417
    public ISourceable getSourcedObjectByIdInSource(Class clazz, String idInSource, String idNamespace) {
418
        return defaultService.getSourcedObjectByIdInSource(clazz, idInSource, idNamespace);
419
    }
420

    
421
    /**
422
     * @return
423
     * @see eu.etaxonomy.cdm.api.service.IService#getSession()
424
     */
425
    @Override
426
    public Session getSession() {
427
        return defaultService.getSession();
428
    }
429

    
430
    /**
431
     * @return
432
     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#getUuidAndTitleCache()
433
     */
434
    @Override
435
    public List<UuidAndTitleCache<SpecimenOrObservationBase>> getUuidAndTitleCache() {
436
        return defaultService.getUuidAndTitleCache();
437
    }
438

    
439
    /**
440
     * @param clazz
441
     * @param limit
442
     * @param start
443
     * @param groups
444
     * @param propertyPaths
445
     * @return
446
     * @see eu.etaxonomy.cdm.api.service.IService#group(java.lang.Class, java.lang.Integer, java.lang.Integer, java.util.List, java.util.List)
447
     */
448
    @Override
449
    public List<Object[]> group(Class<? extends SpecimenOrObservationBase> clazz, Integer limit, Integer start, List<Grouping> groups, List<String> propertyPaths) {
450
        return defaultService.group(clazz, limit, start, groups, propertyPaths);
451
    }
452

    
453
    /**
454
     * @param occurence
455
     * @param taxonBase
456
     * @param pageSize
457
     * @param pageNumber
458
     * @param propertyPaths
459
     * @return
460
     * @see eu.etaxonomy.cdm.api.service.IOccurrenceService#getDeterminations(eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationBase, eu.etaxonomy.cdm.model.taxon.TaxonBase, java.lang.Integer, java.lang.Integer, java.util.List)
461
     */
462
    @Override
463
    public Pager<DeterminationEvent> getDeterminations(SpecimenOrObservationBase occurence, TaxonBase taxonBase, Integer pageSize, Integer pageNumber, List<String> propertyPaths) {
464
        return defaultService.getDeterminations(occurence, taxonBase, pageSize, pageNumber, propertyPaths);
465
    }
466

    
467
    /**
468
     * @param clazz
469
     * @param queryString
470
     * @param matchmode
471
     * @param criteria
472
     * @param pageSize
473
     * @param pageNumber
474
     * @param orderHints
475
     * @param propertyPaths
476
     * @return
477
     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#findByTitle(java.lang.Class, java.lang.String, eu.etaxonomy.cdm.persistence.query.MatchMode, java.util.List, java.lang.Integer, java.lang.Integer, java.util.List, java.util.List)
478
     */
479
    @Override
480
    public Pager<SpecimenOrObservationBase> findByTitle(Class<? extends SpecimenOrObservationBase> clazz, String queryString, MatchMode matchmode, List<Criterion> criteria, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
481
        return defaultService.findByTitle(clazz, queryString, matchmode, criteria, pageSize, pageNumber, orderHints, propertyPaths);
482
    }
483

    
484
    /**
485
     * @param occurence
486
     * @param pageSize
487
     * @param pageNumber
488
     * @param propertyPaths
489
     * @return
490
     * @see eu.etaxonomy.cdm.api.service.IOccurrenceService#getDerivationEvents(eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationBase, java.lang.Integer, java.lang.Integer, java.util.List)
491
     */
492
    @Override
493
    public Pager<DerivationEvent> getDerivationEvents(SpecimenOrObservationBase occurence, Integer pageSize, Integer pageNumber, List<String> propertyPaths) {
494
        return defaultService.getDerivationEvents(occurence, pageSize, pageNumber, propertyPaths);
495
    }
496

    
497
    /**
498
     * @param type
499
     * @param limit
500
     * @param start
501
     * @param orderHints
502
     * @param propertyPaths
503
     * @return
504
     * @see eu.etaxonomy.cdm.api.service.IService#list(java.lang.Class, java.lang.Integer, java.lang.Integer, java.util.List, java.util.List)
505
     */
506
    @Override
507
    public <S extends SpecimenOrObservationBase> List<S> list(Class<S> type, Integer limit, Integer start, List<OrderHint> orderHints, List<String> propertyPaths) {
508
        return defaultService.list(type, limit, start, orderHints, propertyPaths);
509
    }
510

    
511
    /**
512
     * @param clazz
513
     * @param query
514
     * @param pageSize
515
     * @param pageNumber
516
     * @param orderHints
517
     * @param propertyPaths
518
     * @return
519
     * @see eu.etaxonomy.cdm.api.service.IOccurrenceService#search(java.lang.Class, java.lang.String, java.lang.Integer, java.lang.Integer, java.util.List, java.util.List)
520
     */
521
    @Override
522
    public Pager<SpecimenOrObservationBase> search(Class<? extends SpecimenOrObservationBase> clazz, String query, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
523
        return defaultService.search(clazz, query, pageSize, pageNumber, orderHints, propertyPaths);
524
    }
525

    
526
    /**
527
     * @param configurator
528
     * @return
529
     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#findByTitle(eu.etaxonomy.cdm.api.service.config.IIdentifiableEntityServiceConfigurator)
530
     */
531
    @Override
532
    public Pager<SpecimenOrObservationBase> findByTitle(IIdentifiableEntityServiceConfigurator<SpecimenOrObservationBase> configurator) {
533
        return defaultService.findByTitle(configurator);
534
    }
535

    
536
    /**
537
     * @param clazz
538
     * @param queryString
539
     * @param matchmode
540
     * @param criteria
541
     * @return
542
     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#countByTitle(java.lang.Class, java.lang.String, eu.etaxonomy.cdm.persistence.query.MatchMode, java.util.List)
543
     */
544
    @Override
545
    public Integer countByTitle(Class<? extends SpecimenOrObservationBase> clazz, String queryString, MatchMode matchmode, List<Criterion> criteria) {
546
        return defaultService.countByTitle(clazz, queryString, matchmode, criteria);
547
    }
548

    
549
    /**
550
     * @param uuid
551
     * @return
552
     * @see eu.etaxonomy.cdm.api.service.IService#load(java.util.UUID)
553
     */
554
    @Override
555
    public SpecimenOrObservationBase load(UUID uuid) {
556
        return defaultService.load(uuid);
557
    }
558

    
559
    /**
560
     * @param uuid
561
     * @param propertyPaths
562
     * @return
563
     * @see eu.etaxonomy.cdm.api.service.IService#load(java.util.UUID, java.util.List)
564
     */
565
    @Override
566
    public SpecimenOrObservationBase load(UUID uuid, List<String> propertyPaths) {
567
        return defaultService.load(uuid, propertyPaths);
568
    }
569

    
570
    /**
571
     * @param configurator
572
     * @return
573
     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#countByTitle(eu.etaxonomy.cdm.api.service.config.IIdentifiableEntityServiceConfigurator)
574
     */
575
    @Override
576
    public Integer countByTitle(IIdentifiableEntityServiceConfigurator<SpecimenOrObservationBase> configurator) {
577
        return defaultService.countByTitle(configurator);
578
    }
579

    
580
    /**
581
     * @return
582
     * @see eu.etaxonomy.cdm.api.service.IOccurrenceService#getFieldUnitUuidAndTitleCache()
583
     */
584
    @Override
585
    public List<UuidAndTitleCache<FieldUnit>> getFieldUnitUuidAndTitleCache() {
586
        return defaultService.getFieldUnitUuidAndTitleCache();
587
    }
588

    
589
    /**
590
     * @return
591
     * @see eu.etaxonomy.cdm.api.service.IOccurrenceService#getDerivedUnitUuidAndTitleCache()
592
     */
593
    @Override
594
    public List<UuidAndTitleCache<DerivedUnit>> getDerivedUnitUuidAndTitleCache() {
595
        return defaultService.getDerivedUnitUuidAndTitleCache();
596
    }
597

    
598
    /**
599
     * @param transientObject
600
     * @return
601
     * @see eu.etaxonomy.cdm.api.service.IService#merge(eu.etaxonomy.cdm.model.common.ICdmBase)
602
     */
603
    @Override
604
    public SpecimenOrObservationBase merge(SpecimenOrObservationBase transientObject) {
605
        return defaultService.merge(transientObject);
606
    }
607

    
608
    /**
609
     * @param derivedUnit
610
     * @param propertyPaths
611
     * @return
612
     * @throws DerivedUnitFacadeNotSupportedException
613
     * @see eu.etaxonomy.cdm.api.service.IOccurrenceService#getDerivedUnitFacade(eu.etaxonomy.cdm.model.occurrence.DerivedUnit, java.util.List)
614
     */
615
    @Override
616
    public DerivedUnitFacade getDerivedUnitFacade(DerivedUnit derivedUnit, List<String> propertyPaths) throws DerivedUnitFacadeNotSupportedException {
617
        return defaultService.getDerivedUnitFacade(derivedUnit, propertyPaths);
618
    }
619

    
620
    /**
621
     * @param clazz
622
     * @param queryString
623
     * @param matchmode
624
     * @param criteria
625
     * @param pageSize
626
     * @param pageNumber
627
     * @param orderHints
628
     * @param propertyPaths
629
     * @return
630
     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#listByTitle(java.lang.Class, java.lang.String, eu.etaxonomy.cdm.persistence.query.MatchMode, java.util.List, java.lang.Integer, java.lang.Integer, java.util.List, java.util.List)
631
     */
632
    @Override
633
    public List<SpecimenOrObservationBase> listByTitle(Class<? extends SpecimenOrObservationBase> clazz, String queryString, MatchMode matchmode, List<Criterion> criteria, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
634
        return defaultService.listByTitle(clazz, queryString, matchmode, criteria, pageSize, pageNumber, orderHints, propertyPaths);
635
    }
636

    
637
    /**
638
     * @param description
639
     * @param propertyPaths
640
     * @return
641
     * @see eu.etaxonomy.cdm.api.service.IOccurrenceService#listDerivedUnitFacades(eu.etaxonomy.cdm.model.description.DescriptionBase, java.util.List)
642
     */
643
    @Override
644
    public List<DerivedUnitFacade> listDerivedUnitFacades(DescriptionBase description, List<String> propertyPaths) {
645
        return defaultService.listDerivedUnitFacades(description, propertyPaths);
646
    }
647

    
648
    /**
649
     * @param type
650
     * @param pageSize
651
     * @param pageNumber
652
     * @param orderHints
653
     * @param propertyPaths
654
     * @return
655
     * @see eu.etaxonomy.cdm.api.service.IService#page(java.lang.Class, java.lang.Integer, java.lang.Integer, java.util.List, java.util.List)
656
     */
657
    @Override
658
    public <S extends SpecimenOrObservationBase> Pager<S> page(Class<S> type, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
659
        return defaultService.page(type, pageSize, pageNumber, orderHints, propertyPaths);
660
    }
661

    
662
    /**
663
     * @param type
664
     * @param includeRelationships
665
     * @param associatedTaxon
666
     * @param maxDepth
667
     * @param pageSize
668
     * @param pageNumber
669
     * @param orderHints
670
     * @param propertyPaths
671
     * @return
672
     * @see eu.etaxonomy.cdm.api.service.IOccurrenceService#listByAssociatedTaxon(java.lang.Class, java.util.Set, eu.etaxonomy.cdm.model.taxon.Taxon, java.lang.Integer, java.lang.Integer, java.lang.Integer, java.util.List, java.util.List)
673
     */
674
    @Override
675
    public <T extends SpecimenOrObservationBase> List<T> listByAssociatedTaxon(Class<T> type, Set<TaxonRelationshipEdge> includeRelationships, Taxon associatedTaxon, Integer maxDepth, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
676
        return defaultService.listByAssociatedTaxon(type, includeRelationships, associatedTaxon, maxDepth, pageSize, pageNumber, orderHints, propertyPaths);
677
    }
678

    
679
    /**
680
     * @param persistentObject
681
     * @return
682
     * @see eu.etaxonomy.cdm.api.service.IService#refresh(eu.etaxonomy.cdm.model.common.ICdmBase)
683
     */
684
    @Override
685
    public UUID refresh(SpecimenOrObservationBase persistentObject) {
686
        return defaultService.refresh(persistentObject);
687
    }
688

    
689
    /**
690
     * @param clazz
691
     * @param queryString
692
     * @param matchmode
693
     * @param criteria
694
     * @param pageSize
695
     * @param pageNumber
696
     * @param orderHints
697
     * @param propertyPaths
698
     * @return
699
     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#listByReferenceTitle(java.lang.Class, java.lang.String, eu.etaxonomy.cdm.persistence.query.MatchMode, java.util.List, java.lang.Integer, java.lang.Integer, java.util.List, java.util.List)
700
     */
701
    @Override
702
    public List<SpecimenOrObservationBase> listByReferenceTitle(Class<? extends SpecimenOrObservationBase> clazz, String queryString, MatchMode matchmode, List<Criterion> criteria, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
703
        return defaultService.listByReferenceTitle(clazz, queryString, matchmode, criteria, pageSize, pageNumber, orderHints, propertyPaths);
704
    }
705

    
706
    /**
707
     * @param tableName
708
     * @param limit
709
     * @param start
710
     * @return
711
     * @see eu.etaxonomy.cdm.api.service.IService#rows(java.lang.String, int, int)
712
     */
713
    @Override
714
    public List<SpecimenOrObservationBase> rows(String tableName, int limit, int start) {
715
        return defaultService.rows(tableName, limit, start);
716
    }
717

    
718
    /**
719
     * @param newInstances
720
     * @return
721
     * @see eu.etaxonomy.cdm.api.service.IService#save(java.util.Collection)
722
     */
723
    @Override
724
    public Map<UUID, SpecimenOrObservationBase> save(Collection<SpecimenOrObservationBase> newInstances) {
725
        for(SpecimenOrObservationBase unit:newInstances){
726
            save(unit);
727
        }
728
        return null;
729
    }
730

    
731
    /**
732
     * @param type
733
     * @param includeRelationships
734
     * @param associatedTaxon
735
     * @param maxDepth
736
     * @param pageSize
737
     * @param pageNumber
738
     * @param orderHints
739
     * @param propertyPaths
740
     * @return
741
     * @see eu.etaxonomy.cdm.api.service.IOccurrenceService#pageByAssociatedTaxon(java.lang.Class, java.util.Set, eu.etaxonomy.cdm.model.taxon.Taxon, java.lang.Integer, java.lang.Integer, java.lang.Integer, java.util.List, java.util.List)
742
     */
743
    @Override
744
    public <T extends SpecimenOrObservationBase> Pager<T> pageByAssociatedTaxon(Class<T> type, Set<TaxonRelationshipEdge> includeRelationships, Taxon associatedTaxon, Integer maxDepth, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
745
        return defaultService.pageByAssociatedTaxon(type, includeRelationships, associatedTaxon, maxDepth, pageSize, pageNumber, orderHints, propertyPaths);
746
    }
747

    
748
    /**
749
     * @param newInstance
750
     * @return
751
     * @see eu.etaxonomy.cdm.api.service.IService#save(eu.etaxonomy.cdm.model.common.ICdmBase)
752
     */
753
    @Override
754
    public UUID save(SpecimenOrObservationBase newInstance) {
755
        units.add(newInstance);
756
        return null;
757
    }
758

    
759
    /**
760
     * @param transientObject
761
     * @return
762
     * @see eu.etaxonomy.cdm.api.service.IService#saveOrUpdate(eu.etaxonomy.cdm.model.common.ICdmBase)
763
     */
764
    @Override
765
    public UUID saveOrUpdate(SpecimenOrObservationBase transientObject) {
766
        units.add(transientObject);
767
        return null;
768
    }
769

    
770
    /**
771
     * @param transientObjects
772
     * @return
773
     * @see eu.etaxonomy.cdm.api.service.IService#saveOrUpdate(java.util.Collection)
774
     */
775
    @Override
776
    public Map<UUID, SpecimenOrObservationBase> saveOrUpdate(Collection<SpecimenOrObservationBase> transientObjects) {
777
        for(SpecimenOrObservationBase unit:transientObjects){
778
            saveOrUpdate(unit);
779
        }
780
        return null;
781
    }
782

    
783
    /**
784
     * @param clazz
785
     * @param queryString
786
     * @param boundingBox
787
     * @param languages
788
     * @param highlightFragments
789
     * @param pageSize
790
     * @param pageNumber
791
     * @param orderHints
792
     * @param propertyPaths
793
     * @return
794
     * @throws CorruptIndexException
795
     * @throws IOException
796
     * @throws ParseException
797
     * @see eu.etaxonomy.cdm.api.service.IOccurrenceService#findByFullText(java.lang.Class, java.lang.String, org.hibernate.search.spatial.impl.Rectangle, java.util.List, boolean, java.lang.Integer, java.lang.Integer, java.util.List, java.util.List)
798
     */
799
    @Override
800
    public Pager<SearchResult<SpecimenOrObservationBase>> findByFullText(Class<? extends SpecimenOrObservationBase> clazz, String queryString, Rectangle boundingBox, List<Language> languages, boolean highlightFragments, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) throws CorruptIndexException, IOException, ParseException {
801
        return defaultService.findByFullText(clazz, queryString, boundingBox, languages, highlightFragments, pageSize, pageNumber, orderHints, propertyPaths);
802
    }
803

    
804
    /**
805
     * @param transientObject
806
     * @return
807
     * @see eu.etaxonomy.cdm.api.service.IService#update(eu.etaxonomy.cdm.model.common.ICdmBase)
808
     */
809
    @Override
810
    public UUID update(SpecimenOrObservationBase transientObject) {
811
        return defaultService.update(transientObject);
812
    }
813

    
814
    /**
815
     * @param example
816
     * @param includeProperties
817
     * @param limit
818
     * @param start
819
     * @param orderHints
820
     * @param propertyPaths
821
     * @return
822
     * @see eu.etaxonomy.cdm.api.service.IService#list(eu.etaxonomy.cdm.model.common.ICdmBase, java.util.Set, java.lang.Integer, java.lang.Integer, java.util.List, java.util.List)
823
     */
824
    @Override
825
    public List<SpecimenOrObservationBase> list(SpecimenOrObservationBase example, Set<String> includeProperties, Integer limit, Integer start, List<OrderHint> orderHints, List<String> propertyPaths) {
826
        return defaultService.list(example, includeProperties, limit, start, orderHints, propertyPaths);
827
    }
828

    
829
    /**
830
     * @param clazz
831
     * @param matchStrategy
832
     * @param mergeStrategy
833
     * @return
834
     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#deduplicate(java.lang.Class, eu.etaxonomy.cdm.strategy.match.IMatchStrategy, eu.etaxonomy.cdm.strategy.merge.IMergeStrategy)
835
     */
836
    @Override
837
    public int deduplicate(Class<? extends SpecimenOrObservationBase> clazz, IMatchStrategy matchStrategy, IMergeStrategy mergeStrategy) {
838
        return defaultService.deduplicate(clazz, matchStrategy, mergeStrategy);
839
    }
840

    
841
    /**
842
     * @param clazz
843
     * @param queryString
844
     * @param pageSize
845
     * @param pageNumber
846
     * @param orderHints
847
     * @param matchMode
848
     * @return
849
     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#findTitleCache(java.lang.Class, java.lang.String, java.lang.Integer, java.lang.Integer, java.util.List, eu.etaxonomy.cdm.persistence.query.MatchMode)
850
     */
851
    @Override
852
    public Pager<SpecimenOrObservationBase> findTitleCache(Class<? extends SpecimenOrObservationBase> clazz, String queryString, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, MatchMode matchMode) {
853
        return defaultService.findTitleCache(clazz, queryString, pageSize, pageNumber, orderHints, matchMode);
854
    }
855

    
856
    /**
857
     * @return
858
     */
859
    public Collection<SpecimenOrObservationBase<?>> getUnits() {
860
        return units;
861
    }
862

    
863
    /* (non-Javadoc)
864
     * @see eu.etaxonomy.cdm.api.service.IOccurrenceService#getFieldUnits(java.util.UUID)
865
     */
866
    @Override
867
    public Collection<FieldUnit> getFieldUnits(UUID derivedUnitUuid) {
868
        return defaultService.getFieldUnits(derivedUnitUuid);
869
    }
870

    
871
    /* (non-Javadoc)
872
     * @see eu.etaxonomy.cdm.api.service.IOccurrenceService#pageByAssociatedTaxon(java.lang.Class, java.util.Set, java.lang.String, java.lang.Integer, java.lang.Integer, java.lang.Integer, java.util.List, java.util.List)
873
     */
874
    @Override
875
    public <T extends SpecimenOrObservationBase> Pager<T> pageByAssociatedTaxon(Class<T> type,
876
            Set<TaxonRelationshipEdge> includeRelationships, String taxonUUID, Integer maxDepth, Integer pageSize,
877
            Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
878
        return defaultService.pageByAssociatedTaxon(type, includeRelationships, taxonUUID,
879
                maxDepth, pageSize, pageNumber, orderHints, propertyPaths);
880
    }
881

    
882
    /* (non-Javadoc)
883
     * @see eu.etaxonomy.cdm.api.service.IOccurrenceService#moveDerivate(eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationBase, eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationBase, eu.etaxonomy.cdm.model.occurrence.DerivedUnit)
884
     */
885
    @Override
886
    public boolean moveDerivate(SpecimenOrObservationBase<?> from, SpecimenOrObservationBase<?> to, DerivedUnit derivate) {
887
        return defaultService.moveDerivate(from, to, derivate);
888
    }
889

    
890
    /* (non-Javadoc)
891
     * @see eu.etaxonomy.cdm.api.service.IOccurrenceService#moveSequence(eu.etaxonomy.cdm.model.molecular.DnaSample, eu.etaxonomy.cdm.model.molecular.DnaSample, eu.etaxonomy.cdm.model.molecular.Sequence)
892
     */
893
    @Override
894
    public boolean moveSequence(DnaSample from, DnaSample to, Sequence sequence) {
895
        return defaultService.moveSequence(from, to, sequence);
896
    }
897

    
898
	@Override
899
	public List<String> isDeletable(SpecimenOrObservationBase object,
900
			DeleteConfiguratorBase config) {
901
		return defaultService.isDeletable(object, config);
902
	}
903

    
904
    /* (non-Javadoc)
905
     * @see eu.etaxonomy.cdm.api.service.IOccurrenceService#countDeterminations(eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationBase, eu.etaxonomy.cdm.model.taxon.TaxonBase)
906
     */
907
    @Override
908
    public int countDeterminations(SpecimenOrObservationBase occurence, TaxonBase taxonbase) {
909
        return defaultService.countDeterminations(occurence, taxonbase);
910
    }
911

    
912
	@Override
913
	public SpecimenOrObservationBase findWithoutFlush(UUID uuid) {
914
		return defaultService.findWithoutFlush(uuid);
915
	}
916

    
917
}
(6-6/9)