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
