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