2 * Copyright (C) 2009 EDIT
3 * European Distributed Institute of Taxonomy
4 * http://www.e-taxonomy.eu
6 * The contents of this file are subject to the Mozilla Public License Version 1.1
7 * See LICENSE.TXT at the top of this package for the full license terms.
10 package eu
.etaxonomy
.cdm
.api
.service
;
12 import java
.util
.ArrayList
;
13 import java
.util
.List
;
14 import java
.util
.UUID
;
16 import org
.springframework
.beans
.factory
.annotation
.Autowired
;
17 import org
.springframework
.stereotype
.Service
;
18 import org
.springframework
.transaction
.annotation
.Propagation
;
19 import org
.springframework
.transaction
.annotation
.Transactional
;
21 import eu
.etaxonomy
.cdm
.api
.service
.pager
.Pager
;
22 import eu
.etaxonomy
.cdm
.api
.service
.pager
.impl
.DefaultPagerImpl
;
23 import eu
.etaxonomy
.cdm
.common
.monitor
.IProgressMonitor
;
24 import eu
.etaxonomy
.cdm
.model
.common
.DefinedTermBase
;
25 import eu
.etaxonomy
.cdm
.model
.common
.Language
;
26 import eu
.etaxonomy
.cdm
.model
.common
.TermType
;
27 import eu
.etaxonomy
.cdm
.model
.common
.TermVocabulary
;
28 import eu
.etaxonomy
.cdm
.model
.common
.VocabularyEnum
;
29 import eu
.etaxonomy
.cdm
.persistence
.dao
.common
.ITermVocabularyDao
;
30 import eu
.etaxonomy
.cdm
.persistence
.query
.OrderHint
;
31 import eu
.etaxonomy
.cdm
.strategy
.cache
.common
.IIdentifiableEntityCacheStrategy
;
34 @Transactional(readOnly
= true)
35 public class VocabularyServiceImpl
extends IdentifiableServiceBase
<TermVocabulary
,ITermVocabularyDao
> implements IVocabularyService
{
38 protected void setDao(ITermVocabularyDao dao
) {
44 @Transactional(readOnly
= false)
45 public void updateTitleCache(Class
<?
extends TermVocabulary
> clazz
, Integer stepSize
, IIdentifiableEntityCacheStrategy
<TermVocabulary
> cacheStrategy
, IProgressMonitor monitor
) {
47 clazz
= TermVocabulary
.class;
49 super.updateTitleCacheImpl(clazz
, stepSize
, cacheStrategy
, monitor
);
53 public <TERM
extends DefinedTermBase
> List
<TermVocabulary
<TERM
>> listByTermClass(Class
<TERM
> clazz
, Integer limit
, Integer start
, List
<OrderHint
> orderHints
, List
<String
> propertyPaths
) {
54 boolean includeSubclasses
= false;
55 boolean includeEmptyVocs
= false;
56 return (List
)listByTermClass(clazz
, includeSubclasses
, includeEmptyVocs
, limit
, start
, orderHints
, propertyPaths
);
60 public <TERM
extends DefinedTermBase
> List
<TermVocabulary
<?
extends TERM
>> listByTermClass(Class
<TERM
> clazz
, boolean includeSubclasses
, boolean includeEmptyVocs
, Integer limit
, Integer start
, List
<OrderHint
> orderHints
, List
<String
> propertyPaths
) {
61 return dao
.listByTermClass(clazz
, includeSubclasses
, includeEmptyVocs
,limit
, start
, orderHints
, propertyPaths
);
65 public <T
extends DefinedTermBase
> List
<TermVocabulary
<T
>> findByTermType(TermType termType
) {
66 return dao
.findByTermType(termType
);
70 * @see eu.etaxonomy.cdm.api.service.ITermService#getLanguageVocabulary()
71 * FIXME candidate for harmonization
72 * is this the same as getVocabulary(VocabularyEnum.Language)
75 public TermVocabulary
<Language
> getLanguageVocabulary() {
76 String uuidString
= "45ac7043-7f5e-4f37-92f2-3874aaaef2de";
77 UUID uuid
= UUID
.fromString(uuidString
);
78 TermVocabulary
<Language
> languageVocabulary
= (TermVocabulary
)dao
.findByUuid(uuid
);
79 return languageVocabulary
;
83 public Pager
<DefinedTermBase
> getTerms(TermVocabulary vocabulary
, Integer pageSize
, Integer pageNumber
, List
<OrderHint
> orderHints
, List
<String
> propertyPaths
) {
84 Integer numberOfResults
= dao
.countTerms(vocabulary
);
86 List
<DefinedTermBase
> results
= new ArrayList
<DefinedTermBase
>();
87 if(numberOfResults
> 0) { // no point checking again //TODO use AbstractPagerImpl.hasResultsInRange(numberOfResults, pageNumber, pageSize)
88 results
= dao
.getTerms(vocabulary
, pageSize
, pageNumber
,orderHints
,propertyPaths
);
91 return new DefaultPagerImpl
<DefinedTermBase
>(pageNumber
, numberOfResults
, pageSize
, results
);