AirScout/AirScout.Core/PlaneInfo.cs

249 wiersze
7.1 KiB
C#

using System;
using System.Collections.Generic;
using System.Collections;
using System.Linq;
using System.Text;
using System.Threading;
using System.ComponentModel;
using System.Globalization;
using System.Net;
using System.IO;
using System.Text.RegularExpressions;
using System.Data;
using ScoutBase.Core;
using System.Reflection;
namespace AirScout.Core
{
// holds the complete aircraft info
public class PlaneInfo
{
public DateTime Time { get; set; }
public string Call { get; set; }
public string Reg { get; set; }
public string Hex { get; set; }
public double Lat { get; set; }
public double Lon { get; set; }
private double _Alt;
public double Alt
{
get
{
return _Alt;
}
set
{
_Alt = value;
_Alt_m = UnitConverter.ft_m(value);
}
}
private double _Alt_m;
public double Alt_m
{
get
{
return _Alt_m;
}
}
public double Track = 0;
private double _Speed;
public double Speed
{
get
{
return _Speed;
}
set
{
_Speed = value;
_Speed_kmh = UnitConverter.kts_kmh(value);
}
}
private double _Speed_kmh;
public double Speed_kmh
{
get
{
return _Speed_kmh;
}
}
public string Type { get; set; }
public string Manufacturer { get; set; }
public string Model { get; set; }
public PLANECATEGORY Category { get; set; }
public string From { get; set; }
public string To { get; set; }
public int VSpeed { get; set; }
public LatLon.GPoint IntPoint = null;
public double IntQRB = double.MaxValue;
public double AltDiff = 0;
public int Potential = 0;
public double Eps1 = 0;
public double Eps2 = 0;
public double Theta1 = 0;
public double Theta2 = 0;
public double Angle = 0;
public double Squint = 0;
public double SignalStrength = double.MinValue;
public bool Ambiguous = false;
public string Comment = "";
// old values if available
public DateTime OldTime;
public double OldLat;
public double OldLon;
public double OldAlt;
public double OldTrack;
public double OldSpeed;
public PlaneInfo()
{
Time = DateTime.UtcNow;
Call = "";
Reg = "";
Hex = "";
Lat = 0;
Lon = 0;
Alt = 0;
Track = 0;
Speed = 0;
Type = "";
Manufacturer = "";
Model = "";
Category = PLANECATEGORY.NONE;
From = "";
To = "";
VSpeed = 0;
}
public PlaneInfo(DateTime time, string call, string reg, string hex, double lat, double lon, double track, double alt, double speed, string type, string manufacturer, string model, PLANECATEGORY category)
{
Time = time.ToUniversalTime();
Call = call;
Reg = reg;
Hex = hex;
Lat = lat;
Lon = lon;
Alt = alt;
Track = track;
Speed = speed;
Type = type;
Manufacturer = manufacturer;
Model = model;
Category = category;
OldTime = DateTime.MinValue;
OldLat = 0;
OldLon = 0;
OldAlt = 0;
OldTrack = 0;
OldSpeed = 0;
}
// LEGACY!!!
public PlaneInfo (DataRow row)
{
Time = SupportFunctions.UNIXTimeToDateTime(System.Convert.ToInt32(row[0]));
Call = (string)row[1];
Reg = (string)row[2];
Hex = (string)row[3];
Lat = (double)row[4];
Lon = (double)row[5];
Track = System.Convert.ToInt32(row[6]);
Alt = System.Convert.ToInt32(row[7]);
Speed = System.Convert.ToInt32(row[8]);
Type = (string)row[9];
Manufacturer = (string)row[10];
Model = (string)row[11];
Category = (PLANECATEGORY)row[12];
OldTime = DateTime.MinValue;
OldLat = 0;
OldLon = 0;
OldAlt = 0;
OldTrack = 0;
OldSpeed = 0;
}
public PlaneInfo (PlaneInfo plane)
{
this.Ambiguous = plane.Ambiguous;
this.Alt = plane.Alt;
this.AltDiff = plane.AltDiff;
this.Angle = plane.Angle;
this.Call = plane.Call;
this.Category = plane.Category;
this.Comment = plane.Comment;
this.Eps1 = plane.Eps1;
this.Eps2 = plane.Eps2;
this.Theta1 = plane.Theta1;
this.Theta2 = plane.Theta2;
this.Hex = plane.Hex;
this.IntPoint = plane.IntPoint;
this.IntQRB = plane.IntQRB;
this.Lat = plane.Lat;
this.Lon = plane.Lon;
this.Manufacturer = plane.Manufacturer;
this.Model = plane.Model;
this.Potential = plane.Potential;
this.Reg = plane.Reg;
this.SignalStrength = plane.SignalStrength;
this.Speed = plane.Speed;
this.Squint = plane.Squint;
this.Time = plane.Time;
this.Track = plane.Track;
this.Type = plane.Type;
this.OldTime = plane.OldTime;
this.OldLat = plane.OldLat;
this.OldLon = plane.OldLon;
this.OldAlt = plane.OldAlt;
this.OldTrack = plane.OldTrack;
this.OldSpeed = plane.OldSpeed;
}
public override string ToString()
{
string s = "";
PropertyInfo[] properties = this.GetType().GetProperties();
foreach (PropertyInfo p in properties)
{
if (p.PropertyType.Name.ToUpper() == "STRING")
{
string v = (string)p.GetValue(this, null);
if (v == null)
v = "[null]";
else if (v.Length == 0)
v = "[empty]";
s = s + p.Name + ": " + v + "\n";
}
else if (p.PropertyType.Name.ToUpper() == "DATETIME")
{
DateTime dt = (DateTime)p.GetValue(this, null);
s = s + p.Name + ": " + dt.ToString("yyyy-MM-dd HH:mm:ss") + "\n";
}
else
{
object o = p.GetValue(this, null);
if (o == null)
s = s + p.Name + ": " + "[null]" + "\n";
else
s = s + p.Name + ": " + o.ToString() + "\n";
}
}
return s;
}
}
// List of plane infos
public class PlaneInfoList : List<PlaneInfo>
{
}
}