public int retornaIdResp(String nome, int tipo) throws SQLException {
    if (tipo == 0) {

      sql = "select idgrupo from grupo where descricao = ?";
      if (!FabricaConexoes.verificaConexao()) FabricaConexoes.getConexao();
      stm = FabricaConexoes.returnStatement(sql);
      stm.setString(1, nome);
      rs = FabricaConexoes.returnResult(stm);
      rs.next();
      return rs.getInt("idgrupo");

    } else if (tipo == 1) {
      sql = "select idusuario from usuario where nome = ?";
      if (!FabricaConexoes.verificaConexao()) FabricaConexoes.getConexao();
      stm = FabricaConexoes.returnStatement(sql);
      stm.setString(1, nome);
      rs = FabricaConexoes.returnResult(stm);
      rs.next();
      return rs.getInt("idusuario");
    } else if (tipo == 2) {
      return 0;
    } else if (tipo == 3) {
      return 3;
    } else {
      return 0;
    }
  }
  public String retornaResp(int tipo, int id) throws SQLException {
    if (tipo == 0) {

      sql = "select descricao from grupo where idgrupo = ?";
      if (!FabricaConexoes.verificaConexao()) FabricaConexoes.getConexao();
      stm = FabricaConexoes.returnStatement(sql);
      stm.setInt(1, id);
      rs = FabricaConexoes.returnResult(stm);
      rs.next();
      return rs.getString("Descricao");

    } else if (tipo == 1) {
      sql = "select nome from usuario where idusuario = ?";
      if (!FabricaConexoes.verificaConexao()) FabricaConexoes.getConexao();
      stm = FabricaConexoes.returnStatement(sql);
      stm.setInt(1, id);
      rs = FabricaConexoes.returnResult(stm);
      rs.next();
      return rs.getString("nome");
    } else if (tipo == 2) {
      return "Destinado";
    } else {
      return "";
    }
  }
  public int verificaTipo(int idproc, int chave) {
    /*
     *  tipos de retorno
     *  0 - Atividade
     *  1 - Finalização
     *  2 - Link
     *  3 - erro
     *  4 - Raiz
     * */
    if (chave == 0) return 4;
    sql = "SELECT * FROM processo_atividade WHERE IDproc = ? AND chave = ?";
    try {
      if (!FabricaConexoes.verificaConexao()) FabricaConexoes.getConexao();
      stm = FabricaConexoes.returnStatement(sql);
      stm.setInt(1, idproc);
      stm.setInt(2, chave);
      rs = FabricaConexoes.returnResult(stm);
      rs.next();

      if (rs.getInt("idfin") == 0) {
        return 0;
      } else if (rs.getInt("idfin") != 0 && rs.getInt("link") == 0) {
        return 1;
      } else if (rs.getInt("idfin") != 0 && rs.getInt("link") != 0) {
        return 2;
      } else {
        return 3;
      }

    } catch (SQLException s) {
      JOptionPane.showMessageDialog(null, s.getMessage(), "Erro", 0);
      return 3;
    }
  }
 public Finalizacao getFinalizacao(int id) throws SQLException, NullPointerException {
   sql = "SELECT * FROM FINALIZACAO WHERE idfinalizacao = ?";
   if (!FabricaConexoes.verificaConexao()) FabricaConexoes.getConexao();
   stm = FabricaConexoes.returnStatement(sql);
   stm.setInt(1, id);
   rs = FabricaConexoes.returnResult(stm);
   Finalizacao fin = new Finalizacao();
   rs.next();
   fin.setId(rs.getInt("idfinalizacao"));
   fin.setNome(rs.getString("nome"));
   rs.close();
   stm.close();
   FabricaConexoes.closeConnection();
   return fin;
 }
  public boolean verificaProcesso(int idproc) throws SQLException {
    sql = "Select * from transicao where idproc = ? ";

    if (!FabricaConexoes.verificaConexao()) FabricaConexoes.getConexao();
    stm = FabricaConexoes.returnStatement(sql);
    stm.setInt(1, idproc);
    rs = FabricaConexoes.returnResult(stm);
    if (rs.next()) {
      JOptionPane.showMessageDialog(
          null,
          "Há tarefas ativas para este processo, Verifique!",
          "Alerta",
          JOptionPane.INFORMATION_MESSAGE);
      return true;
    } else {
      return false;
    }
  }
  public int proximaChave(int idproc) {

    sql = "SELECT * FROM processo_atividade WHERE idproc = ? order by chave desc";
    try {
      if (!FabricaConexoes.verificaConexao()) FabricaConexoes.getConexao();
      stm = FabricaConexoes.returnStatement(sql);
      stm.setInt(1, idproc);
      rs = FabricaConexoes.returnResult(stm);
      if (rs.next()) {
        int chave = rs.getInt("chave");
        return ++chave;
      } else {
        return 0;
      }
    } catch (SQLException s) {
      JOptionPane.showMessageDialog(null, s.getMessage(), "Erro", 0);
      return 0;
    }
  }
  public void insereFinalizacoes(int chave, int idproc, int idativ) {

    try {
      ResultSet rsaux;
      sql = "Select * from atividade_finalizacao WHERE id_ativ = ?";
      if (!FabricaConexoes.verificaConexao()) FabricaConexoes.getConexao();
      stm = FabricaConexoes.returnStatement(sql);
      stm.setInt(1, idativ);
      rs = FabricaConexoes.returnResult(stm);
      rsaux = rs;
      while (rsaux.next()) {

        int id = rsaux.getInt("id_fin");
        int pchave = proximaChave(idproc);

        sql =
            "insert into processo_atividade values ("
                + idproc
                + ","
                + idativ
                + ","
                + pchave
                + ","
                + chave
                + ","
                + id
                + ",0,0,0,0,0,0 )";
        if (!FabricaConexoes.verificaConexao()) FabricaConexoes.getConexao();
        stm = FabricaConexoes.returnStatement(sql);
        stm.execute();
      }

      stm.close();

    } catch (SQLException e) {
      e.printStackTrace();
      JOptionPane.showMessageDialog(null, e.getMessage(), "Erro", 0);
    }
  }
 public boolean verificaLink(int chave, int idproc) {
   /*
    * retorna true se possui link na chave indicada
    * retorna false se não possui links na chave indicada
    * */
   sql = "SELECT * FROM processo_atividade WHERE link = ? AND idproc = ?";
   try {
     if (!FabricaConexoes.verificaConexao()) FabricaConexoes.getConexao();
     stm = FabricaConexoes.returnStatement(sql);
     stm.setInt(1, chave);
     stm.setInt(2, idproc);
     rs = FabricaConexoes.returnResult(stm);
     if (rs.next()) {
       return true;
     } else {
       return false;
     }
   } catch (SQLException s) {
     JOptionPane.showMessageDialog(null, s.getMessage(), "Erro", 0);
     return false;
   }
 }
  public ProcAtiv retornaDados(int chave_ex, int idprocesso) throws SQLException {

    int idproc;
    int idativ;
    int chave;
    int raiz;
    int idfin;
    int link;
    int tipo;
    int idtipo;
    int tempo;
    float valor_tempo;

    sql = "Select * from processo_atividade where idproc = ? and chave = ?";

    if (!FabricaConexoes.verificaConexao()) FabricaConexoes.getConexao();
    stm = FabricaConexoes.returnStatement(sql);

    stm.setInt(1, idprocesso);
    stm.setInt(2, chave_ex);
    rs = FabricaConexoes.returnResult(stm);

    rs.next();
    idproc = rs.getInt("idproc");
    idativ = rs.getInt("idat");
    chave = rs.getInt("chave");
    raiz = rs.getInt("raiz");
    idfin = rs.getInt("idfin");
    link = rs.getInt("link");
    tipo = rs.getInt("tipo");
    idtipo = rs.getInt("idtipo");
    tempo = rs.getInt("tempo");
    valor_tempo = rs.getFloat("valor_tempo");
    ProcAtiv processo =
        new ProcAtiv(idproc, idativ, chave, raiz, idfin, link, tipo, idtipo, tempo, valor_tempo);
    FabricaConexoes.closeConnection();
    return processo;
  }