Beispiel #1
0
        public IList <IEventoSismico> ListaEventi()
        {
            List <IEventoSismico> eventi = new List <IEventoSismico>();

            // Nella query effettuo una JOIN con la tabella stazioni per ottenere tutti i dati combinati
            using (SQLiteCommand cmd = new SQLiteCommand("SELECT eventi.id AS eventi_id, eventi.tag AS eventi_tag, " +
                                                         "eventi.priorita AS eventi_priorita, eventi.timestamp AS eventi_timestamp," +
                                                         "eventi.messaggio AS eventi_messaggio, 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 eventi LEFT OUTER JOIN stazioni ON eventi.stazione = stazioni.id", _connection))
            {
                using (SQLiteDataReader reader = cmd.ExecuteReader())
                {
                    while (reader.Read())
                    {
                        IEventoSismico evento = EventoSismico.ConvertiRigaInEventoSismico(reader);
                        if (evento != null)
                        {
                            eventi.Add(evento);
                        }
                    }
                }
            }

            return(eventi);
        }
Beispiel #2
0
        public bool RegistraEvento(EventoSismico evento)
        {
            int risultato = -1;

            using (SQLiteCommand cmd = new SQLiteCommand(_connection))
            {
                // Preparo la query SQL
                cmd.CommandText = "INSERT INTO eventi(tag, priorita, messaggio, timestamp, stazione) VALUES (@Tag, @Priorita, @Messaggio, @Timestamp, @Stazione)";
                cmd.Prepare();
                cmd.Parameters.AddWithValue("@Tag", evento.Tag);
                cmd.Parameters.AddWithValue("@Priorita", evento.Priorita);
                cmd.Parameters.AddWithValue("@Messaggio", evento.Messaggio);
                cmd.Parameters.AddWithValue("@Timestamp", evento.Timestamp);
                cmd.Parameters.AddWithValue("@Stazione", ((Stazione)evento.Stazione)?.Id);
                try
                {
                    risultato = cmd.ExecuteNonQuery();

                    // Aggiorno il valore dell'id dell'evento
                    if (risultato > 0)
                    {
                        evento.Id = _connection.LastInsertRowId;
                    }
                }
                catch (SQLiteException e)
                {
                    Console.WriteLine(e.ToString());
                }
            }

            return(risultato > 0);
        }
Beispiel #3
0
        /// <summary>
        /// Notifica l'evento in maniera sincrona
        /// </summary>
        /// <param name="evnt"></param>
        public void NotificaEvento(EventoSismico evnt)
        {
            // Send the event to every receiver, while making sure they are not null
            RicevitoriEventoSismico?.Invoke(evnt);

            // Save the event using the EventoSismico Repository
            _storicoController.RegistraEvento(evnt);
        }
Beispiel #4
0
        /// <summary>
        /// Utilizzato per convertire una riga di una query sql in un oggetto EventoSismico
        /// </summary>
        /// <param name="reader"></param>
        /// <returns></returns>
        public static EventoSismico ConvertiRigaInEventoSismico(SQLiteDataReader reader)
        {
            EventoSismico evento = new EventoSismico();

            // Popolo i campi dell'evento
            evento.Id        = Convert.ToInt64(reader["eventi_id"]);
            evento.Messaggio = reader["eventi_messaggio"].ToString();
            evento.Priorita  = (Priorita)Convert.ToInt32(reader["eventi_priorita"]);
            evento.Tag       = reader["eventi_tag"].ToString();
            evento.Timestamp = Convert.ToInt64(reader["eventi_timestamp"]);
            evento.Stazione  = stazione.Stazione.ConvertiRigaInStazione(reader);

            return(evento);
        }
Beispiel #5
0
 /// <summary>
 /// Notifica l'evento in maniera asincrona
 /// </summary>
 /// <param name="evnt"></param>
 public void NotificaEventoAsync(EventoSismico evnt)
 {
     // Notifico l'evento e lo registro in maniera asincrona
     Task.Run(() => NotificaEvento(evnt));
 }
Beispiel #6
0
 protected bool Equals(EventoSismico other)
 {
     return(string.Equals(Tag, other.Tag) && Priorita == other.Priorita && string.Equals(Messaggio, other.Messaggio) && Timestamp == other.Timestamp && Equals(Stazione, other.Stazione) && Id == other.Id);
 }