LogicDataGenerator.MessageDslParser.GenMessageBatchSave C# (CSharp) Method

GenMessageBatchSave() private method

private GenMessageBatchSave ( MessageDef messageDef, TextWriter sw ) : void
messageDef MessageDef
sw System.IO.TextWriter
return void
        private void GenMessageBatchSave(MessageDef messageDef, TextWriter sw)
        {
            try {
            sw.WriteLine();
            sw.WriteLine("\t\tprivate static int BatchSave{0}(List<bool> validList, List<byte[]> dataList, int dataVersion)", messageDef.m_TypeName);
            sw.WriteLine("\t\t{");
            sw.WriteLine("\t\t\tif (dataList.Count <= 0) {");
            sw.WriteLine("\t\t\t  return 0;");
            sw.WriteLine("\t\t\t}");
            sw.WriteLine("\t\t\tStringBuilder sbSql = new StringBuilder(\"insert into {0} \", 4096); ", messageDef.m_TypeName);
            StringBuilder sbMember = new StringBuilder();
            foreach (MemberDef memberDef in messageDef.m_Members) {
              sbMember.Append(memberDef.m_MemberName);
              sbMember.Append(',');
            }
            sbMember.Remove(sbMember.Length - 1, 1);
            sw.WriteLine("\t\t\tsbSql.Append(\"(IsValid,DataVersion,{0})\");", sbMember.ToString());
            sw.WriteLine("\t\t\tsbSql.Append(\" values \");", sbMember.ToString());
            sw.WriteLine("\t\t\tfor (int i = 0; i < validList.Count; ++i) {");
            sw.WriteLine("\t\t\t  Byte valid = 1;");
            sw.WriteLine("\t\t\t  if (validList[i] == false) {");
            sw.WriteLine("\t\t\t    valid = 0;");
            sw.WriteLine("\t\t\t  }");
            sw.WriteLine("\t\t\t  StringBuilder sbValue = new StringBuilder();");
            sw.WriteLine("\t\t\t  sbValue.AppendFormat(\"({0},{1}\", valid, dataVersion);");
            sw.WriteLine("\t\t\t  object _msg;");
            sw.WriteLine("\t\t\t  if (DbDataSerializer.Decode(dataList[i], typeof({0}), out _msg)) {{", messageDef.m_TypeName);
            sw.WriteLine("\t\t\t    {0} msg = _msg as {0};", messageDef.m_TypeName);
            foreach (MemberDef memberDef in messageDef.m_Members) {
              sw.WriteLine("\t\t\t    sbValue.Append(',');");
              if (memberDef.m_TypeName.Equals("bool")) {
             sw.WriteLine("\t\t\t    sbValue.Append(msg.{0});", memberDef.m_MemberName);
              } else {
             sw.WriteLine("\t\t\t    sbValue.AppendFormat(\"\'{{0}}\'\", msg.{0});", memberDef.m_MemberName);
              }
            }
            sw.WriteLine("\t\t\t    sbValue.Append(')');");
            sw.WriteLine("\t\t\t    sbSql.Append(sbValue.ToString());");
            sw.WriteLine("\t\t\t    sbSql.Append(',');");
            sw.WriteLine("\t\t\t  }");
            sw.WriteLine("\t\t\t}");
            sw.WriteLine("\t\t\tsbSql.Remove(sbSql.Length - 1, 1);");
            sw.WriteLine("\t\t\tsbSql.Append(\" on duplicate key update \");");
            sw.WriteLine("\t\t\tsbSql.AppendFormat(\" IsValid = if(DataVersion < {0}, values(IsValid), IsValid),\", dataVersion);");
            foreach (MemberDef memberDef in messageDef.m_Members) {
              sw.WriteLine("\t\t\tsbSql.AppendFormat(\" {0} = if(DataVersion < {{0}}, values({0}), {0}),\", dataVersion);", memberDef.m_MemberName);
            }
            sw.WriteLine("\t\t\tsbSql.AppendFormat(\" DataVersion = if(DataVersion < {0}, {0}, DataVersion),\", dataVersion);");
            sw.WriteLine("\t\t\tsbSql.Remove(sbSql.Length - 1, 1);");

            sw.WriteLine("\t\t\tstring statement = sbSql.ToString();");
            sw.WriteLine("\t\t\tint 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.Text;");
            sw.WriteLine("\t\t\t    cmd.CommandText = statement;");
            sw.WriteLine("\t\t\t    count = cmd.ExecuteNonQuery();");
            sw.WriteLine("\t\t\t  }");
            sw.WriteLine("\t\t\t} catch (Exception ex) {");
            sw.WriteLine("\t\t\t  if (dataList.Count < 200) {");
            sw.WriteLine("\t\t\t    LogSys.Log(LOG_TYPE.ERROR, \"Error Sql statement:{0}\", statement);");
            sw.WriteLine("\t\t\t  }");
            sw.WriteLine("\t\t\t  DBConn.Close();");
            sw.WriteLine("\t\t\t  throw ex;");
            sw.WriteLine("\t\t\t}");
            sw.WriteLine("\t\t\treturn count;");
            sw.WriteLine("\t\t}");
            sw.WriteLine();
              } catch (Exception ex) {
            Console.WriteLine(ex);
              }
        }