Пример #1
0
        /// <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);
        }
Пример #2
0
        /// <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);
        }
Пример #3
0
        /// <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);
        }
Пример #4
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);
        }
Пример #5
0
        /// <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);
        }
Пример #6
0
 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);
 }