Author: gttersen
Date: 2007-05-07 15:41:55 +0200 (Mon, 07 May 2007)
New Revision: 5011

Added:
   
branches/2.12/core-api/src/main/java/no/schibstedsok/searchportal/result/handler/ClusterOffsetAdapter.java
   
branches/2.12/core-api/src/main/java/no/schibstedsok/searchportal/result/handler/FieldFilter.java
   
branches/2.12/result-handler-config-spi/src/main/java/no/schibstedsok/searchportal/result/handler/ClusterOffsetAdapterResultHandlerConfig.java
   
branches/2.12/result-handler-config-spi/src/main/java/no/schibstedsok/searchportal/result/handler/FieldFilterResultHandlerConfig.java
Log:
NewsAggregator changes

Added: 
branches/2.12/core-api/src/main/java/no/schibstedsok/searchportal/result/handler/ClusterOffsetAdapter.java
===================================================================
--- 
branches/2.12/core-api/src/main/java/no/schibstedsok/searchportal/result/handler/ClusterOffsetAdapter.java
                          (rev 0)
+++ 
branches/2.12/core-api/src/main/java/no/schibstedsok/searchportal/result/handler/ClusterOffsetAdapter.java
  2007-05-07 13:41:55 UTC (rev 5011)
@@ -0,0 +1,39 @@
+package no.schibstedsok.searchportal.result.handler;
+
+import no.schibstedsok.searchportal.datamodel.DataModel;
+import no.schibstedsok.searchportal.datamodel.generic.StringDataObject;
+import no.schibstedsok.searchportal.result.FastSearchResult;
+import org.apache.log4j.Logger;
+
+/**
+ * Adapts a old searchresult to use the newsSimpeOffsetPager
+ *
+ * @author Geir H. Pettersn (T-Rank)
+ */
+public class ClusterOffsetAdapter implements ResultHandler {
+    private static final Logger LOG = 
Logger.getLogger(ClusterOffsetAdapter.class);
+    private ClusterOffsetAdapterResultHandlerConfig config;
+
+    public ClusterOffsetAdapter(final ResultHandlerConfig config) {
+        this.config = (ClusterOffsetAdapterResultHandlerConfig) config;
+    }
+
+    public void handleResult(Context cxt, DataModel datamodel) {
+        if (cxt.getSearchResult() instanceof FastSearchResult) {
+            int offsetInt = 0;
+            FastSearchResult searchResult = (FastSearchResult) 
cxt.getSearchResult();
+            StringDataObject offset = 
datamodel.getParameters().getValue(config.getOffsetField());
+            if (offset != null) {
+                try {
+                    offsetInt = Integer.parseInt(offset.getString());
+                } catch (NumberFormatException e) {
+                    LOG.error("Could not parse offset", e);
+                }
+            }
+            offsetInt += config.getOffsetInterval();
+            searchResult.addField(config.getOffsetResultField(), 
Integer.toString(offsetInt));
+        } else {
+            LOG.error("Can only adapt FastSearchResults");
+        }
+    }
+}

Added: 
branches/2.12/core-api/src/main/java/no/schibstedsok/searchportal/result/handler/FieldFilter.java
===================================================================
--- 
branches/2.12/core-api/src/main/java/no/schibstedsok/searchportal/result/handler/FieldFilter.java
                           (rev 0)
+++ 
branches/2.12/core-api/src/main/java/no/schibstedsok/searchportal/result/handler/FieldFilter.java
   2007-05-07 13:41:55 UTC (rev 5011)
@@ -0,0 +1,48 @@
+package no.schibstedsok.searchportal.result.handler;
+
+import no.schibstedsok.searchportal.datamodel.DataModel;
+import no.schibstedsok.searchportal.result.SearchResult;
+import no.schibstedsok.searchportal.result.SearchResultItem;
+
+
+/**
+ * @author Geir H. Pettersen (T-Rank)
+ */
+public class FieldFilter implements ResultHandler {
+    private FieldFilterResultHandlerConfig config;
+
+    public FieldFilter(final ResultHandlerConfig config) {
+        this.config = (FieldFilterResultHandlerConfig) config;
+    }
+
+    public void handleResult(Context cxt, DataModel datamodel) {
+        SearchResult searchResult = cxt.getSearchResult();
+        filterResult(searchResult);
+    }
+
+    private void filterResult(SearchResult searchResult) {
+        for (SearchResultItem searchResultItem : searchResult.getResults()) {
+            if (config.getRecursiveField() != null) {
+                SearchResult subResult = 
searchResultItem.getNestedSearchResult(config.getRecursiveField());
+                if (subResult != null) {
+                    filterResult(subResult);
+                }
+            }
+            if (shouldFilter(searchResultItem)) {
+                filter(searchResultItem);
+            }
+        }
+    }
+
+    private void filter(SearchResultItem searchResultItem) {
+        for (String removeField : config.getRemoveFieldsArray()) {
+            searchResultItem.addField(removeField, null);
+        }
+    }
+
+    private boolean shouldFilter(SearchResultItem searchResultItem) {
+        String filterSource = searchResultItem.getField(config.getFilterSrc());
+        return filterSource != null && 
config.getMatchListSet().contains(filterSource.toLowerCase().trim());
+    }
+
+}

Added: 
branches/2.12/result-handler-config-spi/src/main/java/no/schibstedsok/searchportal/result/handler/ClusterOffsetAdapterResultHandlerConfig.java
===================================================================
--- 
branches/2.12/result-handler-config-spi/src/main/java/no/schibstedsok/searchportal/result/handler/ClusterOffsetAdapterResultHandlerConfig.java
                              (rev 0)
+++ 
branches/2.12/result-handler-config-spi/src/main/java/no/schibstedsok/searchportal/result/handler/ClusterOffsetAdapterResultHandlerConfig.java
      2007-05-07 13:41:55 UTC (rev 5011)
@@ -0,0 +1,49 @@
+package no.schibstedsok.searchportal.result.handler;
+
+import 
no.schibstedsok.searchportal.result.handler.AbstractResultHandlerConfig.Controller;
+import org.apache.log4j.Logger;
+import org.w3c.dom.Element;
+
+/**
+ * @author Geir H. Pettersn (T-Rank)
+ */
[EMAIL PROTECTED]("ClusterOffsetAdapter")
+public class ClusterOffsetAdapterResultHandlerConfig extends 
AbstractResultHandlerConfig {
+    private static final Logger LOG = 
Logger.getLogger(ClusterOffsetAdapterResultHandlerConfig.class);
+    private String offsetField = "offset";
+    private String offsetResultField = "nextOffset";
+    private int offsetInterval = 20;
+
+    public String getOffsetField() {
+        return offsetField;
+    }
+
+    public String getOffsetResultField() {
+        return offsetResultField;
+    }
+
+    public int getOffsetInterval() {
+        return offsetInterval;
+    }
+
+    @Override
+    public AbstractResultHandlerConfig readResultHandler(final Element 
element) {
+        String optionalParameter = element.getAttribute("offset-field");
+        if (optionalParameter != null && optionalParameter.length() > 0) {
+            offsetField = optionalParameter;
+        }
+        optionalParameter = element.getAttribute("offset-result-field");
+        if (optionalParameter != null && optionalParameter.length() > 0) {
+            offsetResultField = optionalParameter;
+        }
+        optionalParameter = element.getAttribute("offset-interval");
+        if (optionalParameter != null && optionalParameter.length() > 0) {
+            try {
+                offsetInterval = Integer.parseInt(optionalParameter);
+            } catch (NumberFormatException e) {
+                LOG.error("Could not parse offsetInterval", e);
+            }
+        }
+        return this;
+    }
+}

Added: 
branches/2.12/result-handler-config-spi/src/main/java/no/schibstedsok/searchportal/result/handler/FieldFilterResultHandlerConfig.java
===================================================================
--- 
branches/2.12/result-handler-config-spi/src/main/java/no/schibstedsok/searchportal/result/handler/FieldFilterResultHandlerConfig.java
                               (rev 0)
+++ 
branches/2.12/result-handler-config-spi/src/main/java/no/schibstedsok/searchportal/result/handler/FieldFilterResultHandlerConfig.java
       2007-05-07 13:41:55 UTC (rev 5011)
@@ -0,0 +1,76 @@
+package no.schibstedsok.searchportal.result.handler;
+
+import 
no.schibstedsok.searchportal.result.handler.AbstractResultHandlerConfig.Controller;
+import org.apache.commons.lang.StringUtils;
+import org.w3c.dom.Element;
+
+import java.util.HashSet;
+import java.util.Set;
+
+/**
+ * @author Geir H. Pettersn (T-Rank)
+ */
[EMAIL PROTECTED]("FieldFilter")
+public class FieldFilterResultHandlerConfig extends 
AbstractResultHandlerConfig {
+    private String recursiveField;
+    private String filterSrc;
+    private String matchList;
+    private String removeFields;
+    private String srcPrefixes;
+    private Set<String> matchListSet;
+    private String[] removeFieldsArray;
+
+
+    public String getRecursiveField() {
+        return recursiveField;
+    }
+
+    public String getFilterSrc() {
+        return filterSrc;
+    }
+
+    public Set<String> getMatchListSet() {
+        if (matchListSet == null) {
+            matchListSet = new HashSet<String>();
+            final String[] mlArray = StringUtils.split(matchList, ',');
+            if (mlArray != null) {
+                for (String s : mlArray) {
+                    matchListSet.add(s.toLowerCase());
+                    // Handle srcPrefixes
+                    final String[] srcPref = StringUtils.split(srcPrefixes, 
',');
+                    if (srcPref != null) {
+                        for (String prefix : srcPref) {
+                            matchListSet.add(prefix.toLowerCase() + 
s.toLowerCase());
+                        }
+                    }
+                }
+            }
+        }
+        return matchListSet;
+    }
+
+    public String[] getRemoveFieldsArray() {
+        if (removeFieldsArray == null) {
+            removeFieldsArray = StringUtils.split(removeFields, ',');
+        }
+        return removeFieldsArray;
+    }
+
+    public String getMatchList() {
+        return matchList;
+    }
+
+    public String getRemoveFields() {
+        return removeFields;
+    }
+
+    @Override
+    public AbstractResultHandlerConfig readResultHandler(final Element 
element) {
+        recursiveField = element.getAttribute("recursive-field");
+        filterSrc = element.getAttribute("filter-src");
+        matchList = element.getAttribute("match-list");
+        removeFields = element.getAttribute("remove-fields");
+        srcPrefixes = element.getAttribute("src-prefixes");
+        return this;
+    }
+}

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

Reply via email to