Project

General

Profile

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

    
72
/**
73
 * @author pplitzner
74
 * @date 26.09.2013
75
 *
76
 */
77
public class TransientOccurenceService implements IOccurrenceService {
78

    
79
    private final IOccurrenceService defaultService;
80
    private final Collection<SpecimenOrObservationBase<?>> units;
81

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

    
90
    /**
91
     * @param t
92
     * @param pageSize
93
     * @param pageNumber
94
     * @param sort
95
     * @param propertyPaths
96
     * @return
97
     * @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)
98
     */
99
    @Override
100
    public Pager<AuditEventRecord<SpecimenOrObservationBase>> pageAuditEvents(SpecimenOrObservationBase t, Integer pageSize, Integer pageNumber, AuditEventSort sort, List<String> propertyPaths) {
101
        return defaultService.pageAuditEvents(t, pageSize, pageNumber, sort, propertyPaths);
102
    }
103

    
104
    /**
105
     * @param annotatedObj
106
     * @param status
107
     * @param pageSize
108
     * @param pageNumber
109
     * @param orderHints
110
     * @param propertyPaths
111
     * @return
112
     * @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)
113
     */
114
    @Override
115
    public Pager<Annotation> getAnnotations(SpecimenOrObservationBase annotatedObj, MarkerType status, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
116
        return defaultService.getAnnotations(annotatedObj, status, pageSize, pageNumber, orderHints, propertyPaths);
117
    }
118

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

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

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

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

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

    
168
    /**
169
     * @param annotatableEntity
170
     * @param technical
171
     * @param pageSize
172
     * @param pageNumber
173
     * @param orderHints
174
     * @param propertyPaths
175
     * @return
176
     * @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)
177
     */
178
    @Override
179
    public Pager<Marker> getMarkers(SpecimenOrObservationBase annotatableEntity, Boolean technical, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
180
        return defaultService.getMarkers(annotatableEntity, technical, pageSize, pageNumber, orderHints, propertyPaths);
181
    }
182

    
183
    /**
184
     * @param clazz
185
     * @param stepSize
186
     * @param cacheStrategy
187
     * @param monitor
188
     * @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)
189
     */
190
    @Override
191
    public void updateTitleCache(Class<? extends SpecimenOrObservationBase> clazz, Integer stepSize, IIdentifiableEntityCacheStrategy<SpecimenOrObservationBase> cacheStrategy, IProgressMonitor monitor) {
192
        defaultService.updateTitleCache(clazz, stepSize, cacheStrategy, monitor);
193
    }
194

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

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

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

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

    
235
    /**
236
     * @param type
237
     * @param determinedAs
238
     * @param limit
239
     * @param start
240
     * @param orderHints
241
     * @param propertyPaths
242
     * @return
243
     * @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)
244
     */
245
    @Override
246
    public Pager<SpecimenOrObservationBase> list(Class<? extends SpecimenOrObservationBase> type, TaxonBase determinedAs, Integer limit, Integer start, List<OrderHint> orderHints, List<String> propertyPaths) {
247
        return defaultService.list(type, determinedAs, limit, start, orderHints, propertyPaths);
248
    }
249

    
250
    /**
251
     * @param clazz
252
     * @param from
253
     * @param to
254
     * @param criteria
255
     * @param pageSize
256
     * @param pageValue
257
     * @param sort
258
     * @param propertyPaths
259
     * @return
260
     * @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)
261
     */
262
    @Override
263
    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) {
264
        return defaultService.pageAuditEvents(clazz, from, to, criteria, pageSize, pageValue, sort, propertyPaths);
265
    }
266

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    
456
    /**
457
     * @param occurence
458
     * @param taxonBase
459
     * @param pageSize
460
     * @param pageNumber
461
     * @param propertyPaths
462
     * @return
463
     * @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)
464
     */
465
    @Override
466
    public Pager<DeterminationEvent> getDeterminations(SpecimenOrObservationBase occurence, TaxonBase taxonBase, Integer pageSize, Integer pageNumber, List<String> propertyPaths) {
467
        return defaultService.getDeterminations(occurence, taxonBase, pageSize, pageNumber, propertyPaths);
468
    }
469

    
470
    /**
471
     * @param clazz
472
     * @param queryString
473
     * @param matchmode
474
     * @param criteria
475
     * @param pageSize
476
     * @param pageNumber
477
     * @param orderHints
478
     * @param propertyPaths
479
     * @return
480
     * @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)
481
     */
482
    @Override
483
    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) {
484
        return defaultService.findByTitle(clazz, queryString, matchmode, criteria, pageSize, pageNumber, orderHints, propertyPaths);
485
    }
486

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

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

    
514
    /**
515
     * @param clazz
516
     * @param query
517
     * @param pageSize
518
     * @param pageNumber
519
     * @param orderHints
520
     * @param propertyPaths
521
     * @return
522
     * @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)
523
     */
524
    @Override
525
    public Pager<SpecimenOrObservationBase> search(Class<? extends SpecimenOrObservationBase> clazz, String query, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
526
        return defaultService.search(clazz, query, pageSize, pageNumber, orderHints, propertyPaths);
527
    }
528

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

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

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

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

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

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

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

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

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

    
623
    /**
624
     * @param clazz
625
     * @param queryString
626
     * @param matchmode
627
     * @param criteria
628
     * @param pageSize
629
     * @param pageNumber
630
     * @param orderHints
631
     * @param propertyPaths
632
     * @return
633
     * @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)
634
     */
635
    @Override
636
    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) {
637
        return defaultService.listByTitle(clazz, queryString, matchmode, criteria, pageSize, pageNumber, orderHints, propertyPaths);
638
    }
639

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

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

    
665
    /**
666
     * @param type
667
     * @param includeRelationships
668
     * @param associatedTaxon
669
     * @param maxDepth
670
     * @param pageSize
671
     * @param pageNumber
672
     * @param orderHints
673
     * @param propertyPaths
674
     * @return
675
     * @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)
676
     */
677
    @Override
678
    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) {
679
        return defaultService.listByAssociatedTaxon(type, includeRelationships, associatedTaxon, maxDepth, pageSize, pageNumber, orderHints, propertyPaths);
680
    }
681

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

    
692
    /**
693
     * @param clazz
694
     * @param queryString
695
     * @param matchmode
696
     * @param criteria
697
     * @param pageSize
698
     * @param pageNumber
699
     * @param orderHints
700
     * @param propertyPaths
701
     * @return
702
     * @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)
703
     */
704
    @Override
705
    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) {
706
        return defaultService.listByReferenceTitle(clazz, queryString, matchmode, criteria, pageSize, pageNumber, orderHints, propertyPaths);
707
    }
708

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

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

    
734
    /**
735
     * @param type
736
     * @param includeRelationships
737
     * @param associatedTaxon
738
     * @param maxDepth
739
     * @param pageSize
740
     * @param pageNumber
741
     * @param orderHints
742
     * @param propertyPaths
743
     * @return
744
     * @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)
745
     */
746
    @Override
747
    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) {
748
        return defaultService.pageByAssociatedTaxon(type, includeRelationships, associatedTaxon, maxDepth, pageSize, pageNumber, orderHints, propertyPaths);
749
    }
750

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

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

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

    
786
    /**
787
     * @param clazz
788
     * @param queryString
789
     * @param boundingBox
790
     * @param languages
791
     * @param highlightFragments
792
     * @param pageSize
793
     * @param pageNumber
794
     * @param orderHints
795
     * @param propertyPaths
796
     * @return
797
     * @throws CorruptIndexException
798
     * @throws IOException
799
     * @throws ParseException
800
     * @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)
801
     */
802
    @Override
803
    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 {
804
        return defaultService.findByFullText(clazz, queryString, boundingBox, languages, highlightFragments, pageSize, pageNumber, orderHints, propertyPaths);
805
    }
806

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

    
817
    /**
818
     * @param example
819
     * @param includeProperties
820
     * @param limit
821
     * @param start
822
     * @param orderHints
823
     * @param propertyPaths
824
     * @return
825
     * @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)
826
     */
827
    @Override
828
    public List<SpecimenOrObservationBase> list(SpecimenOrObservationBase example, Set<String> includeProperties, Integer limit, Integer start, List<OrderHint> orderHints, List<String> propertyPaths) {
829
        return defaultService.list(example, includeProperties, limit, start, orderHints, propertyPaths);
830
    }
831

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

    
844
    /**
845
     * @param clazz
846
     * @param queryString
847
     * @param pageSize
848
     * @param pageNumber
849
     * @param orderHints
850
     * @param matchMode
851
     * @return
852
     * @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)
853
     */
854
    @Override
855
    public Pager<SpecimenOrObservationBase> findTitleCache(Class<? extends SpecimenOrObservationBase> clazz, String queryString, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, MatchMode matchMode) {
856
        return defaultService.findTitleCache(clazz, queryString, pageSize, pageNumber, orderHints, matchMode);
857
    }
858

    
859
    /**
860
     * @return
861
     */
862
    public Collection<SpecimenOrObservationBase<?>> getUnits() {
863
        return units;
864
    }
865

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

    
874
    /* (non-Javadoc)
875
     * @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)
876
     */
877
    @Override
878
    public <T extends SpecimenOrObservationBase> Pager<T> pageByAssociatedTaxon(Class<T> type,
879
            Set<TaxonRelationshipEdge> includeRelationships, String taxonUUID, Integer maxDepth, Integer pageSize,
880
            Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
881
        return defaultService.pageByAssociatedTaxon(type, includeRelationships, taxonUUID,
882
                maxDepth, pageSize, pageNumber, orderHints, propertyPaths);
883
    }
884

    
885
    /* (non-Javadoc)
886
     * @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)
887
     */
888
    @Override
889
    public boolean moveDerivate(SpecimenOrObservationBase<?> from, SpecimenOrObservationBase<?> to, DerivedUnit derivate) {
890
        return defaultService.moveDerivate(from, to, derivate);
891
    }
892

    
893
    /* (non-Javadoc)
894
     * @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)
895
     */
896
    @Override
897
    public boolean moveSequence(DnaSample from, DnaSample to, Sequence sequence) {
898
        return defaultService.moveSequence(from, to, sequence);
899
    }
900

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

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

    
915
	@Override
916
	public SpecimenOrObservationBase findWithoutFlush(UUID uuid) {
917
		return defaultService.findWithoutFlush(uuid);
918
	}
919

    
920
    /* (non-Javadoc)
921
     * @see eu.etaxonomy.cdm.api.service.IOccurrenceService#listFieldUnitsByAssociatedTaxon(java.util.Set, eu.etaxonomy.cdm.model.taxon.Taxon, java.lang.Integer, java.lang.Integer, java.lang.Integer, java.util.List, java.util.List)
922
     */
923
    @Override
924
    public Collection<FieldUnit> listFieldUnitsByAssociatedTaxon(Set<TaxonRelationshipEdge> includeRelationships,
925
            Taxon associatedTaxon, Integer maxDepth, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints,
926
            List<String> propertyPaths) {
927
        return defaultService.listFieldUnitsByAssociatedTaxon(includeRelationships, associatedTaxon, maxDepth, pageSize, pageNumber, orderHints, propertyPaths);
928
    }
929

    
930
    /* (non-Javadoc)
931
     * @see eu.etaxonomy.cdm.api.service.IOccurrenceService#assembleDerivateHierarchyDTO(eu.etaxonomy.cdm.model.occurrence.FieldUnit, java.util.UUID)
932
     */
933
    @Override
934
    public DerivateHierarchyDTO assembleDerivateHierarchyDTO(FieldUnit fieldUnit, UUID associatedTaxonUuid) {
935
        return defaultService.assembleDerivateHierarchyDTO(fieldUnit, associatedTaxonUuid);
936
    }
937

    
938
    /* (non-Javadoc)
939
     * @see eu.etaxonomy.cdm.api.service.IOccurrenceService#getNonCascadedAssociatedElements(eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationBase, eu.etaxonomy.cdm.api.conversation.ConversationHolder)
940
     */
941
    @Override
942
    public Collection<ICdmBase> getNonCascadedAssociatedElements(SpecimenOrObservationBase<?> specimen) {
943
        return defaultService.getNonCascadedAssociatedElements(specimen);
944
    }
945

    
946
    /* (non-Javadoc)
947
     * @see eu.etaxonomy.cdm.api.service.IOccurrenceService#deleteDerivateHierarchy(eu.etaxonomy.cdm.model.common.ICdmBase)
948
     */
949
    @Override
950
    public DeleteResult deleteDerivateHierarchy(ICdmBase from, SpecimenDeleteConfigurator config) {
951
        return defaultService.deleteDerivateHierarchy(from, config);
952
    }
953

    
954
    /* (non-Javadoc)
955
     * @see eu.etaxonomy.cdm.api.service.IOccurrenceService#delete(eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationBase, eu.etaxonomy.cdm.api.service.config.SpecimenDeleteConfigurator)
956
     */
957
    @Override
958
    public DeleteResult delete(SpecimenOrObservationBase<?> specimen, SpecimenDeleteConfigurator config) {
959
        return defaultService.delete(specimen, config);
960
    }
961

    
962
}
(7-7/10)