public static void HandleExportSql(Session session, params string[] parameters) { DirectoryInfo di = VerifyContentFolder(session, false); var sep = Path.DirectorySeparatorChar; if (!uint.TryParse(parameters[0], out var wcid)) { CommandHandlerHelper.WriteOutputInfo(session, $"{parameters[0]} not a valid wcid"); return; } var weenie = DatabaseManager.World.GetCachedWeenie(wcid); if (weenie == null) { CommandHandlerHelper.WriteOutputInfo(session, $"Couldn't find weenie {wcid}"); return; } var sql_folder = $"{di.FullName}{sep}sql{sep}weenies{sep}"; di = new DirectoryInfo(sql_folder); if (!di.Exists) { di.Create(); } var converter = new WeenieSQLWriter(); converter.WeenieNames = DatabaseManager.World.GetAllWeenieNames(); converter.SpellNames = DatabaseManager.World.GetAllSpellNames(); converter.TreasureDeath = DatabaseManager.World.GetAllTreasureDeath(); converter.TreasureWielded = DatabaseManager.World.GetAllTreasureWielded(); var sql_filename = converter.GetDefaultFileName(weenie); var writer = new StreamWriter(sql_folder + sql_filename); try { converter.CreateSQLDELETEStatement(weenie, writer); writer.WriteLine(); converter.CreateSQLINSERTStatement(weenie, writer); writer.Close(); } catch (Exception e) { Console.WriteLine(e); CommandHandlerHelper.WriteOutputInfo(session, $"Failed to convert {weenie.ClassId} - {weenie.ClassName}"); return; } CommandHandlerHelper.WriteOutputInfo(session, $"Exported {sql_folder}{sql_filename}"); }
private async void cmd9WeeniesParse_Click(object sender, EventArgs e) { cmd9WeeniesParse.Enabled = false; progressBarWeenies.Style = ProgressBarStyle.Marquee; progressBarWeenies.Value = 0; await Task.Run(() => { // ClassId 30732 has -1 for an IID.. i think this was to make it so noone could wield var aceWeenies = weenieDefaults.ConvertToACE(); var aceTreasureWielded = treasureTable.WieldedTreasure.ConvertToACE(); var aceTreasureDeath = treasureTable.DeathTreasure.ConvertToACE(); var weenies = new Dictionary <uint, ACE.Database.Models.World.Weenie>(); foreach (var item in aceWeenies) { if (!weenies.ContainsKey(item.ClassId)) { weenies.Add(item.ClassId, item); } } var treasureWielded = new Dictionary <uint, List <ACE.Database.Models.World.TreasureWielded> >(); foreach (var item in aceTreasureWielded) { if (!treasureWielded.ContainsKey(item.TreasureType)) { treasureWielded.Add(item.TreasureType, new List <ACE.Database.Models.World.TreasureWielded>()); } treasureWielded[item.TreasureType].Add(item); } var treasureDeath = new Dictionary <uint, ACE.Database.Models.World.TreasureDeath>(); foreach (var item in aceTreasureDeath) { if (!treasureDeath.ContainsKey(item.TreasureType)) { treasureDeath.Add(item.TreasureType, item); } } WeenieSQLWriter.WriteFiles(aceWeenies, Settings.Default["OutputFolder"] + "\\9 WeenieDefaults\\SQL\\", weenieNames, treasureWielded, treasureDeath, weenies); }); progressBarWeenies.Style = ProgressBarStyle.Continuous; progressBarWeenies.Value = 100; cmd9WeeniesParse.Enabled = true; }
public static void HandleImportJson(Session session, params string[] parameters) { DirectoryInfo di = VerifyContentFolder(session); if (!di.Exists) { return; } var sep = Path.DirectorySeparatorChar; var json_folder = $"{di.FullName}{sep}json{sep}weenies{sep}"; var wcid = parameters[0]; var prefix = wcid + " - "; if (wcid.Equals("all", StringComparison.OrdinalIgnoreCase)) { prefix = ""; } di = new DirectoryInfo(json_folder); var files = di.Exists ? di.GetFiles($"{prefix}*.json") : null; if (files == null || files.Length == 0) { CommandHandlerHelper.WriteOutputInfo(session, $"Couldn't find {json_folder}{prefix}*.json"); return; } var converter = new WeenieSQLWriter(); converter.WeenieNames = DatabaseManager.World.GetAllWeenieNames(); converter.SpellNames = DatabaseManager.World.GetAllSpellNames(); converter.TreasureDeath = DatabaseManager.World.GetAllTreasureDeath(); converter.TreasureWielded = DatabaseManager.World.GetAllTreasureWielded(); foreach (var file in files) { HandleImportJson(session, json_folder, file.Name, converter); } }
public static bool json2sql(FileInfo fi) { if (Converter == null) { Converter = new WeenieSQLWriter(); Converter.WeenieNames = IDToString.Reader.GetIDToNames("WeenieName.txt"); Converter.SpellNames = IDToString.Reader.GetIDToNames("SpellName.txt"); Converter.TreasureDeath = IDToString.Reader.GetIDToTier("TreasureDeath.txt"); Converter.TreasureWielded = IDToString.Reader.GetIDToWieldList("TreasureWielded.txt"); } // read json into lsd weenie if (!LifestonedLoader.TryLoadWeenie(fi.FullName, out var weenie)) { Console.WriteLine($"Failed to parse {fi.FullName}"); return(false); } // convert to ace weenie if (!LifestonedConverter.TryConvert(weenie, out var output)) { Console.WriteLine($"Failed to convert {fi.FullName}"); return(false); } // output to sql try { if (output.LastModified == DateTime.MinValue) { output.LastModified = DateTime.UtcNow; } var sqlFilename = Converter.GetDefaultFileName(output); var sqlFile = new StreamWriter(fi.DirectoryName + Path.DirectorySeparatorChar + sqlFilename); Converter.CreateSQLDELETEStatement(output, sqlFile); sqlFile.WriteLine(); Converter.CreateSQLINSERTStatement(output, sqlFile); var metadata = new ACE.Adapter.GDLE.Models.Metadata(weenie); if (metadata.HasInfo) { var jsonEx = JsonConvert.SerializeObject(metadata, Formatting.Indented); sqlFile.WriteLine($"\n/* Lifestoned Changelog:\n{jsonEx}\n*/"); } sqlFile.Close(); Console.WriteLine($"Converted {fi.FullName} to {fi.DirectoryName}{Path.DirectorySeparatorChar}{sqlFilename}"); } catch (Exception e) { Console.WriteLine(e); Console.WriteLine($"Failed to convert {fi.FullName}"); return(false); } return(true); }
/// <summary> /// Converts a json file to sql file /// </summary> public static string json2sql(Session session, string folder, string json_filename, WeenieSQLWriter converter) { var json_file = folder + json_filename; // read json into lsd weenie var success = LifestonedLoader.TryLoadWeenie(json_file, out var weenie); if (!success) { CommandHandlerHelper.WriteOutputInfo(session, $"Failed to load {json_file}"); return(null); } // convert to ace weenie success = LifestonedConverter.TryConvert(weenie, out var output); if (!success) { CommandHandlerHelper.WriteOutputInfo(session, $"Failed to convert {json_file}"); return(null); } // output to sql var sqlFolder = folder.Replace("json", "sql"); var di = new DirectoryInfo(sqlFolder); if (!di.Exists) { di.Create(); } var sqlFilename = ""; try { if (output.LastModified == DateTime.MinValue) { output.LastModified = DateTime.UtcNow; } sqlFilename = converter.GetDefaultFileName(output); var sqlFile = new StreamWriter(sqlFolder + sqlFilename); converter.CreateSQLDELETEStatement(output, sqlFile); sqlFile.WriteLine(); converter.CreateSQLINSERTStatement(output, sqlFile); var metadata = new Adapter.GDLE.Models.Metadata(weenie); if (metadata.HasInfo) { var jsonEx = JsonConvert.SerializeObject(metadata, LifestonedConverter.SerializerSettings); sqlFile.WriteLine($"\n/* Lifestoned Changelog:\n{jsonEx}\n*/"); } sqlFile.Close(); } catch (Exception e) { Console.WriteLine(e); CommandHandlerHelper.WriteOutputInfo(session, $"Failed to convert {json_file}"); return(null); } CommandHandlerHelper.WriteOutputInfo(session, $"Converted {json_filename} to {sqlFilename}"); return(sqlFilename); }
/// <summary> /// Converts JSON to SQL, imports to database, and clears the weenie cache /// </summary> private static void HandleImportJson(Session session, string json_folder, string json_file, WeenieSQLWriter converter) { if (!uint.TryParse(Regex.Match(json_file, @"\d+").Value, out var wcid)) { CommandHandlerHelper.WriteOutputInfo(session, $"Couldn't find wcid from {json_file}"); return; } // convert json -> sql var sqlFile = json2sql(session, json_folder, json_file, converter); if (sqlFile == null) { return; } // import sql to db var sql_folder = json_folder.Replace("json", "sql"); ImportSQL(sql_folder + sqlFile); CommandHandlerHelper.WriteOutputInfo(session, $"Imported {sqlFile}"); // clear this weenie out of the cache DatabaseManager.World.ClearCachedWeenie(wcid); }
public static bool json2sql_weenie(FileInfo fi, string[] lines = null, DirectoryInfo outputFolder = null) { if (WeenieSQLWriter == null) { WeenieSQLWriter = new WeenieSQLWriter(); WeenieSQLWriter.WeenieNames = IDToString.Reader.GetIDToNames("WeenieName.txt"); WeenieSQLWriter.SpellNames = IDToString.Reader.GetIDToNames("SpellName.txt"); WeenieSQLWriter.TreasureDeath = IDToString.Reader.GetIDToTier("TreasureDeath.txt"); WeenieSQLWriter.TreasureWielded = IDToString.Reader.GetIDToWieldList("TreasureWielded.txt"); } // read json into lsd weenie Lifestoned.DataModel.Gdle.Weenie weenie = null; if (lines == null) { if (!LifestonedLoader.TryLoadWeenie(fi.FullName, out weenie)) { Console.WriteLine($"Failed to parse {fi.FullName}"); return(false); } } else { if (!LifestonedLoader.TryLoadWeenie(lines, out weenie)) { Console.WriteLine($"Failed to parse weenie"); return(false); } } // convert to ace weenie if (!LifestonedConverter.TryConvert(weenie, out var output)) { Console.WriteLine($"Failed to convert {fi.FullName}"); return(false); } // output to sql try { if (output.LastModified == DateTime.MinValue) { output.LastModified = DateTime.UtcNow; } StreamWriter sqlFile = null; string sqlFilename = null; MemoryStream memoryStream = null; if (lines == null) { sqlFilename = WeenieSQLWriter.GetDefaultFileName(output); var sqlFolder = outputFolder ?? fi.Directory; sqlFile = new StreamWriter(sqlFolder.FullName + Path.DirectorySeparatorChar + sqlFilename); } else { memoryStream = new MemoryStream(); sqlFile = new StreamWriter(memoryStream); } WeenieSQLWriter.CreateSQLDELETEStatement(output, sqlFile); sqlFile.WriteLine(); WeenieSQLWriter.CreateSQLINSERTStatement(output, sqlFile); var metadata = new Metadata(weenie); if (metadata.HasInfo) { var jsonEx = JsonConvert.SerializeObject(metadata, Formatting.Indented); sqlFile.WriteLine($"\n/* Lifestoned Changelog:\n{jsonEx}\n*/"); } sqlFile.Close(); if (lines == null) { Output = memoryStream.ToString(); return(true); } Console.WriteLine($"Converted {fi.FullName} to {fi.DirectoryName}{Path.DirectorySeparatorChar}{sqlFilename}"); } catch (Exception e) { Console.WriteLine(e); Console.WriteLine($"Failed to convert {fi.FullName}"); return(false); } return(true); }
/// <summary> /// Converts a json file to sql file /// </summary> public static string json2sql(Session session, string folder, string json_filename) { var json_file = folder + json_filename; var success = LifestonedLoader.TryLoadWeenie(json_file, out var weenie); if (!success) { CommandHandlerHelper.WriteOutputInfo(session, $"Failed to load {json_file}"); return(null); } // output to sql success = LifestonedConverter.TryConvert(weenie, out var output); if (!success) { CommandHandlerHelper.WriteOutputInfo(session, $"Failed to convert {json_file}"); return(null); } var sqlFolder = folder.Replace("json", "sql"); var di = new DirectoryInfo(sqlFolder); if (!di.Exists) { di.Create(); } var sqlFilename = ""; try { var converter = new WeenieSQLWriter(); converter.WeenieNames = DatabaseManager.World.GetAllWeenieNames(); converter.SpellNames = DatabaseManager.World.GetAllSpellNames(); converter.TreasureDeath = DatabaseManager.World.GetAllTreasureDeath(); converter.TreasureWielded = DatabaseManager.World.GetAllTreasureWielded(); if (output.LastModified == DateTime.MinValue) { output.LastModified = DateTime.UtcNow; } sqlFilename = converter.GetDefaultFileName(output); var sqlFile = new StreamWriter(sqlFolder + sqlFilename); converter.CreateSQLDELETEStatement(output, sqlFile); sqlFile.WriteLine(); converter.CreateSQLINSERTStatement(output, sqlFile); sqlFile.Close(); } catch (Exception e) { Console.WriteLine(e); CommandHandlerHelper.WriteOutputInfo(session, $"Failed to convert {json_file}"); return(null); } CommandHandlerHelper.WriteOutputInfo(session, $"Converted {json_filename} to {sqlFilename}"); return(sqlFilename); }