예제 #1
0
        } //lerCSV()

        /// <summary>
        /// Cria a árvore à partir dos dados lidos do CSV
        /// </summary>
        /// <param name="dicionario">Dados lidos do CSV</param>
        /// <returns>Indica se houve erro (false) ou não (true) no processo</returns>
        public static bool criaArvore(Dictionary <int, DadosOcorrencia> dicionario)
        {
            //Cria o componente responsável por serializar os dados a serem escritos na árvore
            ProtoNetSerializer <DadosOcorrencia> serializer = new ProtoNetSerializer <DadosOcorrencia>();

            //Prepara as opções da árvore
            var tree_options = new BPlusTree <int, DadosOcorrencia> .OptionsV2(PrimitiveSerializer.Int32, serializer);

            tree_options.CalcBTreeOrder(8, 30);
            tree_options.CreateFile = CreatePolicy.IfNeeded;
            tree_options.FileName   = path_btree;

            //Checa se o arquivo já existe
            if (!File.Exists(path_btree))
            {
                using (var tree = new BPlusTree <int, DadosOcorrencia>(tree_options))
                {
                    foreach (KeyValuePair <int, DadosOcorrencia> entry in dicionario)
                    {
                        //Percorre o dicionário e adiciona na árvore
                        tree.Add(entry.Key, entry.Value);
                    }
                }
            }
            //Erro, a árvore já existe!
            else
            {
                return(false);
            }

            //Se não houve erros retorna true
            return(true);
        } //criaArvore()
예제 #2
0
        } //criaArvore()

        /// <summary>
        /// Busca um valor específico na árvore
        /// </summary>
        /// <returns>Dados lidos da árvore</returns>
        public static List <DadosOcorrencia> buscaValor(string valor)
        {
            //Cria uma nova lista para retornar
            List <DadosOcorrencia> lista = new List <DadosOcorrencia>();

            //Cria o componente responsável por desserializar os dados a serem lidos da árvore
            ProtoNetSerializer <DadosOcorrencia> serializer = new ProtoNetSerializer <DadosOcorrencia>();

            //Prepara as opções da árvore
            var tree_options = new BPlusTree <int, DadosOcorrencia> .OptionsV2(PrimitiveSerializer.Int32, serializer);

            tree_options.CalcBTreeOrder(8, 30);
            tree_options.CreateFile = CreatePolicy.IfNeeded;
            tree_options.FileName   = path_btree;

            //Checa se o arquivo já existe
            if (File.Exists(path_btree))
            {
                using (var tree = new BPlusTree <int, DadosOcorrencia>(tree_options))
                {
                    //Varre a árvore buscando o dado
                    foreach (KeyValuePair <int, DadosOcorrencia> par in tree)
                    {
                        if (par.Value.ocorrencia.localidade.IndexOf(valor, StringComparison.OrdinalIgnoreCase) >= 0)
                        {
                            lista.Add(par.Value);
                        }
                    }
                }
            }
            else
            {
                //Erro, a árvore não existe!
            }

            //Retorna a lista lida
            return(lista);
        } //buscaValor()