3 * Copyright (C) 2007 EDIT
4 * European Distributed Institute of Taxonomy
5 * http://www.e-taxonomy.eu
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.
11 package eu
.etaxonomy
.cdm
.api
.service
;
13 import java
.util
.ArrayList
;
14 import java
.util
.Collection
;
15 import java
.util
.List
;
17 import java
.util
.UUID
;
19 import org
.apache
.log4j
.Logger
;
20 import org
.springframework
.beans
.factory
.annotation
.Autowired
;
21 import org
.springframework
.stereotype
.Service
;
22 import org
.springframework
.transaction
.annotation
.Transactional
;
24 import eu
.etaxonomy
.cdm
.api
.service
.pager
.Pager
;
25 import eu
.etaxonomy
.cdm
.api
.service
.pager
.impl
.DefaultPagerImpl
;
26 import eu
.etaxonomy
.cdm
.model
.common
.Annotation
;
27 import eu
.etaxonomy
.cdm
.model
.common
.DefinedTermBase
;
28 import eu
.etaxonomy
.cdm
.model
.location
.WaterbodyOrCountry
;
29 import eu
.etaxonomy
.cdm
.model
.media
.Media
;
30 import eu
.etaxonomy
.cdm
.model
.occurrence
.DerivationEvent
;
31 import eu
.etaxonomy
.cdm
.model
.occurrence
.DeterminationEvent
;
32 import eu
.etaxonomy
.cdm
.model
.occurrence
.SpecimenOrObservationBase
;
33 import eu
.etaxonomy
.cdm
.persistence
.dao
.common
.IDefinedTermDao
;
34 import eu
.etaxonomy
.cdm
.persistence
.dao
.occurrence
.ICollectionDao
;
35 import eu
.etaxonomy
.cdm
.persistence
.dao
.occurrence
.IOccurrenceDao
;
38 * @author a.babadshanjan
42 @Transactional(readOnly
= true)
43 public class OccurrenceServiceImpl
extends IdentifiableServiceBase
<SpecimenOrObservationBase
,IOccurrenceDao
> implements IOccurrenceService
{
45 static private final Logger logger
= Logger
.getLogger(OccurrenceServiceImpl
.class);
48 private IDefinedTermDao definedTermDao
;
51 private IOccurrenceDao occurenceDao
;
54 private ICollectionDao collectionDao
;
57 public OccurrenceServiceImpl() {
58 logger
.debug("Load OccurrenceService Bean");
62 * @see eu.etaxonomy.cdm.api.service.IOccurrenceService#getAllspecimenOrObservationBases(int, int)
64 public List
<SpecimenOrObservationBase
> getAllSpecimenOrObservationBases(
65 int limit
, int start
) {
66 return dao
.list(limit
, start
);
70 * @see eu.etaxonomy.cdm.api.service.IOccurrenceService#saveSpecimenOrObservationBaseAll(java.util.Collection)
72 @Transactional(readOnly
= false)
73 public Map
<UUID
, ?
extends SpecimenOrObservationBase
> saveSpecimenOrObservationBaseAll(
74 Collection
<?
extends SpecimenOrObservationBase
> specimenOrObservationBaseCollection
) {
75 return saveCdmObjectAll(specimenOrObservationBaseCollection
);
79 @Transactional(readOnly
= false)
80 public UUID
saveSpecimenOrObservationBase(
81 SpecimenOrObservationBase specimenOrObservationBase
) {
82 return super.saveCdmObject(specimenOrObservationBase
);
86 * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#generateTitleCache()
88 public void generateTitleCache() {
89 // TODO Auto-generated method stub
90 logger
.warn("Not yet implemented");
93 public WaterbodyOrCountry
getCountryByIso(String iso639
) {
94 return this.definedTermDao
.getCountryByIso(iso639
);
98 public List
<WaterbodyOrCountry
> getWaterbodyOrCountryByName(String name
) {
99 List
<?
extends DefinedTermBase
> terms
= this.definedTermDao
.getDefinedTermByRepresentationText(name
, WaterbodyOrCountry
.class);
100 List
<WaterbodyOrCountry
> countries
= new ArrayList
<WaterbodyOrCountry
>();
101 for (int i
=0;i
<terms
.size();i
++){
102 countries
.add((WaterbodyOrCountry
)terms
.get(i
));
107 public List
<eu
.etaxonomy
.cdm
.model
.occurrence
.Collection
> searchCollectionByCode(String code
) {
108 return this.collectionDao
.getCollectionByCode(code
);
112 protected void setDao(IOccurrenceDao dao
) {
116 public Pager
<DerivationEvent
> getDerivationEvents(SpecimenOrObservationBase occurence
, Integer pageSize
,Integer pageNumber
) {
117 Integer numberOfResults
= dao
.countDerivationEvents(occurence
);
119 List
<DerivationEvent
> results
= new ArrayList
<DerivationEvent
>();
120 if(numberOfResults
> 0) { // no point checking again
121 results
= dao
.getDerivationEvents(occurence
, pageSize
, pageNumber
);
124 return new DefaultPagerImpl
<DerivationEvent
>(pageNumber
, numberOfResults
, pageSize
, results
);
127 public Pager
<DeterminationEvent
> getDeterminations(SpecimenOrObservationBase occurence
, Integer pageSize
,Integer pageNumber
) {
128 Integer numberOfResults
= dao
.countDeterminations(occurence
);
130 List
<DeterminationEvent
> results
= new ArrayList
<DeterminationEvent
>();
131 if(numberOfResults
> 0) { // no point checking again
132 results
= dao
.getDeterminations(occurence
, pageSize
, pageNumber
);
135 return new DefaultPagerImpl
<DeterminationEvent
>(pageNumber
, numberOfResults
, pageSize
, results
);
138 public Pager
<Media
> getMedia(SpecimenOrObservationBase occurence
,Integer pageSize
, Integer pageNumber
) {
139 Integer numberOfResults
= dao
.countMedia(occurence
);
141 List
<Media
> results
= new ArrayList
<Media
>();
142 if(numberOfResults
> 0) { // no point checking again
143 results
= dao
.getMedia(occurence
, pageSize
, pageNumber
);
146 return new DefaultPagerImpl
<Media
>(pageNumber
, numberOfResults
, pageSize
, results
);
149 public UUID
saveCollection(eu
.etaxonomy
.cdm
.model
.occurrence
.Collection collection
) {
150 return collectionDao
.save(collection
);