/// <summary> /// Efetua a pesquisa pelo delegate e registra seus logs /// </summary> /// <param name="type">Tipo de Pesquisa</param> /// <param name="idRoom">Id Room pesquisado</param> /// <param name="searchDelegate">Função de pesquisa</param> private static void Search(string type, int idRoom, SearchDelegate searchDelegate) { Console.Clear(); Console.Write("Pesquisando..."); // Salva o horario de início DateTime start = DateTime.Now; // Inicia o cronômetro Stopwatch watch = Stopwatch.StartNew(); // Invoca o delegate Airbnb airbnb = searchDelegate.Invoke(idRoom, out int comparisons); // Pausa o cronômetro watch.Stop(); // Salva o horario de término DateTime end = DateTime.Now; // Converte o tempo do cronômetro para segundos long time = watch.ElapsedTicks; Console.Clear(); Console.WriteLine("Pesquisa finalizada"); Console.WriteLine("-------------------"); Console.WriteLine($"Tipo: {type}"); Console.WriteLine($"ID Room pesquisado: {idRoom}"); Console.WriteLine($"Comparações: {comparisons}"); Console.WriteLine($"Tempo: {time} ticks ({start.ToLongTimeString()} - {end.ToLongTimeString()})"); Console.WriteLine("-------------------"); // Mostra o objeto pesquisado Console.WriteLine("Objeto: "); if (airbnb == null) { Console.WriteLine("Não encontrado."); } else { Console.WriteLine(airbnb.ToString()); } Console.WriteLine("-------------------"); }
/// <summary> /// Lê os dados Airbnb armazenados no arquivo texto /// </summary> /// <param name="path">Caminho do arquivo</param> /// <returns>Array de Airbnb</returns> private Airbnb[] ReadFile(string path) { // Le todas as linhas do arquivo string[] lines = File.ReadAllLines(path); // Define o arrary ignorando a primeira posição Airbnb[] airbnbs = new Airbnb[lines.Length - 1]; for (int i = 1; i < lines.Length; i++) { string[] line = lines[i].Split("\t"); int roomId = Convert.ToInt32(line[0]); int hostId = Convert.ToInt32(line[1]); string roomType = line[2]; string country = line[3]; string city = line[4]; string neighborhood = line[5]; double review = Convert.ToDouble(line[6]); double overallSatisfaction = Convert.ToDouble(line[7]); double accommodates = Convert.ToDouble(line[8]); double bedrooms = Convert.ToDouble(line[9]); double price = Convert.ToDouble(line[10]); string propertyType = line[11]; airbnbs[i - 1] = new Airbnb(roomId, hostId, roomType, city, country, neighborhood, review, overallSatisfaction, accommodates, bedrooms, price, propertyType); } return(airbnbs); }