Ejemplo n.º 1
0
        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));
        }
Ejemplo n.º 2
0
        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);
        }