Package com.jpoweredcart.common.system

Source Code of com.jpoweredcart.common.system.UserDataInterceptor

package com.jpoweredcart.common.system;

import java.util.Locale;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.jdbc.core.JdbcOperations;
import org.springframework.util.StringUtils;
import org.springframework.web.servlet.LocaleResolver;
import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;
import org.springframework.web.servlet.support.RequestContextUtils;

import com.jpoweredcart.common.UserAttributes;
import com.jpoweredcart.common.entity.localisation.Language;
import com.jpoweredcart.common.service.CurrencyService;
import com.jpoweredcart.common.service.LanguageService;
import com.jpoweredcart.common.service.StoreResolver;
import com.jpoweredcart.common.system.setting.DefaultSettings;
import com.jpoweredcart.common.system.setting.SettingKey;
import com.jpoweredcart.common.system.setting.SettingService;

public class UserDataInterceptor extends HandlerInterceptorAdapter {
 
  private static final Logger logger = LoggerFactory.getLogger(UserDataInterceptor.class);
 
  private JdbcOperations jdbcOperations;
 
  private SettingService settingService;
 
  private LanguageService languageService;
 
  private StoreResolver storeResolver;
 
  private CurrencyService currencyService;
 
  private String languageParam;
 
  private String currencyParam;
 
  public JdbcOperations getJdbcOperations() {
    return jdbcOperations;
  }
 
  public void setJdbcOperations(JdbcOperations jdbcOperations) {
    this.jdbcOperations = jdbcOperations;
  }
 
  public SettingService getSettingService() {
    return settingService;
  }
 
  public void setSettingService(SettingService settingService) {
    this.settingService = settingService;
  }
 
  public LanguageService getLanguageService() {
    return languageService;
  }

  public void setLanguageService(LanguageService languageService) {
    this.languageService = languageService;
  }

  public StoreResolver getStoreResolver() {
    return storeResolver;
  }

  public void setStoreResolver(StoreResolver storeResolver) {
    this.storeResolver = storeResolver;
  }
 
  public CurrencyService getCurrencyService() {
    return currencyService;
  }

  public void setCurrencyService(CurrencyService currencyService) {
    this.currencyService = currencyService;
  }

  public String getLanguageParam() {
    return languageParam;
  }

  public void setLanguageParam(String languageParam) {
    this.languageParam = languageParam;
  }

  public String getCurrencyParam() {
    return currencyParam;
  }
 
  public void setCurrencyParam(String currencyParam) {
    this.currencyParam = currencyParam;
  }
 
  @Override
  public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
      throws ServletException {
   
    HttpSession session = request.getSession();
   
    UserAttributes userAttrs = (UserAttributes)session.getAttribute(UserAttributes.NAME);
    if(userAttrs==null){
      userAttrs = new UserAttributes();
      userAttrs.setStoreId(storeResolver.getStoreId(
          request.getRequestURL().toString()));
      userAttrs.setLanguageId(DefaultSettings.LANGUAGE_ID);
      userAttrs.setCurrencyCode(currencyService.getDefaultCurrencyCode());
      session.setAttribute(UserAttributes.NAME, userAttrs);
    }
   
    String langCode = request.getParameter(this.languageParam);
    if (langCode != null) {
      LocaleResolver localeResolver = RequestContextUtils.getLocaleResolver(request);
      if (localeResolver == null) {
        throw new IllegalStateException("No LocaleResolver found: not in a DispatcherServlet request?");
      }
     
      Locale locale = StringUtils.parseLocaleString(langCode);
      localeResolver.setLocale(request, response, locale);
     
      Language language = languageService.getByCode(langCode);
      if(language!=null){
        userAttrs.setLanguageId(language.getId());
        locale = language.getLocale();
      }else{
        logger.warn("Language id not found for code: {}", langCode);
      }
    }
   
    String currencyCode = request.getParameter(this.currencyParam);
    if(currencyCode != null){
      if(!currencyService.has(currencyCode)){
        currencyCode = settingService.getConfig(
            userAttrs.getStoreId(), SettingKey.CFG_CURRENCY);
      }
      userAttrs.setCurrencyCode(currencyCode);
    }
   
    return true;
  }
 
}
TOP

Related Classes of com.jpoweredcart.common.system.UserDataInterceptor

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.