Project

General

Profile

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    
868

    
869
    @Override
870
    public boolean moveSequence(DnaSample from, DnaSample to, Sequence sequence) {
871
        return defaultService.moveSequence(from, to, sequence);
872
    }
873

    
874
	@Override
875
	public DeleteResult isDeletable(SpecimenOrObservationBase object,
876
			DeleteConfiguratorBase config) {
877
		return defaultService.isDeletable(object, config);
878
	}
879

    
880
    @Override
881
    public int countDeterminations(SpecimenOrObservationBase occurence, TaxonBase taxonbase) {
882
        return defaultService.countDeterminations(occurence, taxonbase);
883
    }
884

    
885
	@Override
886
	public SpecimenOrObservationBase findWithoutFlush(UUID uuid) {
887
		return defaultService.findWithoutFlush(uuid);
888
	}
889

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

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

    
903

    
904
	@Override
905
	public FieldUnitDTO assembleFieldUnitDTO(FieldUnit fieldUnit, UUID associatedTaxonUuid) {
906
	    return defaultService.assembleFieldUnitDTO(fieldUnit, associatedTaxonUuid);
907
	}
908

    
909
	@Override
910
	public PreservedSpecimenDTO assemblePreservedSpecimenDTO(DerivedUnit derivedUnit) {
911
	    return defaultService.assemblePreservedSpecimenDTO(derivedUnit);
912
	}
913

    
914
    @Override
915
    public Collection<ICdmBase> getNonCascadedAssociatedElements(SpecimenOrObservationBase<?> specimen) {
916
        return defaultService.getNonCascadedAssociatedElements(specimen);
917
    }
918

    
919
    @Override
920
    public DeleteResult deleteDerivateHierarchy(CdmBase from, SpecimenDeleteConfigurator config) {
921
        return defaultService.deleteDerivateHierarchy(from, config);
922
    }
923

    
924
    @Override
925
    public DeleteResult delete(SpecimenOrObservationBase<?> specimen, SpecimenDeleteConfigurator config) {
926
        return defaultService.delete(specimen, config);
927
    }
928

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

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

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

    
948
	@Override
949
	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){
950
		return defaultService.findByIdentifier(clazz, identifier, identifierType, matchmode, includeEntity, pageSize, pageNumber, propertyPaths);
951
	}
952

    
953
	@Override
954
	public Collection<DescriptionElementBase> getCharacterDataForSpecimen(SpecimenOrObservationBase<?> arg0) {
955
	    return defaultService.getCharacterDataForSpecimen(arg0);
956
	}
957

    
958
	@Override
959
	public Collection<DescriptionElementBase> getCharacterDataForSpecimen(UUID arg0) {
960
	    return getCharacterDataForSpecimen(arg0);
961
	}
962

    
963
	@Override
964
	public String getMostSignificantIdentifier(DerivedUnit derivedUnit) {
965
	    return defaultService.getMostSignificantIdentifier(derivedUnit);
966
	}
967

    
968
	@Override
969
	public int countOccurrences(IIdentifiableEntityServiceConfigurator<SpecimenOrObservationBase> config) {
970
	    return defaultService.countOccurrences(config);
971
	}
972

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

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

    
989

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

    
998
    @Override
999
    public DeleteResult delete(Collection<UUID> arg0) {
1000
        return defaultService.delete(arg0);
1001
    }
1002

    
1003
    @Override
1004
    public DeleteResult deleteSingleRead(SingleRead singleRead, Sequence sequence){
1005
        return defaultService.deleteSingleRead(singleRead, sequence);
1006
    }
1007

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

    
1016
    /* (non-Javadoc)
1017
     * @see eu.etaxonomy.cdm.api.service.IOccurrenceService#deleteDerivateHierarchy(java.util.UUID, eu.etaxonomy.cdm.api.service.config.SpecimenDeleteConfigurator)
1018
     */
1019
    @Override
1020
    public DeleteResult deleteDerivateHierarchy(UUID arg0, SpecimenDeleteConfigurator arg1) {
1021
        return defaultService.deleteDerivateHierarchy(arg0, arg1);
1022
    }
1023

    
1024
    /* (non-Javadoc)
1025
     * @see eu.etaxonomy.cdm.api.service.IOccurrenceService#deleteSingleRead(java.util.UUID, java.util.UUID)
1026
     */
1027
    @Override
1028
    public DeleteResult deleteSingleRead(UUID arg0, UUID arg1) {
1029
        return defaultService.deleteSingleRead(arg0, arg1);
1030
    }
1031

    
1032
    /* (non-Javadoc)
1033
     * @see eu.etaxonomy.cdm.api.service.IOccurrenceService#moveDerivate(java.util.UUID, java.util.UUID, java.util.UUID)
1034
     */
1035
    @Override
1036
    public UpdateResult moveDerivate(UUID arg0, UUID arg1, UUID arg2) {
1037
        return defaultService.moveDerivate(arg0, arg1, arg2);
1038
    }
1039

    
1040
    /* (non-Javadoc)
1041
     * @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)
1042
     */
1043
    @Override
1044
    public boolean moveDerivate(SpecimenOrObservationBase<?> from, SpecimenOrObservationBase<?> to, DerivedUnit derivate) {
1045
        return defaultService.moveDerivate(from, to, derivate);
1046
    }
1047

    
1048

    
1049
}
(7-7/10)