private static DataSet ReadDataSetConfig(CMSConfigFileType cfg, string sPath)
        {
            string sPlugCfg = "default.config";
            string sRealPath = HttpContext.Current.Server.MapPath(sPath);
            CarrotCakeConfig config = CarrotCakeConfig.GetConfig();

            int iExpectedTblCount = 1;

            switch (cfg) {
                case CMSConfigFileType.SiteTextWidgets:
                    sPlugCfg = sRealPath + config.ConfigFileLocation.TextContentProcessors;
                    break;

                case CMSConfigFileType.SiteMapping:
                    sPlugCfg = sRealPath + config.ConfigFileLocation.SiteMapping;
                    break;

                case CMSConfigFileType.AdminMod:
                    sPlugCfg = sRealPath + "Admin.config";
                    iExpectedTblCount = 2;
                    break;

                case CMSConfigFileType.PublicCtrl:
                    sPlugCfg = sRealPath + "Public.config";
                    break;

                case CMSConfigFileType.SkinDef:
                    sPlugCfg = sRealPath + "Skin.config";
                    break;

                default:
                    sPlugCfg = sRealPath + "default.config";
                    iExpectedTblCount = -1;
                    break;
            }

            DataSet ds = new DataSet();
            if (File.Exists(sPlugCfg) && iExpectedTblCount > 0) {
                ds.ReadXml(sPlugCfg);
            }

            if (ds == null) {
                ds = new DataSet();
            }

            int iTblCount = ds.Tables.Count;

            // if dataset has wrong # of tables, build out more tables
            if (iTblCount < iExpectedTblCount) {
                for (int t = iTblCount; t <= iExpectedTblCount; t++) {
                    ds.Tables.Add(new DataTable());
                    ds.AcceptChanges();
                }
            }

            if (iExpectedTblCount > 0) {
                iTblCount = ds.Tables.Count;

                string table1Name = String.Empty;

                List<string> reqCols0 = new List<string>();
                List<string> reqCols1 = new List<string>();

                switch (cfg) {
                    case CMSConfigFileType.AdminMod:
                        reqCols0.Add("caption");
                        reqCols0.Add("area");
                        table1Name = "pluginlist";

                        reqCols1.Add("area");
                        reqCols1.Add("pluginlabel");
                        reqCols1.Add("menuorder");
                        reqCols1.Add("action");
                        reqCols1.Add("controller");
                        reqCols1.Add("usepopup");
                        reqCols1.Add("visible");

                        break;

                    case CMSConfigFileType.PublicCtrl:
                        //case CMSConfigFileType.PublicControls:
                        reqCols0.Add("filepath");
                        reqCols0.Add("crtldesc");
                        table1Name = "ctrlfile";

                        break;

                    case CMSConfigFileType.SkinDef:
                        reqCols0.Add("templatefile");
                        reqCols0.Add("filedesc");
                        table1Name = "pagenames";

                        break;

                    case CMSConfigFileType.SiteTextWidgets:
                        reqCols0.Add("pluginassembly");
                        reqCols0.Add("pluginname");
                        table1Name = "plugin";

                        break;

                    case CMSConfigFileType.SiteMapping:
                        reqCols0.Add("domname");
                        reqCols0.Add("siteid");
                        table1Name = "sitedetail";

                        break;

                    default:
                        reqCols0.Add("caption");
                        reqCols0.Add("pluginid");
                        table1Name = "none";

                        break;
                }

                if (ds.Tables.Contains(table1Name)) {
                    //validate that the dataset has the right table configuration
                    DataTable dt0 = ds.Tables[table1Name];
                    foreach (string c in reqCols0) {
                        if (!dt0.Columns.Contains(c)) {
                            DataColumn dc = new DataColumn(c);
                            dc.DataType = System.Type.GetType("System.String"); // add if not found

                            dt0.Columns.Add(dc);
                            dt0.AcceptChanges();
                        }
                    }

                    for (int iTbl = 1; iTbl < iTblCount; iTbl++) {
                        DataTable dt = ds.Tables[iTbl];
                        foreach (string c in reqCols1) {
                            if (!dt.Columns.Contains(c)) {
                                DataColumn dc = new DataColumn(c);
                                dc.DataType = System.Type.GetType("System.String"); // add if not found

                                dt.Columns.Add(dc);
                                dt.AcceptChanges();
                            }
                        }
                    }
                }
            }

            return ds;
        }
示例#2
0
        private static DataSet ReadDataSetConfig(CMSConfigFileType cfg, string sPath)
        {
            string           sPlugCfg  = "default.config";
            string           sRealPath = HttpContext.Current.Server.MapPath(sPath);
            CarrotCakeConfig config    = CarrotCakeConfig.GetConfig();

            int iExpectedTblCount = 1;

            switch (cfg)
            {
            case CMSConfigFileType.SiteTextWidgets:
                sPlugCfg = sRealPath + config.ConfigFileLocation.TextContentProcessors;
                break;

            case CMSConfigFileType.SiteMapping:
                sPlugCfg = sRealPath + config.ConfigFileLocation.SiteMapping;
                break;

            case CMSConfigFileType.AdminMod:
                sPlugCfg          = sRealPath + "Admin.config";
                iExpectedTblCount = 2;
                break;

            case CMSConfigFileType.PublicCtrl:
                sPlugCfg = sRealPath + "Public.config";
                break;

            case CMSConfigFileType.SkinDef:
                sPlugCfg = sRealPath + "Skin.config";
                break;

            default:
                sPlugCfg          = sRealPath + "default.config";
                iExpectedTblCount = -1;
                break;
            }

            DataSet ds = new DataSet();

            if (File.Exists(sPlugCfg) && iExpectedTblCount > 0)
            {
                ds.ReadXml(sPlugCfg);
            }

            if (ds == null)
            {
                ds = new DataSet();
            }

            int iTblCount = ds.Tables.Count;

            // if dataset has wrong # of tables, build out more tables
            if (iTblCount < iExpectedTblCount)
            {
                for (int t = iTblCount; t <= iExpectedTblCount; t++)
                {
                    ds.Tables.Add(new DataTable());
                    ds.AcceptChanges();
                }
            }

            if (iExpectedTblCount > 0)
            {
                iTblCount = ds.Tables.Count;

                string table1Name = String.Empty;

                List <string> reqCols0 = new List <string>();
                List <string> reqCols1 = new List <string>();

                switch (cfg)
                {
                case CMSConfigFileType.AdminMod:
                    reqCols0.Add("caption");
                    reqCols0.Add("area");
                    table1Name = "pluginlist";

                    reqCols1.Add("area");
                    reqCols1.Add("pluginlabel");
                    reqCols1.Add("menuorder");
                    reqCols1.Add("action");
                    reqCols1.Add("controller");
                    reqCols1.Add("usepopup");
                    reqCols1.Add("visible");

                    break;

                case CMSConfigFileType.PublicCtrl:
                    //case CMSConfigFileType.PublicControls:
                    reqCols0.Add("filepath");
                    reqCols0.Add("crtldesc");
                    table1Name = "ctrlfile";

                    break;

                case CMSConfigFileType.SkinDef:
                    reqCols0.Add("templatefile");
                    reqCols0.Add("filedesc");
                    table1Name = "pagenames";

                    break;

                case CMSConfigFileType.SiteTextWidgets:
                    reqCols0.Add("pluginassembly");
                    reqCols0.Add("pluginname");
                    table1Name = "plugin";

                    break;

                case CMSConfigFileType.SiteMapping:
                    reqCols0.Add("domname");
                    reqCols0.Add("siteid");
                    table1Name = "sitedetail";

                    break;

                default:
                    reqCols0.Add("caption");
                    reqCols0.Add("pluginid");
                    table1Name = "none";

                    break;
                }

                if (ds.Tables.Contains(table1Name))
                {
                    //validate that the dataset has the right table configuration
                    DataTable dt0 = ds.Tables[table1Name];
                    foreach (string c in reqCols0)
                    {
                        if (!dt0.Columns.Contains(c))
                        {
                            DataColumn dc = new DataColumn(c);
                            dc.DataType = System.Type.GetType("System.String");                             // add if not found

                            dt0.Columns.Add(dc);
                            dt0.AcceptChanges();
                        }
                    }

                    for (int iTbl = 1; iTbl < iTblCount; iTbl++)
                    {
                        DataTable dt = ds.Tables[iTbl];
                        foreach (string c in reqCols1)
                        {
                            if (!dt.Columns.Contains(c))
                            {
                                DataColumn dc = new DataColumn(c);
                                dc.DataType = System.Type.GetType("System.String");                                 // add if not found

                                dt.Columns.Add(dc);
                                dt.AcceptChanges();
                            }
                        }
                    }
                }
            }

            return(ds);
        }