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