Author: gttersen
Date: 2007-05-04 21:47:46 +0200 (Fri, 04 May 2007)
New Revision: 4998

Modified:
   
branches/2.12/core-api/src/main/java/no/schibstedsok/searchportal/result/handler/FieldChooser.java
   
branches/2.12/result-handler-config-spi/src/main/java/no/schibstedsok/searchportal/result/handler/FieldChooserResultHandlerConfig.java
Log:
newsAggregator fixes

Modified: 
branches/2.12/core-api/src/main/java/no/schibstedsok/searchportal/result/handler/FieldChooser.java
===================================================================
--- 
branches/2.12/core-api/src/main/java/no/schibstedsok/searchportal/result/handler/FieldChooser.java
  2007-05-04 18:08:02 UTC (rev 4997)
+++ 
branches/2.12/core-api/src/main/java/no/schibstedsok/searchportal/result/handler/FieldChooser.java
  2007-05-04 19:47:46 UTC (rev 4998)
@@ -1,39 +1,52 @@
 // Copyright (2006-2007) Schibsted Søk AS
 package no.schibstedsok.searchportal.result.handler;
 
-import java.util.Collection;
-import java.util.Iterator;
 import no.schibstedsok.searchportal.datamodel.DataModel;
+import no.schibstedsok.searchportal.result.SearchResult;
 import no.schibstedsok.searchportal.result.SearchResultItem;
+import org.apache.log4j.Logger;
 
+import java.util.Collection;
 
+
 /**
  * @author <a href="mailto:[EMAIL PROTECTED]">Magnus Eklund</a>
  * @version <tt>$Id$</tt>
  */
 public final class FieldChooser implements ResultHandler {
+    private static final Logger LOG = Logger.getLogger(FieldChooser.class);
 
     private final FieldChooserResultHandlerConfig config;
-    
-    public FieldChooser(final ResultHandlerConfig config){
-        this.config = (FieldChooserResultHandlerConfig)config;
+
+    public FieldChooser(final ResultHandlerConfig config) {
+        this.config = (FieldChooserResultHandlerConfig) config;
     }
 
     public void handleResult(final Context cxt, final DataModel datamodel) {
-        
+
         final Collection<String> fields = config.getFields();
-        
-        for (final SearchResultItem item : cxt.getSearchResult().getResults()) 
{
-            for (final Iterator iterator1 = fields.iterator(); 
iterator1.hasNext();) {
-                
-                final String fieldName = (String) iterator1.next();
-                if (item.getField(fieldName) != null) {
-                    item.addField(config.getTargetField(), 
item.getField(fieldName));
-                    break;
+        final SearchResult searchResult = cxt.getSearchResult();
+        chooseField(searchResult, fields);
+    }
+
+    public void chooseField(SearchResult searchResult, Collection<String> 
fields) {
+        if (searchResult != null && searchResult.getResults().size() > 0) {
+            for (SearchResultItem item : searchResult.getResults()) {
+                for (String field : fields) {
+                    if (item.getField(field) != null) {
+                        item.addField(config.getTargetField(), 
item.getField(field));
+                        break;
+                    }
                 }
+                if (config.getDefaultValue() != null && 
item.getField(config.getTargetField()) == null) {
+                    item.addField(config.getTargetField(), 
config.getDefaultValue());
+                }
+                if (config.getRecursiveField() != null) {
+                    
chooseField(item.getNestedSearchResult(config.getRecursiveField()), fields);
+                }
             }
         }
     }
 
-    
+
 }

Modified: 
branches/2.12/result-handler-config-spi/src/main/java/no/schibstedsok/searchportal/result/handler/FieldChooserResultHandlerConfig.java
===================================================================
--- 
branches/2.12/result-handler-config-spi/src/main/java/no/schibstedsok/searchportal/result/handler/FieldChooserResultHandlerConfig.java
      2007-05-04 18:08:02 UTC (rev 4997)
+++ 
branches/2.12/result-handler-config-spi/src/main/java/no/schibstedsok/searchportal/result/handler/FieldChooserResultHandlerConfig.java
      2007-05-04 19:47:46 UTC (rev 4998)
@@ -1,12 +1,12 @@
 // Copyright (2006-2007) Schibsted Søk AS
 package no.schibstedsok.searchportal.result.handler;
 
+import 
no.schibstedsok.searchportal.result.handler.AbstractResultHandlerConfig.Controller;
+import org.w3c.dom.Element;
+
 import java.util.ArrayList;
 import java.util.Collections;
-import java.util.Collections;
 import java.util.List;
-import 
no.schibstedsok.searchportal.result.handler.AbstractResultHandlerConfig.Controller;
-import org.w3c.dom.Element;
 
 
 /**
@@ -18,44 +18,68 @@
 
     private final List<String> fields = new ArrayList<String>();
     private String targetField;
+    private String defaultValue;
+    private String recursiveField;
 
     /**
-     * 
-     * @param fieldName 
+     * @param fieldName
      */
     public void addField(final String fieldName) {
         fields.add(fieldName);
     }
 
     /**
-     * 
-     * @return 
+     * @return
      */
-    public List<String> getFields(){
+    public List<String> getFields() {
         return Collections.unmodifiableList(fields);
     }
+
     /**
-     * 
-     * @param fieldName 
+     * @param fieldName
      */
     public void setTargetField(final String fieldName) {
         targetField = fieldName;
     }
-    
+
     /**
-     * 
-     * @return 
+     * @return
      */
-    public String getTargetField(){
+    public String getTargetField() {
         return targetField;
     }
 
+
+    public String getDefaultValue() {
+        return defaultValue;
+    }
+
+    public void setDefaultValue(String defaultValue) {
+        this.defaultValue = defaultValue;
+    }
+
+    public String getRecursiveField() {
+        return recursiveField;
+    }
+
+    public void setRecursiveField(String recursiveField) {
+        this.recursiveField = recursiveField;
+    }
+
     @Override
     public AbstractResultHandlerConfig readResultHandler(final Element 
element) {
-        
+
         super.readResultHandler(element);
-        
+
         setTargetField(element.getAttribute("target"));
+        String optAttr = element.getAttribute("recursive-field");
+        if (optAttr != null && optAttr.length() > 0) {
+            recursiveField = optAttr;
+        }
+        optAttr = element.getAttribute("default-value");
+        if (optAttr != null && optAttr.length() > 0) {
+            defaultValue = optAttr;
+        }
         final String[] fields = element.getAttribute("fields").split(",");
         for (String field : fields) {
             addField(field);
@@ -63,6 +87,6 @@
 
         return this;
     }
-    
-    
+
+
 }

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

Reply via email to