/// <summary> /// Metodo responsabile della ricerca in base ad una query prestabilita /// </summary> /// <param name="query">Stringa da ricercare</param> /// <returns></returns> public IList <IStazione> Cerca(string query) { string uppercaseQuery = query.ToUpper(); List <IStazione> stazioni = new List <IStazione>(); // Effettuo una ricerca CASE-INSENSITIVE sui campi using (SQLiteCommand cmd = new SQLiteCommand("SELECT stazioni.id AS stazioni_id, " + "stazioni.nome AS stazioni_nome, " + "stazioni.locazione AS stazioni_locazione, " + "stazioni.indirizzoDiRete AS stazioni_indirizzoDiRete, " + "stazioni.porta AS stazioni_porta, stazioni.impronta AS stazioni_impronta " + "FROM stazioni WHERE UPPER(nome) LIKE '%' || @query || '%' " + "OR UPPER(locazione) LIKE '%' || @query || '%' " + "OR UPPER(indirizzoDiRete) LIKE '%' || @query || '%'" , _connection)) { cmd.Prepare(); cmd.Parameters.AddWithValue("@query", uppercaseQuery); using (SQLiteDataReader reader = cmd.ExecuteReader()) { while (reader.Read()) { // Converto la entry del database in una stazione IStazione stazioneCorrente = Stazione.ConvertiRigaInStazione(reader); if (stazioneCorrente != null) { stazioni.Add(stazioneCorrente); } } } } return(stazioni); }
/// <summary> /// Metodo responsabile dell'eliminazione di una stazione /// </summary> /// <param name="stazione"> Stazione da eliminare </param> /// <returns></returns> public bool Elimina(Stazione stazione) { if (stazione.Id == -1) { throw new InvalidOperationException("La stazione non contiene l'ID, quindi non può essere eliminata"); } int risultato = -1; using (SQLiteCommand cmd = new SQLiteCommand(_connection)) { // Elimino la stazione che ha come id la stazione che passo come parametro cmd.CommandText = "DELETE FROM stazioni WHERE id = @Id"; cmd.Prepare(); cmd.Parameters.AddWithValue("@Id", stazione.Id); try { risultato = cmd.ExecuteNonQuery(); // Se true, scrivo sul file di log if (risultato > 0) { Logger.Scrivi("Eliminata stazione: " + stazione); } } catch (SQLiteException e) { Console.WriteLine(e.ToString()); } } return(risultato > 0 ? true : false); }
/// <summary> /// Metodo responsabile della registrazione della stazione /// </summary> /// <param name="stazione"> Stazione da registrare</param> /// <returns></returns> public bool Registra(Stazione stazione) { int risultato = -1; using (SQLiteCommand cmd = new SQLiteCommand(_connection)) { // Preparo la query SQL cmd.CommandText = "INSERT INTO stazioni(nome, locazione, indirizzoDiRete, porta, impronta) VALUES (@Nome, @Locazione, @indirizzoDiRete, @Porta, @Impronta)"; cmd.Prepare(); cmd.Parameters.AddWithValue("@Nome", stazione.Nome); cmd.Parameters.AddWithValue("@Locazione", stazione.Locazione); cmd.Parameters.AddWithValue("@IndirizzoDiRete", stazione.IndirizzoDiRete.ToString()); cmd.Parameters.AddWithValue("@Porta", stazione.Porta.ToString()); cmd.Parameters.AddWithValue("@Impronta", stazione.ImprontaChiavePubblica); try { risultato = cmd.ExecuteNonQuery(); // Aggiorno il valore dell'id della stazione if (risultato > 0) { stazione.Id = _connection.LastInsertRowId; // Se true, scrivo sul file di log Logger.Scrivi("Registrata stazione: " + stazione); } } catch (SQLiteException e) { Console.WriteLine(e.ToString()); } } return(risultato > 0); }
/// <summary> /// Metodo che si occupa di listare tutte le stazioni del database /// </summary> /// <returns></returns> public IList <IStazione> ListaTutti() { List <IStazione> stazioni = new List <IStazione>(); using (SQLiteCommand cmd = new SQLiteCommand("SELECT stazioni.id AS stazioni_id, " + "stazioni.nome AS stazioni_nome, " + "stazioni.locazione AS stazioni_locazione, " + "stazioni.indirizzoDiRete AS stazioni_indirizzoDiRete, " + "stazioni.porta AS stazioni_porta, stazioni.impronta AS stazioni_impronta " + "FROM stazioni", _connection)) { using (SQLiteDataReader reader = cmd.ExecuteReader()) { while (reader.Read()) { // Converto la entry del database in una stazione IStazione stazioneCorrente = Stazione.ConvertiRigaInStazione(reader); if (stazioneCorrente != null) { stazioni.Add(stazioneCorrente); } } } } return(stazioni); }
/// <summary> /// Utilizzato per convertire una riga di una query sql in un oggetto Stazione /// </summary> /// <param name="reader"></param> /// <returns></returns> public static Stazione ConvertiRigaInStazione(SQLiteDataReader reader) { Stazione stazione = new Stazione(); if (reader["stazioni_id"] is DBNull) { return(null); } // Popolo i campi della stazione stazione.Id = Convert.ToInt64(reader["stazioni_id"]); stazione.Nome = reader["stazioni_nome"].ToString(); stazione.Locazione = reader["stazioni_locazione"].ToString(); stazione.IndirizzoDiRete = IPAddress.Parse(reader["stazioni_indirizzoDiRete"].ToString()); stazione.Porta = Convert.ToInt32(reader["stazioni_porta"]); stazione.ImprontaChiavePubblica = reader["stazioni_impronta"].ToString(); return(stazione); }
protected bool Equals(Stazione other) { return(string.Equals(Nome, other.Nome) && string.Equals(Locazione, other.Locazione) && Equals(IndirizzoDiRete, other.IndirizzoDiRete) && Porta == other.Porta && string.Equals(ImprontaChiavePubblica, other.ImprontaChiavePubblica) && Id == other.Id); }