Subversion Repositories SmartDukaan

Rev

Rev 1034 | Rev 2907 | 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.thrift.clients.UserContextServiceClient;

import java.io.Serializable;

import org.apache.thrift.TException;

/**
 * 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
 * 
 */
public class UserSessionInfo implements Serializable{
        /**
         * 
         */
        private static final long serialVersionUID = 1L;
        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();
                UserContextServiceClient ucsc = null;
                in.shop2020.model.v1.user.UserContextService.Client userClient = null;
                User existingUser = null;
                try {
                        ucsc = new UserContextServiceClient();
                        userClient = ucsc.getClient();
                        existingUser = userClient.getUserById(userId);
                        if(existingUser == null || existingUser.getUserId() == -1){
                                existingUser = userClient.createAnonymousUser(jsessionId);
                        }
                        totalItems = userClient.getCart(existingUser.getActiveCartId()).getLinesSize();
                        pincode = userClient.getDefaultPincode(existingUser.getUserId());
                } catch (UserContextException e) {
                        e.printStackTrace();
                } catch (TException e) {
                        e.printStackTrace();
                } catch (Exception e) {
                        e.printStackTrace();
                }
                /*
                finally {
                        ucsc.closeConnection();
                }
                */
                initialize(existingUser, totalItems, pincode);
        }

        public UserSessionInfo(String jsessionId) {
                this();
                UserContextServiceClient ucsc = null;
                try {
                        ucsc = new UserContextServiceClient();
                        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) {
                        e.printStackTrace();
                } catch (TException e) {
                        e.printStackTrace();
                } catch (Exception e) {
                        e.printStackTrace();
                }
                /*
                finally{
                        ucsc.closeConnection();
                }
                */
        }

        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 String toString(){
                StringBuffer representation = new StringBuffer();
                representation.append("userId: " + userId + "\n");
                representation.append("isLoggedIn: " + isLoggedIn + "\n");
                representation.append("username: " + nameOfUser + "\n");
                return representation.toString();
        }
}