Project

General

Profile

Download (39.6 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.LockOptions;
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.config.SpecimenDeleteConfigurator;
35
import eu.etaxonomy.cdm.api.service.dto.FieldUnitDTO;
36
import eu.etaxonomy.cdm.api.service.dto.FindByIdentifierDTO;
37
import eu.etaxonomy.cdm.api.service.dto.PreservedSpecimenDTO;
38
import eu.etaxonomy.cdm.api.service.pager.Pager;
39
import eu.etaxonomy.cdm.api.service.search.SearchResult;
40
import eu.etaxonomy.cdm.api.service.util.TaxonRelationshipEdge;
41
import eu.etaxonomy.cdm.common.monitor.IProgressMonitor;
42
import eu.etaxonomy.cdm.model.common.Annotation;
43
import eu.etaxonomy.cdm.model.common.CdmBase;
44
import eu.etaxonomy.cdm.model.common.DefinedTerm;
45
import eu.etaxonomy.cdm.model.common.ICdmBase;
46
import eu.etaxonomy.cdm.model.common.ISourceable;
47
import eu.etaxonomy.cdm.model.common.IdentifiableSource;
48
import eu.etaxonomy.cdm.model.common.LSID;
49
import eu.etaxonomy.cdm.model.common.Language;
50
import eu.etaxonomy.cdm.model.common.Marker;
51
import eu.etaxonomy.cdm.model.common.MarkerType;
52
import eu.etaxonomy.cdm.model.description.DescriptionBase;
53
import eu.etaxonomy.cdm.model.description.DescriptionElementBase;
54
import eu.etaxonomy.cdm.model.description.IndividualsAssociation;
55
import eu.etaxonomy.cdm.model.location.Country;
56
import eu.etaxonomy.cdm.model.media.Media;
57
import eu.etaxonomy.cdm.model.media.Rights;
58
import eu.etaxonomy.cdm.model.molecular.DnaSample;
59
import eu.etaxonomy.cdm.model.molecular.Sequence;
60
import eu.etaxonomy.cdm.model.molecular.SingleRead;
61
import eu.etaxonomy.cdm.model.name.SpecimenTypeDesignation;
62
import eu.etaxonomy.cdm.model.occurrence.DerivationEvent;
63
import eu.etaxonomy.cdm.model.occurrence.DerivedUnit;
64
import eu.etaxonomy.cdm.model.occurrence.DeterminationEvent;
65
import eu.etaxonomy.cdm.model.occurrence.FieldUnit;
66
import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationBase;
67
import eu.etaxonomy.cdm.model.taxon.Taxon;
68
import eu.etaxonomy.cdm.model.taxon.TaxonBase;
69
import eu.etaxonomy.cdm.model.view.AuditEvent;
70
import eu.etaxonomy.cdm.model.view.AuditEventRecord;
71
import eu.etaxonomy.cdm.persistence.dao.common.AuditEventSort;
72
import eu.etaxonomy.cdm.persistence.dto.UuidAndTitleCache;
73
import eu.etaxonomy.cdm.persistence.query.Grouping;
74
import eu.etaxonomy.cdm.persistence.query.MatchMode;
75
import eu.etaxonomy.cdm.persistence.query.OrderHint;
76
import eu.etaxonomy.cdm.strategy.cache.common.IIdentifiableEntityCacheStrategy;
77
import eu.etaxonomy.cdm.strategy.match.IMatchStrategy;
78
import eu.etaxonomy.cdm.strategy.merge.IMergeStrategy;
79

    
80
/**
81
 * @author pplitzner
82
 * @date 26.09.2013
83
 *
84
 */
85
public class TransientOccurenceService implements IOccurrenceService {
86

    
87
    private final IOccurrenceService defaultService;
88
    private final Collection<SpecimenOrObservationBase<?>> units;
89

    
90
    /**
91
     * @param defaultService
92
     */
93
    public TransientOccurenceService(IOccurrenceService defaultService) {
94
        this.defaultService = defaultService;
95
        this.units = new HashSet<SpecimenOrObservationBase<?>>();
96
    }
97

    
98
    /**
99
     * @param t
100
     * @param pageSize
101
     * @param pageNumber
102
     * @param sort
103
     * @param propertyPaths
104
     * @return
105
     * @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)
106
     */
107
    @Override
108
    public Pager<AuditEventRecord<SpecimenOrObservationBase>> pageAuditEvents(SpecimenOrObservationBase t, Integer pageSize, Integer pageNumber, AuditEventSort sort, List<String> propertyPaths) {
109
        return defaultService.pageAuditEvents(t, pageSize, pageNumber, sort, propertyPaths);
110
    }
111

    
112
    /**
113
     * @param annotatedObj
114
     * @param status
115
     * @param pageSize
116
     * @param pageNumber
117
     * @param orderHints
118
     * @param propertyPaths
119
     * @return
120
     * @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)
121
     */
122
    @Override
123
    public Pager<Annotation> getAnnotations(SpecimenOrObservationBase annotatedObj, MarkerType status, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
124
        return defaultService.getAnnotations(annotatedObj, status, pageSize, pageNumber, orderHints, propertyPaths);
125
    }
126

    
127
    /**
128
     *
129
     * @see eu.etaxonomy.cdm.api.service.IService#clear()
130
     */
131
    @Override
132
    public void clear() {
133
        defaultService.clear();
134
    }
135

    
136
    /**
137
     * @param t
138
     * @param lockMode
139
     * @see eu.etaxonomy.cdm.api.service.IService#lock(eu.etaxonomy.cdm.model.common.ICdmBase, org.hibernate.LockMode)
140
     */
141
    @Override
142
    public void lock(SpecimenOrObservationBase t, LockOptions lockOptions) {
143
        defaultService.lock(t, lockOptions);
144
    }
145

    
146
    /**
147
     * @param t
148
     * @param lockMode
149
     * @param propertyPaths
150
     * @see eu.etaxonomy.cdm.api.service.IService#refresh(eu.etaxonomy.cdm.model.common.ICdmBase, org.hibernate.LockMode, java.util.List)
151
     */
152
    @Override
153
    public void refresh(SpecimenOrObservationBase t, LockOptions lockOptions, List<String> propertyPaths) {
154
        defaultService.refresh(t, lockOptions, propertyPaths);
155
    }
156

    
157
    /**
158
     *
159
     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#updateTitleCache()
160
     */
161
    @Override
162
    public void updateTitleCache() {
163
        defaultService.updateTitleCache();
164
    }
165

    
166
    /**
167
     * @param t
168
     * @return
169
     * @see eu.etaxonomy.cdm.api.service.IVersionableService#getNextAuditEvent(eu.etaxonomy.cdm.model.common.VersionableEntity)
170
     */
171
    @Override
172
    public AuditEventRecord<SpecimenOrObservationBase> getNextAuditEvent(SpecimenOrObservationBase t) {
173
        return defaultService.getNextAuditEvent(t);
174
    }
175

    
176
    /**
177
     * @param annotatableEntity
178
     * @param technical
179
     * @param pageSize
180
     * @param pageNumber
181
     * @param orderHints
182
     * @param propertyPaths
183
     * @return
184
     * @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)
185
     */
186
    @Override
187
    public Pager<Marker> getMarkers(SpecimenOrObservationBase annotatableEntity, Boolean technical, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
188
        return defaultService.getMarkers(annotatableEntity, technical, pageSize, pageNumber, orderHints, propertyPaths);
189
    }
190

    
191
    /**
192
     * @param clazz
193
     * @param stepSize
194
     * @param cacheStrategy
195
     * @param monitor
196
     * @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)
197
     */
198
    @Override
199
    public void updateTitleCache(Class<? extends SpecimenOrObservationBase> clazz, Integer stepSize, IIdentifiableEntityCacheStrategy<SpecimenOrObservationBase> cacheStrategy, IProgressMonitor monitor) {
200
        defaultService.updateTitleCache(clazz, stepSize, cacheStrategy, monitor);
201
    }
202

    
203
    /**
204
     * @param t
205
     * @return
206
     * @see eu.etaxonomy.cdm.api.service.IVersionableService#getPreviousAuditEvent(eu.etaxonomy.cdm.model.common.VersionableEntity)
207
     */
208
    @Override
209
    public AuditEventRecord<SpecimenOrObservationBase> getPreviousAuditEvent(SpecimenOrObservationBase t) {
210
        return defaultService.getPreviousAuditEvent(t);
211
    }
212

    
213
    /**
214
     * @param iso639
215
     * @return
216
     * @see eu.etaxonomy.cdm.api.service.IOccurrenceService#getCountryByIso(java.lang.String)
217
     */
218
    @Override
219
    public Country getCountryByIso(String iso639) {
220
        return defaultService.getCountryByIso(iso639);
221
    }
222

    
223
    /**
224
     * @param clazz
225
     * @return
226
     * @see eu.etaxonomy.cdm.api.service.IService#count(java.lang.Class)
227
     */
228
    @Override
229
    public int count(Class<? extends SpecimenOrObservationBase> clazz) {
230
        return defaultService.count(clazz);
231
    }
232

    
233
    /**
234
     * @param name
235
     * @return
236
     * @see eu.etaxonomy.cdm.api.service.IOccurrenceService#getCountryByName(java.lang.String)
237
     */
238
    @Override
239
    public List<Country> getCountryByName(String name) {
240
        return defaultService.getCountryByName(name);
241
    }
242

    
243
    /**
244
     * @param type
245
     * @param determinedAs
246
     * @param limit
247
     * @param start
248
     * @param orderHints
249
     * @param propertyPaths
250
     * @return
251
     * @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)
252
     */
253
    @Override
254
    public Pager<SpecimenOrObservationBase> list(Class<? extends SpecimenOrObservationBase> type, TaxonBase determinedAs, Integer limit, Integer start, List<OrderHint> orderHints, List<String> propertyPaths) {
255
        return defaultService.list(type, determinedAs, limit, start, orderHints, propertyPaths);
256
    }
257

    
258
    /**
259
     * @param clazz
260
     * @param from
261
     * @param to
262
     * @param criteria
263
     * @param pageSize
264
     * @param pageValue
265
     * @param sort
266
     * @param propertyPaths
267
     * @return
268
     * @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)
269
     */
270
    @Override
271
    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) {
272
        return defaultService.pageAuditEvents(clazz, from, to, criteria, pageSize, pageValue, sort, propertyPaths);
273
    }
274

    
275
    /**
276
     * @param lsid
277
     * @return
278
     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#find(eu.etaxonomy.cdm.model.common.LSID)
279
     */
280
    @Override
281
    public SpecimenOrObservationBase find(LSID lsid) {
282
        return defaultService.find(lsid);
283
    }
284

    
285
    /**
286
     * @param persistentObject
287
     * @return
288
     * @see eu.etaxonomy.cdm.api.service.IService#delete(eu.etaxonomy.cdm.model.common.ICdmBase)
289
     */
290
    @Override
291
    public DeleteResult delete(SpecimenOrObservationBase persistentObject) {
292
        return defaultService.delete(persistentObject);
293
    }
294

    
295
    /**
296
     * @param clazz
297
     * @param technical
298
     * @param pageSize
299
     * @param pageNumber
300
     * @param propertyPaths
301
     * @return
302
     * @see eu.etaxonomy.cdm.api.service.IAnnotatableService#groupMarkers(java.lang.Class, java.lang.Boolean, java.lang.Integer, java.lang.Integer, java.util.List)
303
     */
304
    @Override
305
    public List<Object[]> groupMarkers(Class<? extends SpecimenOrObservationBase> clazz, Boolean technical, Integer pageSize, Integer pageNumber, List<String> propertyPaths) {
306
        return defaultService.groupMarkers(clazz, technical, pageSize, pageNumber, propertyPaths);
307
    }
308

    
309
    /**
310
     * @param uuid
311
     * @return
312
     * @see eu.etaxonomy.cdm.api.service.IService#exists(java.util.UUID)
313
     */
314
    @Override
315
    public boolean exists(UUID uuid) {
316
        return defaultService.exists(uuid);
317
    }
318

    
319
    /**
320
     * @param x
321
     * @param y
322
     * @return
323
     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#replace(eu.etaxonomy.cdm.model.common.IdentifiableEntity, eu.etaxonomy.cdm.model.common.IdentifiableEntity)
324
     */
325
    @Override
326
    public SpecimenOrObservationBase replace(SpecimenOrObservationBase x, SpecimenOrObservationBase y) {
327
        return defaultService.replace(x, y);
328
    }
329

    
330
    /**
331
     * @param uuidSet
332
     * @return
333
     * @see eu.etaxonomy.cdm.api.service.IService#find(java.util.Set)
334
     */
335
    @Override
336
    public List<SpecimenOrObservationBase> find(Set<UUID> uuidSet) {
337
        return defaultService.find(uuidSet);
338
    }
339

    
340
    /**
341
     * @param t
342
     * @param pageSize
343
     * @param pageNumber
344
     * @param propertyPaths
345
     * @return
346
     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#getSources(eu.etaxonomy.cdm.model.common.IdentifiableEntity, java.lang.Integer, java.lang.Integer, java.util.List)
347
     */
348
    @Override
349
    public Pager<IdentifiableSource> getSources(SpecimenOrObservationBase t, Integer pageSize, Integer pageNumber, List<String> propertyPaths) {
350
        return defaultService.getSources(t, pageSize, pageNumber, propertyPaths);
351
    }
352

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

    
363
    /**
364
     * @param id
365
     * @return
366
     * @see eu.etaxonomy.cdm.api.service.IService#find(int)
367
     */
368
    @Override
369
    public SpecimenOrObservationBase find(int id) {
370
        return defaultService.find(id);
371
    }
372

    
373
    /**
374
     * @param t
375
     * @param pageSize
376
     * @param pageNumber
377
     * @param propertyPaths
378
     * @return
379
     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#getRights(eu.etaxonomy.cdm.model.common.IdentifiableEntity, java.lang.Integer, java.lang.Integer, java.util.List)
380
     */
381
    @Override
382
    public Pager<Rights> getRights(SpecimenOrObservationBase t, Integer pageSize, Integer pageNumber, List<String> propertyPaths) {
383
        return defaultService.getRights(t, pageSize, pageNumber, propertyPaths);
384
    }
385

    
386
    /**
387
     * @param clazz
388
     * @param technical
389
     * @return
390
     * @see eu.etaxonomy.cdm.api.service.IAnnotatableService#countMarkers(java.lang.Class, java.lang.Boolean)
391
     */
392
    @Override
393
    public int countMarkers(Class<? extends SpecimenOrObservationBase> clazz, Boolean technical) {
394
        return defaultService.countMarkers(clazz, technical);
395
    }
396

    
397
    /**
398
     * @param occurence
399
     * @param pageSize
400
     * @param pageNumber
401
     * @param propertyPaths
402
     * @return
403
     * @see eu.etaxonomy.cdm.api.service.IOccurrenceService#getMedia(eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationBase, java.lang.Integer, java.lang.Integer, java.util.List)
404
     */
405
    @Override
406
    public Pager<Media> getMedia(SpecimenOrObservationBase occurence, Integer pageSize, Integer pageNumber, List<String> propertyPaths) {
407
        return defaultService.getMedia(occurence, pageSize, pageNumber, propertyPaths);
408
    }
409

    
410
    /**
411
     * @param idSet
412
     * @return
413
     * @see eu.etaxonomy.cdm.api.service.IService#findById(java.util.Set)
414
     */
415
    @Override
416
    public List<SpecimenOrObservationBase> findById(Set<Integer> idSet) {
417
        return defaultService.findById(idSet);
418
    }
419

    
420
    /**
421
     * @param clazz
422
     * @param idInSource
423
     * @param idNamespace
424
     * @return
425
     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#getSourcedObjectByIdInSource(java.lang.Class, java.lang.String, java.lang.String)
426
     */
427
    @Override
428
    public ISourceable getSourcedObjectByIdInSource(Class clazz, String idInSource, String idNamespace) {
429
        return defaultService.getSourcedObjectByIdInSource(clazz, idInSource, idNamespace);
430
    }
431

    
432
    /**
433
     * @return
434
     * @see eu.etaxonomy.cdm.api.service.IService#getSession()
435
     */
436
    @Override
437
    public Session getSession() {
438
        return defaultService.getSession();
439
    }
440

    
441
    /**
442
     * @return
443
     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#getUuidAndTitleCache()
444
     */
445
    @Override
446
    public List<UuidAndTitleCache<SpecimenOrObservationBase>> getUuidAndTitleCache() {
447
        return defaultService.getUuidAndTitleCache();
448
    }
449

    
450
    /**
451
     * @param clazz
452
     * @param limit
453
     * @param start
454
     * @param groups
455
     * @param propertyPaths
456
     * @return
457
     * @see eu.etaxonomy.cdm.api.service.IService#group(java.lang.Class, java.lang.Integer, java.lang.Integer, java.util.List, java.util.List)
458
     */
459
    @Override
460
    public List<Object[]> group(Class<? extends SpecimenOrObservationBase> clazz, Integer limit, Integer start, List<Grouping> groups, List<String> propertyPaths) {
461
        return defaultService.group(clazz, limit, start, groups, propertyPaths);
462
    }
463

    
464
    /**
465
     * @param occurence
466
     * @param taxonBase
467
     * @param pageSize
468
     * @param pageNumber
469
     * @param propertyPaths
470
     * @return
471
     * @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)
472
     */
473
    @Override
474
    public Pager<DeterminationEvent> getDeterminations(SpecimenOrObservationBase occurence, TaxonBase taxonBase, Integer pageSize, Integer pageNumber, List<String> propertyPaths) {
475
        return defaultService.getDeterminations(occurence, taxonBase, pageSize, pageNumber, propertyPaths);
476
    }
477

    
478
    /**
479
     * @param clazz
480
     * @param queryString
481
     * @param matchmode
482
     * @param criteria
483
     * @param pageSize
484
     * @param pageNumber
485
     * @param orderHints
486
     * @param propertyPaths
487
     * @return
488
     * @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)
489
     */
490
    @Override
491
    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) {
492
        return defaultService.findByTitle(clazz, queryString, matchmode, criteria, pageSize, pageNumber, orderHints, propertyPaths);
493
    }
494

    
495
    /**
496
     * @param occurence
497
     * @param pageSize
498
     * @param pageNumber
499
     * @param propertyPaths
500
     * @return
501
     * @see eu.etaxonomy.cdm.api.service.IOccurrenceService#getDerivationEvents(eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationBase, java.lang.Integer, java.lang.Integer, java.util.List)
502
     */
503
    @Override
504
    public Pager<DerivationEvent> getDerivationEvents(SpecimenOrObservationBase occurence, Integer pageSize, Integer pageNumber, List<String> propertyPaths) {
505
        return defaultService.getDerivationEvents(occurence, pageSize, pageNumber, propertyPaths);
506
    }
507

    
508
    /**
509
     * @param type
510
     * @param limit
511
     * @param start
512
     * @param orderHints
513
     * @param propertyPaths
514
     * @return
515
     * @see eu.etaxonomy.cdm.api.service.IService#list(java.lang.Class, java.lang.Integer, java.lang.Integer, java.util.List, java.util.List)
516
     */
517
    @Override
518
    public <S extends SpecimenOrObservationBase> List<S> list(Class<S> type, Integer limit, Integer start, List<OrderHint> orderHints, List<String> propertyPaths) {
519
        return defaultService.list(type, limit, start, orderHints, propertyPaths);
520
    }
521

    
522
    /**
523
     * @param clazz
524
     * @param query
525
     * @param pageSize
526
     * @param pageNumber
527
     * @param orderHints
528
     * @param propertyPaths
529
     * @return
530
     * @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)
531
     */
532
    @Override
533
    public Pager<SpecimenOrObservationBase> search(Class<? extends SpecimenOrObservationBase> clazz, String query, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
534
        return defaultService.search(clazz, query, pageSize, pageNumber, orderHints, propertyPaths);
535
    }
536

    
537
    /**
538
     * @param configurator
539
     * @return
540
     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#findByTitle(eu.etaxonomy.cdm.api.service.config.IIdentifiableEntityServiceConfigurator)
541
     */
542
    @Override
543
    public Pager<SpecimenOrObservationBase> findByTitle(IIdentifiableEntityServiceConfigurator<SpecimenOrObservationBase> configurator) {
544
        return defaultService.findByTitle(configurator);
545
    }
546

    
547
    /**
548
     * @param clazz
549
     * @param queryString
550
     * @param matchmode
551
     * @param criteria
552
     * @return
553
     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#countByTitle(java.lang.Class, java.lang.String, eu.etaxonomy.cdm.persistence.query.MatchMode, java.util.List)
554
     */
555
    @Override
556
    public Integer countByTitle(Class<? extends SpecimenOrObservationBase> clazz, String queryString, MatchMode matchmode, List<Criterion> criteria) {
557
        return defaultService.countByTitle(clazz, queryString, matchmode, criteria);
558
    }
559

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

    
570
    /**
571
     * @param uuid
572
     * @param propertyPaths
573
     * @return
574
     * @see eu.etaxonomy.cdm.api.service.IService#load(java.util.UUID, java.util.List)
575
     */
576
    @Override
577
    public SpecimenOrObservationBase load(UUID uuid, List<String> propertyPaths) {
578
        return defaultService.load(uuid, propertyPaths);
579
    }
580

    
581
    /**
582
     * @param configurator
583
     * @return
584
     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#countByTitle(eu.etaxonomy.cdm.api.service.config.IIdentifiableEntityServiceConfigurator)
585
     */
586
    @Override
587
    public Integer countByTitle(IIdentifiableEntityServiceConfigurator<SpecimenOrObservationBase> configurator) {
588
        return defaultService.countByTitle(configurator);
589
    }
590

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

    
600
    /**
601
     * @return
602
     * @see eu.etaxonomy.cdm.api.service.IOccurrenceService#getDerivedUnitUuidAndTitleCache()
603
     */
604
    @Override
605
    public List<UuidAndTitleCache<DerivedUnit>> getDerivedUnitUuidAndTitleCache() {
606
        return defaultService.getDerivedUnitUuidAndTitleCache();
607
    }
608

    
609
    /**
610
     * @param transientObject
611
     * @return
612
     * @see eu.etaxonomy.cdm.api.service.IService#merge(eu.etaxonomy.cdm.model.common.ICdmBase)
613
     */
614
    @Override
615
    public SpecimenOrObservationBase merge(SpecimenOrObservationBase transientObject) {
616
        return defaultService.merge(transientObject);
617
    }
618

    
619
    /**
620
     * @param derivedUnit
621
     * @param propertyPaths
622
     * @return
623
     * @throws DerivedUnitFacadeNotSupportedException
624
     * @see eu.etaxonomy.cdm.api.service.IOccurrenceService#getDerivedUnitFacade(eu.etaxonomy.cdm.model.occurrence.DerivedUnit, java.util.List)
625
     */
626
    @Override
627
    public DerivedUnitFacade getDerivedUnitFacade(DerivedUnit derivedUnit, List<String> propertyPaths) throws DerivedUnitFacadeNotSupportedException {
628
        return defaultService.getDerivedUnitFacade(derivedUnit, propertyPaths);
629
    }
630

    
631
    /**
632
     * @param clazz
633
     * @param queryString
634
     * @param matchmode
635
     * @param criteria
636
     * @param pageSize
637
     * @param pageNumber
638
     * @param orderHints
639
     * @param propertyPaths
640
     * @return
641
     * @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)
642
     */
643
    @Override
644
    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) {
645
        return defaultService.listByTitle(clazz, queryString, matchmode, criteria, pageSize, pageNumber, orderHints, propertyPaths);
646
    }
647

    
648
    /**
649
     * @param description
650
     * @param propertyPaths
651
     * @return
652
     * @see eu.etaxonomy.cdm.api.service.IOccurrenceService#listDerivedUnitFacades(eu.etaxonomy.cdm.model.description.DescriptionBase, java.util.List)
653
     */
654
    @Override
655
    public List<DerivedUnitFacade> listDerivedUnitFacades(DescriptionBase description, List<String> propertyPaths) {
656
        return defaultService.listDerivedUnitFacades(description, propertyPaths);
657
    }
658

    
659
    /**
660
     * @param type
661
     * @param pageSize
662
     * @param pageNumber
663
     * @param orderHints
664
     * @param propertyPaths
665
     * @return
666
     * @see eu.etaxonomy.cdm.api.service.IService#page(java.lang.Class, java.lang.Integer, java.lang.Integer, java.util.List, java.util.List)
667
     */
668
    @Override
669
    public <S extends SpecimenOrObservationBase> Pager<S> page(Class<S> type, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
670
        return defaultService.page(type, pageSize, pageNumber, orderHints, propertyPaths);
671
    }
672

    
673
    /**
674
     * @param type
675
     * @param includeRelationships
676
     * @param associatedTaxon
677
     * @param maxDepth
678
     * @param pageSize
679
     * @param pageNumber
680
     * @param orderHints
681
     * @param propertyPaths
682
     * @return
683
     * @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)
684
     */
685
    @Override
686
    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) {
687
        return defaultService.listByAssociatedTaxon(type, includeRelationships, associatedTaxon, maxDepth, pageSize, pageNumber, orderHints, propertyPaths);
688
    }
689

    
690
    /**
691
     * @param persistentObject
692
     * @return
693
     * @see eu.etaxonomy.cdm.api.service.IService#refresh(eu.etaxonomy.cdm.model.common.ICdmBase)
694
     */
695
    @Override
696
    public UUID refresh(SpecimenOrObservationBase persistentObject) {
697
        return defaultService.refresh(persistentObject);
698
    }
699

    
700
    /**
701
     * @param clazz
702
     * @param queryString
703
     * @param matchmode
704
     * @param criteria
705
     * @param pageSize
706
     * @param pageNumber
707
     * @param orderHints
708
     * @param propertyPaths
709
     * @return
710
     * @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)
711
     */
712
    @Override
713
    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) {
714
        return defaultService.listByReferenceTitle(clazz, queryString, matchmode, criteria, pageSize, pageNumber, orderHints, propertyPaths);
715
    }
716

    
717
    /**
718
     * @param tableName
719
     * @param limit
720
     * @param start
721
     * @return
722
     * @see eu.etaxonomy.cdm.api.service.IService#rows(java.lang.String, int, int)
723
     */
724
    @Override
725
    public List<SpecimenOrObservationBase> rows(String tableName, int limit, int start) {
726
        return defaultService.rows(tableName, limit, start);
727
    }
728

    
729
    /**
730
     * @param newInstances
731
     * @return
732
     * @see eu.etaxonomy.cdm.api.service.IService#save(java.util.Collection)
733
     */
734
    @Override
735
    public Map<UUID, SpecimenOrObservationBase> save(Collection<SpecimenOrObservationBase> newInstances) {
736
        for(SpecimenOrObservationBase unit:newInstances){
737
            save(unit);
738
        }
739
        return null;
740
    }
741

    
742
    /**
743
     * @param type
744
     * @param includeRelationships
745
     * @param associatedTaxon
746
     * @param maxDepth
747
     * @param pageSize
748
     * @param pageNumber
749
     * @param orderHints
750
     * @param propertyPaths
751
     * @return
752
     * @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)
753
     */
754
    @Override
755
    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) {
756
        return defaultService.pageByAssociatedTaxon(type, includeRelationships, associatedTaxon, maxDepth, pageSize, pageNumber, orderHints, propertyPaths);
757
    }
758

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

    
770
    /**
771
     * @param transientObject
772
     * @return
773
     * @see eu.etaxonomy.cdm.api.service.IService#saveOrUpdate(eu.etaxonomy.cdm.model.common.ICdmBase)
774
     */
775
    @Override
776
    public UUID saveOrUpdate(SpecimenOrObservationBase transientObject) {
777
        units.add(transientObject);
778
        return null;
779
    }
780

    
781
    /**
782
     * @param transientObjects
783
     * @return
784
     * @see eu.etaxonomy.cdm.api.service.IService#saveOrUpdate(java.util.Collection)
785
     */
786
    @Override
787
    public Map<UUID, SpecimenOrObservationBase> saveOrUpdate(Collection<SpecimenOrObservationBase> transientObjects) {
788
        for(SpecimenOrObservationBase unit:transientObjects){
789
            saveOrUpdate(unit);
790
        }
791
        return null;
792
    }
793

    
794
    /**
795
     * @param clazz
796
     * @param queryString
797
     * @param boundingBox
798
     * @param languages
799
     * @param highlightFragments
800
     * @param pageSize
801
     * @param pageNumber
802
     * @param orderHints
803
     * @param propertyPaths
804
     * @return
805
     * @throws CorruptIndexException
806
     * @throws IOException
807
     * @throws ParseException
808
     * @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)
809
     */
810
    @Override
811
    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 {
812
        return defaultService.findByFullText(clazz, queryString, boundingBox, languages, highlightFragments, pageSize, pageNumber, orderHints, propertyPaths);
813
    }
814

    
815
    /**
816
     * @param transientObject
817
     * @return
818
     * @see eu.etaxonomy.cdm.api.service.IService#update(eu.etaxonomy.cdm.model.common.ICdmBase)
819
     */
820
    @Override
821
    public UUID update(SpecimenOrObservationBase transientObject) {
822
        return defaultService.update(transientObject);
823
    }
824

    
825
    /**
826
     * @param example
827
     * @param includeProperties
828
     * @param limit
829
     * @param start
830
     * @param orderHints
831
     * @param propertyPaths
832
     * @return
833
     * @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)
834
     */
835
    @Override
836
    public List<SpecimenOrObservationBase> list(SpecimenOrObservationBase example, Set<String> includeProperties, Integer limit, Integer start, List<OrderHint> orderHints, List<String> propertyPaths) {
837
        return defaultService.list(example, includeProperties, limit, start, orderHints, propertyPaths);
838
    }
839

    
840
    @Override
841
    public int deduplicate(Class<? extends SpecimenOrObservationBase> clazz, IMatchStrategy matchStrategy, IMergeStrategy mergeStrategy) {
842
        return defaultService.deduplicate(clazz, matchStrategy, mergeStrategy);
843
    }
844

    
845
    @Override
846
    public Pager<SpecimenOrObservationBase> findTitleCache(Class<? extends SpecimenOrObservationBase> clazz, String queryString, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, MatchMode matchMode) {
847
        return defaultService.findTitleCache(clazz, queryString, pageSize, pageNumber, orderHints, matchMode);
848
    }
849

    
850
    public Collection<SpecimenOrObservationBase<?>> getUnits() {
851
        return units;
852
    }
853

    
854
    @Override
855
    public Collection<FieldUnit> getFieldUnits(UUID derivedUnitUuid) {
856
        return defaultService.getFieldUnits(derivedUnitUuid);
857
    }
858

    
859
    @Override
860
    public <T extends SpecimenOrObservationBase> Pager<T> pageByAssociatedTaxon(Class<T> type,
861
            Set<TaxonRelationshipEdge> includeRelationships, String taxonUUID, Integer maxDepth, Integer pageSize,
862
            Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
863
        return defaultService.pageByAssociatedTaxon(type, includeRelationships, taxonUUID,
864
                maxDepth, pageSize, pageNumber, orderHints, propertyPaths);
865
    }
866

    
867
    @Override
868
    public boolean moveDerivate(SpecimenOrObservationBase<?> from, SpecimenOrObservationBase<?> to, DerivedUnit derivate) {
869
        return defaultService.moveDerivate(from, to, derivate);
870
    }
871

    
872
    @Override
873
    public boolean moveSequence(DnaSample from, DnaSample to, Sequence sequence) {
874
        return defaultService.moveSequence(from, to, sequence);
875
    }
876

    
877
	@Override
878
	public DeleteResult isDeletable(SpecimenOrObservationBase object,
879
			DeleteConfiguratorBase config) {
880
		return defaultService.isDeletable(object, config);
881
	}
882

    
883
    @Override
884
    public int countDeterminations(SpecimenOrObservationBase occurence, TaxonBase taxonbase) {
885
        return defaultService.countDeterminations(occurence, taxonbase);
886
    }
887

    
888
	@Override
889
	public SpecimenOrObservationBase findWithoutFlush(UUID uuid) {
890
		return defaultService.findWithoutFlush(uuid);
891
	}
892

    
893
	@Override
894
	public Collection<SpecimenOrObservationBase> listFieldUnitsByAssociatedTaxon(Taxon associatedTaxon,
895
	        List<OrderHint> orderHints, List<String> propertyPaths) {
896
	    return defaultService.listFieldUnitsByAssociatedTaxon(associatedTaxon, orderHints, propertyPaths);
897
	}
898

    
899
	@Override
900
	public Pager<SpecimenOrObservationBase> pageFieldUnitsByAssociatedTaxon(
901
	        Set<TaxonRelationshipEdge> includeRelationships, Taxon associatedTaxon, Integer maxDepth, Integer pageSize,
902
	        Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
903
	    return defaultService.pageFieldUnitsByAssociatedTaxon(includeRelationships, associatedTaxon, maxDepth, pageSize, pageNumber, orderHints, propertyPaths);
904
	}
905

    
906

    
907
	@Override
908
	public FieldUnitDTO assembleFieldUnitDTO(FieldUnit fieldUnit, UUID associatedTaxonUuid) {
909
	    return defaultService.assembleFieldUnitDTO(fieldUnit, associatedTaxonUuid);
910
	}
911

    
912
	@Override
913
	public PreservedSpecimenDTO assemblePreservedSpecimenDTO(DerivedUnit derivedUnit) {
914
	    return defaultService.assemblePreservedSpecimenDTO(derivedUnit);
915
	}
916

    
917
    @Override
918
    public Collection<ICdmBase> getNonCascadedAssociatedElements(SpecimenOrObservationBase<?> specimen) {
919
        return defaultService.getNonCascadedAssociatedElements(specimen);
920
    }
921

    
922
    @Override
923
    public DeleteResult deleteDerivateHierarchy(CdmBase from, SpecimenDeleteConfigurator config) {
924
        return defaultService.deleteDerivateHierarchy(from, config);
925
    }
926

    
927
    @Override
928
    public DeleteResult delete(SpecimenOrObservationBase<?> specimen, SpecimenDeleteConfigurator config) {
929
        return defaultService.delete(specimen, config);
930
    }
931

    
932
    @Override
933
    public Collection<IndividualsAssociation> listIndividualsAssociations(SpecimenOrObservationBase<?> specimen,
934
            Integer limit, Integer start, List<OrderHint> orderHints, List<String> propertyPaths) {
935
        return defaultService.listIndividualsAssociations(specimen, limit, start, orderHints, propertyPaths);
936
    }
937

    
938
    @Override
939
    public Collection<SpecimenTypeDesignation> listTypeDesignations(SpecimenOrObservationBase<?> specimen,
940
            Integer limit, Integer start, List<OrderHint> orderHints, List<String> propertyPaths) {
941
        return defaultService.listTypeDesignations(specimen, limit, start, orderHints, propertyPaths);
942
    }
943

    
944
    @Override
945
    public Collection<DescriptionBase<?>> listDescriptionsWithDescriptionSpecimen(
946
            SpecimenOrObservationBase<?> specimen, Integer limit, Integer start, List<OrderHint> orderHints,
947
            List<String> propertyPaths) {
948
        return defaultService.listDescriptionsWithDescriptionSpecimen(specimen, limit, start, orderHints, propertyPaths);
949
    }
950

    
951
	@Override
952
	public <S extends SpecimenOrObservationBase>  Pager<FindByIdentifierDTO<S>> findByIdentifier(Class<S> clazz, String identifier, DefinedTerm identifierType, MatchMode matchmode, boolean includeEntity, Integer pageSize, Integer pageNumber, List<String> propertyPaths){
953
		return defaultService.findByIdentifier(clazz, identifier, identifierType, matchmode, includeEntity, pageSize, pageNumber, propertyPaths);
954
	}
955

    
956
	@Override
957
	public Collection<DescriptionElementBase> getCharacterDataForSpecimen(SpecimenOrObservationBase<?> arg0) {
958
	    return defaultService.getCharacterDataForSpecimen(arg0);
959
	}
960

    
961
	@Override
962
	public Collection<DescriptionElementBase> getCharacterDataForSpecimen(UUID arg0) {
963
	    return getCharacterDataForSpecimen(arg0);
964
	}
965

    
966
	@Override
967
	public String getMostSignificantIdentifier(DerivedUnit derivedUnit) {
968
	    return defaultService.getMostSignificantIdentifier(derivedUnit);
969
	}
970

    
971
	@Override
972
	public int countOccurrences(IIdentifiableEntityServiceConfigurator<SpecimenOrObservationBase> config) {
973
	    return defaultService.countOccurrences(config);
974
	}
975

    
976
	/**
977
	 * {@inheritDoc}
978
	 */
979
	@Override
980
	public List<DerivedUnit> getAllChildDerivatives(SpecimenOrObservationBase<?> specimen) {
981
	    return defaultService.getAllChildDerivatives(specimen);
982
	}
983

    
984
	/**
985
	 * {@inheritDoc}
986
	 */
987
	@Override
988
	public List<SpecimenOrObservationBase<?>> getAllHierarchyDerivatives(SpecimenOrObservationBase<?> specimen) {
989
	    return defaultService.getAllHierarchyDerivatives(specimen);
990
	}
991

    
992

    
993
    /* (non-Javadoc)
994
     * @see eu.etaxonomy.cdm.api.service.IService#delete(java.util.UUID)
995
     */
996
    @Override
997
    public DeleteResult delete(UUID uuid) {
998
        return defaultService.delete(uuid);
999
    }
1000

    
1001
    @Override
1002
    public DeleteResult delete(Collection<UUID> arg0) {
1003
        return defaultService.delete(arg0);
1004
    }
1005

    
1006
    @Override
1007
    public DeleteResult deleteSingleRead(SingleRead singleRead, Sequence sequence){
1008
        return defaultService.deleteSingleRead(singleRead, sequence);
1009
    }
1010

    
1011
    /* (non-Javadoc)
1012
     * @see eu.etaxonomy.cdm.api.service.IService#merge(java.util.List)
1013
     */
1014
    @Override
1015
    public List<SpecimenOrObservationBase> merge(List<SpecimenOrObservationBase> arg0) {
1016
        return defaultService.merge(arg0);
1017
    }
1018

    
1019

    
1020
}
(7-7/10)