Initial import.
[simdecs_seam.git] / SimDeCS / src / main / org / ufcspa / simdecs / entities / Usuario.java
1 package org.ufcspa.simdecs.entities;\r
2 \r
3 import java.io.Serializable;\r
4 import java.util.Collection;\r
5 import java.util.Date;\r
6 import java.util.List;\r
7 \r
8 import javax.persistence.Column;\r
9 import javax.persistence.Entity;\r
10 import javax.persistence.GeneratedValue;\r
11 import javax.persistence.GenerationType;\r
12 import javax.persistence.Id;\r
13 import javax.persistence.JoinColumn;\r
14 import javax.persistence.JoinTable;\r
15 import javax.persistence.ManyToMany;\r
16 import javax.persistence.ManyToOne;\r
17 import javax.persistence.SequenceGenerator;\r
18 import javax.persistence.Table;\r
19 import javax.persistence.Temporal;\r
20 import javax.persistence.TemporalType;\r
21 import javax.persistence.UniqueConstraint;\r
22 \r
23 import org.hibernate.annotations.Index;\r
24 import org.ufcspa.simdecs.entities.exceptions.InvalidSexoException;\r
25 \r
26 @Entity\r
27 // Short name: "usu"\r
28 @Table(name="Usuario")\r
29 @SequenceGenerator(name = "sequenceUsuario", sequenceName = "sqUsuario", initialValue = 1, allocationSize=1)\r
30 public class Usuario implements Serializable {\r
31                 \r
32         private static final long serialVersionUID = 3970972520019742992L;\r
33 \r
34         @GeneratedValue(generator = "sequenceUsuario", strategy = GenerationType.AUTO)\r
35         @Id\r
36         private Long id;\r
37         \r
38         @Column(length=30, nullable=false, unique=true)\r
39         private String login;\r
40         \r
41         @Column(length=20, nullable=false)\r
42         private String senha;\r
43         \r
44         @Column(length=70, nullable=false)\r
45         private String nome;\r
46 \r
47         @Column(length=40, nullable=false, unique=true)\r
48         private String email;\r
49         \r
50         @Column(length=100)\r
51         private String funcao;\r
52         \r
53         @Column(length=1, nullable=true)\r
54         private String sexo;\r
55         \r
56         @Column(length=20, nullable=true)\r
57         private String telefone;\r
58         \r
59         @Temporal(TemporalType.DATE)\r
60         private Date dataNascimento;\r
61         \r
62         @Column(length=1, nullable=false)\r
63         private boolean aprovado;\r
64         \r
65         @Column(length=1, nullable=false)\r
66         private boolean ativo;\r
67         \r
68         @Temporal(TemporalType.DATE)\r
69         private Date dataCriacao;\r
70         \r
71     @ManyToOne\r
72     @JoinColumn(name = "usu_id", referencedColumnName = "id", nullable = true)\r
73     @Index(name="usu_usu_fk_i")\r
74         private Usuario criadoPor;\r
75 \r
76     @ManyToMany\r
77     @JoinTable( name = "UsuarioGrupo",\r
78                         joinColumns = {@JoinColumn(name = "usu_id")},\r
79                         inverseJoinColumns = {@JoinColumn(name = "gru_id")},\r
80                         uniqueConstraints={@UniqueConstraint(columnNames={"usu_id", "gru_id"})})\r
81     private List<Grupo> grupos;\r
82 \r
83         public Long getId() {\r
84                 return id;\r
85         }\r
86 \r
87         public void setId(Long id) {\r
88                 this.id = id;\r
89         }\r
90 \r
91         public String getLogin() {\r
92                 return login;\r
93         }\r
94 \r
95         public void setLogin(String login) {\r
96                 this.login = login;\r
97         }\r
98 \r
99         public String getSenha() {\r
100                 return senha;\r
101         }\r
102 \r
103         public void setSenha(String senha) {\r
104                 this.senha = senha;\r
105         }\r
106 \r
107         public String getNome() {\r
108                 return nome;\r
109         }\r
110 \r
111         public void setNome(String nome) {\r
112                 this.nome = nome;\r
113         }\r
114 \r
115         public String getEmail() {\r
116                 return email;\r
117         }\r
118 \r
119         public void setEmail(String email) {\r
120                 this.email = email;\r
121         }\r
122 \r
123         public String getFuncao() {\r
124                 return funcao;\r
125         }\r
126 \r
127         public void setFuncao(String funcao) {\r
128                 this.funcao = funcao;\r
129         }\r
130 \r
131         public String getSexo() {\r
132                 return sexo;\r
133         }\r
134 \r
135         public void setSexo(String sexo) throws InvalidSexoException {\r
136                 if (sexo.equals("F") || sexo.equals("M"))\r
137                         this.sexo = sexo;\r
138                 else\r
139                         throw new InvalidSexoException("O sexo deverá ser 'F' ou 'M'!");\r
140         }\r
141 \r
142         public String getTelefone() {\r
143                 return telefone;\r
144         }\r
145 \r
146         public void setTelefone(String telefone) {\r
147                 this.telefone = telefone;\r
148         }\r
149 \r
150         public Date getDataNascimento() {\r
151                 return dataNascimento;\r
152         }\r
153 \r
154         public void setDataNascimento(Date dataNascimento) {\r
155                 this.dataNascimento = dataNascimento;\r
156         }\r
157 \r
158         public boolean isAprovado() {\r
159                 return aprovado;\r
160         }\r
161 \r
162         public void setAprovado(boolean aprovado) {\r
163                 this.aprovado = aprovado;\r
164         }\r
165 \r
166         public boolean isAtivo() {\r
167                 return ativo;\r
168         }\r
169 \r
170         public void setAtivo(boolean ativo) {\r
171                 this.ativo = ativo;\r
172         }\r
173 \r
174         public Date getDataCriacao() {\r
175                 return dataCriacao;\r
176         }\r
177 \r
178         public void setDataCriacao(Date dataCriacao) {\r
179                 this.dataCriacao = dataCriacao;\r
180         }\r
181 \r
182         public Usuario getCriadoPor() {\r
183                 return criadoPor;\r
184         }\r
185 \r
186         public void setCriadoPor(Usuario criadoPor) {\r
187                 this.criadoPor = criadoPor;\r
188         }\r
189 \r
190         public List<Grupo> getGrupos() {\r
191                 return grupos;\r
192         }\r
193 \r
194         public void setGrupos(List<Grupo> grupos) {\r
195                 this.grupos = grupos;\r
196         }\r
197 \r
198         @Override\r
199         public int hashCode() {\r
200                 final int prime = 31;\r
201                 int result = 1;\r
202                 result = prime * result + ((id == null) ? 0 : id.hashCode());\r
203                 return result;\r
204         }\r
205 \r
206         @Override\r
207         public boolean equals(Object obj) {\r
208                 if (this == obj)\r
209                         return true;\r
210                 if (obj == null)\r
211                         return false;\r
212                 if (getClass() != obj.getClass())\r
213                         return false;\r
214                 Usuario other = (Usuario) obj;\r
215                 if (id == null) {\r
216                         if (other.id != null)\r
217                                 return false;\r
218                 } else if (!id.equals(other.id))\r
219                         return false;\r
220                 return true;\r
221         }\r
222     \r
223 }\r