Beispiel #1
0
 public void SortearNumeros()
 {
     if (Tope < 0 || Tope < Cantidad || Tope < Inicio || Inicio < 0 || Cantidad < 0)
     {
         throw new ArgumentException("Existen errores en los parametros del sorteo.");
     }
     Tope--;
     if (PermitirDuplicados)
     {
         for (int i = 0; i < Cantidad; i++)
         {
             int numero = sortearNumero(Inicio, Tope);
             Resultado.Add(ContenidoBolillero[numero]);
         }
     }
     else
     {
         for (int i = 0; i < Cantidad; i++)
         {
             int numero;
             do
             {
                 numero = sortearNumero(Inicio, Tope);
             } while (Resultado.Contains(ContenidoBolillero[numero]));
             Resultado.Add(ContenidoBolillero[numero]);
         }
     }
 }
Beispiel #2
0
        public void Copiar(string aplicacao, string local, string remoto, string[] arquivos)
        {
            using (var session = GetNewSession())
            {
                Backup(session, aplicacao, local, remoto, arquivos);
                Resultado.Add("Cópia dos arquivos");

                foreach (var arquivo in arquivos)
                {
                    var arquivoLocal  = $@"{local}\{aplicacao}\{arquivo}";
                    var arquivoRemoto = $@"{remoto}/{aplicacao}/{arquivo.Replace(@"\", "/")}";

                    try
                    {
                        var transferResult = session.PutFiles(arquivoLocal, arquivoRemoto);
                        transferResult.Check();
                        Resultado.Add($"OK - de: {arquivoLocal} para: {arquivoRemoto}");
                    }
                    catch (Exception e)
                    {
                        Resultado.Add($"FALHA - de: {arquivoRemoto} para: {arquivoRemoto}, erro: {e.Message}");
                    }
                }

                Resultado.Add("Fim cópia dos arquivos");
            }
        }
Beispiel #3
0
 public void Run()
 {
     if (!FilaEntrada.Any() && NumberProcessed == NumeroConexoes)
     {
         RunConnectedActivities();
         return;
     }
     else if (!FilaEntrada.Any() || NumberProcessed < NumeroConexoes)
     {
         return;
     }
     FilaEntrada = FilaEntrada.OrderBy(x => x.Inicio).ToList();
     foreach (SItem item in FilaEntrada)
     {
         var tempo   = CalcularTS();
         var newItem = AddItemToFilaProcesso(new SItem {
             Nome = item.Nome, Inicio = item.Inicio
         }, tempo);
         Resultado.Add(newItem);
         sendToConnection(new SItem {
             Inicio = newItem.Fim, Nome = newItem.Nome
         });
     }
     if (Print)
     {
         //PrintAtividadesEntrada();
         PrintAtividadesResultado();
     }
     RunConnectedActivities();
 }
Beispiel #4
0
 public void SortearNumeros()
 {
     if (Tope < 0 || Tope < Cantidad || Tope < Inicio || Inicio < 0 || Cantidad < 0)
     {
         throw new ArgumentException("Existen errores en los parametros del sorteo.");
     }
     if (UsarRango)
     {
         if (Rango != 0)
         {
             if (Cantidad == 0)
             {
                 Cantidad = CalcularCantidad();
             }
         }
         int inicio;
         for (int i = 1; i <= Cantidad; i++)
         {
             inicio = (i - 1) * (int)Rango + 1;
             int topeRango = i * (int)Rango;
             if (Tope > topeRango)
             {
                 Resultado.Add(sortearNumero(inicio, topeRango));
             }
             else
             {
                 Resultado.Add(sortearNumero(inicio, Tope));
             }
         }
     }
     else
     {
         if (PermitirDuplicados)
         {
             for (int i = 0; i < Cantidad; i++)
             {
                 int numero = sortearNumero(Inicio, Tope);
                 Resultado.Add(numero);
             }
         }
         else
         {
             for (int i = 0; i < Cantidad; i++)
             {
                 int numero;
                 do
                 {
                     numero = sortearNumero(Inicio, Tope);
                 } while(Resultado.Contains(numero));
                 Resultado.Add(numero);
             }
         }
     }
 }
Beispiel #5
0
        private void Backup(Session sessionFtp, string aplicacao, string local, string remoto, string[] arquivos)
        {
            if (!GeraBackup)
            {
                return;
            }

            Resultado.Add($"Processamento do backup ------------------ ");
            var dataHoraAtual   = DateTime.Now.ToString("yyyyMMddHHmmss");
            var diretorioBackup = $"backup-{dataHoraAtual}";

            string diretorioTemporario = Path.Combine(Path.GetTempPath(), Path.GetRandomFileName());

            Directory.CreateDirectory(diretorioTemporario);

            foreach (var arquivo in arquivos)
            {
                var arquivoRemoto       = $@"{remoto}\{aplicacao}\{arquivo}".Replace(@"\", "/").Replace(@"\\", @"\");
                var arquivoRemotoBackup = $@"{remoto}/{aplicacao}/{diretorioBackup}\{arquivo}".Replace(@"\", "/").Replace(@"\\", @"\");
                var remotoSemArquivo    = arquivoRemotoBackup.Replace(arquivoRemotoBackup.Split('/').Last(), "");

                try
                {
                    if (!sessionFtp.FileExists(remotoSemArquivo))
                    {
                        sessionFtp.CreateDirectory(remotoSemArquivo);
                    }

                    sessionFtp.MoveFile(arquivoRemoto, arquivoRemotoBackup);
                    Resultado.Add($"OK - de: {arquivoRemoto} para: {arquivoRemotoBackup}");
                }
                catch (Exception e)
                {
                    Resultado.Add($"FALHA - de: {arquivoRemoto} para: {arquivoRemotoBackup}, erro: {e.Message}");
                }
            }

            var result = sessionFtp.SynchronizeDirectories(SynchronizationMode.Local, diretorioTemporario, $@"{remoto}/{aplicacao}/{diretorioBackup}\", false);

            result.Check();

            var remove = sessionFtp.RemoveFiles($@"{remoto}/{aplicacao}/{diretorioBackup}\");

            remove.Check();
            ArquivoBkpZip = $@"c:\teste\transf-bkp-{dataHoraAtual}.zip";
            ZipFile.CreateFromDirectory(diretorioTemporario + @"\", ArquivoBkpZip, CompressionLevel.Optimal, false);

            Resultado.Add($"Fim do processamento do backup ------------------ ");
        }
Beispiel #6
0
        public void Run()
        {
            // Não roda caso o Nó seja uma "folha", ou seja, não tenha conexões
            if (!Connections.Any())
            {
                if (Print)
                {
                    PrintAtividadesEntrada();
                }
                return;
            }

            // Ordena a fila de entrada pela ordem de entrada na atividade
            FilaEntrada = FilaEntrada.OrderBy(x => x.Inicio).ToList();

            foreach (SItem item in FilaEntrada)
            {
                // Seleciona a próxima atividade (conexão) de acordo com um número aleatório gerado
                SConnection target = GetConnectionByProbability(rand.NextDouble());

                // Pega o tempo de processamento desse item e atualiza o mesmo
                var tempoProc = target.CalcTS();
                var newItem   = ProcessItem(new SItem {
                    Nome = item.Nome, Inicio = item.Inicio
                }, tempoProc);

                // Adiciona o item na lista de resultados
                Resultado.Add(newItem);

                // Adiciona o item na fila de entrada da próxima atividade
                target.Connection.FilaEntrada.Add(new SItem {
                    Inicio = newItem.Fim, Nome = newItem.Nome
                });
            }

            // Faz o Display das informações obtidas com a simulação da atividade
            if (Print)
            {
                PrintAtividadesResultado();
            }

            // Processa as connexões
            RunConnectedActivities();
        }
Beispiel #7
0
        public void SortearNumeros()
        {
            if (Tope < 0 || Tope < cantidad || Tope < Inicio || Inicio < 0 || cantidad < 0 || cantidad > Tope || Rango < 0)
            {
                throw new ArgumentException("Existen errores en los parametros del sorteo.");
            }
            int inicio;

            for (int i = 1; i <= cantidad; i++)
            {
                inicio = (i - 1) * (int)Rango + 1;
                int topeRango = i * (int)Rango;
                if (Tope > topeRango)
                {
                    Resultado.Add(sortearNumero(inicio, topeRango));
                }
                else
                {
                    Resultado.Add(sortearNumero(inicio, Tope));
                }
            }
        }
Beispiel #8
0
        public void SortearNumeros()
        {
            if (Tope < 0 || Tope < Cantidad || Tope < Inicio || Inicio < 0 || Cantidad < 0 || Cantidad > Tope)
            {
                throw new ArgumentException("Existen errores en los parametros del sorteo.");
            }
            Rango = CalcularFrecuencia();
            int inicio;
            int rangoAnterior = 0;
            // el restoRango (la parte decimal del calculo de la frecuencia) se multiplica por Cantidad para calcular cuantos numeros de menos quedan para cubrir el tope.
            int sumaRango = (int)(restoRango * Cantidad);

            for (int i = 1; i <= Cantidad; i++)
            {
                //inicio = (i - 1) * (int)Rango + 1;
                inicio = rangoAnterior + 1;

                //int topeRango = i * (int)Rango;
                int topeRango = i == 2 ? rangoAnterior + (int)Rango + 1 : rangoAnterior + (int)Rango;

                // mientras la iteracion sea menor que sumaRango se suma 1 al tope de rango
                if (i <= sumaRango)
                {
                    topeRango++;
                }

                if (Tope > topeRango)
                {
                    Resultado.Add(sortearNumero(inicio, topeRango));
                }
                else
                {
                    Resultado.Add(sortearNumero(inicio, Tope));
                }
                rangoAnterior = topeRango;
            }
        }
        protected void PesquisarDiretorio(string diretorioPai)
        {
            if (InternalCancelado)
            {
                return;
            }

            OnMensagemProgresso(diretorioPai);

            if (InternalCancelado)
            {
                return;
            }

            string[] listaArquivos;

            try
            {
                listaArquivos = Directory.GetFiles(diretorioPai, Contexto.NomeArquivo);
            }
            catch (Exception ex)
            {
                Logger.Default.LogAviso(String.Format(
                                            "Diretório {0}. Erro: {1}", diretorioPai, ex.Message));
                listaArquivos = null;
            }

            if (listaArquivos != null)
            {
                foreach (string arquivo in listaArquivos)
                {
                    if (InternalCancelado)
                    {
                        return;
                    }
                    if (Resultado.Count == Contexto.MaximoDeResultados)
                    {
                        return;
                    }

                    try
                    {
                        EntradaEncontrada entrada = new EntradaEncontrada(arquivo, EntradaEncontrada.eTipoEntrada.eTipoArquivo);
                        if (Contexto.FiltroArquivo != null)
                        {
                            if (!Contexto.FiltroArquivo.Filtrar(this, Contexto, entrada))
                            {
                                entrada = null;
                            }
                        }
                        if (entrada != null)
                        {
                            Resultado.Add(entrada);
                            OnArquivoEncontrado(entrada);
                        }
                    }
                    catch (Exception ex)
                    {
                        Logger.Default.LogAviso(String.Format(
                                                    "Arquivo {0}. Erro: {1}", arquivo, ex.Message));
                        return;
                    }
                }
            }

            if (InternalCancelado)
            {
                return;
            }

            string[] listaDiretorios;

            try
            {
                listaDiretorios = Directory.GetDirectories(diretorioPai);
            }
            catch (Exception ex)
            {
                Logger.Default.LogAviso(String.Format(
                                            "Diretório {0}. Erro: {1}", diretorioPai, ex.Message));
                return;
            }

            foreach (string diretorio in listaDiretorios)
            {
                if (InternalCancelado)
                {
                    return;
                }
                if (Resultado.Count == MaximoDeResultados)
                {
                    return;
                }

                if (Contexto.IgnorarPastasOcultas)
                {
                    DirectoryInfo info = new DirectoryInfo(diretorio);
                    if ((info.Attributes & FileAttributes.Hidden) > 0)
                    {
                        continue;
                    }
                }

                // Usa o filtro de diretório para retorno o diretório como um resultado
                // de pesquisa.
                if (Contexto.FiltroDiretorio != null)
                {
                    try
                    {
                        EntradaEncontrada entrada = new EntradaEncontrada(diretorio, EntradaEncontrada.eTipoEntrada.eTipoDiretorio);
                        if (Contexto.FiltroDiretorio.Filtrar(this, Contexto, entrada))
                        {
                            Resultado.Add(entrada);
                            OnArquivoEncontrado(entrada);
                        }
                    }
                    catch (Exception ex)
                    {
                        Logger.Default.LogAviso(String.Format(
                                                    "Diretório {0}. Erro: {1}", diretorio, ex.Message));
                        return;
                    }
                }

                // pesquisa em todos os diretórios independente do filtro de diretório
                if (Contexto.UseThreads)
                {
                    QueuePesquisarDiretorio(diretorio);
                }
                else
                {
                    PesquisarDiretorio(diretorio);
                }
            }
        }