/// <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); }
/// <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; } } }
/// <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); }
/// <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); }
/// <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); } } }
/// <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); }
/// <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); } } }
/// <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); }
/// <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); }
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"); }
/// <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); }
public void UpdateFlight(BaseStationFlight flight) { ; }
/// <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(); }
/// <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(); }
/// <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)); }
/// <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); }
/// <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; } } }
public void InsertFlight(BaseStationFlight flight) { ; }
public void DeleteFlight(BaseStationFlight flight) { ; }