Subversion Repositories SmartDukaan

Rev

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