Project

General

Profile

Download (4.98 KB) Statistics
| Branch: | Tag: | Revision:
1 c2f269f9 Andreas Kohlbecker
// $Id$
2 2d993c6e Andreas Müller
/**
3 25663b56 Andreas Müller
* 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 2d993c6e Andreas Müller
package eu.etaxonomy.cdm.api.service;
12
13 d57c0df0 ben.clark
import java.util.ArrayList;
14 2d993c6e Andreas Müller
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 2a56d8c1 ben.clark
import org.springframework.transaction.annotation.Propagation;
20 2d993c6e Andreas Müller
import org.springframework.transaction.annotation.Transactional;
21 ef00bd1c n.hoffmann
22 d57c0df0 ben.clark
import eu.etaxonomy.cdm.api.service.pager.Pager;
23 76de813f Andreas Kohlbecker
import eu.etaxonomy.cdm.api.service.pager.impl.AbstractPagerImpl;
24 d57c0df0 ben.clark
import eu.etaxonomy.cdm.api.service.pager.impl.DefaultPagerImpl;
25 79c0eaa0 Andreas Müller
import eu.etaxonomy.cdm.common.monitor.IProgressMonitor;
26 bcb513cd ben.clark
import eu.etaxonomy.cdm.model.agent.Address;
27 6dc51956 ben.clark
import eu.etaxonomy.cdm.model.agent.AgentBase;
28 5bb4a4ce p.kelbert
import eu.etaxonomy.cdm.model.agent.Institution;
29 d57c0df0 ben.clark
import eu.etaxonomy.cdm.model.agent.InstitutionalMembership;
30
import eu.etaxonomy.cdm.model.agent.Person;
31
import eu.etaxonomy.cdm.model.agent.Team;
32 b3715e03 n.hoffmann
import eu.etaxonomy.cdm.model.common.UuidAndTitleCache;
33 f197a589 Andreas Müller
import eu.etaxonomy.cdm.model.occurrence.Collection;
34 5bb4a4ce p.kelbert
import eu.etaxonomy.cdm.persistence.dao.agent.IAgentDao;
35 f197a589 Andreas Müller
import eu.etaxonomy.cdm.strategy.cache.common.IIdentifiableEntityCacheStrategy;
36 1d6a217b Andreas Müller
37 2d993c6e Andreas Müller
38
39
/**
40
 * @author a.mueller
41
 *
42
 */
43
@Service
44 2a56d8c1 ben.clark
@Transactional(propagation = Propagation.SUPPORTS, readOnly = true)
45 6dc51956 ben.clark
public class AgentServiceImpl extends IdentifiableServiceBase<AgentBase,IAgentDao> implements IAgentService {
46 220b01c1 Andreas Müller
    private static final Logger logger = Logger.getLogger(AgentServiceImpl.class);
47 d57c0df0 ben.clark
	
48 89b86cc8 Andreas Müller
 	/**
49 8e8fd47a a.babadshanjan
	 * Constructor
50
	 */
51
	public AgentServiceImpl(){
52
		if (logger.isDebugEnabled()) { logger.debug("Load AgentService Bean"); }
53
	}
54 82b65041 a.babadshanjan
	
55 2c398184 p.kelbert
	public List<Institution> searchInstitutionByCode(String code) {
56 d57c0df0 ben.clark
		return dao.getInstitutionByCode(code);
57 82b65041 a.babadshanjan
	}
58 a400a105 m.doering
59 f197a589 Andreas Müller
60 b17d9121 Andreas Müller
	/* (non-Javadoc)
61 f197a589 Andreas Müller
	 * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#updateTitleCache(java.lang.Integer, eu.etaxonomy.cdm.strategy.cache.common.IIdentifiableEntityCacheStrategy)
62 b17d9121 Andreas Müller
	 */
63
	@Override
64 4116e48b Andreas Müller
	@Transactional(readOnly = false)
65
    public void updateTitleCache(Class<? extends AgentBase> clazz, Integer stepSize, IIdentifiableEntityCacheStrategy<AgentBase> cacheStrategy, IProgressMonitor monitor) {
66 f197a589 Andreas Müller
		if (clazz == null){
67
			clazz = AgentBase.class;
68
		}
69
		super.updateTitleCacheImpl(clazz, stepSize, cacheStrategy, monitor);
70 a400a105 m.doering
	}
71 5bb4a4ce p.kelbert
72 d57c0df0 ben.clark
	@Autowired
73
	protected void setDao(IAgentDao dao) {
74
		assert dao != null;
75
		this.dao = dao;
76
	}
77
78
	public Pager<InstitutionalMembership> getInstitutionalMemberships(Person person, Integer pageSize, Integer pageNumber) {
79
        Integer numberOfResults = dao.countInstitutionalMemberships(person);
80
		
81
		List<InstitutionalMembership> results = new ArrayList<InstitutionalMembership>();
82 76de813f Andreas Kohlbecker
		if(numberOfResults > 0) { // no point checking again //TODO use AbstractPagerImpl.hasResultsInRange(numberOfResults, pageNumber, pageSize)
83 d57c0df0 ben.clark
			results = dao.getInstitutionalMemberships(person, pageSize, pageNumber); 
84
		}
85
		
86
		return new DefaultPagerImpl<InstitutionalMembership>(pageNumber, numberOfResults, pageSize, results);
87
	}
88
89
	public Pager<Person> getMembers(Team team, Integer pageSize, Integer pageNumber) {
90
		Integer numberOfResults = dao.countMembers(team);
91
			
92
		List<Person> results = new ArrayList<Person>();
93 76de813f Andreas Kohlbecker
		if(numberOfResults > 0) { // no point checking again //TODO use AbstractPagerImpl.hasResultsInRange(numberOfResults, pageNumber, pageSize)
94 d57c0df0 ben.clark
			results = dao.getMembers(team, pageSize, pageNumber); 
95
		}
96
			
97
		return new DefaultPagerImpl<Person>(pageNumber, numberOfResults, pageSize, results);
98
	}
99
100 bcb513cd ben.clark
	public Pager<Address> getAddresses(AgentBase agent, Integer pageSize, Integer pageNumber) {
101
		Integer numberOfResults = dao.countAddresses(agent);
102
		
103
		List<Address> results = new ArrayList<Address>();
104 76de813f Andreas Kohlbecker
		if(numberOfResults > 0) { // no point checking again //TODO use AbstractPagerImpl.hasResultsInRange(numberOfResults, pageNumber, pageSize)
105 bcb513cd ben.clark
			results = dao.getAddresses(agent, pageSize, pageNumber); 
106
		}
107
			
108
		return new DefaultPagerImpl<Address>(pageNumber, numberOfResults, pageSize, results);
109
	}
110
111 89842e70 n.hoffmann
	/* (non-Javadoc)
112
	 * @see eu.etaxonomy.cdm.api.service.IAgentService#getTeamOrPersonBaseUuidAndNomenclaturalTitle()
113
	 */
114 892efc69 Andreas Kohlbecker
	public List<UuidAndTitleCache<Team>> getTeamUuidAndNomenclaturalTitle() {
115
		return dao.getTeamUuidAndNomenclaturalTitle();
116 27ebd6c8 n.hoffmann
	}
117
118
	@Override
119
	public List<UuidAndTitleCache<Person>> getPersonUuidAndTitleCache() {
120
		return dao.getPersonUuidAndTitleCache();
121
	}
122
123
	@Override
124
	public List<UuidAndTitleCache<Team>> getTeamUuidAndTitleCache() {
125
		return dao.getTeamUuidAndTitleCache();
126 89b86cc8 Andreas Müller
	}
127 1e2e7ce4 n.hoffmann
128
	/* (non-Javadoc)
129
	 * @see eu.etaxonomy.cdm.api.service.IAgentService#getInstitutionUuidAndTitleCache()
130
	 */
131
	@Override
132
	public List<UuidAndTitleCache<Institution>> getInstitutionUuidAndTitleCache() {
133
		return dao.getInstitutionUuidAndTitleCache();
134
	}
135 2d993c6e Andreas Müller
}