Subversion Repositories SmartDukaan

Rev

Rev 745 | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 745 Rev 781
Line 1... Line 1...
1
package in.shop2020.serving.controllers;
1
package in.shop2020.serving.controllers;
2
 
2
 
-
 
3
import in.shop2020.serving.interceptors.UserAware;
3
import in.shop2020.serving.services.PageLoaderHandler;
4
import in.shop2020.serving.services.PageLoaderHandler;
4
import in.shop2020.serving.services.UserSessionInfo;
5
import in.shop2020.serving.services.UserSessionInfo;
5
import in.shop2020.serving.utils.DesEncrypter;
-
 
6
import in.shop2020.serving.utils.Utils;
-
 
7
 
6
 
8
import java.util.Enumeration;
-
 
9
import java.util.HashMap;
7
import java.util.HashMap;
10
import java.util.Map;
8
import java.util.Map;
11
 
9
 
12
import javax.servlet.http.Cookie;
10
import javax.servlet.http.Cookie;
13
import javax.servlet.http.HttpServletRequest;
11
import javax.servlet.http.HttpServletRequest;
14
import javax.servlet.http.HttpServletResponse;
12
import javax.servlet.http.HttpServletResponse;
15
import javax.servlet.http.HttpSession;
13
import javax.servlet.http.HttpSession;
16
import javax.servlet.http.HttpUtils;
-
 
17
 
14
 
18
import org.apache.juli.logging.Log;
15
import org.apache.juli.logging.Log;
19
import org.apache.juli.logging.LogFactory;
16
import org.apache.juli.logging.LogFactory;
20
import org.apache.struts2.interceptor.CookiesAware;
-
 
21
import org.apache.struts2.interceptor.ServletRequestAware;
17
import org.apache.struts2.interceptor.ServletRequestAware;
22
import org.apache.struts2.interceptor.ServletResponseAware;
18
import org.apache.struts2.interceptor.ServletResponseAware;
23
import org.apache.velocity.VelocityContext;
-
 
24
 
19
 
25
import com.opensymphony.xwork2.ValidationAware;
-
 
26
import com.opensymphony.xwork2.ValidationAwareSupport;
20
import com.opensymphony.xwork2.ValidationAwareSupport;
27
 
21
 
28
/**
22
/**
29
 * Base class for all user action handlers i.e. controllers
23
 * Base class for all user action handlers i.e. controllers
30
 * 
24
 * 
31
 * @author rajveer
25
 * @author rajveer
32
 */
26
 */
33
public abstract class BaseController extends ValidationAwareSupport implements  CookiesAware, ServletResponseAware, ServletRequestAware {
27
public abstract class BaseController extends ValidationAwareSupport implements
-
 
28
		ServletResponseAware, ServletRequestAware, UserAware {
34
	/**
29
	/**
35
	 * 
30
	 * 
36
	 */
31
	 */
37
	private static final long serialVersionUID = 1L;
32
	private static final long serialVersionUID = 1L;
38
	protected Map<String, Cookie> cookiesMap = null;
33
	protected Map<String, Cookie> cookiesMap = null;
39
    protected HttpServletResponse response;
34
	protected HttpServletResponse response;
40
    protected HttpServletRequest request;
35
	protected HttpServletRequest request;
41
    protected HttpSession session;
36
	protected HttpSession session;
42
    protected UserSessionInfo userinfo = null;
37
	protected UserSessionInfo userinfo = null;
43
	private static Log log = LogFactory.getLog(BaseController.class);
38
	private static Log log = LogFactory.getLog(BaseController.class);
44
	
39
 
45
    private DesEncrypter desEncrypter = new DesEncrypter("shop2020");
-
 
46
    
-
 
47
    protected Cookie userCookie = null;
40
	protected Cookie userCookie = null;
48
    
41
 
49
    protected Map<String,String> htmlSnippets;
42
	protected Map<String, String> htmlSnippets;
50
    
43
 
51
    PageLoaderHandler pageLoader = null;
44
	PageLoaderHandler pageLoader = null;
-
 
45
 
52
	public BaseController() {
46
	public BaseController() {
53
		pageLoader = new PageLoaderHandler();
47
		pageLoader = new PageLoaderHandler();
54
		htmlSnippets = new HashMap<String, String>();
48
		htmlSnippets = new HashMap<String, String>();
55
	}
49
	}
56
	
-
 
57
	public Map getCookiesMap() {
-
 
58
		return cookiesMap;
-
 
59
	}
-
 
60
	
50
 
61
	@Override
51
	@Override
62
	public void setCookiesMap(Map cookiesMap) {
52
	public void setCookiesMap(Map<String, Cookie> cookiesMap) {
63
		log.info("Received cookiesMap and it is " + cookiesMap);
53
		log.info("Received cookiesMap and it is " + cookiesMap);
64
		this.cookiesMap = cookiesMap;
54
		this.cookiesMap = cookiesMap;
65
	}
55
	}
66
	
56
 
67
	@Override
57
	@Override
68
	public void setServletResponse(HttpServletResponse response)
58
	public void setServletResponse(HttpServletResponse response) {
69
	{
-
 
70
		this.response = response;
59
		this.response = response;
71
		if(userCookie!=null)
60
		if (userCookie != null)
72
			response.addCookie(userCookie);
61
			response.addCookie(userCookie);
73
	}
62
	}
74
	
63
 
75
	@Override
64
	@Override
76
	public void setServletRequest(HttpServletRequest request){
65
	public void setServletRequest(HttpServletRequest request) {
77
		this.request = request;
66
		this.request = request;
78
//		log.debug("REQUESTED URL: " + request.getRequestURL().toString());
-
 
79
//		log.debug("Remote host "+ request.getRemoteHost());
-
 
80
//		log.debug("requested Session Id "+ request.getRequestedSessionId());
-
 
81
//		log.debug("Session Id "+ request.getSession().getId());
-
 
82
//		log.debug("QUERY STRING IS: " + this.request.getQueryString());
-
 
83
//		
-
 
84
//		Enumeration names = request.getHeaderNames();
-
 
85
//	    while (names.hasMoreElements()) {
-
 
86
//	      String name = (String) names.nextElement();
-
 
87
//	      Enumeration values = request.getHeaders(name);  // support multiple values
-
 
88
//	      if (values != null) {
-
 
89
//	        while (values.hasMoreElements()) {
-
 
90
//	          String value = (String) values.nextElement();
-
 
91
//	          log.debug(name + ": " + value);
-
 
92
//	        }
-
 
93
//	      }
-
 
94
//	    }
-
 
95
//		
-
 
96
//		for(Object param: request.getParameterMap().keySet()){
-
 
97
//			log.debug("PARAMS: " + param + " = "+ request.getParameter((String)param));
-
 
98
//		}
-
 
99
		
-
 
100
		this.session = request.getSession();	// Get the existing session or create a new one
-
 
101
		getCookiesMap(request);
-
 
102
		String requestedSessionId = request.getRequestedSessionId();
-
 
103
		
-
 
104
		// Check if this is a brand new request with no prior cookies set; OR
-
 
105
		// If the request is for an active session.
-
 
106
		if(requestedSessionId == null || request.isRequestedSessionIdValid()){
-
 
107
			log.info("Request received for valid session: " + requestedSessionId);
-
 
108
			// Set the userinfo and the uid cookie if they're not already set.
-
 
109
			this.session = request.getSession();
-
 
110
			setUserSessionInfo(this.session.getId());
-
 
111
			createUserCookie(this.userinfo.getUserId(), false);
-
 
112
		} else {
-
 
113
			log.info("Request received for invalid session: " + requestedSessionId);
-
 
114
			// If the requested session is inactive, do the following:
-
 
115
			// 1. Retrieve the user for the requested session from the user cookie
-
 
116
			// 2. Add the retrieved user to the newly created session above.
-
 
117
			// 3. Update the uid cookie to ensure that a valid user is set in the session
-
 
118
			recreateSessionFromUIDCookie(this.session.getId());
-
 
119
			createUserCookie(this.userinfo.getUserId(), true);
-
 
120
		}
-
 
121
	}
67
	}
122
 
68
 
123
	private void getCookiesMap(HttpServletRequest request) {
-
 
124
		cookiesMap  = new HashMap<String, Cookie>();
-
 
125
		Cookie[] cookies = request.getCookies();
-
 
126
		// This check is necessary for the first request when no cookies are
-
 
127
		// sent.
-
 
128
		if(cookies==null)
-
 
129
			return;
69
	@Override
130
		for (Cookie cookie : cookies)
-
 
131
			cookiesMap.put(cookie.getName(), cookie);
-
 
132
	}
-
 
133
 
-
 
134
	private void setUserSessionInfo(String jsessionid){
70
	public void setSession(HttpSession session) {
135
		this.userinfo = (UserSessionInfo) this.session.getAttribute("userinfo");
-
 
136
		if(this.userinfo == null || this.userinfo.getUserId() == -1){
-
 
137
			this.userinfo = new UserSessionInfo(jsessionid);
71
		this.session = session;
138
			this.session.setAttribute("userinfo", this.userinfo);
-
 
139
		}
-
 
140
	}
72
	}
141
 
73
 
142
	protected void createUserCookie(long userId, boolean force) {
-
 
143
		userCookie = (Cookie) cookiesMap.get("uid");
-
 
144
		if(force || userCookie == null || !(userId + "").equals(userCookie.getValue())){
-
 
145
			String encryptedUserId = desEncrypter.encrypt(userId + "");  
-
 
146
			userCookie = new Cookie("uid", encryptedUserId);
-
 
147
		}
-
 
148
	}
-
 
149
	
-
 
150
	private void recreateSessionFromUIDCookie(String jsessionid) {
-
 
151
		Cookie userCookie = (Cookie) cookiesMap.get("uid");
-
 
152
		if(userCookie != null){
-
 
153
			String uidString = userCookie.getValue();
-
 
154
			if(uidString != null){
-
 
155
				try {
74
	@Override
156
					Long receivedUID = Long.parseLong(desEncrypter.decrypt(uidString));
-
 
157
					this.userinfo = new UserSessionInfo(receivedUID, jsessionid);
75
	public void setUserSessionInfo(UserSessionInfo userInfo) {
158
					this.session.setAttribute("userinfo", this.userinfo);
-
 
159
				} catch (NumberFormatException nfe) {
-
 
160
					log.error("The UID cookie contains an unparseable userID");
-
 
161
				}
-
 
162
			}
-
 
163
		}
-
 
164
		if(this.userinfo==null)
76
		this.userinfo = userInfo;
165
			setUserSessionInfo(jsessionid);
-
 
166
	}
77
	}
167
	
78
 
-
 
79
	@Override
168
	public UserSessionInfo getUserInfo(){
80
	public void setUserCookie(Cookie userCookie) {
169
		return this.userinfo;
81
		this.userCookie = userCookie;
170
	}
82
	}
171
 
83
 
172
	public String getHeaderSnippet(){
84
	public String getHeaderSnippet() {
173
		return pageLoader.getHeaderHtml(userinfo.isLoggedIn(), userinfo.getNameOfUser());
85
		return pageLoader.getHeaderHtml(userinfo.isLoggedIn(),
-
 
86
				userinfo.getNameOfUser());
174
	}
87
	}
175
 
88
 
176
	public String getMainMenuSnippet(){
89
	public String getMainMenuSnippet() {
177
		return pageLoader.getMainMenuHtml();
90
		return pageLoader.getMainMenuHtml();
178
	}
91
	}
179
	
92
 
180
	public String getSearchBarSnippet(){
93
	public String getSearchBarSnippet() {
181
		return pageLoader.getSearchBarHtml(userinfo.getTotalItems(), 10000);
94
		return pageLoader.getSearchBarHtml(userinfo.getTotalItems(), 10000);
182
	}
95
	}
183
    
96
 
184
	public String getCustomerServiceSnippet(){
97
	public String getCustomerServiceSnippet() {
185
		return pageLoader.getCustomerServiceHtml();
98
		return pageLoader.getCustomerServiceHtml();
186
	}
99
	}
187
	
100
 
188
	public String getMyResearchSnippet(){
101
	public String getMyResearchSnippet() {
189
		return pageLoader.getMyResearchHtml(userinfo.getUserId(), userinfo.isLoggedIn());
102
		return pageLoader.getMyResearchHtml(userinfo.getUserId(),
-
 
103
				userinfo.isLoggedIn());
190
	}
104
	}
191
 
105
 
192
	public String getBrowseHistorySnippet(){
106
	public String getBrowseHistorySnippet() {
193
		return pageLoader.getBrowseHistoryHtml(userinfo.getUserId(), userinfo.isLoggedIn());
107
		return pageLoader.getBrowseHistoryHtml(userinfo.getUserId(),
-
 
108
				userinfo.isLoggedIn());
194
	}
109
	}
195
 
110
 
196
	public String getFooterSnippet(){
111
	public String getFooterSnippet() {
197
		return pageLoader.getFooterHtml();
112
		return pageLoader.getFooterHtml();
198
	}
113
	}
199
	
114
 
200
	public String getRedirectUrl(){
115
	public String getRedirectUrl() {
201
		return (String)this.request.getSession().getAttribute("REDIRECT_URL");
116
		return (String) this.request.getSession().getAttribute("REDIRECT_URL");
202
	}
117
	}
203
 
118
 
204
	public void setRedirectUrl(){
119
	public void setRedirectUrl() {
205
		String queryString = this.request.getQueryString();
120
		String queryString = this.request.getQueryString();
206
		log.info("Query String is: "+queryString);
121
		log.info("Query String is: " + queryString);
207
		if(queryString==null){
122
		if (queryString == null) {
208
			queryString="";
123
			queryString = "";
209
		}else{
124
		} else {
210
			queryString = "?" + queryString;
125
			queryString = "?" + queryString;
211
		}
126
		}
-
 
127
		log.info("Redirect Url : " + request.getRequestURI() + queryString);
212
		this.request.getSession().setAttribute("REDIRECT_URL", this.request.getRequestURI() + queryString);
128
		this.request.getSession().setAttribute("REDIRECT_URL",
-
 
129
				this.request.getRequestURI() + queryString);
213
	}
130
	}
214
	
131
	
215
	public void resetRedirectUrl(){
132
	public void resetRedirectUrl() {
216
		this.request.getSession().removeAttribute("REDIRECT_URL");
133
		this.request.getSession().removeAttribute("REDIRECT_URL");
217
	}
134
	}
218
}
135
}
219
136