/// <summary> /// Imprime início da barra de progresso /// </summary> public void PrintStartProgress(string item, string fullFileName) { Watch = System.Diagnostics.Stopwatch.StartNew(); var regex = new Regex(@".* (ECT|LOG|DELTA)_(?<Name>[A-Z_]*).TXT"); var txt = regex.Match(item).Groups["Name"].Value; var itemName = (item.Contains(PrefixDelta) ? "DELTA " : "MASTER") + $" {FileNameComparer.GetDateFromFileName(item)} {txt}"; Console.ForegroundColor = ConsoleColor.DarkCyan; Console.Write(itemName); Console.ForegroundColor = ConsoleColor.DarkGray; Console.Write("{0," + (33 - itemName.Length).ToString() + "}", "|"); LineCount = LastPercentCompleted = InsertCount = UpdateCount = DeleteCount = IgnoreCount = 0; LinesTotal = File.ReadLines(fullFileName).Count(); }
/// <summary> /// Verifica o banco de dados e os arquivos existentes /// para decidir quais arquivos devem ser importados /// </summary> /// <returns>Arquivos não importados</returns> public List <String> GetFilesToProcess() { var files = new List <String>(); var comparer = new FileNameComparer(); var lastMaster = SqlField($"SELECT TOP(1) Arquivo FROM {ControlTable} WHERE Arquivo LIKE '{PrefixMaster}%' ORDER BY Arquivo DESC"); var processedFiles = SqlScalar($"SELECT Arquivo FROM {ControlTable}"); foreach (var f in GetAllFiles()) { // Arquivo já importado if (processedFiles.Contains(f)) { continue; } // Se menor que o último master importado, desconsidera if (lastMaster != null && comparer.Compare(f, lastMaster) < 0) { continue; } // Se novo arquivo master, desconsidera tudo e parte dele if (f.Contains(PrefixMaster)) { files.Clear(); } files.Add(f); } if (null == lastMaster && files.Where(s => s.Contains(PrefixMaster)).Count() < 1) { throw new Exception("Nenhum arquivo 'Master' de referência foi encontrado em importações" + "anteriores ou em arquivo físico. Não é possível continuar."); } return(files); }