Author: ssmiweve
Date: 2008-03-22 23:46:20 +0100 (Sat, 22 Mar 2008)
New Revision: 6268
Modified:
branches/2.16/core-api/src/main/java/no/sesat/search/util/SearchConstants.java
branches/2.16/generic.sesam/view-control/src/main/java/no/sesat/search/view/navigation/AbstractUrlGenerator.java
branches/2.16/generic.sesam/view-control/src/main/java/no/sesat/search/view/navigation/fast/FastNavigationController.java
branches/2.16/run-handler-control-spi/src/main/java/no/sesat/search/run/handler/NavigationRunHandler.java
branches/2.16/view-config-spi/src/main/java/no/sesat/search/view/config/SearchTab.java
branches/2.16/view-config-spi/src/main/java/no/sesat/search/view/navigation/NavigationConfig.java
branches/2.16/view-control-spi/src/main/java/no/sesat/search/view/navigation/NavigationManager.java
branches/2.16/view-control-spi/src/main/java/no/sesat/search/view/navigation/OptionNavigationController.java
branches/2.16/view-control-spi/src/main/java/no/sesat/search/view/navigation/UrlGenerator.java
Log:
SEARCH-4105 - Move logic from get-method to constructor in NavigationManager
Modified:
branches/2.16/core-api/src/main/java/no/sesat/search/util/SearchConstants.java
===================================================================
---
branches/2.16/core-api/src/main/java/no/sesat/search/util/SearchConstants.java
2008-03-22 21:34:34 UTC (rev 6267)
+++
branches/2.16/core-api/src/main/java/no/sesat/search/util/SearchConstants.java
2008-03-22 22:46:20 UTC (rev 6268)
@@ -58,10 +58,7 @@
public static final String REQUEST_KEYPARAM_LANGUAGE = "lan";
public static final String REQUEST_KEYPARAM_DOCUMENTS_TO_RETURN = "d";
- public static final String REQUEST_KEYPARAM_COLLECTION = "c";
- public static final String REQUEST_PARAM_DEFAULT_COLLECTIONS = "d";
- public static final String REQUEST_PARAM_MEDIA_COLLECTIONS = "m";
- public static final String REQUEST_PARAM_GLOBAL_INDEX = "g";
+
public static final Object REQUEST_PARAM_WIKICOLLECTION = "wiki";
public static final String STD_CONTENT_TYPE = "text/html";
@@ -75,10 +72,7 @@
public static final String NORDIC_NEWS_COLLECTION = "retrievernordic";
public static final String PIC_SEARCH_HOST = "license.picsearch.com";
public static final String WEATHER_SEARCH_HOST =
"www.storm.no/kunder/schibsted";
-
- public static final Object REQUEST_PARAM_PICTURE_SEARCH = "p";
-
}
Modified:
branches/2.16/generic.sesam/view-control/src/main/java/no/sesat/search/view/navigation/AbstractUrlGenerator.java
===================================================================
---
branches/2.16/generic.sesam/view-control/src/main/java/no/sesat/search/view/navigation/AbstractUrlGenerator.java
2008-03-22 21:34:34 UTC (rev 6267)
+++
branches/2.16/generic.sesam/view-control/src/main/java/no/sesat/search/view/navigation/AbstractUrlGenerator.java
2008-03-22 22:46:20 UTC (rev 6268)
@@ -1,5 +1,5 @@
/*
- * Copyright (2007) Schibsted Søk
+ * Copyright (2007-2008) Schibsted Søk
* This file is part of SESAT.
*
* SESAT is free software: you can redistribute it and/or modify
@@ -26,7 +26,7 @@
/**
* The basics of a UrlGenerator.
*
- * Extend this class to create your own UrlGenerator. This ensures that
configuration contracts are upheld.
+ * Extend this class to create your own UrlGenerator. This ensures that
configuration contracts are upheld.
*
* The term url component is used to denote a part of a URL, be it a part of
the path or a parameter.
*
@@ -69,7 +69,7 @@
* Returns the static URL prefix. (e.g. /search). If the URL is configured
to be relative, the empty string is
* returned.
*
- * @see
no.sesat.search.view.navigation.NavigationConfig.Navigation#getPrefix()
+ * @see
no.sesat.search.view.navigation.NavigationConfig.Navigation#getPrefix()
*
* @return the url prefix.
*/
@@ -83,7 +83,7 @@
* @param nav the navigator.
* @param extraParameters any extra parameters that should go into the URL.
*
- * @param newValue
+ * @param newValue
* @return the set of parameter names.
*/
protected final Set<String> getUrlComponentNames(
@@ -111,7 +111,7 @@
* @param nav the navigator
* @param componentName the name of the url component.
*
- * @param extraParameters
+ * @param extraParameters
* @return the value. UTF-8 URL ENCODED.
*/
protected String getUrlComponentValue(
@@ -119,10 +119,12 @@
final String componentName,
final Map<String, String> extraParameters) {
- return getFirstNotNull(
- extraParameters.get(componentName),
- nav.getStaticParameters().get(componentName),
- state.getParameterValue(nav, componentName));
+ // return the first non-null value found.
+ return null != extraParameters.get(componentName)
+ ? /*return*/ extraParameters.get(componentName)
+ : null != nav.getStaticParameters().get(componentName)
+ ? /*return*/ nav.getStaticParameters().get(componentName)
+ : /*return*/ state.getParameterValue(nav, componentName);
}
/**
@@ -134,14 +136,4 @@
return dataModel;
}
- private String getFirstNotNull(final String ... strings) {
-
- for (final String string : strings) {
- if (string != null) {
- return string;
- }
- }
-
- return null;
- }
}
Modified:
branches/2.16/generic.sesam/view-control/src/main/java/no/sesat/search/view/navigation/fast/FastNavigationController.java
===================================================================
---
branches/2.16/generic.sesam/view-control/src/main/java/no/sesat/search/view/navigation/fast/FastNavigationController.java
2008-03-22 21:34:34 UTC (rev 6267)
+++
branches/2.16/generic.sesam/view-control/src/main/java/no/sesat/search/view/navigation/fast/FastNavigationController.java
2008-03-22 22:46:20 UTC (rev 6268)
@@ -1,4 +1,4 @@
-/* Copyright (2005-2007) Schibsted Søk AS
+/* Copyright (2005-2008) Schibsted Søk AS
* This file is part of SESAT.
*
* SESAT is free software: you can redistribute it and/or modify
@@ -85,10 +85,11 @@
if (selectedValue != null &&
selectedValue.getString().equals(i.getTitle())) {
i.setSelected(true);
}
-
+
// If an item is selected all other items on the same
navigation level are excluded.
- if (!nav.isExcludeOtherMatches() || selectedValue == null
|| i.isSelected())
+ if (!nav.isExcludeOtherMatches() || selectedValue == null
|| i.isSelected()){
item.addResult(i);
+ }
if (sizeCounter == maxsize) {
break;
Modified:
branches/2.16/run-handler-control-spi/src/main/java/no/sesat/search/run/handler/NavigationRunHandler.java
===================================================================
---
branches/2.16/run-handler-control-spi/src/main/java/no/sesat/search/run/handler/NavigationRunHandler.java
2008-03-22 21:34:34 UTC (rev 6267)
+++
branches/2.16/run-handler-control-spi/src/main/java/no/sesat/search/run/handler/NavigationRunHandler.java
2008-03-22 22:46:20 UTC (rev 6268)
@@ -1,4 +1,4 @@
-/* Copyright (2007) Schibsted Søk AS
+/* Copyright (2007-2008) Schibsted Søk AS
* This file is part of SESAT.
*
* SESAT is free software: you can redistribute it and/or modify
@@ -21,18 +21,27 @@
import no.sesat.search.datamodel.generic.StringDataObject;
import no.sesat.search.datamodel.navigation.NavigationDataObject;
import no.sesat.search.view.NavigationControllerSpiFactory;
-import no.sesat.search.view.navigation.*;
import no.sesat.search.result.NavigationItem;
import no.sesat.search.result.BasicNavigationItem;
import no.sesat.search.site.Site;
import no.sesat.search.site.SiteContext;
-import no.sesat.search.site.config.*;
import java.util.List;
import java.util.Properties;
import java.lang.reflect.Constructor;
import javax.xml.parsers.DocumentBuilder;
+import no.sesat.search.site.config.BytecodeLoader;
+import no.sesat.search.site.config.DocumentLoader;
+import no.sesat.search.site.config.PropertiesLoader;
+import no.sesat.search.site.config.SiteClassLoaderFactory;
+import no.sesat.search.site.config.Spi;
+import no.sesat.search.view.navigation.NavigationConfig;
+import no.sesat.search.view.navigation.NavigationController;
+import no.sesat.search.view.navigation.NavigationControllerFactory;
+import no.sesat.search.view.navigation.NavigationManager;
+import no.sesat.search.view.navigation.NavigationState;
+import no.sesat.search.view.navigation.UrlGenerator;
/**
@@ -121,7 +130,9 @@
navDO.setNavigation(nav.getId(), items);
// Create a "back" navigation item.
- final NavigationItem reset = new BasicNavigationItem("reset_"
+ nav.getId(), urlGenerator.getURL("", nav) ,0);
+ final NavigationItem reset
+ = new BasicNavigationItem("reset_" + nav.getId(),
urlGenerator.getURL("", nav), 0);
+
navDO.setNavigation("reset_" + nav.getId(), reset);
}
@@ -140,7 +151,9 @@
return factory.get(navEntry).getNavigationItems(navCxt);
}
- private NavigationController.Context
createNavigationControllerContext(final UrlGenerator urlGenerator, final
Context context) {
+ private NavigationController.Context createNavigationControllerContext(
+ final UrlGenerator urlGenerator,
+ final Context context) {
return new NavigationController.Context() {
@@ -170,22 +183,31 @@
};
}
- private UrlGenerator
getUrlGeneratorInstance(SiteClassLoaderFactory.Context classLoadingContext,
NavigationConfig.Navigation navigation, Context context) {
+ private UrlGenerator getUrlGeneratorInstance(
+ final SiteClassLoaderFactory.Context classLoadingContext,
+ final NavigationConfig.Navigation navigation,
+ final Context context) {
+
try {
final SiteClassLoaderFactory f =
SiteClassLoaderFactory.instanceOf(classLoadingContext);
final Class clazz =
f.getClassLoader().loadClass(navigation.getUrlGenerator());
@SuppressWarnings("unchecked")
- final Constructor<? extends UrlGenerator> s =
clazz.getConstructor(DataModel.class, NavigationConfig.Navigation.class,
NavigationState.class);
+ final Constructor<? extends UrlGenerator> s
+ = clazz.getConstructor(DataModel.class,
NavigationConfig.Navigation.class, NavigationState.class);
return s.newInstance(context.getDataModel(), navigation,
navigationManager.getNavigationState());
+
} catch (Exception e) {
- throw new IllegalArgumentException("Unable to load desired url
generator: " + navigation.getUrlGenerator(), e);
+ throw new IllegalArgumentException(
+ "Unable to load desired url generator: " +
navigation.getUrlGenerator(),
+ e);
}
}
private SiteClassLoaderFactory.Context createClassLoadingContext(final
Context context) {
+
return new SiteClassLoaderFactory.Context() {
public BytecodeLoader newBytecodeLoader(SiteContext siteContext,
String className, String jarFileName) {
return context.newBytecodeLoader(siteContext, className,
jarFileName);
Modified:
branches/2.16/view-config-spi/src/main/java/no/sesat/search/view/config/SearchTab.java
===================================================================
---
branches/2.16/view-config-spi/src/main/java/no/sesat/search/view/config/SearchTab.java
2008-03-22 21:34:34 UTC (rev 6267)
+++
branches/2.16/view-config-spi/src/main/java/no/sesat/search/view/config/SearchTab.java
2008-03-22 22:46:20 UTC (rev 6268)
@@ -1,4 +1,4 @@
-/* Copyright (2006-2007) Schibsted Søk AS
+/* Copyright (2006-2008) Schibsted Søk AS
* This file is part of SESAT.
*
* SESAT is free software: you can redistribute it and/or modify
@@ -46,6 +46,8 @@
// Constants -----------------------------------------------------
+ public static final String PARAMETER_KEY = "c";
+
private static final Logger LOG = Logger.getLogger(SearchTab.class);
// Attributes ----------------------------------------------------
@@ -84,7 +86,7 @@
* @param rssResultName
* @param rssHidden
* @param navConf
- * @param placements
+ * @param placements
* @param enrichments
* @param adCommand
* @param adLimit
@@ -95,7 +97,7 @@
* @param displayCss
* @param executeOnBlank
* @param layouts
- * @param scope
+ * @param scope
*/
public SearchTab(
final SearchTab inherit,
@@ -289,7 +291,7 @@
}
return null;
}
-
+
/**
* Getter for property enrichments.
* @return Value of property enrichments.
@@ -365,7 +367,7 @@
public Layout getDefaultLayout() {
return defaultLayout;
}
-
+
public Map<String,Layout> getLayouts(){
return Collections.unmodifiableMap(layouts);
}
@@ -373,7 +375,7 @@
public NavigationConfig getNavigationConfiguration(){
return navigationConfig;
}
-
+
public Scope getScope(){
return scope;
}
@@ -394,7 +396,7 @@
* @param threshold
* @param weight
* @param command
- * @param properties
+ * @param properties
*/
public EnrichmentHint(
final String rule,
@@ -470,31 +472,31 @@
public Map<String,String> getProperties(){
return Collections.unmodifiableMap(properties);
}
-
+
public String getProperty(final String key){
return properties.get(key);
}
}
-
+
/** Immutable POJO holdng Enrichment Placement properties for a given
placement on a given tab. **/
public static final class EnrichmentPlacementHint implements Serializable {
private final String id;
private final int threshold;
private final int max;
private final Map<String,String> properties = new
HashMap<String,String>();
-
+
public EnrichmentPlacementHint(
final String id,
final int threshold,
final int max,
final Map<String,String> properties){
-
+
this.id = id;
this.threshold = threshold;
this.max = max;
this.properties.putAll(properties);
}
-
+
public String getId(){
return id;
}
@@ -545,7 +547,7 @@
public String getId(){
return id;
}
-
+
/**
*
* @return
Modified:
branches/2.16/view-config-spi/src/main/java/no/sesat/search/view/navigation/NavigationConfig.java
===================================================================
---
branches/2.16/view-config-spi/src/main/java/no/sesat/search/view/navigation/NavigationConfig.java
2008-03-22 21:34:34 UTC (rev 6267)
+++
branches/2.16/view-config-spi/src/main/java/no/sesat/search/view/navigation/NavigationConfig.java
2008-03-22 22:46:20 UTC (rev 6268)
@@ -1,4 +1,4 @@
-/* Copyright (2007) Schibsted Søk AS
+/* Copyright (2007-2008) Schibsted Søk AS
* This file is part of SESAT.
*
* SESAT is free software: you can redistribute it and/or modify
@@ -36,6 +36,7 @@
import java.lang.annotation.Target;
import java.lang.annotation.ElementType;
import java.lang.annotation.Inherited;
+import no.sesat.search.view.config.SearchTab;
/**
* This is a command to help generating navigation urls in the view. I got
tired of all
@@ -285,7 +286,7 @@
private boolean out;
private int maxsize;
- private Map<String, String> staticParameters;
+ private Map<String,String> staticParameters = new
HashMap<String,String>();
private List<Nav> childNavs;
private final Navigation navigation;
private final Nav parent;
@@ -312,11 +313,8 @@
fillBeanProperty(this, null, "maxsize", ParseType.Int, navElement,
"100");
fillBeanProperty(this, null, "backText", ParseType.String,
navElement, "");
fillBeanProperty(this, null, "autoNavigation", ParseType.Boolean,
navElement, "true");
-
-
- final List<Element> optionElements = getDirectChildren(navElement,
OPTION_ELEMENT);
+ // staticParameters
final List<Element> staticParamElements =
getDirectChildren(navElement, STATIC_PARAMETER_ELEMENT);
- staticParameters = new HashMap<String, String>();
for (Element staticParamElement : staticParamElements) {
String name = staticParamElement.getAttribute("name");
String value = staticParamElement.getAttribute("value");
@@ -355,7 +353,7 @@
}
public Map<String, String> getStaticParameters() {
- return staticParameters;
+ return Collections.unmodifiableMap(staticParameters);
}
public void setStaticParameters(final Map<String, String>
staticParameters) {
@@ -375,7 +373,10 @@
}
public void setTab(final String tab) {
+
this.tab = tab;
+ // The tab property takes preference over any url parameters.
intialse it here and use against urlGenerator.
+ staticParameters.put(SearchTab.PARAMETER_KEY, tab);
}
public boolean isOut() {
Modified:
branches/2.16/view-control-spi/src/main/java/no/sesat/search/view/navigation/NavigationManager.java
===================================================================
---
branches/2.16/view-control-spi/src/main/java/no/sesat/search/view/navigation/NavigationManager.java
2008-03-22 21:34:34 UTC (rev 6267)
+++
branches/2.16/view-control-spi/src/main/java/no/sesat/search/view/navigation/NavigationManager.java
2008-03-22 22:46:20 UTC (rev 6268)
@@ -1,5 +1,5 @@
/*
- * Copyright (2007) Schibsted Søk
+ * Copyright (2007-2008) Schibsted Søk
* This file is part of SESAT.
*
* SESAT is free software: you can redistribute it and/or modify
@@ -27,7 +27,7 @@
/**
* Class responsible for assembling the current navigation state.
- *
+ *
* @author maek
* @author Geir H. Pettersen(T-Rank)
* @version $Id$
@@ -103,23 +103,15 @@
/**
* Returns the value for the given navigation parameter.
*
- * @param nav the navigator.
+ * @param nav the navigator.
* @param parameterName the parameter.
*
* @return the value of the parameter. UTF-8 URL ENCODED.
*/
public String getParameterValue(final NavigationConfig.Nav nav,
final String parameterName) {
+
final String value = parameters.get(parameterName);
- // TODO: SEARCH-4105 - put this logic somewhere else to make
things faster. look at OptionNavigationController:152
- // or the c parameter should be put into
nav.getStaticParameters()
- // (where it would be used in peference to here in
AbstractUrlGenerator.getUrlComponentValue(..))
-
- // Overriding the tab with the one defined in the config.
- if ("c".equals(parameterName) && null != nav.getTab()) {
- return nav.getTab();
- }
-
if (null == value && null !=
dataModel.getParameters().getValue(parameterName)) {
return
dataModel.getParameters().getValue(parameterName).getUtf8UrlEncoded();
}
Property changes on:
branches/2.16/view-control-spi/src/main/java/no/sesat/search/view/navigation/NavigationManager.java
___________________________________________________________________
Name: svn:keywords
+ Id
Modified:
branches/2.16/view-control-spi/src/main/java/no/sesat/search/view/navigation/OptionNavigationController.java
===================================================================
---
branches/2.16/view-control-spi/src/main/java/no/sesat/search/view/navigation/OptionNavigationController.java
2008-03-22 21:34:34 UTC (rev 6267)
+++
branches/2.16/view-control-spi/src/main/java/no/sesat/search/view/navigation/OptionNavigationController.java
2008-03-22 22:46:20 UTC (rev 6268)
@@ -1,4 +1,4 @@
-/* Copyright (2005-2007) Schibsted Søk AS
+/* Copyright (2005-2008) Schibsted Søk AS
* This file is part of SESAT.
*
* SESAT is free software: you can redistribute it and/or modify
@@ -32,6 +32,7 @@
import no.sesat.search.result.NavigationItem;
import no.sesat.search.result.ResultItem;
import no.sesat.search.result.ResultList;
+import no.sesat.search.view.config.SearchTab;
/**
@@ -67,7 +68,7 @@
// Only modifies the result of the parent. Return null.
return null;
}
-
+
private void removeAll(final Collection<OptionsNavigationConfig.Option>
options, final DataModel dataModel) {
final NavigationItem parentResult =
dataModel.getNavigation().getNavigation(config.getParent().getId());
for (final Iterator<NavigationItem> iterator =
parentResult.getResults().iterator(); iterator.hasNext();) {
@@ -100,7 +101,7 @@
if ((selectedValue == null ||
"".equals(selectedValue.getString()))
&& isOptionDefaultSelected(searchResult,
option)) {
-
+
navigator.setSelected(true);
selectedValue = new StringDataObjectSupport("dummy");
}
@@ -119,8 +120,8 @@
}
private void addAll(
- final Collection<OptionsNavigationConfig.Option> optionsToAdd,
- final DataModel dataModel,
+ final Collection<OptionsNavigationConfig.Option> optionsToAdd,
+ final DataModel dataModel,
final Context context) {
final NavigationItem parentResult =
dataModel.getNavigation().getNavigation(config.getParent().getId());
@@ -145,34 +146,25 @@
}
if (value != null) {
- final Map<String,String> urlParameters;
-
- if (option.getTab() != null) {
- urlParameters = new HashMap<String,String>(1);
- urlParameters.put("c", option.getTab());
- } else {
- urlParameters = Collections.<String,String>emptyMap();
- }
-
final NavigationItem navigator = new BasicNavigationItem(
option.getDisplayName(),
- context.getUrlGenerator().getURL(value,
config.getParent(), urlParameters),
+ context.getUrlGenerator().getURL(value,
config.getParent()),
-1);
-
+
parentResult.addResult(navigator);
-
+
if (!selectionDone
&& (optionSelectedValue == null ||
"".equals(optionSelectedValue.getString()))
&& isOptionDefaultSelected(searchResult, option)) {
navigator.setSelected(true);
selectionDone = true;
-
+
} else if (optionSelectedValue != null &&
optionSelectedValue.getString().equals(value)) {
navigator.setSelected(true);
selectionDone = true;
}
-
+
if (option.isUseHitCount() && option.getCommandName() != null)
{
navigator.setHitCount(dataModel.getSearch(option.getCommandName()).getResults().getHitCount());
}
@@ -181,9 +173,9 @@
}
private boolean isOptionDefaultSelected(
- final ResultList<? extends ResultItem> result,
+ final ResultList<? extends ResultItem> result,
final OptionsNavigationConfig.Option option) {
-
+
final String valueRef = option.getDefaultSelectValueRef();
return option.isDefaultSelect()
Modified:
branches/2.16/view-control-spi/src/main/java/no/sesat/search/view/navigation/UrlGenerator.java
===================================================================
---
branches/2.16/view-control-spi/src/main/java/no/sesat/search/view/navigation/UrlGenerator.java
2008-03-22 21:34:34 UTC (rev 6267)
+++
branches/2.16/view-control-spi/src/main/java/no/sesat/search/view/navigation/UrlGenerator.java
2008-03-22 22:46:20 UTC (rev 6268)
@@ -1,5 +1,5 @@
/*
- * Copyright (2007) Schibsted Søk
+ * Copyright (2007-2008) Schibsted Søk
* This file is part of SESAT.
*
* SESAT is free software: you can redistribute it and/or modify
@@ -20,9 +20,11 @@
import java.util.Map;
/**
- * Description.
*
* You should probably not implement this interface directly but extend the
AbstractUrlGenerator instead.
+ *
+ * @author maek
+ * @version $Id: AbstractUrlGenerator.java 6066 2008-01-30 11:27:42Z ssmiweve $
*/
public interface UrlGenerator {
/**
@@ -40,7 +42,7 @@
*
* @param value the value to navigate to.
* @param nav the navigator to navigate.
- *
+ * @param extraParameters
* @return the URL including given parameters.
*/
String getURL(String value, NavigationConfig.Nav nav, Map<String, String>
extraParameters);
_______________________________________________
Kernel-commits mailing list
[email protected]
http://sesat.no/mailman/listinfo/kernel-commits