/******************************************************************************* * Copyright (c) 2012 Dmitry Tikhomirov. * All rights reserved. This program and the accompanying materials * are made available under the terms of the GNU Public License v3.0 * which accompanies this distribution, and is available at * http://www.gnu.org/licenses/gpl.html * * Contributors: * Dmitry Tikhomirov - initial API and implementation ******************************************************************************/ package org.opensheet.shared.model; import java.io.Serializable; import java.util.ArrayList; import java.util.Date; import java.util.List; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.FetchType; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.JoinColumn; import javax.persistence.JoinTable; import javax.persistence.ManyToMany; import javax.persistence.ManyToOne; import javax.persistence.OneToOne; import javax.persistence.Table; import javax.persistence.Temporal; import javax.persistence.TemporalType; import javax.validation.constraints.Max; import org.hibernate.annotations.LazyToOne; import org.hibernate.annotations.LazyToOneOption; import org.opensheet.client.dto.AuthmethodDTO; import org.opensheet.client.dto.UserDTO; import com.extjs.gxt.ui.client.data.BeanModelTag; @Entity @Table(name= "person") public class User implements Serializable, BeanModelTag{ /** * */ private static final long serialVersionUID = 4552313640486846057L; @Id @GeneratedValue(strategy=GenerationType.AUTO) private Integer id; private String login; private String password; @Column(name="first_name") private String firstName; @Column(name="second_name") private String secondName; private String email; /* @Transient private String fullName; */ @Max(value=1024) @Column(length = 1024) private String note; private String lang; @Column(columnDefinition = "tinyint") private Boolean status; @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "department", referencedColumnName = "id") private Department department; @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "branch", referencedColumnName = "id") private Branch branch; @OneToOne(fetch = FetchType.LAZY) private Permission permission; @OneToOne(fetch = FetchType.LAZY) @JoinColumn(name = "rate_id", referencedColumnName = "id") private UserRate userRate; @Column(name="started") @Temporal(value=TemporalType.DATE) private Date start; @Column(name="finished") @Temporal(value=TemporalType.DATE) private Date finish; @Column(name="updated") @Temporal(value=TemporalType.DATE) private Date updated; // @ManyToMany(fetch = FetchType.LAZY,mappedBy="users",targetEntity=Assignment.class) @ManyToMany(fetch = FetchType.LAZY) @JoinTable(name = "assignment_person", joinColumns = { @JoinColumn(name = "person") },inverseJoinColumns = { @JoinColumn(name = "assignment") }) private List<Assignment> assignments = new ArrayList<Assignment>(); @OneToOne(fetch = FetchType.LAZY) @JoinColumn(name = "id",nullable=false) @LazyToOne(value = LazyToOneOption.NO_PROXY) public Permission getPermission() { return permission; } private Integer authmethod; public List<Assignment> getAssignments() { return assignments; } public void setAssignments(List<Assignment> a) { this.assignments = a; } public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getLogin() { return login; } public void setLogin(String login) { this.login = login; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public String getFullName() { return this.getSecondName() + " " + this.getFirstName(); } public String getFirstName() { return firstName; } public void setFirstName(String firstName) { this.firstName = firstName; } public String getSecondName() { return secondName; } public void setSecondName(String secondName) { this.secondName = secondName; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } public String getNote() { return note; } public void setNote(String note) { this.note = note; } public String getLang() { return lang; } public void setLang(String lang) { this.lang = lang; } public Boolean getStatus() { return status; } public void setStatus(Boolean status) { this.status = status; } public Department getDepartment() { return department; } public void setDepartment(Department department) { this.department = department; } public Date getStart() { return start; } public void setStart(Date start) { this.start = start; } public Date getFinish() { return finish; } public void setFinish(Date finish) { this.finish = finish; } public Date getUpdated() { return updated; } public void setUpdated(Date updated) { this.updated = updated; } public void setPermission(Permission permission) { this.permission = permission; } /* public void setAuthmethod(Authmethod authmethod) { this.authmethod = authmethod; } public Authmethod getAuthmethod() { return authmethod; } */ public void setAuthmethod(Integer authmethod) { this.authmethod = authmethod; } public Integer getAuthmethod() { return authmethod; } public UserRate getUserRate() { return userRate; } public void setUserRate(UserRate userRate) { this.userRate = userRate; } public User(){ } public User(Integer id){ this.setId(id); } public User(UserDTO userDTO){ this.setId(userDTO.getId()); this.setLogin(userDTO.getLogin()); this.setPassword(userDTO.getPassword()); this.setFirstName(userDTO.getFirstName()); this.setSecondName(userDTO.getSecondName()); this.setEmail(userDTO.getEmail()); this.setNote(userDTO.getNote()); this.setLang(userDTO.getLang()); this.setStatus(userDTO.getStatus()); this.setStart(userDTO.getStart()); this.setFinish(userDTO.getFinish()); this.setUpdated(userDTO.getUpdated()); this.setAuthmethod(userDTO.getAuthmethod().getId()); } public UserDTO getUserDTO(){ UserDTO userDTO = new UserDTO(); userDTO.setId(this.getId()); userDTO.setLogin(this.getLogin()); userDTO.setFirstName(this.getFirstName()); userDTO.setSecondName(this.getSecondName()); userDTO.setEmail(this.getEmail()); userDTO.setNote(this.getNote()); userDTO.setLang(this.getLang()); userDTO.setStatus(this.getStatus()); userDTO.setStart(this.getStart()); userDTO.setFinish(this.getFinish()); userDTO.setUpdated(this.getUpdated()); userDTO.setAuthmethod(new AuthmethodDTO(this.getAuthmethod())); return userDTO; } @Override public String toString(){ StringBuilder result = new StringBuilder(); result.append(this.getClass()); result.append("__"); result.append(this.getId()); result.append("__"); result.append(this.getFullName()); result.append("__"); result.append(this.getLogin()); result.append("__"); result.append(this.getFirstName()); result.append("__"); result.append(this.getSecondName()); result.append("__AuthMethod:"); result.append(this.getAuthmethod()); return result.toString(); } @Override public int hashCode() { final int prime = 31; int result = 1; result = prime * result + ((id == null) ? 0 : id.hashCode()); return result; } /** * This equals suxx * */ @Override public boolean equals(Object obj) { User other = (User) obj; if(id != other.getId()){ return false; } return true; } public Branch getBranch() { return branch; } public void setBranch(Branch branch) { this.branch = branch; } }