/*
* Copyright 2008-2010 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package es.alvsanand.webpage.model;
import java.io.Serializable;
import java.util.Date;
import java.util.List;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import javax.persistence.Transient;
import org.datanucleus.jpa.annotations.Extension;
/**
* The persistent class for the USER database table.
*
*/
@Entity
@Table(name = "User")
public class User implements Serializable {
/**
*
*/
private static final long serialVersionUID = -6233459895987808972L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Extension(vendorName = "datanucleus", key = "gae.encoded-pk",value = "true")
@Column(columnDefinition = "idUser")
private String idUser;
@Temporal( TemporalType.DATE)
@Column(columnDefinition = "creationdate")
private Date creationdate;
@Temporal( TemporalType.DATE)
@Column(columnDefinition = "lastLoginDate")
private Date lastLoginDate;
@Column(columnDefinition = "loginName")
private String loginName;
@Column(columnDefinition = "name")
private String name;
@Column(columnDefinition = "password")
private String password;
@Column(columnDefinition = "surname")
private String surname;
@Column(columnDefinition = "email")
private String email;
@Column(columnDefinition = "registrationHash")
private String registrationHash;
@Column(columnDefinition = "state")
private int state;
@Column(columnDefinition = "googleAcount")
private boolean googleAcount;
@Transient
private List<ArticleVersion> articleVersions = new java.util.ArrayList<ArticleVersion>();
@Transient
private Role role;
@Transient
private Avatar avatar;
public User() {
state = UserState.REGISTERED.ordinal();
}
public User(String idUser) {
this.idUser = idUser;
state = UserState.REGISTERED.ordinal();
}
public String getIdUser() {
return this.idUser;
}
public void setIdUser(String idUser) {
this.idUser = idUser;
}
public Date getCreationdate() {
return this.creationdate;
}
public void setCreationdate(Date creationdate) {
this.creationdate = creationdate;
}
public Date getLastLogindate() {
return this.lastLoginDate;
}
public void setLastLogindate(Date lastLoginDate) {
this.lastLoginDate = lastLoginDate;
}
public String getLoginName() {
return this.loginName;
}
public void setLoginName(String loginName) {
this.loginName = loginName;
}
public String getName() {
return this.name;
}
public void setName(String name) {
this.name = name;
}
public String getPassword() {
return this.password;
}
public void setPassword(String password) {
this.password = password;
}
public String getSurname() {
return this.surname;
}
public void setSurname(String surname) {
this.surname = surname;
}
public List<ArticleVersion> getArticleVersions() {
return this.articleVersions;
}
public void setArticleversions(List<ArticleVersion> articleVersions) {
this.articleVersions = articleVersions;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public Role getRole() {
return role;
}
public void setRole(Role role) {
this.role = role;
}
public Avatar getAvatar() {
return avatar;
}
public void setAvatar(Avatar avatar) {
this.avatar = avatar;
}
public int getState() {
return state;
}
public void setState(int state) {
this.state = state;
}
public Date getLastLoginDate() {
return lastLoginDate;
}
public void setLastLoginDate(Date lastLoginDate) {
this.lastLoginDate = lastLoginDate;
}
public String getRegistrationHash() {
return registrationHash;
}
public void setRegistrationHash(String registrationHash) {
this.registrationHash = registrationHash;
}
public boolean isGoogleAcount() {
return googleAcount;
}
public void setGoogleAcount(boolean googleAcount) {
this.googleAcount = googleAcount;
}
public boolean getCanBeAccepted(){
UserState userState = UserState.getUserState(state);
UserState[] possibleUserState = userState.getPossibleUserState();
for(UserState state: possibleUserState){
if(UserState.ACCEPTED.equals(state)){
return true;
}
}
return false;
}
public boolean getCanBeRejected(){
UserState userState = UserState.getUserState(state);
UserState[] possibleUserState = userState.getPossibleUserState();
for(UserState state: possibleUserState){
if(UserState.REJECTED.equals(state)){
return true;
}
}
return false;
}
public boolean getCanBeDisabled(){
UserState userState = UserState.getUserState(state);
UserState[] possibleUserState = userState.getPossibleUserState();
for(UserState state: possibleUserState){
if(UserState.DISABLED.equals(state)){
return true;
}
}
return false;
}
public boolean getCanBeEnabled(){
UserState userState = UserState.getUserState(state);
UserState[] possibleUserState = userState.getPossibleUserState();
for(UserState state: possibleUserState){
if(UserState.ENABLED.equals(state)){
return true;
}
}
return false;
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ((articleVersions == null) ? 0 : articleVersions.hashCode());
result = prime * result + ((avatar == null) ? 0 : avatar.hashCode());
result = prime * result + ((creationdate == null) ? 0 : creationdate.hashCode());
result = prime * result + ((email == null) ? 0 : email.hashCode());
result = prime * result + (googleAcount ? 1231 : 1237);
result = prime * result + ((idUser == null) ? 0 : idUser.hashCode());
result = prime * result + ((lastLoginDate == null) ? 0 : lastLoginDate.hashCode());
result = prime * result + ((loginName == null) ? 0 : loginName.hashCode());
result = prime * result + ((name == null) ? 0 : name.hashCode());
result = prime * result + ((password == null) ? 0 : password.hashCode());
result = prime * result + ((registrationHash == null) ? 0 : registrationHash.hashCode());
result = prime * result + ((role == null) ? 0 : role.hashCode());
result = prime * result + state;
result = prime * result + ((surname == null) ? 0 : surname.hashCode());
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj) {
return true;
}
if (obj == null) {
return false;
}
if (getClass() != obj.getClass()) {
return false;
}
User other = (User) obj;
if (articleVersions == null) {
if (other.articleVersions != null) {
return false;
}
} else if (!articleVersions.equals(other.articleVersions)) {
return false;
}
if (avatar == null) {
if (other.avatar != null) {
return false;
}
} else if (!avatar.equals(other.avatar)) {
return false;
}
if (creationdate == null) {
if (other.creationdate != null) {
return false;
}
} else if (!creationdate.equals(other.creationdate)) {
return false;
}
if (email == null) {
if (other.email != null) {
return false;
}
} else if (!email.equals(other.email)) {
return false;
}
if (googleAcount != other.googleAcount) {
return false;
}
if (idUser == null) {
if (other.idUser != null) {
return false;
}
} else if (!idUser.equals(other.idUser)) {
return false;
}
if (lastLoginDate == null) {
if (other.lastLoginDate != null) {
return false;
}
} else if (!lastLoginDate.equals(other.lastLoginDate)) {
return false;
}
if (loginName == null) {
if (other.loginName != null) {
return false;
}
} else if (!loginName.equals(other.loginName)) {
return false;
}
if (name == null) {
if (other.name != null) {
return false;
}
} else if (!name.equals(other.name)) {
return false;
}
if (password == null) {
if (other.password != null) {
return false;
}
} else if (!password.equals(other.password)) {
return false;
}
if (registrationHash == null) {
if (other.registrationHash != null) {
return false;
}
} else if (!registrationHash.equals(other.registrationHash)) {
return false;
}
if (role == null) {
if (other.role != null) {
return false;
}
} else if (!role.equals(other.role)) {
return false;
}
if (state != other.state) {
return false;
}
if (surname == null) {
if (other.surname != null) {
return false;
}
} else if (!surname.equals(other.surname)) {
return false;
}
return true;
}
@Override
public String toString() {
return "User [idUser=" + idUser + ", creationdate=" + creationdate + ", lastLoginDate=" + lastLoginDate + ", loginName=" + loginName
+ ", name=" + name + ", password=" + password + ", surname=" + surname + ", email=" + email + ", registrationHash="
+ registrationHash + ", state=" + state + ", googleAcount=" + googleAcount + ", role=" + role + "]";
}
}