Project

General

Profile

Download (5.82 KB) Statistics
| Branch: | Tag: | Revision:
1 89ee59ee n.hoffmann
/**
2
* Copyright (C) 2007 EDIT
3 bb5e13c1 Andreas Kohlbecker
* European Distributed Institute of Taxonomy
4 89ee59ee n.hoffmann
* http://www.e-taxonomy.eu
5 bb5e13c1 Andreas Kohlbecker
*
6 89ee59ee n.hoffmann
* 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.
8
*/
9
10
package eu.etaxonomy.cdm.api.service;
11
12
import java.util.ArrayList;
13 83ec0139 n.hoffmann
import java.util.Iterator;
14 89ee59ee n.hoffmann
import java.util.List;
15
import java.util.UUID;
16
17
import org.apache.log4j.Logger;
18
import org.springframework.beans.factory.annotation.Autowired;
19
import org.springframework.stereotype.Service;
20
import org.springframework.transaction.annotation.Transactional;
21
22 83ec0139 n.hoffmann
import eu.etaxonomy.cdm.hibernate.HibernateProxyHelper;
23 ccf1f2f1 Andreas Müller
import eu.etaxonomy.cdm.model.description.PresenceAbsenceTerm;
24 89ee59ee n.hoffmann
import eu.etaxonomy.cdm.model.location.NamedArea;
25
import eu.etaxonomy.cdm.model.location.NamedAreaLevel;
26
import eu.etaxonomy.cdm.model.location.NamedAreaType;
27 1c39686b Andreas Müller
import eu.etaxonomy.cdm.model.term.DefinedTermBase;
28
import eu.etaxonomy.cdm.model.term.OrderedTermVocabulary;
29
import eu.etaxonomy.cdm.model.term.TermVocabulary;
30 76cfd0f6 Andreas Müller
import eu.etaxonomy.cdm.persistence.dao.term.IDefinedTermDao;
31
import eu.etaxonomy.cdm.persistence.dao.term.IOrderedTermVocabularyDao;
32
import eu.etaxonomy.cdm.persistence.dao.term.ITermVocabularyDao;
33 89ee59ee n.hoffmann
34
/**
35 25461b19 Andreas Müller
 * Quick and dirty implementation of a location service as needed by the editor.
36 268e5f20 Andreas Müller
 *
37 25461b19 Andreas Müller
 * NOTE: Current implementation does not support the IService methods like {@link #save(DefinedTermBase)}
38
 * as no base dao is loaded by autowiring.
39 bb5e13c1 Andreas Kohlbecker
 *
40 89ee59ee n.hoffmann
 * @author n.hoffman
41 a88578ce Andreas Müller
 * @since 08.04.2009
42 89ee59ee n.hoffmann
 */
43
@Service
44 77b4a247 Andreas Kohlbecker
@Transactional(readOnly = true)
45 89ee59ee n.hoffmann
public class LocationServiceImpl extends ServiceBase<DefinedTermBase,IDefinedTermDao> implements ILocationService {
46 bb5e13c1 Andreas Kohlbecker
47 25461b19 Andreas Müller
    @SuppressWarnings("unused")
48
	private static final Logger logger = Logger.getLogger(LocationServiceImpl.class);
49 bb5e13c1 Andreas Kohlbecker
50
    @Autowired
51
    protected ITermVocabularyDao vocabularyDao;
52
53
    @Autowired
54
    protected IDefinedTermDao definedTermDao;
55
56
    @Autowired
57
    protected IOrderedTermVocabularyDao orderedVocabularyDao;
58
59 268e5f20 Andreas Müller
    @Override
60 bb5e13c1 Andreas Kohlbecker
    protected void setDao(IDefinedTermDao dao) {
61
        this.dao = dao;
62
    }
63
64
65
    /**
66
     * (non-Javadoc)
67
     * @see eu.etaxonomy.cdm.api.service.ILocationService#getPresenceTermVocabulary()
68
     * FIXME Candidate for harmonization
69
     * is this method a duplicate of termService.getVocabulary(VocabularyEnum.PresenceTerm)
70
     */
71 3807d9cb Andreas Müller
    @Deprecated
72 268e5f20 Andreas Müller
    @Override
73 ccf1f2f1 Andreas Müller
    public OrderedTermVocabulary<PresenceAbsenceTerm> getPresenceAbsenceTermVocabulary() {
74 bb5e13c1 Andreas Kohlbecker
        String uuidString = "adbbbe15-c4d3-47b7-80a8-c7d104e53a05";
75
        UUID uuid = UUID.fromString(uuidString);
76 ccf1f2f1 Andreas Müller
        OrderedTermVocabulary<PresenceAbsenceTerm> presenceTermVocabulary =
77 bb5e13c1 Andreas Kohlbecker
            (OrderedTermVocabulary)orderedVocabularyDao.findByUuid(uuid);
78
        return presenceTermVocabulary;
79
    }
80
81 268e5f20 Andreas Müller
    @Override
82 bb5e13c1 Andreas Kohlbecker
    public List<NamedAreaVocabularyType> getNamedAreaVocabularyTypes() {
83
        List<NamedAreaVocabularyType> result = new ArrayList<NamedAreaVocabularyType>(3);
84
        result.add(NamedAreaVocabularyType.TDWG_AREA);
85 15348b34 Andreas Müller
        result.add(NamedAreaVocabularyType.COUNTRY);
86
        result.add(NamedAreaVocabularyType.WATERBODY);
87 bb5e13c1 Andreas Kohlbecker
        result.add(NamedAreaVocabularyType.CONTINENT);
88
        return result;
89
    }
90
91 268e5f20 Andreas Müller
    @Override
92 bb5e13c1 Andreas Kohlbecker
    public OrderedTermVocabulary<NamedArea> getNamedAreaVocabulary(NamedAreaVocabularyType vocabularyType) {
93
94
        UUID namedAreaVocabularyUuid = null;
95
96
        if(vocabularyType == NamedAreaVocabularyType.TDWG_AREA){
97
            namedAreaVocabularyUuid = UUID.fromString("1fb40504-d1d7-44b0-9731-374fbe6cac77");
98
        }
99
        if(vocabularyType == NamedAreaVocabularyType.CONTINENT){
100
            namedAreaVocabularyUuid = UUID.fromString("e72cbcb6-58f8-4201-9774-15d0c6abc128");
101
        }
102 15348b34 Andreas Müller
        if(vocabularyType == NamedAreaVocabularyType.COUNTRY){
103 bb5e13c1 Andreas Kohlbecker
            namedAreaVocabularyUuid = UUID.fromString("006b1870-7347-4624-990f-e5ed78484a1a");
104
        }
105 15348b34 Andreas Müller
        if(vocabularyType == NamedAreaVocabularyType.WATERBODY){
106
            namedAreaVocabularyUuid = UUID.fromString("35a62b25-f541-4f12-a7c7-17d90dec3e03");
107
        }
108 bb5e13c1 Andreas Kohlbecker
        return (OrderedTermVocabulary)orderedVocabularyDao.findByUuid(namedAreaVocabularyUuid);
109
    }
110
111 268e5f20 Andreas Müller
    @Override
112 bb5e13c1 Andreas Kohlbecker
    public OrderedTermVocabulary<NamedAreaLevel> getNamedAreaLevelVocabulary() {
113
        // TODO return namedAreaLevel filtered by NamedAreaVocabularyType
114
        String uuidString = "49034253-27c8-4219-97e8-f8d987d3d122";
115
        UUID uuid = UUID.fromString(uuidString);
116
        OrderedTermVocabulary<NamedAreaLevel> namedAreaLevelVocabulary =
117
            (OrderedTermVocabulary)orderedVocabularyDao.findByUuid(uuid);
118
        return namedAreaLevelVocabulary;
119
    }
120
121
    /**
122
     * (non-Javadoc)
123
     * @see eu.etaxonomy.cdm.api.service.ILocationService#getNamedAreaTypeVocabulary()
124
     * FIXME Candidate for harmonization
125
     * is this method a duplicate of termService.getVocabulary(VocabularyEnum.NamedAreaType)
126
     */
127 268e5f20 Andreas Müller
    @Override
128 bb5e13c1 Andreas Kohlbecker
    public TermVocabulary<NamedAreaType> getNamedAreaTypeVocabulary() {
129
        String uuidString = "e51d52d6-965b-4f7d-900f-4ba9c6f5dd33";
130
        UUID uuid = UUID.fromString(uuidString);
131
        TermVocabulary<NamedAreaType> namedAreaTypeVocabulary =
132
            (OrderedTermVocabulary)orderedVocabularyDao.findByUuid(uuid);
133
        return namedAreaTypeVocabulary;
134
    }
135
136 268e5f20 Andreas Müller
    @Override
137 bb5e13c1 Andreas Kohlbecker
    public List<NamedArea> getTopLevelNamedAreasByVocabularyType(NamedAreaVocabularyType vocabularyType){
138
139
        OrderedTermVocabulary<NamedArea> vocabulary = getNamedAreaVocabulary(vocabularyType);
140
141 0d79c535 Andreas Müller
        List<NamedArea> topLevelTerms = new ArrayList<>();
142 bb5e13c1 Andreas Kohlbecker
143
//		for(NamedArea area : vocabulary){
144 0d79c535 Andreas Müller
        Iterator<NamedArea> it = vocabulary.getTerms().iterator();
145 bb5e13c1 Andreas Kohlbecker
        while(it.hasNext()){
146
147
            NamedArea area =  HibernateProxyHelper.deproxy(it.next(), NamedArea.class);
148
            if(area.getPartOfWorkaround() == null){
149
                topLevelTerms.add(area);
150
            }
151
        }
152
153
        return topLevelTerms;
154
    }
155 89ee59ee n.hoffmann
156
157
158
}