LogicDataGenerator.MessageDslParser.GenAllMessageDML C# (CSharp) Method

GenAllMessageDML() private method

private GenAllMessageDML ( string file, string enumName ) : void
file string
enumName string
return void
        internal void GenAllMessageDML(string file, string enumName, params string[] groups)
        {
            HashSet<string> expectGroups = new HashSet<string>(groups);
              if (expectGroups.Count <= 0) {
            expectGroups.Add(string.Empty);
              }
              using (StreamWriter sw = new StreamWriter(file, true)) {
            sw.WriteLine("//----------------------------------------------------------------------------");
            sw.WriteLine("//!!!不要手动修改此文件,此文件由LogicDataGenerator按{0}生成!!!", m_DslFile);
            sw.WriteLine("//----------------------------------------------------------------------------");
            sw.WriteLine("using System;");
            sw.WriteLine("using System.Collections.Generic;");
            sw.WriteLine("using System.Runtime.InteropServices;");
            sw.WriteLine("using System.IO;");
            sw.WriteLine("using System.Text;");
            sw.WriteLine("using System.Data;");
            sw.WriteLine("using System.Data.Common;");
            sw.WriteLine("using MySql.Data.MySqlClient;");
            if (!string.IsNullOrEmpty(m_Package)) {
              sw.WriteLine("using {0};", m_Package);
            }
            sw.WriteLine("using GameFramework;");
            sw.WriteLine();
            sw.WriteLine("namespace GameFramework");
            sw.WriteLine("{");
            sw.WriteLine("\tinternal static class DataDML");
            sw.WriteLine("\t{");
            sw.WriteLine();

            sw.WriteLine("\t\tinternal static void Save(int msgId, bool isValid, int dataVersion, byte[] data)");
            sw.WriteLine("\t\t{");
            sw.WriteLine("\t\t\tswitch(msgId){");
            foreach (var messagePair in m_Messages) {
              string message = messagePair.Key;
              MessageDef messageDef = messagePair.Value;
              if (!messageDef.m_DontGenEnum && !messageDef.m_DontGenDB && expectGroups.Contains(messageDef.m_GroupName)) {
            sw.WriteLine("\t\t\t\tcase (int){0}.{1}:", enumName, messageDef.m_TypeName);
            sw.WriteLine("\t\t\t\t\tSave{0}(isValid, dataVersion, data);", messageDef.m_TypeName);
            sw.WriteLine("\t\t\t\t\tbreak;");
              }
            }
            sw.WriteLine("\t\t\t}");
            sw.WriteLine("\t\t}");

            sw.WriteLine("\t\tinternal static int BatchSave(int msgId, List<bool> validList, List<byte[]> dataList, int dataVersion)");
            sw.WriteLine("\t\t{");
            sw.WriteLine("\t\t\tint count = 0;");
            sw.WriteLine("\t\t\tswitch(msgId){");
            foreach (var messagePair in m_Messages) {
              string message = messagePair.Key;
              MessageDef messageDef = messagePair.Value;
              if (!messageDef.m_DontGenEnum && !messageDef.m_DontGenDB && expectGroups.Contains(messageDef.m_GroupName)) {
            sw.WriteLine("\t\t\t\tcase (int){0}.{1}:", enumName, messageDef.m_TypeName);
            sw.WriteLine("\t\t\t\t\tcount = BatchSave{0}(validList, dataList, dataVersion);", messageDef.m_TypeName);
            sw.WriteLine("\t\t\t\t\tbreak;");
              }
            }
            sw.WriteLine("\t\t\t}");
            sw.WriteLine("\t\t\treturn count;");
            sw.WriteLine("\t\t}");

            sw.WriteLine("\t\tinternal static List<GeneralRecordData> LoadAll(int msgId, int start, int count)");
            sw.WriteLine("\t\t{");
            sw.WriteLine("\t\t\tif(start<0)");
            sw.WriteLine("\t\t\t\tstart=0;");
            sw.WriteLine("\t\t\tif(count<=0)");
            sw.WriteLine("\t\t\t\tcount=int.MaxValue;");
            sw.WriteLine("\t\t\tswitch(msgId){");
            foreach (var messagePair in m_Messages) {
              string message = messagePair.Key;
              MessageDef messageDef = messagePair.Value;
              if (!messageDef.m_DontGenEnum && !messageDef.m_DontGenDB && expectGroups.Contains(messageDef.m_GroupName)) {
            sw.WriteLine("\t\t\t\tcase (int){0}.{1}:", enumName, messageDef.m_TypeName);
            sw.WriteLine("\t\t\t\t\treturn LoadAll{0}(start, count);", messageDef.m_TypeName);
              }
            }
            sw.WriteLine("\t\t\t}");
            sw.WriteLine("\t\t\treturn null;");
            sw.WriteLine("\t\t}");

            sw.WriteLine("\t\tinternal static GeneralRecordData LoadSingle(int msgId, List<string> primaryKeys)");
            sw.WriteLine("\t\t{");
            sw.WriteLine("\t\t\tswitch(msgId){");
            foreach (var messagePair in m_Messages) {
              string message = messagePair.Key;
              MessageDef messageDef = messagePair.Value;
              if (!messageDef.m_DontGenEnum && !messageDef.m_DontGenDB && expectGroups.Contains(messageDef.m_GroupName)) {
            sw.WriteLine("\t\t\t\tcase (int){0}.{1}:", enumName, messageDef.m_TypeName);
            sw.WriteLine("\t\t\t\t\treturn LoadSingle{0}(primaryKeys);", messageDef.m_TypeName);
              }
            }
            sw.WriteLine("\t\t\t}");
            sw.WriteLine("\t\t\treturn null;");
            sw.WriteLine("\t\t}");

            sw.WriteLine("\t\tinternal static List<GeneralRecordData> LoadMulti(int msgId, List<string> foreignKeys)");
            sw.WriteLine("\t\t{");
            sw.WriteLine("\t\t\tswitch(msgId){");
            foreach (var messagePair in m_Messages) {
              string message = messagePair.Key;
              MessageDef messageDef = messagePair.Value;
              if (!messageDef.m_DontGenEnum && !messageDef.m_DontGenDB && expectGroups.Contains(messageDef.m_GroupName)) {
            sw.WriteLine("\t\t\t\tcase (int){0}.{1}:", enumName, messageDef.m_TypeName);
            sw.WriteLine("\t\t\t\t\treturn LoadMulti{0}(foreignKeys);", messageDef.m_TypeName);
              }
            }
            sw.WriteLine("\t\t\t}");
            sw.WriteLine("\t\t\treturn null;");
            sw.WriteLine("\t\t}");

            foreach (var messagePair in m_Messages) {
              string message = messagePair.Key;
              MessageDef messageDef = messagePair.Value;
              if (!messageDef.m_DontGenEnum && !messageDef.m_DontGenDB && expectGroups.Contains(messageDef.m_GroupName)) {
            GenMessageLoadAll(messageDef, sw);
            GenMessageLoadSingle(messageDef, sw);
            GenMessageLoadMulti(messageDef, sw);
            GenMessageSave(messageDef, sw);
            GenMessageBatchSave(messageDef, sw);
              }
            }

            sw.WriteLine();
            sw.WriteLine("\t}");
            sw.WriteLine("}");

            sw.Close();
              }
        }

Usage Example

Esempio n. 1
0
 private static void GenServerData()
 {
     MessageDslParser parser = new MessageDslParser();
       parser.Init("DataProto/Data.dsl");
       parser.GenAllMessageWraps("DataProto/Data.cs", string.Empty);
       parser.GenAllMessagesEnum("DataProto/DataEnum.cs", "DataEnum", string.Empty);
       parser.GenAllMessageProtos("DataProto/Data.proto", string.Empty);
       parser.GenAllMessageDDL("DataProto/CreateDataTables.sql", string.Empty);
       parser.GenAllMessageDML("DataProto/DataDML.cs", "DataEnum", string.Empty);
 }