package br.usp.nds.remote.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.GenerationType; import javax.persistence.Id; import javax.persistence.ManyToOne; @Entity public class Frota extends Entidade implements Serializable { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private int codigo; private String nome; @ManyToOne private Cliente cliente; public List listar() { return em.createQuery("SELECT f FROM Frota f ORDER BY f.nome").getResultList(); } public List listarFrotasEmbarcacoes() { List ues = em.createQuery("SELECT u FROM UsuarioEmbarcacao u WHERE u.usuario.email = '" + request.getUserPrincipal().getName() + "'").getResultList(); List frotas = new LinkedList(); for (Frota f : (List)em.createQuery("SELECT f FROM Frota f ORDER BY f.nome").getResultList()) { List embarcacoes = new LinkedList(); for (Embarcacao e : (List)em.createQuery("SELECT e FROM Embarcacao e WHERE e.frota.codigo = " + f.getCodigo() + " ORDER BY e.nome").getResultList()) { boolean possui = false; for (UsuarioEmbarcacao ue : ues) { if (ue.getEmbarcacao().getCodigo() == e.getCodigo()) { possui = true; break; } } if (request.isUserInRole("ADMINISTRADOR") || possui) { Map embarcacao = new HashMap(); embarcacao.put("nome", e.getNome()); embarcacao.put("codigo", e.getCodigo()); embarcacao.put("arquivo", e.getArquivo()); embarcacoes.add(embarcacao); } } if (!embarcacoes.isEmpty()) { Map frota = new HashMap(); frota.put("nome", f.getNome()); frota.put("codigo", f.getCodigo()); frota.put("embarcacoes", embarcacoes); frotas.add(frota); } } return frotas; } public void incluir() { em.persist(this); } public void alterar() { em.merge(this); } public void excluir() { em.remove(em.find(Frota.class, codigo)); } public Cliente getCliente() { return cliente; } public void setCliente(Cliente cliente) { this.cliente = cliente; } 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; } }