Exemplo n.º 1
0
        public void getData(string filename, string filterstring = null)
        {
            string configFilePath = "..\\..\\..\\Build\\Debug\\Configuration\\EpiInfo.Config.xml";

            Epi.DataSets.Config configDataSet = new Epi.DataSets.Config();
            configDataSet.ReadXml(configFilePath);
            Epi.Configuration.Load(configFilePath);
            System.Data.Common.DbConnectionStringBuilder dbCnnStringBuilder = new System.Data.Common.DbConnectionStringBuilder();
            string           provider  = "Epi.Data.Office.CsvFileFactory, Epi.Data.Office";
            IDbDriverFactory dbFactory = null;

            dbFactory = DbDriverFactoryCreator.GetDbDriverFactory(provider);
            IDbDriver db = dbFactory.CreateDatabaseObject(dbCnnStringBuilder);

            db.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=..\\..\\Data;Extended Properties=\"text;HDR=Yes;FMT=Delimited\"";
            object selectedDataSource = db;

            IDbDriver dbDriver = (IDbDriver)selectedDataSource;

            DashboardHelper = new DashboardHelper(filename + "#csv", dbDriver);
            IGadgetParameters inputs = new GadgetParameters();

            DashboardHelper.UserVarsNeedUpdating = true;
            string fs = null;

            if (!String.IsNullOrEmpty(filterstring))
            {
                fs = "select * from " + filename + "#csv where " + filterstring;
            }
            PopulateDataSet(inputs, fs);
        }
Exemplo n.º 2
0
        /// <summary>
        /// Creates default configuration. Typically when Configuration structure is modified.
        /// </summary>
        /// <returns></returns>
        public static Configuration CreateDefaultConfiguration()
        {
            Config configDataSet = new Config();

            Config.DirectoriesRow drow = configDataSet.Directories.NewDirectoriesRow();

            // TODO: lookup temp folder??
            drow.Working = "C:\\Temp\\";
            // drow.Project = "C:\\Projects\\Epi Info 7\\";

            string programFilesDirectoryName = System.Environment.GetFolderPath(System.Environment.SpecialFolder.ProgramFiles).ToLower();
            string installFolder = AppDomain.CurrentDomain.BaseDirectory;
            string writableFilesFolder = AppDomain.CurrentDomain.BaseDirectory;

            if (writableFilesFolder.ToLower().StartsWith(programFilesDirectoryName))
            {
                string desktop = System.Environment.GetFolderPath(System.Environment.SpecialFolder.DesktopDirectory).ToLower();
                string localUserFolder = string.Empty;
                int index = desktop.LastIndexOf('\\');

                if (index > 0 && !(desktop.StartsWith("\\")))
                {
                    localUserFolder = desktop.Substring(0, index);
                }

                if (Directory.Exists(localUserFolder))
                {
                    writableFilesFolder = localUserFolder + "\\Epi Info 7\\";
                }
                else
                {
                    writableFilesFolder = System.Environment.GetFolderPath(System.Environment.SpecialFolder.MyDocuments) + "\\Epi Info 7\\";
                }
            }

            string configFolder = Path.Combine(writableFilesFolder, "Configuration\\");

            if (!Directory.Exists(configFolder))
            {
                Directory.CreateDirectory(configFolder);
            }

            drow.Configuration = configFolder;
            drow.Output = Path.Combine(writableFilesFolder, "Output\\");
            drow.Templates = Path.Combine(writableFilesFolder, "Templates\\");
            drow.Samples = Path.Combine(writableFilesFolder, "Resources\\Samples\\");
            drow.Project = Path.Combine(writableFilesFolder, "Projects\\");
            drow.LogDir = Path.Combine(writableFilesFolder, "Logs\\");
            configDataSet.Directories.Rows.Add(drow);

            if (!Directory.Exists(drow.Output) && Directory.Exists(Path.Combine(installFolder, "Output\\")))
            {
                Directory.CreateDirectory(drow.Output);
                DirectoryInfo sourceInfo = new DirectoryInfo(Path.Combine(installFolder, "Output\\"));
                DirectoryInfo targetInfo = new DirectoryInfo(drow.Output);
                Util.CopyDirectory(sourceInfo, targetInfo);
            }
            if (!Directory.Exists(drow.Templates) && Directory.Exists(Path.Combine(installFolder, "Templates\\")))
            {
                Directory.CreateDirectory(drow.Templates);
                DirectoryInfo sourceInfo = new DirectoryInfo(Path.Combine(installFolder, "Templates\\"));
                DirectoryInfo targetInfo = new DirectoryInfo(drow.Templates);
                Util.CopyDirectory(sourceInfo, targetInfo);
            }
            //if (!Directory.Exists(drow.Samples))
            //{
            //    Directory.CreateDirectory(drow.Samples);
            //    DirectoryInfo sourceInfo = new DirectoryInfo(Path.Combine(installFolder, "Resources\\Samples\\"));
            //    DirectoryInfo targetInfo = new DirectoryInfo(drow.Samples);
            //    Util.CopyDirectory(sourceInfo, targetInfo);
            //}
            if (!Directory.Exists(drow.Project) && Directory.Exists(Path.Combine(installFolder, "Projects\\")))
            {
                Directory.CreateDirectory(drow.Project);
                DirectoryInfo sourceInfo = new DirectoryInfo(Path.Combine(installFolder, "Projects\\"));
                DirectoryInfo targetInfo = new DirectoryInfo(drow.Project);
                Util.CopyDirectory(sourceInfo, targetInfo);
            }
            if (!Directory.Exists(drow.LogDir) && Directory.Exists(Path.Combine(installFolder, "Logs\\")))
            {
                Directory.CreateDirectory(drow.LogDir);
                DirectoryInfo sourceInfo = new DirectoryInfo(Path.Combine(installFolder, "Logs\\"));
                DirectoryInfo targetInfo = new DirectoryInfo(drow.LogDir);
                Util.CopyDirectory(sourceInfo, targetInfo);
            }

            Config.VersionRow vrow = configDataSet.Version.NewVersionRow();
            vrow.EpiInfoVersion = typeof(Configuration).Assembly.GetName().Version.Major;
            vrow.ConfigVersion = CurrentSchemaVersion;
            configDataSet.Version.Rows.Add(vrow);

            Config.RecentViewRow recentviewrow1 = configDataSet.RecentView.NewRecentViewRow();
            recentviewrow1.Name = drow.Project + "Mumps\\Mumps.prj:Survey";
            recentviewrow1.Location = drow.Project + "Mumps\\Mumps.prj:Survey";
            recentviewrow1.LastAccessed = DateTime.Now;
            configDataSet.RecentView.Rows.Add(recentviewrow1);

            Config.RecentViewRow recentviewrow2 = configDataSet.RecentView.NewRecentViewRow();
            recentviewrow2.Name = drow.Project + "HIV\\HIV.prj:Case";
            recentviewrow2.Location = drow.Project + "HIV\\HIV.prj:Case";
            recentviewrow2.LastAccessed = DateTime.Now;
            configDataSet.RecentView.Rows.Add(recentviewrow2);

            Config.RecentViewRow recentviewrow3 = configDataSet.RecentView.NewRecentViewRow();
            recentviewrow3.Name = drow.Project + "EColi\\EColi.prj:FoodHistory";
            recentviewrow3.Location = drow.Project + "EColi\\EColi.prj:FoodHistory";
            recentviewrow3.LastAccessed = DateTime.Now;
            configDataSet.RecentView.Rows.Add(recentviewrow3);

            Config.RecentProjectRow recentprojectrow = configDataSet.RecentProject.NewRecentProjectRow();
            recentprojectrow.Name = "Sample";
            recentprojectrow.Location = drow.Project + "Sample\\Sample.prj";
            recentprojectrow.LastAccessed = DateTime.Now;
            configDataSet.RecentProject.Rows.Add(recentprojectrow);

            Config.SettingsRow row = configDataSet.Settings.NewSettingsRow();
            row.BackgroundImage = string.Empty;
            row.MRUProjectsCount = 4;
            row.MRUViewsCount = 4;
            row.MRUDataSourcesCount = 5;
            row.Language = "en-US";
            row.Republish_IsRepbulishable = true;
            row.Republish_RequireSecurityKey = false;
            row.RepresentationOfYes = "Yes";
            row.RepresentationOfNo = "No";
            row.RepresentationOfMissing = "Missing";
            row.DateFormat = @"MM-DD-YYYY";
            row.TimeFormat = @"HH:MM:SS AMPM";
            row.DateTimeFormat = @"MM-DD-YYYY HH:MM:SS AMPM";
            row.StatisticsLevel = 4;
            row.RecordProcessingScope = 1;
            row.ShowCompletePrompt = true;
            row.ShowSelection = true;
            row.ShowGraphics = true;
            row.ShowPercents = true;
            row.ShowHyperlinks = true;
            row.ShowTables = true;
            row.IncludeMissingValues = false;
            row.SnapToGrid = true;
            row.EditorFontName = "Verdana";
            row.EditorFontSize = 8.25M;
            row.ControlFontName = "Arial";
            row.ControlFontSize = 10.25M;
            row.ShowStatusBar = true;
            row.PrecisionForStatistics = 2;
            row.MapServiceKey = "Aua5s8kFcEZMx5lsd8Vkerz3frboU1CwzvOyzX_vgSnzsnbqV7xlQ4WTRUlN19_Q";
            row.LastAlertDate = new DateTime(2011, 9, 23);
            row.WebServiceAuthMode = 0; // 0 = Anon, 1 = NT
            row.EWEServiceAuthMode = 0; // 0 = Anon, 1 = NT
            row.WebServiceEndpointAddress = string.Empty;
            row.EWEServiceEndpointAddress = string.Empty;
            row.WebServiceBindingMode = "BASIC";
            row.WebServiceMaxBufferPoolSize = 524288;
            row.WebServiceMaxReceivedMessageSize = 999999999;
            row.WebServiceReaderMaxDepth = 32;
            row.WebServiceReaderMaxStringContentLength = 2048000;
            row.WebServiceReaderMaxArrayLength = 16384;
            row.WebServiceReaderMaxBytesPerRead = 4096;
            row.WebServiceReaderMaxNameTableCharCount = 16384;
            row.EWEServiceBindingMode = "BASIC";
            row.EWEServiceMaxBufferPoolSize = 524288;
            row.EWEServiceMaxReceivedMessageSize = 999999999;
            row.EWEServiceReaderMaxDepth = 32;
            row.EWEServiceReaderMaxStringContentLength = 2048000;
            row.EWEServiceReaderMaxArrayLength = 16384;
            row.EWEServiceReaderMaxBytesPerRead = 4096;
            row.EWEServiceReaderMaxNameTableCharCount = 16384;
            row.DashboardFrequencyRowLimit = 200;
            row.DashboardFrequencyStrataLimit = 100;
            row.DashboardFrequencyCrosstabLimit = 100;
            row.DashboardCombinedFrequencyRowLimit = 250;
            row.DashboardAberrationRowLimit = 366;
            row.DashboardLineListRowLimit = 2000;

            #if LINUX_BUILD
            row.DefaultDataDriver = MySQLDriver;
            #else
            row.DefaultDataDriver = AccessDriver;
            #endif

            row.DefaultDataFormatForRead = 3;
            row.FrameworkTcpPort = 11532;
            configDataSet.Settings.Rows.Add(row);

            // Data Drivers
            Config.DataDriversRow parentDataDriversRow = configDataSet.DataDrivers.NewDataDriversRow();
            configDataSet.DataDrivers.Rows.Add(parentDataDriversRow);

            // Access driver
            Config.DataDriverRow dataDriverRow1 = configDataSet.DataDriver.NewDataDriverRow();
            dataDriverRow1.DataDriversRow = parentDataDriversRow;
            dataDriverRow1.DisplayName = "Microsoft Access 2002-2003 (.mdb)";
            dataDriverRow1.Type = AccessDriver;
            dataDriverRow1.DataProvider = true;
            dataDriverRow1.MetadataProvider = true;
            configDataSet.DataDriver.Rows.Add(dataDriverRow1);

            Config.DataDriverRow dataDriverRow3 = configDataSet.DataDriver.NewDataDriverRow();
            dataDriverRow3.DataDriversRow = parentDataDriversRow;
            dataDriverRow3.DisplayName = "Microsoft Access 2007 (.accdb)";
            dataDriverRow3.Type = Access2007Driver;
            dataDriverRow3.DataProvider = true;
            dataDriverRow3.MetadataProvider = false;
            configDataSet.DataDriver.Rows.Add(dataDriverRow3);

            // Excel driver
            Config.DataDriverRow dataDriverRowExcel = configDataSet.DataDriver.NewDataDriverRow();
            dataDriverRowExcel.DataDriversRow = parentDataDriversRow;
            // Excel Workbook (*.xlsx)
            // Microsoft Excel 5.0/95 Workbook (*.xls)
            // Excel 97 - Excel 2003 Workbook (*.xls)
            dataDriverRowExcel.DisplayName = "Microsoft Excel 97-2003 Workbook (.xls)";
            dataDriverRowExcel.Type = ExcelDriver;
            dataDriverRowExcel.DataProvider = true;
            dataDriverRowExcel.MetadataProvider = false;
            configDataSet.DataDriver.Rows.Add(dataDriverRowExcel);

            Config.DataDriverRow dataDriverRowExcel2007 = configDataSet.DataDriver.NewDataDriverRow();
            dataDriverRowExcel2007.DataDriversRow = parentDataDriversRow;
            dataDriverRowExcel2007.DisplayName = "Microsoft Excel 2007 Workbook (.xlsx)";
            dataDriverRowExcel2007.Type = Excel2007Driver;
            dataDriverRowExcel2007.DataProvider = true;
            dataDriverRowExcel2007.MetadataProvider = false;
            configDataSet.DataDriver.Rows.Add(dataDriverRowExcel2007);

            // SQL Server driver
            Config.DataDriverRow dataDriverRow2 = configDataSet.DataDriver.NewDataDriverRow();
            dataDriverRow2.DataDriversRow = parentDataDriversRow;
            dataDriverRow2.DisplayName = "Microsoft SQL Server Database";
            dataDriverRow2.Type = SqlDriver;
            dataDriverRow2.DataProvider = true;
            dataDriverRow2.MetadataProvider = true;
            configDataSet.DataDriver.Rows.Add(dataDriverRow2);

            Config.DataDriverRow dataDriverRowCsv = configDataSet.DataDriver.NewDataDriverRow();
            dataDriverRowCsv.DataDriversRow = parentDataDriversRow;
            dataDriverRowCsv.DisplayName = "Flat ASCII File";
            dataDriverRowCsv.Type = CsvDriver;
            dataDriverRowCsv.DataProvider = true;
            dataDriverRowCsv.MetadataProvider = false;
            configDataSet.DataDriver.Rows.Add(dataDriverRowCsv);

            Config.DataDriverRow dataDriverRowMySql = configDataSet.DataDriver.NewDataDriverRow();
            dataDriverRowMySql.DataDriversRow = parentDataDriversRow;
            dataDriverRowMySql.DisplayName = "MySQL Database";
            dataDriverRowMySql.Type = MySQLDriver;
            dataDriverRowMySql.DataProvider = true;
            dataDriverRowMySql.MetadataProvider = false;
            configDataSet.DataDriver.Rows.Add(dataDriverRowMySql);

            Config.DataDriverRow dataDriverRowPostgreSql = configDataSet.DataDriver.NewDataDriverRow();
            dataDriverRowPostgreSql.DataDriversRow = parentDataDriversRow;
            dataDriverRowPostgreSql.DisplayName = "PostgreSQL Database";
            dataDriverRowPostgreSql.Type = PostgreSQLDriver;
            dataDriverRowPostgreSql.DataProvider = true;
            dataDriverRowPostgreSql.MetadataProvider = false;
            configDataSet.DataDriver.Rows.Add(dataDriverRowPostgreSql);

            //// MySQLDriver Driver
            //Config.DataDriverRow dataDriverRow3 = configDataSet.DataDriver.NewDataDriverRow();
            //dataDriverRow3.DataDriversRow = parentDataDriversRow;
            //dataDriverRow3.DisplayName = "MySQL Database";
            //dataDriverRow3.Type = MySQLDriver;
            //configDataSet.DataDriver.Rows.Add(dataDriverRow3);

            /*
             * KKM4: Disabled Excel drivers for the time being.
            dataDriverRow = configDataSet.DataDriver.NewDataDriverRow();
            dataDriverRow.DataDriversRow = parentDataDriversRow;
            dataDriverRow.DisplayName = "Microsoft Excel Spreadsheet";
            dataDriverRow.Type = "Epi.Data.Office.ExcelWorkbook, Epi.Data.Office";
            configDataSet.DataDriver.Rows.Add(dataDriverRow);
             */

            // Connections
            Config.ConnectionsRow connectionsRow = configDataSet.Connections.NewConnectionsRow();
            configDataSet.Connections.Rows.Add(connectionsRow);

            Config.FileRow fileRow;

            fileRow = configDataSet.File.NewFileRow();
            fileRow.ConnectionsRow = connectionsRow;
            fileRow.DataDriver = AccessDriver; // "Epi.Data.Office.AccessDatabase, Epi.Data.Office";
            fileRow.Extension = ".mdb";
            configDataSet.File.Rows.Add(fileRow);

            fileRow = configDataSet.File.NewFileRow();
            fileRow.ConnectionsRow = connectionsRow;
            fileRow.DataDriver = AccessDriver; // "Epi.Data.Office.AccessDatabase, Epi.Data.Office";
            fileRow.Extension = ".accdb";
            configDataSet.File.Rows.Add(fileRow);

            fileRow = configDataSet.File.NewFileRow();
            fileRow.ConnectionsRow = connectionsRow;
            fileRow.DataDriver = ExcelDriver; // "Epi.Data.Office.ExcelWorkbook, Epi.Data.Office";
            fileRow.Extension = ".xls";
            configDataSet.File.Rows.Add(fileRow);

            fileRow = configDataSet.File.NewFileRow();
            fileRow.ConnectionsRow = connectionsRow;
            fileRow.DataDriver = ExcelDriver; // "Epi.Data.Office.ExcelWorkbook, Epi.Data.Office";
            fileRow.Extension = ".xlsx";
            configDataSet.File.Rows.Add(fileRow);

            Config.DatabaseRow dbRow;

            // AppData MDB is not required any more.
            //dbRow = configDataSet.Database.NewDatabaseRow();
            //dbRow.ConnectionsRow = connectionsRow;
            //dbRow.Name = Epi.Data.DbDriverFactoryCreator.KnownDatabaseNames.AppData;
            //dbRow.DataDriver = AccessDriver; // "Epi.Data.Office.AccessDatabase, Epi.Data.Office";
            //dbRow.ConnectionString = Path.Combine(Path.Combine(installFolder, "Resources\\AppData\\"), "AppData.mdb");
            //configDataSet.Database.Rows.Add(dbRow);

            //PHIN VS database
            dbRow = configDataSet.Database.NewDatabaseRow();
            dbRow.ConnectionsRow = connectionsRow;
            dbRow.Name = Epi.Data.DbDriverFactoryCreator.KnownDatabaseNames.Phin;
            dbRow.DataDriver = AccessDriver; // "Epi.Data.Office.AccessDatabase, Epi.Data.Office";
            dbRow.ConnectionString = Path.Combine(Path.Combine(writableFilesFolder, "Resources\\PHIN\\"), "PHINVS.mdb");
            configDataSet.Database.Rows.Add(dbRow);

            if (!Directory.Exists(Path.Combine(writableFilesFolder, "Resources\\PHIN\\")))
            {
                Directory.CreateDirectory(Path.Combine(writableFilesFolder, "Resources\\PHIN\\"));
                DirectoryInfo sourceInfo = new DirectoryInfo(Path.Combine(installFolder, "Resources\\PHIN\\"));
                DirectoryInfo targetInfo = new DirectoryInfo(Path.Combine(writableFilesFolder, "Resources\\PHIN\\"));
                Util.CopyDirectory(sourceInfo, targetInfo);
            }

            // Translation database
            dbRow = configDataSet.Database.NewDatabaseRow();
            dbRow.ConnectionsRow = connectionsRow;
            dbRow.Name = Epi.Data.DbDriverFactoryCreator.KnownDatabaseNames.Translation;
            dbRow.DataDriver = AccessDriver; // "Epi.Data.Office.AccessDatabase, Epi.Data.Office";
            dbRow.ConnectionString = Path.Combine(configFolder, "Translations.mdb");
            configDataSet.Database.Rows.Add(dbRow);

            Config.ModulesRow parentModulesRow = configDataSet.Modules.NewModulesRow();
            configDataSet.Modules.Rows.Add(parentModulesRow);

            Config.ModuleRow moduleRow;

            moduleRow = configDataSet.Module.NewModuleRow();
            moduleRow.ModulesRow = parentModulesRow;
            moduleRow.Name = "MENU";
            moduleRow.Type = "Epi.Windows.Menu.MenuWindowsModule, Menu";
            configDataSet.Module.Rows.Add(moduleRow);

            moduleRow = configDataSet.Module.NewModuleRow();
            moduleRow.ModulesRow = parentModulesRow;
            moduleRow.Name = "MAKEVIEW";
            moduleRow.Type = "Epi.Windows.MakeView.MakeViewWindowsModule, MakeView";
            configDataSet.Module.Rows.Add(moduleRow);

            moduleRow = configDataSet.Module.NewModuleRow();
            moduleRow.ModulesRow = parentModulesRow;
            moduleRow.Name = "ENTER";
            moduleRow.Type = "Epi.Windows.Enter.EnterWindowsModule, Enter";
            configDataSet.Module.Rows.Add(moduleRow);

            moduleRow = configDataSet.Module.NewModuleRow();
            moduleRow.ModulesRow = parentModulesRow;
            moduleRow.Name = "ANALYSIS";
            moduleRow.Type = "Epi.Windows.Analysis.AnalysisWindowsModule, Analysis";
            configDataSet.Module.Rows.Add(moduleRow);

            moduleRow = configDataSet.Module.NewModuleRow();
            moduleRow.ModulesRow = parentModulesRow;
            moduleRow.Name = "EPIMAP";
            moduleRow.Type = "Epi.Windows.EpiMap.EpiMapWindowsModule, EpiMap";
            configDataSet.Module.Rows.Add(moduleRow);

            moduleRow = configDataSet.Module.NewModuleRow();
            moduleRow.ModulesRow = parentModulesRow;
            moduleRow.Name = "EPIREPORT";
            moduleRow.Type = "Epi.Windows.EpiReport.EpiReportWindowsModule, EpiReport";
            configDataSet.Module.Rows.Add(moduleRow);

            moduleRow = configDataSet.Module.NewModuleRow();
            moduleRow.ModulesRow = parentModulesRow;
            moduleRow.Name = "Localization";
            moduleRow.Type = "Epi.Windows.Localization.LocalizationWindowsModule, TSetup";
            configDataSet.Module.Rows.Add(moduleRow);

            return new Configuration(DefaultConfigurationPath, configDataSet);
        }
Exemplo n.º 3
0
        private static Config.RecentViewRow GetOldestRecentView(Config.RecentViewDataTable mruViews)
        {
            Config.RecentViewRow oldestView = null;

            if (mruViews.Count > 0)
            {
                oldestView = mruViews[0];
                for (int index = 1; index < mruViews.Count; index++)
                {
                    Config.RecentViewRow thisView = mruViews[index];
                    if (thisView.LastAccessed < oldestView.LastAccessed)
                    {
                        oldestView = thisView;
                    }
                }
            }
            return oldestView;
        }
Exemplo n.º 4
0
 private static Config.RecentProjectRow GetOldestRecentProject(Config.RecentProjectDataTable mruProjects)
 {
     Config.RecentProjectRow oldestProject = null;
     if (mruProjects.Count > 0)
     {
         oldestProject = mruProjects[0];
         for (int index = 1; index < mruProjects.Count; index++)
         {
             Config.RecentProjectRow thisProject = mruProjects[index];
             if (thisProject.LastAccessed < oldestProject.LastAccessed)
             {
                 oldestProject = thisProject;
             }
         }
     }
     return oldestProject;
 }
Exemplo n.º 5
0
        private static Config.RecentDataSourceRow GetOldestRecentDataSource(Config.RecentDataSourceDataTable mruSources)
        {
            Config.RecentDataSourceRow oldestSource = null;

            if (mruSources.Count > 0)
            {
                oldestSource = mruSources[0];
                for (int index = 1; index < mruSources.Count; index++)
                {
                    Config.RecentDataSourceRow thisSource = mruSources[index];
                    if (thisSource.LastAccessed < oldestSource.LastAccessed)
                    {
                        oldestSource = thisSource;
                    }
                }
            }
            return oldestSource;
        }
Exemplo n.º 6
0
        /// <summary>
        /// What to do when a gadget plug-in has been selected for import
        /// </summary>        
        public static void OnGadgetImport(string displayName, string type, string fileName, int menuSection)
        {
            AssertConfigurationLoaded();
            #region Input Validation

            // All public methods should assert that configuration has been loaded
            AssertConfigurationLoaded();

            if (string.IsNullOrEmpty(displayName))
            {
                throw new System.ArgumentNullException("displayName");
            }
            if (string.IsNullOrEmpty(type))
            {
                throw new System.ArgumentNullException("type");
            }
            if (string.IsNullOrEmpty(fileName))
            {
                throw new System.ArgumentNullException("fileName");
            }
            #endregion Input Validation

            Config configDataSet = new Config();

            Config.GadgetsDataTable mruGadgets = current.Gadgets;
            Config.GadgetDataTable mruGadget = current.Gadget;

            // Check if this gadget is already in the config
            bool sourceFound = false;
            foreach (Config.GadgetRow mruGadgetRow in mruGadget.Rows)
            {
                if (mruGadgetRow.Type.ToLower().Equals(type.ToLower()))
                {
                    //Found the gadget
                    sourceFound = true;
                }
            }

            if (sourceFound == false)
            {
                // Data Drivers

                if (configDataSet.Gadgets.Count < 1)
                {
                    Config.GadgetsRow newrow = mruGadgets.NewGadgetsRow();
                    //configDataSet.Gadgets.Rows.Add(newrow);
                    mruGadgets.AddGadgetsRow(newrow);
                }

                Config.GadgetsRow parentGadgetsRow = mruGadgets[0];

                // this is a new gadget
                Config.GadgetRow gadgetRow = mruGadget.NewGadgetRow();
                gadgetRow.GadgetsRow = parentGadgetsRow;
                gadgetRow.DisplayName = displayName;
                gadgetRow.Type = type;
                gadgetRow.FileName = fileName;
                gadgetRow.MenuSection = menuSection;
                mruGadget.AddGadgetRow(gadgetRow);
            }

            Save();
        }
Exemplo n.º 7
0
        /// <summary>
        /// Loads Config information from the XML file.
        /// </summary>
        public static void Load(string filePath)
        {
            if (string.IsNullOrEmpty(filePath))
            {
                throw new ArgumentNullException("filePath");
            }

            Config configDataSet = new Config();
            string configFilePath = filePath;

            try
            {

                // prevent this method from being called concurrently
                System.Threading.Monitor.Enter(syncLock);

                StopWatchingForChanges();

                if (!File.Exists(configFilePath))
                {
                    //throw new FileNotFoundException("Configuration file not found.", configFilePath);
                }
                else
                {

                    XmlDocument doc = new XmlDocument();
                    doc.Load(configFilePath);

                    XmlNode versionNode = doc.DocumentElement.SelectSingleNode("/Config/Version");
                    int configFileVersion = int.Parse(versionNode.Attributes.GetNamedItem("ConfigVersion").Value);

                    // Validate configuration ...
                    if (configFileVersion == Configuration.CurrentSchemaVersion)
                    {
                        configDataSet = new Config();
                        configDataSet.ReadXml(configFilePath);
                        current = new Configuration(configFilePath, configDataSet);
                    }
                    else if (configFileVersion > Configuration.CurrentSchemaVersion)
                    {
                        throw new ConfigurationException(ConfigurationException.ConfigurationIssue.HigherVersion);
                    }
                    else
                    {
                        throw new ConfigurationException(ConfigurationException.ConfigurationIssue.LowerVersion);
                    }
                }
            }
            catch (ConfigurationException)
            {
                throw;
            }
            catch (Exception ex)
            {
                current = null;
                throw new ConfigurationException(ConfigurationException.ConfigurationIssue.ContentsInvalid, ex);
            }
            finally
            {
                BeginWatchingForChanges();
                System.Threading.Monitor.Exit(syncLock);
            }
        }