/// <summary> /// Importa o arquivo de log (insere os registros no banco de dados). Como a importação ocorre no final /// do dia (pouco depois da meia noite), a data dos registros deve ser (dia -1) se o dia teve expediente /// normal ou (dia-n) em domingos/feriados/greves /// </summary> private void ImportFile(String fileName) { notifications.Clear(); /// Examina o arquivo e obtem o último dia trabalhado, considera como sendo /// a data da inserção do último registro DateTime businessDay = CopyLogFile.GetTimeStamp(fileName); // Não verificar se a data já possui registros pois .CSVs de diferentes equipamentos // são importados na mesma data Ex.: if (!logPersistence.FileImported(dateRange)) CopyLogPersistence logPersistence = new CopyLogPersistence(1, dataAccess.GetConnection(), this); logPersistence.ImportFile(fileName, businessDay); ProcessNotifications(); }
public void Execute() { // Verifica se as dependências foram instanciadas (se o método InitializeTaskState foi chamado) if (taskParams == null) { return; } if (dataAccess == null) { return; } if (notifications == null) { return; } if (fileLogger == null) { return; } // Verifica os parâmetros recebidos String logDirectory = taskParams["logDirectory"]; DirectoryInfo dirInfo = new DirectoryInfo(logDirectory); dataAccess.OpenConnection(); // "lastAccess" é gravado e recuperado do banco com frequência, logo não pode ser obtido de "taskParams" CopyLogAccess copyLogAccess = new CopyLogAccess(dataAccess.GetConnection()); DateTime lastAccess = copyLogAccess.GetLastAccess(); // Inicializa o parâmetro "lastAccess" na primeira execução ou quando estiver desatualizado if (firstExecution || copyLogAccess.IsOutOfDate(lastAccess)) { copyLogAccess.SetLastAccess(DateTime.Now); firstExecution = false; dataAccess.CloseConnection(); return; } // Não processa (sai do método) se a tarefa já foi executada hoje if (DateTime.Now.Date.CompareTo(lastAccess) <= 0) { dataAccess.CloseConnection(); return; } // Inicia o append no arquivo de log (acrescentando o "startingDelimiter") fileLogger.LogInfo("Importação de log - Iniciando execução...", true); // Procura os arquivos .CSV no diretório de logs, faz a importação e armazena um backup // do arquivo com a extensão .OLD fileLogger.LogInfo("Fazendo varredura de arquivos .CSV no diretório de logs: " + logDirectory); FileInfo[] files = dirInfo.GetFiles(); int filesParsed = 0; foreach (FileInfo file in files) { if (Path.GetExtension(file.Name).ToUpper() == ".CSV") { fileLogger.LogInfo("Processando arquivo: " + file.Name); String filePath = PathFormat.Adjust(logDirectory); String fileName = Path.GetFileNameWithoutExtension(file.Name); ImportFile(filePath + fileName + ".csv"); CopyLogFile.StoreOldFile(filePath, fileName, ".csv"); filesParsed++; } } if (filesParsed == 0) { fileLogger.LogInfo("Nenhum arquivo processado( Não existem .CSVs no diretório)."); } fileLogger.LogInfo("Execução concluída."); // Grava a data do último acesso no banco copyLogAccess.SetLastAccess(DateTime.Now); dataAccess.CloseConnection(); }