1 6 7 package org.contineo.actions.search; 8 9 import java.util.Collection ; 10 import java.util.Vector ; 11 import javax.servlet.http.HttpServletRequest ; 12 import javax.servlet.http.HttpServletResponse ; 13 import javax.servlet.http.HttpSession ; 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 34 public class SearchNextAction extends Action { 35 36 40 private Logger logger; 41 42 43 44 public SearchNextAction() { 45 logger = LoggingManager.getLogger(this.getClass()); 46 } 47 48 public ActionForward execute(ActionMapping mapping, 49 ActionForm form, HttpServletRequest request, 50 HttpServletResponse response) { 51 ActionForward actionForward = new ActionForward(); 52 ActionErrors errors = new ActionErrors(); 53 HttpSession session = request.getSession(); 54 if (SessionManagement.isValid(session)) { 55 try { 56 String username = (String )session.getAttribute("authuser"); 57 SearchSettingsDAO settingsDao = new SearchSettingsDAO(); 58 SearchSettings settings = settingsDao.findByPrimaryKey(username); 59 String repres = settings.getRepresentation(); 60 String page = request.getParameter("page"); 61 String 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 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 lang = (String )session.getAttribute("language"); 74 Vector pageVect = opt.getPageVect(); 75 Integer resultStart = (Integer )pageVect.get(p-1); 76 opt.setResultStart(resultStart.intValue()); 77 Collection result = search.search(opt, lang); 78 request.setAttribute("options", opt); 79 request.setAttribute("hits", new Integer (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 (s)); 87 request.setAttribute("pages", new Integer (ps)); 88 request.setAttribute("hpp", new Integer (h)); 89 request.setAttribute("pg", new Integer (Integer.parseInt(page))); 90 } else { 91 errors.add(ActionErrors.GLOBAL_ERROR, new ActionError("errors.nosearch")); 92 request.setAttribute("pages", new Integer (0)); 93 request.setAttribute("hpp", new Integer (0)); 94 request.setAttribute("pg", new Integer (0)); 95 } 96 if (repres.equals("text")) { 97 actionForward = mapping.findForward("resulttext"); 99 } else { 100 request.setAttribute("doccount", new Integer (result.size())); 102 103 Collection keywords = new TermSelector().getTopTerms(result, 10); 105 request.setAttribute("keywords", keywords); 106 request.setAttribute("kwcount", new Integer (keywords.size())); 107 request.setAttribute("edgecount", new Integer (EdgeCounter.count(keywords))); 108 request.setAttribute("elements", new Integer (20)); 109 request.setAttribute("screensize", new Integer (settings.getScreenSize())); 110 actionForward = mapping.findForward("resultgraph"); 111 } 112 } catch (Exception 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 |