Subversion Repositories SmartDukaan

Rev

Rev 2998 | Rev 3203 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
317 ashish 1
package in.shop2020.serving.controllers;
410 rajveer 2
 
3185 vikas 3
import in.shop2020.serving.interceptors.TrackingInterceptor;
781 vikas 4
import in.shop2020.serving.interceptors.UserAware;
2907 rajveer 5
import in.shop2020.serving.interceptors.UserInterceptor;
637 rajveer 6
import in.shop2020.serving.services.PageLoaderHandler;
419 rajveer 7
import in.shop2020.serving.services.UserSessionInfo;
2998 rajveer 8
import in.shop2020.serving.utils.DesEncrypter;
416 rajveer 9
 
2907 rajveer 10
import java.util.ArrayList;
555 chandransh 11
import java.util.HashMap;
2907 rajveer 12
import java.util.List;
410 rajveer 13
import java.util.Map;
14
 
416 rajveer 15
import javax.servlet.http.Cookie;
16
import javax.servlet.http.HttpServletRequest;
410 rajveer 17
import javax.servlet.http.HttpServletResponse;
416 rajveer 18
import javax.servlet.http.HttpSession;
410 rajveer 19
 
832 rajveer 20
import org.apache.log4j.Logger;
416 rajveer 21
import org.apache.struts2.interceptor.ServletRequestAware;
410 rajveer 22
import org.apache.struts2.interceptor.ServletResponseAware;
23
 
595 rajveer 24
import com.opensymphony.xwork2.ValidationAwareSupport;
25
 
317 ashish 26
/**
27
 * Base class for all user action handlers i.e. controllers
28
 * 
545 rajveer 29
 * @author rajveer
317 ashish 30
 */
781 vikas 31
public abstract class BaseController extends ValidationAwareSupport implements
32
		ServletResponseAware, ServletRequestAware, UserAware {
595 rajveer 33
	/**
34
	 * 
35
	 */
36
	private static final long serialVersionUID = 1L;
555 chandransh 37
	protected Map<String, Cookie> cookiesMap = null;
781 vikas 38
	protected HttpServletResponse response;
39
	protected HttpServletRequest request;
40
	protected HttpSession session;
1713 vikas 41
	protected String domainName;
781 vikas 42
	protected UserSessionInfo userinfo = null;
832 rajveer 43
	private static Logger log = Logger.getLogger(Class.class);
2998 rajveer 44
	private DesEncrypter desEncrypter = new DesEncrypter(UserInterceptor.COOKIE_DECRYPTION_STRING);
45
 
781 vikas 46
	protected Cookie userCookie = null;
47
 
48
	protected Map<String, String> htmlSnippets;
49
 
50
	PageLoaderHandler pageLoader = null;
2907 rajveer 51
 
416 rajveer 52
	public BaseController() {
637 rajveer 53
		pageLoader = new PageLoaderHandler();
650 rajveer 54
		htmlSnippets = new HashMap<String, String>();
416 rajveer 55
	}
781 vikas 56
 
410 rajveer 57
	@Override
781 vikas 58
	public void setCookiesMap(Map<String, Cookie> cookiesMap) {
2998 rajveer 59
		log.info("Received cookiesMap.");
410 rajveer 60
		this.cookiesMap = cookiesMap;
61
	}
781 vikas 62
 
410 rajveer 63
	@Override
781 vikas 64
	public void setServletResponse(HttpServletResponse response) {
410 rajveer 65
		this.response = response;
66
	}
781 vikas 67
 
416 rajveer 68
	@Override
781 vikas 69
	public void setServletRequest(HttpServletRequest request) {
416 rajveer 70
		this.request = request;
419 rajveer 71
	}
555 chandransh 72
 
781 vikas 73
	@Override
74
	public void setSession(HttpSession session) {
75
		this.session = session;
555 chandransh 76
	}
77
 
781 vikas 78
	@Override
79
	public void setUserSessionInfo(UserSessionInfo userInfo) {
80
		this.userinfo = userInfo;
419 rajveer 81
	}
82
 
781 vikas 83
	@Override
84
	public void setUserCookie(Cookie userCookie) {
828 rajveer 85
		if(userCookie != null){
837 vikas 86
			log.info("cookie name is:" +  userCookie.getName() + "   value is:"+ userCookie.getValue() + " path : " + userCookie.getPath());
828 rajveer 87
		}
781 vikas 88
		this.userCookie = userCookie;
419 rajveer 89
	}
424 rajveer 90
 
1713 vikas 91
	@Override
92
    public void setCookieDomainName(String domainName) {
93
        this.domainName = domainName;
94
    }
95
 
781 vikas 96
	public String getHeaderSnippet() {
924 vikas 97
		String url = request.getQueryString();
98
		log.info("Query String is: " + url);
99
		if (url == null) {
100
			url = "";
101
		} else {
102
			url = "?" + url;
103
		}
104
		url = request.getRequestURI() + url;
781 vikas 105
		return pageLoader.getHeaderHtml(userinfo.isLoggedIn(),
924 vikas 106
				userinfo.getNameOfUser(), url);
637 rajveer 107
	}
108
 
781 vikas 109
	public String getSearchBarSnippet() {
793 rajveer 110
		//FIXME From where it is called, need to pass category
637 rajveer 111
		return pageLoader.getSearchBarHtml(userinfo.getTotalItems(), 10000);
112
	}
781 vikas 113
 
793 rajveer 114
	public UserSessionInfo getUserInfo(){
115
		return this.userinfo;
116
	}
2907 rajveer 117
 
118
	@Override
119
	public List<Cookie> getCookies() {
120
		List<Cookie> cookies = new ArrayList<Cookie>();
121
		long userId = userinfo.getUserId();
122
		if(userId != -1){
123
			String newUserinfoCookieValue = UserSessionInfo.getUserinfoCookieValueFromUserSessionInfo(userinfo);
124
			Cookie userinfoCookie = cookiesMap.get(UserInterceptor.USER_INFO_COOKIE_NAME); 
125
			if( userinfoCookie == null ||  !newUserinfoCookieValue.equals(userinfoCookie.getValue())){
126
				log.info("Set user session info cookie if it has been changed.");
127
				userinfoCookie = new Cookie(UserInterceptor.USER_INFO_COOKIE_NAME, newUserinfoCookieValue);
128
				userinfoCookie.setMaxAge(UserInterceptor.SECONDS_IN_YEAR); // one year
129
				userinfoCookie.setPath("/");
130
				userinfoCookie.setDomain(domainName);
131
				cookiesMap.put(UserInterceptor.USER_INFO_COOKIE_NAME, userinfoCookie);
132
				cookies.add(userinfoCookie);
133
			}
134
			Cookie userCookie = cookiesMap.get(UserInterceptor.USER_ID_COOKIE_NAME);
2998 rajveer 135
			String encryptedUserId = desEncrypter.encrypt(userId + "");
2907 rajveer 136
			if(userCookie == null || !(encryptedUserId + "").equals(userCookie.getValue())){
137
				userinfoCookie = new Cookie(UserInterceptor.USER_ID_COOKIE_NAME, encryptedUserId);
138
				userinfoCookie.setMaxAge(UserInterceptor.SECONDS_IN_YEAR); // one year
139
				userinfoCookie.setPath("/");
140
				userinfoCookie.setDomain(domainName);
141
				cookiesMap.put(UserInterceptor.USER_INFO_COOKIE_NAME, userinfoCookie);
142
				cookies.add(userinfoCookie);
143
			}
144
		}
145
		return cookies;
146
	}
147
 
148
	public void clearUserCookies(){
149
		Cookie uidCookie = cookiesMap.get(UserInterceptor.USER_ID_COOKIE_NAME);
150
		uidCookie.setDomain(domainName);
151
		uidCookie.setPath("/");
152
		uidCookie.setValue("");
153
		uidCookie.setMaxAge(0);
154
		this.response.addCookie(uidCookie);
155
 
156
		Cookie uicCookie = cookiesMap.get(UserInterceptor.USER_INFO_COOKIE_NAME);
157
		uicCookie.setDomain(domainName);
158
		uicCookie.setPath("/");
159
		uicCookie.setValue("");
160
		uicCookie.setMaxAge(0);
161
		this.response.addCookie(uicCookie);
162
	}
3185 vikas 163
 
164
	public String getSessionId() {
165
	    Cookie sessionIdCookie = cookiesMap.get(TrackingInterceptor.SESSION_ID_COOKIE);
166
	    if (sessionIdCookie == null) {
167
	        return "";
168
	    }
169
	    else {
170
  	        //session id
171
	        String sessionId = request.getSession().getId();
172
	        sessionIdCookie = new Cookie(TrackingInterceptor.SESSION_ID_COOKIE, sessionId);
173
	        sessionIdCookie.setPath("/");
174
	        if (!domainName.isEmpty()) {
175
	            sessionIdCookie.setDomain(domainName);
176
	        }
177
	        cookiesMap.put(TrackingInterceptor.SESSION_ID_COOKIE, sessionIdCookie);
178
	        response.addCookie(sessionIdCookie);
179
 
180
	        return sessionIdCookie.getValue();
181
	    }
182
	}
183
 }