1 package org.cateproject.persistence.dao.bhl.remoting; 2 3 import java.rmi.RemoteException; 4 import java.util.ArrayList; 5 import java.util.List; 6 7 import org.apache.axis2.AxisFault; 8 import org.cateproject.persistence.dao.bhl.BiodiversityHeritageLibraryDAO; 9 import org.mobot.NameServiceStub.ArrayOfName; 10 import org.mobot.NameServiceStub; 11 12 import org.mobot.NameServiceStub.Name; 13 import org.mobot.NameServiceStub.NameGetDetail; 14 import org.mobot.NameServiceStub.NameGetDetailResponse; 15 import org.mobot.NameServiceStub.NameSearch; 16 import org.mobot.NameServiceStub.NameSearchResponse; 17 import org.springframework.remoting.RemoteAccessException; 18 import org.springframework.stereotype.Repository; 19 20 @Repository("biodiversityHeritageLibraryDAO") 21 public class BiodiversityHeritageLibraryDAOImpl implements 22 BiodiversityHeritageLibraryDAO { 23 24 private NameServiceStub nameService; 25 26 public BiodiversityHeritageLibraryDAOImpl() { 27 try { 28 this.nameService = new NameServiceStub(); 29 } catch (AxisFault e) { 30 throw new RemoteAccessException("Could not instantiate Biodiversity Heritage Library Name Service",e); 31 } 32 } 33 34 35 public Name getNameDetail(Name name) { 36 try { 37 NameGetDetail nameGetDetail = new NameGetDetail(); 38 nameGetDetail.setNameBankID(Integer.toString(name.getNameBankID())); 39 NameGetDetailResponse nameGetDetailResponse = nameService.NameGetDetail(nameGetDetail); 40 return nameGetDetailResponse.getNameGetDetailResult(); 41 } catch (RemoteException e) { 42 throw new RemoteAccessException("nameGetDetail failed for name Id " + name.getNameBankID(),e); 43 } 44 } 45 46 public List<Name> searchNames(String taxonName) { 47 try { 48 NameSearch nameSearch = new NameSearch(); 49 nameSearch.setName(taxonName); 50 NameSearchResponse nameSearchResponse = nameService.NameSearch(nameSearch); 51 ArrayOfName arrayOfNames = nameSearchResponse.getNameSearchResult(); 52 List<Name> names = new ArrayList<Name>(); 53 54 if(null != arrayOfNames.getName()) { 55 for(Name name : arrayOfNames.getName()) { 56 names.add(name); 57 } 58 } 59 60 return names; 61 } catch (RemoteException e) { 62 throw new RemoteAccessException("nameSearch failed for name string " + taxonName,e); 63 } 64 } 65 66 }