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