Example #1
0
        public void LoadLibConfig(string file)
        {
            this.statusmessage = "";
            tables.Clear();
            infotables.Clear();
            XmlReader xmlr = XmlReader.Create(file);

            TableInfo currentTable = null;

            string currentTag = "";
            while (xmlr.Read())
            {
                if (xmlr.NodeType == XmlNodeType.Element)
                {
                    if (xmlr.IsStartElement())
                    {
                        currentTag = xmlr.Name;

                        switch (currentTag.ToLower())
                        {
                            case "ini":
                                tablecount = xmlr["TableCount"];
                                tableinfocount = xmlr["TableInfoCount"];
                                break;
                            case "table":
                                // Add table to table list
                                currentTable = new TableInfo();
                                currentTable.Name = xmlr["name"];
                                currentTable.RowCount = xmlr["RowCount"];
                                currentTable.TableInfoID = xmlr["TableInfoID"];
                                currentTable.FieldCnt = xmlr["FieldCnt"];

                                infotables.Add(xmlr["TableInfoID"]);
                                break;
                            case "fieldinfo":
                                currentTable.AddField(xmlr["Name"], xmlr["IsKey"], xmlr["DataType"]);
                                break;
                            case "row":
                                currentTable.BeginRow();
                                break;
                            default:
                                break;

                        }
                    }
                }
                if (xmlr.NodeType == XmlNodeType.EndElement)
                {
                    switch (xmlr.Name.ToLower())
                    {
                        case "ini":
                            break;
                        case "table":
                            if (!currentTable.UpdateMetadata())
                            {
                                this.statusmessage = "Warning: Table \"" + currentTable.Name + "\" data might be malformed";
                            }
                            tables.Add(currentTable);
                            break;
                        case "fieldinfo":
                            break;
                        case "row":
                            currentTable.EndRow();
                            break;
                        default:
                            // Can only get value after tag concluded
                            //currentTable.SetValue(lasttag, xmlr.Value);
                            break;
                    }

                }
                if (xmlr.NodeType == XmlNodeType.Text || xmlr.NodeType == XmlNodeType.CDATA)
                {
                    currentTable.SetValue(currentTag, xmlr.Value);
                }
            }

            // Fix table count info if it does not match
            int matchTableCount = 0;
            int.TryParse(tablecount, out matchTableCount);
            if (matchTableCount != tables.Count)
            {
                this.statusmessage = "Warning: Number of tables do not match libconfig info";
                tablecount = tables.Count.ToString();
            }
        }
Example #2
0
        public void LoadLibConfig(string file)
        {
            this.statusmessage = "";
            tables.Clear();
            infotables.Clear();
            XmlReader xmlr = XmlReader.Create(file);

            TableInfo currentTable = null;

            string currentTag = "";

            while (xmlr.Read())
            {
                if (xmlr.NodeType == XmlNodeType.Element)
                {
                    if (xmlr.IsStartElement())
                    {
                        currentTag = xmlr.Name;

                        switch (currentTag.ToLower())
                        {
                        case "ini":
                            tablecount     = xmlr["TableCount"];
                            tableinfocount = xmlr["TableInfoCount"];
                            break;

                        case "table":
                            // Add table to table list
                            currentTable             = new TableInfo();
                            currentTable.Name        = xmlr["name"];
                            currentTable.RowCount    = xmlr["RowCount"];
                            currentTable.TableInfoID = xmlr["TableInfoID"];
                            currentTable.FieldCnt    = xmlr["FieldCnt"];

                            infotables.Add(xmlr["TableInfoID"]);
                            break;

                        case "fieldinfo":
                            currentTable.AddField(xmlr["Name"], xmlr["IsKey"], xmlr["DataType"]);
                            break;

                        case "row":
                            currentTable.BeginRow();
                            break;

                        default:
                            break;
                        }
                    }
                }
                if (xmlr.NodeType == XmlNodeType.EndElement)
                {
                    switch (xmlr.Name.ToLower())
                    {
                    case "ini":
                        break;

                    case "table":
                        if (!currentTable.UpdateMetadata())
                        {
                            this.statusmessage = "Warning: Table \"" + currentTable.Name + "\" data might be malformed";
                        }
                        tables.Add(currentTable);
                        break;

                    case "fieldinfo":
                        break;

                    case "row":
                        currentTable.EndRow();
                        break;

                    default:
                        // Can only get value after tag concluded
                        //currentTable.SetValue(lasttag, xmlr.Value);
                        break;
                    }
                }
                if (xmlr.NodeType == XmlNodeType.Text || xmlr.NodeType == XmlNodeType.CDATA)
                {
                    currentTable.SetValue(currentTag, xmlr.Value);
                }
            }

            // Fix table count info if it does not match
            int matchTableCount = 0;

            int.TryParse(tablecount, out matchTableCount);
            if (matchTableCount != tables.Count)
            {
                this.statusmessage = "Warning: Number of tables do not match libconfig info";
                tablecount         = tables.Count.ToString();
            }
        }