private int distancia_aux( Map<String, Ligacao> ligacoes, DijElem elemAct, HashMap<String, DijElem> elementos, int greycount) { Collection<Ligacao> coll = ligacoes.values(); int grey = greycount; for (Ligacao lig : coll) { DijElem target = elementos.get(lig.get_Localidaded()); if (target != null && (target.get_Vis() != _VIS_BLACK) && (target.get_Nrlocalidades() > (elemAct.get_Nrlocalidades() + 1))) { target.set_Nrlocalidades(elemAct.get_Nrlocalidades() + 1); target.set_Pai(elemAct.get_Nome()); } else if (target == null) { target = new DijElem( lig.get_Localidaded(), elemAct.get_Nrlocalidades() + 1, elemAct.get_Nome(), _VIS_GREY); grey++; elementos.put(lig.get_Localidaded(), target.clone()); } } return grey; }
/** Metodo que escreve os clientes num ficheiro */ public void escreveLocalidades(String fileLocalidades, String fileLigacoes, int nrlocalidades) throws FileNotFoundException, IOException { PrintWriter printloc = new PrintWriter(fileLocalidades); PrintWriter printlig = new PrintWriter(fileLigacoes); Collection<Localidade> coll = this.localidades.values(); for (Localidade l : coll) { printloc.print(l.get_Codigopostal() + "|" + l.get_Nome()); Map<String, Ligacao> ligacoes = l.get_Ligacoes(); int nrligacoes = ligacoes.size(); Collection<Ligacao> colllig = ligacoes.values(); for (Ligacao lig : colllig) { printloc.print("|1"); printlig.println( l.get_Codigopostal() + "|" + lig.get_Localidaded() + "|" + lig.get_Distancia() + "|" + lig.get_Taxas()); } printloc.print("\n"); nrlocalidades--; if (nrlocalidades == 0) break; } printloc.close(); printlig.close(); }
/** Metodo que adiciona uma ligação */ public boolean addLigacao(Ligacao ligacao, String partida) { if (this.localidades.containsKey(partida)) { Localidade aux = this.localidades.get(partida); return aux.addLigacao(ligacao.clone()); } return false; }
/* *Excluir registro da base de dados *@param chave do registro a ser excluido *@return verdadeiro para exclusao bem sucedida */ public boolean excluir(Object chave) { boolean ok = false; String chaveFormatada = chaveFormatada(chave); DeleteSqlBD sql = new DeleteSqlBD(); sql.setTabela(ligacao.getTabela()); sql.insereCondicao(_campoChave + " = " + chaveFormatada); if (ServidorBD.executaUpdate(sql.getQuery()) == 1) { ok = true; } return ok; }
/* *Buscar posicao do ultimo registro *@return chave para ultimo registro encontrado */ public Object buscarUltimo() { Object ultimo = null; SelectSqlBD sql = new SelectSqlBD(); sql.setTabela(ligacao.getTabela()); sql.insereColuna(_campoChave, "chave", "max"); TabelaBD reg = ServidorBD.executaQuery(sql.getQuery()); if (reg.primeiro() && reg.getColuna("chave") != null) { ultimo = reg.getColuna("chave"); } return ultimo; }
private Object buscarPosicao(Object chave, String criterio, String condicao) { Object registro = null; String chaveFormatada = chaveFormatada(chave); SelectSqlBD sql = new SelectSqlBD(); sql.setTabela(ligacao.getTabela()); sql.insereColuna(_campoChave, "chave", condicao); sql.insereCondicao(_campoChave + criterio + chaveFormatada); TabelaBD reg = ServidorBD.executaQuery(sql.getQuery()); if (reg.primeiro() && reg.getColuna("chave") != null) { registro = reg.getColuna("chave"); } return registro; }
/** * Procurar campo especifico baseado em seu conteudo * * @param nomeCampo * @param chave * @param campoDescricao * @return */ public Object[][] procurarCampo(String nomeCampo, String chave, String campoDescricao) { Object[][] resultado = null; SelectSqlBD sql = new SelectSqlBD(); sql.setTabela(ligacao.getTabela()); sql.insereColuna(_campoChave); sql.insereColuna(campoDescricao); sql.insereCondicao(nomeCampo + " LIKE " + chave); TabelaBD reg = ServidorBD.executaQuery(sql.getQuery()); int numRegistros = reg.getTotalRegistros(); if (numRegistros > 0) { resultado = new Object[numRegistros][2]; reg.primeiro(); for (int i = 0; i < numRegistros; i++) { resultado[i][0] = chaveFormatada(reg.getColuna(0)); resultado[i][1] = reg.getColuna(1); reg.proximo(); } } return resultado; }
/** * Informa a tabela base * * @return nome da tabela */ public String getTabela() { return ligacao.getTabela(); }