fixed a bug that occurred when executing operations on taxon nodes on root level
[cdmlib.git] / cdmlib-services / src / main / java / eu / etaxonomy / cdm / api / service / AgentServiceImpl.java
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.Collection;
15 import java.util.List;
16 import java.util.Map;
17 import java.util.UUID;
18
19 import org.apache.log4j.Logger;
20 import org.springframework.beans.factory.annotation.Autowired;
21 import org.springframework.stereotype.Service;
22 import org.springframework.transaction.annotation.Transactional;
23
24 import eu.etaxonomy.cdm.api.service.pager.Pager;
25 import eu.etaxonomy.cdm.api.service.pager.impl.DefaultPagerImpl;
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.agent.TeamOrPersonBase;
33 import eu.etaxonomy.cdm.model.common.UuidAndTitleCache;
34 import eu.etaxonomy.cdm.persistence.dao.agent.IAgentDao;
35 import eu.etaxonomy.cdm.persistence.query.OrderHint;
36
37
38
39 /**
40 * @author a.mueller
41 *
42 */
43 @Service
44 @Transactional(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 /**
50 * Constructor
51 */
52 public AgentServiceImpl(){
53 if (logger.isDebugEnabled()) { logger.debug("Load AgentService Bean"); }
54 }
55
56 public List<Institution> searchInstitutionByCode(String code) {
57 return dao.getInstitutionByCode(code);
58 }
59
60 public void generateTitleCache() {
61 // TODO Auto-generated method stub
62
63 }
64
65 @Autowired
66 protected void setDao(IAgentDao dao) {
67 assert dao != null;
68 this.dao = dao;
69 }
70
71 public Pager<InstitutionalMembership> getInstitutionalMemberships(Person person, Integer pageSize, Integer pageNumber) {
72 Integer numberOfResults = dao.countInstitutionalMemberships(person);
73
74 List<InstitutionalMembership> results = new ArrayList<InstitutionalMembership>();
75 if(numberOfResults > 0) { // no point checking again
76 results = dao.getInstitutionalMemberships(person, pageSize, pageNumber);
77 }
78
79 return new DefaultPagerImpl<InstitutionalMembership>(pageNumber, numberOfResults, pageSize, results);
80 }
81
82 public Pager<Person> getMembers(Team team, Integer pageSize, Integer pageNumber) {
83 Integer numberOfResults = dao.countMembers(team);
84
85 List<Person> results = new ArrayList<Person>();
86 if(numberOfResults > 0) { // no point checking again
87 results = dao.getMembers(team, pageSize, pageNumber);
88 }
89
90 return new DefaultPagerImpl<Person>(pageNumber, numberOfResults, pageSize, results);
91 }
92
93 public Pager<Address> getAddresses(AgentBase agent, Integer pageSize, Integer pageNumber) {
94 Integer numberOfResults = dao.countAddresses(agent);
95
96 List<Address> results = new ArrayList<Address>();
97 if(numberOfResults > 0) { // no point checking again
98 results = dao.getAddresses(agent, pageSize, pageNumber);
99 }
100
101 return new DefaultPagerImpl<Address>(pageNumber, numberOfResults, pageSize, results);
102 }
103
104 public Pager<AgentBase> search(Class<? extends AgentBase> clazz, String queryString, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
105 Integer numberOfResults = dao.count(clazz,queryString);
106
107 List<AgentBase> results = new ArrayList<AgentBase>();
108 if(numberOfResults > 0) { // no point checking again
109 results = dao.search(clazz,queryString, pageSize, pageNumber, orderHints, propertyPaths);
110 }
111
112 return new DefaultPagerImpl<AgentBase>(pageNumber, numberOfResults, pageSize, results);
113 }
114
115 /* (non-Javadoc)
116 * @see eu.etaxonomy.cdm.api.service.IAgentService#getPersonUuidAndNomenclaturalTitle()
117 */
118 public List<UuidAndTitleCache<Person>> getPersonUuidAndNomenclaturalTitle() {
119 return dao.getPersonUuidAndNomenclaturalTitle();
120 }
121
122 /* (non-Javadoc)
123 * @see eu.etaxonomy.cdm.api.service.IAgentService#getTeamOrPersonBaseUuidAndNomenclaturalTitle()
124 */
125 public List<UuidAndTitleCache<TeamOrPersonBase>> getTeamOrPersonBaseUuidAndNomenclaturalTitle() {
126 return dao.getTeamOrPersonBaseUuidAndNomenclaturalTitle();
127 }
128 }