package com.aperture_software.glados_wiki.entities; import org.apache.commons.lang3.builder.EqualsBuilder; import org.apache.commons.lang3.builder.HashCodeBuilder; import org.apache.commons.lang3.builder.ToStringBuilder; import org.mongodb.morphia.annotations.Entity; import org.mongodb.morphia.annotations.Id; import org.mongodb.morphia.annotations.Reference; import javax.validation.constraints.NotNull; import java.io.Serializable; import java.util.ArrayList; import java.util.Date; import java.util.List; import java.util.TimeZone; /** * User: jhyun * Date: 13. 11. 26 * Time: 오후 3:49 */ @Entity public class User implements Serializable, Cloneable, UserAuthentication { private static final long serialVersionUID = 5699885838424429756L; @Id private String username; @NotNull private String email; private byte[] passwordSalt; private String password; private boolean enabled = true; private String description; private String timezone = TimeZone.getDefault().getID(); @Reference private List<Group> groups = new ArrayList<Group>(); private Date ctime = new Date(); public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } public byte[] getPasswordSalt() { return passwordSalt; } public void setPasswordSalt(byte[] passwordSalt) { this.passwordSalt = passwordSalt; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public boolean isEnabled() { return enabled; } public void setEnabled(boolean enabled) { this.enabled = enabled; } public List<Group> getGroups() { return groups; } public void setGroups(List<Group> groups) { this.groups = groups; } public String getDescription() { return description; } public void setDescription(String description) { this.description = description; } public Date getCtime() { return ctime; } public void setCtime(Date ctime) { this.ctime = ctime; } public String getTimezone() { return timezone; } public void setTimezone(String timezone) { this.timezone = timezone; } @Override public int hashCode() { return HashCodeBuilder.reflectionHashCode(this); } @Override public boolean equals(Object obj) { return EqualsBuilder.reflectionEquals(this, obj); } @Override public Object clone() throws CloneNotSupportedException { return super.clone(); } @Override public String toString() { return ToStringBuilder.reflectionToString(this); } @Override public String getAuthenticationName() { return this.getUsername(); } @Override public String getAuthenticationType() { return "user"; } }