예제 #1
0
        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}");
        }
예제 #2
0
        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;
        }
예제 #3
0
        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);
            }
        }
예제 #4
0
파일: Program.cs 프로젝트: harliq/ACData
        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);
        }
예제 #5
0
        /// <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);
        }
예제 #6
0
        /// <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);
        }
예제 #7
0
파일: Converter.cs 프로젝트: gmriggs/ACData
        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);
        }
예제 #8
0
        /// <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);
        }