40481a91ff1074376ca8e94d60a81c4463360641
[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.DefinedTerm;
45 import eu.etaxonomy.cdm.model.common.ICdmBase;
46 import eu.etaxonomy.cdm.model.common.ISourceable;
47 import eu.etaxonomy.cdm.model.common.IdentifiableSource;
48 import eu.etaxonomy.cdm.model.common.LSID;
49 import eu.etaxonomy.cdm.model.common.Language;
50 import eu.etaxonomy.cdm.model.common.Marker;
51 import eu.etaxonomy.cdm.model.common.MarkerType;
52 import eu.etaxonomy.cdm.model.description.DescriptionBase;
53 import eu.etaxonomy.cdm.model.description.DescriptionElementBase;
54 import eu.etaxonomy.cdm.model.description.IndividualsAssociation;
55 import eu.etaxonomy.cdm.model.location.Country;
56 import eu.etaxonomy.cdm.model.media.Media;
57 import eu.etaxonomy.cdm.model.media.Rights;
58 import eu.etaxonomy.cdm.model.molecular.DnaSample;
59 import eu.etaxonomy.cdm.model.molecular.Sequence;
60 import eu.etaxonomy.cdm.model.name.SpecimenTypeDesignation;
61 import eu.etaxonomy.cdm.model.name.TaxonNameBase;
62 import eu.etaxonomy.cdm.model.occurrence.DerivationEvent;
63 import eu.etaxonomy.cdm.model.occurrence.DerivedUnit;
64 import eu.etaxonomy.cdm.model.occurrence.DeterminationEvent;
65 import eu.etaxonomy.cdm.model.occurrence.FieldUnit;
66 import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationBase;
67 import eu.etaxonomy.cdm.model.taxon.Taxon;
68 import eu.etaxonomy.cdm.model.taxon.TaxonBase;
69 import eu.etaxonomy.cdm.model.view.AuditEvent;
70 import eu.etaxonomy.cdm.model.view.AuditEventRecord;
71 import eu.etaxonomy.cdm.persistence.dao.common.AuditEventSort;
72 import eu.etaxonomy.cdm.persistence.dto.MergeResult;
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 UpdateResult 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 delete(SpecimenOrObservationBase<?> specimen, SpecimenDeleteConfigurator config) {
921 return defaultService.delete(specimen, config);
922 }
923
924 @Override
925 public Collection<IndividualsAssociation> listIndividualsAssociations(SpecimenOrObservationBase<?> specimen,
926 Integer limit, Integer start, List<OrderHint> orderHints, List<String> propertyPaths) {
927 return defaultService.listIndividualsAssociations(specimen, limit, start, orderHints, propertyPaths);
928 }
929
930 @Override
931 public Collection<SpecimenTypeDesignation> listTypeDesignations(SpecimenOrObservationBase<?> specimen,
932 Integer limit, Integer start, List<OrderHint> orderHints, List<String> propertyPaths) {
933 return defaultService.listTypeDesignations(specimen, limit, start, orderHints, propertyPaths);
934 }
935
936 @Override
937 public Collection<DescriptionBase<?>> listDescriptionsWithDescriptionSpecimen(
938 SpecimenOrObservationBase<?> specimen, Integer limit, Integer start, List<OrderHint> orderHints,
939 List<String> propertyPaths) {
940 return defaultService.listDescriptionsWithDescriptionSpecimen(specimen, limit, start, orderHints, propertyPaths);
941 }
942
943 @Override
944 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){
945 return defaultService.findByIdentifier(clazz, identifier, identifierType, matchmode, includeEntity, pageSize, pageNumber, propertyPaths);
946 }
947
948 @Override
949 public Collection<DescriptionElementBase> getCharacterDataForSpecimen(SpecimenOrObservationBase<?> arg0) {
950 return defaultService.getCharacterDataForSpecimen(arg0);
951 }
952
953 @Override
954 public Collection<DescriptionElementBase> getCharacterDataForSpecimen(UUID arg0) {
955 return getCharacterDataForSpecimen(arg0);
956 }
957
958 @Override
959 public String getMostSignificantIdentifier(DerivedUnit derivedUnit) {
960 return defaultService.getMostSignificantIdentifier(derivedUnit);
961 }
962
963 @Override
964 public int countOccurrences(IIdentifiableEntityServiceConfigurator<SpecimenOrObservationBase> config) {
965 return defaultService.countOccurrences(config);
966 }
967
968 /**
969 * {@inheritDoc}
970 */
971 @Override
972 public List<DerivedUnit> getAllChildDerivatives(SpecimenOrObservationBase<?> specimen) {
973 return defaultService.getAllChildDerivatives(specimen);
974 }
975
976 /**
977 * {@inheritDoc}
978 */
979 @Override
980 public List<SpecimenOrObservationBase<?>> getAllHierarchyDerivatives(SpecimenOrObservationBase<?> specimen) {
981 return defaultService.getAllHierarchyDerivatives(specimen);
982 }
983
984
985 @Override
986 public DeleteResult delete(UUID uuid) {
987 return defaultService.delete(uuid);
988 }
989
990 @Override
991 public DeleteResult delete(Collection<UUID> arg0) {
992 return defaultService.delete(arg0);
993 }
994
995
996 @Override
997 public List<SpecimenOrObservationBase> merge(List<SpecimenOrObservationBase> arg0) {
998 return defaultService.merge(arg0);
999 }
1000
1001 @Override
1002 public UpdateResult moveDerivate(UUID arg0, UUID arg1, UUID arg2) {
1003 return defaultService.moveDerivate(arg0, arg1, arg2);
1004 }
1005
1006 @Override
1007 public boolean moveDerivate(SpecimenOrObservationBase<?> from, SpecimenOrObservationBase<?> to, DerivedUnit derivate) {
1008 return defaultService.moveDerivate(from, to, derivate);
1009 }
1010
1011 @Override
1012 public UpdateResult moveSequence(UUID arg0, UUID arg1, UUID arg2) {
1013 return defaultService.moveSequence(arg0, arg1, arg2);
1014 }
1015
1016 @Override
1017 public Pager<Media> getMediainHierarchy(SpecimenOrObservationBase arg0, Integer arg1, Integer arg2,
1018 List<String> arg3) {
1019 return defaultService.getMediainHierarchy(arg0, arg1, arg2, arg3);
1020 }
1021
1022 @Override
1023 public List<MergeResult<SpecimenOrObservationBase>> merge(List<SpecimenOrObservationBase> arg0, boolean arg1) {
1024 return defaultService.merge(arg0, arg1);
1025 }
1026
1027 @Override
1028 public MergeResult<SpecimenOrObservationBase> merge(SpecimenOrObservationBase arg0, boolean arg1) {
1029 return defaultService.merge(arg0, arg1);
1030 }
1031
1032 /**
1033 * {@inheritDoc}
1034 */
1035 @Override
1036 public Collection<TaxonBase<?>> listAssociatedTaxa(SpecimenOrObservationBase<?> arg0, Integer arg1, Integer arg2,
1037 List<OrderHint> arg3, List<String> arg4) {
1038 return defaultService.listAssociatedTaxa(arg0, arg1, arg2, arg3, arg4);
1039 }
1040
1041 @Override
1042 public SpecimenOrObservationBase loadWithUpdate(UUID arg0) {
1043 return defaultService.loadWithUpdate(arg0);
1044 }
1045
1046 /**
1047 * {@inheritDoc}
1048 */
1049 @Override
1050 public DeleteResult delete(UUID arg0, SpecimenDeleteConfigurator arg1) {
1051 return defaultService.delete(arg0, arg1);
1052 }
1053
1054 /**
1055 * {@inheritDoc}
1056 */
1057 @Override
1058 public Pager<SpecimenOrObservationBase> list(Class<? extends SpecimenOrObservationBase> arg0, TaxonNameBase arg1,
1059 Integer arg2, Integer arg3, List<OrderHint> arg4, List<String> arg5) {
1060 return defaultService.list(arg0, arg1, arg2, arg3, arg4, arg5);
1061 }
1062
1063 /**
1064 * {@inheritDoc}
1065 */
1066 @Override
1067 public Collection<DeterminationEvent> listDeterminationEvents(SpecimenOrObservationBase<?> arg0, Integer arg1,
1068 Integer arg2, List<OrderHint> arg3, List<String> arg4) {
1069 return defaultService.listDeterminationEvents(arg0, arg1, arg2, arg3, arg4);
1070 }
1071
1072 @Override
1073 public Collection<TaxonBase<?>> listDeterminedTaxa(SpecimenOrObservationBase<?> arg0, Integer arg1, Integer arg2,
1074 List<OrderHint> arg3, List<String> arg4) {
1075 return defaultService.listDeterminedTaxa(arg0, arg1, arg2, arg3, arg4);
1076 }
1077
1078 @Override
1079 public Collection<TaxonBase<?>> listIndividualsAssociationTaxa(SpecimenOrObservationBase<?> arg0, Integer arg1,
1080 Integer arg2, List<OrderHint> arg3, List<String> arg4) {
1081 return defaultService.listIndividualsAssociationTaxa(arg0, arg1, arg2, arg3, arg4);
1082 }
1083
1084 @Override
1085 public Collection<TaxonBase<?>> listTypeDesignationTaxa(SpecimenOrObservationBase<?> arg0, Integer arg1,
1086 Integer arg2, List<OrderHint> arg3, List<String> arg4) {
1087 return defaultService.listTypeDesignationTaxa(arg0, arg1, arg2, arg3, arg4);
1088 }
1089
1090 /**
1091 * {@inheritDoc}
1092 */
1093 @Override
1094 public List<SpecimenOrObservationBase> load(List<UUID> arg0, List<String> arg1) {
1095 return defaultService.load(arg0, arg1);
1096 }
1097
1098 }