package br.usp.nds.agualastro.persistencia; import java.io.Serializable; import java.util.HashMap; import java.util.LinkedList; import java.util.List; import java.util.Map; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.Id; @Entity public class Cliente extends Entidade implements Serializable { @Id @GeneratedValue private int codigo; private String nome; private String usuario; private String senha; public List listar() { return em.createQuery("SELECT c FROM Cliente c ORDER BY c.nome").getResultList(); } public Map usuarioLogado() { Map result = new HashMap(); result.put("login", request.getUserPrincipal().getName()); result.put("perfil", request.isUserInRole("administrador") ? "administrador" : "cliente"); return result; } public List listarClientesNavios() { List result = new LinkedList(); List clientes = em.createQuery("SELECT c FROM Cliente c ORDER BY c.nome").getResultList(); for (Cliente cliente : clientes) { if (cliente.getCodigo() != 0 && (request.isUserInRole("administrador") || request.getUserPrincipal().getName().equals(cliente.getUsuario()))) { Map c = new HashMap(); c.put("nome", cliente.getNome()); List navios = em.createQuery("SELECT n FROM Navio n WHERE n.cliente.codigo = " + cliente.getCodigo() + " ORDER BY n.nome").getResultList(); List ns = new LinkedList(); for (Navio navio : navios) { Map n = new HashMap(); n.put("codigo", navio.getEmail()); n.put("nome", navio.getNome()); ns.add(n); } c.put("navios", ns); result.add(c); } } return result; } public void excluir() { em.remove(em.find(Cliente.class, codigo)); } public void incluir() { em.persist(this); } public void alterar() { em.merge(this); } public int getCodigo() { return codigo; } public void setCodigo(int codigo) { this.codigo = codigo; } public String getNome() { return nome; } public void setNome(String nome) { this.nome = nome; } public String getUsuario() { return usuario; } public void setUsuario(String usuario) { this.usuario = usuario; } public String getSenha() { return senha; } public void setSenha(String senha) { this.senha = senha; } }