Ejemplo n.º 1
0
        static void Main(string[] args)
        {
            string      diretorio = $@"{Directory.GetCurrentDirectory()}\Importar\";
            List <IMDB> dados     = IMDB.importarArquivo(diretorio, 100000); //99000

            List <string> cenariosPossiveis = new List <string>();
            string        cenarioUnico      = "";

            //seleciona o tipo de instalação
            Console.WriteLine("Informe a instalação a ser operada:");
            Console.WriteLine("1 -> PosgreSQL");
            Console.WriteLine("2 -> Posgresql-DBR - 1 nó");
            Console.WriteLine("3 -> Posgresql-DBR - 2 nó");
            Console.WriteLine("4 -> Posgresql-DBR - 2 nó - sendo 1 com defeito permanente");
            Console.WriteLine("5 -> Posgresql-DBR - 2 nó - sendo 1 com defeito intermitente");
            string opcao1 = Console.ReadLine();

            switch (opcao1)
            {
            case "1": cenarioUnico = "PosgreSQL"; break;

            case "2": cenarioUnico = "Posgresql-DBR - 1 nó"; break;

            case "3": cenarioUnico = "Posgresql-DBR - 2 nó"; break;

            case "4": cenarioUnico = "Posgresql-DBR - 2 nó - sendo 1 com defeito permanente"; break;

            case "5": cenarioUnico = "Posgresql-DBR - 2 nó - sendo 1 com defeito intermitente"; break;
            }
            cenariosPossiveis.Add(cenarioUnico);


            //cenariosPossiveis.Add("PosgreSQL");
            //cenariosPossiveis.Add("Posgresql-DBR - 1 nó");
            //cenariosPossiveis.Add("Posgresql-DBR - 2 nó");
            //cenariosPossiveis.Add("Posgresql-DBR - 2 nó - sendo 1 com defeito permanente");
            //cenariosPossiveis.Add("Posgresql-DBR - 2 nó - sendo 1 com defeito intermitente");


            foreach (var cenario in cenariosPossiveis)
            {
                realizaTestes(dados, cenario);
            }
        }
Ejemplo n.º 2
0
        public static List <IMDB> importarArquivo(string diretorio, int limite = 999999999)
        {
            List <IMDB> dados    = new List <IMDB>();
            var         arquivos = ListarArquivos(diretorio);


            //contagem a quantidade de arquivos e linhas totais a importar
            int quantArquivos    = arquivos.Count;
            int quantLinhasTotal = 0;

            Console.WriteLine($"Total de {quantArquivos} arquivos a serem importados");
            for (int i = 0; i < arquivos.Count; i++)
            {
                var    nomeArquivo    = arquivos[i];
                string caminhoArquivo = $"{diretorio}{nomeArquivo}";
                //TextReader arquivo = new StreamReader(caminhoArquivo, true);//Inicializa o Leitor
                Console.Write($"Contando linhas do arquivo {i}");
                int quantLinhas = contarQuantLinhasDeArquivo(caminhoArquivo, i);
                Console.WriteLine($" ====> {quantLinhas} ");
                quantLinhasTotal += quantLinhas;
            }



            int contadorLinhas = 0;

            //varre todas as linhas dos arquivos
            for (int i = 0; i < arquivos.Count; i++)
            {
                var        nomeArquivo    = arquivos[i];
                string     caminhoArquivo = $"{diretorio}{nomeArquivo}";
                TextReader arquivo        = new StreamReader(caminhoArquivo, true); //Inicializa o Leitor
                while (arquivo.Peek() != -1)                                        //Enquanto o arquivo não acabar, o Peek não retorna -1 sendo adequando para o loop while...
                {
                    //limita a quantidade de linhas a serem importadas.
                    if (contadorLinhas >= limite)
                    {
                        return(dados);
                    }

                    //linha do arquivo
                    string linha = arquivo.ReadLine();
                    if (linha.Contains("tconst") == true || linha.Contains("nconst") == true) // se for um cabeçalho, ignorar
                    {
                        goto ignorarLinha;
                    }

                    //tenta realizar a conversão para classe
                    try
                    {
                        var itens = linha.Split("	");
                        //quebra a linha em um array de strings

                        string nconst      = (itens[0] == @"\N") ? null : itens[0];
                        string primaryName = (itens[1] == @"\N") ? null : itens[1];

                        int birthYear = (itens[2] == @"\N") ? 0 : Int32.Parse(itens[2]);
                        int deathYear = (itens[3] == @"\N") ? 0 : Int32.Parse(itens[3]);

                        string primaryProfession = (itens[4] == @"\N") ? null : itens[4];
                        string knownForTitles    = (itens[5] == @"\N") ? null : itens[5];


                        IMDB obj = new IMDB {
                            nconst = nconst, primaryName = primaryName, birthYear = birthYear, deathYear = deathYear, primaryProfession = primaryProfession, knownForTitles = knownForTitles
                        };
                        dados.Add(obj);

                        contadorLinhas++;

                        //Console.WriteLine("");
                    }
                    catch (Exception erro)
                    {
                        goto ignorarLinha;
                    }

ignorarLinha:
                    Console.Write("");
                }
                GC.Collect();
            }


            return(dados);
        }