Author: snoopdave
Date: Mon Aug 19 12:43:54 2013
New Revision: 1515390

URL: http://svn.apache.org/r1515390
Log:
Rolling back changes because the included more than what I wanted

Modified:
    
roller/branches/roller_5.0/weblogger-web/src/main/java/org/apache/roller/weblogger/ui/rendering/model/SearchResultsFeedModel.java
    
roller/branches/roller_5.0/weblogger-web/src/main/java/org/apache/roller/weblogger/ui/rendering/model/SearchResultsModel.java

Modified: 
roller/branches/roller_5.0/weblogger-web/src/main/java/org/apache/roller/weblogger/ui/rendering/model/SearchResultsFeedModel.java
URL: 
http://svn.apache.org/viewvc/roller/branches/roller_5.0/weblogger-web/src/main/java/org/apache/roller/weblogger/ui/rendering/model/SearchResultsFeedModel.java?rev=1515390&r1=1515389&r2=1515390&view=diff
==============================================================================
--- 
roller/branches/roller_5.0/weblogger-web/src/main/java/org/apache/roller/weblogger/ui/rendering/model/SearchResultsFeedModel.java
 (original)
+++ 
roller/branches/roller_5.0/weblogger-web/src/main/java/org/apache/roller/weblogger/ui/rendering/model/SearchResultsFeedModel.java
 Mon Aug 19 12:43:54 2013
@@ -26,25 +26,23 @@ import java.util.List;
 import java.util.Map;
 import java.util.Set;
 import java.util.TreeSet;
-import org.apache.commons.lang.StringEscapeUtils;
 
 import org.apache.commons.lang.StringUtils;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.apache.lucene.document.Document;
-import org.apache.lucene.search.ScoreDoc;
-import org.apache.lucene.search.TopFieldDocs;
+import org.apache.lucene.search.Hits;
 import org.apache.roller.weblogger.WebloggerException;
 import org.apache.roller.weblogger.business.URLStrategy;
-import org.apache.roller.weblogger.business.WeblogEntryManager;
 import org.apache.roller.weblogger.business.Weblogger;
 import org.apache.roller.weblogger.business.WebloggerFactory;
+import org.apache.roller.weblogger.business.WeblogEntryManager;
 import org.apache.roller.weblogger.business.search.FieldConstants;
 import org.apache.roller.weblogger.business.search.IndexManager;
 import org.apache.roller.weblogger.business.search.operations.SearchOperation;
 import org.apache.roller.weblogger.config.WebloggerRuntimeConfig;
-import org.apache.roller.weblogger.pojos.Weblog;
 import org.apache.roller.weblogger.pojos.WeblogEntry;
+import org.apache.roller.weblogger.pojos.Weblog;
 import org.apache.roller.weblogger.pojos.wrapper.WeblogCategoryWrapper;
 import org.apache.roller.weblogger.pojos.wrapper.WeblogEntryWrapper;
 import org.apache.roller.weblogger.pojos.wrapper.WeblogWrapper;
@@ -52,252 +50,225 @@ import org.apache.roller.weblogger.ui.re
 import org.apache.roller.weblogger.ui.rendering.pagers.SearchResultsFeedPager;
 import org.apache.roller.weblogger.ui.rendering.util.WeblogFeedRequest;
 import org.apache.roller.weblogger.ui.rendering.util.WeblogRequest;
-import org.apache.roller.weblogger.util.Utilities;
+
 
 /**
- * Extends normal page renderer model to represent search results for Atom
- * feeds.
- * 
+ * Extends normal page renderer model to represent search results for Atom 
feeds.
+ *
  * Also adds some new methods which are specific only to search results.
  */
 public class SearchResultsFeedModel implements Model {
 
-       private static Log log = 
LogFactory.getLog(SearchResultsFeedModel.class);
-
-       private WeblogFeedRequest feedRequest = null;
-       private URLStrategy urlStrategy = null;
-       private Weblog weblog = null;
-
-       // the pager used by the 3.0+ rendering system
-       private SearchResultsFeedPager pager = null;
-
-       private List results = new LinkedList();
-
-       private Set categories = new TreeSet();
-
-       private boolean websiteSpecificSearch = true;
-
-       private int hits = 0;
-       private int offset = 0;
-       private int limit = 0;
-
-       private int entryCount = 0;
-
-       public String getModelName() {
-               return "model";
-       }
-
-       public void init(Map initData) throws WebloggerException {
-
-               // we expect the init data to contain a weblogRequest object
-               WeblogRequest weblogRequest = (WeblogRequest) initData
-                               .get("parsedRequest");
-               if (weblogRequest == null) {
-                       throw new WebloggerException(
-                                       "expected weblogRequest from init 
data");
-               }
-
-               if (weblogRequest instanceof WeblogFeedRequest) {
-                       this.feedRequest = (WeblogFeedRequest) weblogRequest;
-               } else {
-                       throw new WebloggerException(
-                                       "weblogRequest is not a 
WeblogFeedRequest."
-                                                       + "  FeedModel only 
supports feed requests.");
-               }
-
-               // look for url strategy
-               urlStrategy = (URLStrategy) initData.get("urlStrategy");
-               if (urlStrategy == null) {
-                       urlStrategy = 
WebloggerFactory.getWeblogger().getUrlStrategy();
-               }
-
-               // extract weblog object
-               weblog = feedRequest.getWeblog();
-
-               String pagerUrl = urlStrategy.getWeblogFeedURL(weblog,
-                               feedRequest.getLocale(), feedRequest.getType(),
-                               feedRequest.getFormat(), null, null, /*
-                                                                               
                         * cat and term are null but
-                                                                               
                         * added to the url in the
-                                                                               
                         * pager
-                                                                               
                         */
-                               null, false, true);
-
-               // if there is no query, then we are done
-               if (feedRequest.getTerm() == null) {
-                       pager = new SearchResultsFeedPager(urlStrategy, 
pagerUrl,
-                                       feedRequest.getPage(), feedRequest, 
results, false);
-                       return;
-               }
-
-               this.entryCount = WebloggerRuntimeConfig
-                               
.getIntProperty("site.newsfeeds.defaultEntries");
-
-               // setup the search
-               IndexManager indexMgr = WebloggerFactory.getWeblogger()
-                               .getIndexManager();
-
-               SearchOperation search = new SearchOperation(indexMgr);
-               search.setTerm(feedRequest.getTerm());
-
-               if (WebloggerRuntimeConfig.isSiteWideWeblog(feedRequest
-                               .getWeblogHandle())) {
-                       this.websiteSpecificSearch = false;
-               } else {
-                       search.setWebsiteHandle(feedRequest.getWeblogHandle());
-               }
-
-               if 
(StringUtils.isNotEmpty(feedRequest.getWeblogCategoryName())) {
-                       search.setCategory(feedRequest.getWeblogCategoryName());
-               }
-
-               // execute search
-               indexMgr.executeIndexOperationNow(search);
-
-               if (search.getResultsCount() > -1) {
-
-                       TopFieldDocs docs = search.getResults();
-                       ScoreDoc[] hits = docs.scoreDocs;
-                       this.hits = search.getResultsCount();
-
-                       // Convert the Hits into WeblogEntryData instances.
-                       convertHitsToEntries(hits, search);
-               }
-
-               // search completed, setup pager based on results
-               pager = new SearchResultsFeedPager(urlStrategy, pagerUrl,
-                               feedRequest.getPage(), feedRequest, results,
-                               (hits > (offset + limit)));
-       }
-
-       public Pager getSearchResultsPager() {
-               return pager;
-       }
-
-       /**
-        * Convert hits to entries.
-        * 
-        * @param hits
-        *            the hits
-        * @param search
-        *            the search
-        * @throws WebloggerException
-        *             the weblogger exception
-        */
-       private void convertHitsToEntries(ScoreDoc[] hits, SearchOperation 
search)
-                       throws WebloggerException {
-
-               // determine offset
-               this.offset = feedRequest.getPage() * this.entryCount;
-               if (this.offset >= hits.length) {
-                       this.offset = 0;
-               }
-
-               // determine limit
-               this.limit = this.entryCount;
-               if (this.offset + this.limit > hits.length) {
-                       this.limit = hits.length - this.offset;
-               }
-
-               try {
-                       TreeSet categories = new TreeSet();
-                       Weblogger roller = WebloggerFactory.getWeblogger();
-                       WeblogEntryManager weblogMgr = 
roller.getWeblogEntryManager();
-
-                       WeblogEntry entry = null;
-                       Document doc = null;
-                       String handle = null;
-                       Timestamp now = new Timestamp(new Date().getTime());
-                       for (int i = offset; i < offset + limit; i++) {
-
-                               entry = null; // reset for each iteration
-
-                               doc = search.getSearcher().doc(hits[i].doc);
-                               handle = 
doc.getField(FieldConstants.WEBSITE_HANDLE)
-                                               .stringValue();
-
-                               if (websiteSpecificSearch
-                                               && 
handle.equals(feedRequest.getWeblogHandle())) {
-
-                                       entry = 
weblogMgr.getWeblogEntry(doc.getField(
-                                                       
FieldConstants.ID).stringValue());
-                               } else {
-
-                                       entry = 
weblogMgr.getWeblogEntry(doc.getField(
-                                                       
FieldConstants.ID).stringValue());
-
-                                       if 
(doc.getField(FieldConstants.CATEGORY) != null) {
-                                               
categories.add(doc.getField(FieldConstants.CATEGORY)
-                                                               .stringValue());
-                                       }
-                               }
-
-                               // maybe null if search result returned 
inactive user
-                               // or entry's user is not the requested user.
-                               // but don't return future posts
-                               if (entry != null && 
entry.getPubTime().before(now)) {
-                                       
results.add(WeblogEntryWrapper.wrap(entry, urlStrategy));
-                               }
-                       }
-
-                       if (categories.size() > 0) {
-                               this.categories = categories;
-                       }
-               } catch (IOException e) {
-                       throw new WebloggerException(e);
-               }
-       }
-
-       /**
-        * Get weblog being displayed.
-        */
-       public WeblogWrapper getWeblog() {
-               return WeblogWrapper.wrap(weblog, urlStrategy);
-       }
-
-       public String getTerm() {
-               String query =feedRequest.getTerm() ;
-               return (query == null) 
-                       ? "" : 
StringEscapeUtils.escapeXml(Utilities.escapeHTML(query));
-       }
-
-       public int getHits() {
-               return hits;
-       }
-
-       public int getOffset() {
-               return offset;
-       }
-
-       public int getPage() {
-               return feedRequest.getPage();
-       }
-
-       public int getLimit() {
-               return limit;
-       }
-
-       public List getResults() {
-               return results;
-       }
-
-       public Set getCategories() {
-               return categories;
-       }
-
-       public boolean isWebsiteSpecificSearch() {
-               return websiteSpecificSearch;
-       }
-
-       public String getCategoryPath() {
-               return feedRequest.getWeblogCategoryName();
-       }
-
-       public WeblogCategoryWrapper getWeblogCategory() {
-               if (feedRequest.getWeblogCategory() != null) {
-                       return 
WeblogCategoryWrapper.wrap(feedRequest.getWeblogCategory(),
-                                       urlStrategy);
-               }
-               return null;
-       }
-}
\ No newline at end of file
+    private static Log log = LogFactory.getLog(SearchResultsFeedModel.class);
+    
+    private WeblogFeedRequest feedRequest = null;
+    private URLStrategy urlStrategy = null;
+    private Weblog weblog = null;
+        
+    // the pager used by the 3.0+ rendering system
+    private SearchResultsFeedPager pager = null;
+    
+    private List results = new LinkedList();
+    
+    private Set categories = new TreeSet();
+
+    private boolean websiteSpecificSearch = true;
+
+    private int hits = 0;
+    private int offset = 0;
+    private int limit = 0;
+    
+    private int entryCount = 0;
+
+
+    public String getModelName() {
+        return "model";
+    }
+
+    
+    public void init(Map initData) throws WebloggerException {
+        
+        // we expect the init data to contain a weblogRequest object
+        WeblogRequest weblogRequest = (WeblogRequest) 
initData.get("parsedRequest");
+        if(weblogRequest == null) {
+            throw new WebloggerException("expected weblogRequest from init 
data");
+        }
+        
+        if(weblogRequest instanceof WeblogFeedRequest) {
+            this.feedRequest = (WeblogFeedRequest) weblogRequest;
+        } else {
+            throw new WebloggerException("weblogRequest is not a 
WeblogFeedRequest."+
+                    "  FeedModel only supports feed requests.");
+        }
+        
+        // look for url strategy
+        urlStrategy = (URLStrategy) initData.get("urlStrategy");
+        if(urlStrategy == null) {
+            urlStrategy = WebloggerFactory.getWeblogger().getUrlStrategy();
+        }
+        
+        // extract weblog object
+        weblog = feedRequest.getWeblog();
+        
+        String  pagerUrl = urlStrategy.getWeblogFeedURL(weblog, 
+                feedRequest.getLocale(), feedRequest.getType(),
+                feedRequest.getFormat(), null, null, /* cat and term are null 
but added to the url in the pager */
+                null, false, true);
+        
+        // if there is no query, then we are done
+        if(feedRequest.getTerm() == null) {
+            pager = new SearchResultsFeedPager(urlStrategy, pagerUrl, 
feedRequest.getPage(),
+                    feedRequest, results, false);
+            return;
+        }
+        
+        this.entryCount = 
WebloggerRuntimeConfig.getIntProperty("site.newsfeeds.defaultEntries");
+        
+        // setup the search
+        IndexManager indexMgr = 
WebloggerFactory.getWeblogger().getIndexManager();
+        
+        SearchOperation search = new SearchOperation(indexMgr);
+        search.setTerm(feedRequest.getTerm());
+        
+        
if(WebloggerRuntimeConfig.isSiteWideWeblog(feedRequest.getWeblogHandle())) {
+            this.websiteSpecificSearch  = false;
+        } else {
+            search.setWebsiteHandle(feedRequest.getWeblogHandle());
+        }
+        
+        if(StringUtils.isNotEmpty(feedRequest.getWeblogCategoryName())) {
+            search.setCategory(feedRequest.getWeblogCategoryName());
+        }
+        
+        // execute search
+        indexMgr.executeIndexOperationNow(search);
+        
+        if (search.getResultsCount() > -1) {
+            Hits hits = search.getResults();
+            this.hits = search.getResultsCount();
+            
+            // Convert the Hits into WeblogEntryData instances.
+            convertHitsToEntries(hits);
+        }
+        
+        // search completed, setup pager based on results
+        pager = new SearchResultsFeedPager(urlStrategy, pagerUrl, 
feedRequest.getPage(),
+                feedRequest, results, (hits > (offset+limit)));
+    }
+    
+    public Pager getSearchResultsPager() {
+        return pager;
+    }
+    
+    private void convertHitsToEntries(Hits hits) throws WebloggerException {
+        
+        // determine offset
+        this.offset = feedRequest.getPage() * this.entryCount;
+        if(this.offset >= hits.length()) {
+            this.offset = 0;
+        }
+        
+        // determine limit
+        this.limit = this.entryCount;
+        if(this.offset + this.limit > hits.length()) {
+            this.limit = hits.length() - this.offset;
+        }
+        
+        try {
+            TreeSet categories = new TreeSet();
+            Weblogger roller = WebloggerFactory.getWeblogger();
+            WeblogEntryManager weblogMgr = roller.getWeblogEntryManager();
+            
+            WeblogEntry entry = null;
+            Document doc = null;
+            String handle = null;
+            Timestamp now = new Timestamp(new Date().getTime());
+            for(int i = offset; i < offset+limit; i++) {
+                
+                entry = null; // reset for each iteration
+                
+                doc = hits.doc(i);
+                handle = 
doc.getField(FieldConstants.WEBSITE_HANDLE).stringValue();
+                
+                if(websiteSpecificSearch &&
+                        handle.equals(feedRequest.getWeblogHandle())) {
+                    
+                    entry = weblogMgr.getWeblogEntry(
+                            doc.getField(FieldConstants.ID).stringValue());
+                } else {
+                    
+                    entry = weblogMgr.getWeblogEntry(
+                            doc.getField(FieldConstants.ID).stringValue());
+                    
+                    if (doc.getField(FieldConstants.CATEGORY) != null) {
+                        categories.add(
+                                
doc.getField(FieldConstants.CATEGORY).stringValue());
+                    }
+                }
+                
+                // maybe null if search result returned inactive user
+                // or entry's user is not the requested user.
+                // but don't return future posts
+                if (entry != null && entry.getPubTime().before(now)) {
+                    results.add(WeblogEntryWrapper.wrap(entry, urlStrategy));
+                }
+            }
+            
+            if(categories.size() > 0) {
+                this.categories = categories;
+            }
+        } catch(IOException e) {
+            throw new WebloggerException(e);
+        }
+    }
+    
+    /**
+     * Get weblog being displayed.
+     */
+    public WeblogWrapper getWeblog() {
+        return WeblogWrapper.wrap(weblog, urlStrategy);
+    }
+    
+    public String getTerm() {
+        return (feedRequest.getTerm() == null) ? "" : feedRequest.getTerm();
+    }
+
+    public int getHits() {
+        return hits;
+    }
+
+    public int getOffset() {
+        return offset;
+    }
+    
+    public int getPage() {
+        return feedRequest.getPage();
+    }
+
+    public int getLimit() {
+        return limit;
+    }
+
+    public List getResults() {
+        return results;
+    }
+
+    public Set getCategories() {
+        return categories;
+    }
+
+    public boolean isWebsiteSpecificSearch() {
+        return websiteSpecificSearch;
+    }   
+    
+    public String getCategoryPath() {
+        return feedRequest.getWeblogCategoryName();
+    }
+    
+    public WeblogCategoryWrapper getWeblogCategory() {
+        if(feedRequest.getWeblogCategory() != null) {
+            return WeblogCategoryWrapper.wrap(feedRequest.getWeblogCategory(), 
urlStrategy);
+        }
+        return null;
+    }    
+}

Modified: 
roller/branches/roller_5.0/weblogger-web/src/main/java/org/apache/roller/weblogger/ui/rendering/model/SearchResultsModel.java
URL: 
http://svn.apache.org/viewvc/roller/branches/roller_5.0/weblogger-web/src/main/java/org/apache/roller/weblogger/ui/rendering/model/SearchResultsModel.java?rev=1515390&r1=1515389&r2=1515390&view=diff
==============================================================================
--- 
roller/branches/roller_5.0/weblogger-web/src/main/java/org/apache/roller/weblogger/ui/rendering/model/SearchResultsModel.java
 (original)
+++ 
roller/branches/roller_5.0/weblogger-web/src/main/java/org/apache/roller/weblogger/ui/rendering/model/SearchResultsModel.java
 Mon Aug 19 12:43:54 2013
@@ -25,23 +25,19 @@ import java.util.Map;
 import java.util.Set;
 import java.util.TreeMap;
 import java.util.TreeSet;
-
 import org.apache.commons.collections.comparators.ReverseComparator;
-import org.apache.commons.lang.StringEscapeUtils;
 import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang.StringEscapeUtils;
 import org.apache.lucene.document.Document;
-import org.apache.lucene.search.ScoreDoc;
-import org.apache.lucene.search.TopFieldDocs;
-import org.apache.roller.util.DateUtil;
+import org.apache.lucene.search.Hits;
 import org.apache.roller.weblogger.WebloggerException;
-import org.apache.roller.weblogger.business.URLStrategy;
-import org.apache.roller.weblogger.business.WeblogEntryManager;
-import org.apache.roller.weblogger.business.Weblogger;
-import org.apache.roller.weblogger.business.WebloggerFactory;
 import org.apache.roller.weblogger.business.search.FieldConstants;
-import org.apache.roller.weblogger.business.search.IndexManager;
 import org.apache.roller.weblogger.business.search.operations.SearchOperation;
 import org.apache.roller.weblogger.config.WebloggerRuntimeConfig;
+import org.apache.roller.weblogger.business.search.IndexManager;
+import org.apache.roller.weblogger.business.Weblogger;
+import org.apache.roller.weblogger.business.WebloggerFactory;
+import org.apache.roller.weblogger.business.WeblogEntryManager;
 import org.apache.roller.weblogger.pojos.WeblogEntry;
 import org.apache.roller.weblogger.pojos.WeblogEntryWrapperComparator;
 import org.apache.roller.weblogger.pojos.wrapper.WeblogCategoryWrapper;
@@ -49,263 +45,240 @@ import org.apache.roller.weblogger.pojos
 import org.apache.roller.weblogger.ui.rendering.pagers.SearchResultsPager;
 import org.apache.roller.weblogger.ui.rendering.pagers.WeblogEntriesPager;
 import org.apache.roller.weblogger.ui.rendering.util.WeblogSearchRequest;
+import org.apache.roller.util.DateUtil;
+import org.apache.roller.weblogger.business.URLStrategy;
 import org.apache.roller.weblogger.util.I18nMessages;
 import org.apache.roller.weblogger.util.Utilities;
 
+
 /**
  * Extends normal page renderer model to represent search results.
- * 
+ *
  * Also adds some new methods which are specific only to search results.
  */
 public class SearchResultsModel extends PageModel {
-
-       public static final int RESULTS_PER_PAGE = 10;
-
-       // the original search request
-       WeblogSearchRequest searchRequest = null;
-       private URLStrategy urlStrategy = null;
-
-       // the actual search results mapped by Day -> Set of entries
-       private TreeMap results = new TreeMap(new ReverseComparator());
-
-       // the pager used by the 3.0+ rendering system
-       private SearchResultsPager pager = null;
-
-       private int hits = 0;
-       private int offset = 0;
-       private int limit = 0;
-       private Set categories = new TreeSet();
-       private boolean websiteSpecificSearch = true;
-       private String errorMessage = null;
-
-       public void init(Map initData) throws WebloggerException {
-
-               // we expect the init data to contain a searchRequest object
-               searchRequest = (WeblogSearchRequest) 
initData.get("searchRequest");
-               if (searchRequest == null) {
-                       throw new WebloggerException(
-                                       "expected searchRequest from init 
data");
-               }
-
-               // look for url strategy
-               urlStrategy = (URLStrategy) initData.get("urlStrategy");
-               if (urlStrategy == null) {
-                       urlStrategy = 
WebloggerFactory.getWeblogger().getUrlStrategy();
-               }
-
-               // let parent initialize
-               super.init(initData);
-
-               // if there is no query, then we are done
-               if (searchRequest.getQuery() == null) {
-                       pager = new SearchResultsPager(urlStrategy, 
searchRequest, results,
-                                       false);
-                       return;
-               }
-
-               // setup the search
-               IndexManager indexMgr = WebloggerFactory.getWeblogger()
-                               .getIndexManager();
-
-               SearchOperation search = new SearchOperation(indexMgr);
-               search.setTerm(searchRequest.getQuery());
-
-               if (WebloggerRuntimeConfig.isSiteWideWeblog(searchRequest
-                               .getWeblogHandle())) {
-                       this.websiteSpecificSearch = false;
-               } else {
-                       
search.setWebsiteHandle(searchRequest.getWeblogHandle());
-               }
-
-               if 
(StringUtils.isNotEmpty(searchRequest.getWeblogCategoryName())) {
-                       
search.setCategory(searchRequest.getWeblogCategoryName());
-               }
-
-               if (searchRequest.getLocale() != null) {
-                       search.setLocale(searchRequest.getLocale());
-               }
-
-               // execute search
-               indexMgr.executeIndexOperationNow(search);
-
-               if (search.getResultsCount() == -1) {
-                       // this means there has been a parsing (or IO) error
-                       this.errorMessage = I18nMessages.getMessages(
-                                       
searchRequest.getLocaleInstance()).getString(
-                                       "error.searchProblem");
-               } else {
-
-                       TopFieldDocs docs = search.getResults();
-                       ScoreDoc[] hits = docs.scoreDocs;
-                       this.hits = search.getResultsCount();
-
-                       // Convert the Hits into WeblogEntryData instances.
-                       convertHitsToEntries(hits, search);
-
-               }
-
-               // search completed, setup pager based on results
-               pager = new SearchResultsPager(urlStrategy, searchRequest, 
results,
-                               (hits > (offset + limit)));
-       }
-
-       /**
-        * Is this page showing search results?
-        */
-       public boolean isSearchResults() {
-               return true;
-       }
-
-       // override page model and return search results pager
-       public WeblogEntriesPager getWeblogEntriesPager() {
-               return pager;
-       }
-
-       // override page model and return search results pager
-       public WeblogEntriesPager getWeblogEntriesPager(String category) {
-               return pager;
-       }
-
-       /**
-        * Convert hits to entries.
-        * 
-        * @param hits
-        *            the hits
-        * @param search
-        *            the search
-        * @throws WebloggerException
-        *             the weblogger exception
-        */
-       private void convertHitsToEntries(ScoreDoc[] hits, SearchOperation 
search)
-                       throws WebloggerException {
-
-               // determine offset
-               this.offset = searchRequest.getPageNum() * RESULTS_PER_PAGE;
-               if (this.offset >= hits.length) {
-                       this.offset = 0;
-               }
-
-               // determine limit
-               this.limit = RESULTS_PER_PAGE;
-               if (this.offset + this.limit > hits.length) {
-                       this.limit = hits.length - this.offset;
-               }
-
-               try {
-                       TreeSet categories = new TreeSet();
-                       Weblogger roller = WebloggerFactory.getWeblogger();
-                       WeblogEntryManager weblogMgr = 
roller.getWeblogEntryManager();
-
-                       WeblogEntry entry = null;
-                       Document doc = null;
-                       String handle = null;
-                       Timestamp now = new Timestamp(new Date().getTime());
-                       for (int i = offset; i < offset + limit; i++) {
-
-                               entry = null; // reset for each iteration
-
-                               doc = search.getSearcher().doc(hits[i].doc);
-                               handle = 
doc.getField(FieldConstants.WEBSITE_HANDLE)
-                                               .stringValue();
-
-                               if (websiteSpecificSearch
-                                               && 
handle.equals(searchRequest.getWeblogHandle())) {
-
-                                       entry = 
weblogMgr.getWeblogEntry(doc.getField(
-                                                       
FieldConstants.ID).stringValue());
-                               } else {
-
-                                       entry = 
weblogMgr.getWeblogEntry(doc.getField(
-                                                       
FieldConstants.ID).stringValue());
-
-                                       if 
(doc.getField(FieldConstants.CATEGORY) != null) {
-                                               
categories.add(doc.getField(FieldConstants.CATEGORY)
-                                                               .stringValue());
-                                       }
-                               }
-
-                               // maybe null if search result returned 
inactive user
-                               // or entry's user is not the requested user.
-                               // but don't return future posts
-                               if (entry != null && 
entry.getPubTime().before(now)) {
-                                       
addEntryToResults(WeblogEntryWrapper.wrap(entry,
-                                                       urlStrategy));
-                               }
-                       }
-
-                       if (categories.size() > 0) {
-                               this.categories = categories;
-                       }
-               } catch (IOException e) {
-                       throw new WebloggerException(e);
-               }
-       }
-
-       private void addEntryToResults(WeblogEntryWrapper 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) this.results.get(midnight);
-               if (set == null) {
-                       // date is not mapped yet, so we need a new Set
-                       set = new TreeSet(new WeblogEntryWrapperComparator());
-                       this.results.put(midnight, set);
-               }
-               set.add(entry);
-       }
-
-       public String getTerm() {
-               String query = searchRequest.getQuery();
-               return (query == null) 
-                       ? "" : 
StringEscapeUtils.escapeXml(Utilities.escapeHTML(query));
-       }
-
-       public String getRawTerm() {
-               return (searchRequest.getQuery() == null) ? "" : searchRequest
-                               .getQuery();
-       }
-
-       public int getHits() {
-               return hits;
-       }
-
-       public int getOffset() {
-               return offset;
-       }
-
-       public int getLimit() {
-               return limit;
-       }
-
-       public TreeMap getResults() {
-               return results;
-       }
-
-       public Set getCategories() {
-               return categories;
-       }
-
-       public boolean isWebsiteSpecificSearch() {
-               return websiteSpecificSearch;
-       }
-
-       public String getErrorMessage() {
-               return errorMessage;
-       }
-
-       public String getWeblogCategoryName() {
-               return searchRequest.getWeblogCategoryName();
-       }
-
-       public WeblogCategoryWrapper getWeblogCategory() {
-               if (searchRequest.getWeblogCategory() != null) {
-                       return WeblogCategoryWrapper.wrap(
-                                       searchRequest.getWeblogCategory(), 
urlStrategy);
-               }
-               return null;
-       }
-
-}
\ No newline at end of file
+    
+    public static final int RESULTS_PER_PAGE = 10;
+    
+    
+    // the original search request
+    WeblogSearchRequest searchRequest = null;
+    private URLStrategy urlStrategy = null;
+    
+    // the actual search results mapped by Day -> Set of entries
+    private TreeMap results = new TreeMap(new ReverseComparator());
+    
+    // the pager used by the 3.0+ rendering system
+    private SearchResultsPager pager = null;
+    
+    private int hits = 0;
+    private int offset = 0;
+    private int limit = 0;
+    private Set categories = new TreeSet();
+    private boolean websiteSpecificSearch = true;
+    private String errorMessage = null;
+    
+    
+    public void init(Map initData) throws WebloggerException {
+        
+        // we expect the init data to contain a searchRequest object
+        searchRequest = (WeblogSearchRequest) initData.get("searchRequest");
+        if(searchRequest == null) {
+            throw new WebloggerException("expected searchRequest from init 
data");
+        }
+        
+        // look for url strategy
+        urlStrategy = (URLStrategy) initData.get("urlStrategy");
+        if(urlStrategy == null) {
+            urlStrategy = WebloggerFactory.getWeblogger().getUrlStrategy();
+        }
+        
+        // let parent initialize
+        super.init(initData);
+        
+        // if there is no query, then we are done
+        if(searchRequest.getQuery() == null) {
+            pager = new SearchResultsPager(urlStrategy, searchRequest, 
results, false);
+            return;
+        }
+        
+        // setup the search
+        IndexManager indexMgr = 
WebloggerFactory.getWeblogger().getIndexManager();
+        
+        SearchOperation search = new SearchOperation(indexMgr);
+        search.setTerm(searchRequest.getQuery());
+        
+        
if(WebloggerRuntimeConfig.isSiteWideWeblog(searchRequest.getWeblogHandle())) {
+            this.websiteSpecificSearch = false;
+        } else {
+            search.setWebsiteHandle(searchRequest.getWeblogHandle());
+        }
+        
+        if(StringUtils.isNotEmpty(searchRequest.getWeblogCategoryName())) {
+            search.setCategory(searchRequest.getWeblogCategoryName());
+        }
+        
+        // execute search
+        indexMgr.executeIndexOperationNow(search);
+        
+        if (search.getResultsCount() == -1) {
+            // this means there has been a parsing (or IO) error
+            this.errorMessage = 
I18nMessages.getMessages(searchRequest.getLocaleInstance()).getString("error.searchProblem");
+        } else {
+            Hits hits = search.getResults();
+            this.hits = search.getResultsCount();
+            
+            // Convert the Hits into WeblogEntryData instances.
+            convertHitsToEntries(hits);
+        }
+        
+        // search completed, setup pager based on results
+        pager = new SearchResultsPager(urlStrategy, searchRequest, results, 
(hits > (offset+limit)));
+    }
+    
+    /**
+     * Is this page showing search results?
+     */
+    public boolean isSearchResults() {
+        return true;
+    }
+    
+    // override page model and return search results pager
+    public WeblogEntriesPager getWeblogEntriesPager() {
+        return pager;
+    }
+    
+    // override page model and return search results pager
+    public WeblogEntriesPager getWeblogEntriesPager(String category) {
+        return pager;
+    }
+    
+    private void convertHitsToEntries(Hits hits) throws WebloggerException {
+        
+        // determine offset
+        this.offset = searchRequest.getPageNum() * RESULTS_PER_PAGE;
+        if(this.offset >= hits.length()) {
+            this.offset = 0;
+        }
+        
+        // determine limit
+        this.limit = RESULTS_PER_PAGE;
+        if(this.offset + this.limit > hits.length()) {
+            this.limit = hits.length() - this.offset;
+        }
+        
+        try {
+            TreeSet categories = new TreeSet();
+            Weblogger roller = WebloggerFactory.getWeblogger();
+            WeblogEntryManager weblogMgr = roller.getWeblogEntryManager();
+            
+            WeblogEntry entry = null;
+            Document doc = null;
+            String handle = null;
+            Timestamp now = new Timestamp(new Date().getTime());
+            for(int i = offset; i < offset+limit; i++) {
+                
+                entry = null; // reset for each iteration
+                
+                doc = hits.doc(i);
+                handle = 
doc.getField(FieldConstants.WEBSITE_HANDLE).stringValue();
+                
+                if(websiteSpecificSearch &&
+                        handle.equals(searchRequest.getWeblogHandle())) {
+                    
+                    entry = weblogMgr.getWeblogEntry(
+                            doc.getField(FieldConstants.ID).stringValue());
+                } else {
+                    
+                    entry = weblogMgr.getWeblogEntry(
+                            doc.getField(FieldConstants.ID).stringValue());
+                    
+                    if (doc.getField(FieldConstants.CATEGORY) != null) {
+                        categories.add(
+                                
doc.getField(FieldConstants.CATEGORY).stringValue());
+                    }
+                }
+                
+                // maybe null if search result returned inactive user
+                // or entry's user is not the requested user.
+                // but don't return future posts
+                if (entry != null && entry.getPubTime().before(now)) {
+                    addEntryToResults(WeblogEntryWrapper.wrap(entry, 
urlStrategy));
+                }
+            }
+            
+            if(categories.size() > 0) {
+                this.categories = categories;
+            }
+        } catch(IOException e) {
+            throw new WebloggerException(e);
+        }
+    }
+    
+    
+    private void addEntryToResults(WeblogEntryWrapper 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) this.results.get(midnight);
+        if (set == null) {
+            // date is not mapped yet, so we need a new Set
+            set = new TreeSet( new WeblogEntryWrapperComparator());
+            this.results.put(midnight, set);
+        }
+        set.add(entry);
+    }
+    
+    
+    public String getTerm() {
+        String query = searchRequest.getQuery();
+        return (query == null) ? "" : 
StringEscapeUtils.escapeXml(Utilities.escapeHTML(query));
+    }
+
+    public String getRawTerm() {
+        return (searchRequest.getQuery() == null) ? "" : 
searchRequest.getQuery();
+    }
+
+    public int getHits() {
+        return hits;
+    }
+
+    public int getOffset() {
+        return offset;
+    }
+
+    public int getLimit() {
+        return limit;
+    }
+
+    public TreeMap getResults() {
+        return results;
+    }
+
+    public Set getCategories() {
+        return categories;
+    }
+
+    public boolean isWebsiteSpecificSearch() {
+        return websiteSpecificSearch;
+    }
+
+    public String getErrorMessage() {
+        return errorMessage;
+    }
+    
+    public String getWeblogCategoryName() {
+        return searchRequest.getWeblogCategoryName();
+    }
+    
+    public WeblogCategoryWrapper getWeblogCategory() {
+        if(searchRequest.getWeblogCategory() != null) {
+            return 
WeblogCategoryWrapper.wrap(searchRequest.getWeblogCategory(), urlStrategy);
+        }
+        return null;
+    }
+    
+}


Reply via email to