From f88047718ae482e3e31201b2b81ca361fc7b7f2e Mon Sep 17 00:00:00 2001 From: Florian Stinglmayr Date: Tue, 7 Jun 2022 19:05:21 +0200 Subject: [PATCH] remove EDDB use from tool This never worked right, and it slowed down the tool massively on start up. And now that automatic objective detection works quite well it is no longer really needed. --- EDDB/API.cs | 180 -------------------------------- EDDB/PopulatedSystems.cs | 71 ------------- EDDB/Stations.cs | 51 --------- EliteBGS.csproj | 12 --- MainWindow.xaml | 16 +-- MainWindow.xaml.cs | 66 ------------ ProgressDialog.xaml | 21 ---- ProgressDialog.xaml.cs | 30 ------ UI/StationSuggestionProvider.cs | 19 ---- UI/SystemSuggestionProvider.cs | 23 ---- Util/AppConfig.cs | 9 -- 11 files changed, 1 insertion(+), 497 deletions(-) delete mode 100644 EDDB/API.cs delete mode 100644 EDDB/PopulatedSystems.cs delete mode 100644 EDDB/Stations.cs delete mode 100644 ProgressDialog.xaml delete mode 100644 ProgressDialog.xaml.cs delete mode 100644 UI/StationSuggestionProvider.cs delete mode 100644 UI/SystemSuggestionProvider.cs 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 @@