} //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()
} //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()