Ejemplo n.º 1
0
        /// <summary>
        /// Creates, inserts and returns a new flight record for the aircraft and callsign passed across.
        /// </summary>
        /// <param name="localNow"></param>
        /// <param name="aircraftId"></param>
        /// <param name="callsign"></param>
        /// <returns></returns>
        private BaseStationFlight CreateFlight(DateTime localNow, int aircraftId, string callsign)
        {
            var result = new BaseStationFlight()
            {
                FlightID   = 0,
                AircraftID = aircraftId,
                SessionID  = _Session.SessionID,
                Callsign   = String.IsNullOrEmpty(callsign) ? "" : callsign,
                StartTime  = localNow,
            };

            _Database.InsertFlight(result);

            result.NumADSBMsgRec       = 0;
            result.NumAirCallRepMsgRec = 0;
            result.NumAirPosMsgRec     = 0;
            result.NumAirToAirMsgRec   = 0;
            result.NumAirVelMsgRec     = 0;
            result.NumIDMsgRec         = 0;
            result.NumModeSMsgRec      = 0;
            result.NumPosMsgRec        = 0;
            result.NumSurAltMsgRec     = 0;
            result.NumSurIDMsgRec      = 0;
            result.NumSurPosMsgRec     = 0;

            return(result);
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Updates the counters of total messages for a flight.
        /// </summary>
        /// <param name="message"></param>
        /// <param name="flight"></param>
        private static void UpdateMessageCounters(BaseStationMessage message, BaseStationFlight flight)
        {
            switch (message.TransmissionType)
            {
            case BaseStationTransmissionType.IdentificationAndCategory: ++flight.NumIDMsgRec; break;

            case BaseStationTransmissionType.SurfacePosition:           ++flight.NumSurPosMsgRec; break;

            case BaseStationTransmissionType.AirbornePosition:          ++flight.NumAirPosMsgRec; break;

            case BaseStationTransmissionType.AirborneVelocity:          ++flight.NumAirVelMsgRec; break;

            case BaseStationTransmissionType.SurveillanceAlt:           ++flight.NumSurAltMsgRec; break;

            case BaseStationTransmissionType.SurveillanceId:            ++flight.NumSurIDMsgRec; break;

            case BaseStationTransmissionType.AirToAir:                  ++flight.NumAirToAirMsgRec; break;

            case BaseStationTransmissionType.AllCallReply:              ++flight.NumAirCallRepMsgRec; break;
            }

            if (message.Latitude == null && message.Longitude == null && message.GroundSpeed == null && message.Track == null && message.VerticalRate == null)
            {
                ++flight.NumModeSMsgRec;
            }
            else
            {
                ++flight.NumADSBMsgRec;
                if (message.Latitude != null && message.Longitude != null)
                {
                    ++flight.NumPosMsgRec;
                }
            }
        }
Ejemplo n.º 3
0
        /// <summary>
        /// See interface docs.
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        public BaseStationFlight GetFlightById(int id)
        {
            BaseStationFlight result = null;

            lock (_ConnectionLock) {
                OpenConnection();
                if (_Connection != null)
                {
                    result = _FlightTable.GetById(_Connection, _TransactionHelper.Transaction, _DatabaseLog, id);
                }
            }

            return(result);
        }
Ejemplo n.º 4
0
        /// <summary>
        /// Creates, inserts and returns a new flight record for the aircraft and callsign passed across.
        /// </summary>
        /// <param name="localNow"></param>
        /// <param name="aircraftId"></param>
        /// <param name="callsign"></param>
        /// <returns></returns>
        private BaseStationFlight CreateFlight(DateTime localNow, int aircraftId, string callsign)
        {
            var result = new BaseStationFlight()
            {
                FlightID   = 0,
                AircraftID = aircraftId,
                SessionID  = _Session.SessionID,
                Callsign   = callsign ?? "",
                StartTime  = localNow,
            };

            _Database.InsertFlight(result);

            return(result);
        }
Ejemplo n.º 5
0
        /// <summary>
        /// See interface docs.
        /// </summary>
        /// <param name="flight"></param>
        public void DeleteFlight(BaseStationFlight flight)
        {
            if (!WriteSupportEnabled)
            {
                throw new InvalidOperationException("You cannot delete flights when writes are disabled");
            }

            lock (_ConnectionLock) {
                OpenConnection();
                if (_Connection != null)
                {
                    _FlightTable.Delete(_Connection, _TransactionHelper.Transaction, _DatabaseLog, flight);
                }
            }
        }
Ejemplo n.º 6
0
        /// <summary>
        /// Returns parameters for a flight.
        /// </summary>
        /// <param name="flight"></param>
        /// <param name="includeFlightID"></param>
        /// <returns></returns>
        public static DynamicParameters FromFlight(BaseStationFlight flight, bool includeFlightID = true)
        {
            var result = new DynamicParameters();

            if (includeFlightID)
            {
                result.Add(nameof(flight.FlightID), value: flight.FlightID);
            }
            result.Add(nameof(flight.AircraftID), value: flight.AircraftID);
            result.Add(nameof(flight.Callsign), value: flight.Callsign);
            result.Add(nameof(flight.EndTime), value: flight.EndTime);
            result.Add(nameof(flight.FirstAltitude), value: flight.FirstAltitude);
            result.Add(nameof(flight.FirstGroundSpeed), value: flight.FirstGroundSpeed);
            result.Add(nameof(flight.FirstIsOnGround), value: flight.FirstIsOnGround);
            result.Add(nameof(flight.FirstLat), value: flight.FirstLat);
            result.Add(nameof(flight.FirstLon), value: flight.FirstLon);
            result.Add(nameof(flight.FirstSquawk), value: flight.FirstSquawk);
            result.Add(nameof(flight.FirstTrack), value: flight.FirstTrack);
            result.Add(nameof(flight.FirstVerticalRate), value: flight.FirstVerticalRate);
            result.Add(nameof(flight.HadAlert), value: flight.HadAlert);
            result.Add(nameof(flight.HadEmergency), value: flight.HadEmergency);
            result.Add(nameof(flight.HadSpi), value: flight.HadSpi);
            result.Add(nameof(flight.LastAltitude), value: flight.LastAltitude);
            result.Add(nameof(flight.LastGroundSpeed), value: flight.LastGroundSpeed);
            result.Add(nameof(flight.LastIsOnGround), value: flight.LastIsOnGround);
            result.Add(nameof(flight.LastLat), value: flight.LastLat);
            result.Add(nameof(flight.LastLon), value: flight.LastLon);
            result.Add(nameof(flight.LastSquawk), value: flight.LastSquawk);
            result.Add(nameof(flight.LastTrack), value: flight.LastTrack);
            result.Add(nameof(flight.LastVerticalRate), value: flight.LastVerticalRate);
            result.Add(nameof(flight.NumADSBMsgRec), value: flight.NumADSBMsgRec);
            result.Add(nameof(flight.NumModeSMsgRec), value: flight.NumModeSMsgRec);
            result.Add(nameof(flight.NumIDMsgRec), value: flight.NumIDMsgRec);
            result.Add(nameof(flight.NumSurPosMsgRec), value: flight.NumSurPosMsgRec);
            result.Add(nameof(flight.NumAirPosMsgRec), value: flight.NumAirPosMsgRec);
            result.Add(nameof(flight.NumAirVelMsgRec), value: flight.NumAirVelMsgRec);
            result.Add(nameof(flight.NumSurAltMsgRec), value: flight.NumSurAltMsgRec);
            result.Add(nameof(flight.NumSurIDMsgRec), value: flight.NumSurIDMsgRec);
            result.Add(nameof(flight.NumAirToAirMsgRec), value: flight.NumAirToAirMsgRec);
            result.Add(nameof(flight.NumAirCallRepMsgRec), value: flight.NumAirCallRepMsgRec);
            result.Add(nameof(flight.NumPosMsgRec), value: flight.NumPosMsgRec);
            result.Add(nameof(flight.SessionID), value: flight.SessionID);
            result.Add(nameof(flight.StartTime), value: flight.StartTime);
            result.Add(nameof(flight.UserNotes), value: flight.UserNotes);

            return(result);
        }
Ejemplo n.º 7
0
        /// <summary>
        /// See interface docs.
        /// </summary>
        /// <param name="flight"></param>
        public void UpdateFlight(BaseStationFlight flight)
        {
            if (!WriteSupportEnabled)
            {
                throw new InvalidOperationException("You cannot update flights when writes are disabled");
            }

            flight.StartTime = SQLiteDateHelper.Truncate(flight.StartTime);
            flight.EndTime   = SQLiteDateHelper.Truncate(flight.EndTime);

            lock (_ConnectionLock) {
                OpenConnection();
                if (_Connection != null)
                {
                    _FlightTable.Update(_Connection, _TransactionHelper.Transaction, _DatabaseLog, flight);
                }
            }
        }
Ejemplo n.º 8
0
        /// <summary>
        /// Returns the flight corresponding to the ID passed across.
        /// </summary>
        /// <param name="connection"></param>
        /// <param name="transaction"></param>
        /// <param name="log"></param>
        /// <param name="id"></param>
        /// <returns></returns>
        public BaseStationFlight GetById(IDbConnection connection, IDbTransaction transaction, TextWriter log, int id)
        {
            BaseStationFlight result = null;

            var preparedCommand = PrepareCommand(connection, transaction, "GetById", _GetByIdCommandText, 1);

            Sql.SetParameters(preparedCommand, id);
            Sql.LogCommand(log, preparedCommand.Command);
            using (IDataReader reader = preparedCommand.Command.ExecuteReader()) {
                int ordinal = 0;
                if (reader.Read())
                {
                    result = DecodeFullFlight(reader, ref ordinal);
                }
            }

            return(result);
        }
Ejemplo n.º 9
0
        /// <summary>
        /// Creates an object describing a single field and copies content of the IDataReader into it.
        /// </summary>
        /// <param name="reader"></param>
        /// <param name="ordinal"></param>
        /// <returns></returns>
        public static BaseStationFlight DecodeFullFlight(IDataReader reader, ref int ordinal)
        {
            BaseStationFlight result = new BaseStationFlight();

            result.AircraftID          = Sql.GetInt32(reader, ordinal++);
            result.SessionID           = Sql.GetInt32(reader, ordinal++);
            result.Callsign            = Sql.GetString(reader, ordinal++);
            result.EndTime             = Sql.GetDateTime(reader, ordinal++);
            result.FirstAltitude       = Sql.GetInt32(reader, ordinal++);
            result.FirstGroundSpeed    = Sql.GetFloat(reader, ordinal++);
            result.FirstIsOnGround     = Sql.GetBool(reader, ordinal++);
            result.FirstLat            = Sql.GetFloat(reader, ordinal++);
            result.FirstLon            = Sql.GetFloat(reader, ordinal++);
            result.FirstSquawk         = Sql.GetInt32(reader, ordinal++);
            result.FirstTrack          = Sql.GetFloat(reader, ordinal++);
            result.FirstVerticalRate   = Sql.GetInt32(reader, ordinal++);
            result.FlightID            = Sql.GetInt32(reader, ordinal++);
            result.HadAlert            = Sql.GetBool(reader, ordinal++);
            result.HadEmergency        = Sql.GetBool(reader, ordinal++);
            result.HadSpi              = Sql.GetBool(reader, ordinal++);
            result.LastAltitude        = Sql.GetInt32(reader, ordinal++);
            result.LastGroundSpeed     = Sql.GetFloat(reader, ordinal++);
            result.LastIsOnGround      = Sql.GetBool(reader, ordinal++);
            result.LastLat             = Sql.GetFloat(reader, ordinal++);
            result.LastLon             = Sql.GetFloat(reader, ordinal++);
            result.LastSquawk          = Sql.GetInt32(reader, ordinal++);
            result.LastTrack           = Sql.GetFloat(reader, ordinal++);
            result.LastVerticalRate    = Sql.GetInt32(reader, ordinal++);
            result.NumADSBMsgRec       = Sql.GetInt32(reader, ordinal++);
            result.NumModeSMsgRec      = Sql.GetInt32(reader, ordinal++);
            result.NumIDMsgRec         = Sql.GetInt32(reader, ordinal++);
            result.NumSurPosMsgRec     = Sql.GetInt32(reader, ordinal++);
            result.NumAirPosMsgRec     = Sql.GetInt32(reader, ordinal++);
            result.NumAirVelMsgRec     = Sql.GetInt32(reader, ordinal++);
            result.NumSurAltMsgRec     = Sql.GetInt32(reader, ordinal++);
            result.NumSurIDMsgRec      = Sql.GetInt32(reader, ordinal++);
            result.NumAirToAirMsgRec   = Sql.GetInt32(reader, ordinal++);
            result.NumAirCallRepMsgRec = Sql.GetInt32(reader, ordinal++);
            result.NumPosMsgRec        = Sql.GetInt32(reader, ordinal++);
            result.StartTime           = Sql.GetDateTime(reader, ordinal++);

            return(result);
        }
Ejemplo n.º 10
0
        public void BaseStationFlight_Initialises_To_Known_State_And_Properties_Work()
        {
            var baseStationFlight = new BaseStationFlight();

            TestUtilities.TestProperty(baseStationFlight, r => r.Aircraft, null, new BaseStationAircraft());
            TestUtilities.TestProperty(baseStationFlight, r => r.AircraftID, 0, 1224);
            TestUtilities.TestProperty(baseStationFlight, r => r.Callsign, null, "Aa");
            TestUtilities.TestProperty(baseStationFlight, r => r.EndTime, null, DateTime.Today);
            TestUtilities.TestProperty(baseStationFlight, r => r.FirstAltitude, null, 1212);
            TestUtilities.TestProperty(baseStationFlight, r => r.FirstGroundSpeed, null, 123.132f);
            TestUtilities.TestProperty(baseStationFlight, r => r.FirstIsOnGround, false);
            TestUtilities.TestProperty(baseStationFlight, r => r.FirstLat, null, 1239.85);
            TestUtilities.TestProperty(baseStationFlight, r => r.FirstLon, null, 93.556);
            TestUtilities.TestProperty(baseStationFlight, r => r.FirstSquawk, null, 59);
            TestUtilities.TestProperty(baseStationFlight, r => r.FirstTrack, null, 95457.423f);
            TestUtilities.TestProperty(baseStationFlight, r => r.FirstVerticalRate, null, 123);
            TestUtilities.TestProperty(baseStationFlight, r => r.FlightID, 0, 1543);
            TestUtilities.TestProperty(baseStationFlight, r => r.HadAlert, false);
            TestUtilities.TestProperty(baseStationFlight, r => r.HadEmergency, false);
            TestUtilities.TestProperty(baseStationFlight, r => r.HadSpi, false);
            TestUtilities.TestProperty(baseStationFlight, r => r.LastAltitude, null, 1212);
            TestUtilities.TestProperty(baseStationFlight, r => r.LastGroundSpeed, null, 123.132f);
            TestUtilities.TestProperty(baseStationFlight, r => r.LastIsOnGround, false);
            TestUtilities.TestProperty(baseStationFlight, r => r.LastLat, null, 1239.85);
            TestUtilities.TestProperty(baseStationFlight, r => r.LastLon, null, 93.556);
            TestUtilities.TestProperty(baseStationFlight, r => r.LastSquawk, null, 59);
            TestUtilities.TestProperty(baseStationFlight, r => r.LastTrack, null, 95457.423f);
            TestUtilities.TestProperty(baseStationFlight, r => r.LastVerticalRate, null, 123);
            TestUtilities.TestProperty(baseStationFlight, r => r.NumADSBMsgRec, null, int.MaxValue);
            TestUtilities.TestProperty(baseStationFlight, r => r.NumModeSMsgRec, null, int.MaxValue);
            TestUtilities.TestProperty(baseStationFlight, r => r.NumIDMsgRec, null, int.MaxValue);
            TestUtilities.TestProperty(baseStationFlight, r => r.NumSurPosMsgRec, null, int.MaxValue);
            TestUtilities.TestProperty(baseStationFlight, r => r.NumAirPosMsgRec, null, int.MaxValue);
            TestUtilities.TestProperty(baseStationFlight, r => r.NumAirVelMsgRec, null, int.MaxValue);
            TestUtilities.TestProperty(baseStationFlight, r => r.NumSurAltMsgRec, null, int.MaxValue);
            TestUtilities.TestProperty(baseStationFlight, r => r.NumSurIDMsgRec, null, int.MaxValue);
            TestUtilities.TestProperty(baseStationFlight, r => r.NumAirToAirMsgRec, null, int.MaxValue);
            TestUtilities.TestProperty(baseStationFlight, r => r.NumAirCallRepMsgRec, null, int.MaxValue);
            TestUtilities.TestProperty(baseStationFlight, r => r.NumPosMsgRec, null, int.MaxValue);
            TestUtilities.TestProperty(baseStationFlight, r => r.SessionID, 0, int.MaxValue);
            TestUtilities.TestProperty(baseStationFlight, r => r.StartTime, DateTime.MinValue, DateTime.Now);
            TestUtilities.TestProperty(baseStationFlight, r => r.UserNotes, null, "Ab");
        }
Ejemplo n.º 11
0
        /// <summary>
        /// Copies most of the flight details from the source to the destination and returns the destination. The flight ID and creation time
        /// are not touched, neither are the aircraft references.
        /// </summary>
        /// <param name="source"></param>
        /// <param name="destination"></param>
        /// <returns></returns>
        private BaseStationFlight ApplyFlightDetails(BaseStationFlight source, BaseStationFlight destination)
        {
            destination.Callsign            = source.Callsign ?? "";
            destination.EndTime             = source.EndTime;
            destination.FirstAltitude       = source.FirstAltitude;
            destination.FirstGroundSpeed    = source.FirstGroundSpeed;
            destination.FirstIsOnGround     = source.FirstIsOnGround;
            destination.FirstLat            = source.FirstLat;
            destination.FirstLon            = source.FirstLon;
            destination.FirstSquawk         = source.FirstSquawk;
            destination.FirstTrack          = source.FirstTrack;
            destination.FirstVerticalRate   = source.FirstVerticalRate;
            destination.HadAlert            = source.HadAlert;
            destination.HadEmergency        = source.HadEmergency;
            destination.HadSpi              = source.HadSpi;
            destination.LastAltitude        = source.LastAltitude;
            destination.LastGroundSpeed     = source.LastGroundSpeed;
            destination.LastIsOnGround      = source.LastIsOnGround;
            destination.LastLat             = source.LastLat;
            destination.LastLon             = source.LastLon;
            destination.LastSquawk          = source.LastSquawk;
            destination.LastTrack           = source.LastTrack;
            destination.LastVerticalRate    = source.LastVerticalRate;
            destination.NumADSBMsgRec       = source.NumADSBMsgRec;
            destination.NumAirCallRepMsgRec = source.NumAirCallRepMsgRec;
            destination.NumAirPosMsgRec     = source.NumAirPosMsgRec;
            destination.NumAirToAirMsgRec   = source.NumAirToAirMsgRec;
            destination.NumAirVelMsgRec     = source.NumAirVelMsgRec;
            destination.NumIDMsgRec         = source.NumIDMsgRec;
            destination.NumModeSMsgRec      = source.NumModeSMsgRec;
            destination.NumPosMsgRec        = source.NumPosMsgRec;
            destination.NumSurAltMsgRec     = source.NumSurAltMsgRec;
            destination.NumSurIDMsgRec      = source.NumSurIDMsgRec;
            destination.NumSurPosMsgRec     = source.NumSurPosMsgRec;

            return(destination);
        }
        /// <summary>
        /// Creates a JSON representation of the database flight and adds it to an existing list of flights.
        /// </summary>
        /// <param name="flight"></param>
        /// <param name="flightList"></param>
        /// <param name="rowNumber"></param>
        /// <returns></returns>
        private ReportFlightJson AddReportFlightJson(BaseStationFlight flight, List <ReportFlightJson> flightList, ref int rowNumber)
        {
            var result = new ReportFlightJson()
            {
                RowNumber         = rowNumber++,
                Callsign          = flight.Callsign,
                StartTime         = flight.StartTime,
                EndTime           = flight.EndTime.GetValueOrDefault(),
                FirstAltitude     = flight.FirstAltitude.GetValueOrDefault(),
                FirstGroundSpeed  = (int)flight.FirstGroundSpeed.GetValueOrDefault(),
                FirstIsOnGround   = flight.FirstIsOnGround,
                FirstLatitude     = flight.FirstLat.GetValueOrDefault(),
                FirstLongitude    = flight.FirstLon.GetValueOrDefault(),
                FirstSquawk       = flight.FirstSquawk.GetValueOrDefault(),
                FirstTrack        = flight.FirstTrack.GetValueOrDefault(),
                FirstVerticalRate = flight.FirstVerticalRate.GetValueOrDefault(),
                HadAlert          = flight.HadAlert,
                HadEmergency      = flight.HadEmergency,
                HadSpi            = flight.HadSpi,
                LastAltitude      = flight.LastAltitude.GetValueOrDefault(),
                LastGroundSpeed   = (int)flight.LastGroundSpeed.GetValueOrDefault(),
                LastIsOnGround    = flight.LastIsOnGround,
                LastLatitude      = flight.LastLat.GetValueOrDefault(),
                LastLongitude     = flight.LastLon.GetValueOrDefault(),
                LastSquawk        = flight.LastSquawk.GetValueOrDefault(),
                LastTrack         = flight.LastTrack.GetValueOrDefault(),
                LastVerticalRate  = flight.LastVerticalRate.GetValueOrDefault(),
                NumADSBMsgRec     = flight.NumADSBMsgRec.GetValueOrDefault(),
                NumModeSMsgRec    = flight.NumModeSMsgRec.GetValueOrDefault(),
                NumPosMsgRec      = flight.NumPosMsgRec.GetValueOrDefault(),
            };

            flightList.Add(result);

            return(result);
        }
Ejemplo n.º 13
0
 public void UpdateFlight(BaseStationFlight flight)
 {
     ;
 }
Ejemplo n.º 14
0
        /// <summary>
        /// Deletes the record passed across.
        /// </summary>
        /// <param name="connection"></param>
        /// <param name="transaction"></param>
        /// <param name="log"></param>
        /// <param name="flight"></param>
        public void Delete(IDbConnection connection, IDbTransaction transaction, TextWriter log, BaseStationFlight flight)
        {
            var preparedCommand = PrepareCommand(connection, transaction, "Delete", _DeleteCommandText, 1);

            Sql.SetParameters(preparedCommand, flight.FlightID);
            Sql.LogCommand(log, preparedCommand.Command);
            preparedCommand.Command.ExecuteNonQuery();
        }
Ejemplo n.º 15
0
        /// <summary>
        /// Writes the flight record back to the database.
        /// </summary>
        /// <param name="connection"></param>
        /// <param name="transaction"></param>
        /// <param name="log"></param>
        /// <param name="flight"></param>
        public void Update(IDbConnection connection, IDbTransaction transaction, TextWriter log, BaseStationFlight flight)
        {
            var preparedCommand = PrepareCommand(connection, transaction, "Update", _UpdateCommandText, 36);

            Sql.SetParameters(preparedCommand,
                              flight.AircraftID,
                              flight.Callsign,
                              flight.EndTime,
                              flight.FirstAltitude,
                              flight.FirstGroundSpeed,
                              flight.FirstIsOnGround,
                              flight.FirstLat,
                              flight.FirstLon,
                              flight.FirstSquawk,
                              flight.FirstTrack,
                              flight.FirstVerticalRate,
                              flight.HadAlert,
                              flight.HadEmergency,
                              flight.HadSpi,
                              flight.LastAltitude,
                              flight.LastGroundSpeed,
                              flight.LastIsOnGround,
                              flight.LastLat,
                              flight.LastLon,
                              flight.LastSquawk,
                              flight.LastTrack,
                              flight.LastVerticalRate,
                              flight.NumADSBMsgRec,
                              flight.NumModeSMsgRec,
                              flight.NumIDMsgRec,
                              flight.NumSurPosMsgRec,
                              flight.NumAirPosMsgRec,
                              flight.NumAirVelMsgRec,
                              flight.NumSurAltMsgRec,
                              flight.NumSurIDMsgRec,
                              flight.NumAirToAirMsgRec,
                              flight.NumAirCallRepMsgRec,
                              flight.NumPosMsgRec,
                              flight.SessionID,
                              flight.StartTime,
                              flight.FlightID);
            Sql.LogCommand(log, preparedCommand.Command);
            preparedCommand.Command.ExecuteNonQuery();
        }
Ejemplo n.º 16
0
        /// <summary>
        /// Inserts a new record and returns its ID.
        /// </summary>
        /// <param name="connection"></param>
        /// <param name="transaction"></param>
        /// <param name="log"></param>
        /// <param name="flight"></param>
        /// <returns></returns>
        public int Insert(IDbConnection connection, IDbTransaction transaction, TextWriter log, BaseStationFlight flight)
        {
            var preparedCommand = PrepareInsert(connection, transaction, "Insert", "FlightID",
                                                "AircraftID",
                                                "Callsign",
                                                "EndTime",
                                                "FirstAltitude",
                                                "FirstGroundSpeed",
                                                "FirstIsOnGround",
                                                "FirstLat",
                                                "FirstLon",
                                                "FirstSquawk",
                                                "FirstTrack",
                                                "FirstVerticalRate",
                                                "HadAlert",
                                                "HadEmergency",
                                                "HadSpi",
                                                "LastAltitude",
                                                "LastGroundSpeed",
                                                "LastIsOnGround",
                                                "LastLat",
                                                "LastLon",
                                                "LastSquawk",
                                                "LastTrack",
                                                "LastVerticalRate",
                                                "NumADSBMsgRec",
                                                "NumModeSMsgRec",
                                                "NumIDMsgRec",
                                                "NumSurPosMsgRec",
                                                "NumAirPosMsgRec",
                                                "NumAirVelMsgRec",
                                                "NumSurAltMsgRec",
                                                "NumSurIDMsgRec",
                                                "NumAirToAirMsgRec",
                                                "NumAirCallRepMsgRec",
                                                "NumPosMsgRec",
                                                "SessionID",
                                                "StartTime");

            return((int)Sql.ExecuteInsert(preparedCommand, log,
                                          flight.AircraftID,
                                          flight.Callsign,
                                          flight.EndTime,
                                          flight.FirstAltitude,
                                          flight.FirstGroundSpeed,
                                          flight.FirstIsOnGround,
                                          flight.FirstLat,
                                          flight.FirstLon,
                                          flight.FirstSquawk,
                                          flight.FirstTrack,
                                          flight.FirstVerticalRate,
                                          flight.HadAlert,
                                          flight.HadEmergency,
                                          flight.HadSpi,
                                          flight.LastAltitude,
                                          flight.LastGroundSpeed,
                                          flight.LastIsOnGround,
                                          flight.LastLat,
                                          flight.LastLon,
                                          flight.LastSquawk,
                                          flight.LastTrack,
                                          flight.LastVerticalRate,
                                          flight.NumADSBMsgRec,
                                          flight.NumModeSMsgRec,
                                          flight.NumIDMsgRec,
                                          flight.NumSurPosMsgRec,
                                          flight.NumAirPosMsgRec,
                                          flight.NumAirVelMsgRec,
                                          flight.NumSurAltMsgRec,
                                          flight.NumSurIDMsgRec,
                                          flight.NumAirToAirMsgRec,
                                          flight.NumAirCallRepMsgRec,
                                          flight.NumPosMsgRec,
                                          flight.SessionID,
                                          flight.StartTime));
        }
Ejemplo n.º 17
0
        /// <summary>
        /// Performs the work for the Get***Flights methods.
        /// </summary>
        /// <param name="connection"></param>
        /// <param name="transaction"></param>
        /// <param name="log"></param>
        /// <param name="aircraft"></param>
        /// <param name="criteria"></param>
        /// <param name="fromRow"></param>
        /// <param name="toRow"></param>
        /// <param name="sort1"></param>
        /// <param name="sort1Ascending"></param>
        /// <param name="sort2"></param>
        /// <param name="sort2Ascending"></param>
        /// <returns></returns>
        private List <BaseStationFlight> DoGetFlights(IDbConnection connection, IDbTransaction transaction, TextWriter log, BaseStationAircraft aircraft, SearchBaseStationCriteria criteria, int fromRow, int toRow, string sort1, bool sort1Ascending, string sort2, bool sort2Ascending)
        {
            List <BaseStationFlight> result = new List <BaseStationFlight>();

            sort1 = ConvertSortFieldToColumnName(sort1);
            sort2 = ConvertSortFieldToColumnName(sort2);

            StringBuilder commandText = new StringBuilder();

            commandText.Append(CreateSelectFrom(aircraft, criteria, false));
            string criteriaText = GetFlightsCriteria(aircraft, criteria);

            if (criteriaText.Length > 0)
            {
                commandText.AppendFormat(" WHERE {0}", criteriaText);
            }
            if (sort1 != null || sort2 != null)
            {
                commandText.Append(" ORDER BY ");
                if (sort1 != null)
                {
                    commandText.AppendFormat("{0} {1}", sort1, sort1Ascending ? "ASC" : "DESC");
                }
                if (sort2 != null)
                {
                    commandText.AppendFormat("{0}{1} {2}", sort1 == null ? "" : ", ", sort2, sort2Ascending ? "ASC" : "DESC");
                }
            }
            commandText.Append(" LIMIT ? OFFSET ?");

            bool decodeFlightsFirst = aircraft != null || !FilterByAircraftFirst(criteria);

            using (IDbCommand command = connection.CreateCommand()) {
                command.Transaction = transaction;
                command.CommandText = commandText.ToString();

                int limit  = toRow == -1 || toRow < fromRow ? int.MaxValue : (toRow - Math.Max(0, fromRow)) + 1;
                int offset = fromRow < 0 ? 0 : fromRow;

                AddFlightsCriteriaParameters(command, aircraft, criteria);
                Sql.AddParameter(command, limit);
                Sql.AddParameter(command, offset);

                Sql.LogCommand(log, command);
                using (IDataReader reader = command.ExecuteReader()) {
                    Dictionary <int, BaseStationAircraft> aircraftMap = new Dictionary <int, BaseStationAircraft>();
                    while (reader.Read())
                    {
                        int ordinal = 0;

                        BaseStationFlight flight = DecodeFullFlight(reader, ref ordinal);
                        if (aircraft != null)
                        {
                            flight.Aircraft = aircraft;
                        }
                        else
                        {
                            if (aircraftMap.ContainsKey(flight.AircraftID))
                            {
                                flight.Aircraft = aircraftMap[flight.AircraftID];
                            }
                            else
                            {
                                flight.Aircraft = AircraftTable.DecodeFullAircraft(reader, ref ordinal);
                                aircraftMap.Add(flight.AircraftID, flight.Aircraft);
                            }
                        }
                        result.Add(flight);
                    }
                }
            }

            return(result);
        }
Ejemplo n.º 18
0
        /// <summary>
        /// Updates the FirstX / LastX pairs of values of an in-store flight record.
        /// </summary>
        /// <param name="message"></param>
        /// <param name="flight"></param>
        /// <param name="flightRecords"></param>
        /// <param name="isMlat"></param>
        private static void UpdateFirstLastValues(BaseStationMessage message, BaseStationFlight flight, FlightRecords flightRecords, bool isMlat)
        {
            bool isLocationZeroZero = message.Latitude.GetValueOrDefault() == 0F && message.Longitude.GetValueOrDefault() == 0F;

            if (message.Latitude != null && !isLocationZeroZero)
            {
                if (flight.FirstLat == null)
                {
                    flight.FirstLat = message.Latitude;
                }
                flight.LastLat = message.Latitude;
            }
            if (message.Longitude != null && !isLocationZeroZero)
            {
                if (flight.FirstLon == null)
                {
                    flight.FirstLon = message.Longitude;
                }
                flight.LastLon = message.Longitude;
            }
            if (message.Track != null)
            {
                if (flight.FirstTrack == null)
                {
                    flight.FirstTrack = message.Track;
                }
                flight.LastTrack = message.Track;
            }

            if (!isMlat)
            {
                if (message.Altitude != null)
                {
                    if (flight.FirstAltitude == null)
                    {
                        flight.FirstAltitude = message.Altitude;
                    }
                    flight.LastAltitude = message.Altitude;
                }
                if (message.GroundSpeed != null)
                {
                    if (flight.FirstGroundSpeed == null)
                    {
                        flight.FirstGroundSpeed = message.GroundSpeed;
                    }
                    flight.LastGroundSpeed = message.GroundSpeed;
                }
                if (message.OnGround != null)
                {
                    if (flightRecords.OnGround == null)
                    {
                        flightRecords.OnGround = flight.FirstIsOnGround = message.OnGround.Value;
                    }
                    flight.LastIsOnGround = message.OnGround.Value;
                }
                if (message.Squawk != null)
                {
                    if (flight.FirstSquawk == null)
                    {
                        flight.FirstSquawk = message.Squawk;
                    }
                    flight.LastSquawk = message.Squawk;
                }
                if (message.VerticalRate != null)
                {
                    if (flight.FirstVerticalRate == null)
                    {
                        flight.FirstVerticalRate = message.VerticalRate;
                    }
                    flight.LastVerticalRate = message.VerticalRate;
                }
            }
        }
Ejemplo n.º 19
0
 public void InsertFlight(BaseStationFlight flight)
 {
     ;
 }
Ejemplo n.º 20
0
 public void DeleteFlight(BaseStationFlight flight)
 {
     ;
 }