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
.Iterator
;
15 import java
.util
.List
;
16 import java
.util
.UUID
;
18 import org
.apache
.log4j
.Logger
;
19 import org
.springframework
.beans
.factory
.annotation
.Autowired
;
20 import org
.springframework
.stereotype
.Service
;
21 import org
.springframework
.transaction
.annotation
.Propagation
;
22 import org
.springframework
.transaction
.annotation
.Transactional
;
24 import eu
.etaxonomy
.cdm
.hibernate
.HibernateProxyHelper
;
25 import eu
.etaxonomy
.cdm
.model
.common
.DefinedTermBase
;
26 import eu
.etaxonomy
.cdm
.model
.common
.OrderedTermVocabulary
;
27 import eu
.etaxonomy
.cdm
.model
.common
.TermVocabulary
;
28 import eu
.etaxonomy
.cdm
.model
.description
.AbsenceTerm
;
29 import eu
.etaxonomy
.cdm
.model
.description
.PresenceTerm
;
30 import eu
.etaxonomy
.cdm
.model
.location
.NamedArea
;
31 import eu
.etaxonomy
.cdm
.model
.location
.NamedAreaLevel
;
32 import eu
.etaxonomy
.cdm
.model
.location
.NamedAreaType
;
33 import eu
.etaxonomy
.cdm
.persistence
.dao
.common
.IDefinedTermDao
;
34 import eu
.etaxonomy
.cdm
.persistence
.dao
.common
.IOrderedTermVocabularyDao
;
35 import eu
.etaxonomy
.cdm
.persistence
.dao
.common
.ITermVocabularyDao
;
38 * Quick and dirty implementation of a location service as needed by the editor.
40 * NOTE: Current implementation does not support the IService methods like {@link #save(DefinedTermBase)}
41 * as no base dao is loaded by autowiring.
48 @Transactional(readOnly
= true)
49 public class LocationServiceImpl
extends ServiceBase
<DefinedTermBase
,IDefinedTermDao
> implements ILocationService
{
51 @SuppressWarnings("unused")
52 private static final Logger logger
= Logger
.getLogger(LocationServiceImpl
.class);
55 protected ITermVocabularyDao vocabularyDao
;
58 protected IDefinedTermDao definedTermDao
;
61 protected IOrderedTermVocabularyDao orderedVocabularyDao
;
64 * @see eu.etaxonomy.cdm.api.service.ServiceBase#setDao(eu.etaxonomy.cdm.persistence.dao.common.ICdmEntityDao)
67 protected void setDao(IDefinedTermDao dao
) {
73 * @see eu.etaxonomy.cdm.api.service.ILocationService#getAbsenceTerms()
74 * FIXME Candidate for harmonization
75 * is this method a duplicate of termService.getVocabulary(VocabularyEnum.AbsenceTerm)?
77 public OrderedTermVocabulary
<AbsenceTerm
> getAbsenceTermVocabulary() {
78 String uuidString
= "5cd438c8-a8a1-4958-842e-169e83e2ceee";
79 UUID uuid
= UUID
.fromString(uuidString
);
80 OrderedTermVocabulary
<AbsenceTerm
> absenceTermVocabulary
=
81 (OrderedTermVocabulary
)orderedVocabularyDao
.findByUuid(uuid
);
82 return absenceTermVocabulary
;
88 * @see eu.etaxonomy.cdm.api.service.ILocationService#getPresenceTermVocabulary()
89 * FIXME Candidate for harmonization
90 * is this method a duplicate of termService.getVocabulary(VocabularyEnum.PresenceTerm)
92 public OrderedTermVocabulary
<PresenceTerm
> getPresenceTermVocabulary() {
93 String uuidString
= "adbbbe15-c4d3-47b7-80a8-c7d104e53a05";
94 UUID uuid
= UUID
.fromString(uuidString
);
95 OrderedTermVocabulary
<PresenceTerm
> presenceTermVocabulary
=
96 (OrderedTermVocabulary
)orderedVocabularyDao
.findByUuid(uuid
);
97 return presenceTermVocabulary
;
101 * @see eu.etaxonomy.cdm.api.service.ILocationService#getNamedAreaVocabularyTypes()
103 public List
<NamedAreaVocabularyType
> getNamedAreaVocabularyTypes() {
104 List
<NamedAreaVocabularyType
> result
= new ArrayList
<NamedAreaVocabularyType
>(3);
105 result
.add(NamedAreaVocabularyType
.TDWG_AREA
);
106 result
.add(NamedAreaVocabularyType
.COUNTRY
);
107 result
.add(NamedAreaVocabularyType
.WATERBODY
);
108 result
.add(NamedAreaVocabularyType
.CONTINENT
);
113 * @see eu.etaxonomy.cdm.api.service.ILocationService#getNamedAreas(java.lang.Object)
115 public OrderedTermVocabulary
<NamedArea
> getNamedAreaVocabulary(NamedAreaVocabularyType vocabularyType
) {
117 UUID namedAreaVocabularyUuid
= null;
119 if(vocabularyType
== NamedAreaVocabularyType
.TDWG_AREA
){
120 namedAreaVocabularyUuid
= UUID
.fromString("1fb40504-d1d7-44b0-9731-374fbe6cac77");
122 if(vocabularyType
== NamedAreaVocabularyType
.CONTINENT
){
123 namedAreaVocabularyUuid
= UUID
.fromString("e72cbcb6-58f8-4201-9774-15d0c6abc128");
125 if(vocabularyType
== NamedAreaVocabularyType
.COUNTRY
){
126 namedAreaVocabularyUuid
= UUID
.fromString("006b1870-7347-4624-990f-e5ed78484a1a");
128 if(vocabularyType
== NamedAreaVocabularyType
.WATERBODY
){
129 namedAreaVocabularyUuid
= UUID
.fromString("35a62b25-f541-4f12-a7c7-17d90dec3e03");
131 return (OrderedTermVocabulary
)orderedVocabularyDao
.findByUuid(namedAreaVocabularyUuid
);
135 * @see eu.etaxonomy.cdm.api.service.ILocationService#getNamedAreaLevelVocabulary()
137 public OrderedTermVocabulary
<NamedAreaLevel
> getNamedAreaLevelVocabulary() {
138 // TODO return namedAreaLevel filtered by NamedAreaVocabularyType
139 String uuidString
= "49034253-27c8-4219-97e8-f8d987d3d122";
140 UUID uuid
= UUID
.fromString(uuidString
);
141 OrderedTermVocabulary
<NamedAreaLevel
> namedAreaLevelVocabulary
=
142 (OrderedTermVocabulary
)orderedVocabularyDao
.findByUuid(uuid
);
143 return namedAreaLevelVocabulary
;
148 * @see eu.etaxonomy.cdm.api.service.ILocationService#getNamedAreaTypeVocabulary()
149 * FIXME Candidate for harmonization
150 * is this method a duplicate of termService.getVocabulary(VocabularyEnum.NamedAreaType)
152 public TermVocabulary
<NamedAreaType
> getNamedAreaTypeVocabulary() {
153 String uuidString
= "e51d52d6-965b-4f7d-900f-4ba9c6f5dd33";
154 UUID uuid
= UUID
.fromString(uuidString
);
155 TermVocabulary
<NamedAreaType
> namedAreaTypeVocabulary
=
156 (OrderedTermVocabulary
)orderedVocabularyDao
.findByUuid(uuid
);
157 return namedAreaTypeVocabulary
;
160 public List
<NamedArea
> getTopLevelNamedAreasByVocabularyType(NamedAreaVocabularyType vocabularyType
){
162 OrderedTermVocabulary
<NamedArea
> vocabulary
= getNamedAreaVocabulary(vocabularyType
);
164 List
<NamedArea
> topLevelTerms
= new ArrayList
<NamedArea
>();
166 // for(NamedArea area : vocabulary){
167 Iterator
<NamedArea
> it
= vocabulary
.iterator();
170 NamedArea area
= HibernateProxyHelper
.deproxy(it
.next(), NamedArea
.class);
171 if(area
.getPartOfWorkaround() == null){
172 topLevelTerms
.add(area
);
176 return topLevelTerms
;