/** * Most of the code in the Qalingo project is copyrighted Hoteia and licensed * under the Apache License Version 2.0 (release version 0.8.0) * http://www.apache.org/licenses/LICENSE-2.0 * * Copyright (c) Hoteia, 2012-2014 * http://www.hoteia.com - http://twitter.com/hoteia - contact@hoteia.com * */ package org.hoteia.qalingo.core.web.servlet; import java.util.Locale; import java.util.Map; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.web.servlet.View; public class DispatcherServlet extends org.springframework.web.servlet.DispatcherServlet { private final Logger logger = LoggerFactory.getLogger(getClass()); /** * Generated UID */ private static final long serialVersionUID = 2588762975032561784L; protected void doDispatch(HttpServletRequest request, HttpServletResponse response) throws Exception { // initPlatformTheme(request); // initPlatformDevice(request); super.doDispatch(request, response); } @Override protected View resolveViewName(String viewName, Map<String, Object> model, Locale locale, HttpServletRequest request) throws Exception { View view = super.resolveViewName(viewName, model, locale, request); if(view == null){ String fullViewNameSplit[] = viewName.split("/"); if(fullViewNameSplit.length > 1){ String theme = fullViewNameSplit[1]; String deviceDefaultViewName = "/" + theme + "/www/default"; for (int i = 4; i < fullViewNameSplit.length; i++) { String string = fullViewNameSplit[i]; deviceDefaultViewName = deviceDefaultViewName + "/" + string; } view = super.resolveViewName(deviceDefaultViewName, model, locale, request); } if(view == null){ String fullDefaultViewName = "/default/www/default"; for (int i = 4; i < fullViewNameSplit.length; i++) { String string = fullViewNameSplit[i]; fullDefaultViewName = fullDefaultViewName + "/" + string; } view = super.resolveViewName(fullDefaultViewName, model, locale, request); } } return view; } // private void initPlatformTheme(HttpServletRequest request){ // final ServletContext context = getServletContext(); // final ApplicationContext ctx = WebApplicationContextUtils.getRequiredWebApplicationContext(context); // final RequestUtil requestUtil = (RequestUtil) ctx.getBean("requestUtil"); // // // THEME // try { // final RequestData requestData = requestUtil.getRequestData(request); // User user = requestData.getUser(); // if(user !=null){ // final Company company = user.getCompany(); // if(company != null // && StringUtils.isNotEmpty(company.getTheme())){ // String themeFolder = company.getTheme(); // requestUtil.updateCurrentTheme(request, themeFolder); // } // } // // } catch (Exception e) { // logger.error("", e); // } // } // // private void initPlatformDevice(HttpServletRequest request){ // final ServletContext context = getServletContext(); // final ApplicationContext ctx = WebApplicationContextUtils.getRequiredWebApplicationContext(context); // final RequestUtil requestUtil = (RequestUtil) ctx.getBean("requestUtil"); // // // DEVICE // try { // final WURFLHolder wurfl = (WURFLHolder) ctx.getBean("wurflHolder"); // final WURFLManager manager = wurfl.getWURFLManager(); // Device device = manager.getDeviceForRequest(request); // String deviceFolder = "default"; // if(device != null){ // boolean isSmartPhone = BooleanUtils.toBoolean(device.getVirtualCapability("is_smartphone")); // boolean isIPhoneOs = BooleanUtils.toBoolean(device.getVirtualCapability("is_iphone_os")); // boolean isAndroid = BooleanUtils.toBoolean(device.getVirtualCapability("is_android")); // if(isSmartPhone // || isIPhoneOs // || isAndroid){ // deviceFolder = "mobile"; // } // } // requestUtil.updateCurrentDevice(requestUtil.getRequestData(request), deviceFolder); // // } catch (Exception e) { // logger.error("", e); // } // } }