public void setFuncionario(int id) {
    FuncionarioDAO fd = new FuncionarioDAO();
    Funcionario f = fd.consultarFuncionario(id);

    TextField_Nome.setText(f.getNome());
    TextField_Sobrenome.setText(f.getSobrenome());
    TextField_RG.setText(f.getRg());
    TextField_CPF.setText(f.getCpf());
    TextField_Telefone.setText(f.getTelefone());
    PasswordField_Senha.setText(f.getSenha());

    // Seta o departamento de acordo com o id
    DepartamentoDAO dd = new DepartamentoDAO();
    Departamento d = dd.consultarDepartamento(f.getDepartamento());
    for (int i = 0; i < ComboBox_Departamento.getItemCount(); i++) {
      Departamento dc = (Departamento) ComboBox_Departamento.getItemAt(i);
      if (dc.getId() == d.getId()) {
        ComboBox_Departamento.setSelectedIndex(i);
      }
    }

    if (f.getCargo() == 1) {
      // Seta o departamentos de acordo com o id
      FuncionarioDepartamentoDAO fdd = new FuncionarioDepartamentoDAO();
      List<Departamento> dlist = fdd.consultarFuncionarioDepartamento(f.getId());

      if (dlist.size() > 0) {
        int[] indices = new int[dlist.size()];
        int c = 0;
        for (int i = 0; i < List_Departamentos.getModel().getSize(); i++) {
          Departamento dc = (Departamento) List_Departamentos.getModel().getElementAt(i);
          for (Departamento dg : dlist) {
            if (dc.getId() == dg.getId()) {
              indices[c] = i;
              c++;
            }
          }
        }

        List_Departamentos.setSelectedIndices(indices);
      }
    } else if (f.getCargo() == 2) {
      // Seta o departamento de acordo com o id
      FuncionarioDepartamentoDAO fdd = new FuncionarioDepartamentoDAO();
      List<Departamento> dlist = fdd.consultarFuncionarioDepartamento(f.getId());

      if (dlist.size() > 0) {
        Departamento dg = dlist.get(0);
        for (int i = 0; i < ComboBox_Departamentos.getItemCount(); i++) {
          Departamento dc = (Departamento) ComboBox_Departamentos.getItemAt(i);
          if (dc.getId() == dg.getId()) {
            ComboBox_Departamentos.setSelectedIndex(i);
          }
        }
      }
    }

    ComboBox_Nivel.setSelectedItem(new Integer(f.getNivel()).toString());
    ComboBox_Cargo.setSelectedIndex(f.getCargo() - 1);
  }
  private void salvarBtnActionPerformed(
      java.awt.event.ActionEvent evt) { // GEN-FIRST:event_salvarBtnActionPerformed

    String nome = TextField_Nome.getText();
    String sobrenome = TextField_Sobrenome.getText();
    String rg = TextField_RG.getText();
    String cpf = TextField_CPF.getText();
    String telefone = TextField_Telefone.getText();
    String senha = PasswordField_Senha.getText();

    if ("".equals(nome)
        || "".equals(sobrenome)
        || "".equals(rg)
        || "".equals(cpf)
        || "".equals(telefone)
        || "".equals(senha)) {
      JOptionPane.showMessageDialog(null, "Por favor, preencha todos os campos.");
    } else {

      int cargo = 0;
      int nivel = 0;

      List<Departamento> dl = List_Departamentos.getSelectedValuesList();

      nivel = Integer.parseInt((String) ComboBox_Nivel.getSelectedItem());

      Departamento d = (Departamento) ComboBox_Departamento.getSelectedItem();
      int departamento = d.getId();

      Departamento ds = (Departamento) ComboBox_Departamentos.getSelectedItem();
      int departamento_gerenciado = ds.getId();

      FuncionarioDAO fd = new FuncionarioDAO();

      // Verifica se é pra inserir ou fazer um update
      if (this.funcionarioId > 0) {

        int idFuncionario = this.funcionarioId;

        FuncionarioDepartamentoDAO fdd = new FuncionarioDepartamentoDAO();
        fdd.removerFuncionarioDepartamentoDeFuncionario(this.funcionarioId);

        if (ComboBox_Cargo.getSelectedItem().equals("Diretor")) {
          cargo = 1;
          Diretor f =
              new Diretor(nome, sobrenome, rg, cpf, telefone, cargo, nivel, departamento, senha);
          fd.alterarFuncionario(this.funcionarioId, f);
          if (idFuncionario > 0) {
            f.setId(idFuncionario);
            //                        fdd = new FuncionarioDepartamentoDAO();

            fdd.inserirFuncionarioDepartamento(dl, f);
          }
        } else if (ComboBox_Cargo.getSelectedItem().equals("Gerente")) {
          cargo = 2;
          Gerente f =
              new Gerente(nome, sobrenome, rg, cpf, telefone, cargo, nivel, departamento, senha);
          fd.alterarFuncionario(this.funcionarioId, f);
          if (idFuncionario > 0) {
            f.setId(idFuncionario);
            //                        FuncionarioDepartamentoDAO fdd = new
            // FuncionarioDepartamentoDAO();

            List<Departamento> dll = new ArrayList<Departamento>();
            dll.add(ds);

            fdd.inserirFuncionarioDepartamento(dll, f);
          }
        } else if (ComboBox_Cargo.getSelectedItem().equals("Analista")) {
          cargo = 3;
          Analista f =
              new Analista(nome, sobrenome, rg, cpf, telefone, cargo, nivel, departamento, senha);
          fd.alterarFuncionario(this.funcionarioId, f);
        } else if (ComboBox_Cargo.getSelectedItem().equals("Programador")) {
          cargo = 4;
          Programador f =
              new Programador(
                  nome, sobrenome, rg, cpf, telefone, cargo, nivel, departamento, senha);
          fd.alterarFuncionario(this.funcionarioId, f);
        } else {
          cargo = 5;
          nivel = 1;
          AuxiliarDeLimpeza f =
              new AuxiliarDeLimpeza(
                  nome, sobrenome, rg, cpf, telefone, cargo, nivel, departamento, senha);
          fd.alterarFuncionario(this.funcionarioId, f);
        }

        if (idFuncionario > 0) {
          JOptionPane.showMessageDialog(null, "Usuário alterado com sucesso.");
          setVisible(false);
          dispose();
        } else {
          JOptionPane.showMessageDialog(null, "Houve um erro ao alterar funcionario.");
        }

      } else {

        int idFuncionario = 0;

        if (ComboBox_Cargo.getSelectedItem().equals("Diretor")) {
          cargo = 1;
          Diretor f =
              new Diretor(nome, sobrenome, rg, cpf, telefone, cargo, nivel, departamento, senha);
          idFuncionario = fd.inserirFuncionario(f);
          if (idFuncionario > 0) {
            f.setId(idFuncionario);
            FuncionarioDepartamentoDAO fdd = new FuncionarioDepartamentoDAO();

            fdd.inserirFuncionarioDepartamento(dl, f);
          }
        } else if (ComboBox_Cargo.getSelectedItem().equals("Gerente")) {
          cargo = 2;
          Gerente f =
              new Gerente(nome, sobrenome, rg, cpf, telefone, cargo, nivel, departamento, senha);
          idFuncionario = fd.inserirFuncionario(f);
          if (idFuncionario > 0) {
            f.setId(idFuncionario);
            FuncionarioDepartamentoDAO fdd = new FuncionarioDepartamentoDAO();

            List<Departamento> dll = new ArrayList<Departamento>();
            dll.add(ds);

            fdd.inserirFuncionarioDepartamento(dll, f);
          }
        } else if (ComboBox_Cargo.getSelectedItem().equals("Analista")) {
          cargo = 3;
          Analista f =
              new Analista(nome, sobrenome, rg, cpf, telefone, cargo, nivel, departamento, senha);
          idFuncionario = fd.inserirFuncionario(f);
        } else if (ComboBox_Cargo.getSelectedItem().equals("Programador")) {
          cargo = 4;
          Programador f =
              new Programador(
                  nome, sobrenome, rg, cpf, telefone, cargo, nivel, departamento, senha);
          idFuncionario = fd.inserirFuncionario(f);
        } else {
          cargo = 5;
          nivel = 1;
          AuxiliarDeLimpeza f =
              new AuxiliarDeLimpeza(
                  nome, sobrenome, rg, cpf, telefone, cargo, nivel, departamento, senha);
          idFuncionario = fd.inserirFuncionario(f);
        }

        if (idFuncionario > 0) {
          JOptionPane.showMessageDialog(null, "Usuário inserido com sucesso.");
          setVisible(false);
          dispose();
        } else {
          JOptionPane.showMessageDialog(null, "Houve um erro ao inserir funcionario.");
        }
      }
    }
  } // GEN-LAST:event_salvarBtnActionPerformed