You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@roller.apache.org by sn...@apache.org on 2006/03/17 23:13:34 UTC

svn commit: r386740 - in /incubator/roller/trunk: src/org/roller/presentation/search/SearchAction.java src/org/roller/presentation/search/SearchResultsPageModel.java src/org/roller/presentation/search/SearchServlet.java web/theme/searchResults.jsp

Author: snoopdave
Date: Fri Mar 17 14:13:33 2006
New Revision: 386740

URL: http://svn.apache.org/viewcvs?rev=386740&view=rev
Log:
Fix for ROL-1086, fixes to search model and site wide search JSP

Modified:
    incubator/roller/trunk/src/org/roller/presentation/search/SearchAction.java
    incubator/roller/trunk/src/org/roller/presentation/search/SearchResultsPageModel.java
    incubator/roller/trunk/src/org/roller/presentation/search/SearchServlet.java
    incubator/roller/trunk/web/theme/searchResults.jsp

Modified: incubator/roller/trunk/src/org/roller/presentation/search/SearchAction.java
URL: http://svn.apache.org/viewcvs/incubator/roller/trunk/src/org/roller/presentation/search/SearchAction.java?rev=386740&r1=386739&r2=386740&view=diff
==============================================================================
--- incubator/roller/trunk/src/org/roller/presentation/search/SearchAction.java (original)
+++ incubator/roller/trunk/src/org/roller/presentation/search/SearchAction.java Fri Mar 17 14:13:33 2006
@@ -48,7 +48,7 @@
             HttpServletResponse response,
             ActionMapping mapping) throws RollerException, IOException {        
             super(titleKey, request, response, mapping);
-            setSearchModel(new SearchResultsPageModel(request));
+            setSearchModel(new SearchResultsPageModel(request, false));
         }
 
         public SearchResultsPageModel getSearchModel() {

Modified: incubator/roller/trunk/src/org/roller/presentation/search/SearchResultsPageModel.java
URL: http://svn.apache.org/viewcvs/incubator/roller/trunk/src/org/roller/presentation/search/SearchResultsPageModel.java?rev=386740&r1=386739&r2=386740&view=diff
==============================================================================
--- incubator/roller/trunk/src/org/roller/presentation/search/SearchResultsPageModel.java (original)
+++ incubator/roller/trunk/src/org/roller/presentation/search/SearchResultsPageModel.java Fri Mar 17 14:13:33 2006
@@ -26,6 +26,7 @@
 import org.roller.model.RollerFactory;
 import org.roller.model.UserManager;
 import org.roller.model.WeblogManager;
+import org.roller.pojos.WeblogEntryComparator;
 import org.roller.pojos.WeblogEntryData;
 import org.roller.pojos.WeblogEntryWrapperComparator;
 import org.roller.pojos.WebsiteData;
@@ -51,6 +52,7 @@
     private Set      categories = new TreeSet();
     private boolean  websiteSpecificSearch = false;
     private String   errorMessage = null;
+    private boolean  useWrappers = false;
     
     /* How many results to display */
     private static int LIMIT = 10;
@@ -63,7 +65,8 @@
     private static ResourceBundle bundle = 
         ResourceBundle.getBundle("ApplicationResources");          
 
-    public SearchResultsPageModel(HttpServletRequest request) {        
+    public SearchResultsPageModel(HttpServletRequest request, boolean wrappers) { 
+        useWrappers = wrappers;
         try {            
             RollerRequest rreq = RollerRequest.getRollerRequest(request);
             setWebsiteSpecificSearch(checkForWebsite(request));
@@ -193,15 +196,34 @@
             
             // maybe null if search result returned inactive user
             // or entry's user is not the requested user.
-            if (entry != null) {
-                addToSearchResults(searchResults, WeblogEntryDataWrapper.wrap(entry));
-            }
+            if (entry != null && useWrappers) {
+                addEntryWrapperToSearchResults(searchResults, WeblogEntryDataWrapper.wrap(entry));
+            } 
+            else if (entry != null && !useWrappers) {
+                addEntryToSearchResults(searchResults, entry);
+            } 
         }
         rreq.getRequest().setAttribute("categories", categories);
         return searchResults;
     }
     
-    private void addToSearchResults(
+    private void addEntryToSearchResults(
+            TreeMap searchResults, WeblogEntryData entry) {
+        // convert entry's each date to midnight (00m 00h 00s)
+        Date midnight = DateUtil.getStartOfDay( entry.getPubTime() );
+        
+        // ensure we do not get duplicates from Lucene by
+        // using a Set Collection.  Entries sorted by pubTime.
+        TreeSet set = (TreeSet) searchResults.get(midnight);
+        if (set == null) {
+            // date is not mapped yet, so we need a new Set
+            set = new TreeSet( new WeblogEntryComparator() );
+            searchResults.put(midnight, set);
+        }
+        set.add(entry);
+    }
+    
+    private void addEntryWrapperToSearchResults(
             TreeMap searchResults, WeblogEntryDataWrapper entry) {
         // convert entry's each date to midnight (00m 00h 00s)
         Date midnight = DateUtil.getStartOfDay( entry.getPubTime() );

Modified: incubator/roller/trunk/src/org/roller/presentation/search/SearchServlet.java
URL: http://svn.apache.org/viewcvs/incubator/roller/trunk/src/org/roller/presentation/search/SearchServlet.java?rev=386740&r1=386739&r2=386740&view=diff
==============================================================================
--- incubator/roller/trunk/src/org/roller/presentation/search/SearchServlet.java (original)
+++ incubator/roller/trunk/src/org/roller/presentation/search/SearchServlet.java Fri Mar 17 14:13:33 2006
@@ -52,36 +52,10 @@
         
         // search model executes search, makes results available to page
         SearchResultsPageModel model = 
-            new SearchResultsPageModel(rreq.getRequest());
+            new SearchResultsPageModel(rreq.getRequest(), true);
         ctx.put("searchResults", model);
         return super.prepareForPageExecution(ctx, rreq, response, page);
     }
-        
-    /**
-     * If this is not a user-specific search, we need to display the
-     * "generic" search results list.
-     */
-    private Template generalSearchResults(
-            HttpServletRequest request, 
-            HttpServletResponse response, Context ctx) {
-        Template outty = null;
-        Exception pageException = null;
-        try {
-            ContextLoader.setupContext(
-                ctx, RollerRequest.getRollerRequest(request), response );
-            outty = getTemplate( "searchresults.vm", "UTF-8" );
-        } catch (Exception e) {
-            pageException = e;
-            response.setStatus( HttpServletResponse.SC_INTERNAL_SERVER_ERROR );
-        }
-        
-        if (pageException != null) {
-            mLogger.error("EXCEPTION: in RollerServlet", pageException);
-            request.setAttribute("DisplayException", pageException);
-        }
-        return outty;
-    }
-    
 }
 
 

Modified: incubator/roller/trunk/web/theme/searchResults.jsp
URL: http://svn.apache.org/viewcvs/incubator/roller/trunk/web/theme/searchResults.jsp?rev=386740&r1=386739&r2=386740&view=diff
==============================================================================
--- incubator/roller/trunk/web/theme/searchResults.jsp (original)
+++ incubator/roller/trunk/web/theme/searchResults.jsp Fri Mar 17 14:13:33 2006
@@ -1,18 +1,18 @@
 <%@ include file="/taglibs.jsp" %>
 
 <%
-org.roller.presentation.search.SearchAction.PageModel pageModel =
+org.roller.presentation.search.SearchAction.PageModel model =
    (org.roller.presentation.search.SearchAction.PageModel)
       request.getAttribute("model");       
 org.roller.presentation.search.SearchResultsPageModel searchResults =
-    pageModel.getSearchModel();
+    model.getSearchModel();
 request.setAttribute("searchResults", searchResults);
 %>
 
 <%-- Display the search pager --%>
     
 <c:choose>
-   <c:when test="${empty pageModel.website}">
+   <c:when test="${empty model.website}">
       <c:set var="siteText" value="this site" />
    </c:when>
    <c:otherwise>
@@ -42,12 +42,12 @@
        <fmt:param value="${searchResults.hits}" />
     </fmt:message>    
     <c:url var="googleUrl" 
-         value="http://google.com/search?q=${searchResults.term}%20site:${pageModel.baseURL}" />    
+         value="http://google.com/search?q=${searchResults.term}%20site:${model.baseURL}" />    
     <a href='<c:out value="${googleUrl}" />'
         class="google"><fmt:message key="macro.searchresults.hits_2" /></a>
 
     <%-- Form to search again --%>
-    <form method="get" action='<c:out value="${pageModel.baseURL}" />/sitesearch.do'
+    <form method="get" action='<c:out value="${model.baseURL}" />/sitesearch.do'
         style="margin: 5px">
         <input type="text" id="q" name="q" size="31"
             maxlength="255" value='<c:out value="${searchResults.term}" />'
@@ -105,14 +105,14 @@
         <div class="daybox" style="margin: 0px 5px 0px 10px">
         <c:forEach var="post" items="${dayMap}">
 
-            <a href='<c:out value="${pageModel.baseURL}" /><c:out value="${post.permaLink}" />' class="entryTitle">
+            <a href='<c:out value="${model.baseURL}" /><c:out value="${post.permaLink}" />' class="entryTitle">
                 <str:truncateNicely upper="90" >
                    <c:out value="${post.displayTitle}" />
                 </str:truncateNicely></a>
             </a><br />
 
             <span class="entryDetails">
-                <a href='<c:out value="${pageModel.baseURL}" />/page/<c:out value="${post.website.handle}" />'>
+                <a href='<c:out value="${model.baseURL}" />/page/<c:out value="${post.website.handle}" />'>
                 <str:truncateNicely upper="50" >
                    <c:out value="${post.website.name}" />
                 </str:truncateNicely></a> |