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