Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Quando crio uma nova instituição, ela não recebe um ID!

Antes de tudo, estou tentando aplicar esses estudos em Java em versões práticas, por isso modifiquei o objeto Empresa para Instituições. Tendo isso em mente minha dúvida é a seguinte: Quando incluo uma nova instituição no meu banco, essa instituição não recebe o ID padrão, o que me impossibilita de editá-la ou removê-la do meu CRUD. Alguém poderia me ajudar?

Segue os códigos abaixo:

2 respostas

Banco

package br.com.tuei.modelo;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

public class Banco {

    private static List<Instituicao> lista = new ArrayList<>();
    private static Integer chaveSequencial = 1;

    static {
        Instituicao instituicao = new Instituicao();
        instituicao.setId(chaveSequencial++);
        instituicao.setNomeInstituicao("Lar dos lares");


        Instituicao instituicao2 = new Instituicao();
        instituicao2.setId(chaveSequencial++);
        instituicao2.setNomeInstituicao("Lar dos meninos");


        Banco.lista.add(instituicao);
        Banco.lista.add(instituicao2);
    }

Instituição

package br.com.tuei.modelo;

import java.util.Date;

public class Instituicao {

    private String nomeInstituicao;
    private Integer id;
    private Date dataAbertura = new Date();



    public String getNomeInstituicao() {
        return nomeInstituicao;
    }

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public void setNomeInstituicao(String nomeInstituicao) {
        this.nomeInstituicao = nomeInstituicao;
    }



    public Date getDataAbertura() {
        return dataAbertura;
    }

    public void setDataAbertura(Date dataAbertura) {
        this.dataAbertura = dataAbertura;
    }







}

CadastroInstituicao

package br.com.tuei.servlet;

import java.io.IOException;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import br.com.tuei.modelo.Banco;
import br.com.tuei.modelo.Instituicao;

/**
 * Servlet implementation class CadastroInstituicao
 */
//@WebServlet("/cadastroinstituicao")
public class CadastroInstituicao extends HttpServlet {
    private static final long serialVersionUID = 1L;

    //localhost:8080/tuei/cadastroinstituicao
    //http://localhost:8080/tuei/cadastroinstituicao.html - para cadastrar com formulário.
    //localhost:8080/tuei/listainstituicao - Lista as instituicoes cadastradas.

    @Override
        protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {


        String novaInstituicao = req.getParameter("nome");
        String paramData = req.getParameter("data");

        Date dataAbertura = null;

        try {
            SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
            dataAbertura = sdf.parse(paramData);
        } catch (ParseException e) {
            throw new ServletException(e);
        }

        Instituicao instituicao = new Instituicao();
        instituicao.setNomeInstituicao(novaInstituicao);
        instituicao.setDataAbertura(dataAbertura);

        Banco banco = new Banco();
        banco.adiciona(instituicao);

        req.setAttribute("instituicao", instituicao.getNomeInstituicao());

        resp.sendRedirect("listainstituicao");

//        RequestDispatcher rd = req.getRequestDispatcher("/novaInstituicaoCriada.jsp");
//        req.setAttribute("instituicao", instituicao.getNomeInstituicao());
//        rd.forward(req, resp);
//        

        }

}

CadastroInstituicao.jsp

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>

<c:url value = "/entrada" var ="linkEntradaServlet"/>

<!DOCTYPE html>

<html>
    <head>

        <meta charset="ISO-8859-1">
        <title>TUEI</title>

    </head>

    <body>

        <form action = "${linkEntradaServlet}"  method = "post">

            Nome: <input type = "text" name = "nome" > <br>

            Data abertura : <input type = "text" name = "data"> 

            <input type="hidden" name="acao" value="cadastroinstituicao">

            <input type = "submit"/> 

        </form>

    </body>
</html>

E finalmente a ListaInstituicao.jsp

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<%@ page import="java.util.List,br.com.tuei.modelo.Instituicao"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt"%>

<!DOCTYPE html>

<html>

    <head>

        <meta charset="ISO-8859-1">

        <title>Instituições Cadastradas</title>

    </head>

    <body>

        Lista de empresas:
        <br />

        <ul>

            <c:forEach items="${instituicoes}" var ="instituicao">

                <li>
                    ${instituicao.nomeInstituicao} - <fmt:formatDate value = "${instituicao.dataAbertura}" pattern = "dd/MM/yyyy"/>
                    <a href="/tuei/entrada?acao=mostrainstituicao&id=${instituicao.id}">edita </a>                    
                     <a href="/tuei/entrada?acao=removeinstituicao&id=${instituicao.id}">remove </a>

                 </li>

            </c:forEach>

        </ul>

    </body>

</html>
solução!

Depois de tanto ler e reler meus códigos, percebi que faltava o seguinte trecho de código na classe Banco:

public void adiciona(Instituicao instituicao) {
        instituicao.setId(Banco.chaveSequencial++);
        lista.add(instituicao);

    }

A linha do set.Id é a responsável por iterar o valor da chave sequencial que eu tanto procurava.