package org.fluxtream.core.domain; import org.apache.commons.lang.StringUtils; import org.hibernate.annotations.Index; import javax.persistence.Entity; import javax.persistence.NamedQueries; import javax.persistence.NamedQuery; import java.io.Serializable; import java.util.ArrayList; import java.util.List; @Entity(name="Guest") @NamedQueries ( { @NamedQuery(name = "guests.count", query = "SELECT COUNT(guest) FROM Guest"), @NamedQuery( name="guest.byEmail", query="SELECT guest FROM Guest guest WHERE guest.email=?"), @NamedQuery( name="guest.byUsername", query="SELECT guest FROM Guest guest WHERE guest.username=?"), @NamedQuery( name="guest.byAutoLoginToken", query="SELECT guest FROM Guest guest WHERE guest.autoLoginToken=?"), @NamedQuery( name="guests.all", query="SELECT guest FROM Guest guest") }) public class Guest extends AbstractEntity implements Serializable { public static final String ROLE_USER = "ROLE_USER"; public static final String ROLE_ADMIN = "ROLE_ADMIN"; public String appId; public enum RegistrationMethod { REGISTRATION_METHOD_FORM, REGISTRATION_METHOD_FACEBOOK, REGISTRATION_METHOD_FACEBOOK_WITH_PASSWORD, REGISTRATION_METHOD_API; } @Index(name="username_index") public String username; public String firstname, lastname, password; @Index(name="email_index") public String email; public String salt; public String autoLoginToken; public Long autoLoginTokenTimestamp; public RegistrationMethod registrationMethod; transient List<String> userRoles; String roles = ROLE_USER; public Guest() {} public boolean hasRole(String role) { return getUserRoles().contains(role); } public List<String> getUserRoles() { if (userRoles==null) { userRoles = new ArrayList<String>(); final String[] splits = StringUtils.split(roles, ","); for(int i=0; i<splits.length; i++) userRoles.add(""+splits[i].trim()); } return userRoles; } public boolean equals(Object o) { if (! (o instanceof Guest)) return false; return ((Guest)o).getId() == getId(); } public String getGuestName() { if (!StringUtils.isEmpty(firstname)){ if (!StringUtils.isEmpty(lastname)) return firstname + " " + lastname; else return firstname; } else return username; } public void setRoles(final String roles) { this.roles = roles; } }