Project

General

Profile

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    
918
    /* (non-Javadoc)
919
     * @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)
920
     */
921
    @Override
922
    public Collection<FieldUnit> listFieldUnitsByAssociatedTaxon(Set<TaxonRelationshipEdge> includeRelationships,
923
            Taxon associatedTaxon, Integer maxDepth, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints,
924
            List<String> propertyPaths) {
925
        return defaultService.listFieldUnitsByAssociatedTaxon(includeRelationships, associatedTaxon, maxDepth, pageSize, pageNumber, orderHints, propertyPaths);
926
    }
927

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

    
936
}
(6-6/9)