Subversion Repositories SmartDukaan

Rev

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

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