KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > contineo > actions > search > SearchNextAction


1 /*
2  * SearchNextAction.java
3  *
4  * Created on 13. November 2003, 14:08
5  */

6
7 package org.contineo.actions.search;
8
9 import java.util.Collection JavaDoc;
10 import java.util.Vector JavaDoc;
11 import javax.servlet.http.HttpServletRequest JavaDoc;
12 import javax.servlet.http.HttpServletResponse JavaDoc;
13 import javax.servlet.http.HttpSession JavaDoc;
14 import org.apache.log4j.Level;
15 import org.apache.log4j.Logger;
16 import org.apache.struts.action.Action;
17 import org.apache.struts.action.ActionError;
18 import org.apache.struts.action.ActionErrors;
19 import org.apache.struts.action.ActionForm;
20 import org.apache.struts.action.ActionForward;
21 import org.apache.struts.action.ActionMapping;
22 import org.contineo.core.LoggingManager;
23 import org.contineo.core.SessionManagement;
24 import org.contineo.core.config.SearchSettings;
25 import org.contineo.core.config.dao.SearchSettingsDAO;
26 import org.contineo.searchengine.search.Search;
27 import org.contineo.searchengine.search.SearchOptions;
28 import org.contineo.searchengine.util.EdgeCounter;
29 import org.contineo.searchengine.util.TermSelector;
30 /**
31  *
32  * @author Michael Scholz
33  */

34 public class SearchNextAction extends Action {
35
36     /**
37      * @uml.property name="logger"
38      * @uml.associationEnd
39      */

40     private Logger logger;
41
42     
43     /** Creates a new instance of SearchNextAction */
44     public SearchNextAction() {
45         logger = LoggingManager.getLogger(this.getClass());
46     }
47     
48     public ActionForward execute(ActionMapping mapping,
49                     ActionForm form, HttpServletRequest JavaDoc request,
50                     HttpServletResponse JavaDoc response) {
51         ActionForward actionForward = new ActionForward();
52         ActionErrors errors = new ActionErrors();
53         HttpSession JavaDoc session = request.getSession();
54         if (SessionManagement.isValid(session)) {
55             try {
56                 String JavaDoc username = (String JavaDoc)session.getAttribute("authuser");
57                 SearchSettingsDAO settingsDao = new SearchSettingsDAO();
58                 SearchSettings settings = settingsDao.findByPrimaryKey(username);
59                 String JavaDoc repres = settings.getRepresentation();
60                 String JavaDoc page = request.getParameter("page");
61                 String JavaDoc hpp = request.getParameter("hpp");
62                 if (hpp == null || hpp.equals(""))
63                     hpp = String.valueOf(new SearchOptions().getHitsPerPage());
64                 int p = Integer.parseInt(page);
65                 int h = Integer.parseInt(hpp);
66                 int s = (p-1)*h;
67                 //Collection result = (Collection)session.getAttribute("result");
68
Search search = new Search();
69                 SearchOptions opt = (SearchOptions)session.getAttribute("options");
70                 if (opt == null)
71                     opt = new SearchOptions();
72                 opt.setStart(s);
73                 String JavaDoc lang = (String JavaDoc)session.getAttribute("language");
74                 Vector JavaDoc pageVect = opt.getPageVect();
75                 Integer JavaDoc resultStart = (Integer JavaDoc)pageVect.get(p-1);
76                 opt.setResultStart(resultStart.intValue());
77                 Collection JavaDoc result = search.search(opt, lang);
78                 request.setAttribute("options", opt);
79                 request.setAttribute("hits", new Integer JavaDoc(search.getHitCount()));
80                 request.setAttribute("result", result);
81                 request.setAttribute("query", opt.getQueryStr());
82                 if (result != null) {
83                     int ps = search.getHitCount() / h;
84                     if ((search.getHitCount() % h) != 0)
85                         ps++;
86                     request.setAttribute("start", new Integer JavaDoc(s));
87                     request.setAttribute("pages", new Integer JavaDoc(ps));
88                     request.setAttribute("hpp", new Integer JavaDoc(h));
89                     request.setAttribute("pg", new Integer JavaDoc(Integer.parseInt(page)));
90                 } else {
91                     errors.add(ActionErrors.GLOBAL_ERROR, new ActionError("errors.nosearch"));
92                     request.setAttribute("pages", new Integer JavaDoc(0));
93                     request.setAttribute("hpp", new Integer JavaDoc(0));
94                     request.setAttribute("pg", new Integer JavaDoc(0));
95                 }
96                 if (repres.equals("text")) {
97                     // textual representation
98
actionForward = mapping.findForward("resulttext");
99                 } else {
100                     // visual representation
101
request.setAttribute("doccount", new Integer JavaDoc(result.size()));
102                     
103                     // extract terms
104
Collection JavaDoc keywords = new TermSelector().getTopTerms(result, 10);
105                     request.setAttribute("keywords", keywords);
106                     request.setAttribute("kwcount", new Integer JavaDoc(keywords.size()));
107                     request.setAttribute("edgecount", new Integer JavaDoc(EdgeCounter.count(keywords)));
108                     request.setAttribute("elements", new Integer JavaDoc(20));
109                     request.setAttribute("screensize", new Integer JavaDoc(settings.getScreenSize()));
110                     actionForward = mapping.findForward("resultgraph");
111                 }
112             } catch (Exception JavaDoc e) {
113                 if (logger.isEnabledFor(Level.ERROR))
114                     logger.error(e.getMessage());
115                 errors.add(ActionErrors.GLOBAL_ERROR, new ActionError("errors.nosearch"));
116                 actionForward = mapping.findForward("error");
117             }
118         } else
119             actionForward = mapping.findForward("invalid");
120         return actionForward;
121     }
122 }
123
Popular Tags