public void RealizarImportacao(string pCaminhoDoArquivoDeDados) { gImportacoesParaRealizar = new List <ResultadoDeImportacao>(); ResultadoDeImportacao lResultado; if (pCaminhoDoArquivoDeDados.EndsWith("\\")) { string[] lCaminhos = Directory.GetFiles(pCaminhoDoArquivoDeDados); foreach (string lCaminho in lCaminhos) { if (!lCaminho.EndsWith(".importado")) //arquivos ".importado" são os que já foram importados { lResultado = new ResultadoDeImportacao(lCaminho); gImportacoesParaRealizar.Add(lResultado); } } } else { gImportacoesParaRealizar.Add(new ResultadoDeImportacao(pCaminhoDoArquivoDeDados)); } OnMensagem("[{0}] arquivo{1} para importar.", gImportacoesParaRealizar.Count, gImportacoesParaRealizar.Count > 0 ? "s" : ""); ThreadStart lThread = new ThreadStart(RealizarImportacoes); lThread.BeginInvoke(null, null); OnMensagem("Thread de importações iniciado."); }
private void RealizarImportacao(ResultadoDeImportacao pResultado) { //System.Threading.Thread.Sleep(4000); string lArquivoRelativo = Path.GetFileName(pResultado.CaminhoDoArquivoDeDados); Importacao_AbrirArquivoDeLog(lArquivoRelativo); Importacao_AbrirArquivoDeSaida(lArquivoRelativo); if (Importacao_AbrirConexaoComBanco()) { ExecutarProcedureCasoHaja(this.ProcAnterior, "pré-importação"); int lContagemSucessos = 0; int lContagemErros = 0; int lTotal = gLinhasDoArquivosDeDados.Length; byte lPassosParaLogar = 0; byte lMaximoDeErrosEmSequencia = 100; bool lImportacaoComSucesso = true; for (int a = 0; a < gLinhasDoArquivosDeDados.Length; a++) { lPassosParaLogar++; if (lPassosParaLogar == 10) { lPassosParaLogar = 0; OnMensagem("Importação em andamento: [{0}] com sucesso, [{1}] com erro.", lContagemSucessos, lContagemErros); } try { if (string.IsNullOrEmpty(this.ProcDeDestino)) { Importacao_ProcessarLinhaViaInsert(gLinhasDoArquivosDeDados[a]); } else { Importacao_ProcessarLinhaViaProcedure(gLinhasDoArquivosDeDados[a]); } lContagemSucessos++; } catch (Exception ex) { OnMensagem("Erro ao importar a linha número [{0}]: [{1}]", (a + 1).ToString().PadLeft(9, '0'), ex.Message); lContagemErros++; } if (lContagemErros >= lMaximoDeErrosEmSequencia && lContagemSucessos == 0) { OnMensagem("Passaram-se [{0}] erros sem nenhum sucesso, a importação será abortada.", lContagemErros); lImportacaoComSucesso = false; break; } } ExecutarProcedureCasoHaja(this.ProcPosterior, "posterior"); if (lImportacaoComSucesso) { ExecutarProcedureCasoHaja(this.ProcCasoSucesso, "de sucesso"); OnMensagem("Importação realizada com sucesso, renomeando arquivo de dados"); File.Move(pResultado.CaminhoDoArquivoDeDados, pResultado.CaminhoDoArquivoDeDados + ".importado"); pResultado.MarcarComoFinalizada("Finalizada com Sucesso"); } else { ExecutarProcedureCasoHaja(this.ProcCasoErro, "de erro"); OnMensagem("Importação realizada com erro."); pResultado.MarcarComoFinalizada("Finalizada com Erro"); } } else { OnMensagem("Importação abortada por falta de conexão com o banco de dados."); pResultado.MarcarComoFinalizada("Finalizada com Erro"); } Importacao_FecharArquivosEConexao(); }