@Override
    public Concurso inserir(IEntidade entidade) throws SQLException {

        if (entidade instanceof Concurso) {

            Concurso concurso = (Concurso) entidade;
            Connection connection = ConnectionFactory.getConnection();

            String sql = " INSERT INTO concurso ( ";
            sql += "   ministerio, instituicao, id_campus, area, edital, ";
            sql += "   id_classe_concurso, data_inicio, tem_prova_escrita, ";
            sql += "   tem_prova_titulo, tem_prova_didatica, tem_prova_memorial ";
            sql += " ) VALUES ( ";
            sql += "   ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ? ";
            sql += " ) ";

            try {

                PreparedStatement stmt = connection.prepareStatement(sql, Statement.RETURN_GENERATED_KEYS);

                stmt.setString(1, concurso.getMinisterio());
                stmt.setString(2, concurso.getInstituicao());

                if (concurso.getCampus() != null) {
                    if (concurso.getCampus().getIdCampus() != 0) {
                        stmt.setInt(3, concurso.getCampus().getIdCampus());
                    } else {
                        stmt.setString(3, null);
                    }
                } else {
                    stmt.setString(3, null);
                }

                stmt.setString(4, concurso.getArea());
                stmt.setString(5, concurso.getEdital());

                if (concurso.getClasseConcurso() != null) {
                    stmt.setInt(6, concurso.getClasseConcurso().getIdClasseConcurso());
                } else {
                    stmt.setString(6, null);
                }

                if (concurso.getDataInicio() != null) {
                    stmt.setDate(7, new java.sql.Date(concurso.getDataInicio().getTime()));
                } else {
                    stmt.setString(7, null);
                }
                stmt.setBoolean(8, concurso.isTemProvaEscrita());
                stmt.setBoolean(9, concurso.isTemProvaTitulos());
                stmt.setBoolean(10, concurso.isTemProvaDidática());
                stmt.setBoolean(11, concurso.isTemProvaMemorial());

                stmt.executeUpdate();
                ResultSet rs = stmt.getGeneratedKeys();

                if (rs.next()) {
                    concurso.setIdConcurso(rs.getInt(1));
                }

            } catch (Exception e) {
                e.printStackTrace();
            }

            return concurso;

        }

        return null;

    }