package model; import java.util.List; public class Usuario { private Integer id; private String email; private String senha; private Perfil perfil; public Perfil getPerfil() { // lazy initialization, inicialização tardia/atrasada/preguiçosa if (id == null && perfil == null) perfil = new Perfil(); if (id != null && perfil == null) { perfil = new UsuarioDAO().selectPerfil(this); if (perfil == null) perfil = new Perfil(); } return perfil; } public Integer getId() { return id; } // Fluent API (API fluente) public Usuario setId(Integer id) { this.id = id; return this; } public String getEmail() { return email; } public Usuario setEmail(String email) { this.email = email; return this; } public String getSenha() { return senha; } public Usuario setSenha(String senha) { this.senha = senha; return this; } @Override public int hashCode() { final int prime = 31; int result = 1; result = prime * result + ((id == null) ? 0 : id.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; Usuario other = (Usuario) obj; if (id == null) { if (other.id != null) return false; } else if (!id.equals(other.id)) return false; return true; } @Override public String toString() { return "Usuario [id=" + id + ", email=" + email + ", senha=" + senha + "]"; } public void save() { UsuarioDAO dao = new UsuarioDAO(); if (this.id == null) { dao.insert(this); } else { dao.update(this); } if (perfil != null) { dao.updatePerfil(this); } } public static Usuario load(int id) { UsuarioDAO dao = new UsuarioDAO(); return dao.select(id); } public static List<Usuario> all() { UsuarioDAO dao = new UsuarioDAO(); return dao.select(); } }