예제 #1
0
        /// <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();
        }
예제 #2
0
        /// <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);
        }