public string Build(string codefile)
        {
            _codeFile = codefile;
            StringBuilder builder  = new StringBuilder();
            mytable       myTable  = null;
            mytemplate    template = null;

            myTable  = GetTable("TSCQueue");
            template = new mytemplate(myTable);
            string classQueue = GetClass(template);

            myTable  = GetTable("TSCEvents");
            template = new mytemplate(myTable);
            string classEvents = GetClass(template);

            myTable  = GetTable("TSCSingers");
            template = new mytemplate(myTable);
            string classSingers = GetClass(template);

            myTable  = GetTable("TSCVenues");
            template = new mytemplate(myTable);
            string classVenues = GetClass(template);

            builder.Append(classQueue);
            builder.AppendLine();
            builder.AppendLine();
            builder.Append(classEvents);
            builder.AppendLine();
            builder.AppendLine();
            builder.Append(classSingers);
            builder.AppendLine();
            builder.AppendLine();
            builder.Append(classVenues);
            return(builder.ToString());
        }
        private void BuildKeyCompare(StringBuilder sb, string line, mytemplate t)
        {
            string newline = "";

            newline = line.Replace(t.vstaticfieldequals, "public bool KeyEquals(" + t.vclass.VBase + " a)");
            sb.AppendLine(newline);
            newline = line.Replace(t.vstaticfieldequals, "{");
            sb.AppendLine(newline);
            newline = line.Replace(t.vstaticfieldequals, "\tif ((object)a == null)");
            sb.AppendLine(newline);
            newline = line.Replace(t.vstaticfieldequals, "\t\treturn false;");
            sb.AppendLine(newline);
            newline = line.Replace(t.vstaticfieldequals, "\treturn (");
            sb.AppendLine(newline);
            for (int i = 0; i < t.vconstprimary.Count; i++)
            {
                string amp = " &&";
                if (i == t.vconstprimary.Count - 1)
                {
                    amp = "";
                }
                myvariable variable = t.vconstprimary[i];
                if (variable.VType == "string")
                {
                    newline = line.Replace(t.vstaticfieldequals, "\t(a." + variable.VPublic + ".Trim().ToLower() == " + variable.VPublic + ".Trim().ToLower())" + amp);
                    sb.AppendLine(newline);
                }
                else
                {
                    newline = line.Replace(t.vstaticfieldequals, "\t(a." + variable.VPublic + " == " + variable.VPublic + ")" + amp);
                    sb.AppendLine(newline);
                }
            }
            newline = line.Replace(t.vstaticfieldequals, "\t);");
            sb.AppendLine(newline);
            newline = line.Replace(t.vstaticfieldequals, "}");
            sb.AppendLine(newline);
        }
        private string GetClass(mytemplate template)
        {
            StringBuilder sb = new StringBuilder();
            StreamReader  sr = File.OpenText(_codeFile);

            if (sr != null)
            {
                while (!sr.EndOfStream)
                {
                    string line = sr.ReadLine();
                    if (line != null)
                    {
                        bool bFound = false;
                        if (line.Contains(template.vstaticconstructor))
                        {
                            BuildConstructor(sb, line, template);
                            continue;
                        }
                        if (line.Contains(template.vstaticfieldequals))
                        {
                            BuildKeyCompare(sb, line, template);
                            continue;
                        }
                        foreach (string v in template.vrepeat)
                        {
                            if (line.Contains(v))
                            {
                                bFound = true;
                                break;
                            }
                        }
                        if (line.Contains(template.vclass.VType))
                        {
                            line = line.Replace(template.vclass.VType, template.vclass.VBase);
                        }
                        if (line.Contains(template.vclassname.VType))
                        {
                            line = line.Replace(template.vclassname.VType, template.vclassname.VBase);
                        }
                        if (line.Contains(template.vshortclass.VType))
                        {
                            line = line.Replace(template.vshortclass.VType, template.vshortclass.VBase);
                        }
                        if (bFound == true)
                        {
                            foreach (myvariable t in template.vbase)
                            {
                                string newline = line;
                                foreach (string v in template.vrepeat)
                                {
                                    if (newline.Contains(v))
                                    {
                                        newline = template.vreplace(newline, v, t);
                                    }
                                }
                                sb.AppendLine(newline);
                            }
                        }
                        else
                        {
                            sb.AppendLine(line);
                        }
                    }
                }
            }
            sr.Close();
            return(sb.ToString());
        }
        private void BuildConstructor(StringBuilder sb, string line, mytemplate t)
        {
            string newline = "";

            newline = line.Replace(t.vstaticconstructor, "public " + t.vclass.VBase + "()");
            sb.AppendLine(newline);
            newline = line.Replace(t.vstaticconstructor, "{");
            sb.AppendLine(newline);
            foreach (myvariable variable in t.vbase)
            {
                newline = line.Replace(t.vstaticconstructor, "\tHeaders.Add(\"" + variable.VPublic + "\", \"" + variable.VHValue + "\");");
                sb.AppendLine(newline);
            }
            sb.AppendLine();
            foreach (myvariable variable in t.vbase)
            {
                newline = line.Replace(t.vstaticconstructor, "\tColumns.Add(\"" + variable.VPublic + "\", " + variable.VPrivate + ");");
                sb.AppendLine(newline);
            }
            sb.AppendLine();
            foreach (myvariable variable in t.vconstprimary)
            {
                newline = line.Replace(t.vstaticconstructor, "\tPrimary.Add(\"" + variable.VPublic + "\", " + variable.VPrivate + ");");
                sb.AppendLine(newline);
            }

            string comma = "";
            string plist = "";

            foreach (myvariable param in t.vconstprimary)
            {
                plist += (comma + param.VType + " " + param.VParam);
                comma  = ", ";
            }
            newline = line.Replace(t.vstaticconstructor, "}");
            sb.AppendLine(newline);
            sb.AppendLine();

            newline = line.Replace(t.vstaticconstructor, "public " + t.vclass.VBase + "(" + plist + ") : this()");
            sb.AppendLine(newline);
            newline = line.Replace(t.vstaticconstructor, "{");
            sb.AppendLine(newline);
            foreach (myvariable param in t.vconstprimary)
            {
                newline = line.Replace(t.vstaticconstructor, "\t" + param.VPrivate + " = new ColumnClass(\"" + param.VPublic + "\", ColumnType._" + param.VType + ", " + param.VParam + ");");
                sb.AppendLine(newline);
            }
            newline = line.Replace(t.vstaticconstructor, "}");
            sb.AppendLine(newline);
            sb.AppendLine();

            newline = line.Replace(t.vstaticconstructor, "public " + t.vclass.VBase + "(" + t.vclass.VBase + " " + t.vclassname.VParam + ") : this()");
            sb.AppendLine(newline);
            newline = line.Replace(t.vstaticconstructor, "{");
            sb.AppendLine(newline);
            foreach (myvariable param in t.vbase)
            {
                if (param.VType.Trim().ToLower() == "string")
                {
                    newline = line.Replace(t.vstaticconstructor, "\t" + param.VPublic + " = new string(" + t.vclassname.VParam + "." + param.VPublic + ".ToArray());");
                }
                else
                {
                    newline = line.Replace(t.vstaticconstructor, "\t" + param.VPublic + " = " + t.vclassname.VParam + "." + param.VPublic + ";");
                }
                sb.AppendLine(newline);
            }
            newline = line.Replace(t.vstaticconstructor, "}");
            sb.AppendLine(newline);
            sb.AppendLine();
        }