View Javadoc

1   package net.sf.cantina.system;
2   
3   import net.sf.cantina.ListIterator;
4   import net.sf.cantina.SearchEngine;
5   import net.sf.cantina.webgui.StrutsAction;
6   import org.apache.log4j.Logger;
7   import org.apache.struts.action.*;
8   import org.apache.struts.validator.DynaValidatorActionForm;
9   
10  import javax.servlet.http.HttpServletRequest;
11  import javax.servlet.http.HttpServletResponse;
12  
13  /***
14   * @author Stephane JAIS
15   */
16  public class SearchDocumentContentAction
17    extends StrutsAction
18  {
19    private static final Logger logger = Logger.getLogger(SearchDocumentContentAction.class);
20  
21    public ActionForward execute(ActionMapping mapping,
22                                 ActionForm form,
23                                 HttpServletRequest request,
24                                 HttpServletResponse response)
25      throws Exception
26    {
27  
28      ActionMessages messages = new ActionMessages();
29      DynaValidatorActionForm dynaform = (DynaValidatorActionForm)form;
30      ActionErrors errors = new ActionErrors();
31      ListIterator result = SearchEngine.getInstance().searchDocuments(
32        constructQuery(dynaform)
33      );
34      if (result.getSize() == 0)
35      {
36        messages.add("query",new ActionMessage("no.results"));
37        saveMessages(request,messages);
38        return mapping.findForward(MAPPING_INPUT);
39      }
40      saveInSession(request,result);
41      return mapping.findForward(MAPPING_SUCCESS);
42    }
43  
44    public static String constructQuery(DynaValidatorActionForm form)
45    {
46      StringBuffer result = new StringBuffer();
47      result.append(form.get("query"));
48  
49      if (!nullOrEmpty((String)form.get("realmName")))
50        result.append(" +realm:"+form.get("realmName"));
51  
52      if (!nullOrEmpty((String)form.get("locale")))
53        result.append(" +locale:"+form.get("locale"));
54      logger.debug("Generated query ["+result+"]");
55      return result.toString();
56    }
57  
58    public static boolean nullOrEmpty(String s)
59    {
60      return (s == null) || (s.length()==0);
61    }
62  }
63