private Boolean ProcessCopyLogFile(String fileName, CopyLogDevice sourceDevice, CopyLogSender copyLogSender) { if (sourceDevice == null) { NotifyListener("O arquivo de log precisa estar associado a um dispositivo."); return(false); } // Informações de trace são enviadas ao listener através de NotifyListener() // O listener grava essas informações em log de arquivo CSVReader reader = new CSVReader(fileName, listener); NotifyListener("Fazendo a leitura do CSV."); DataTable fullTable = reader.Read(0); int rowCount = fullTable.Rows.Count; // Verifica se existem registros no CSV if (rowCount < 1) { NotifyListener("CSV inválido. Nenhum registro encontrado."); return(false); } // Informa a quantidade de registros no CSV NotifyListener("Quantidade de registros no CSV - " + rowCount); CopyLogDeviceHandler deviceHandler = new CopyLogDeviceHandler(sourceDevice); return(deviceHandler.ProcessCopyLog(fullTable, copyLogSender, tenantId)); }
public Boolean SendCopyJobs(String logDirectory) { Boolean success = true; CopyLogSender copyLogSender = new CopyLogSender(serviceUrl, listener); DirectoryInfo logDir = new DirectoryInfo(logDirectory); if (!logDir.Exists) { NotifyListener("Falha ao enviar logs. O diretório " + logDirectory + " não existe."); return(false); } String devicesXml = PathFormat.Adjust(logDirectory) + "Devices.xml"; if (!File.Exists(devicesXml)) { NotifyListener("Falha ao enviar logs. O arquivo " + devicesXml + " não foi encontrado."); return(false); } List <CopyLogDevice> devices = GetDevices(devicesXml); // Procura os arquivos .CSV no diretório de logs, faz a importação e armazena um backup // do arquivo com a extensão .OLD NotifyListener("Fazendo varredura de arquivos .CSV no diretório de logs: " + logDirectory); FileInfo[] files = logDir.GetFiles(); int filesParsed = 0; foreach (FileInfo file in files) { if (Path.GetExtension(file.Name).ToUpper() == ".CSV") { NotifyListener("Processando arquivo: " + file.Name); String filePath = PathFormat.Adjust(logDirectory); String fileName = Path.GetFileNameWithoutExtension(file.Name); // Procura o dispositivo que gerou o log (quando não encontra retorna null) CopyLogDevice sourceDevice = SearchLogFileSource(file.Name, devices); // Processa o arquivo de log, possui tratamento caso "sourceDevice" seja null if (!ProcessCopyLogFile(filePath + fileName + ".csv", sourceDevice, copyLogSender)) { success = false; } // Armazena um backup do arquivo com a extensão .OLD caso o arquivo tenha mais de um dia DateTime lastWrite = CopyLogFile.GetTimeStamp(filePath + fileName + ".csv"); if (lastWrite < DateTime.Now.AddDays(-1)) { CopyLogFile.StoreOldFile(filePath, fileName, ".csv"); } // Se processou o arquivo com sucesso incrementa a contagem if (success) { filesParsed++; } } } if (filesParsed == 0) { NotifyListener("Nenhum arquivo processado( Não existem .CSVs no diretório ou houve falha no processamento)."); } if (!copyLogSender.FinishSending()) { success = false; // Falha ao enviar algum pacote de logs } return(success); }