Rev 3903 | Rev 6152 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed
package in.shop2020.serving.controllers;import in.shop2020.serving.interceptors.SourceAware;import in.shop2020.serving.interceptors.TrackingInterceptor;import in.shop2020.serving.interceptors.UserAware;import in.shop2020.serving.interceptors.UserInterceptor;import in.shop2020.serving.services.PageLoaderHandler;import in.shop2020.serving.services.UserSessionInfo;import in.shop2020.serving.utils.DesEncrypter;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;import javax.servlet.http.Cookie;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import javax.servlet.http.HttpSession;import org.apache.log4j.Logger;import org.apache.struts2.interceptor.ServletRequestAware;import org.apache.struts2.interceptor.ServletResponseAware;import com.opensymphony.xwork2.ValidationAwareSupport;/*** Base class for all user action handlers i.e. controllers** @author rajveer*/public abstract class BaseController extends ValidationAwareSupport implementsServletResponseAware, ServletRequestAware, UserAware, SourceAware {/****/private static final long serialVersionUID = 1L;protected Map<String, Cookie> cookiesMap = null;protected HttpServletResponse response;protected HttpServletRequest request;protected HttpSession session;protected String domainName;protected UserSessionInfo userinfo = null;private static Logger log = Logger.getLogger(Class.class);private DesEncrypter desEncrypter = new DesEncrypter(UserInterceptor.COOKIE_DECRYPTION_STRING);protected Cookie userCookie = null;protected Map<String, String> htmlSnippets;PageLoaderHandler pageLoader = null;protected long sourceId;public BaseController() {pageLoader = new PageLoaderHandler();htmlSnippets = new HashMap<String, String>();}@Overridepublic void setCookiesMap(Map<String, Cookie> cookiesMap) {log.info("Received cookiesMap.");this.cookiesMap = cookiesMap;}@Overridepublic void setServletResponse(HttpServletResponse response) {this.response = response;}@Overridepublic void setServletRequest(HttpServletRequest request) {this.request = request;}@Overridepublic void setSession(HttpSession session) {this.session = session;}@Overridepublic void setUserSessionInfo(UserSessionInfo userInfo) {this.userinfo = userInfo;}@Overridepublic void setUserCookie(Cookie userCookie) {if(userCookie != null){log.info("cookie name is:" + userCookie.getName() + " value is:"+ userCookie.getValue() + " path : " + userCookie.getPath());}this.userCookie = userCookie;}@Overridepublic void setCookieDomainName(String domainName) {this.domainName = domainName;}@Overridepublic void setSourceId(long sourceId){this.sourceId = sourceId;}public String getHeaderSnippet() {String url = request.getQueryString();log.info("Query String is: " + url);if (url == null) {url = "";} else {url = "?" + url;}url = request.getRequestURI() + url;return pageLoader.getHeaderHtml(userinfo.isLoggedIn(),userinfo.getNameOfUser(), url, -1, true);}public String getSearchBarSnippet() {//FIXME From where it is called, need to pass categoryreturn pageLoader.getSearchBarHtml(userinfo.getTotalItems(), 10000);}public String getCartWidgetSnippet() {//FIXME From where it is called, need to pass categoryreturn pageLoader.getCartWidgetSnippet(userinfo.getTotalItems(), userinfo.getTotalAmount());}public UserSessionInfo getUserInfo(){return this.userinfo;}@Overridepublic List<Cookie> getCookies() {List<Cookie> cookies = new ArrayList<Cookie>();long userId = userinfo.getUserId();if(userId != -1){String newUserinfoCookieValue = UserSessionInfo.getUserinfoCookieValueFromUserSessionInfo(userinfo);Cookie userinfoCookie = cookiesMap.get(UserInterceptor.USER_INFO_COOKIE_NAME);if( userinfoCookie == null || !newUserinfoCookieValue.equals(userinfoCookie.getValue())){log.info("Set user session info cookie if it has been changed.");userinfoCookie = new Cookie(UserInterceptor.USER_INFO_COOKIE_NAME, newUserinfoCookieValue);userinfoCookie.setMaxAge(UserInterceptor.SECONDS_IN_YEAR); // one yearuserinfoCookie.setPath("/");userinfoCookie.setDomain(domainName);cookiesMap.put(UserInterceptor.USER_INFO_COOKIE_NAME, userinfoCookie);cookies.add(userinfoCookie);}Cookie userCookie = cookiesMap.get(UserInterceptor.USER_ID_COOKIE_NAME);String encryptedUserId = desEncrypter.encrypt(userId + "");if(userCookie == null || !(encryptedUserId + "").equals(userCookie.getValue())){userinfoCookie = new Cookie(UserInterceptor.USER_ID_COOKIE_NAME, encryptedUserId);userinfoCookie.setMaxAge(UserInterceptor.SECONDS_IN_YEAR); // one yearuserinfoCookie.setPath("/");userinfoCookie.setDomain(domainName);cookiesMap.put(UserInterceptor.USER_INFO_COOKIE_NAME, userinfoCookie);cookies.add(userinfoCookie);}}return cookies;}public void clearUserCookies(){Cookie uidCookie = cookiesMap.get(UserInterceptor.USER_ID_COOKIE_NAME);uidCookie.setDomain(domainName);uidCookie.setPath("/");uidCookie.setValue("");uidCookie.setMaxAge(0);this.response.addCookie(uidCookie);Cookie uicCookie = cookiesMap.get(UserInterceptor.USER_INFO_COOKIE_NAME);uicCookie.setDomain(domainName);uicCookie.setPath("/");uicCookie.setValue("");uicCookie.setMaxAge(0);this.response.addCookie(uicCookie);}/*** Get the session_id cookie to track user session.* It also creates the new cookie using current jsessionid if it was absent.** @return sessionId*/public String getSessionId() {Cookie sessionIdCookie = cookiesMap.get(TrackingInterceptor.SESSION_ID_COOKIE);if (sessionIdCookie == null) {//session idString sessionId = request.getSession().getId();sessionIdCookie = new Cookie(TrackingInterceptor.SESSION_ID_COOKIE, sessionId);sessionIdCookie.setPath("/");if (!domainName.isEmpty()) {sessionIdCookie.setDomain(domainName);}cookiesMap.put(TrackingInterceptor.SESSION_ID_COOKIE, sessionIdCookie);response.addCookie(sessionIdCookie);}return sessionIdCookie.getValue();}public String getCookie(String cookieName, boolean isEncripted, String encriptionString) {Cookie cookie = (Cookie) cookiesMap.get(cookieName);String cookieVal = null;if (cookie != null) {cookieVal = cookie.getValue();if (isEncripted) {DesEncrypter desEncrypter = new DesEncrypter(encriptionString);cookieVal = desEncrypter.decrypt(cookieVal);}}return cookieVal;}}