64dded36bc5c55adf8e1ff8cb2a48519d59e962c
[taxeditor.git] / eu.etaxonomy.taxeditor.editor / src / main / java / eu / etaxonomy / taxeditor / editor / view / dataimport / transientServices / TransientOccurenceService.java
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.MergeResult;
74 import eu.etaxonomy.cdm.persistence.dto.UuidAndTitleCache;
75 import eu.etaxonomy.cdm.persistence.query.Grouping;
76 import eu.etaxonomy.cdm.persistence.query.MatchMode;
77 import eu.etaxonomy.cdm.persistence.query.OrderHint;
78 import eu.etaxonomy.cdm.strategy.cache.common.IIdentifiableEntityCacheStrategy;
79 import eu.etaxonomy.cdm.strategy.match.IMatchStrategy;
80 import eu.etaxonomy.cdm.strategy.merge.IMergeStrategy;
81
82 /**
83 * @author pplitzner
84 * @date 26.09.2013
85 *
86 */
87 public class TransientOccurenceService implements IOccurrenceService {
88
89 private final IOccurrenceService defaultService;
90 private final Collection<SpecimenOrObservationBase<?>> units;
91
92 /**
93 * @param defaultService
94 */
95 public TransientOccurenceService(IOccurrenceService defaultService) {
96 this.defaultService = defaultService;
97 this.units = new HashSet<SpecimenOrObservationBase<?>>();
98 }
99
100 /**
101 * @param t
102 * @param pageSize
103 * @param pageNumber
104 * @param sort
105 * @param propertyPaths
106 * @return
107 * @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)
108 */
109 @Override
110 public Pager<AuditEventRecord<SpecimenOrObservationBase>> pageAuditEvents(SpecimenOrObservationBase t, Integer pageSize, Integer pageNumber, AuditEventSort sort, List<String> propertyPaths) {
111 return defaultService.pageAuditEvents(t, pageSize, pageNumber, sort, propertyPaths);
112 }
113
114 /**
115 * @param annotatedObj
116 * @param status
117 * @param pageSize
118 * @param pageNumber
119 * @param orderHints
120 * @param propertyPaths
121 * @return
122 * @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)
123 */
124 @Override
125 public Pager<Annotation> getAnnotations(SpecimenOrObservationBase annotatedObj, MarkerType status, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
126 return defaultService.getAnnotations(annotatedObj, status, pageSize, pageNumber, orderHints, propertyPaths);
127 }
128
129 /**
130 *
131 * @see eu.etaxonomy.cdm.api.service.IService#clear()
132 */
133 @Override
134 public void clear() {
135 defaultService.clear();
136 }
137
138 /**
139 * @param t
140 * @param lockMode
141 * @see eu.etaxonomy.cdm.api.service.IService#lock(eu.etaxonomy.cdm.model.common.ICdmBase, org.hibernate.LockMode)
142 */
143 @Override
144 public void lock(SpecimenOrObservationBase t, LockOptions lockOptions) {
145 defaultService.lock(t, lockOptions);
146 }
147
148 /**
149 * @param t
150 * @param lockMode
151 * @param propertyPaths
152 * @see eu.etaxonomy.cdm.api.service.IService#refresh(eu.etaxonomy.cdm.model.common.ICdmBase, org.hibernate.LockMode, java.util.List)
153 */
154 @Override
155 public void refresh(SpecimenOrObservationBase t, LockOptions lockOptions, List<String> propertyPaths) {
156 defaultService.refresh(t, lockOptions, propertyPaths);
157 }
158
159 /**
160 *
161 * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#updateTitleCache()
162 */
163 @Override
164 public void updateTitleCache() {
165 defaultService.updateTitleCache();
166 }
167
168 /**
169 * @param t
170 * @return
171 * @see eu.etaxonomy.cdm.api.service.IVersionableService#getNextAuditEvent(eu.etaxonomy.cdm.model.common.VersionableEntity)
172 */
173 @Override
174 public AuditEventRecord<SpecimenOrObservationBase> getNextAuditEvent(SpecimenOrObservationBase t) {
175 return defaultService.getNextAuditEvent(t);
176 }
177
178 /**
179 * @param annotatableEntity
180 * @param technical
181 * @param pageSize
182 * @param pageNumber
183 * @param orderHints
184 * @param propertyPaths
185 * @return
186 * @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)
187 */
188 @Override
189 public Pager<Marker> getMarkers(SpecimenOrObservationBase annotatableEntity, Boolean technical, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
190 return defaultService.getMarkers(annotatableEntity, technical, pageSize, pageNumber, orderHints, propertyPaths);
191 }
192
193 /**
194 * @param clazz
195 * @param stepSize
196 * @param cacheStrategy
197 * @param monitor
198 * @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)
199 */
200 @Override
201 public void updateTitleCache(Class<? extends SpecimenOrObservationBase> clazz, Integer stepSize, IIdentifiableEntityCacheStrategy<SpecimenOrObservationBase> cacheStrategy, IProgressMonitor monitor) {
202 defaultService.updateTitleCache(clazz, stepSize, cacheStrategy, monitor);
203 }
204
205 /**
206 * @param t
207 * @return
208 * @see eu.etaxonomy.cdm.api.service.IVersionableService#getPreviousAuditEvent(eu.etaxonomy.cdm.model.common.VersionableEntity)
209 */
210 @Override
211 public AuditEventRecord<SpecimenOrObservationBase> getPreviousAuditEvent(SpecimenOrObservationBase t) {
212 return defaultService.getPreviousAuditEvent(t);
213 }
214
215 /**
216 * @param iso639
217 * @return
218 * @see eu.etaxonomy.cdm.api.service.IOccurrenceService#getCountryByIso(java.lang.String)
219 */
220 @Override
221 public Country getCountryByIso(String iso639) {
222 return defaultService.getCountryByIso(iso639);
223 }
224
225 /**
226 * @param clazz
227 * @return
228 * @see eu.etaxonomy.cdm.api.service.IService#count(java.lang.Class)
229 */
230 @Override
231 public int count(Class<? extends SpecimenOrObservationBase> clazz) {
232 return defaultService.count(clazz);
233 }
234
235 /**
236 * @param name
237 * @return
238 * @see eu.etaxonomy.cdm.api.service.IOccurrenceService#getCountryByName(java.lang.String)
239 */
240 @Override
241 public List<Country> getCountryByName(String name) {
242 return defaultService.getCountryByName(name);
243 }
244
245 /**
246 * @param type
247 * @param determinedAs
248 * @param limit
249 * @param start
250 * @param orderHints
251 * @param propertyPaths
252 * @return
253 * @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)
254 */
255 @Override
256 public Pager<SpecimenOrObservationBase> list(Class<? extends SpecimenOrObservationBase> type, TaxonBase determinedAs, Integer limit, Integer start, List<OrderHint> orderHints, List<String> propertyPaths) {
257 return defaultService.list(type, determinedAs, limit, start, orderHints, propertyPaths);
258 }
259
260 /**
261 * @param clazz
262 * @param from
263 * @param to
264 * @param criteria
265 * @param pageSize
266 * @param pageValue
267 * @param sort
268 * @param propertyPaths
269 * @return
270 * @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)
271 */
272 @Override
273 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) {
274 return defaultService.pageAuditEvents(clazz, from, to, criteria, pageSize, pageValue, sort, propertyPaths);
275 }
276
277 /**
278 * @param lsid
279 * @return
280 * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#find(eu.etaxonomy.cdm.model.common.LSID)
281 */
282 @Override
283 public SpecimenOrObservationBase find(LSID lsid) {
284 return defaultService.find(lsid);
285 }
286
287 /**
288 * @param persistentObject
289 * @return
290 * @see eu.etaxonomy.cdm.api.service.IService#delete(eu.etaxonomy.cdm.model.common.ICdmBase)
291 */
292 @Override
293 public DeleteResult delete(SpecimenOrObservationBase persistentObject) {
294 return defaultService.delete(persistentObject);
295 }
296
297 /**
298 * @param clazz
299 * @param technical
300 * @param pageSize
301 * @param pageNumber
302 * @param propertyPaths
303 * @return
304 * @see eu.etaxonomy.cdm.api.service.IAnnotatableService#groupMarkers(java.lang.Class, java.lang.Boolean, java.lang.Integer, java.lang.Integer, java.util.List)
305 */
306 @Override
307 public List<Object[]> groupMarkers(Class<? extends SpecimenOrObservationBase> clazz, Boolean technical, Integer pageSize, Integer pageNumber, List<String> propertyPaths) {
308 return defaultService.groupMarkers(clazz, technical, pageSize, pageNumber, propertyPaths);
309 }
310
311 /**
312 * @param uuid
313 * @return
314 * @see eu.etaxonomy.cdm.api.service.IService#exists(java.util.UUID)
315 */
316 @Override
317 public boolean exists(UUID uuid) {
318 return defaultService.exists(uuid);
319 }
320
321 /**
322 * @param x
323 * @param y
324 * @return
325 * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#replace(eu.etaxonomy.cdm.model.common.IdentifiableEntity, eu.etaxonomy.cdm.model.common.IdentifiableEntity)
326 */
327 @Override
328 public SpecimenOrObservationBase replace(SpecimenOrObservationBase x, SpecimenOrObservationBase y) {
329 return defaultService.replace(x, y);
330 }
331
332 /**
333 * @param uuidSet
334 * @return
335 * @see eu.etaxonomy.cdm.api.service.IService#find(java.util.Set)
336 */
337 @Override
338 public List<SpecimenOrObservationBase> find(Set<UUID> uuidSet) {
339 return defaultService.find(uuidSet);
340 }
341
342 /**
343 * @param t
344 * @param pageSize
345 * @param pageNumber
346 * @param propertyPaths
347 * @return
348 * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#getSources(eu.etaxonomy.cdm.model.common.IdentifiableEntity, java.lang.Integer, java.lang.Integer, java.util.List)
349 */
350 @Override
351 public Pager<IdentifiableSource> getSources(SpecimenOrObservationBase t, Integer pageSize, Integer pageNumber, List<String> propertyPaths) {
352 return defaultService.getSources(t, pageSize, pageNumber, propertyPaths);
353 }
354
355 /**
356 * @param uuid
357 * @return
358 * @see eu.etaxonomy.cdm.api.service.IService#find(java.util.UUID)
359 */
360 @Override
361 public SpecimenOrObservationBase find(UUID uuid) {
362 return defaultService.find(uuid);
363 }
364
365 /**
366 * @param id
367 * @return
368 * @see eu.etaxonomy.cdm.api.service.IService#find(int)
369 */
370 @Override
371 public SpecimenOrObservationBase find(int id) {
372 return defaultService.find(id);
373 }
374
375 /**
376 * @param t
377 * @param pageSize
378 * @param pageNumber
379 * @param propertyPaths
380 * @return
381 * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#getRights(eu.etaxonomy.cdm.model.common.IdentifiableEntity, java.lang.Integer, java.lang.Integer, java.util.List)
382 */
383 @Override
384 public Pager<Rights> getRights(SpecimenOrObservationBase t, Integer pageSize, Integer pageNumber, List<String> propertyPaths) {
385 return defaultService.getRights(t, pageSize, pageNumber, propertyPaths);
386 }
387
388 /**
389 * @param clazz
390 * @param technical
391 * @return
392 * @see eu.etaxonomy.cdm.api.service.IAnnotatableService#countMarkers(java.lang.Class, java.lang.Boolean)
393 */
394 @Override
395 public int countMarkers(Class<? extends SpecimenOrObservationBase> clazz, Boolean technical) {
396 return defaultService.countMarkers(clazz, technical);
397 }
398
399 /**
400 * @param occurence
401 * @param pageSize
402 * @param pageNumber
403 * @param propertyPaths
404 * @return
405 * @see eu.etaxonomy.cdm.api.service.IOccurrenceService#getMedia(eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationBase, java.lang.Integer, java.lang.Integer, java.util.List)
406 */
407 @Override
408 public Pager<Media> getMedia(SpecimenOrObservationBase occurence, Integer pageSize, Integer pageNumber, List<String> propertyPaths) {
409 return defaultService.getMedia(occurence, pageSize, pageNumber, propertyPaths);
410 }
411
412 /**
413 * @param idSet
414 * @return
415 * @see eu.etaxonomy.cdm.api.service.IService#findById(java.util.Set)
416 */
417 @Override
418 public List<SpecimenOrObservationBase> findById(Set<Integer> idSet) {
419 return defaultService.findById(idSet);
420 }
421
422 /**
423 * @param clazz
424 * @param idInSource
425 * @param idNamespace
426 * @return
427 * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#getSourcedObjectByIdInSource(java.lang.Class, java.lang.String, java.lang.String)
428 */
429 @Override
430 public ISourceable getSourcedObjectByIdInSource(Class clazz, String idInSource, String idNamespace) {
431 return defaultService.getSourcedObjectByIdInSource(clazz, idInSource, idNamespace);
432 }
433
434 /**
435 * @return
436 * @see eu.etaxonomy.cdm.api.service.IService#getSession()
437 */
438 @Override
439 public Session getSession() {
440 return defaultService.getSession();
441 }
442
443 /**
444 * @return
445 * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#getUuidAndTitleCache()
446 */
447 @Override
448 public List<UuidAndTitleCache<SpecimenOrObservationBase>> getUuidAndTitleCache() {
449 return defaultService.getUuidAndTitleCache();
450 }
451
452 /**
453 * @param clazz
454 * @param limit
455 * @param start
456 * @param groups
457 * @param propertyPaths
458 * @return
459 * @see eu.etaxonomy.cdm.api.service.IService#group(java.lang.Class, java.lang.Integer, java.lang.Integer, java.util.List, java.util.List)
460 */
461 @Override
462 public List<Object[]> group(Class<? extends SpecimenOrObservationBase> clazz, Integer limit, Integer start, List<Grouping> groups, List<String> propertyPaths) {
463 return defaultService.group(clazz, limit, start, groups, propertyPaths);
464 }
465
466 /**
467 * @param occurence
468 * @param taxonBase
469 * @param pageSize
470 * @param pageNumber
471 * @param propertyPaths
472 * @return
473 * @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)
474 */
475 @Override
476 public Pager<DeterminationEvent> getDeterminations(SpecimenOrObservationBase occurence, TaxonBase taxonBase, Integer pageSize, Integer pageNumber, List<String> propertyPaths) {
477 return defaultService.getDeterminations(occurence, taxonBase, pageSize, pageNumber, propertyPaths);
478 }
479
480 /**
481 * @param clazz
482 * @param queryString
483 * @param matchmode
484 * @param criteria
485 * @param pageSize
486 * @param pageNumber
487 * @param orderHints
488 * @param propertyPaths
489 * @return
490 * @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)
491 */
492 @Override
493 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) {
494 return defaultService.findByTitle(clazz, queryString, matchmode, criteria, pageSize, pageNumber, orderHints, propertyPaths);
495 }
496
497 /**
498 * @param occurence
499 * @param pageSize
500 * @param pageNumber
501 * @param propertyPaths
502 * @return
503 * @see eu.etaxonomy.cdm.api.service.IOccurrenceService#getDerivationEvents(eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationBase, java.lang.Integer, java.lang.Integer, java.util.List)
504 */
505 @Override
506 public Pager<DerivationEvent> getDerivationEvents(SpecimenOrObservationBase occurence, Integer pageSize, Integer pageNumber, List<String> propertyPaths) {
507 return defaultService.getDerivationEvents(occurence, pageSize, pageNumber, propertyPaths);
508 }
509
510 /**
511 * @param type
512 * @param limit
513 * @param start
514 * @param orderHints
515 * @param propertyPaths
516 * @return
517 * @see eu.etaxonomy.cdm.api.service.IService#list(java.lang.Class, java.lang.Integer, java.lang.Integer, java.util.List, java.util.List)
518 */
519 @Override
520 public <S extends SpecimenOrObservationBase> List<S> list(Class<S> type, Integer limit, Integer start, List<OrderHint> orderHints, List<String> propertyPaths) {
521 return defaultService.list(type, limit, start, orderHints, propertyPaths);
522 }
523
524 /**
525 * @param clazz
526 * @param query
527 * @param pageSize
528 * @param pageNumber
529 * @param orderHints
530 * @param propertyPaths
531 * @return
532 * @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)
533 */
534 @Override
535 public Pager<SpecimenOrObservationBase> search(Class<? extends SpecimenOrObservationBase> clazz, String query, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
536 return defaultService.search(clazz, query, pageSize, pageNumber, orderHints, propertyPaths);
537 }
538
539 /**
540 * @param configurator
541 * @return
542 * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#findByTitle(eu.etaxonomy.cdm.api.service.config.IIdentifiableEntityServiceConfigurator)
543 */
544 @Override
545 public Pager<SpecimenOrObservationBase> findByTitle(IIdentifiableEntityServiceConfigurator<SpecimenOrObservationBase> configurator) {
546 return defaultService.findByTitle(configurator);
547 }
548
549 /**
550 * @param clazz
551 * @param queryString
552 * @param matchmode
553 * @param criteria
554 * @return
555 * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#countByTitle(java.lang.Class, java.lang.String, eu.etaxonomy.cdm.persistence.query.MatchMode, java.util.List)
556 */
557 @Override
558 public Integer countByTitle(Class<? extends SpecimenOrObservationBase> clazz, String queryString, MatchMode matchmode, List<Criterion> criteria) {
559 return defaultService.countByTitle(clazz, queryString, matchmode, criteria);
560 }
561
562 /**
563 * @param uuid
564 * @return
565 * @see eu.etaxonomy.cdm.api.service.IService#load(java.util.UUID)
566 */
567 @Override
568 public SpecimenOrObservationBase load(UUID uuid) {
569 return defaultService.load(uuid);
570 }
571
572 /**
573 * @param uuid
574 * @param propertyPaths
575 * @return
576 * @see eu.etaxonomy.cdm.api.service.IService#load(java.util.UUID, java.util.List)
577 */
578 @Override
579 public SpecimenOrObservationBase load(UUID uuid, List<String> propertyPaths) {
580 return defaultService.load(uuid, propertyPaths);
581 }
582
583 /**
584 * @param configurator
585 * @return
586 * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#countByTitle(eu.etaxonomy.cdm.api.service.config.IIdentifiableEntityServiceConfigurator)
587 */
588 @Override
589 public Integer countByTitle(IIdentifiableEntityServiceConfigurator<SpecimenOrObservationBase> configurator) {
590 return defaultService.countByTitle(configurator);
591 }
592
593 /**
594 * @return
595 * @see eu.etaxonomy.cdm.api.service.IOccurrenceService#getFieldUnitUuidAndTitleCache()
596 */
597 @Override
598 public List<UuidAndTitleCache<FieldUnit>> getFieldUnitUuidAndTitleCache() {
599 return defaultService.getFieldUnitUuidAndTitleCache();
600 }
601
602 /**
603 * @return
604 * @see eu.etaxonomy.cdm.api.service.IOccurrenceService#getDerivedUnitUuidAndTitleCache()
605 */
606 @Override
607 public List<UuidAndTitleCache<DerivedUnit>> getDerivedUnitUuidAndTitleCache() {
608 return defaultService.getDerivedUnitUuidAndTitleCache();
609 }
610
611 /**
612 * @param transientObject
613 * @return
614 * @see eu.etaxonomy.cdm.api.service.IService#merge(eu.etaxonomy.cdm.model.common.ICdmBase)
615 */
616 @Override
617 public SpecimenOrObservationBase merge(SpecimenOrObservationBase transientObject) {
618 return defaultService.merge(transientObject);
619 }
620
621 /**
622 * @param derivedUnit
623 * @param propertyPaths
624 * @return
625 * @throws DerivedUnitFacadeNotSupportedException
626 * @see eu.etaxonomy.cdm.api.service.IOccurrenceService#getDerivedUnitFacade(eu.etaxonomy.cdm.model.occurrence.DerivedUnit, java.util.List)
627 */
628 @Override
629 public DerivedUnitFacade getDerivedUnitFacade(DerivedUnit derivedUnit, List<String> propertyPaths) throws DerivedUnitFacadeNotSupportedException {
630 return defaultService.getDerivedUnitFacade(derivedUnit, propertyPaths);
631 }
632
633 /**
634 * @param clazz
635 * @param queryString
636 * @param matchmode
637 * @param criteria
638 * @param pageSize
639 * @param pageNumber
640 * @param orderHints
641 * @param propertyPaths
642 * @return
643 * @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)
644 */
645 @Override
646 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) {
647 return defaultService.listByTitle(clazz, queryString, matchmode, criteria, pageSize, pageNumber, orderHints, propertyPaths);
648 }
649
650 /**
651 * @param description
652 * @param propertyPaths
653 * @return
654 * @see eu.etaxonomy.cdm.api.service.IOccurrenceService#listDerivedUnitFacades(eu.etaxonomy.cdm.model.description.DescriptionBase, java.util.List)
655 */
656 @Override
657 public List<DerivedUnitFacade> listDerivedUnitFacades(DescriptionBase description, List<String> propertyPaths) {
658 return defaultService.listDerivedUnitFacades(description, propertyPaths);
659 }
660
661 /**
662 * @param type
663 * @param pageSize
664 * @param pageNumber
665 * @param orderHints
666 * @param propertyPaths
667 * @return
668 * @see eu.etaxonomy.cdm.api.service.IService#page(java.lang.Class, java.lang.Integer, java.lang.Integer, java.util.List, java.util.List)
669 */
670 @Override
671 public <S extends SpecimenOrObservationBase> Pager<S> page(Class<S> type, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
672 return defaultService.page(type, pageSize, pageNumber, orderHints, propertyPaths);
673 }
674
675 /**
676 * @param type
677 * @param includeRelationships
678 * @param associatedTaxon
679 * @param maxDepth
680 * @param pageSize
681 * @param pageNumber
682 * @param orderHints
683 * @param propertyPaths
684 * @return
685 * @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)
686 */
687 @Override
688 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) {
689 return defaultService.listByAssociatedTaxon(type, includeRelationships, associatedTaxon, maxDepth, pageSize, pageNumber, orderHints, propertyPaths);
690 }
691
692 /**
693 * @param persistentObject
694 * @return
695 * @see eu.etaxonomy.cdm.api.service.IService#refresh(eu.etaxonomy.cdm.model.common.ICdmBase)
696 */
697 @Override
698 public UUID refresh(SpecimenOrObservationBase persistentObject) {
699 return defaultService.refresh(persistentObject);
700 }
701
702 /**
703 * @param clazz
704 * @param queryString
705 * @param matchmode
706 * @param criteria
707 * @param pageSize
708 * @param pageNumber
709 * @param orderHints
710 * @param propertyPaths
711 * @return
712 * @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)
713 */
714 @Override
715 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) {
716 return defaultService.listByReferenceTitle(clazz, queryString, matchmode, criteria, pageSize, pageNumber, orderHints, propertyPaths);
717 }
718
719 /**
720 * @param tableName
721 * @param limit
722 * @param start
723 * @return
724 * @see eu.etaxonomy.cdm.api.service.IService#rows(java.lang.String, int, int)
725 */
726 @Override
727 public List<SpecimenOrObservationBase> rows(String tableName, int limit, int start) {
728 return defaultService.rows(tableName, limit, start);
729 }
730
731 /**
732 * @param newInstances
733 * @return
734 * @see eu.etaxonomy.cdm.api.service.IService#save(java.util.Collection)
735 */
736 @Override
737 public Map<UUID, SpecimenOrObservationBase> save(Collection<SpecimenOrObservationBase> newInstances) {
738 for(SpecimenOrObservationBase unit:newInstances){
739 save(unit);
740 }
741 return null;
742 }
743
744 /**
745 * @param type
746 * @param includeRelationships
747 * @param associatedTaxon
748 * @param maxDepth
749 * @param pageSize
750 * @param pageNumber
751 * @param orderHints
752 * @param propertyPaths
753 * @return
754 * @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)
755 */
756 @Override
757 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) {
758 return defaultService.pageByAssociatedTaxon(type, includeRelationships, associatedTaxon, maxDepth, pageSize, pageNumber, orderHints, propertyPaths);
759 }
760
761 /**
762 * @param newInstance
763 * @return
764 * @see eu.etaxonomy.cdm.api.service.IService#save(eu.etaxonomy.cdm.model.common.ICdmBase)
765 */
766 @Override
767 public SpecimenOrObservationBase save(SpecimenOrObservationBase newInstance) {
768 units.add(newInstance);
769 return null;
770 }
771
772 /**
773 * @param transientObject
774 * @return
775 * @see eu.etaxonomy.cdm.api.service.IService#saveOrUpdate(eu.etaxonomy.cdm.model.common.ICdmBase)
776 */
777 @Override
778 public UUID saveOrUpdate(SpecimenOrObservationBase transientObject) {
779 units.add(transientObject);
780 return null;
781 }
782
783 /**
784 * @param transientObjects
785 * @return
786 * @see eu.etaxonomy.cdm.api.service.IService#saveOrUpdate(java.util.Collection)
787 */
788 @Override
789 public Map<UUID, SpecimenOrObservationBase> saveOrUpdate(Collection<SpecimenOrObservationBase> transientObjects) {
790 for(SpecimenOrObservationBase unit:transientObjects){
791 saveOrUpdate(unit);
792 }
793 return null;
794 }
795
796 /**
797 * @param clazz
798 * @param queryString
799 * @param boundingBox
800 * @param languages
801 * @param highlightFragments
802 * @param pageSize
803 * @param pageNumber
804 * @param orderHints
805 * @param propertyPaths
806 * @return
807 * @throws CorruptIndexException
808 * @throws IOException
809 * @throws ParseException
810 * @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)
811 */
812 @Override
813 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 {
814 return defaultService.findByFullText(clazz, queryString, boundingBox, languages, highlightFragments, pageSize, pageNumber, orderHints, propertyPaths);
815 }
816
817 /**
818 * @param transientObject
819 * @return
820 * @see eu.etaxonomy.cdm.api.service.IService#update(eu.etaxonomy.cdm.model.common.ICdmBase)
821 */
822 @Override
823 public UUID update(SpecimenOrObservationBase transientObject) {
824 return defaultService.update(transientObject);
825 }
826
827 /**
828 * @param example
829 * @param includeProperties
830 * @param limit
831 * @param start
832 * @param orderHints
833 * @param propertyPaths
834 * @return
835 * @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)
836 */
837 @Override
838 public List<SpecimenOrObservationBase> list(SpecimenOrObservationBase example, Set<String> includeProperties, Integer limit, Integer start, List<OrderHint> orderHints, List<String> propertyPaths) {
839 return defaultService.list(example, includeProperties, limit, start, orderHints, propertyPaths);
840 }
841
842 @Override
843 public int deduplicate(Class<? extends SpecimenOrObservationBase> clazz, IMatchStrategy matchStrategy, IMergeStrategy mergeStrategy) {
844 return defaultService.deduplicate(clazz, matchStrategy, mergeStrategy);
845 }
846
847 @Override
848 public Pager<SpecimenOrObservationBase> findTitleCache(Class<? extends SpecimenOrObservationBase> clazz, String queryString, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, MatchMode matchMode) {
849 return defaultService.findTitleCache(clazz, queryString, pageSize, pageNumber, orderHints, matchMode);
850 }
851
852 public Collection<SpecimenOrObservationBase<?>> getUnits() {
853 return units;
854 }
855
856 @Override
857 public Collection<FieldUnit> getFieldUnits(UUID derivedUnitUuid) {
858 return defaultService.getFieldUnits(derivedUnitUuid);
859 }
860
861 @Override
862 public <T extends SpecimenOrObservationBase> Pager<T> pageByAssociatedTaxon(Class<T> type,
863 Set<TaxonRelationshipEdge> includeRelationships, String taxonUUID, Integer maxDepth, Integer pageSize,
864 Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
865 return defaultService.pageByAssociatedTaxon(type, includeRelationships, taxonUUID,
866 maxDepth, pageSize, pageNumber, orderHints, propertyPaths);
867 }
868
869
870 @Override
871 public UpdateResult moveSequence(DnaSample from, DnaSample to, Sequence sequence) {
872 return defaultService.moveSequence(from, to, sequence);
873 }
874
875 @Override
876 public DeleteResult isDeletable(SpecimenOrObservationBase object,
877 DeleteConfiguratorBase config) {
878 return defaultService.isDeletable(object, config);
879 }
880
881 @Override
882 public int countDeterminations(SpecimenOrObservationBase occurence, TaxonBase taxonbase) {
883 return defaultService.countDeterminations(occurence, taxonbase);
884 }
885
886 @Override
887 public SpecimenOrObservationBase findWithoutFlush(UUID uuid) {
888 return defaultService.findWithoutFlush(uuid);
889 }
890
891 @Override
892 public Collection<SpecimenOrObservationBase> listFieldUnitsByAssociatedTaxon(Taxon associatedTaxon,
893 List<OrderHint> orderHints, List<String> propertyPaths) {
894 return defaultService.listFieldUnitsByAssociatedTaxon(associatedTaxon, orderHints, propertyPaths);
895 }
896
897 @Override
898 public Pager<SpecimenOrObservationBase> pageFieldUnitsByAssociatedTaxon(
899 Set<TaxonRelationshipEdge> includeRelationships, Taxon associatedTaxon, Integer maxDepth, Integer pageSize,
900 Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
901 return defaultService.pageFieldUnitsByAssociatedTaxon(includeRelationships, associatedTaxon, maxDepth, pageSize, pageNumber, orderHints, propertyPaths);
902 }
903
904
905 @Override
906 public FieldUnitDTO assembleFieldUnitDTO(FieldUnit fieldUnit, UUID associatedTaxonUuid) {
907 return defaultService.assembleFieldUnitDTO(fieldUnit, associatedTaxonUuid);
908 }
909
910 @Override
911 public PreservedSpecimenDTO assemblePreservedSpecimenDTO(DerivedUnit derivedUnit) {
912 return defaultService.assemblePreservedSpecimenDTO(derivedUnit);
913 }
914
915 @Override
916 public Collection<ICdmBase> getNonCascadedAssociatedElements(SpecimenOrObservationBase<?> specimen) {
917 return defaultService.getNonCascadedAssociatedElements(specimen);
918 }
919
920 @Override
921 public DeleteResult deleteDerivateHierarchy(CdmBase from, SpecimenDeleteConfigurator config) {
922 return defaultService.deleteDerivateHierarchy(from, config);
923 }
924
925 @Override
926 public DeleteResult delete(SpecimenOrObservationBase<?> specimen, SpecimenDeleteConfigurator config) {
927 return defaultService.delete(specimen, config);
928 }
929
930 @Override
931 public Collection<IndividualsAssociation> listIndividualsAssociations(SpecimenOrObservationBase<?> specimen,
932 Integer limit, Integer start, List<OrderHint> orderHints, List<String> propertyPaths) {
933 return defaultService.listIndividualsAssociations(specimen, limit, start, orderHints, propertyPaths);
934 }
935
936 @Override
937 public Collection<SpecimenTypeDesignation> listTypeDesignations(SpecimenOrObservationBase<?> specimen,
938 Integer limit, Integer start, List<OrderHint> orderHints, List<String> propertyPaths) {
939 return defaultService.listTypeDesignations(specimen, limit, start, orderHints, propertyPaths);
940 }
941
942 @Override
943 public Collection<DescriptionBase<?>> listDescriptionsWithDescriptionSpecimen(
944 SpecimenOrObservationBase<?> specimen, Integer limit, Integer start, List<OrderHint> orderHints,
945 List<String> propertyPaths) {
946 return defaultService.listDescriptionsWithDescriptionSpecimen(specimen, limit, start, orderHints, propertyPaths);
947 }
948
949 @Override
950 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){
951 return defaultService.findByIdentifier(clazz, identifier, identifierType, matchmode, includeEntity, pageSize, pageNumber, propertyPaths);
952 }
953
954 @Override
955 public Collection<DescriptionElementBase> getCharacterDataForSpecimen(SpecimenOrObservationBase<?> arg0) {
956 return defaultService.getCharacterDataForSpecimen(arg0);
957 }
958
959 @Override
960 public Collection<DescriptionElementBase> getCharacterDataForSpecimen(UUID arg0) {
961 return getCharacterDataForSpecimen(arg0);
962 }
963
964 @Override
965 public String getMostSignificantIdentifier(DerivedUnit derivedUnit) {
966 return defaultService.getMostSignificantIdentifier(derivedUnit);
967 }
968
969 @Override
970 public int countOccurrences(IIdentifiableEntityServiceConfigurator<SpecimenOrObservationBase> config) {
971 return defaultService.countOccurrences(config);
972 }
973
974 /**
975 * {@inheritDoc}
976 */
977 @Override
978 public List<DerivedUnit> getAllChildDerivatives(SpecimenOrObservationBase<?> specimen) {
979 return defaultService.getAllChildDerivatives(specimen);
980 }
981
982 /**
983 * {@inheritDoc}
984 */
985 @Override
986 public List<SpecimenOrObservationBase<?>> getAllHierarchyDerivatives(SpecimenOrObservationBase<?> specimen) {
987 return defaultService.getAllHierarchyDerivatives(specimen);
988 }
989
990
991 /* (non-Javadoc)
992 * @see eu.etaxonomy.cdm.api.service.IService#delete(java.util.UUID)
993 */
994 @Override
995 public DeleteResult delete(UUID uuid) {
996 return defaultService.delete(uuid);
997 }
998
999 @Override
1000 public DeleteResult delete(Collection<UUID> arg0) {
1001 return defaultService.delete(arg0);
1002 }
1003
1004 @Override
1005 public DeleteResult deleteSingleRead(SingleRead singleRead, Sequence sequence){
1006 return defaultService.deleteSingleRead(singleRead, sequence);
1007 }
1008
1009 /* (non-Javadoc)
1010 * @see eu.etaxonomy.cdm.api.service.IService#merge(java.util.List)
1011 */
1012 @Override
1013 public List<SpecimenOrObservationBase> merge(List<SpecimenOrObservationBase> arg0) {
1014 return defaultService.merge(arg0);
1015 }
1016
1017 /* (non-Javadoc)
1018 * @see eu.etaxonomy.cdm.api.service.IOccurrenceService#deleteDerivateHierarchy(java.util.UUID, eu.etaxonomy.cdm.api.service.config.SpecimenDeleteConfigurator)
1019 */
1020 @Override
1021 public DeleteResult deleteDerivateHierarchy(UUID arg0, SpecimenDeleteConfigurator arg1) {
1022 return defaultService.deleteDerivateHierarchy(arg0, arg1);
1023 }
1024
1025 /* (non-Javadoc)
1026 * @see eu.etaxonomy.cdm.api.service.IOccurrenceService#deleteSingleRead(java.util.UUID, java.util.UUID)
1027 */
1028 @Override
1029 public DeleteResult deleteSingleRead(UUID arg0, UUID arg1) {
1030 return defaultService.deleteSingleRead(arg0, arg1);
1031 }
1032
1033 /* (non-Javadoc)
1034 * @see eu.etaxonomy.cdm.api.service.IOccurrenceService#moveDerivate(java.util.UUID, java.util.UUID, java.util.UUID)
1035 */
1036 @Override
1037 public UpdateResult moveDerivate(UUID arg0, UUID arg1, UUID arg2) {
1038 return defaultService.moveDerivate(arg0, arg1, arg2);
1039 }
1040
1041 /* (non-Javadoc)
1042 * @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)
1043 */
1044 @Override
1045 public boolean moveDerivate(SpecimenOrObservationBase<?> from, SpecimenOrObservationBase<?> to, DerivedUnit derivate) {
1046 return defaultService.moveDerivate(from, to, derivate);
1047 }
1048
1049 /* (non-Javadoc)
1050 * @see eu.etaxonomy.cdm.api.service.IOccurrenceService#moveSequence(java.util.UUID, java.util.UUID, java.util.UUID)
1051 */
1052 @Override
1053 public UpdateResult moveSequence(UUID arg0, UUID arg1, UUID arg2) {
1054 return defaultService.moveSequence(arg0, arg1, arg2);
1055 }
1056
1057 @Override
1058 public Pager<Media> getMediainHierarchy(SpecimenOrObservationBase arg0, Integer arg1, Integer arg2,
1059 List<String> arg3) {
1060 return defaultService.getMediainHierarchy(arg0, arg1, arg2, arg3);
1061 }
1062
1063 /* (non-Javadoc)
1064 * @see eu.etaxonomy.cdm.api.service.IService#merge(java.util.List, boolean)
1065 */
1066 @Override
1067 public List<MergeResult<SpecimenOrObservationBase>> merge(List<SpecimenOrObservationBase> arg0, boolean arg1) {
1068 return defaultService.merge(arg0, arg1);
1069 }
1070
1071 /* (non-Javadoc)
1072 * @see eu.etaxonomy.cdm.api.service.IService#merge(eu.etaxonomy.cdm.model.common.ICdmBase, boolean)
1073 */
1074 @Override
1075 public MergeResult<SpecimenOrObservationBase> merge(SpecimenOrObservationBase arg0, boolean arg1) {
1076 return defaultService.merge(arg0, arg1);
1077 }
1078
1079 /**
1080 * {@inheritDoc}
1081 */
1082 @Override
1083 public Collection<TaxonBase<?>> listAssociatedTaxa(SpecimenOrObservationBase<?> arg0, Integer arg1, Integer arg2,
1084 List<OrderHint> arg3, List<String> arg4) {
1085 return defaultService.listAssociatedTaxa(arg0, arg1, arg2, arg3, arg4);
1086 }
1087
1088 }