Subversion Repositories SmartDukaan

Rev

Rev 20399 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 20399 Rev 20400
Line 1... Line 1...
1
package com.hotspotstore.controllers;
1
package com.hotspotstore.controllers;
2
 
2
 
3
 
3
 
4
 
4
 
5
import java.util.ArrayList;
-
 
6
import java.util.HashMap;
-
 
7
import java.util.List;
-
 
8
import java.util.Map;
5
import java.util.Map;
9
import java.util.regex.Matcher;
-
 
10
import java.util.regex.Pattern;
-
 
11
 
6
 
12
import javax.servlet.http.Cookie;
-
 
13
import javax.servlet.http.HttpServletRequest;
7
import javax.servlet.http.HttpServletRequest;
14
import javax.servlet.http.HttpServletResponse;
8
import javax.servlet.http.HttpServletResponse;
15
import javax.servlet.http.HttpSession;
9
import javax.servlet.http.HttpSession;
16
 
10
 
17
import net.sf.ehcache.CacheManager;
-
 
18
 
-
 
19
import org.apache.log4j.Logger;
11
import org.apache.log4j.Logger;
20
import org.apache.struts2.interceptor.ServletRequestAware;
12
import org.apache.struts2.interceptor.ServletRequestAware;
21
import org.apache.struts2.interceptor.ServletResponseAware;
13
import org.apache.struts2.interceptor.ServletResponseAware;
22
import org.apache.thrift.TException;
14
import org.apache.struts2.interceptor.SessionAware;
23
 
15
 
24
import com.opensymphony.xwork2.ValidationAwareSupport;
16
import com.opensymphony.xwork2.ValidationAwareSupport;
25
 
17
 
26
/**
18
/**
27
 * Base class for all user action handlers i.e. controllers
19
 * Base class for all user action handlers i.e. controllers
28
 * 
20
 * 
29
 * @author rajveer
21
 * @author rajveer
30
 */
22
 */
31
public abstract class BaseController extends ValidationAwareSupport implements
23
public abstract class BaseController extends ValidationAwareSupport implements
32
ServletResponseAware, ServletRequestAware, UserAware, SourceAware {
24
ServletResponseAware, ServletRequestAware, SessionAware {
33
	/**
-
 
34
	 * 
-
 
35
	 */
-
 
36
	private static final long serialVersionUID = 1L;
25
	private static final long serialVersionUID = 3339523094497219816L;
37
	protected Map<String, Cookie> cookiesMap = null;
26
	protected static Logger log = Logger.getLogger(BaseController.class);
-
 
27
	
38
	protected HttpServletResponse response;
28
    protected HttpServletResponse response;
39
	protected HttpServletRequest request;
29
    protected HttpServletRequest request;
40
	protected HttpSession session;
30
    protected HttpSession session;
41
	protected String domainName;
-
 
42
	protected UserSessionInfo userinfo = null;
-
 
43
	private static Logger log = Logger.getLogger(Class.class);
-
 
44
	private DesEncrypter desEncrypter = new DesEncrypter(UserInterceptor.COOKIE_DECRYPTION_STRING);
-
 
45
 
-
 
46
	protected Cookie userCookie = null;
-
 
47
 
-
 
48
	protected Map<String, String> htmlSnippets;
31
    protected Map<String, Object> sessionMap;
49
 
-
 
50
	PageLoaderHandler pageLoader = null;
-
 
51
 
-
 
52
	protected long sourceId;
-
 
53
 
-
 
54
	public static Map<String,List<Banner>> activeBanners = null;
-
 
55
	public static Map<String, List<BannerMap>> allBannersMap = null;
-
 
56
	public static Map<String, List<BannerMap>> sideBannersMap = null;
-
 
57
 
-
 
58
	public void setBanners(){
-
 
59
		EhcacheWrapper<String, Map<String,List<Banner>>> bannerCache = new EhcacheWrapper<String, Map<String,List<Banner>>>(
-
 
60
				EhcacheWrapper.BANNER_CACHE_NAME, CacheManager.create());
-
 
61
		activeBanners = bannerCache.get("banner_key");
-
 
62
		if (activeBanners!=null) {
-
 
63
			log.info("Returning banners from cache");
-
 
64
			return;
-
 
65
		}
-
 
66
		try {
-
 
67
			CatalogClient catalogServiceClient = new CatalogClient();
-
 
68
			Client client = catalogServiceClient.getClient();
-
 
69
			log.info("Populating banner map"); 
-
 
70
			activeBanners = client.getActiveBanners();
-
 
71
			if(!activeBanners.isEmpty()){
-
 
72
				allBannersMap = new HashMap<String, List<BannerMap>>();
-
 
73
				sideBannersMap = new HashMap<String, List<BannerMap>>();
-
 
74
				for (Map.Entry<String, List<Banner>> entry :activeBanners.entrySet()){
-
 
75
					for (Banner banner : entry.getValue()){
-
 
76
						if(banner.getBannerType().getValue()==1){
-
 
77
							allBannersMap.put(banner.getBannerName(), client.getBannerMapDetails(banner.getBannerName(),banner.getBannerType()));
-
 
78
						}
-
 
79
						else{
-
 
80
							sideBannersMap.put(banner.getBannerName(), client.getBannerMapDetails(banner.getBannerName(),banner.getBannerType()));
-
 
81
						}
-
 
82
					}
-
 
83
				}
-
 
84
			}
-
 
85
			bannerCache.put("banner_key", activeBanners);
-
 
86
			log.info("Populating cache again for banners");
-
 
87
		}
-
 
88
		catch (TException e) {
-
 
89
			log.error("Unable to fetch banners ",e);
-
 
90
		}
-
 
91
	}
-
 
92
 
-
 
93
 
-
 
94
	public List<Banner> getActiveBanners() {
-
 
95
		String uri = request.getRequestURI();
-
 
96
		if (uri.equalsIgnoreCase("/")){
-
 
97
			return activeBanners.get(uri);
-
 
98
		}
-
 
99
		for (String key : activeBanners.keySet()) {
-
 
100
			if (key.equalsIgnoreCase("/") || key.equalsIgnoreCase("side-banner")){
-
 
101
				continue;
-
 
102
			}
-
 
103
			Pattern p = Pattern.compile(key+".*");
-
 
104
			Matcher m = p.matcher(uri);
-
 
105
			if (m.matches()) {
-
 
106
				return activeBanners.get(uri);
-
 
107
			}
-
 
108
		}
-
 
109
		return null;
-
 
110
	}
-
 
111
 
-
 
112
	public List<Banner> getActiveBanners(String uri) {
-
 
113
		return activeBanners.get(uri);
-
 
114
	}
-
 
115
 
-
 
116
	public List<BannerMap> getbannermapdetails(String bannerName) {
-
 
117
		return allBannersMap.get(bannerName);
-
 
118
	}
-
 
119
 
-
 
120
	public BaseController() {
-
 
121
		setBanners();
-
 
122
		pageLoader = new PageLoaderHandler();
-
 
123
		htmlSnippets = new HashMap<String, String>();
-
 
124
	}
-
 
125
 
32
 
126
	@Override
-
 
127
	public void setCookiesMap(Map<String, Cookie> cookiesMap) {
-
 
128
		log.info("Received cookiesMap." + cookiesMap);
-
 
129
		this.cookiesMap = cookiesMap;
-
 
130
	}
-
 
131
 
-
 
132
	@Override
-
 
133
	public void setServletResponse(HttpServletResponse response) {
33
    public void setServletResponse(HttpServletResponse response) {
134
		this.response = response;
34
        this.response = response;
135
	}
35
    }
136
 
36
 
137
	@Override
-
 
138
	public void setServletRequest(HttpServletRequest request) {
37
    public void setServletRequest(HttpServletRequest request) {
139
		this.request = request;
38
        this.request = request;
140
	}
-
 
141
 
-
 
142
	@Override
-
 
143
	public void setSession(HttpSession session) {
-
 
144
		this.session = session;
39
        this.session = request.getSession();
145
	}
-
 
146
 
-
 
147
	@Override
-
 
148
	public void setUserSessionInfo(UserSessionInfo userInfo) {
-
 
149
		this.userinfo = userInfo;
-
 
150
	}
-
 
151
 
-
 
152
	@Override
-
 
153
	public void setUserCookie(Cookie userCookie) {
-
 
154
		if(userCookie != null){
-
 
155
			log.info("cookie name is:" +  userCookie.getName() + "   value is:"+ userCookie.getValue() + " path : " + userCookie.getPath());
-
 
156
		}
-
 
157
		this.userCookie = userCookie;
-
 
158
	}
-
 
159
 
-
 
160
	@Override
-
 
161
	public void setCookieDomainName(String domainName) {
-
 
162
		this.domainName = domainName;
-
 
163
	}
-
 
164
 
-
 
165
	@Override
-
 
166
	public void setSourceId(long sourceId){
-
 
167
		log.info("Setting source id "+sourceId);
-
 
168
		this.sourceId = sourceId;
-
 
169
	}
-
 
170
 
-
 
171
	public String getHeaderSnippet() {
-
 
172
		String url = request.getQueryString();
-
 
173
		log.info("Query String is: " + url);
-
 
174
		if (url == null) {
-
 
175
			url = "";
-
 
176
		} else {
-
 
177
			url = "?" + url;
-
 
178
		}
-
 
179
		url = request.getRequestURI() + url;
-
 
180
		return pageLoader.getHeaderHtml(userinfo.isLoggedIn(), userinfo.getEmail(), userinfo.getTotalItems(), url, -1, true, userinfo.isPrivateDealUser());
-
 
181
	}
-
 
182
 
-
 
183
	public String getThinHeaderSnippet() {
-
 
184
		String url = request.getQueryString();
-
 
185
		log.info("Query String is: " + url);
-
 
186
		if (url == null) {
-
 
187
			url = "";
-
 
188
		} else {
-
 
189
			url = "?" + url;
-
 
190
		}
-
 
191
		url = request.getRequestURI() + url;
-
 
192
		return pageLoader.getThinHeaderHtml(userinfo.isLoggedIn(), userinfo.getEmail(), userinfo.getTotalItems(), url, 0, true);
-
 
193
	}
-
 
194
 
-
 
195
	public String getSearchBarSnippet() {
-
 
196
		//FIXME From where it is called, need to pass category
-
 
197
		return pageLoader.getSearchBarHtml(userinfo.getTotalItems(), 10000);
-
 
198
	}
-
 
199
 
-
 
200
	public String getCartWidgetSnippet() {
-
 
201
		log.info("UserInfo:" + userinfo);
-
 
202
		log.info("activeBanners.get(\"side-banner\"):" + activeBanners.get("side-banner") );
-
 
203
		return pageLoader.getCartWidgetSnippet(userinfo.getTotalItems(), userinfo.getTotalAmount(),-1,activeBanners.get("side-banner"),sideBannersMap);
-
 
204
	}
-
 
205
 
-
 
206
 
-
 
207
	public UserSessionInfo getUserInfo(){
-
 
208
		return this.userinfo;
-
 
209
	}
-
 
210
 
-
 
211
	@Override
-
 
212
	public List<Cookie> getCookies() {
-
 
213
		List<Cookie> cookies = new ArrayList<Cookie>();
-
 
214
		long userId = userinfo.getUserId();
-
 
215
		if(userId != -1){
-
 
216
			String newUserinfoCookieValue = UserSessionInfo.getUserinfoCookieValueFromUserSessionInfo(userinfo);
-
 
217
			Cookie userinfoCookie = cookiesMap.get(UserInterceptor.USER_INFO_COOKIE_NAME); 
-
 
218
			if( userinfoCookie == null ||  !newUserinfoCookieValue.equals(userinfoCookie.getValue())){
-
 
219
				log.info("Set user session info cookie if it has been changed.");
-
 
220
				userinfoCookie = new Cookie(UserInterceptor.USER_INFO_COOKIE_NAME, newUserinfoCookieValue);
-
 
221
				userinfoCookie.setMaxAge(UserInterceptor.SECONDS_IN_YEAR); // one year
-
 
222
				userinfoCookie.setPath("/");
-
 
223
				userinfoCookie.setDomain(domainName);
-
 
224
				cookiesMap.put(UserInterceptor.USER_INFO_COOKIE_NAME, userinfoCookie);
-
 
225
				cookies.add(userinfoCookie);
-
 
226
			}
-
 
227
			Cookie userCookie = cookiesMap.get(UserInterceptor.USER_ID_COOKIE_NAME);
-
 
228
			String encryptedUserId = desEncrypter.encrypt(userId + "");
-
 
229
			if(userCookie == null || !(encryptedUserId + "").equals(userCookie.getValue())){
-
 
230
				userinfoCookie = new Cookie(UserInterceptor.USER_ID_COOKIE_NAME, encryptedUserId);
-
 
231
				userinfoCookie.setMaxAge(UserInterceptor.SECONDS_IN_YEAR); // one year
-
 
232
				userinfoCookie.setPath("/");
-
 
233
				userinfoCookie.setDomain(domainName);
-
 
234
				cookiesMap.put(UserInterceptor.USER_INFO_COOKIE_NAME, userinfoCookie);
-
 
235
				cookies.add(userinfoCookie);
-
 
236
			}
-
 
237
			Cookie dealCouponRemoved = cookiesMap.get(UserInterceptor.DEAL_COUPON_REMOVED);
-
 
238
			if(dealCouponRemoved!=null && dealCouponRemoved.getPath()!=null){
-
 
239
				cookies.add(dealCouponRemoved);
-
 
240
			}
40
    }
241
		}
-
 
242
		return cookies;
-
 
243
	}
-
 
244
 
-
 
245
	public void clearUserCookies(){
-
 
246
		Cookie uidCookie = cookiesMap.get(UserInterceptor.USER_ID_COOKIE_NAME);
-
 
247
		uidCookie.setDomain(domainName);
-
 
248
		uidCookie.setPath("/");
-
 
249
		uidCookie.setValue("");
-
 
250
		uidCookie.setMaxAge(0);
-
 
251
		this.response.addCookie(uidCookie);
-
 
252
 
-
 
253
		Cookie uicCookie = cookiesMap.get(UserInterceptor.USER_INFO_COOKIE_NAME);
-
 
254
		uicCookie.setDomain(domainName);
-
 
255
		uicCookie.setPath("/");
-
 
256
		uicCookie.setValue("");
-
 
257
		uicCookie.setMaxAge(0);
-
 
258
		this.response.addCookie(uicCookie);
-
 
259
	}
-
 
260
 
-
 
261
	/**
-
 
262
	 * Get the session_id cookie to track user session.
-
 
263
	 * It also creates the new cookie using current jsessionid if it was absent. 
-
 
264
	 * 
41
    
265
	 * @return sessionId
-
 
266
	 */
-
 
267
	public String getSessionId() {
42
    public void setSession(Map<String, Object> sessionMap) {
268
		Cookie sessionIdCookie = cookiesMap.get(TrackingInterceptor.SESSION_ID_COOKIE);
-
 
269
		if (sessionIdCookie == null) {
-
 
270
			//session id
-
 
271
			String sessionId = request.getSession().getId();
-
 
272
			sessionIdCookie = new Cookie(TrackingInterceptor.SESSION_ID_COOKIE, sessionId);
-
 
273
			sessionIdCookie.setPath("/");
-
 
274
			if (!domainName.isEmpty()) {
-
 
275
				sessionIdCookie.setDomain(domainName);
-
 
276
			}
-
 
277
			cookiesMap.put(TrackingInterceptor.SESSION_ID_COOKIE, sessionIdCookie);
-
 
278
			response.addCookie(sessionIdCookie);
-
 
279
		}
-
 
280
		return sessionIdCookie.getValue();
43
        this.sessionMap = sessionMap;
281
	}
-
 
282
 
-
 
283
	public String getCookie(String cookieName, boolean isEncripted, String encriptionString) {
-
 
284
		Cookie cookie = (Cookie) cookiesMap.get(cookieName);
-
 
285
		String cookieVal = null;
-
 
286
		if (cookie != null) {
-
 
287
			cookieVal = cookie.getValue();
-
 
288
			if (isEncripted) {
-
 
289
				DesEncrypter desEncrypter = new DesEncrypter(encriptionString);
-
 
290
				cookieVal = desEncrypter.decrypt(cookieVal);
-
 
291
			}
44
    }
292
		}
-
 
293
		return cookieVal;
-
 
294
	}
-
 
295
 
-
 
296
	public boolean isPrivateDealUserBase(){
-
 
297
		return userinfo.isPrivateDealUser();
-
 
298
	}
-
 
299
}
45
}
300
46