View Javadoc

1   package org.cateproject.service.impl;
2   
3   import java.util.ArrayList;
4   import java.util.List;
5   
6   import org.cateproject.persistence.dao.bhl.BiodiversityHeritageLibraryDAO;
7   import org.cateproject.service.BiodiversityHeritageLibraryService;
8   import eu.etaxonomy.cdm.api.service.pager.Pager;
9   import eu.etaxonomy.cdm.api.service.pager.impl.DefaultPagerImpl;
10  import org.mobot.NameServiceStub.Name;
11  import org.mobot.NameServiceStub.Title;
12  import org.springframework.beans.factory.annotation.Autowired;
13  import org.springframework.stereotype.Service;
14  
15  @Service("biodiversityHeritageLibraryService")
16  public class BiodiversityHeritageLibraryServiceImpl implements BiodiversityHeritageLibraryService {
17  
18  	private BiodiversityHeritageLibraryDAO biodiversityHeritageLibraryDAO;
19  	
20  	@Autowired
21  	public void setBiodiversityHeritageLibraryDAO(BiodiversityHeritageLibraryDAO biodiversityHeritageLibraryDAO) {
22  		this.biodiversityHeritageLibraryDAO = biodiversityHeritageLibraryDAO;
23  	}
24  
25  	public Pager<Title> getTitles(String nameString, Integer pageNumber, Integer pageSize) {
26  		Pager<Title> result;
27  		
28  		List<Name> names = biodiversityHeritageLibraryDAO.searchNames(nameString);
29  		
30  		List<Title> titles = new ArrayList<Title>();
31  		
32  		Name name = null;
33  		for(Name n : names) {
34  			if(n.getNameConfirmed().equals(nameString)) {
35  				name = n;
36  				break;
37  			}
38  		}
39  		
40  		if(name != null) {
41  			name = biodiversityHeritageLibraryDAO.getNameDetail(name);
42  			for(Title title : name.getTitles().getTitle()) {
43  				titles.add(title);
44  			}
45  			if(titles.size() < ((pageNumber + 1) * pageSize)) { // There are less titles than we want
46  				if(titles.size() < (pageNumber * pageSize)) { // in fact, no titles should appear in this pager
47  					result = new DefaultPagerImpl<Title>(pageNumber, name.getTitles().getTitle().length, pageSize, new ArrayList<Title>());
48  				} else { // return a pager with as many titles as we can put into it
49  			        result = new DefaultPagerImpl<Title>(pageNumber, name.getTitles().getTitle().length, pageSize, titles.subList(pageSize * pageNumber, titles.size()));
50  				}
51  			} else { // return a pager
52  				result = new DefaultPagerImpl<Title>(pageNumber, name.getTitles().getTitle().length, pageSize, titles.subList(pageSize * pageNumber, pageSize * (pageNumber + 1)));
53  			}
54  		} else { // return an empty pager
55  			result = new DefaultPagerImpl<Title>(pageNumber, 0, pageSize, titles);
56  		}
57  		
58  		return result;
59  	}
60  }