@RequestMapping(value = BoUrls.STORE_EDIT_URL, method = RequestMethod.GET) public ModelAndView storeEdit( final HttpServletRequest request, final Model model, @ModelAttribute(ModelConstants.STORE_FORM) StoreForm storeForm) throws Exception { ModelAndViewThemeDevice modelAndView = new ModelAndViewThemeDevice( getCurrentVelocityPath(request), BoUrls.STORE_EDIT.getVelocityPage()); final RequestData requestData = requestUtil.getRequestData(request); final String storeCode = request.getParameter(RequestConstants.REQUEST_PARAMETER_STORE_CODE); if (StringUtils.isNotEmpty(storeCode)) { // EDIT MODE final Store store = retailerService.getStoreByCode(storeCode, FetchPlanGraphRetailer.fullStoreFetchPlan()); // SANITY CHECK if (store != null) { modelAndView.addObject( ModelConstants.STORE_VIEW_BEAN, backofficeViewBeanFactory.buildViewBeanStore(requestData, store)); } else { final String url = requestUtil.getLastRequestUrl(request); return new ModelAndView(new RedirectView(url)); } model.addAttribute( ModelConstants.URL_BACK, backofficeUrlService.generateUrl(BoUrls.STORE_DETAILS, requestData, store)); Object[] params = {store.getName() + " (" + store.getCode() + ")"}; initPageTitleAndMainContentTitle( request, modelAndView, BoUrls.STORE_DETAILS.getKey(), params); } else { // ADD MODE initPageTitleAndMainContentTitle(request, modelAndView, BoUrls.STORE_ADD.getKey(), null); model.addAttribute( ModelConstants.URL_BACK, backofficeUrlService.generateUrl(BoUrls.STORE_LIST, requestData)); } return modelAndView; }
@RequestMapping(value = BoUrls.STORE_DETAILS_URL, method = RequestMethod.GET) public ModelAndView storeDetails(final HttpServletRequest request, final Model model) throws Exception { ModelAndViewThemeDevice modelAndView = new ModelAndViewThemeDevice( getCurrentVelocityPath(request), BoUrls.STORE_DETAILS.getVelocityPage()); final RequestData requestData = requestUtil.getRequestData(request); final String storeCode = request.getParameter(RequestConstants.REQUEST_PARAMETER_STORE_CODE); // SANITY CHECK if (StringUtils.isEmpty(storeCode)) { final String urlRedirect = backofficeUrlService.generateUrl(BoUrls.STORE_LIST, requestData); return new ModelAndView(new RedirectView(urlRedirect)); } final Store retailer = retailerService.getStoreByCode(storeCode); // SANITY CHECK if (retailer != null) { modelAndView.addObject( ModelConstants.STORE_VIEW_BEAN, backofficeViewBeanFactory.buildViewBeanStore(requestData, retailer)); } else { final String url = requestUtil.getLastRequestUrl(request); return new ModelAndView(new RedirectView(url)); } model.addAttribute( ModelConstants.URL_BACK, backofficeUrlService.generateUrl(BoUrls.STORE_LIST, requestData)); model.addAttribute( ModelConstants.URL_RETAILER_VIEW, backofficeUrlService.generateUrl(BoUrls.RETAILER_DETAILS, requestData, retailer)); Object[] params = {retailer.getName() + " (" + retailer.getCode() + ")"}; initPageTitleAndMainContentTitle(request, modelAndView, BoUrls.STORE_DETAILS.getKey(), params); return modelAndView; }
@SuppressWarnings("unchecked") public String generateUrl( final String urlWithoutWildcard, final boolean isSEO, final RequestData requestData, Object... params) { String urlStr = null; Map<String, String> getParams = new HashMap<String, String>(); Map<String, String> urlParams = new HashMap<String, String>(); try { if (params != null) { for (Object param : params) { if (param == null) continue; if (param instanceof Retailer) { Retailer retailer = (Retailer) param; urlParams.put( RequestConstants.URL_PATTERN_RETAILER_CODE, handleParamValue(retailer.getCode())); urlStr = addFullPrefixUrl(requestData, urlStr) + replaceSpaceAndUnderscore(retailer.getName()) + "/"; } else if (param instanceof ProductSku) { ProductSku productSku = (ProductSku) param; urlParams.put( RequestConstants.URL_PATTERN_PRODUCT_SKU_CODE, handleParamValue(productSku.getCode())); urlStr = addFullPrefixUrl(requestData, urlStr); } else if (param instanceof ProductMarketing) { ProductMarketing productMarketing = (ProductMarketing) param; urlParams.put( RequestConstants.URL_PATTERN_PRODUCT_MARKETING_CODE, handleParamValue(productMarketing.getCode())); urlStr = addFullPrefixUrl(requestData, urlStr) + replaceSpaceAndUnderscore(productMarketing.getName()) + "/"; } else if (param instanceof CatalogCategoryVirtual) { CatalogCategoryVirtual category = (CatalogCategoryVirtual) param; urlParams.put( RequestConstants.URL_PATTERN_CATEGORY_CODE, handleParamValue(category.getCode())); urlStr = addFullPrefixUrl(requestData, urlStr) + replaceSpaceAndUnderscore(category.getName()) + "/"; } else if (param instanceof CatalogCategoryMaster) { CatalogCategoryMaster category = (CatalogCategoryMaster) param; urlParams.put( RequestConstants.URL_PATTERN_CATEGORY_CODE, handleParamValue(category.getCode())); urlStr = addFullPrefixUrl(requestData, urlStr) + replaceSpaceAndUnderscore(category.getName()) + "/"; } else if (param instanceof ProductBrand) { ProductBrand productBrand = (ProductBrand) param; urlParams.put( RequestConstants.URL_PATTERN_BRAND_CODE, handleParamValue(productBrand.getCode())); urlStr = addFullPrefixUrl(requestData, urlStr) + replaceSpaceAndUnderscore(productBrand.getName()) + "/"; } else if (param instanceof CartItem) { CartItem cartItem = (CartItem) param; urlParams.put( RequestConstants.URL_PATTERN_CART_ITEM_CODE, handleParamValue(cartItem.getId().toString())); } else if (param instanceof Store) { Store store = (Store) param; urlParams.put( RequestConstants.URL_PATTERN_STORE_CODE, handleParamValue(store.getCode().toString())); } else if (param instanceof Map) { getParams = (Map<String, String>) param; } else { logger.warn("Unknowned url parameter : [{}]", param); } } } if (StringUtils.isEmpty(urlStr)) { // AD THE DEFAULT PREFIX - DEFAULT PATH IS urlStr = buildDefaultPrefix(requestData); if (isSEO) { urlStr = getFullPrefixUrl(requestData); } } // REMOVE THE / AT EH END BEFORE ADDING THE /**.html segment if (urlStr.endsWith("/")) { urlStr = urlStr.substring(0, urlStr.length() - 1); } urlStr = urlStr + urlWithoutWildcard; } catch (Exception e) { logger.error("Can't build Url!", e); } return handleUrlParameters(urlStr, urlParams, getParams); }