示例#1
0
        public ModuleMainForm()
        {
            string templateFolder;

            InitializeComponent();

            try
            {
                // init mode settings
                Settings.Init();
                Settings.Setting.LoadFromFile(Common.BuildPath(GenericTemplate.moduleParams.DataPath, GenericTemplate.constModuleDataFolder) + Settings.FILE_NAME);

                // init and load tagsStorage object
                TagsLoader tagsLoader = new TagsLoader(Common.BuildPath(GenericTemplate.moduleParams.DataPath, GenericTemplate.constModuleDataFolder) + GenericTemplate.constTagsXMLFileName);
                this.tagsStorage = tagsLoader.LoadTags();

                // WindwosTools controls
                twtToolsWindowsTemplates = new ToolsWindowsTemplates();
                twttoolsWindowsTags      = new ToolsWindowsTags(this.tagsStorage);
                twttoolsWindowsTags.AddControl(tbtemplateHeader);
                twttoolsWindowsTags.AddControl(tbtemplateBody);
                twttoolsWindowsTags.AddControl(tbtemplateFooter);
                twttoolsWindowsTags.AddControl(tbTemplateVariables);
                twttoolsWindowsTags.AddControl(tbTemplateComment);
                twttoolsWindowsTags.AddControl(tbFileDestinationFolder);
                twttoolsWindowsTags.AddControl(tbFileDestinationFile);

                // general default settings
                cbDataDestination.SelectedIndex = 0;

                // set icon
                this.Icon = global::UberTools.Modules.GenericTemplate.Properties.Resources.WindowsTable;

                // create settings menager object and add all controls
                templateFolder  = Common.BuildPath(GenericTemplate.moduleParams.DataPath, GenericTemplate.constModuleDataFolder, GenericTemplate.constTemplateFolder);
                settingsMenager = new SettingsMenager();
                settingsMenager.Add(tbtemplateBody);
                settingsMenager.Add(tbtemplateHeader);
                settingsMenager.Add(tbtemplateFooter);
                settingsMenager.Add(tbTemplateVariables);
                settingsMenager.Add(tbTemplateComment);
                settingsMenager.Add(tbFileDestinationFolder);
                settingsMenager.Add(tbFileDestinationFile);
                settingsMenager.Add(chbDestinationFileAppend);
                settingsMenager.Add(cbDataDestination);
                settingsMenager.Add(cbEncoding);

                //// create settings menager version 2 object and add all controls
                settingsMenager2 = new SettingsMenager2(GenericTemplate.constModuleName, "UberToolsModule", "1.0.0.0");
                //settingsMenager2.Items.Add(new SettingsMenagerStructure2(tbtemplateBody, "tbtemplateBody", SettingsMenager2.Type.Textbox));
                settingsMenager2.Refresh += new EventHandler(settingsMenager2_Refresh);
                settingsMenager2.Update  += new EventHandler(settingsMenager2_Update);

                // new instance template menager
                templatesMenager = new TemplatesManager(twtToolsWindowsTemplates.TreeViewControl, templateFolder, settingsMenager, settingsMenager2);
                this.twtToolsWindowsTemplates.ImageListControl = this.ilGeneral;
                templatesMenager.LoadAll();

                // set templateMenager to templateControl
                twtToolsWindowsTemplates.TemplatesMenager      = templatesMenager;
                this.twtToolsWindowsTemplates.ImageListControl = this.ilGeneral;

                // Create new rowCollection object and bound it to container
                rowCollectionMenager = new RowCollectionMenager(panel1, this.settingsMenager2);
                foreach (EncodingMenager encoding in EncodingMenager.GetEnumerator())
                {
                    cbEncoding.Items.Add(encoding);
                }
                cbEncoding.SelectedIndex = cbEncoding.Items.Count - 2;

                // new instance of hoveringwindows
                autoComplete = new AutoComplete(this, this.tagsStorage);
                autoComplete.AddControl(tbtemplateHeader);
                autoComplete.AddControl(tbtemplateBody);
                autoComplete.AddControl(tbtemplateFooter);
                autoComplete.AddControl(tbTemplateVariables);
                autoComplete.AddControl(tbTemplateComment);
                autoComplete.AddControl(tbFileDestinationFolder);
                autoComplete.AddControl(tbFileDestinationFile);

                //// syntax color init
                //colorMenager = new ColorMenager_old();
                //colorMenager.Controls.Add(tbTemplateVariables);

                // SyntaxHighlightingMenager settings
                syntaxHighlightingMenager = new SyntaxHighlightingMenager(tagsStorage);
                syntaxHighlightingMenager.Controls.Add(tbTemplateVariables);
                syntaxHighlightingMenager.Controls.Add(tbtemplateBody);
                syntaxHighlightingMenager.Controls.Add(tbtemplateHeader);
                syntaxHighlightingMenager.Controls.Add(tbtemplateFooter);
                syntaxHighlightingMenager.Controls.Add(tbFileDestinationFolder);
                syntaxHighlightingMenager.Controls.Add(tbFileDestinationFile);


                // load last loadet template
                if (Settings.Setting.LoadSetting(Settings.SettingName.ActiveTemplateName.ToString(), "") != "")
                {
                    templatesMenager.Load(Settings.Setting.LoadSetting(Settings.SettingName.ActiveTemplateName.ToString(), ""));
                }
            }
            catch (Exception ex)
            {
                ModuleLog.Write(ex, this, "ModuleMainForm", ModuleLog.LogType.ERROR);
            }
        }
示例#2
0
        private static void Main(string[] args)
        {
            PIConnection piConnection;
            var          _logger = LogManager.GetLogger(typeof(Program));


            try
            {
                var options = new CommandLineOptions();


                if (Parser.Default.ParseArguments(args, options))
                {
                    ValidateSettings(options);

                    var readerSettings = new DataReaderSettings();

                    if (options.Server.Length == 1)
                    {
                        piConnection = new PIConnection(options.Server[0]);
                    }
                    else
                    {
                        piConnection = new PIConnection(options.Server[0], options.Server[1]);
                    }

                    if (options.testTagSearch != null && options.testTagSearch.Length > 0)
                    {
                        _logger.Info("Search test started...");

                        piConnection.Connect();

                        var search = new TagsLoader(piConnection.GetPiServer());
                        foreach (var s in options.testTagSearch)
                        {
                            var tags = search.Search(s).ToList();
                            _logger.WarnFormat("Found {0} tags with query {1}", tags.Count, s);

                            if (options.testTagSearchPrintAllTags)
                            {
                                tags.ForEach(t => _logger.InfoFormat("Tag: {0}, PointClass: {1}", t.Name, t.PointClass));
                            }
                        }
                    }

                    if (options.TagQueries != null && options.TagQueries.Length > 0)
                    {
                        _logger.Info("Data reader starting...");


                        piConnection.Connect();

                        if (options.EventsPerDay > 0 && options.TagsCount > 0)
                        {
                            // var type = options.UseParallel? DataReaderSettings.ReadingType.Parallel: DataReaderSettings.ReadingType.Bulk;
                            var type = DataReaderSettings.ReadingType.Bulk;
                            readerSettings.AutoTune(type, options.EventsPerDay, options.TagsCount, options.EventsPerRead);
                        }


                        // starts the data writer


                        // settings data filters to filter out the data if option is specified
                        var filtersFactory = new FiltersFactory();
                        if (options.RemoveDuplicates)
                        {
                            filtersFactory.AddFilter(new DuplicateValuesFilter());
                        }


                        if (options.FilterDigitalStates)
                        {
                            filtersFactory.AddFilter(new SystemStatesFilter());
                        }


                        _logger.Info("Creating worker objects...");
                        var dataWriter = new DataWriter(options.OutfileName, options.EventsPerFile, options.WritersCount, filtersFactory);

                        var dataReader = new DataReaderBulk(readerSettings, dataWriter, options.EnableWrite);

                        //dataReader = options.UseParallel
                        //    ? (IDataReader) new DataReaderParallel(readerSettings, dataWriter)
                        //    : new DataReaderBulk(readerSettings, dataWriter);

                        var orchestrator = new Orchestrator(options.StartTime, options.EndTime,
                                                            readerSettings.TimeIntervalPerDataRequest, dataReader);

                        var tagsLoader = new TagsLoader(piConnection.GetPiServer(), options.TagQueries,
                                                        readerSettings.TagGroupSize, orchestrator);

                        var statistics = new Statistics();

                        // starts the orchestrator
                        _logger.Info("Starting workers...");
                        var tagsLoaderTask = tagsLoader.Run();
                        var writerTask     = dataWriter.Run();

                        // var processorTask = dataProcessor.Run(); -- not using this after determining this was not bringing much performance gain.
                        var orchestratorTask = orchestrator.Run();
                        var dataReaderTask   = dataReader.Run();
                        var statsTask        = statistics.Run();


                        // starts the data reader
                        Task.WaitAll(orchestratorTask, writerTask, dataReaderTask, tagsLoaderTask);

                        statistics.Stop();

                        Task.WaitAll(statsTask);

                        _logger.Info("All tasks completed successfully");
                    }


                    // DEBUG
                    //  Console.ReadKey();

                    // exit ok
                    Environment.Exit(0);
                }
                else
                {
                    // exit with error
                    Environment.Exit(1);
                }
            }


            catch (Exception ex)
            {
                _logger.Error(ex);
            }
        }