Subversion Repositories SmartDukaan

Rev

Rev 6903 | Rev 8917 | 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
 
8578 kshitij.so 3
import in.shop2020.model.v1.catalog.Banner;
4
import in.shop2020.model.v1.catalog.BannerMap;
5
import in.shop2020.model.v1.catalog.CatalogService.Client;
3561 rajveer 6
import in.shop2020.serving.interceptors.SourceAware;
3185 vikas 7
import in.shop2020.serving.interceptors.TrackingInterceptor;
781 vikas 8
import in.shop2020.serving.interceptors.UserAware;
2907 rajveer 9
import in.shop2020.serving.interceptors.UserInterceptor;
637 rajveer 10
import in.shop2020.serving.services.PageLoaderHandler;
419 rajveer 11
import in.shop2020.serving.services.UserSessionInfo;
2998 rajveer 12
import in.shop2020.serving.utils.DesEncrypter;
8578 kshitij.so 13
import in.shop2020.thrift.clients.CatalogClient;
416 rajveer 14
 
2907 rajveer 15
import java.util.ArrayList;
555 chandransh 16
import java.util.HashMap;
2907 rajveer 17
import java.util.List;
410 rajveer 18
import java.util.Map;
19
 
416 rajveer 20
import javax.servlet.http.Cookie;
21
import javax.servlet.http.HttpServletRequest;
410 rajveer 22
import javax.servlet.http.HttpServletResponse;
416 rajveer 23
import javax.servlet.http.HttpSession;
410 rajveer 24
 
832 rajveer 25
import org.apache.log4j.Logger;
416 rajveer 26
import org.apache.struts2.interceptor.ServletRequestAware;
410 rajveer 27
import org.apache.struts2.interceptor.ServletResponseAware;
8578 kshitij.so 28
import org.apache.thrift.TException;
410 rajveer 29
 
595 rajveer 30
import com.opensymphony.xwork2.ValidationAwareSupport;
31
 
317 ashish 32
/**
33
 * Base class for all user action handlers i.e. controllers
34
 * 
545 rajveer 35
 * @author rajveer
317 ashish 36
 */
781 vikas 37
public abstract class BaseController extends ValidationAwareSupport implements
8578 kshitij.so 38
ServletResponseAware, ServletRequestAware, UserAware, SourceAware {
595 rajveer 39
	/**
40
	 * 
41
	 */
42
	private static final long serialVersionUID = 1L;
555 chandransh 43
	protected Map<String, Cookie> cookiesMap = null;
781 vikas 44
	protected HttpServletResponse response;
45
	protected HttpServletRequest request;
46
	protected HttpSession session;
1713 vikas 47
	protected String domainName;
781 vikas 48
	protected UserSessionInfo userinfo = null;
832 rajveer 49
	private static Logger log = Logger.getLogger(Class.class);
2998 rajveer 50
	private DesEncrypter desEncrypter = new DesEncrypter(UserInterceptor.COOKIE_DECRYPTION_STRING);
8578 kshitij.so 51
 
781 vikas 52
	protected Cookie userCookie = null;
53
 
54
	protected Map<String, String> htmlSnippets;
55
 
56
	PageLoaderHandler pageLoader = null;
8578 kshitij.so 57
 
3561 rajveer 58
	protected long sourceId;
8578 kshitij.so 59
 
60
	public static Map<String,List<Banner>> activeBanners = null;
61
	public static Map<String, List<BannerMap>> allBannersMap = null;
62
 
63
	public void setBanners(){
64
		if(activeBanners==null){
65
			try {
66
				CatalogClient catalogServiceClient = new CatalogClient();
67
				Client client = catalogServiceClient.getClient();
68
				log.info("Populating banner map"); 
69
				activeBanners = client.getActiveBanners();
70
				if(!activeBanners.isEmpty()){
71
					allBannersMap = new HashMap<String, List<BannerMap>>();
72
					for (Map.Entry<String, List<Banner>> entry :activeBanners.entrySet()){
73
						for (Banner banner : entry.getValue()){
74
							allBannersMap.put(banner.getBannerName(), client.getBannerMapDetails(banner.getBannerName()));
75
						}
76
					}
77
				}
78
			}
79
			catch (TException e) {
80
				log.error("Unable to fetch banners ",e);
81
			}
82
		}
83
	}
84
 
85
	public List<Banner> getActiveBanners() {
86
		setBanners();
87
		String uri = request.getRequestURI();
88
		return activeBanners.get(uri);
89
	}
90
 
91
	public List<BannerMap> getbannermapdetails(String bannerName) {
92
		return allBannersMap.get(bannerName);
93
	}
94
 
95
	public int activeBannerCount() {
96
		setBanners();
97
		String uri = request.getRequestURI();
98
		if (activeBanners.get(uri)==null){
99
			return 0;
100
		}
101
		return activeBanners.get(uri).size();
102
	}
103
 
416 rajveer 104
	public BaseController() {
637 rajveer 105
		pageLoader = new PageLoaderHandler();
650 rajveer 106
		htmlSnippets = new HashMap<String, String>();
416 rajveer 107
	}
781 vikas 108
 
410 rajveer 109
	@Override
781 vikas 110
	public void setCookiesMap(Map<String, Cookie> cookiesMap) {
2998 rajveer 111
		log.info("Received cookiesMap.");
410 rajveer 112
		this.cookiesMap = cookiesMap;
113
	}
781 vikas 114
 
410 rajveer 115
	@Override
781 vikas 116
	public void setServletResponse(HttpServletResponse response) {
410 rajveer 117
		this.response = response;
118
	}
781 vikas 119
 
416 rajveer 120
	@Override
781 vikas 121
	public void setServletRequest(HttpServletRequest request) {
416 rajveer 122
		this.request = request;
419 rajveer 123
	}
555 chandransh 124
 
781 vikas 125
	@Override
126
	public void setSession(HttpSession session) {
127
		this.session = session;
555 chandransh 128
	}
129
 
781 vikas 130
	@Override
131
	public void setUserSessionInfo(UserSessionInfo userInfo) {
132
		this.userinfo = userInfo;
419 rajveer 133
	}
134
 
781 vikas 135
	@Override
136
	public void setUserCookie(Cookie userCookie) {
828 rajveer 137
		if(userCookie != null){
837 vikas 138
			log.info("cookie name is:" +  userCookie.getName() + "   value is:"+ userCookie.getValue() + " path : " + userCookie.getPath());
828 rajveer 139
		}
781 vikas 140
		this.userCookie = userCookie;
419 rajveer 141
	}
424 rajveer 142
 
1713 vikas 143
	@Override
8578 kshitij.so 144
	public void setCookieDomainName(String domainName) {
145
		this.domainName = domainName;
146
	}
147
 
3561 rajveer 148
	@Override
149
	public void setSourceId(long sourceId){
8578 kshitij.so 150
		log.info("Setting source id "+sourceId);
3561 rajveer 151
		this.sourceId = sourceId;
152
	}
8578 kshitij.so 153
 
781 vikas 154
	public String getHeaderSnippet() {
924 vikas 155
		String url = request.getQueryString();
156
		log.info("Query String is: " + url);
157
		if (url == null) {
158
			url = "";
159
		} else {
160
			url = "?" + url;
161
		}
162
		url = request.getRequestURI() + url;
6152 amit.gupta 163
		return pageLoader.getHeaderHtml(userinfo.isLoggedIn(), userinfo.getEmail(), userinfo.getTotalItems(), url, -1, true);
637 rajveer 164
	}
8578 kshitij.so 165
 
6903 anupam.sin 166
	public String getThinHeaderSnippet() {
8578 kshitij.so 167
		String url = request.getQueryString();
168
		log.info("Query String is: " + url);
169
		if (url == null) {
170
			url = "";
171
		} else {
172
			url = "?" + url;
173
		}
174
		url = request.getRequestURI() + url;
175
		return pageLoader.getThinHeaderHtml(userinfo.isLoggedIn(), userinfo.getEmail(), userinfo.getTotalItems(), url, 0, true);
176
	}
637 rajveer 177
 
781 vikas 178
	public String getSearchBarSnippet() {
793 rajveer 179
		//FIXME From where it is called, need to pass category
637 rajveer 180
		return pageLoader.getSearchBarHtml(userinfo.getTotalItems(), 10000);
181
	}
781 vikas 182
 
3830 chandransh 183
	public String getCartWidgetSnippet() {
6708 kshitij.so 184
		return pageLoader.getCartWidgetSnippet(userinfo.getTotalItems(), userinfo.getTotalAmount(),-1);
3830 chandransh 185
	}
186
 
8578 kshitij.so 187
 
793 rajveer 188
	public UserSessionInfo getUserInfo(){
189
		return this.userinfo;
190
	}
8578 kshitij.so 191
 
2907 rajveer 192
	@Override
193
	public List<Cookie> getCookies() {
194
		List<Cookie> cookies = new ArrayList<Cookie>();
195
		long userId = userinfo.getUserId();
196
		if(userId != -1){
197
			String newUserinfoCookieValue = UserSessionInfo.getUserinfoCookieValueFromUserSessionInfo(userinfo);
198
			Cookie userinfoCookie = cookiesMap.get(UserInterceptor.USER_INFO_COOKIE_NAME); 
199
			if( userinfoCookie == null ||  !newUserinfoCookieValue.equals(userinfoCookie.getValue())){
200
				log.info("Set user session info cookie if it has been changed.");
201
				userinfoCookie = new Cookie(UserInterceptor.USER_INFO_COOKIE_NAME, newUserinfoCookieValue);
202
				userinfoCookie.setMaxAge(UserInterceptor.SECONDS_IN_YEAR); // one year
203
				userinfoCookie.setPath("/");
204
				userinfoCookie.setDomain(domainName);
205
				cookiesMap.put(UserInterceptor.USER_INFO_COOKIE_NAME, userinfoCookie);
206
				cookies.add(userinfoCookie);
207
			}
208
			Cookie userCookie = cookiesMap.get(UserInterceptor.USER_ID_COOKIE_NAME);
2998 rajveer 209
			String encryptedUserId = desEncrypter.encrypt(userId + "");
2907 rajveer 210
			if(userCookie == null || !(encryptedUserId + "").equals(userCookie.getValue())){
211
				userinfoCookie = new Cookie(UserInterceptor.USER_ID_COOKIE_NAME, encryptedUserId);
212
				userinfoCookie.setMaxAge(UserInterceptor.SECONDS_IN_YEAR); // one year
213
				userinfoCookie.setPath("/");
214
				userinfoCookie.setDomain(domainName);
215
				cookiesMap.put(UserInterceptor.USER_INFO_COOKIE_NAME, userinfoCookie);
216
				cookies.add(userinfoCookie);
217
			}
218
		}
219
		return cookies;
220
	}
8578 kshitij.so 221
 
2907 rajveer 222
	public void clearUserCookies(){
223
		Cookie uidCookie = cookiesMap.get(UserInterceptor.USER_ID_COOKIE_NAME);
224
		uidCookie.setDomain(domainName);
225
		uidCookie.setPath("/");
226
		uidCookie.setValue("");
227
		uidCookie.setMaxAge(0);
228
		this.response.addCookie(uidCookie);
8578 kshitij.so 229
 
2907 rajveer 230
		Cookie uicCookie = cookiesMap.get(UserInterceptor.USER_INFO_COOKIE_NAME);
231
		uicCookie.setDomain(domainName);
232
		uicCookie.setPath("/");
233
		uicCookie.setValue("");
234
		uicCookie.setMaxAge(0);
235
		this.response.addCookie(uicCookie);
236
	}
8578 kshitij.so 237
 
3203 vikas 238
	/**
239
	 * Get the session_id cookie to track user session.
240
	 * It also creates the new cookie using current jsessionid if it was absent. 
241
	 * 
242
	 * @return sessionId
243
	 */
3185 vikas 244
	public String getSessionId() {
8578 kshitij.so 245
		Cookie sessionIdCookie = cookiesMap.get(TrackingInterceptor.SESSION_ID_COOKIE);
246
		if (sessionIdCookie == null) {
247
			//session id
248
			String sessionId = request.getSession().getId();
249
			sessionIdCookie = new Cookie(TrackingInterceptor.SESSION_ID_COOKIE, sessionId);
250
			sessionIdCookie.setPath("/");
251
			if (!domainName.isEmpty()) {
252
				sessionIdCookie.setDomain(domainName);
253
			}
254
			cookiesMap.put(TrackingInterceptor.SESSION_ID_COOKIE, sessionIdCookie);
255
			response.addCookie(sessionIdCookie);
256
		}
257
		return sessionIdCookie.getValue();
3185 vikas 258
	}
8578 kshitij.so 259
 
3859 vikas 260
	public String getCookie(String cookieName, boolean isEncripted, String encriptionString) {
8578 kshitij.so 261
		Cookie cookie = (Cookie) cookiesMap.get(cookieName);
262
		String cookieVal = null;
263
		if (cookie != null) {
264
			cookieVal = cookie.getValue();
265
			if (isEncripted) {
266
				DesEncrypter desEncrypter = new DesEncrypter(encriptionString);
267
				cookieVal = desEncrypter.decrypt(cookieVal);
268
			}
269
		}
270
		return cookieVal;
3859 vikas 271
	}
8578 kshitij.so 272
}