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; }
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); }