diff --git a/EDDB/API.cs b/EDDB/API.cs deleted file mode 100644 index 8fd01fd..0000000 --- a/EDDB/API.cs +++ /dev/null @@ -1,180 +0,0 @@ -using System; -using System.Threading.Tasks; -using System.IO; -using System.Net; -using System.Collections.Generic; -using Newtonsoft.Json; -using Newtonsoft.Json.Linq; - -namespace EliteBGS.EDDB { - public class API { - private static readonly string EDDB_SYSTEMS_ARCHIVE = "https://eddb.io/archive/v6/systems_populated.json"; - private static readonly string EDDB_STATIONS_ARCHIVE = "https://eddb.io/archive/v6/stations.json"; - - private string cache_folder = null; - - private string systems_file = null; - private string stations_file = null; - private string stations_file_short = null; - - public delegate void DatabaseAvailableDelegate(); - public delegate void DatabaseUpdateProgressDelegate(); - - public event DatabaseAvailableDelegate SystemsAvailable; - public event DatabaseAvailableDelegate StationsAvailable; - - public event DatabaseUpdateProgressDelegate DatabaseUpdateProgress; - public event DatabaseUpdateProgressDelegate DatabaseUpdateFinished; - - public string SystemsFile => systems_file; - public string StationsFile => stations_file; - public string StationsFileShort => stations_file_short; - - public string Cache { - get => cache_folder; - set => cache_folder = value; - } - - public API(string cache_folder) { - Initialise(cache_folder); - } - - private void Initialise(string cache_folder) { - this.cache_folder = cache_folder; - systems_file = Path.Combine(this.cache_folder, "systems_populated.json"); - stations_file = Path.Combine(this.cache_folder, "stations.json"); - stations_file_short = Path.Combine(this.cache_folder, "stations_short.json"); - - this.StationsAvailable += API_StationsAvailable; - } - - private void API_StationsAvailable() { - TranslateStations(); - DatabaseUpdateFinished?.Invoke(); - } - - private void DownloadFile(string url, string file, DatabaseAvailableDelegate notifier) { - WebClient client = new WebClient(); - client.DownloadFileCompleted += Client_DownloadFileCompleted; - client.DownloadProgressChanged += Client_DownloadProgressChanged; - client.DownloadFileAsync(new Uri(url), file, notifier); - } - - private void Client_DownloadProgressChanged(object sender, DownloadProgressChangedEventArgs e) { - DatabaseUpdateProgress?.Invoke(); - } - - private void Client_DownloadFileCompleted(object sender, System.ComponentModel.AsyncCompletedEventArgs e) { - DatabaseAvailableDelegate notifier = e.UserState as DatabaseAvailableDelegate; - notifier?.Invoke(); - } - - private void TranslateStations() { - if (!HaveStationsFile) { - return; - } - - var short_time = File.GetLastWriteTimeUtc(StationsFileShort); - var long_time = File.GetLastWriteTimeUtc(StationsFile); - - if (HaveStationsFileShort && long_time <= short_time) { - return; - } - - Dictionary> systems = new Dictionary>(); - - using (var str = new StreamReader(StationsFile)) { - using (var reader = new JsonTextReader(str)) { - JArray obj = (JArray)JToken.ReadFrom(reader); - - foreach (JObject child in obj.Children()) { - int system_id = child.Value("system_id"); - string name = child.Value("name"); - - if (!systems.ContainsKey(system_id)) { - systems.Add(system_id, new List()); - } - - DatabaseUpdateProgress?.Invoke(); - - systems[system_id].Add(name); - } - } - } - - JObject short_stations = new JObject(); - - foreach(int ids in systems.Keys) { - JArray station_names = new JArray(); - foreach(string system in systems[ids]) { - station_names.Add(system); - } - short_stations.Add(ids.ToString(), station_names); - } - - using (var outstr = new StreamWriter(stations_file_short)) { - using (var jwriter = new JsonTextWriter(outstr)) { - short_stations.WriteTo(jwriter); - } - } - } - - public void CheckDatabases() { - if (HaveSystemsFile) { - SystemsAvailable?.Invoke(); - } - - if (HaveStationsFile) { - StationsAvailable?.Invoke(); - } - } - - public void Download(bool force) { - if (!HaveSystemsFile || force) { - DownloadFile(EDDB_SYSTEMS_ARCHIVE, systems_file, SystemsAvailable); - } else if (HaveSystemsFile) { - SystemsAvailable?.Invoke(); - } - - if (!HaveStationsFile || force) { - DownloadFile(EDDB_STATIONS_ARCHIVE, stations_file, StationsAvailable); - } else if (HaveStationsFile) { - StationsAvailable?.Invoke(); - } - } - - public void Download() { - Download(false); - } - - public bool HaveSystemsFile { - get { return systems_file != null && File.Exists(systems_file); } - } - - public bool HaveStationsFile { - get { return stations_file != null && File.Exists(stations_file); } - } - - public bool HaveStationsFileShort { - get { return stations_file_short != null && File.Exists(stations_file_short); } - } - - public PopulatedSystems MakePopulatedSystems() { - if (!HaveSystemsFile) { - throw new InvalidOperationException("no local systems file downloaded"); - } - - return PopulatedSystems.FromFile(SystemsFile); - } - - public Stations MakeStations() { - if (!HaveStationsFile) { - throw new InvalidOperationException("no local systems file downloaded"); - } - - TranslateStations(); - - return Stations.FromFile(StationsFileShort); - } - } -} diff --git a/EDDB/PopulatedSystems.cs b/EDDB/PopulatedSystems.cs deleted file mode 100644 index 0377306..0000000 --- a/EDDB/PopulatedSystems.cs +++ /dev/null @@ -1,71 +0,0 @@ -using System.IO; -using System.Linq; -using System.Collections.Generic; -using System.Globalization; -using Newtonsoft.Json.Linq; - -namespace EliteBGS.EDDB { - public class PopulatedSystems { - private string json_file = null; - private JArray root = null; - private string[] system_names = null; - private Dictionary to_id; - - public static PopulatedSystems FromFile(string file) { - PopulatedSystems pop = new PopulatedSystems(); - string content = File.ReadAllText(file); - - pop.json_file = file; - pop.root = JArray.Parse(content); - pop.Initialise(); - - return pop; - } - - private void Initialise() { - MakeSystemNames(); - - to_id = root.ToDictionary(x => x.Value("name"), x => x.Value("id")); - } - - public int ToId(string name) { - return to_id.First(x => string.Compare(x.Key, name, true) == 0).Value; - } - - private void MakeSystemNames() { - if (root == null) { - throw new InvalidDataException("no JSON loaded"); - } - - if (system_names != null && system_names.Length > 0) { - return; - } - - var names = root.Children().Select(x => x.Value("name")); - system_names = names.ToArray(); - } - - public string[] SystemNames { - get { - MakeSystemNames(); - return system_names; - } - } - - public string[] SystemNamesByFilter(string filter) { - MakeSystemNames(); - var culture = CultureInfo.InvariantCulture; - return system_names.Where(x => culture.CompareInfo.IndexOf(x, filter, CompareOptions.IgnoreCase) > -1) - .ToArray() - ; - } - - public string JSONFile { - get => json_file; - } - - public JArray Root { - get => root; - } - } -} diff --git a/EDDB/Stations.cs b/EDDB/Stations.cs deleted file mode 100644 index 18eedc0..0000000 --- a/EDDB/Stations.cs +++ /dev/null @@ -1,51 +0,0 @@ -using System.Globalization; -using System.Collections.Generic; -using System.Linq; -using System.IO; -using Newtonsoft.Json.Linq; - -namespace EliteBGS.EDDB { - public class Stations { - private JObject root = null; - private Dictionary> by_system_id = null; - - public JObject JSON => root; - - private Stations() { - } - - private void Initialise() { - by_system_id = new Dictionary>(); - foreach (var station in root.Properties()) { - int id = int.Parse(station.Name); - var names = root.Value(id.ToString()).Values().ToArray(); - - if (!by_system_id.ContainsKey(id)) { - by_system_id[id] = new List(); - } - - by_system_id[id].AddRange(names); - } - } - - public static Stations FromFile(string filename) { - string alltext = File.ReadAllText(filename); - Stations stations = new Stations { - root = JObject.Parse(alltext), - }; - stations.Initialise(); - - return stations; - } - - public string[] StationNamesBySystemId(int systemid, string filter) { - if (!by_system_id.ContainsKey(systemid)) { - return new string[0]; - } - return by_system_id[systemid] - .Where(x => CultureInfo.InvariantCulture.CompareInfo.IndexOf(x, filter, CompareOptions.IgnoreCase) > -1) - .ToArray() - ; - } - } -} diff --git a/EliteBGS.csproj b/EliteBGS.csproj index aa383af..ffa0150 100644 --- a/EliteBGS.csproj +++ b/EliteBGS.csproj @@ -107,8 +107,6 @@ - - LoadEntriesWindow.xaml @@ -117,14 +115,8 @@ True Resources.resx - - - - - ProgressDialog.xaml - CombatZoneDialog.xaml @@ -155,10 +147,6 @@ MainWindow.xaml Code - - Designer - MSBuild:Compile - Designer MSBuild:Compile diff --git a/MainWindow.xaml b/MainWindow.xaml index fedaf87..5b8bdaf 100644 --- a/MainWindow.xaml +++ b/MainWindow.xaml @@ -32,7 +32,7 @@