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
.Enumeration
;
16 import java
.util
.List
;
17 import java
.util
.Locale
;
20 import java
.util
.UUID
;
22 import org
.apache
.log4j
.Logger
;
23 import org
.springframework
.beans
.factory
.annotation
.Autowired
;
24 import org
.springframework
.beans
.factory
.annotation
.Qualifier
;
25 import org
.springframework
.stereotype
.Service
;
26 import org
.springframework
.transaction
.annotation
.Transactional
;
28 import eu
.etaxonomy
.cdm
.api
.service
.pager
.Pager
;
29 import eu
.etaxonomy
.cdm
.api
.service
.pager
.impl
.DefaultPagerImpl
;
30 import eu
.etaxonomy
.cdm
.model
.common
.DefinedTermBase
;
31 import eu
.etaxonomy
.cdm
.model
.common
.Language
;
32 import eu
.etaxonomy
.cdm
.model
.common
.LanguageString
;
33 import eu
.etaxonomy
.cdm
.model
.common
.LanguageStringBase
;
34 import eu
.etaxonomy
.cdm
.model
.common
.OrderedTermVocabulary
;
35 import eu
.etaxonomy
.cdm
.model
.common
.Representation
;
36 import eu
.etaxonomy
.cdm
.model
.common
.TermVocabulary
;
37 import eu
.etaxonomy
.cdm
.model
.location
.NamedArea
;
38 import eu
.etaxonomy
.cdm
.model
.location
.NamedAreaLevel
;
39 import eu
.etaxonomy
.cdm
.model
.location
.NamedAreaType
;
40 import eu
.etaxonomy
.cdm
.model
.location
.TdwgArea
;
41 import eu
.etaxonomy
.cdm
.model
.media
.Media
;
42 import eu
.etaxonomy
.cdm
.persistence
.dao
.common
.IDefinedTermDao
;
43 import eu
.etaxonomy
.cdm
.persistence
.dao
.common
.ILanguageStringBaseDao
;
44 import eu
.etaxonomy
.cdm
.persistence
.dao
.common
.ILanguageStringDao
;
45 import eu
.etaxonomy
.cdm
.persistence
.dao
.common
.IRepresentationDao
;
46 import eu
.etaxonomy
.cdm
.persistence
.dao
.common
.ITermVocabularyDao
;
49 @Transactional(readOnly
= true)
50 public class TermServiceImpl
extends ServiceBase
<DefinedTermBase
,IDefinedTermDao
> implements ITermService
{
51 private static final Logger logger
= Logger
.getLogger(TermServiceImpl
.class);
53 protected ITermVocabularyDao vocabularyDao
;
55 @Qualifier("langStrBaseDao")
56 private ILanguageStringBaseDao languageStringBaseDao
;
58 private IRepresentationDao representationDao
;
60 private ILanguageStringDao languageStringDao
;
63 protected void setVocabularyDao(ITermVocabularyDao vocabularyDao
) {
64 this.vocabularyDao
= vocabularyDao
;
68 * @see eu.etaxonomy.cdm.api.service.ITermService#getTermByUri(java.lang.String)
70 public DefinedTermBase
getTermByUri(String uri
) {
71 //FIXME transformation from URI to UUID
72 return dao
.findByUri(uri
);
75 /* FIXME candidate for harmonization(non-Javadoc)
76 * @see eu.etaxonomy.cdm.api.service.ITermService#getTermByUuid(java.util.UUID)
78 public DefinedTermBase
getTermByUuid(UUID uuid
) {
79 return dao
.findByUuid(uuid
);
82 public List
<DefinedTermBase
> getAllDefinedTerms(int limit
, int start
){
83 return dao
.list(limit
, start
);
86 @Transactional(readOnly
= false)
87 public UUID
saveTerm(DefinedTermBase termBase
) {
88 return super.saveCdmObject(termBase
);
91 @Transactional(readOnly
= false)
92 public Map
<UUID
, DefinedTermBase
> saveTermsAll(Collection
<?
extends DefinedTermBase
> termBaseCollection
){
93 return saveCdmObjectAll(termBaseCollection
);
97 * @see eu.etaxonomy.cdm.api.service.ITermService#getVocabulary(java.util.UUID)
99 public TermVocabulary
getVocabulary(UUID vocabularyUuid
) {
100 TermVocabulary vocabulary
= (OrderedTermVocabulary
)vocabularyDao
.findByUuid(vocabularyUuid
);
105 * @see eu.etaxonomy.cdm.api.service.ITermService#listVocabularies(java.lang.Class)
107 public Set
<TermVocabulary
> listVocabularies(Class termClass
) {
108 logger
.error("Method not implemented yet");
112 public List
<TermVocabulary
<DefinedTermBase
>> getAllTermVocabularies(int limit
, int start
) {
113 return vocabularyDao
.list(limit
, start
);
117 * @see eu.etaxonomy.cdm.api.service.ITermService#getLanguageVocabulary()
119 public TermVocabulary
<Language
> getLanguageVocabulary() {
120 String uuidString
= "45ac7043-7f5e-4f37-92f2-3874aaaef2de";
121 UUID uuid
= UUID
.fromString(uuidString
);
122 TermVocabulary
<Language
> languageVocabulary
=
123 (TermVocabulary
)vocabularyDao
.findByUuid(uuid
);
124 return languageVocabulary
;
127 public Map
<UUID
, TermVocabulary
<DefinedTermBase
>>
128 saveTermVocabulariesAll(Collection
<TermVocabulary
<DefinedTermBase
>> termVocabularies
) {
129 return vocabularyDao
.saveAll(termVocabularies
);
132 public UUID
saveTermVocabulary(TermVocabulary termVocabulary
) {
133 return vocabularyDao
.save(termVocabulary
);
136 // @Transactional(readOnly = false)
137 // public Map<UUID, Representation> saveRepresentationsAll(Collection<Representation> representations){
138 // return representationDao.saveAll(representations);
141 @Transactional(readOnly
= false)
142 public Map
<UUID
, LanguageStringBase
> saveLanguageDataAll(Collection
<LanguageStringBase
> languageData
) {
143 return languageStringBaseDao
.saveAll(languageData
);
146 @Transactional(readOnly
= false)
147 public Map
<UUID
, Representation
> saveRepresentationAll(Collection
<Representation
> representations
) {
148 return representationDao
.saveAll(representations
);
151 public List
<Representation
> getAllRepresentations(int limit
, int start
){
152 return representationDao
.list(limit
, start
);
155 public List
<LanguageString
> getAllLanguageStrings(int limit
, int start
) {
156 return languageStringDao
.list(limit
, start
);
159 public Map
<UUID
, LanguageStringBase
>
160 saveLanguageStringBasesAll(Collection
<LanguageStringBase
> languageStringBases
) {
161 return languageStringBaseDao
.saveAll(languageStringBases
);
164 public Language
getLanguageByIso(String iso639
) {
165 return dao
.getLanguageByIso(iso639
);
168 public List
<Language
> getLanguagesByLocale(Enumeration
<Locale
> locales
){
169 return dao
.getLanguagesByLocale(locales
);
172 @Transactional(readOnly
= false)
173 public UUID
saveLanguageData(
174 LanguageStringBase languageData
) {
175 return languageStringBaseDao
.save(languageData
);
179 protected void setDao(IDefinedTermDao dao
) {
184 * @see eu.etaxonomy.cdm.api.service.ITermService#getAreaByTdwgAbbreviation(java.lang.String)
186 public NamedArea
getAreaByTdwgAbbreviation(String tdwgAbbreviation
) {
187 //FIXME this is just a placeholder until it is decided where to implement this method
188 //(see also FIXMEs in TdwgArea)
189 return TdwgArea
.getAreaByTdwgAbbreviation(tdwgAbbreviation
);
192 public <T
extends DefinedTermBase
> Pager
<T
> getGeneralizationOf(T definedTerm
, Integer pageSize
, Integer pageNumber
) {
193 Integer numberOfResults
= dao
.countGeneralizationOf(definedTerm
);
195 List
<T
> results
= new ArrayList
<T
>();
196 if(numberOfResults
> 0) { // no point checking again
197 results
= dao
.getGeneralizationOf(definedTerm
, pageSize
, pageNumber
);
200 return new DefaultPagerImpl
<T
>(pageNumber
, numberOfResults
, pageSize
, results
);
203 public <T
extends DefinedTermBase
> Pager
<T
> getIncludes(Set
<T
> definedTerms
, Integer pageSize
, Integer pageNumber
) {
204 Integer numberOfResults
= dao
.countIncludes(definedTerms
);
206 List
<T
> results
= new ArrayList
<T
>();
207 if(numberOfResults
> 0) { // no point checking again
208 results
= dao
.getIncludes(definedTerms
, pageSize
, pageNumber
);
211 return new DefaultPagerImpl
<T
>(pageNumber
, numberOfResults
, pageSize
, results
);
214 public Pager
<Media
> getMedia(DefinedTermBase definedTerm
, Integer pageSize
, Integer pageNumber
) {
215 Integer numberOfResults
= dao
.countMedia(definedTerm
);
217 List
<Media
> results
= new ArrayList
<Media
>();
218 if(numberOfResults
> 0) { // no point checking again
219 results
= dao
.getMedia(definedTerm
, pageSize
, pageNumber
);
222 return new DefaultPagerImpl
<Media
>(pageNumber
, numberOfResults
, pageSize
, results
);
225 public <T
extends DefinedTermBase
> Pager
<T
> getPartOf(Set
<T
> definedTerms
,Integer pageSize
, Integer pageNumber
) {
226 Integer numberOfResults
= dao
.countPartOf(definedTerms
);
228 List
<T
> results
= new ArrayList
<T
>();
229 if(numberOfResults
> 0) { // no point checking again
230 results
= dao
.getPartOf(definedTerms
, pageSize
, pageNumber
);
233 return new DefaultPagerImpl
<T
>(pageNumber
, numberOfResults
, pageSize
, results
);
236 public Pager
<NamedArea
> list(NamedAreaLevel level
, NamedAreaType type
, Integer pageSize
, Integer pageNumber
) {
237 Integer numberOfResults
= dao
.count(level
, type
);
239 List
<NamedArea
> results
= new ArrayList
<NamedArea
>();
240 if(numberOfResults
> 0) { // no point checking again
241 results
= dao
.list(level
, type
, pageSize
, pageNumber
);
244 return new DefaultPagerImpl
<NamedArea
>(pageNumber
, numberOfResults
, pageSize
, results
);