Author: gttersen
Date: 2007-03-23 13:26:56 +0100 (Fri, 23 Mar 2007)
New Revision: 4622

Modified:
   
trunk/core-api/src/main/java/no/schibstedsok/searchportal/mode/command/NavigatableESPFastCommand.java
Log:
- Added support for different navigator sorts. (This is cut/paste code from 
AbstractSimpleFastSearchCommand.)
- Removed unused methods
- Added Generic types 
- Simplified code

Modified: 
trunk/core-api/src/main/java/no/schibstedsok/searchportal/mode/command/NavigatableESPFastCommand.java
===================================================================
--- 
trunk/core-api/src/main/java/no/schibstedsok/searchportal/mode/command/NavigatableESPFastCommand.java
       2007-03-23 12:20:20 UTC (rev 4621)
+++ 
trunk/core-api/src/main/java/no/schibstedsok/searchportal/mode/command/NavigatableESPFastCommand.java
       2007-03-23 12:26:56 UTC (rev 4622)
@@ -11,6 +11,15 @@
 import com.fastsearch.esp.search.result.IModifier;
 import com.fastsearch.esp.search.result.INavigator;
 import com.fastsearch.esp.search.result.IQueryResult;
+import 
no.schibstedsok.searchportal.mode.config.NavigatableESPFastConfiguration;
+import no.schibstedsok.searchportal.result.FastSearchResult;
+import no.schibstedsok.searchportal.result.Modifier;
+import no.schibstedsok.searchportal.result.Navigator;
+import no.schibstedsok.searchportal.result.SearchResult;
+import no.schibstedsok.searchportal.util.Channels;
+import no.schibstedsok.searchportal.util.ModifierDateComparator;
+import org.apache.commons.lang.StringUtils;
+
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Collections;
@@ -18,14 +27,6 @@
 import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
-import java.util.Set;
-import no.schibstedsok.searchportal.datamodel.DataModel;
-import 
no.schibstedsok.searchportal.mode.config.NavigatableESPFastConfiguration;
-import no.schibstedsok.searchportal.result.FastSearchResult;
-import no.schibstedsok.searchportal.result.Modifier;
-import no.schibstedsok.searchportal.result.Navigator;
-import no.schibstedsok.searchportal.result.SearchResult;
-import org.apache.commons.lang.StringUtils;
 
 /**
  * This class provies an advanced fast search command with navigation
@@ -36,28 +37,24 @@
 public class NavigatableESPFastCommand extends ESPFastSearchCommand {
 
     // Attributes ----------------------------------------------------
-    private final Map<String,Navigator> navigatedTo = new 
HashMap<String,Navigator>();
-    private final Map<String,String[]> navigatedValues = new 
HashMap<String,String[]>();
+    private final Map<String, Navigator> navigatedTo = new HashMap<String, 
Navigator>();
+    private final Map<String, String[]> navigatedValues = new HashMap<String, 
String[]>();
 
 
-
     public NavigatableESPFastCommand(final Context cxt) {
 
         super(cxt);
     }
 
     public Collection createNavigationFilterStrings() {
-        final Collection filterStrings = new ArrayList();
+        final Collection<String> filterStrings = new ArrayList<String>();
 
-        for (final Iterator iterator = navigatedValues.keySet().iterator(); 
iterator.hasNext();) {
-            final String field = (String) iterator.next();
+        for (String field : navigatedValues.keySet()) {
+            final String modifiers[] = navigatedValues.get(field);
 
-            final String modifiers[] = (String[]) navigatedValues.get(field);
-
-
-            for (int i = 0; i < modifiers.length; i++) {
-                if (!field.equals("contentsource") || 
!modifiers[i].equals("Norske nyheter"))
-                    filterStrings.add("+" + field + ":\"" + modifiers[i] + 
"\"");
+            for (String modifier : modifiers) {
+                if (!field.equals("contentsource") || !modifier.equals("Norske 
nyheter"))
+                    filterStrings.add("+" + field + ":\"" + modifier + "\"");
             }
         }
 
@@ -69,8 +66,8 @@
             for (String navigatorKey : getNavigators().keySet()) {
 
                 addNavigatedTo(navigatorKey, 
getParameters().containsKey("nav_" + navigatorKey)
-                ? getParameter("nav_" + navigatorKey)
-                : null);
+                        ? getParameter("nav_" + navigatorKey)
+                        : null);
             }
         }
 
@@ -85,9 +82,9 @@
 
     public Map getOtherNavigators(final String navigatorKey) {
 
-        final Map<String,String> otherNavigators = new 
HashMap<String,String>();
+        final Map<String, String> otherNavigators = new HashMap<String, 
String>();
 
-        for (String parameterName : (Set<String>)getParameters().keySet()) {
+        for (String parameterName : getParameters().keySet()) {
 
             if (parameterName.startsWith("nav_") && 
!parameterName.substring(parameterName.indexOf('_') + 1).equals(navigatorKey)) {
                 final String paramValue = getParameter(parameterName);
@@ -96,9 +93,10 @@
         }
         return otherNavigators;
     }
+
     public void addNavigatedTo(final String navigatorKey, final String 
navigatorName) {
 
-        final Navigator navigator = (Navigator) 
getNavigators().get(navigatorKey);
+        final Navigator navigator = getNavigators().get(navigatorKey);
 
         if (navigatorName == null) {
             navigatedTo.put(navigatorKey, navigator);
@@ -108,15 +106,15 @@
     }
 
     public Navigator getNavigatedTo(final String navigatorKey) {
-        return (Navigator) navigatedTo.get(navigatorKey);
+        return navigatedTo.get(navigatorKey);
     }
 
 
     public Navigator getParentNavigator(final String navigatorKey) {
         if (getParameters().containsKey("nav_" + navigatorKey)) {
-            final String navName =  getParameter("nav_" + navigatorKey);
+            final String navName = getParameter("nav_" + navigatorKey);
 
-            return findParentNavigator((Navigator) 
getNavigators().get(navigatorKey), navName);
+            return findParentNavigator(getNavigators().get(navigatorKey), 
navName);
 
         } else {
             return null;
@@ -126,7 +124,7 @@
     public Navigator getParentNavigator(final String navigatorKey, final 
String name) {
         if (getParameters().containsKey("nav_" + navigatorKey)) {
 
-            return findParentNavigator((Navigator) 
getNavigators().get(navigatorKey), name);
+            return findParentNavigator(getNavigators().get(navigatorKey), 
name);
 
         } else {
             return null;
@@ -137,13 +135,7 @@
         if (navigator.getChildNavigator() == null) {
             return null;
         } else if 
(navigator.getChildNavigator().getName().equals(navigatorName)) {
-
-            if (true) {
-                return navigator;
-            } else {
-                return findParentNavigator(navigator.getChildNavigator(), 
navigatorName);
-
-            }
+            return navigator;
         } else {
             return findParentNavigator(navigator.getChildNavigator(), 
navigatorName);
         }
@@ -154,7 +146,7 @@
     }
 
     public String getNavigatedValue(final String fieldName) {
-        final String[] singleValue = (String[]) navigatedValues.get(fieldName);
+        final String[] singleValue = navigatedValues.get(fieldName);
 
         if (singleValue != null) {
             return (singleValue[0]);
@@ -174,7 +166,7 @@
     public String getNavigatorTitle(final String navigatorKey) {
         final Navigator nav = getNavigatedTo(navigatorKey);
 
-        Navigator parent = findParentNavigator((Navigator) 
getNavigators().get(navigatorKey), nav.getName());
+        Navigator parent = 
findParentNavigator(getNavigators().get(navigatorKey), nav.getName());
 
         String value = getNavigatedValue(nav.getField());
 
@@ -184,7 +176,7 @@
 
             if (value == null) {
 
-                parent = findParentNavigator((Navigator) 
getNavigators().get(navigatorKey), parent.getName());
+                parent = 
findParentNavigator(getNavigators().get(navigatorKey), parent.getName());
 
 
                 if (parent != null) {
@@ -214,14 +206,16 @@
         }
     }
 
-    /** Assured associated search configuration will always be of this type. 
**/
+    /**
+     * Assured associated search configuration will always be of this type. *
+     */
     public NavigatableESPFastConfiguration getSearchConfiguration() {
         return (NavigatableESPFastConfiguration) 
super.getSearchConfiguration();
     }
 
     public List getNavigatorBackLinks(final String navigatorKey) {
 
-        final List backLinks = 
addNavigatorBackLinks(getSearchConfiguration().getNavigator(navigatorKey), new 
ArrayList(), navigatorKey);
+        final List backLinks = 
addNavigatorBackLinks(getSearchConfiguration().getNavigator(navigatorKey), new 
ArrayList<Navigator>(), navigatorKey);
 
         if (backLinks.size() > 0) {
             backLinks.remove(backLinks.size() - 1);
@@ -230,7 +224,7 @@
         return backLinks;
     }
 
-    public List addNavigatorBackLinks(final Navigator navigator, final List 
links, final String navigatorKey) {
+    public List<Navigator> addNavigatorBackLinks(final Navigator navigator, 
final List<Navigator> links, final String navigatorKey) {
 
         final String a = getParameter(navigator.getField());
 
@@ -259,35 +253,6 @@
         return getSearchConfiguration().getNavigators();
     }
 
-    private String getNavigatorsString() {
-
-        if (getNavigators() != null) {
-
-            Collection allFlattened = new ArrayList();
-
-
-            for (Navigator navigator : getNavigators().values()) {
-
-                allFlattened.addAll(flattenNavigators(new ArrayList(), 
navigator));
-            }
-
-            return StringUtils.join(allFlattened.iterator(), ',');
-        } else {
-            return "";
-        }
-    }
-
-    private Collection flattenNavigators(Collection soFar, Navigator nav) {
-
-        soFar.add(nav);
-
-        if (nav.getChildNavigator() != null) {
-            flattenNavigators(soFar, nav.getChildNavigator());
-        }
-
-        return soFar;
-    }
-
     private void collectModifiers(IQueryResult result, FastSearchResult 
searchResult) {
 
         for (String navigatorKey : navigatedTo.keySet()) {
@@ -298,7 +263,7 @@
 
     private void collectModifier(String navigatorKey, IQueryResult result, 
FastSearchResult searchResult) {
 
-        final Navigator nav = (Navigator) navigatedTo.get(navigatorKey);
+        final Navigator nav = navigatedTo.get(navigatorKey);
 
         INavigator navigator = result.getNavigator(nav.getName());
 
@@ -314,8 +279,34 @@
                 }
             }
 
+
             if (searchResult.getModifiers(navigatorKey) != null) {
-                Collections.sort(searchResult.getModifiers(navigatorKey));
+                switch (nav.getSort()) {
+                    case CHANNEL:
+                        final Channels channels = (Channels) 
getParameters().get("channels");
+                        
Collections.sort(searchResult.getModifiers(navigatorKey), 
channels.getComparator());
+                        break;
+                    case DAY_MONTH_YEAR:
+                        
Collections.sort(searchResult.getModifiers(navigatorKey), 
ModifierDateComparator.DAY_MONTH_YEAR);
+                        break;
+                    case DAY_MONTH_YEAR_DESCENDING:
+                        
Collections.sort(searchResult.getModifiers(navigatorKey), 
ModifierDateComparator.DAY_MONTH_YEAR_DESCENDING);
+                        break;
+                    case YEAR:
+                        
Collections.sort(searchResult.getModifiers(navigatorKey), 
ModifierDateComparator.YEAR);
+                        break;
+                    case MONTH_YEAR:
+                        
Collections.sort(searchResult.getModifiers(navigatorKey), 
ModifierDateComparator.MONTH_YEAR);
+                        break;
+                    case NONE:
+                        // Use the soting the index returns
+                        break;
+                    case COUNT:
+                        /* Fall through */
+                    default:
+                        
Collections.sort(searchResult.getModifiers(navigatorKey));
+                        break;
+                }
             }
 
         } else if (nav.getChildNavigator() != null) {
@@ -329,7 +320,7 @@
         if (getParameters().containsKey(nav.getField())) {
 
             navigatedValues.put(nav.getField(), 
getParameters().get(nav.getField()) instanceof String[]
-                    ? (String[])getParameters().get(nav.getField())
+                    ? (String[]) getParameters().get(nav.getField())
                     : new String[]{getParameter(nav.getField())});
         }
 

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

Reply via email to