Author: ssmiweve
Date: 2007-06-15 12:38:35 +0200 (Fri, 15 Jun 2007)
New Revision: 5335

Removed:
   
trunk/core-api/src/main/java/no/schibstedsok/searchportal/mode/command/NavigationCommand.java
Log:
wolf dressed up as a dawdle duckling


Deleted: 
trunk/core-api/src/main/java/no/schibstedsok/searchportal/mode/command/NavigationCommand.java
===================================================================
--- 
trunk/core-api/src/main/java/no/schibstedsok/searchportal/mode/command/NavigationCommand.java
       2007-06-14 16:54:31 UTC (rev 5334)
+++ 
trunk/core-api/src/main/java/no/schibstedsok/searchportal/mode/command/NavigationCommand.java
       2007-06-15 10:38:35 UTC (rev 5335)
@@ -1,384 +0,0 @@
-package no.schibstedsok.searchportal.mode.command;
-
-import no.schibstedsok.searchportal.datamodel.generic.StringDataObject;
-import no.schibstedsok.searchportal.datamodel.generic.StringDataObjectSupport;
-import no.schibstedsok.searchportal.mode.config.NavigationCommandConfig;
-import no.schibstedsok.searchportal.result.BasicResultList;
-import no.schibstedsok.searchportal.result.BasicNavigationItem;
-import no.schibstedsok.searchportal.result.FastSearchResult;
-import no.schibstedsok.searchportal.result.Modifier;
-import no.schibstedsok.searchportal.result.NavigationItem;
-import no.schibstedsok.searchportal.result.ResultItem;
-import no.schibstedsok.searchportal.result.ResultList;
-import org.apache.log4j.Logger;
-
-import java.io.UnsupportedEncodingException;
-import java.net.URLEncoder;
-import java.util.ArrayList;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Set;
-
-/**
- * This is a command to help generating navigation urls in the view. I got 
tired of all
- * the URL handling velocity code. Some of the effects from this is virtually 
impossible to
- * code in velocity.
- * <p/>
- * TODO This should be a multiResult resulthandler, but right now this just a 
waiting searchCommand.
- * Usually there will be no real waiting since the calls on the results occur 
from velocity.
- * <p/>
- * As a bonus from using this, you don't need to data-model the commands that 
only are
- * there for navigation.
- *
- * @author Geir H. Pettersen(T-Rank)
- */
-public final class NavigationCommand extends AbstractSearchCommand {
-
-    private static final Logger LOG = 
Logger.getLogger(NavigationCommand.class);
-
-    /**
-     * @param cxt The context to execute in.
-     */
-    public NavigationCommand(Context cxt) {
-        super(cxt);
-    }
-
-    public ResultList<? extends ResultItem> execute() {
-        NavigationCommandConfig config = getSearchConfiguration();
-        return new 
ExtendedNavigationSearchResult(config.getExtendedNavigationConfig(), context);
-    }
-
-    @Override
-    public NavigationCommandConfig getSearchConfiguration() {
-        return (NavigationCommandConfig) super.getSearchConfiguration();
-    }
-
-    public static class ExtendedNavigationSearchResult extends 
BasicResultList<ResultItem> {
-
-        private final ExtendedNavigation extendedNavigation;
-
-
-        /**
-         * @param command
-         * @param extendedNavigationConfig
-         * @param context
-         */
-        public ExtendedNavigationSearchResult(
-                final NavigationCommandConfig.ExtendedNavigationConfig 
extendedNavigationConfig,
-                final Context context) {
-
-            super();
-            this.extendedNavigation = new 
ExtendedNavigation(extendedNavigationConfig, context);
-        }
-
-        /**
-         * @return
-         */
-        public ExtendedNavigation getExtendedNavigation() {
-            return extendedNavigation;
-        }
-    }
-
-    /**
-     *
-     */
-    public static final class ExtendedNavigation {
-
-        private final NavigationCommandConfig.ExtendedNavigationConfig 
extendedNavigationConfig;
-        private final Context context;
-
-
-        /**
-         * @param extendedNavigationConfig
-         * @param context
-         */
-        public ExtendedNavigation(
-                final NavigationCommandConfig.ExtendedNavigationConfig 
extendedNavigationConfig,
-                final Context context) {
-
-            this.extendedNavigationConfig = extendedNavigationConfig;
-            this.context = context;
-        }
-
-        /**
-         * @param id
-         * @return
-         */
-        public NavigationCommandConfig.Navigation getNavigation(String id) {
-            return extendedNavigationConfig.getNavigationMap().get(id);
-        }
-
-        /**
-         * Returns extended navigators for a name(id)
-         *
-         * @param name the id of the navigator to get.
-         * @return a list with extended navigators
-         */
-        public NavigationItem getNavigators(final String name) {
-            
-            NavigationCommandConfig.Nav navEntry = 
extendedNavigationConfig.getNavMap().get(name);
-            try {
-                if (navEntry != null) {
-                    boolean selectionDone = false;
-                    StringDataObject selectedValue = 
context.getDataModel().getParameters().getValue(name);
-                    final NavigationItem extendedNavigators = new 
BasicNavigationItem();
-                    FastSearchResult fsr = null;
-                    
-                    if (navEntry.getCommandName() != null) {
-                        final ResultList<? extends ResultItem> searchResult 
-                                = getSearchResult(navEntry.getCommandName(), 
context.getDataModel());
-                        
-                        if (searchResult instanceof FastSearchResult) {
-                            fsr = (FastSearchResult) searchResult;
-                            final List<Modifier> modifiers = 
fsr.getModifiers(navEntry.isRealNavigator() 
-                                    ? navEntry.getField() 
-                                    : name);
-                            
-                            if (modifiers != null && modifiers.size() > 0) {
-                                for (Modifier modifier : modifiers) {
-                                    
-                                    final String navigatorName = 
modifier.getNavigator() == null 
-                                            ? null 
-                                            : 
modifier.getNavigator().getName();
-                                    
-                                    final String urlFragment 
-                                            = getUrlFragment(navEntry, 
modifier.getName(), navigatorName);
-                                    
-                                    final NavigationItem navigator 
-                                            = new 
BasicNavigationItem(modifier.getName(), urlFragment, modifier.getCount());
-                                    
-                                    if (!selectionDone) {
-                                        selectedValue = 
context.getDataModel().getParameters().getValue(navEntry.getField());
-                                        if (selectedValue != null && 
selectedValue.getString().equals(modifier.getName())) {
-                                            navigator.setSelected(true);
-                                            selectionDone = true;
-                                        }
-                                    }
-                                    extendedNavigators.addResult(navigator);
-                                }
-                            }
-                        }
-                    }
-                    getOptionNavigators(navEntry, fsr, extendedNavigators, 
selectedValue);
-                    return extendedNavigators;
-                }
-
-            } catch (InterruptedException e) {
-                LOG.error("Could not get searchResult for " + 
navEntry.getCommandName(), e);
-            }
-            return null;
-        }
-
-
-        private void getOptionNavigators(
-                final NavigationCommandConfig.Nav navEntry,
-                final FastSearchResult fsr,
-                final NavigationItem extendedNavigators,
-                StringDataObject selectedValue) throws InterruptedException {
-
-            // Only used by getNavigators. Mainly to split code.
-            if (extendedNavigators.getResults().size() > 0 && 
navEntry.getOptions().size() > 0) {
-                
-                final List<NavigationItem> toRemove = new 
ArrayList<NavigationItem>();
-                
-                // Navigators already collected. Options is override
-                for (NavigationItem navigator : 
extendedNavigators.getResults()) {
-                    boolean match = false;
-                    
-                    // Double loop to find match in two lists. Not nice, but 
it works.
-                    for (NavigationCommandConfig.Option option : 
navEntry.getOptions()) {
-                        final String value = option.getValue();
-                        if (navigator.getTitle().equals(value)) {
-                            match = true;
-                            if (selectedValue == null && 
option.isDefaultSelect()) {
-                                navigator.setSelected(true);
-                                selectedValue = new 
StringDataObjectSupport("dummy");
-                            }
-                            if (option.getDisplayName() != null) {
-                                navigator.setTitle(option.getDisplayName());
-                            }
-                        }
-                    }
-                    if (!match) {
-                        toRemove.add(navigator);
-                    }
-                }
-                for(NavigationItem item : toRemove){
-                    extendedNavigators.removeResult(item);
-                }
-                
-            } else {
-                final StringDataObject optionSelectedValue 
-                        = 
context.getDataModel().getParameters().getValue(navEntry.getField());
-                
-                for (NavigationCommandConfig.Option option : 
navEntry.getOptions()) {
-                    
-                    String value = option.getValue();
-                    if (option.getValueRef() != null && fsr != null) {
-                        String tmp = fsr.getField(option.getValueRef());
-                        if (tmp != null && tmp.length() > 0) {
-                            value = tmp;
-                        }
-                    }
-                    NavigationItem navigator = null;
-                    if (value != null) {
-                        navigator = new 
BasicNavigationItem(option.getDisplayName(), getUrlFragment(navEntry, value), 
-1);
-                        extendedNavigators.addResult(navigator);
-                        if (optionSelectedValue == null && 
option.isDefaultSelect()) {
-                            navigator.setSelected(true);
-                        } else if (optionSelectedValue != null && 
optionSelectedValue.getString().equals(value)) {
-                            navigator.setSelected(true);
-                        }
-                    }
-                    if (navigator != null && option.isUseHitCount()) {
-                        if (option.getCommandName() != null) {
-                            LOG.debug("Waiting for searchCommand: " + 
option.getCommandName());
-                            
navigator.setHitCount(getSearchResult(option.getCommandName(), 
context.getDataModel()).getHitCount());
-                        } else {
-                            LOG.error("Can not set hitCount. Option: " + 
option + " is set to use hitCount, but commandName not set. ");
-                        }
-                    }
-                }
-            }
-        }
-
-        /**
-         * Gets the url fragment you should use when navigating on this value.
-         *
-         * @param navigator the navigator you are using
-         * @param value     the specific field you are using
-         * @return a url fragemt to use
-         */
-        public String getUrlFragment(final String navigator, final String 
value) {
-            NavigationCommandConfig.Nav navEntry = 
extendedNavigationConfig.getNavMap().get(navigator);
-            return getUrlFragment(navEntry, value);
-        }
-
-        private String getUrlFragment(final NavigationCommandConfig.Nav 
navEntry, final String value) {
-            return getUrlFragment(navEntry, value, null);
-        }
-
-        /**
-         * @param navEntry
-         * @param value
-         * @param navigatorName
-         * @return
-         */
-        public String getUrlFragment(
-                final NavigationCommandConfig.Nav navEntry,
-                final String value,
-                final String navigatorName) {
-
-            final StringBuilder sb = new StringBuilder();
-            String tab = navEntry.getTab();
-            if (tab == null) {
-                tab = 
context.getDataModel().getParameters().getValue("c").getUtf8UrlEncoded();
-            }
-            sb.append("c=").append(tab);
-            if (!navEntry.isExcludeQuery()) {
-                
sb.append("&q=").append(context.getDataModel().getQuery().getUtf8UrlEncoded());
-            }
-            if (value != null && value.length() > 0) {
-                
sb.append('&').append(enc(navEntry.getField())).append('=').append(enc(value));
-                if (navEntry.isRealNavigator() && navigatorName != null) {
-                    
sb.append('&').append("nav_").append(enc(navEntry.getField())).append('=').append(enc(navigatorName));
-                }
-            }
-            if (!navEntry.isOut()) {
-                addParentFragment(sb, navEntry);
-                for (NavigationCommandConfig.Navigation navigation : 
extendedNavigationConfig.getNavigationList()) {
-                    if (navigation != navEntry.getNavigation()) {
-                        addNavigationFragments(navigation, sb, navEntry);
-                    }
-                }
-            }
-            for (String key : navEntry.getStaticParameters().keySet()) {
-                addFragment(sb, navEntry, key, 
navEntry.getStaticParameters().get(key));
-            }
-            return sb.toString();
-        }
-
-        private void addNavigationFragments(
-                final NavigationCommandConfig.Navigation navigation,
-                final StringBuilder sb,
-                final NavigationCommandConfig.Nav navEntry) {
-
-            final Set<String> fieldFilterSet = new HashSet<String>();
-            for (NavigationCommandConfig.Nav nav : navigation.getNavList()) {
-                addNavigationFragment(fieldFilterSet, nav, sb, navEntry);
-            }
-        }
-
-        private void addNavigationFragment(
-                final Set<String> fieldFilterSet,
-                final NavigationCommandConfig.Nav nav,
-                final StringBuilder sb,
-                final NavigationCommandConfig.Nav navEntry) {
-
-            StringDataObject fieldValue = 
context.getDataModel().getParameters().getValue(nav.getField());
-            if (!fieldFilterSet.contains(nav.getField())) {
-                addPreviousField(fieldValue, sb, navEntry, nav.getField());
-                fieldFilterSet.add(nav.getField());
-                for (String staticKey : nav.getStaticParameters().keySet()) {
-                    fieldValue = 
context.getDataModel().getParameters().getValue(staticKey);
-                    if (!fieldFilterSet.contains(staticKey)) {
-                        addPreviousField(fieldValue, sb, navEntry, staticKey);
-                    }
-                }
-                if (nav.getChildNavs() != null) {
-                    for (NavigationCommandConfig.Nav childNav : 
nav.getChildNavs()) {
-                        addNavigationFragment(fieldFilterSet, childNav, sb, 
navEntry);
-                    }
-                }
-            }
-        }
-
-        private void addPreviousField(
-                StringDataObject fieldValue,
-                final StringBuilder sb,
-                final NavigationCommandConfig.Nav navEntry,
-                final String fieldName) {
-
-            if (fieldValue != null && addFragment(sb, navEntry, fieldName, 
fieldValue.getString())) {
-                fieldValue = 
context.getDataModel().getParameters().getValue("nav_" + fieldName);
-                if (fieldValue != null) {
-                    addFragment(sb, navEntry, "nav_" + fieldName, 
fieldValue.getString());
-                }
-            }
-        }
-
-        private boolean addFragment(
-                final StringBuilder sb,
-                final NavigationCommandConfig.Nav nav,
-                final String id,
-                final String value) {
-
-            if (!nav.getNavigation().getResetNavSet().contains(id)) {
-                sb.append('&').append(enc(id)).append('=').append(enc(value));
-                return true;
-            }
-            return false;
-        }
-
-        private void addParentFragment(final StringBuilder sb, final 
NavigationCommandConfig.Nav navEntry) {
-            NavigationCommandConfig.Nav parentNav = navEntry.getParentNav();
-            if (parentNav != null) {
-                StringDataObject fieldValue = 
context.getDataModel().getParameters().getValue(parentNav.getField());
-                addPreviousField(fieldValue, sb, navEntry, 
parentNav.getField());
-                addParentFragment(sb, parentNav);
-            }
-        }
-
-        private String enc(final String str) {
-
-            try {
-                return URLEncoder.encode(str, "UTF-8");
-            } catch (UnsupportedEncodingException e) {
-                LOG.fatal("UTF-8 encoding not available");
-            }
-            return str;
-        }
-    }
-
-}

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

Reply via email to