fix delete polytomouskeynode and improve merge in bulk editor
[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.FieldUnitDTO;
36 import eu.etaxonomy.cdm.api.service.dto.FindByIdentifierDTO;
37 import eu.etaxonomy.cdm.api.service.dto.PreservedSpecimenDTO;
38 import eu.etaxonomy.cdm.api.service.pager.Pager;
39 import eu.etaxonomy.cdm.api.service.search.SearchResult;
40 import eu.etaxonomy.cdm.api.service.util.TaxonRelationshipEdge;
41 import eu.etaxonomy.cdm.common.monitor.IProgressMonitor;
42 import eu.etaxonomy.cdm.model.common.Annotation;
43 import eu.etaxonomy.cdm.model.common.CdmBase;
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.molecular.SingleRead;
61 import eu.etaxonomy.cdm.model.name.SpecimenTypeDesignation;
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.UuidAndTitleCache;
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 SpecimenOrObservationBase 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 @Override
841 public int deduplicate(Class<? extends SpecimenOrObservationBase> clazz, IMatchStrategy matchStrategy, IMergeStrategy mergeStrategy) {
842 return defaultService.deduplicate(clazz, matchStrategy, mergeStrategy);
843 }
844
845 @Override
846 public Pager<SpecimenOrObservationBase> findTitleCache(Class<? extends SpecimenOrObservationBase> clazz, String queryString, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, MatchMode matchMode) {
847 return defaultService.findTitleCache(clazz, queryString, pageSize, pageNumber, orderHints, matchMode);
848 }
849
850 public Collection<SpecimenOrObservationBase<?>> getUnits() {
851 return units;
852 }
853
854 @Override
855 public Collection<FieldUnit> getFieldUnits(UUID derivedUnitUuid) {
856 return defaultService.getFieldUnits(derivedUnitUuid);
857 }
858
859 @Override
860 public <T extends SpecimenOrObservationBase> Pager<T> pageByAssociatedTaxon(Class<T> type,
861 Set<TaxonRelationshipEdge> includeRelationships, String taxonUUID, Integer maxDepth, Integer pageSize,
862 Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
863 return defaultService.pageByAssociatedTaxon(type, includeRelationships, taxonUUID,
864 maxDepth, pageSize, pageNumber, orderHints, propertyPaths);
865 }
866
867 @Override
868 public boolean moveDerivate(SpecimenOrObservationBase<?> from, SpecimenOrObservationBase<?> to, DerivedUnit derivate) {
869 return defaultService.moveDerivate(from, to, derivate);
870 }
871
872 @Override
873 public boolean moveSequence(DnaSample from, DnaSample to, Sequence sequence) {
874 return defaultService.moveSequence(from, to, sequence);
875 }
876
877 @Override
878 public DeleteResult isDeletable(SpecimenOrObservationBase object,
879 DeleteConfiguratorBase config) {
880 return defaultService.isDeletable(object, config);
881 }
882
883 @Override
884 public int countDeterminations(SpecimenOrObservationBase occurence, TaxonBase taxonbase) {
885 return defaultService.countDeterminations(occurence, taxonbase);
886 }
887
888 @Override
889 public SpecimenOrObservationBase findWithoutFlush(UUID uuid) {
890 return defaultService.findWithoutFlush(uuid);
891 }
892
893 @Override
894 public Collection<SpecimenOrObservationBase> listFieldUnitsByAssociatedTaxon(Taxon associatedTaxon,
895 List<OrderHint> orderHints, List<String> propertyPaths) {
896 return defaultService.listFieldUnitsByAssociatedTaxon(associatedTaxon, orderHints, propertyPaths);
897 }
898
899 @Override
900 public Pager<SpecimenOrObservationBase> pageFieldUnitsByAssociatedTaxon(
901 Set<TaxonRelationshipEdge> includeRelationships, Taxon associatedTaxon, Integer maxDepth, Integer pageSize,
902 Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
903 return defaultService.pageFieldUnitsByAssociatedTaxon(includeRelationships, associatedTaxon, maxDepth, pageSize, pageNumber, orderHints, propertyPaths);
904 }
905
906
907 @Override
908 public FieldUnitDTO assembleFieldUnitDTO(FieldUnit fieldUnit, UUID associatedTaxonUuid) {
909 return defaultService.assembleFieldUnitDTO(fieldUnit, associatedTaxonUuid);
910 }
911
912 @Override
913 public PreservedSpecimenDTO assemblePreservedSpecimenDTO(DerivedUnit derivedUnit) {
914 return defaultService.assemblePreservedSpecimenDTO(derivedUnit);
915 }
916
917 @Override
918 public Collection<ICdmBase> getNonCascadedAssociatedElements(SpecimenOrObservationBase<?> specimen) {
919 return defaultService.getNonCascadedAssociatedElements(specimen);
920 }
921
922 @Override
923 public DeleteResult deleteDerivateHierarchy(CdmBase from, SpecimenDeleteConfigurator config) {
924 return defaultService.deleteDerivateHierarchy(from, config);
925 }
926
927 @Override
928 public DeleteResult delete(SpecimenOrObservationBase<?> specimen, SpecimenDeleteConfigurator config) {
929 return defaultService.delete(specimen, config);
930 }
931
932 @Override
933 public Collection<IndividualsAssociation> listIndividualsAssociations(SpecimenOrObservationBase<?> specimen,
934 Integer limit, Integer start, List<OrderHint> orderHints, List<String> propertyPaths) {
935 return defaultService.listIndividualsAssociations(specimen, limit, start, orderHints, propertyPaths);
936 }
937
938 @Override
939 public Collection<SpecimenTypeDesignation> listTypeDesignations(SpecimenOrObservationBase<?> specimen,
940 Integer limit, Integer start, List<OrderHint> orderHints, List<String> propertyPaths) {
941 return defaultService.listTypeDesignations(specimen, limit, start, orderHints, propertyPaths);
942 }
943
944 @Override
945 public Collection<DescriptionBase<?>> listDescriptionsWithDescriptionSpecimen(
946 SpecimenOrObservationBase<?> specimen, Integer limit, Integer start, List<OrderHint> orderHints,
947 List<String> propertyPaths) {
948 return defaultService.listDescriptionsWithDescriptionSpecimen(specimen, limit, start, orderHints, propertyPaths);
949 }
950
951 @Override
952 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){
953 return defaultService.findByIdentifier(clazz, identifier, identifierType, matchmode, includeEntity, pageSize, pageNumber, propertyPaths);
954 }
955
956 @Override
957 public Collection<DescriptionElementBase> getCharacterDataForSpecimen(SpecimenOrObservationBase<?> arg0) {
958 return defaultService.getCharacterDataForSpecimen(arg0);
959 }
960
961 @Override
962 public Collection<DescriptionElementBase> getCharacterDataForSpecimen(UUID arg0) {
963 return getCharacterDataForSpecimen(arg0);
964 }
965
966 @Override
967 public String getMostSignificantIdentifier(DerivedUnit derivedUnit) {
968 return defaultService.getMostSignificantIdentifier(derivedUnit);
969 }
970
971 @Override
972 public int countOccurrences(IIdentifiableEntityServiceConfigurator<SpecimenOrObservationBase> config) {
973 return defaultService.countOccurrences(config);
974 }
975
976 /**
977 * {@inheritDoc}
978 */
979 @Override
980 public List<DerivedUnit> getAllChildDerivatives(SpecimenOrObservationBase<?> specimen) {
981 return defaultService.getAllChildDerivatives(specimen);
982 }
983
984 /**
985 * {@inheritDoc}
986 */
987 @Override
988 public List<SpecimenOrObservationBase<?>> getAllHierarchyDerivatives(SpecimenOrObservationBase<?> specimen) {
989 return defaultService.getAllHierarchyDerivatives(specimen);
990 }
991
992
993 /* (non-Javadoc)
994 * @see eu.etaxonomy.cdm.api.service.IService#delete(java.util.UUID)
995 */
996 @Override
997 public DeleteResult delete(UUID uuid) {
998 return defaultService.delete(uuid);
999 }
1000
1001 @Override
1002 public DeleteResult delete(Collection<UUID> arg0) {
1003 return defaultService.delete(arg0);
1004 }
1005
1006 @Override
1007 public DeleteResult deleteSingleRead(SingleRead singleRead, Sequence sequence){
1008 return defaultService.deleteSingleRead(singleRead, sequence);
1009 }
1010
1011 /* (non-Javadoc)
1012 * @see eu.etaxonomy.cdm.api.service.IService#merge(java.util.List)
1013 */
1014 @Override
1015 public List<SpecimenOrObservationBase> merge(List<SpecimenOrObservationBase> arg0) {
1016 return defaultService.merge(arg0);
1017 }
1018
1019
1020 }