Project

General

Profile

Download (4.94 KB) Statistics
| Branch: | Tag: | Revision:
1
// $Id$
2
/**
3
* Copyright (C) 2007 EDIT
4
* European Distributed Institute of Taxonomy 
5
* http://www.e-taxonomy.eu
6
* 
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.
9
*/
10

    
11
package eu.etaxonomy.cdm.api.service;
12

    
13
import java.util.ArrayList;
14
import java.util.List;
15

    
16
import org.apache.log4j.Logger;
17
import org.springframework.beans.factory.annotation.Autowired;
18
import org.springframework.stereotype.Service;
19
import org.springframework.transaction.annotation.Propagation;
20
import org.springframework.transaction.annotation.Transactional;
21

    
22
import eu.etaxonomy.cdm.api.service.pager.Pager;
23
import eu.etaxonomy.cdm.api.service.pager.impl.AbstractPagerImpl;
24
import eu.etaxonomy.cdm.api.service.pager.impl.DefaultPagerImpl;
25
import eu.etaxonomy.cdm.common.IProgressMonitor;
26
import eu.etaxonomy.cdm.model.agent.Address;
27
import eu.etaxonomy.cdm.model.agent.AgentBase;
28
import eu.etaxonomy.cdm.model.agent.Institution;
29
import eu.etaxonomy.cdm.model.agent.InstitutionalMembership;
30
import eu.etaxonomy.cdm.model.agent.Person;
31
import eu.etaxonomy.cdm.model.agent.Team;
32
import eu.etaxonomy.cdm.model.common.UuidAndTitleCache;
33
import eu.etaxonomy.cdm.model.occurrence.Collection;
34
import eu.etaxonomy.cdm.persistence.dao.agent.IAgentDao;
35
import eu.etaxonomy.cdm.strategy.cache.common.IIdentifiableEntityCacheStrategy;
36

    
37

    
38

    
39
/**
40
 * @author a.mueller
41
 *
42
 */
43
@Service
44
@Transactional(propagation = Propagation.SUPPORTS, readOnly = true)
45
public class AgentServiceImpl extends IdentifiableServiceBase<AgentBase,IAgentDao> implements IAgentService {
46
    private static final Logger logger = Logger.getLogger(AgentServiceImpl.class);
47
	
48
 	/**
49
	 * Constructor
50
	 */
51
	public AgentServiceImpl(){
52
		if (logger.isDebugEnabled()) { logger.debug("Load AgentService Bean"); }
53
	}
54
	
55
	public List<Institution> searchInstitutionByCode(String code) {
56
		return dao.getInstitutionByCode(code);
57
	}
58

    
59

    
60
	/* (non-Javadoc)
61
	 * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#updateTitleCache(java.lang.Integer, eu.etaxonomy.cdm.strategy.cache.common.IIdentifiableEntityCacheStrategy)
62
	 */
63
	@Override
64
	public void updateTitleCache(Class<? extends AgentBase> clazz, Integer stepSize, IIdentifiableEntityCacheStrategy<AgentBase> cacheStrategy, IProgressMonitor monitor) {
65
		if (clazz == null){
66
			clazz = AgentBase.class;
67
		}
68
		super.updateTitleCacheImpl(clazz, stepSize, cacheStrategy, monitor);
69
	}
70

    
71
	@Autowired
72
	protected void setDao(IAgentDao dao) {
73
		assert dao != null;
74
		this.dao = dao;
75
	}
76

    
77
	public Pager<InstitutionalMembership> getInstitutionalMemberships(Person person, Integer pageSize, Integer pageNumber) {
78
        Integer numberOfResults = dao.countInstitutionalMemberships(person);
79
		
80
		List<InstitutionalMembership> results = new ArrayList<InstitutionalMembership>();
81
		if(numberOfResults > 0) { // no point checking again //TODO use AbstractPagerImpl.hasResultsInRange(numberOfResults, pageNumber, pageSize)
82
			results = dao.getInstitutionalMemberships(person, pageSize, pageNumber); 
83
		}
84
		
85
		return new DefaultPagerImpl<InstitutionalMembership>(pageNumber, numberOfResults, pageSize, results);
86
	}
87

    
88
	public Pager<Person> getMembers(Team team, Integer pageSize, Integer pageNumber) {
89
		Integer numberOfResults = dao.countMembers(team);
90
			
91
		List<Person> results = new ArrayList<Person>();
92
		if(numberOfResults > 0) { // no point checking again //TODO use AbstractPagerImpl.hasResultsInRange(numberOfResults, pageNumber, pageSize)
93
			results = dao.getMembers(team, pageSize, pageNumber); 
94
		}
95
			
96
		return new DefaultPagerImpl<Person>(pageNumber, numberOfResults, pageSize, results);
97
	}
98

    
99
	public Pager<Address> getAddresses(AgentBase agent, Integer pageSize, Integer pageNumber) {
100
		Integer numberOfResults = dao.countAddresses(agent);
101
		
102
		List<Address> results = new ArrayList<Address>();
103
		if(numberOfResults > 0) { // no point checking again //TODO use AbstractPagerImpl.hasResultsInRange(numberOfResults, pageNumber, pageSize)
104
			results = dao.getAddresses(agent, pageSize, pageNumber); 
105
		}
106
			
107
		return new DefaultPagerImpl<Address>(pageNumber, numberOfResults, pageSize, results);
108
	}
109

    
110
	/* (non-Javadoc)
111
	 * @see eu.etaxonomy.cdm.api.service.IAgentService#getTeamOrPersonBaseUuidAndNomenclaturalTitle()
112
	 */
113
	public List<UuidAndTitleCache<Team>> getTeamUuidAndNomenclaturalTitle() {
114
		return dao.getTeamUuidAndNomenclaturalTitle();
115
	}
116

    
117
	@Override
118
	public List<UuidAndTitleCache<Person>> getPersonUuidAndTitleCache() {
119
		return dao.getPersonUuidAndTitleCache();
120
	}
121

    
122
	@Override
123
	public List<UuidAndTitleCache<Team>> getTeamUuidAndTitleCache() {
124
		return dao.getTeamUuidAndTitleCache();
125
	}
126

    
127
	/* (non-Javadoc)
128
	 * @see eu.etaxonomy.cdm.api.service.IAgentService#getInstitutionUuidAndTitleCache()
129
	 */
130
	@Override
131
	public List<UuidAndTitleCache<Institution>> getInstitutionUuidAndTitleCache() {
132
		return dao.getInstitutionUuidAndTitleCache();
133
	}
134
}
(3-3/76)