private void ReadAircraftsFromURL(string url, string filename) { string json = ""; try { AutoDecompressionWebClient cl = new AutoDecompressionWebClient(); cl.DownloadFileIfNewer(url, filename, true); if (!File.Exists(filename)) { return; } // deserialize JSON file JObject o = (JObject)JsonConvert.DeserializeObject(json); // clear collections JArrays.Clear(); JProperties.Clear(); // parse all child tokens recursively --> can be either a property or an array ParseToken(o); // we've got all properties and arrays here // store array values in DataTable DataTableAircrafts dt = new DataTableAircrafts(); foreach (KeyValuePair <string, JArray> a in JArrays) { DataRow row = dt.NewRow(); row[0] = a.Value[0].ToString(); row[1] = a.Value[1].ToString(); row[2] = a.Value[2].ToString(); row[3] = a.Value[6].ToString(); dt.Rows.Add(row); } AircraftDatabase_old.InsertOrUpdateTable(dt); } catch (Exception ex) { // Error loading database Console.WriteLine(System.Reflection.MethodBase.GetCurrentMethod().ToString() + "[" + url + "]: " + ex.Message); } }
private void InitializeDatabase() { Log.WriteMessage("Initialize database: " + AircraftDatabase_old.GetDBLocation()); }
private void bw_JSONWriter_DoWork(object sender, DoWorkEventArgs e) { while (!bw_JSONWriter.CancellationPending) { Thread.Sleep(60000); DataTable dt = new DataTable(); // DataTable dt = FlightRadar.GetPlanePositions((int)Properties.Settings.Default.Planes_Lifetime); // get planes each minute // write json file try { using (StreamWriter sw = new StreamWriter(TmpDirectory + Path.DirectorySeparatorChar + "planes.json")) { int major = Assembly.GetExecutingAssembly().GetName().Version.Major; sw.Write("{\"full_count\":" + dt.Rows.Count.ToString() + ",\"version\":" + major.ToString()); for (int i = 0; i < dt.Rows.Count; i++) { string index = "\"" + i.ToString("x8") + "\""; string hex = "\"" + dt.Rows[i]["Hex"].ToString() + "\""; string lat = ((double)dt.Rows[i]["Lat"]).ToString("F4", CultureInfo.InvariantCulture); string lon = ((double)dt.Rows[i]["Lon"]).ToString("F4", CultureInfo.InvariantCulture); string track = dt.Rows[i]["Track"].ToString(); string alt = UnitConverter.m_ft((double)dt.Rows[i]["Alt"]).ToString("F0"); string speed = UnitConverter.kmh_kts((double)dt.Rows[i]["Speed"]).ToString("F0"); string squawk = "\"" + dt.Rows[i]["Squawk"].ToString() + "\""; string radar = "\"" + dt.Rows[i]["Radar"].ToString() + "\""; AircraftDesignator d = AircraftDatabase_old.AircraftFindByHex(dt.Rows[i]["Hex"].ToString()); string type; if (d != null) { type = "\"" + d.TypeCode + "\""; } else { type = "\"" + "\""; } string reg = "\"" + dt.Rows[i]["Reg"].ToString() + "\""; DateTime rtime = System.Convert.ToDateTime(dt.Rows[i]["Time"].ToString()); rtime = rtime.ToUniversalTime(); DateTime sTime = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc); string time = ((long)(rtime - sTime).TotalSeconds).ToString(); string dep = "\"\""; string dest = "\"\""; string flight = "\"\""; string dummy0 = "\"\""; string dummy1 = "0"; string dummy2 = "0"; string call = "\"" + dt.Rows[i]["Call"].ToString() + "\""; string dummy3 = "0"; sw.WriteLine("," + index + ":[" + hex + "," + lat + "," + lon + "," + track + "," + alt + "," + speed + "," + squawk + "," + radar + "," + type + "," + reg + "," + time + "," + dep + "," + dest + "," + flight + "," + dummy1 + "," + dummy2 + "," + call + "," + dummy3 + "]"); } sw.WriteLine("}"); } } catch { // do nothing } } }