LogicDataGenerator.MessageDslParser.GenMessageLoadMulti C# (CSharp) Method

GenMessageLoadMulti() private method

private GenMessageLoadMulti ( MessageDef messageDef, TextWriter sw ) : void
messageDef MessageDef
sw System.IO.TextWriter
return void
        private void GenMessageLoadMulti(MessageDef messageDef, TextWriter sw)
        {
            try {
            sw.WriteLine();
            sw.WriteLine("\t\tprivate static List<GeneralRecordData> LoadMulti{0}(List<string> foreignKeys)", messageDef.m_TypeName);
            sw.WriteLine("\t\t{");
            sw.WriteLine("\t\t\tList<GeneralRecordData> ret = new List<GeneralRecordData>();");
            if (messageDef.m_ForeignKeys.Count > 0) {
              sw.WriteLine("\t\t\ttry {");
              sw.WriteLine("\t\t\t  using (MySqlCommand cmd = new MySqlCommand()) {");
              sw.WriteLine("\t\t\t    cmd.Connection = DBConn.MySqlConn;");
              sw.WriteLine("\t\t\t    cmd.CommandType = CommandType.StoredProcedure;");
              sw.WriteLine("\t\t\t    cmd.CommandText = \"LoadMulti{0}\";", messageDef.m_TypeName);
              sw.WriteLine("\t\t\t    if(foreignKeys.Count != {0})", messageDef.m_ForeignKeys.Count);
              sw.WriteLine("\t\t\t\t    throw new Exception(\"foreign key number don't match !!!\");");
              sw.WriteLine("\t\t\t    MySqlParameter inputParam;");
              int ix = 0;
              foreach (MemberDef memberDef in messageDef.m_Members) {
            if (memberDef.m_IsForeignKey) {
              string mysqlClientType = GetMySqlClientType(memberDef.m_TypeName);
              sw.WriteLine("\t\t\t    inputParam = new MySqlParameter(\"@_{0}\", {1});", memberDef.m_MemberName, mysqlClientType);
              sw.WriteLine("\t\t\t    inputParam.Direction = ParameterDirection.Input;");
              string sqlType = GetSqlType(memberDef.m_TypeName);
              if (0 == sqlType.CompareTo("varchar")) {
                int size;
                if (memberDef.m_MaxSize > 0) {
                  size = memberDef.m_MaxSize;
                } else {
                  size = m_DefVarcharSize;
                }
                sw.WriteLine("\t\t\t    inputParam.Value = foreignKeys[{0}];", ix);
                sw.WriteLine("\t\t\t    inputParam.Size = {0};", size);
              } else {
                sw.WriteLine("\t\t\t    inputParam.Value = ({0})Convert.ChangeType(foreignKeys[{1}],typeof({2}));", memberDef.m_TypeName, ix, GetMessageType(memberDef.m_TypeName));
              }
              sw.WriteLine("\t\t\t    cmd.Parameters.Add(inputParam);");
              ix++;
            }
              }
              sw.WriteLine("\t\t\t    using (DbDataReader reader = cmd.ExecuteReader()) {");
              sw.WriteLine("\t\t\t      while (reader.Read()) {");
              sw.WriteLine("\t\t\t        GeneralRecordData record = new GeneralRecordData();");
              sw.WriteLine("\t\t\t        object val;");
              sw.WriteLine("\t\t\t        {0} msg = new {1}();", messageDef.m_TypeName, messageDef.m_TypeName);
              foreach (MemberDef memberDef in messageDef.m_Members) {
            sw.WriteLine("\t\t\t        val = reader[\"{0}\"];", memberDef.m_MemberName);
            sw.WriteLine("\t\t\t        msg.{0} = ({1})val;", memberDef.m_MemberName, GetMessageType(memberDef.m_TypeName));
            if (memberDef.m_IsPrimaryKey) {
              sw.WriteLine("\t\t\t        record.PrimaryKeys.Add(val.ToString());");
            } else if (memberDef.m_IsForeignKey) {
              sw.WriteLine("\t\t\t        record.ForeignKeys.Add(val.ToString());");
            }
              }
              sw.WriteLine("\t\t\t        record.DataVersion = (int)reader[\"DataVersion\"];");
              sw.WriteLine("\t\t\t        record.Data = DbDataSerializer.Encode(msg);");
              sw.WriteLine("\t\t\t        ret.Add(record);");
              sw.WriteLine("\t\t\t      }");
              sw.WriteLine("\t\t\t    }");
              sw.WriteLine("\t\t\t  }");
              sw.WriteLine("\t\t\t} catch (Exception ex) {");
              sw.WriteLine("\t\t\t  DBConn.Close();");
              sw.WriteLine("\t\t\t  throw ex;");
              sw.WriteLine("\t\t\t}");
            }
            sw.WriteLine("\t\t\treturn ret;");

            sw.WriteLine("\t\t}");
            sw.WriteLine();
              } catch (Exception ex) {
            Console.WriteLine(ex);
              }
        }