Author: gttersen
Date: 2007-04-19 13:24:20 +0200 (Thu, 19 Apr 2007)
New Revision: 4832

Modified:
   
trunk/core-api/src/main/java/no/schibstedsok/searchportal/mode/SearchModeFactory.java
   
trunk/core-api/src/main/java/no/schibstedsok/searchportal/mode/command/ClusteringESPFastCommand.java
   
trunk/core-api/src/main/java/no/schibstedsok/searchportal/mode/command/NewsAggregatorSearchCommand.java
   
trunk/core-api/src/main/java/no/schibstedsok/searchportal/mode/command/NewsMyNewsSearchCommand.java
   
trunk/core-api/src/main/java/no/schibstedsok/searchportal/mode/config/ClusteringESPFastConfiguration.java
Log:
Changes for NewsAggregator

Modified: 
trunk/core-api/src/main/java/no/schibstedsok/searchportal/mode/SearchModeFactory.java
===================================================================
--- 
trunk/core-api/src/main/java/no/schibstedsok/searchportal/mode/SearchModeFactory.java
       2007-04-18 18:59:52 UTC (rev 4831)
+++ 
trunk/core-api/src/main/java/no/schibstedsok/searchportal/mode/SearchModeFactory.java
       2007-04-19 11:24:20 UTC (rev 4832)
@@ -799,8 +799,8 @@
                     fillBeanProperty(cefc, inherit, "clusterField", 
ParseType.String, commandE, "cluster");
                     fillBeanProperty(cefc, inherit, "clusterMaxFetch", 
ParseType.Int, commandE, "10");
                     fillBeanProperty(cefc, inherit, "nestedResultsField", 
ParseType.String, commandE, "entries");
-                    fillBeanProperty(cefc, inherit, "userSortByField", 
ParseType.String, commandE, "publishedtime");
-                    fillBeanProperty(cefc, inherit, "userSortByParameter", 
ParseType.String, commandE, "sortBy");
+                    fillBeanProperty(cefc, inherit, "userSortField", 
ParseType.String, commandE, "publishedtime");
+                    fillBeanProperty(cefc, inherit, "userSortParameter", 
ParseType.String, commandE, "sort");
                 }
 
                 if (sc instanceof NewsAggregatorSearchConfiguration) {

Modified: 
trunk/core-api/src/main/java/no/schibstedsok/searchportal/mode/command/ClusteringESPFastCommand.java
===================================================================
--- 
trunk/core-api/src/main/java/no/schibstedsok/searchportal/mode/command/ClusteringESPFastCommand.java
        2007-04-18 18:59:52 UTC (rev 4831)
+++ 
trunk/core-api/src/main/java/no/schibstedsok/searchportal/mode/command/ClusteringESPFastCommand.java
        2007-04-19 11:24:20 UTC (rev 4832)
@@ -22,6 +22,8 @@
 import java.util.Map;
 
 public class ClusteringESPFastCommand extends NavigatableESPFastCommand {
+    public static final String PARAM_NEXT_OFFSET = "nextOffset";
+
     private static final Logger LOG = 
Logger.getLogger(ClusteringESPFastCommand.class);
 
     public ClusteringESPFastCommand(Context cxt) {
@@ -37,9 +39,10 @@
         final ClusteringESPFastConfiguration config = getSearchConfiguration();
 
         // Can not use the default sort functionality since it hardcodes field 
name
-        final StringDataObject sortBy = 
datamodel.getParameters().getValue(config.getUserSortByParameter());
-        if (sortBy != null) {
-            query.setParameter(BaseParameter.SORT_BY, sortBy.getString());
+        final StringDataObject sort = 
datamodel.getParameters().getValue(config.getUserSortParameter());
+        if (sort != null) {
+            query.setParameter(BaseParameter.SORT_BY, 
config.getUserSortField());
+            query.setParameter(BaseParameter.SORT_DIRECTION, sort.getString());
         }
 
         final StringDataObject clusterId = 
datamodel.getParameters().getValue(config.getClusterIdParameter());
@@ -68,7 +71,7 @@
             final ClusteringESPFastConfiguration config = 
getSearchConfiguration();
             StringDataObject clusterId = 
datamodel.getParameters().getValue(config.getClusterIdParameter());
             if (clusterId == null) {
-                return createClusteredSearchResult(config, result);
+                return createClusteredSearchResult(config, getOffset(), 
result);
             } else {
                 return createSingleClusterResults(config, result);
             }
@@ -117,7 +120,15 @@
         return searchResult;
     }
 
-    private FastSearchResult 
createClusteredSearchResult(ClusteringESPFastConfiguration config, IQueryResult 
result) throws IllegalType, EmptyValueException {
+    protected int getOffset() {
+        int offset = 0;
+        if (datamodel.getJunkYard().getValue("offset") != null) {
+            offset = Integer.parseInt((String) 
datamodel.getJunkYard().getValue("offset"));
+        }
+        return offset;
+    }
+
+    private FastSearchResult 
createClusteredSearchResult(ClusteringESPFastConfiguration config, int offset, 
IQueryResult result) throws IllegalType, EmptyValueException {
         final String clusterField = config.getClusterField();
         final String nestedResultsField = config.getNestedResultsField();
         final FastSearchResult searchResult = new FastSearchResult(this);
@@ -131,8 +142,7 @@
         SearchResult subResult = null;
 
         LOG.debug("HitCount=" + result.getDocCount() + ", clusterField=" + 
clusterField + ", nestedResultsField=" + nestedResultsField);
-
-        for (int i = 0; i < result.getDocCount(); i++) {
+        for (int i = offset; i < result.getDocCount(); i++) {
             try {
                 final IDocumentSummary document = result.getDocument(i + 1);
                 currentClusterId = document.getSummaryField(clusterField);
@@ -172,7 +182,10 @@
                 break;
             }
         }
-        searchResult.setHitCount(collectedHits);
+        if (offset + collectedHits < result.getDocCount()) {
+            searchResult.addField(ClusteringESPFastCommand.PARAM_NEXT_OFFSET, 
Integer.toString(offset + collectedHits));
+        }
+        searchResult.setHitCount(result.getDocCount());
         return searchResult;
     }
 

Modified: 
trunk/core-api/src/main/java/no/schibstedsok/searchportal/mode/command/NewsAggregatorSearchCommand.java
===================================================================
--- 
trunk/core-api/src/main/java/no/schibstedsok/searchportal/mode/command/NewsAggregatorSearchCommand.java
     2007-04-18 18:59:52 UTC (rev 4831)
+++ 
trunk/core-api/src/main/java/no/schibstedsok/searchportal/mode/command/NewsAggregatorSearchCommand.java
     2007-04-19 11:24:20 UTC (rev 4832)
@@ -121,11 +121,7 @@
     private SearchResult getPageResult(NewsAggregatorSearchConfiguration 
config, String xmlFile) {
         final NewsAggregatorXmlParser newsAggregatorXmlParser = new 
NewsAggregatorXmlParser();
         try {
-            int offset = 0;
-            if (datamodel.getJunkYard().getValue("offset") != null) {
-                offset = Integer.parseInt((String) 
datamodel.getJunkYard().getValue("offset"));
-            }
-            SearchResult searchResult = 
newsAggregatorXmlParser.parseFullPage(config, offset, getInputStream(config, 
xmlFile), this);
+            SearchResult searchResult = 
newsAggregatorXmlParser.parseFullPage(config, getOffset(), 
getInputStream(config, xmlFile), this);
             if (searchResult != null && searchResult.getHitCount() > 0) {
                 return searchResult;
             }
@@ -163,6 +159,9 @@
         private static final String ELEMENT_GEONAVIGATION = "geonavigation";
         private static final String ATTRIBUTE_NAME = "name";
         private static final String ATTRIBUTE_XML = "xml";
+        private static final String ELEMENT_COUNTS = "counts";
+        private static final String ATTRIBUTE_ENTRY_COUNT = "entries";
+        private static final String ATTRIBUTE_CLUSTER_COUNT = "clusters";
 
         private Document getDocument(InputStream inputStream) throws 
JDOMException, IOException {
             final SAXBuilder saxBuilder = new SAXBuilder();
@@ -206,6 +205,7 @@
                 final Element root = doc.getRootElement();
 
                 handleClusters(config, offset, 
root.getChildren(ELEMENT_CLUSTER), searchResult, searchCommand);
+                handleCounts(config, root.getChild(ELEMENT_COUNTS), offset, 
searchResult);
                 handleRelated(config, root.getChild(ELEMENT_RELATED), 
searchResult);
                 handleGeoNav(root.getChild(ELEMENT_GEONAVIGATION), 
searchResult);
                 return searchResult;
@@ -220,6 +220,19 @@
             }
         }
 
+        private void handleCounts(NewsAggregatorSearchConfiguration config, 
Element countsElement, int offset, FastSearchResult searchResult) {
+            final String entries = 
countsElement.getAttributeValue(ATTRIBUTE_ENTRY_COUNT);
+            if (entries != null && entries.length() > 0) {
+                searchResult.setHitCount(Integer.parseInt(entries));
+            }
+            final String clusters = 
countsElement.getAttributeValue(ATTRIBUTE_CLUSTER_COUNT);
+            if (clusters != null && clusters.length() > 0) {
+                if (offset + config.getResultsToReturn() < 
Integer.parseInt(clusters)) {
+                    
searchResult.addField(ClusteringESPFastCommand.PARAM_NEXT_OFFSET, 
Integer.toString(offset + config.getResultsToReturn()));
+                }
+            }
+        }
+
         private void handleGeoNav(Element geonavElement, FastSearchResult 
searchResult) {
             final List<Element> geoNavElements = geonavElement.getChildren();
             for (Element geoNavElement : geoNavElements) {
@@ -248,13 +261,11 @@
         }
 
         private void handleClusters(NewsAggregatorSearchConfiguration config, 
int offset, List<Element> clusters, SearchResult searchResult, SearchCommand 
searchCommand) {
-            int hitCount = 0;
             int maxOffset = offset + config.getResultsToReturn();
             for (int i = offset; i < clusters.size() && i < maxOffset; i++) {
                 Element cluster = clusters.get(i);
-                hitCount += handleCluster(config, cluster, searchCommand, 
searchResult);
+                handleCluster(config, cluster, searchCommand, searchResult);
             }
-            searchResult.setHitCount(hitCount);
         }
 
         private void handleFlatCluster(NewsAggregatorSearchConfiguration 
config, Element cluster, SearchCommand searchCommand, SearchResult 
searchResult) {
@@ -290,7 +301,7 @@
                     addResult(config, nestedResultItem, nestedSearchResult, 
searchCommand);
                 }
             }
-            searchResultItem.addNestedSearchResult("entries", 
nestedSearchResult);
+            searchResultItem.addNestedSearchResult(ATTRIBUTE_ENTRY_COUNT, 
nestedSearchResult);
             searchResult.addResult(searchResultItem);
             nestedSearchResult.setHitCount(entryList.size());
             return entryList.size();

Modified: 
trunk/core-api/src/main/java/no/schibstedsok/searchportal/mode/command/NewsMyNewsSearchCommand.java
===================================================================
--- 
trunk/core-api/src/main/java/no/schibstedsok/searchportal/mode/command/NewsMyNewsSearchCommand.java
 2007-04-18 18:59:52 UTC (rev 4831)
+++ 
trunk/core-api/src/main/java/no/schibstedsok/searchportal/mode/command/NewsMyNewsSearchCommand.java
 2007-04-19 11:24:20 UTC (rev 4832)
@@ -35,7 +35,7 @@
                 SearchResult collectedResult;
                 String commandName = null;
                 final String type = matcher.group(2);
-                if (type.equals("cluster")) {
+                if (type.equals("knippe")) {
                     commandName = "clusterMyNews";
                 } else if (type.equals("sak")) {
                     commandName = "newsCase" + position;

Modified: 
trunk/core-api/src/main/java/no/schibstedsok/searchportal/mode/config/ClusteringESPFastConfiguration.java
===================================================================
--- 
trunk/core-api/src/main/java/no/schibstedsok/searchportal/mode/config/ClusteringESPFastConfiguration.java
   2007-04-18 18:59:52 UTC (rev 4831)
+++ 
trunk/core-api/src/main/java/no/schibstedsok/searchportal/mode/config/ClusteringESPFastConfiguration.java
   2007-04-19 11:24:20 UTC (rev 4832)
@@ -7,7 +7,8 @@
     private String clusterField;
     private String clusterMaxFetch;
     private String nestedResultsField;
-    private String userSortByParameter;
+    private String userSortParameter;
+    private String userSortField;
 
     public ClusteringESPFastConfiguration(SearchConfiguration asc) {
         super(asc);
@@ -18,16 +19,17 @@
             clusterField = cefcc.getClusterField();
             clusterMaxFetch = cefcc.getClusterMaxFetch();
             nestedResultsField = cefcc.getNestedResultsField();
-            userSortByParameter = cefcc.getUserSortByParameter();
+            userSortParameter = cefcc.getUserSortParameter();
+            userSortField = cefcc.getUserSortField();
         }
     }
 
-    public String getUserSortByParameter() {
-        return userSortByParameter;
+    public String getUserSortParameter() {
+        return userSortParameter;
     }
 
-    public void setUserSortByParameter(String userSortByParameter) {
-        this.userSortByParameter = userSortByParameter;
+    public void setUserSortParameter(String userSortParameter) {
+        this.userSortParameter = userSortParameter;
     }
 
     public String getNestedResultsField() {
@@ -69,4 +71,8 @@
     public void setClusterMaxFetch(String clusterMaxFetch) {
         this.clusterMaxFetch = clusterMaxFetch;
     }
+
+    public String getUserSortField() {
+        return userSortField;
+    }
 }

_______________________________________________
Kernel-commits mailing list
[email protected]
http://sesat.no/mailman/listinfo/kernel-commits

Reply via email to