package gov.anl.dm.esafsync.serviceconn; import java.io.Serializable; import java.net.HttpCookie; import javax.swing.JOptionPane; /** * CDB session class, used for keeping all session-related information (session * id, username, role, etc.). */ public class Session implements Serializable { public enum Role { USER("User"), ADMIN("Administrator"); private final String type; private Role(String type) { this.type = type; } @Override public String toString() { return type; } public static Role fromString(String type) { Role role = null; switch (type) { case "User": role = USER; break; case "Administrator": role = ADMIN; break; } return role; } } private static final long serialVersionUID = 1L; private String id = null; private String username = null; private String cookie = null; private Role role = null; public Session() { } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getId() { return id; } public void setId(String id) { this.id = id; } public String getCookie() { return cookie; } public void setCookie(String cookie) { this.cookie = cookie; } public String verifyCookie() { if (cookie == null) { JOptionPane.showMessageDialog(null, "Valid session has not been established.", "Info",JOptionPane.INFORMATION_MESSAGE); } else { HttpCookie httpCookie = HttpCookie.parse(cookie).get(0); if (httpCookie.hasExpired()) { JOptionPane.showMessageDialog(null, "Session has expired.", "Info",JOptionPane.INFORMATION_MESSAGE); } } return cookie; } public boolean isValid() { if (cookie == null) { return false; } else { HttpCookie httpCookie = HttpCookie.parse(cookie).get(0); if (httpCookie.hasExpired()) { return false; } } return true; } public Role getRole() { return role; } public void setRole(Role role) { this.role = role; } public boolean isAdminRole() { if (role != null) { return role.equals(Role.ADMIN); } return false; } public boolean isUserRole() { if (role != null) { return role.equals(Role.USER); } return false; } @Override public String toString() { String result = "{ "; String delimiter = ""; if (username != null) { result += "username :" + username; delimiter = "; "; } if (id != null) { result += delimiter + "id : " + id; delimiter = "; "; } if (cookie != null) { result += delimiter + "cookie : " + cookie; } result += " }"; return result; } }