Author: gttersen
Date: 2007-06-12 20:06:41 +0200 (Tue, 12 Jun 2007)
New Revision: 5314
Added:
trunk/core-api/src/main/java/no/schibstedsok/searchportal/result/handler/CombineModifiersResultHandler.java
trunk/result-handler-config-spi/src/main/java/no/schibstedsok/searchportal/result/handler/CombineModifiersResultHandlerConfig.java
Log:
Aftenposten skin updates
Added:
trunk/core-api/src/main/java/no/schibstedsok/searchportal/result/handler/CombineModifiersResultHandler.java
===================================================================
---
trunk/core-api/src/main/java/no/schibstedsok/searchportal/result/handler/CombineModifiersResultHandler.java
(rev 0)
+++
trunk/core-api/src/main/java/no/schibstedsok/searchportal/result/handler/CombineModifiersResultHandler.java
2007-06-12 18:06:41 UTC (rev 5314)
@@ -0,0 +1,74 @@
+package no.schibstedsok.searchportal.result.handler;
+
+import no.schibstedsok.searchportal.datamodel.DataModel;
+import no.schibstedsok.searchportal.result.FastSearchResult;
+import no.schibstedsok.searchportal.result.Modifier;
+import org.apache.log4j.Logger;
+
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * Used to combine modifiers into new ones in a new navigator.
+ *
+ * @author Geir H. Pettersen
+ */
+public class CombineModifiersResultHandler implements ResultHandler {
+ private static final Logger LOG =
Logger.getLogger(CombineModifiersResultHandler.class);
+ private CombineModifiersResultHandlerConfig config;
+
+
+ public CombineModifiersResultHandler(ResultHandlerConfig config) {
+ this.config = (CombineModifiersResultHandlerConfig) config;
+ }
+
+ public void handleResult(Context cxt, DataModel datamodel) {
+ // Checking parameters
+ if (!(cxt.getSearchResult() instanceof FastSearchResult)) {
+ LOG.debug(CombineModifiersResultHandler.class.getName() + " can
only be applied to fast search results. Result is " +
cxt.getSearchResult().getClass().getName());
+ return;
+ }
+
+ // Initializing
+ final FastSearchResult result = (FastSearchResult)
cxt.getSearchResult();
+ final List<Modifier> sourceModifierList =
result.getModifiers(config.getSourceNavigatorName());
+ final LinkedHashMap<String, Modifier> targetModifierMap = new
LinkedHashMap<String, Modifier>();
+ final Map<String, String> modifierMap = config.getModifierMap();
+ Modifier defaultModifier = null;
+ if (config.getDefaultModifierName() != null) {
+ defaultModifier = new Modifier(config.getDefaultModifierName(), 0,
null);
+ }
+
+ // The business
+ if (sourceModifierList != null && sourceModifierList.size() > 0) {
+ for (Modifier sourceModifier : sourceModifierList) {
+ LOG.debug("Combining modifier: " + sourceModifier.getName() +
"=" + sourceModifier.getCount());
+ final String targetModifierName =
modifierMap.get(sourceModifier.getName());
+ if (targetModifierName != null) {
+ Modifier targetModifier =
targetModifierMap.get(targetModifierName);
+ if (targetModifier == null) {
+ targetModifier = new Modifier(targetModifierName, 0,
null);
+ targetModifierMap.put(targetModifierName,
targetModifier);
+ }
+ targetModifier.addCount(sourceModifier.getCount());
+ } else if (defaultModifier != null) {
+ defaultModifier.addCount(sourceModifier.getCount());
+ }
+ }
+
+ // Add the result
+ if (config.getAllModifierName() != null) {
+ result.addModifier(config.getTargetNavigatorName(), new
Modifier(config.getAllModifierName(), result.getHitCount(), null));
+ }
+ for (Modifier modifier : targetModifierMap.values()) {
+ result.addModifier(config.getTargetNavigatorName(), modifier);
+ }
+ if (defaultModifier != null) {
+ result.addModifier(config.getTargetNavigatorName(),
defaultModifier);
+ }
+ }
+ }
+
+
+}
Added:
trunk/result-handler-config-spi/src/main/java/no/schibstedsok/searchportal/result/handler/CombineModifiersResultHandlerConfig.java
===================================================================
---
trunk/result-handler-config-spi/src/main/java/no/schibstedsok/searchportal/result/handler/CombineModifiersResultHandlerConfig.java
(rev 0)
+++
trunk/result-handler-config-spi/src/main/java/no/schibstedsok/searchportal/result/handler/CombineModifiersResultHandlerConfig.java
2007-06-12 18:06:41 UTC (rev 5314)
@@ -0,0 +1,104 @@
+package no.schibstedsok.searchportal.result.handler;
+
+import
no.schibstedsok.searchportal.result.handler.AbstractResultHandlerConfig.Controller;
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * Used to combine modifiers into new ones in a new navigator.
+ *
+ * @author Geir H. Pettersen
+ */
[EMAIL PROTECTED]("CombineModifiersResultHandler")
+public class CombineModifiersResultHandlerConfig extends
AbstractResultHandlerConfig {
+ private String sourceNavigatorName;
+ private String targetNavigatorName;
+ private String allModifierName;
+ private String defaultModifierName;
+ private Map<String, String> modifierMap = new HashMap<String, String>();
+
+ public String getSourceNavigatorName() {
+ return sourceNavigatorName;
+ }
+
+ public void setSourceNavigatorName(String sourceNavigatorName) {
+ this.sourceNavigatorName = sourceNavigatorName;
+ }
+
+ public String getTargetNavigatorName() {
+ return targetNavigatorName;
+ }
+
+ public void setTargetNavigatorName(String targetNavigatorName) {
+ this.targetNavigatorName = targetNavigatorName;
+ }
+
+ public String getAllModifierName() {
+ return allModifierName;
+ }
+
+ public void setAllModifierName(String allModifierName) {
+ this.allModifierName = allModifierName;
+ }
+
+ public String getDefaultModifierName() {
+ return defaultModifierName;
+ }
+
+ public void setDefaultModifierName(String defaultModifierName) {
+ this.defaultModifierName = defaultModifierName;
+ }
+
+ public Map<String, String> getModifierMap() {
+ return modifierMap;
+ }
+
+ public void setModifierMap(Map<String, String> modifierMap) {
+ this.modifierMap = modifierMap;
+ }
+
+ @Override
+ public AbstractResultHandlerConfig readResultHandler(final Element
element) {
+ sourceNavigatorName = element.getAttribute("source-navigator-name");
+ targetNavigatorName = element.getAttribute("target-navigator-name");
+ String attr = element.getAttribute("all-modifier-name");
+ if (attr != null && attr.length() > 0) {
+ allModifierName = attr;
+ }
+ attr = element.getAttribute("default-modifier-name");
+ if (attr != null && attr.length() > 0) {
+ defaultModifierName = attr;
+ }
+ List<Element> modifierList = getDirectChildren(element, "modifier");
+ for (Element modifierElement : modifierList) {
+ final String modifierTargetName =
modifierElement.getAttribute("name");
+ List<Element> modifierSourceList =
getDirectChildren(modifierElement, "source");
+ for (Element modifierSource : modifierSourceList) {
+ final String modifierSourceName =
modifierSource.getAttribute("name");
+ modifierMap.put(modifierSourceName, modifierTargetName);
+ }
+ }
+ return this;
+ }
+
+ private static List<Element> getDirectChildren(final Element element,
final String elementName) {
+ final List<Element> children = new ArrayList<Element>();
+ if (element != null) {
+ final NodeList childNodes = element.getChildNodes();
+ for (int i = 0; i < childNodes.getLength(); i++) {
+ final Node childNode = childNodes.item(i);
+ if (childNode instanceof Element &&
childNode.getNodeName().equals(elementName)) {
+ children.add((Element) childNode);
+ }
+ }
+ }
+ return children;
+ }
+
+}
_______________________________________________
Kernel-commits mailing list
[email protected]
http://sesat.no/mailman/listinfo/kernel-commits