package edu.asu.spring.quadriga.profile.impl; import java.util.ArrayList; import java.util.List; import javax.inject.Named; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.stereotype.Service; import org.springframework.web.client.RestTemplate; import edu.asu.spring.quadriga.jaxb.viaf.Item; import edu.asu.spring.quadriga.profile.ISearchResult; import edu.asu.spring.quadriga.profile.IService; /** * this class contains methods which connects quadriga to viaf authority service and searches * the required term in it. * * @author rohit pendbhaje */ @Service public class ViafService implements IService { @Autowired private ISearchResult searchResult; private final static String SERVICE_ID = "edu.asu.viaf"; private final static String SERVICE_NAME = "Viaf"; @Autowired @Named("restTemplateViaf") private RestTemplate restTemplate; @Autowired @Qualifier("viafURL") private String viafURL; @Autowired @Qualifier("searchViafURLPath") private String searchViafURLPath; @Autowired @Qualifier("searchViafURLPath1") private String searchViafURLPath1; @Autowired @Qualifier("searchViafURLPath2") private String searchViafURLPath2; @Override public String getServiceId() { return SERVICE_ID; } @Override public String getName() { return SERVICE_NAME; } /** * searches results in the viaf authority service and gives back results to quadriga * @param item term entered by user * @param startindex index of the start of the search result viaf service * * @return list of searchresults retrieved from viaf service * @author rohit pendbhaje * */ @Override public List<ISearchResult> search(String word) { List<Item> items = null; String fullUrl; fullUrl = viafURL.trim() + searchViafURLPath.trim() + " " + word.trim() + searchViafURLPath1.trim() + IService.STARTINDEX.trim() + searchViafURLPath2.trim(); ViafReply rep = (ViafReply) restTemplate.getForObject(fullUrl, ViafReply.class); items = rep.getChannel().getItems(); List<ISearchResult> searchResults = new ArrayList<ISearchResult>(); for(Item i : items) { ISearchResult searchResult = new SearchResult(); searchResult.setDescription(i.getPubDate()); searchResult.setId(i.getLink()); searchResult.setName(i.getTitle()); searchResults.add(searchResult); } return searchResults; } }