@Override
    public ProvaEscrita alterar(IEntidade entidade) throws SQLException {

        if (entidade instanceof ProvaEscrita) {
            Connection connection = ConnectionFactory.getConnection();

            ProvaEscrita provaEscrita = (ProvaEscrita) entidade;

            String sql2 = "delete from candidato_aptos_prova_escrita where id_prova_escrita=?";
            PreparedStatement stmt2 = connection.prepareStatement(sql2);
            stmt2.setInt(1, provaEscrita.getIdProvaEscrita());
            stmt2.executeUpdate();

            if (provaEscrita.getCandidatosAptosProva().isEmpty() == false) {
                ArrayList<Candidato> listaAptos = provaEscrita.getCandidatosAptosProva();
                Iterator<Candidato> iterator = listaAptos.iterator();
                /*remove todos os candidadtos aptos*/

                while (iterator.hasNext()) {
                    Candidato object = iterator.next();
                    String sql3 = "insert into candidato_aptos_prova_escrita (id_candidato, id_prova_escrita) values(?,?)";
                    PreparedStatement stmt3 = connection.prepareStatement(sql3, Statement.RETURN_GENERATED_KEYS);
                    stmt3.setInt(1, object.getIdCandidato());
                    stmt3.setInt(2, provaEscrita.getIdProvaEscrita());
                    stmt3.executeUpdate();
                }
            }


            String sql4 = "delete from candidato_aptos_leitura_prova_escrita where id_prova_escrita=?";
            PreparedStatement stmt4 = connection.prepareStatement(sql4);
            stmt4.setInt(1, provaEscrita.getIdProvaEscrita());
            stmt4.executeUpdate();

            if (provaEscrita.getCandidatosAptosLeitura().isEmpty() == false) {
                ArrayList<Candidato> listaAptos = provaEscrita.getCandidatosAptosLeitura();
                Iterator<Candidato> iterator = listaAptos.iterator();
                /*remove todos os candidadtos aptos*/

                while (iterator.hasNext()) {
                    Candidato object = iterator.next();
                    String sql5 = "insert into candidato_aptos_leitura_prova_escrita (id_candidato, id_prova_escrita) values(?,?)";
                    PreparedStatement stmt5 = connection.prepareStatement(sql5, Statement.RETURN_GENERATED_KEYS);
                    stmt5.setInt(1, object.getIdCandidato());
                    stmt5.setInt(2, provaEscrita.getIdProvaEscrita());
                    stmt5.executeUpdate();
                }
            }

            String sql = " UPDATE prova_escrita SET "
                    + " id_concurso = ?,"
                    + " id_ponto_sorteado_prova_escrita = ?,"
                    + " hora_ponto_sorteado = ? ,"
                    + " hora_inicio_prova = ?,"
                    + " hora_fim_prova = ?,"
                    + " local_realizacao = ?,"
                    + " hora_inicio_leitura = ?,"
                    + " hora_fim_leitura = ?,"
                    + " local_leitura = ?,"
                    + " hora_inicio_julgamento = ?,"
                    + " local_julgamento = ?,"
                    + " hora_inicio_resultado = ?,"
                    + " local_resultado = ?"
                    + " WHERE id_prova_escrita = ? ";

            PreparedStatement stmt = connection.prepareStatement(sql);
            this.setInt(stmt, 1, provaEscrita.getConcurso().getIdConcurso());
            this.setInt(stmt, 2, provaEscrita.getPontoSorteado().getIdPontoProvaEscrita());
            this.setTime(stmt, 3, provaEscrita.getHoraPontoSorteado());
            this.setTime(stmt, 4, provaEscrita.getHoraInicioProva());
            this.setTime(stmt, 5, provaEscrita.getHoraFimProva());
            stmt.setString(6, provaEscrita.getLocalRealizacao());
            this.setTime(stmt, 7, provaEscrita.getHoraInicioLeitura());
            this.setTime(stmt, 8, provaEscrita.getHoraFimLeitura());
            stmt.setString(9, provaEscrita.getLocalLeitura());
            this.setTime(stmt, 10, provaEscrita.getHoraInicioJulgamento());
            stmt.setString(11, provaEscrita.getLocalJulgamento());
            this.setTime(stmt, 12, provaEscrita.getHoraInicioResultado());
            stmt.setString(13, provaEscrita.getLocalResultado());
            stmt.setInt(14, provaEscrita.getIdProvaEscrita());

            System.out.println(stmt.toString());
            if (stmt.executeUpdate() == 1) {
                return provaEscrita;
            }
        }
        return null;
    }