Rev 2998 | Rev 4453 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed
package in.shop2020.serving.services;import in.shop2020.model.v1.user.User;import in.shop2020.model.v1.user.UserContextException;import in.shop2020.serving.interceptors.UserInterceptor;import in.shop2020.serving.utils.DesEncrypter;import in.shop2020.thrift.clients.UserClient;import java.io.Serializable;import org.apache.log4j.Logger;import org.apache.thrift.TException;import com.google.gson.Gson;/*** This class is used to cache data that is frequently accessed for displaying* on the pages of the site. It implements Serializable since* <a href="http://tomcat.apache.org/tomcat-5.5-doc/config/manager.html#Restart%20Persistence">Tomcat's restart persistence</a>* ensures that all session attributes will be preserved across application* restarts.** @author Chandranshu**/@SuppressWarnings("serial")public class UserSessionInfo implements Serializable{private static Logger logger = Logger.getLogger(UserSessionInfo.class);/****/private boolean isLoggedIn;private long userId;private String email;private String nameOfUser;private int totalItems;private long cartId;private String pincode;public UserSessionInfo(){this.isLoggedIn = false;this.userId = -1;this.email = "";this.nameOfUser = "";this.totalItems = 0;this.cartId = -1;this.pincode = "110001";}public UserSessionInfo(long userId, String jsessionId){this();try {UserClient ucsc = new UserClient();in.shop2020.model.v1.user.UserContextService.Client userClient = ucsc.getClient();User existingUser = userClient.getUserById(userId);if(existingUser != null && existingUser.getUserId() != -1){totalItems = userClient.getCart(existingUser.getActiveCartId()).getLinesSize();pincode = userClient.getDefaultPincode(existingUser.getUserId());initialize(existingUser, totalItems, pincode);}} catch (UserContextException e) {logger.error("Unable to get user info from user service: ", e);} catch (TException e) {logger.error("Unable to get user info from user service: ", e);} catch (Exception e) {logger.error("Unexpected exception: ", e);}}public UserSessionInfo(String jsessionId) {this();UserClient ucsc = null;try {ucsc = new UserClient();in.shop2020.model.v1.user.UserContextService.Client userClient = ucsc.getClient();User anonUser = userClient.createAnonymousUser(jsessionId);int totalItems= userClient.getCart(anonUser.getActiveCartId()).getLinesSize();pincode = userClient.getDefaultPincode(anonUser.getUserId());initialize(anonUser, totalItems, pincode);} catch (UserContextException e) {logger.error("Unable to get user info from user service: ", e);} catch (TException e) {logger.error("Unable to get user info from user service: ", e);} catch (Exception e) {logger.error("Unexpected exception: ", e);}}private void initialize(User user, int totalItems, String pincode){if(user!=null){this.isLoggedIn = !user.isIsAnonymous();this.userId = user.getUserId();this.email = user.getEmail();this.nameOfUser = user.getName();this.cartId = user.getActiveCartId();this.totalItems = totalItems;this.pincode = pincode;}else{this.isLoggedIn = false;this.userId = -1;this.email = "";this.nameOfUser = "";this.totalItems = 0;this.cartId = -1;this.pincode = pincode;}}public boolean isSessionId() {return !isLoggedIn;}public boolean isLoggedIn() {return isLoggedIn;}public void setLoggedIn(boolean isLoggedIn) {this.isLoggedIn = isLoggedIn;}public long getUserId() {return userId;}public void setUserId(long userId) {this.userId = userId;}public String getEmail() {return email;}public void setEmail(String email) {this.email = email;}public String getNameOfUser() {return nameOfUser;}public void setNameOfUser(String nameOfUser) {this.nameOfUser = nameOfUser;}public int getTotalItems() {return totalItems;}public void setTotalItems(int totalItems) {this.totalItems = totalItems;}public long getCartId() {return cartId;}public void setCartId(long cartId) {this.cartId = cartId;}public String getPincode() {return pincode;}public void setPincode(String pincode) {this.pincode = pincode;}public static String getUserinfoCookieValueFromUserSessionInfo(UserSessionInfo userinfo){DesEncrypter desEncrypter = new DesEncrypter(UserInterceptor.COOKIE_DECRYPTION_STRING);Gson gson = new Gson();return desEncrypter.encrypt(gson.toJson(userinfo));}public static UserSessionInfo getUserSessionInfoFromCookieValue(String jsonString){DesEncrypter desEncrypter = new DesEncrypter(UserInterceptor.COOKIE_DECRYPTION_STRING);Gson gson = new Gson();UserSessionInfo userinfo = null;try{userinfo = gson.fromJson(desEncrypter.decrypt(jsonString), UserSessionInfo.class);}catch (Exception e) {logger.error("Unable to get the userinfo object from the JSON string because of", e);}if(userinfo==null){userinfo = new UserSessionInfo();}return userinfo;}@Overridepublic String toString() {return "UserSessionInfo [isLoggedIn=" + isLoggedIn + ", userId="+ userId + ", email=" + email + ", nameOfUser=" + nameOfUser+ ", totalItems=" + totalItems + ", cartId=" + cartId+ ", pincode=" + pincode + "]";}}