KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > dotmarketing > viewtools > SearchAPI


1 package com.dotmarketing.viewtools;
2
3 import java.util.HashMap JavaDoc;
4 import java.util.Iterator JavaDoc;
5 import java.util.Map JavaDoc;
6 import java.util.Set JavaDoc;
7
8 import javax.servlet.http.HttpServletRequest JavaDoc;
9
10 import org.apache.velocity.tools.view.context.ViewContext;
11 import org.apache.velocity.tools.view.tools.ViewTool;
12
13 import com.dotmarketing.beans.Host;
14 import com.dotmarketing.factories.HostFactory;
15
16 public class SearchAPI implements ViewTool {
17     
18
19     public void init(Object JavaDoc obj) {
20
21
22     }
23
24     //Search Methods (Spindle Search)
25
public Map JavaDoc doSearch (HttpServletRequest JavaDoc request) {
26         int page = 0;
27         try {
28             page = Integer.parseInt(request.getParameter("page"));
29         } catch (NumberFormatException JavaDoc e) {}
30         return doSearch(request, page);
31     }
32         
33     public Map JavaDoc doSearch (HttpServletRequest JavaDoc request, int p) {
34         
35         String JavaDoc searchQuery = request.getParameter("search_query");
36         Host h = HostFactory.getCurrentHost(request);
37         
38         String JavaDoc _serverName = h.getHostname();
39         
40         
41         
42         Set JavaDoc SearchResults = com.dotmarketing.factories.SearchResultFactory.getSearchResults(searchQuery, _serverName);
43         
44         int showRows = 10;
45         int total = (SearchResults.size() - 1) / showRows;
46         if(total > 100)total = 100;
47         if(p > total)p = total;
48         int start = p * showRows;
49         int end = (p * showRows) + showRows;
50         if(end > SearchResults.size())end = SearchResults.size();
51         String JavaDoc page = String.valueOf(p);
52         java.util.ArrayList JavaDoc setSearchResults = new java.util.ArrayList JavaDoc();
53         
54         Iterator JavaDoc it = SearchResults.iterator();
55         
56         for(int j=0; j< end; j++){
57             Object JavaDoc ob = it.next();
58             if (j >= start)
59                 setSearchResults.add(ob);
60         }
61         /* add that list to a VelocityContext */
62         HashMap JavaDoc retMap = new HashMap JavaDoc ();
63         retMap.put("searchResults", setSearchResults);
64         retMap.put("start", String.valueOf(start+1));
65         retMap.put("end", String.valueOf(end));
66         retMap.put("page", page);
67         retMap.put("total", String.valueOf(total));
68         retMap.put("resultTotal", String.valueOf(SearchResults.size()));
69         retMap.put("searchQuery", searchQuery);
70         
71         return retMap;
72     }
73
74 }
Popular Tags