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)) {
46 if(titles.size() < (pageNumber * pageSize)) {
47 result = new DefaultPagerImpl<Title>(pageNumber, name.getTitles().getTitle().length, pageSize, new ArrayList<Title>());
48 } else {
49 result = new DefaultPagerImpl<Title>(pageNumber, name.getTitles().getTitle().length, pageSize, titles.subList(pageSize * pageNumber, titles.size()));
50 }
51 } else {
52 result = new DefaultPagerImpl<Title>(pageNumber, name.getTitles().getTitle().length, pageSize, titles.subList(pageSize * pageNumber, pageSize * (pageNumber + 1)));
53 }
54 } else {
55 result = new DefaultPagerImpl<Title>(pageNumber, 0, pageSize, titles);
56 }
57
58 return result;
59 }
60 }