Subversion Repositories SmartDukaan

Rev

Rev 12143 | Blame | Compare with Previous | Last modification | View Log | RSS feed

package in.shop2020.mobileapi.serving.services;

import in.shop2020.model.v1.user.User;
import in.shop2020.model.v1.user.UserContextException;
import in.shop2020.thrift.clients.UserClient;

import java.io.Serializable;

import org.apache.log4j.Logger;
import org.apache.thrift.TException;

/**
 * This class is used to cache data about the user.
 * 
 */
@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 pincode;
        private boolean isPrivateDealUser;
        
        public UserSessionInfo(){
                this.isLoggedIn = false;
                this.setPrivateDealUser(false);
                this.userId = -1;
                this.email = "";
                this.pincode = "110001";
        }

        public UserSessionInfo(long userId){
                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){
                        pincode = userClient.getDefaultPincode(existingUser.getUserId());
                        initialize(existingUser, 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);
                        pincode = userClient.getDefaultPincode(anonUser.getUserId());
                        initialize(anonUser, 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, String pincode){
                if(user!=null){
                        this.isLoggedIn = !user.isIsAnonymous();
                        this.userId = user.getUserId();
                        this.email = user.getEmail();
                        this.pincode = pincode;
                }else{
                        this.isLoggedIn = false;
                        this.userId = -1;
                        this.email = "";
                        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 getPincode() {
                return pincode;
        }

        public void setPincode(String pincode) {
                this.pincode = pincode;
        }
        
        @Override
        public String toString() {
                return "UserSessionInfo [isLoggedIn=" + isLoggedIn + ", userId="
                                + userId + ", email=" + email + ", pincode=" + pincode
                                + ", isPrivateDealUser=" + isPrivateDealUser + "]";
        }

        public static void main(String[] args) {
                System.out.println();
                String cookieValue = "fG0CKt4DUD_D9iP1Ero0v2Io1AgVLoGqXDp0NWAPkzZuw3zHKot5owJK6IodZQfE2aS-obOK3BwXUNRirVHDyd-ycsyG4GfBPd0Ypl1MkxuVBmY4csB0FEg_IgWUm9GaGEzvtmmiZ5bE24XlpUPqR4AoTUAp8d92DDTG61FOFktDIGg3L0Tyk4qpVlAU3xQ3";
//              UserSessionInfo uinfo = UserSessionInfo.getUserSessionInfoFromCookieValue(cookieValue);
//              System.out.println(uinfo);
        }

        public void setPrivateDealUser(boolean isPrivateDealUser) {
                this.isPrivateDealUser = isPrivateDealUser;
        }

        public boolean isPrivateDealUser() {
                return isPrivateDealUser;
        }
}