View Javadoc

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  }