public String buildChangeLanguageUrl(final RequestData requestData) throws Exception {
    final MarketPlace marketPlace = requestData.getMarketPlace();
    final Market market = requestData.getMarket();
    final MarketArea marketArea = requestData.getMarketArea();
    final Localization localization = requestData.getMarketAreaLocalization();
    final Retailer retailer = requestData.getMarketAreaRetailer();
    final CurrencyReferential currency = requestData.getMarketAreaCurrency();

    String url =
        buildDefaultPrefix(requestData) + FoUrls.CHANGE_LANGUAGE.getUrlWithoutWildcard() + "?";
    url =
        url
            + RequestConstants.REQUEST_PARAMETER_MARKET_PLACE_CODE
            + "="
            + replaceSpaceAndUnderscore(marketPlace.getCode());
    url =
        url
            + "&"
            + RequestConstants.REQUEST_PARAMETER_MARKET_CODE
            + "="
            + replaceSpaceAndUnderscore(market.getCode());
    url =
        url
            + "&"
            + RequestConstants.REQUEST_PARAMETER_MARKET_AREA_CODE
            + "="
            + replaceSpaceAndUnderscore(marketArea.getCode());
    url =
        url
            + "&"
            + RequestConstants.REQUEST_PARAMETER_MARKET_AREA_LANGUAGE
            + "="
            + replaceSpaceAndUnderscore(localization.getCode());
    url =
        url
            + "&"
            + RequestConstants.REQUEST_PARAMETER_MARKET_AREA_RETAILER_CODE
            + "="
            + replaceSpaceAndUnderscore(retailer.getCode());
    url =
        url
            + "&"
            + RequestConstants.REQUEST_PARAMETER_MARKET_AREA_CURRENCY_CODE
            + "="
            + replaceSpaceAndUnderscore(currency.getCode());
    return url;
  }
  @RequestMapping(value = BoUrls.DELIVERY_METHOD_LIST_URL, method = RequestMethod.GET)
  public ModelAndView deliveryMethodList(final HttpServletRequest request, final Model model)
      throws Exception {
    ModelAndViewThemeDevice modelAndView =
        new ModelAndViewThemeDevice(
            getCurrentVelocityPath(request), BoUrls.DELIVERY_METHOD_LIST.getVelocityPage());
    final RequestData requestData = requestUtil.getRequestData(request);
    final MarketArea marketArea = requestData.getMarketArea();

    displayList(request, model, requestData);

    Object[] params = {marketArea.getName() + " (" + marketArea.getCode() + ")"};
    initPageTitleAndMainContentTitle(
        request, modelAndView, BoUrls.DELIVERY_METHOD_LIST.getKey() + ".by.market.area", params);

    model.addAttribute(
        ModelConstants.URL_ADD,
        backofficeUrlService.generateUrl(BoUrls.DELIVERY_METHOD_ADD, requestData));

    return modelAndView;
  }
  public String buildChangeContextUrl(final RequestData requestData) throws Exception {
    final MarketPlace marketPlace = requestData.getMarketPlace();
    final Market market = requestData.getMarket();
    final MarketArea marketArea = requestData.getMarketArea();
    final Localization localization = requestData.getMarketAreaLocalization();
    final Retailer retailer = requestData.getMarketAreaRetailer();

    String url =
        buildDefaultPrefix(requestData) + FoUrls.CHANGE_CONTEXT.getUrlWithoutWildcard() + "?";
    url =
        url
            + RequestConstants.REQUEST_PARAMETER_MARKET_PLACE_CODE
            + "="
            + handleString(marketPlace.getCode());
    url =
        url
            + "&"
            + RequestConstants.REQUEST_PARAMETER_MARKET_CODE
            + "="
            + handleString(market.getCode());
    url =
        url
            + "&"
            + RequestConstants.REQUEST_PARAMETER_MARKET_AREA_CODE
            + "="
            + handleString(marketArea.getCode());
    url =
        url
            + "&"
            + RequestConstants.REQUEST_PARAMETER_MARKET_LANGUAGE
            + "="
            + handleString(localization.getCode());
    url =
        url
            + "&"
            + RequestConstants.REQUEST_PARAMETER_RETAILER_CODE
            + "="
            + handleString(retailer.getCode());
    return url;
  }