public boolean insertAtivFin(
      int idproc,
      int idat,
      int chave,
      int raiz,
      int idfin,
      int link,
      int tipo,
      int idtipo,
      int tempo,
      float valor)
      throws SQLException {
    if (verificaProcesso(idproc)) return false;
    sql =
        "INSERT INTO processo_atividade (IDproc,IDat,chave,raiz,idfin,link,tipo,idtipo,tempo,valor_tempo) VALUES (?,?,?,?,?,?,?,?,?,?)";

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

    stm.setInt(1, idproc);
    stm.setInt(2, idat);
    stm.setInt(3, chave);
    stm.setInt(4, raiz);
    stm.setInt(5, idfin);
    stm.setInt(6, link);
    stm.setInt(7, tipo);
    stm.setInt(8, idtipo);
    stm.setInt(9, tempo);
    stm.setFloat(10, valor);
    stm.execute();
    stm.close();
    FabricaConexoes.closeConnection();
    return true;
  }
  public void removeLink(int chave, int idproc) throws SQLException {
    sql = "Update processo_atividade set link = 0,processo = 0 where chave = ? and idproc = ?";

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

    stm.setInt(1, chave);
    stm.setInt(2, idproc);
    stm.execute();
    stm.close();
    FabricaConexoes.closeConnection();
  }
  public void deleteAtividade(Atividade atividade) throws SQLException {
    sql = "DELETE FROM atividade WHERE idatividade = ?";

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

    stm.setInt(1, atividade.getId());

    stm.execute();
    stm.close();
    FabricaConexoes.closeConnection();
  }
  public void deleteAtividadeFinalizacao(int idativ, int idfin) throws SQLException {
    sql = "DELETE FROM ATIVIDADE_FINALIZACAO WHERE ID_ATIV = ? AND ID_FIN = ?";

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

    stm.setInt(1, idativ);
    stm.setInt(2, idfin);
    stm.execute();
    stm.close();
    JOptionPane.showMessageDialog(null, "Finalização exclusa com sucesso!", "Exclusão", 1);
    FabricaConexoes.closeConnection();
  }
  public void insertAtividadeFinalizacao(int idativ, int idfin) throws SQLException {
    sql = "INSERT INTO ATIVIDADE_FINALIZACAO (ID_ATIV,ID_FIN) VALUES (?,?)";

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

    stm.setInt(1, idativ);
    stm.setInt(2, idfin);
    stm.execute();
    stm.close();
    JOptionPane.showMessageDialog(null, "Finalização incluída com sucesso!", "Inserção", 1);
    FabricaConexoes.closeConnection();
  }
 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 void deleteAtivFin(int idproc, int chave) {
    sql = "DELETE 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);
      stm.execute();
      stm.close();
      JOptionPane.showMessageDialog(null, "Atividade removida com sucesso!", "Exclusão", 1);
      FabricaConexoes.closeConnection();
    } catch (SQLException sql) {
      JOptionPane.showMessageDialog(null, sql.getMessage(), "Erro", 0);
    }
  }
  public void insertAtividade(Atividade atividade) throws SQLException {
    sql =
        "INSERT INTO atividade (NOME, DESCRICAO, USER_MODIF, AUTOR, STATUS)" + "VALUES(?,?,?,?,?)";

    if (!FabricaConexoes.verificaConexao()) FabricaConexoes.getConexao();
    stm = FabricaConexoes.returnStatement(sql);
    stm.setString(1, atividade.getNome());
    stm.setString(2, atividade.getDescricao());

    stm.setInt(3, atividade.getUserModif());
    stm.setInt(4, atividade.getAutor());
    stm.setInt(5, atividade.getStatus());

    stm.execute();

    stm.close();
    FabricaConexoes.closeConnection();
  }
  public void updateAtividade(Atividade atividade) throws SQLException {
    sql =
        "UPDATE atividade SET nome = ?, descricao = ?, user_modif = ?, status = ? WHERE idatividade = ? ";

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

    stm.setString(1, atividade.getNome());
    stm.setString(2, atividade.getDescricao());

    stm.setInt(3, atividade.getUserModif());
    stm.setInt(4, atividade.getStatus());

    stm.setInt(5, atividade.getId());
    stm.execute();
    stm.close();
    FabricaConexoes.closeConnection();
  }
  public Atividade getAtividade(int id) throws SQLException, NullPointerException {
    sql = "SELECT * FROM ATIVIDADE WHERE idatividade = ?";

    if (!FabricaConexoes.verificaConexao()) FabricaConexoes.getConexao();
    stm = FabricaConexoes.returnStatement(sql);
    stm.setInt(1, id);
    rs = stm.executeQuery();

    atividade = new Atividade();
    rs.next();
    atividade.setId(rs.getInt("idatividade"));
    atividade.setNome(rs.getString("nome"));
    atividade.setDescricao(rs.getString("descricao"));

    atividade.setUserModif(rs.getInt("User_Modif"));
    atividade.setAutor(rs.getInt("autor"));
    atividade.setStatus(rs.getInt("status"));

    FabricaConexoes.closeConnection();
    return atividade;
  }
  public boolean updateAtivFin(
      int tipo, int idtipo, int tempo, float valor_tempo, int chave, int idproc)
      throws SQLException {
    if (verificaProcesso(idproc)) {
      return false;
    }
    sql =
        "Update processo_atividade set tipo=?,idtipo=?,tempo=?,valor_tempo=? where chave = ? and idproc = ?";

    if (!FabricaConexoes.verificaConexao()) FabricaConexoes.getConexao();
    stm = FabricaConexoes.returnStatement(sql);
    stm.setInt(1, tipo);
    stm.setInt(2, idtipo);
    stm.setInt(3, tempo);
    stm.setFloat(4, valor_tempo);
    stm.setInt(5, chave);
    stm.setInt(6, idproc);
    stm.execute();
    stm.close();
    FabricaConexoes.closeConnection();
    return true;
  }
  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;
  }
  public ArrayList<Atividade> getAll() throws SQLException {
    sql = "SELECT * FROM ATIVIDADE";

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

    list = new ArrayList<Atividade>();

    while (rs.next()) {
      atividade = new Atividade();
      atividade.setId(rs.getInt("idatividade"));
      atividade.setNome(rs.getString("nome"));
      atividade.setDescricao(rs.getString("descricao"));

      atividade.setUserModif(rs.getInt("User_Modif"));
      atividade.setAutor(rs.getInt("autor"));
      atividade.setStatus(rs.getInt("status"));

      list.add(atividade);
    }
    FabricaConexoes.closeConnection();
    return list;
  }