/** * 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.resolver; import java.io.Serializable; import java.util.Enumeration; import java.util.HashMap; import java.util.Locale; import java.util.Map; import javax.annotation.Nullable; import javax.servlet.http.HttpServletRequest; import net.sourceforge.wurfl.core.Device; import org.apache.commons.lang.BooleanUtils; import org.apache.commons.lang.StringUtils; import org.hoteia.qalingo.core.domain.Cart; import org.hoteia.qalingo.core.domain.CatalogMaster; import org.hoteia.qalingo.core.domain.CatalogVirtual; import org.hoteia.qalingo.core.domain.Company; import org.hoteia.qalingo.core.domain.CurrencyReferential; import org.hoteia.qalingo.core.domain.Customer; import org.hoteia.qalingo.core.domain.Localization; import org.hoteia.qalingo.core.domain.Market; import org.hoteia.qalingo.core.domain.MarketArea; import org.hoteia.qalingo.core.domain.MarketPlace; import org.hoteia.qalingo.core.domain.Retailer; import org.hoteia.qalingo.core.domain.User; import org.hoteia.qalingo.core.pojo.GeolocData; public class RequestData implements Serializable { /** * Generated UID */ private static final long serialVersionUID = 6012861562514088614L; private String contextNameValue; private String contextPath; private String VelocityEmailPrefix; private HttpServletRequest request; private MarketPlace marketPlace; private Market market; private MarketArea marketArea; private Localization marketAreaLocalization; private Retailer marketAreaRetailer; private CurrencyReferential marketAreaCurrency; private Cart cart; private Localization backofficeLocalization; private Customer customer; private User user; private Company company; private GeolocData geolocData; private Device device; private Map<String, Object> additionalAttributes = new HashMap<String, Object>(); public RequestData() { } public RequestData(String contextPath) { this.contextPath = contextPath; } public RequestData(MarketPlace marketPlace, Market market, MarketArea marketArea, Localization localization, Retailer retailer) { this.marketPlace = marketPlace; this.market = market; this.marketArea = marketArea; this.marketAreaLocalization = localization; this.marketAreaRetailer = retailer; } public String getContextNameValue() { return contextNameValue; } public void setContextNameValue(String contextNameValue) { this.contextNameValue = contextNameValue; } public String getContextPath() { if (StringUtils.isNotEmpty(contextPath) && contextPath.endsWith("/")) { return contextPath.substring(0, contextPath.length() - 1); } return contextPath; } public void setContextPath(String contextPath) { this.contextPath = contextPath; } public void switchContextPathByMarketAreaDomainName() { this.contextPath = "http://" + marketArea.getDomainName(contextNameValue) + "/"; } public String getVelocityEmailPrefix() { return VelocityEmailPrefix; } public void setVelocityEmailPrefix(String velocityEmailPrefix) { VelocityEmailPrefix = velocityEmailPrefix; } public HttpServletRequest getRequest() { return request; } public void setRequest(HttpServletRequest request) { this.request = request; } public Map<String, String> getRequestParams() { if (request != null) { Map<String, String> params = new HashMap<String, String>(); Enumeration<String> parameterNames = request.getParameterNames(); if (parameterNames != null) { while (parameterNames.hasMoreElements()) { String paramName = (String) parameterNames.nextElement(); params.put(paramName, request.getParameter(paramName)); } } return params; } return null; } public MarketPlace getMarketPlace() { return marketPlace; } public void setMarketPlace(MarketPlace marketPlace) { this.marketPlace = marketPlace; } public CatalogMaster getMasterCatalog() { if(marketPlace != null && marketPlace.getMasterCatalog() != null){ return marketPlace.getMasterCatalog(); } return null; } public String getMasterCatalogCode() { if(getMasterCatalog() != null){ return getMasterCatalog().getCode(); } return null; } public Market getMarket() { return market; } public void setMarket(Market market) { this.market = market; } public MarketArea getMarketArea() { return marketArea; } public CatalogVirtual getVirtualCatalog() { if(marketArea != null && marketArea.getCatalog() != null){ return marketArea.getCatalog(); } return null; } public String getVirtualCatalogCode() { if(getVirtualCatalog() != null){ return getVirtualCatalog().getCode(); } return null; } public void setMarketArea(MarketArea marketArea) { this.marketArea = marketArea; } public Localization getMarketAreaLocalization() { return marketAreaLocalization; } public void setMarketAreaLocalization(Localization localization) { this.marketAreaLocalization = localization; } public Retailer getMarketAreaRetailer() { return marketAreaRetailer; } public void setMarketAreaRetailer(Retailer retailer) { this.marketAreaRetailer = retailer; } public CurrencyReferential getMarketAreaCurrency() { return marketAreaCurrency; } public void setMarketAreaCurrency(CurrencyReferential marketAreaCurrency) { this.marketAreaCurrency = marketAreaCurrency; } @Nullable public Cart getCart() { return cart; } public void setCart(Cart cart) { this.cart = cart; } public Localization getBackofficeLocalization() { return backofficeLocalization; } public void setBackofficeLocalization(Localization backofficeLocalization) { this.backofficeLocalization = backofficeLocalization; } public Locale getLocale(){ Locale locale = new Locale ("en"); try { if(isBackoffice()){ if(backofficeLocalization != null){ locale = backofficeLocalization.getLocale(); } } else { locale = marketAreaLocalization.getLocale(); } } catch (Exception e) { // WE DON'T NEED THE LOG } return locale; } public String getLanguageCode(){ Locale locale = getLocale(); if(locale != null){ return locale.getLanguage(); } return null; } public Customer getCustomer() { return customer; } public void setCustomer(Customer customer) { this.customer = customer; } public User getUser() { return user; } public void setUser(User user) { this.user = user; } public Company getCompany() { return company; } public void setCompany(Company company) { this.company = company; } public GeolocData getGeolocData() { return geolocData; } public void setGeolocData(GeolocData geolocData) { this.geolocData = geolocData; } public boolean isGeolocatedByIp() throws Exception { if (geolocData != null && geolocData.getCity() != null && StringUtils.isNotEmpty(geolocData.getCity().getName())) { return true; } return false; } public Device getDevice() { return device; } public void setDevice(Device device) { this.device = device; } public boolean isBot() throws Exception { try { if (device != null && device.getVirtualCapabilities() != null) { return BooleanUtils.toBoolean(device.getCapability("is_bot")); } } catch (Exception e) { // NOTHING } return false; } public Map<String, Object> getAdditionalAttributes() { return additionalAttributes; } public Object getAdditionalAttribute(String key) { return additionalAttributes.get(key); } public void setAdditionalAttributes(Map<String, Object> additionalAttributes) { this.additionalAttributes = additionalAttributes; } public boolean isBackoffice() throws Exception { return getContextNameValue() != null && getContextNameValue().contains("BO_"); } }