示例#1
0
        public void Run(PluginInterface.DataTable data)
        {
            StreamWriter sqlWriter = new StreamWriter(Path.GetFileNameWithoutExtension(data.TableName) + ".sql");

            WriteSqlStructure(sqlWriter, data);

            foreach (DataRow row in data.Rows)
            {
                StringBuilder result = new StringBuilder();
                result.AppendFormat("INSERT INTO `dbc_{0}` VALUES (", Path.GetFileNameWithoutExtension(data.TableName));

                int flds = 0;

                for (var i = 0; i < data.Columns.Count; ++i)
                {
                    switch (data.Columns[i].DataType.Name)
                    {
                    case "Int64":
                        result.Append(row[i]);
                        break;

                    case "UInt64":
                        result.Append(row[i]);
                        break;

                    case "Int32":
                        result.Append(row[i]);
                        break;

                    case "UInt32":
                        result.Append(row[i]);
                        break;

                    case "Int16":
                        result.Append(row[i]);
                        break;

                    case "UInt16":
                        result.Append(row[i]);
                        break;

                    case "SByte":
                        result.Append(row[i]);
                        break;

                    case "Byte":
                        result.Append(row[i]);
                        break;

                    case "Single":
                        result.Append(((float)row[i]).ToString(CultureInfo.InvariantCulture));
                        break;

                    case "Double":
                        result.Append(((double)row[i]).ToString(CultureInfo.InvariantCulture));
                        break;

                    case "String":
                        result.Append("\"" + StripBadCharacters((string)row[i]) + "\"");
                        break;

                    default:
                        throw new Exception(String.Format("Unknown field type {0}!", data.Columns[i].DataType.Name));
                    }

                    if (flds != data.Columns.Count - 1)
                    {
                        result.Append(", ");
                    }

                    flds++;
                }

                result.Append(");");
                sqlWriter.WriteLine(result);
            }

            sqlWriter.Flush();
            sqlWriter.Close();



            Console.WriteLine("Finished:" + data.Rows.Count);
            // Finished(data.Rows.Count);
        }
示例#2
0
        public void Run(PluginInterface.DataTable data)
        {
            int count = 0;

            StreamWriter sqlWriter = new StreamWriter(Path.GetFileNameWithoutExtension(data.TableName) + ".txt");

            //var lines = File.ReadAllLines("WorldMapOverlay.txt");

            sqlWriter.WriteLine("local treasures = {");

            var c = System.Globalization.CultureInfo.InvariantCulture;

            System.Threading.Thread.CurrentThread.CurrentCulture = c;
            // Sets the UI culture to French (France)
            System.Threading.Thread.CurrentThread.CurrentUICulture = c;

            foreach (DataRow row in data.Rows)
            {
                if ((int)row[4] == 1116 && (int)row[6] == 197)
                {
                    sqlWriter.WriteLine("    [{0}] = {{ {1}, {2}, \"{3}\" }},", row[0], row[7].ToString(), row[8].ToString(), row[9]);
                }

                //Interface\WorldMap\%s\%s%d.blp WorldMapArea[3], WorldMapArea[3], 1-12
                //Interface\WorldMap\%s\%s%d_%d.blp WorldMapArea[3], WorldMapArea[3], floor, 1-12

                //for (int j = 1; j <= 12; ++j)
                //{
                //    sqlWriter.WriteLine("Interface\\WorldMap\\{0}\\{0}{1}.blp", row[3], j);
                //}

                //for (int i = 0; i < 30; ++i)
                //{
                //    for (int j = 1; j <= 12; ++j)
                //    {
                //        sqlWriter.WriteLine("Interface\\WorldMap\\{0}\\{0}{1}_{2}.blp", row[3], i, j);
                //    }
                //}

                //for (int j = 1; j <= 12; ++j)
                //{
                //    sqlWriter.WriteLine("Interface\\WorldMap\\{0}\\{0}{1}.blp", row[10], j);
                //}

                //for (int i = 0; i < 30; ++i)
                //{
                //    for (int j = 1; j <= 12; ++j)
                //    {
                //        sqlWriter.WriteLine("Interface\\WorldMap\\{0}\\{0}{1}_{2}.blp", row[10], i, j);
                //    }
                //}

                //foreach(var line in lines)
                //{
                //    if (line.Contains("{" + row[0] + "}"))
                //        sqlWriter.WriteLine(line.Replace("{" + row[0] + "}", (string)row[3]));
                //}

                //for(int i = 0; i < 20; ++i)
                //    sqlWriter.WriteLine("Interface\\WorldMap\\{{{0}}}\\{1}{2}.blp", row[1], row[6], i);

                //string folder = (string)row[1];

                //sqlWriter.WriteLine("WORLD\\Maps\\{0}\\{0}_{1}_{2}.adt", folder, i, j);

                //for (int i = 0; i < 64; ++i)
                //{
                //    for (int j = 0; j < 64; ++j)
                //    {
                //        var a = "World\\minimaps\\{0}\\map{1}_{2}.blp";
                //        var b = "World\\minimaps\\{0}\\noliquid_map{1}_{2}.blp";

                //        sqlWriter.WriteLine(a, folder, i, j);
                //        sqlWriter.WriteLine(b, folder, i, j);
                //    }
                //}

                //sqlWriter.WriteLine("WORLD\\Maps\\{0}\\{0}.tex", folder);
                //sqlWriter.WriteLine("WORLD\\Maps\\{0}\\{0}.wdl", folder);
                //sqlWriter.WriteLine("WORLD\\Maps\\{0}\\{0}.wdt", folder);

                //for (int i = 0; i < 64; ++i)
                //{
                //    for (int j = 0; j < 64; ++j)
                //    {
                //        sqlWriter.WriteLine("WORLD\\Maps\\{0}\\{0}_{1}_{2}.adt", folder, i, j);
                //        sqlWriter.WriteLine("WORLD\\Maps\\{0}\\{0}_{1}_{2}_obj0.adt", folder, i, j);
                //        sqlWriter.WriteLine("WORLD\\Maps\\{0}\\{0}_{1}_{2}_obj1.adt", folder, i, j);
                //        sqlWriter.WriteLine("WORLD\\Maps\\{0}\\{0}_{1}_{2}_tex0.adt", folder, i, j);
                //        sqlWriter.WriteLine("WORLD\\Maps\\{0}\\{0}_{1}_{2}_tex1.adt", folder, i, j);
                //    }
                //}

                // FileData.dbc
                //sqlWriter.WriteLine((string)row[2] + (string)row[1]);

                // ManifestInterfaceData.dbc
                //sqlWriter.WriteLine((string)row[1] + (string)row[2]);

                //sqlWriter.WriteLine((string)row[1] + ".blp");
                //if ((string)row[4] != String.Empty)
                //    sqlWriter.WriteLine((string)row[4]);
                //if ((string)row[5] != String.Empty)
                //    sqlWriter.WriteLine((string)row[5]);
                //if ((string)row[6] != String.Empty)
                //    sqlWriter.WriteLine((string)row[6]);


                //uint flags = (uint)row[2];

                //uint reaction = ~(flags >> 12) & 2 | 1; // flags & 0x2000 ? 1 : 3

                //if (reaction != 0)
                //{
                //    Debug.Print("template {0}, reaction {1}", row[0], reaction);
                //    count++;
                //}
            }

            sqlWriter.WriteLine("}");

            sqlWriter.Flush();
            sqlWriter.Close();

            Finished(count);
        }
示例#3
0
        private void WriteSqlStructure(StreamWriter sqlWriter, PluginInterface.DataTable data)
        {
            sqlWriter.WriteLine("DROP TABLE IF EXISTS `dbc_{0}`;", Path.GetFileNameWithoutExtension(data.TableName));
            sqlWriter.WriteLine("CREATE TABLE `dbc_{0}` (", Path.GetFileNameWithoutExtension(data.TableName));

            Console.WriteLine("columnsCount:" + data.Columns.Count);

            for (var i = 0; i < data.Columns.Count; ++i)
            {
                sqlWriter.Write("\t" + String.Format("`{0}`", data.Columns[i].ColumnName));

                switch (data.Columns[i].DataType.Name)
                {
                case "Int64":
                    sqlWriter.Write(" BIGINT NOT NULL DEFAULT '0'");
                    break;

                case "UInt64":
                    sqlWriter.Write(" BIGINT UNSIGNED NOT NULL DEFAULT '0'");
                    break;

                case "Int32":
                    sqlWriter.Write(" INT NOT NULL DEFAULT '0'");
                    break;

                case "UInt32":
                    sqlWriter.Write(" INT UNSIGNED NOT NULL DEFAULT '0'");
                    break;

                case "Int16":
                    sqlWriter.Write(" SMALLINT NOT NULL DEFAULT '0'");
                    break;

                case "UInt16":
                    sqlWriter.Write(" SMALLINT UNSIGNED NOT NULL DEFAULT '0'");
                    break;

                case "SByte":
                    sqlWriter.Write(" TINYINT NOT NULL DEFAULT '0'");
                    break;

                case "Byte":
                    sqlWriter.Write(" TINYINT UNSIGNED NOT NULL DEFAULT '0'");
                    break;

                case "Single":
                    sqlWriter.Write(" FLOAT NOT NULL DEFAULT '0'");
                    break;

                case "Double":
                    sqlWriter.Write(" DOUBLE NOT NULL DEFAULT '0'");
                    break;

                case "String":
                    sqlWriter.Write(" TEXT NOT NULL");
                    break;

                default:
                    throw new Exception(String.Format("Unknown field type {0}!", data.Columns[i].DataType.Name));
                }
                if (i == data.Columns.Count - 1)
                {
                }
                else
                {
                    sqlWriter.WriteLine(",");
                }
            }

            bool pkey = false;

            bool nonuniquekey = false;

            foreach (DataColumn index in data.PrimaryKey)
            {
                // sqlWriter.WriteLine("\tPRIMARY KEY (`{0}`)", index.ColumnName);
                pkey = true;
            }


            foreach (DataColumn index in data.NonUniqueIndexs)
            {
                // sqlWriter.WriteLine("\tPRIMARY KEY (`{0}`)", index.ColumnName);

                //  Console.WriteLine("NKEY");
                nonuniquekey = true;
            }

            if (pkey)
            {
                //Console.WriteLine("Here");
                sqlWriter.WriteLine(",");
            }
            else if (!pkey && nonuniquekey)
            {
            }
            else
            {
                sqlWriter.WriteLine("");
            }

            int count = 0;

            foreach (DataColumn index in data.PrimaryKey)
            {
                if (count == data.PrimaryKey.Length - 1 && !nonuniquekey)
                {
                    sqlWriter.WriteLine("\tPRIMARY KEY (`{0}`)", index.ColumnName);
                }
                else
                {
                    sqlWriter.WriteLine("\tPRIMARY KEY (`{0}`),", index.ColumnName);
                }
                count++;
            }



            if (pkey && nonuniquekey)
            {
                //sqlWriter.WriteLine("");
                //sqlWriter.Write(",");
            }
            else if (!pkey && nonuniquekey)
            {
                sqlWriter.WriteLine(",");
            }
            else
            {
                // sqlWriter.WriteLine("");
            }

            int count_2 = 0;

            foreach (DataColumn index in data.NonUniqueIndexs)
            {
                if (count_2 == data.NonUniqueIndexs.Length - 1)
                {
                    sqlWriter.WriteLine("\tKEY `idx_dbc_{0}_{1}` (`{2}`)", Path.GetFileNameWithoutExtension(data.TableName), index.ColumnName, index.ColumnName);
                }
                else
                {
                    sqlWriter.WriteLine("\tKEY `idx_dbc_{0}_{1}` (`{2}`),", Path.GetFileNameWithoutExtension(data.TableName), index.ColumnName, index.ColumnName);
                }
                count_2++;
            }


            sqlWriter.WriteLine(") ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='Export of {0}';", data.TableName);
            sqlWriter.WriteLine();
        }