[Yanel-commits] rev 43988 - public/yanel/trunk/src/contributions/resources/search/src/java/org/wyona/yanel/impl/resources/search

michi at wyona.com michi at wyona.com
Wed Aug 5 09:34:41 CEST 2009


Author: michi
Date: 2009-08-05 09:34:41 +0200 (Wed, 05 Aug 2009)
New Revision: 43988

Modified:
   public/yanel/trunk/src/contributions/resources/search/src/java/org/wyona/yanel/impl/resources/search/SearchResource.java
Log:
check query, domain site search added, stativ variable names introduced

Modified: public/yanel/trunk/src/contributions/resources/search/src/java/org/wyona/yanel/impl/resources/search/SearchResource.java
===================================================================
--- public/yanel/trunk/src/contributions/resources/search/src/java/org/wyona/yanel/impl/resources/search/SearchResource.java	2009-08-05 07:26:13 UTC (rev 43987)
+++ public/yanel/trunk/src/contributions/resources/search/src/java/org/wyona/yanel/impl/resources/search/SearchResource.java	2009-08-05 07:34:41 UTC (rev 43988)
@@ -25,11 +25,15 @@
     
     private static Logger log = Logger.getLogger(SearchResource.class);
 
+    private static String PROVIDER_NAME = "provider";
+    private static String QUERY_NAME = "q";
+    private static String DOMAIN_NAME = "domain";
+
     /**
      * @see org.wyona.yanel.core.api.attributes.ViewableV2#getView(String)
      */
     public View getView(String viewId) throws Exception {
-        String provider = getRequest().getParameter("provider");
+        String provider = getRequest().getParameter(PROVIDER_NAME);
         if (provider != null && !provider.equals("yanel")) {
             ExternalSearchProvider esp = getExternalSearchProvider(provider);
             if (esp != null) {
@@ -38,8 +42,13 @@
 
                 javax.servlet.http.HttpServletResponse response = getResponse();
                 response.setStatus(307);
-                String query = getRequest().getParameter("q");
-                response.setHeader("Location", esp.getURL() + query);
+
+                String query = getRequest().getParameter(QUERY_NAME);
+                String domain = getRequest().getParameter(DOMAIN_NAME);
+                String site="";
+                if (domain != null) site = "+site:" + domain; // TODO: This will work for Google and bing, but is this true for all search engines?
+                response.setHeader("Location", esp.getURL() + query + site);
+
                 return view;
             }
         }
@@ -56,9 +65,9 @@
         StringBuilder sb = new StringBuilder("<?xml version=\"1.0\"?>");
         sb.append("<y:search xmlns:y=\"http://www.wyona.org/yanel/search/1.0\">");
 
-        String query = getRequest().getParameter("q");
-        String provider = getRequest().getParameter("provider");
-        if (query != null) {
+        String query = getRequest().getParameter(QUERY_NAME);
+        String provider = getRequest().getParameter(PROVIDER_NAME);
+        if (query != null && query.length() > 0) {
             sb.append("<y:query>" + query + "</y:query>");
             try {
                 Result[] results;
@@ -98,6 +107,8 @@
                 log.error(e, e);
                 sb.append("<y:exception>" + e.getMessage() + "</y:exception>");
             }
+        } else {
+            sb.append("<y:no-query/>");
         }
         sb.append("</y:search>");
         return new ByteArrayInputStream(sb.toString().getBytes());
@@ -107,16 +118,21 @@
      *
      */
     private Result[] getLocalResults(String query) throws Exception {
-        org.wyona.yarep.core.Node[] nodes = getRealm().getRepository().getSearcher().search(query);
-        if (nodes != null && nodes.length > 0) {
-            Result[] results = new Result[nodes.length];
-            for (int i = 0; i < nodes.length; i++) {
-                results[i] = new Result(nodes[i].getPath(), null, null, nodes[i].getMimeType());
+        if (query != null && query.length() > 0) {
+            org.wyona.yarep.core.Node[] nodes = getRealm().getRepository().getSearcher().search(query);
+            if (nodes != null && nodes.length > 0) {
+                Result[] results = new Result[nodes.length];
+                for (int i = 0; i < nodes.length; i++) {
+                    results[i] = new Result(nodes[i].getPath(), null, null, nodes[i].getMimeType());
+                }
+                return results;
+            } else {
+               log.info("Nothing found for query: " + query);
+                return new Result[0];
             }
-            return results;
-        } else {
-            return new Result[0];
         }
+        log.warn("No query specified!");
+        return new Result[0];
     }
 
     /**



More information about the Yanel-commits mailing list