// This method gets called by the runtime. Use this method to add services to the container.
        public void ConfigureServices(IServiceCollection services)
        {
            services
            .AddMvc(options => options.EnableEndpointRouting = false)
            .SetCompatibilityVersion(CompatibilityVersion.Latest)
            .AddMvcOptions(options =>
            {
                options.ModelBinderProviders.Insert(0, new FilterModelBinderProvider());
            });
            services.Configure <ApiSettings>(Configuration.GetSection("ApiSettings"));
            services.AddSingleton <ILog>(sp =>
                                         new FileLog(sp.GetService <IOptions <ApiSettings> >().Value.FileLogSettings));
            services.AddSingleton <IImageProcessService, ImageProcessService>();

            services.AddSingleton <IFiltersFactory>(sp =>
            {
                var factory = new FiltersFactory();
                factory.RegisterFilter("threshold", new ThresholdFilter(sp.GetService <ILog>()));
                factory.RegisterFilter("sepia", new SepiaFilter());
                factory.RegisterFilter("grayscale", new GrayscaleFilter());
                return(factory);
            });

            services.AddSingleton(sp =>
            {
                var resolver = new FilterByRouteResolver(sp.GetService <IFiltersFactory>());
                resolver.AddRouteValidator(@"(?<FilterName>threshold)\((?<params>[0-9]{1,3})\)");
                resolver.AddRouteValidator(@"(?<FilterName>sepia)");
                resolver.AddRouteValidator(@"(?<FilterName>grayscale)");
                return(resolver);
            });
            services.AddSingleton <IFilterByRouteResolver>(sp => sp.GetService <FilterByRouteResolver>());
            services.AddSingleton <IParamsFromRouteExtractor>(sp => sp.GetService <FilterByRouteResolver>());
        }
Beispiel #2
0
        public void CreateStatUserRegistrationFiltersTest()
        {
            //Arrange
            const string portalUri = "portalUri";

            var filtersFactory = new FiltersFactory(portalUri);

            //Act
            var statUserRegistrationFilters = filtersFactory.CreateStatUserRegistrationFilters();

            //Assert
            Assert.AreEqual(21, statUserRegistrationFilters.Count);
            Assert.IsInstanceOfType(statUserRegistrationFilters[0], typeof(AllRegistrationsFilter));
            Assert.IsInstanceOfType(statUserRegistrationFilters[1], typeof(CicIPadRegistrationsFilter));
            Assert.IsInstanceOfType(statUserRegistrationFilters[2], typeof(CicMacRegistrationsFilter));
            Assert.IsInstanceOfType(statUserRegistrationFilters[3], typeof(CicPcRegistrationsFilter));
            Assert.IsInstanceOfType(statUserRegistrationFilters[4], typeof(EmailRegistrationsFilter));
            Assert.IsInstanceOfType(statUserRegistrationFilters[5], typeof(FacebookRegistrationsFilter));
            Assert.IsInstanceOfType(statUserRegistrationFilters[6], typeof(GoogleRegistrationsFilter));
            Assert.IsInstanceOfType(statUserRegistrationFilters[7], typeof(ImageShackRegistrationsFilter));
            Assert.IsInstanceOfType(statUserRegistrationFilters[8], typeof(TaggerIPhoneRegistrationsFilter));
            Assert.IsInstanceOfType(statUserRegistrationFilters[9], typeof(WindowsLiveRegistrationsFilter));
            Assert.IsInstanceOfType(statUserRegistrationFilters[10], typeof(YahooRegistrationsFilter));
            Assert.IsInstanceOfType(statUserRegistrationFilters[11], typeof(TwitterRegistrationsFilter));
            Assert.IsInstanceOfType(statUserRegistrationFilters[12], typeof(TaggerAndroidRegistrationsFilter));
            Assert.IsInstanceOfType(statUserRegistrationFilters[13], typeof(StandaloneRegistrationsFilter));
            Assert.IsInstanceOfType(statUserRegistrationFilters[14], typeof(PlayerRegistrationsFilter));
            Assert.IsInstanceOfType(statUserRegistrationFilters[15], typeof(BrowserRegistrationsFilter));
            Assert.IsInstanceOfType(statUserRegistrationFilters[16], typeof(OtherRegistrationsFilter));
            Assert.IsInstanceOfType(statUserRegistrationFilters[17], typeof(DailyMotionRegistrationsFilter));
            Assert.IsInstanceOfType(statUserRegistrationFilters[18], typeof(VkRegistrationsFilter));
            Assert.IsInstanceOfType(statUserRegistrationFilters[19], typeof(JwPlayerRegistrationsFilter));
            Assert.IsInstanceOfType(statUserRegistrationFilters[20], typeof(OdnoklassnikiRegistrationsFilter));
        }
        /// <summary>
        /// Retrieve the authorizations definition list with pagination
        /// </summary>
        /// <param name="query">Query page parameters</param>
        /// <returns>Paged authorizations data</returns>
        public async Task <PagedData <dynamic> > GetAsync(PageQuery query)
        {
            using (var connection = new SqlConnection(_connectionString))
            {
                connection.Open();

                // Getting filters values
                var sqlFilters = FiltersFactory.ConvertColumnFilters(query.Filters);

                // Configuring filters with wildcards to match substrings also
                var name      = sqlFilters.FirstOrDefault(i => i.Name == "name")?.Value;
                var nameValue = string.IsNullOrEmpty(name) ? string.Empty : $"%{name}%";

                var count = await connection.QueryAsync <int>(
                    $"SELECT COUNT(*) FROM IdentityContext.def_authorizations " +
                    ((!string.IsNullOrEmpty(nameValue)) ? "AND Name like @nameValue " : ""),
                    new
                {
                    nameValue
                }
                    );

                var startRow = query.PageNumber > 0 ? (query.Size * query.PageNumber) + 1 : 1;
                var endRow   = startRow + query.Size;

                var result = await connection.QueryAsync <dynamic>(
                    $@"SELECT * FROM ( " +
                    $"SELECT ROW_NUMBER() OVER ( ORDER BY Name ) AS RowNum, * FROM IdentityContext.def_authorizations " +
                    ((!string.IsNullOrEmpty(nameValue)) ? "AND name like @nameValue " : "") +
                    ") AS RowConstrainedResult WHERE RowNum >= @startRow AND RowNum < @endRow ORDER BY RowNum",
                    new
                {
                    nameValue,
                    startRow,
                    endRow
                }
                    );

                // Update pagination data
                query.TotalElements = count.First();
                query.TotalPages    = query.TotalElements / query.Size;

                return(new PagedData <dynamic>
                {
                    Data = result.AsList().Select(r => MapAuthResult(r)).ToList(),
                    Page = query
                });
            }
        }
Beispiel #4
0
        public void CreateStatWatchingFiltersTest()
        {
            //Arrange
            const string portalUri = "portalUri";

            var filtersFactory = new FiltersFactory(portalUri);

            //Act
            var statWatchingFilters = filtersFactory.CreateStatWatchingFilters();

            //Assert
            Assert.AreEqual(2, statWatchingFilters.Count);
            Assert.IsInstanceOfType(statWatchingFilters[0], typeof(EmbeddedViewsFilter));
            Assert.IsInstanceOfType(statWatchingFilters[1], typeof(TotalViewsFilter));
        }
Beispiel #5
0
        /// <summary>
        /// Retrieve roles list with pagination
        /// </summary>
        /// <param name="query">Query page parameters</param>
        /// <returns>Paged roles data</returns>
        public async Task <PagedData <dynamic> > GetAsync(PageQuery query)
        {
            using (var connection = new SqlConnection(_connectionString))
            {
                connection.Open();

                // Getting filters values
                var sqlFilters = FiltersFactory.ConvertColumnFilters(query.Filters);

                var description      = sqlFilters.FirstOrDefault(i => i.Name == "description")?.Value;
                var descriptionValue = string.IsNullOrEmpty(description) ? string.Empty : $"%{description}%";

                var count = await connection.QueryAsync <int>(
                    "SELECT COUNT(*) FROM IdentityContext.roles " +
                    ((!string.IsNullOrEmpty(descriptionValue)) ? "WHERE Description LIKE @descriptionValue " : ""),
                    new
                {
                    descriptionValue
                }
                    );

                var startRow = query.PageNumber > 0 ? (query.Size * query.PageNumber) + 1 : 1;
                var endRow   = startRow + query.Size;

                var queryResult = await connection.QueryAsync <dynamic>(
                    "SELECT * FROM ( " +
                    "SELECT ROW_NUMBER() OVER ( ORDER BY Description ) AS RowNum, * FROM IdentityContext.roles " +
                    ((!string.IsNullOrEmpty(descriptionValue)) ? "WHERE Description LIKE @descriptionValue " : "") +
                    ") AS RowConstrainedResult WHERE RowNum >= @startRow AND RowNum < @endRow ORDER BY RowNum",
                    new
                {
                    descriptionValue,
                    startRow,
                    endRow
                });

                // Update pagination data
                query.TotalElements = count.First();
                query.TotalPages    = query.TotalElements / query.Size;

                return(new PagedData <dynamic>
                {
                    Data = queryResult.AsList().Select(item => MapRoleObject(item)).ToList(),
                    Page = query
                });
            }
        }
        public async Task <ExcelData> ValidateAsync <Template>(ImportOption importOption)
            where Template : class, new()
        {
            ExcelData excelData = this.GetExcelData <Template>(importOption);

            AndFilter andFilter = new AndFilter {
                Filters = FiltersFactory.CreateFilters <Template>()
            };

            FilterContext filterContext = new FilterContext {
                TypeFilter = TypeFilterInfoFactory.CreateInstance <Template>()
            };

            excelData.ExcelDataRows = andFilter.Filter(excelData.ExcelDataRows, filterContext, importOption);

            return(await Task.FromResult(excelData));
        }
Beispiel #7
0
        public void CreateStatProjectUploadingFiltersTest()
        {
            //Arrange
            const string portalUri = "portalUri";

            var filtersFactory = new FiltersFactory(portalUri);

            //Act
            var statProjectUploadingFilters = filtersFactory.CreateStatProjectUploadingFilters();

            //Assert
            Assert.AreEqual(10, statProjectUploadingFilters.Count);
            Assert.IsInstanceOfType(statProjectUploadingFilters[0], typeof(CicIPadUploadsFilter));
            Assert.IsInstanceOfType(statProjectUploadingFilters[1], typeof(CicMacUploadsFilter));
            Assert.IsInstanceOfType(statProjectUploadingFilters[2], typeof(CicPcUploadsFilter));
            Assert.IsInstanceOfType(statProjectUploadingFilters[3], typeof(ImageShackUploadsFilter));
            Assert.IsInstanceOfType(statProjectUploadingFilters[4], typeof(TaggerIPhoneUploadsFilter));
            Assert.IsInstanceOfType(statProjectUploadingFilters[5], typeof(TaggerAndroidUploadsFilter));
            Assert.IsInstanceOfType(statProjectUploadingFilters[6], typeof(StandaloneUploadsFilter));
            Assert.IsInstanceOfType(statProjectUploadingFilters[7], typeof(PlayerUploadsFilter));
            Assert.IsInstanceOfType(statProjectUploadingFilters[8], typeof(DailyMotionUploadsFilter));
            Assert.IsInstanceOfType(statProjectUploadingFilters[9], typeof(JwPlayerUploadsFilter));
        }
        //public DataTable ToTable(string fileUrl, int sheetIndex = 0, int headerRowIndex = 0, int dataRowStartIndex = 1, int dataRowCount = -1)
        //{
        //    IWorkbook workbook;
        //    using (FileStream stream = new FileStream(fileUrl, FileMode.Open, FileAccess.Read))
        //    {
        //        workbook = new HSSFWorkbook(stream);
        //    }

        //    ISheet sheet = workbook.GetSheetAt(sheetIndex);
        //    DataTable dt = new DataTable(sheet.SheetName);

        //    // 处理表头
        //    IRow headerRow = sheet.GetRow(headerRowIndex);
        //    foreach (ICell headerCell in headerRow)
        //    {
        //        dt.Columns.Add(headerCell.ToString());
        //    }

        //    //默认转换所有数据
        //    var dataRowStopIndex = sheet.PhysicalNumberOfRows - 1;

        //    //只转换指定数量数据
        //    if (dataRowCount > -1)
        //    {
        //        dataRowStopIndex = dataRowStartIndex + dataRowCount;
        //    }

        //    //转换
        //    for (int i = dataRowStartIndex; i < dataRowStopIndex; i++)
        //    {
        //        var row = sheet.GetRow(i);
        //        if (row != null)
        //        {
        //            DataRow dataRow = dt.NewRow();
        //            dataRow.ItemArray = row.Cells.Select(c => c.ToString()).ToArray();
        //            dt.Rows.Add(dataRow);
        //        }
        //    }

        //    return dt;
        //}

        /// <summary>
        /// 导入
        /// </summary>
        /// <typeparam name="T">模板类</typeparam>
        /// <param name="fileUrl">Excel文件绝对地址</param>
        /// <returns></returns>
        public Task <List <ExcelDataRow> > ValidateAsync <T>(ImportOption importOption) where T : class, new()
        {
            var excelData = GetExcelData <T>(importOption);

            if (importOption.MappingDictionary != null)
            {
                excelData.Data = MappingHeaderDictionary(excelData.Data, importOption.MappingDictionary);
            }

            AndFilter andFilter = new AndFilter()
            {
                filters = FiltersFactory.CreateFilters <T>(excelData.Header)
            };

            FilterContext context = new FilterContext()
            {
                TypeFilterInfo = TypeFilterInfoFactory.CreateInstance(typeof(T), excelData.Header)
            };

            excelData.Data = andFilter.Filter(excelData.Data, context, importOption);

            return(Task.FromResult(excelData.Data));
        }
        public static void WireupDependenciesAndInitMainWindow(MainWindowAdapter mainWindow)
        {
            var tracer = new LJTraceSource("App", "app");

            tracer.Info("starting app");


            using (tracer.NewFrame)
            {
                ILogProviderFactoryRegistry  logProviderFactoryRegistry  = new LogProviderFactoryRegistry();
                IFormatDefinitionsRepository formatDefinitionsRepository = new DirectoryFormatsRepository(null);
                TempFilesManager             tempFilesManager            = new TempFilesManager();
                IUserDefinedFormatsManager   userDefinedFormatsManager   = new UserDefinedFormatsManager(
                    formatDefinitionsRepository, logProviderFactoryRegistry, tempFilesManager);
                new AppInitializer(tracer, userDefinedFormatsManager, logProviderFactoryRegistry, tempFilesManager);
                tracer.Info("app initializer created");

                IInvokeSynchronization invokingSynchronization = new InvokeSynchronization(new NSSynchronizeInvoke());

                UI.HeartBeatTimer          heartBeatTimer = new UI.HeartBeatTimer();
                UI.Presenters.IViewUpdates viewUpdates    = heartBeatTimer;

                IFiltersFactory   filtersFactory   = new FiltersFactory();
                IBookmarksFactory bookmarksFactory = new BookmarksFactory();
                var bookmarks = bookmarksFactory.CreateBookmarks();
                var persistentUserDataFileSystem = Persistence.Implementation.DesktopFileSystemAccess.CreatePersistentUserDataFileSystem();

                IShutdown shutdown = new Shutdown();

                Persistence.Implementation.IStorageManagerImplementation userDataStorage = new Persistence.Implementation.StorageManagerImplementation();
                Persistence.IStorageManager storageManager = new Persistence.PersistentUserDataManager(
                    userDataStorage,
                    shutdown
                    );
                Settings.IGlobalSettingsAccessor globalSettingsAccessor = new Settings.GlobalSettingsAccessor(storageManager);
                userDataStorage.Init(
                    new Persistence.Implementation.RealTimingAndThreading(),
                    persistentUserDataFileSystem,
                    new Persistence.PersistentUserDataManager.ConfigAccess(globalSettingsAccessor)
                    );
                Persistence.IFirstStartDetector firstStartDetector = persistentUserDataFileSystem;
                Persistence.Implementation.IStorageManagerImplementation contentCacheStorage = new Persistence.Implementation.StorageManagerImplementation();
                contentCacheStorage.Init(
                    new Persistence.Implementation.RealTimingAndThreading(),
                    Persistence.Implementation.DesktopFileSystemAccess.CreateCacheFileSystemAccess(),
                    new Persistence.ContentCacheManager.ConfigAccess(globalSettingsAccessor)
                    );
                LogJoint.Properties.WebContentConfig webContentConfig = new Properties.WebContentConfig();
                Persistence.IContentCache            contentCache     = new Persistence.ContentCacheManager(contentCacheStorage);
                Persistence.IWebContentCache         webContentCache  = new Persistence.WebContentCache(
                    contentCache,
                    webContentConfig
                    );
                MultiInstance.IInstancesCounter     instancesCounter           = new MultiInstance.InstancesCounter(shutdown);
                Progress.IProgressAggregatorFactory progressAggregatorsFactory = new Progress.ProgressAggregator.Factory(heartBeatTimer, invokingSynchronization);
                Progress.IProgressAggregator        progressAggregator         = progressAggregatorsFactory.CreateProgressAggregator();

                IAdjustingColorsGenerator colorGenerator = new AdjustingColorsGenerator(
                    new PastelColorsGenerator(),
                    globalSettingsAccessor.Appearance.ColoringBrightness
                    );

                IModelThreads modelThreads = new ModelThreads(colorGenerator);

                ILogSourcesManager logSourcesManager = new LogSourcesManager(
                    heartBeatTimer,
                    invokingSynchronization,
                    modelThreads,
                    tempFilesManager,
                    storageManager,
                    bookmarks,
                    globalSettingsAccessor
                    );

                Telemetry.ITelemetryUploader telemetryUploader = new Telemetry.ConfiguredAzureTelemetryUploader(
                    );

                Telemetry.ITelemetryCollector telemetryCollector = new Telemetry.TelemetryCollector(
                    storageManager,
                    telemetryUploader,
                    invokingSynchronization,
                    instancesCounter,
                    shutdown,
                    logSourcesManager,
                    new MemBufferTraceAccess()
                    );
                tracer.Info("telemetry created");

                new Telemetry.UnhandledExceptionsReporter(telemetryCollector);

                MRU.IRecentlyUsedEntities recentlyUsedLogs = new MRU.RecentlyUsedEntities(
                    storageManager,
                    logProviderFactoryRegistry,
                    telemetryCollector
                    );
                IFormatAutodetect formatAutodetect = new FormatAutodetect(recentlyUsedLogs, logProviderFactoryRegistry, tempFilesManager);

                Workspaces.IWorkspacesManager workspacesManager = new Workspaces.WorkspacesManager(
                    logSourcesManager,
                    logProviderFactoryRegistry,
                    storageManager,
                    new Workspaces.Backend.AzureWorkspacesBackend(),
                    tempFilesManager,
                    recentlyUsedLogs,
                    shutdown
                    );

                AppLaunch.ILaunchUrlParser launchUrlParser = new AppLaunch.LaunchUrlParser();

                Preprocessing.IPreprocessingManagerExtensionsRegistry preprocessingManagerExtensionsRegistry =
                    new Preprocessing.PreprocessingManagerExtentionsRegistry();

                Preprocessing.ICredentialsCache preprocessingCredentialsCache = new PreprocessingCredentialsCache(
                    mainWindow.Window,
                    storageManager.GlobalSettingsEntry,
                    invokingSynchronization
                    );

                WebBrowserDownloader.IDownloader webBrowserDownloader = new UI.Presenters.WebBrowserDownloader.Presenter(
                    new LogJoint.UI.WebBrowserDownloaderWindowController(),
                    invokingSynchronization,
                    webContentCache,
                    shutdown
                    );

                Preprocessing.IPreprocessingStepsFactory preprocessingStepsFactory = new Preprocessing.PreprocessingStepsFactory(
                    workspacesManager,
                    launchUrlParser,
                    invokingSynchronization,
                    preprocessingManagerExtensionsRegistry,
                    progressAggregator,
                    webContentCache,
                    preprocessingCredentialsCache,
                    logProviderFactoryRegistry,
                    webBrowserDownloader,
                    webContentConfig
                    );

                Preprocessing.ILogSourcesPreprocessingManager logSourcesPreprocessings = new Preprocessing.LogSourcesPreprocessingManager(
                    invokingSynchronization,
                    formatAutodetect,
                    preprocessingManagerExtensionsRegistry,
                    new Preprocessing.BuiltinStepsExtension(preprocessingStepsFactory),
                    telemetryCollector,
                    tempFilesManager
                    );

                ILogSourcesController logSourcesController = new LogSourcesController(
                    logSourcesManager,
                    logSourcesPreprocessings,
                    recentlyUsedLogs,
                    shutdown
                    );

                ISearchManager searchManager = new SearchManager(
                    logSourcesManager,
                    progressAggregatorsFactory,
                    invokingSynchronization,
                    globalSettingsAccessor,
                    telemetryCollector,
                    heartBeatTimer
                    );

                IUserDefinedSearches userDefinedSearchesManager = new UserDefinedSearchesManager(
                    storageManager,
                    filtersFactory,
                    invokingSynchronization
                    );

                ISearchHistory searchHistory = new SearchHistory(
                    storageManager.GlobalSettingsEntry,
                    userDefinedSearchesManager
                    );

                IBookmarksController bookmarksController = new BookmarkController(
                    bookmarks,
                    modelThreads,
                    heartBeatTimer
                    );

                IFiltersManager filtersManager = new FiltersManager(
                    filtersFactory,
                    globalSettingsAccessor,
                    logSourcesManager,
                    colorGenerator,
                    shutdown
                    );

                LogJoint.Postprocessing.IUserNamesProvider analyticsShortNames = new LogJoint.Postprocessing.CodenameUserNamesProvider(
                    logSourcesManager
                    );

                Analytics.TimeSeries.ITimeSeriesTypesAccess timeSeriesTypesAccess = new Analytics.TimeSeries.TimeSeriesTypesLoader();

                LogJoint.Postprocessing.IPostprocessorsManager postprocessorsManager = new LogJoint.Postprocessing.PostprocessorsManager(
                    logSourcesManager,
                    telemetryCollector,
                    invokingSynchronization,
                    heartBeatTimer,
                    progressAggregator,
                    null,                     // todo
                    globalSettingsAccessor
                    );

                LogJoint.Postprocessing.InternalTracePostprocessors.Register(
                    postprocessorsManager,
                    userDefinedFormatsManager
                    );

                tracer.Info("model creation finished");

                AutoUpdate.IAutoUpdater autoUpdater = new AutoUpdate.AutoUpdater(
                    instancesCounter,
                    new AutoUpdate.ConfiguredAzureUpdateDownloader(),
                    tempFilesManager,
                    shutdown,
                    invokingSynchronization,
                    firstStartDetector,
                    telemetryCollector,
                    storageManager
                    );

                var presentersFacade = new UI.Presenters.Facade();
                UI.Presenters.IPresentersFacade navHandler = presentersFacade;

                UI.Presenters.IClipboardAccess clipboardAccess = new UI.ClipboardAccess();
                UI.Presenters.IAlertPopup      alerts          = new UI.AlertPopup();
                UI.Presenters.IShellOpen       shellOpen       = new UI.ShellOpen();
                UI.Presenters.IFileDialogs     fileDialogs     = new UI.FileDialogs();

                UI.Presenters.LogViewer.IPresenterFactory logViewerPresenterFactory = new UI.Presenters.LogViewer.PresenterFactory(
                    heartBeatTimer,
                    presentersFacade,
                    clipboardAccess,
                    bookmarksFactory,
                    telemetryCollector,
                    logSourcesManager,
                    invokingSynchronization,
                    modelThreads,
                    filtersManager.HighlightFilters,
                    bookmarks,
                    globalSettingsAccessor,
                    searchManager,
                    filtersFactory
                    );

                UI.Presenters.LoadedMessages.IView      loadedMessagesView      = mainWindow.LoadedMessagesControlAdapter;
                UI.Presenters.LoadedMessages.IPresenter loadedMessagesPresenter = new UI.Presenters.LoadedMessages.Presenter(
                    logSourcesManager,
                    bookmarks,
                    loadedMessagesView,
                    heartBeatTimer,
                    logViewerPresenterFactory);

                UI.Presenters.LogViewer.IPresenter viewerPresenter = loadedMessagesPresenter.LogViewerPresenter;

                UI.Presenters.StatusReports.IPresenter statusReportPresenter = new UI.Presenters.StatusReports.Presenter(
                    mainWindow.StatusPopupControlAdapter,
                    heartBeatTimer
                    );

                UI.Presenters.SourcePropertiesWindow.IPresenter sourcePropertiesWindowPresenter = new UI.Presenters.SourcePropertiesWindow.Presenter(
                    new UI.SourcePropertiesDialogView(),
                    logSourcesManager,
                    logSourcesPreprocessings,
                    navHandler,
                    alerts,
                    clipboardAccess,
                    shellOpen
                    );

                UI.Presenters.SaveJointLogInteractionPresenter.IPresenter saveJointLogInteractionPresenter = new UI.Presenters.SaveJointLogInteractionPresenter.Presenter(
                    logSourcesManager,
                    shutdown,
                    progressAggregatorsFactory,
                    alerts,
                    fileDialogs,
                    statusReportPresenter
                    );

                UI.Presenters.SourcesList.IPresenter sourcesListPresenter = new UI.Presenters.SourcesList.Presenter(
                    logSourcesManager,
                    mainWindow.SourcesManagementControlAdapter.SourcesListControlAdapter,
                    logSourcesPreprocessings,
                    sourcePropertiesWindowPresenter,
                    viewerPresenter,
                    navHandler,
                    alerts,
                    fileDialogs,
                    clipboardAccess,
                    shellOpen,
                    saveJointLogInteractionPresenter
                    );

                UI.Presenters.SearchResult.IPresenter searchResultPresenter = new UI.Presenters.SearchResult.Presenter(
                    searchManager,
                    bookmarks,
                    filtersManager.HighlightFilters,
                    mainWindow.SearchResultsControlAdapter,
                    navHandler,
                    loadedMessagesPresenter,
                    heartBeatTimer,
                    invokingSynchronization,
                    statusReportPresenter,
                    logViewerPresenterFactory
                    );

                UI.Presenters.SearchEditorDialog.IPresenter searchEditorDialog = new UI.Presenters.SearchEditorDialog.Presenter(
                    new SearchEditorDialogView(),
                    userDefinedSearchesManager,
                    (filtersList, dialogView) =>
                {
                    UI.Presenters.FilterDialog.IPresenter filterDialogPresenter = new UI.Presenters.FilterDialog.Presenter(
                        null,                                 // logSources is not required. Scope is not supported by search.
                        filtersList,
                        new UI.FilterDialogController((AppKit.NSWindowController)dialogView)
                        );
                    return(new UI.Presenters.FiltersManager.Presenter(
                               filtersList,
                               dialogView.FiltersManagerView,
                               new UI.Presenters.FiltersListBox.Presenter(
                                   filtersList,
                                   dialogView.FiltersManagerView.FiltersListView,
                                   filterDialogPresenter
                                   ),
                               filterDialogPresenter,
                               null,                          // log viewer is not required
                               viewUpdates,                   // todo: updates must be faked for search editor
                               heartBeatTimer,
                               filtersFactory,
                               alerts
                               ));
                },
                    alerts
                    );



                UI.Presenters.SearchesManagerDialog.IPresenter searchesManagerDialogPresenter = new UI.Presenters.SearchesManagerDialog.Presenter(
                    new UI.SearchesManagerDialogView(),
                    userDefinedSearchesManager,
                    alerts,
                    fileDialogs,
                    searchEditorDialog
                    );

                UI.Presenters.SearchPanel.IPresenter searchPanelPresenter = new UI.Presenters.SearchPanel.Presenter(
                    mainWindow.SearchPanelControlAdapter,
                    searchManager,
                    searchHistory,
                    userDefinedSearchesManager,
                    logSourcesManager,
                    filtersFactory,
                    mainWindow,
                    loadedMessagesPresenter,
                    searchResultPresenter,
                    statusReportPresenter,
                    searchEditorDialog,
                    searchesManagerDialogPresenter,
                    alerts
                    );
                tracer.Info("search panel presenter created");

                UI.Presenters.HistoryDialog.IView      historyDialogView      = new UI.HistoryDialogAdapter();
                UI.Presenters.HistoryDialog.IPresenter historyDialogPresenter = new UI.Presenters.HistoryDialog.Presenter(
                    logSourcesController,
                    historyDialogView,
                    logSourcesPreprocessings,
                    preprocessingStepsFactory,
                    recentlyUsedLogs,
                    new UI.Presenters.QuickSearchTextBox.Presenter(historyDialogView.QuickSearchTextBox),
                    alerts
                    );

                AppLaunch.ICommandLineHandler commandLineHandler = new AppLaunch.CommandLineHandler(
                    logSourcesPreprocessings,
                    preprocessingStepsFactory
                    );

                UI.Presenters.NewLogSourceDialog.IPagePresentersRegistry newLogSourceDialogPagesPresentersRegistry =
                    new UI.Presenters.NewLogSourceDialog.PagePresentersRegistry();

                UI.Presenters.Help.IPresenter helpPresenter = new UI.Presenters.Help.Presenter(
                    shellOpen
                    );

                UI.Presenters.NewLogSourceDialog.IPresenter newLogSourceDialogPresenter = new UI.Presenters.NewLogSourceDialog.Presenter(
                    logProviderFactoryRegistry,
                    newLogSourceDialogPagesPresentersRegistry,
                    recentlyUsedLogs,
                    new UI.NewLogSourceDialogView(),
                    userDefinedFormatsManager,
                    () => new UI.Presenters.NewLogSourceDialog.Pages.FormatDetection.Presenter(
                        new LogJoint.UI.FormatDetectionPageController(),
                        logSourcesPreprocessings,
                        preprocessingStepsFactory
                        ),
                    new UI.Presenters.FormatsWizard.Presenter(
                        new UI.Presenters.FormatsWizard.ObjectsFactory(
                            alerts,
                            fileDialogs,
                            helpPresenter,
                            logProviderFactoryRegistry,
                            formatDefinitionsRepository,
                            userDefinedFormatsManager,
                            tempFilesManager,
                            logViewerPresenterFactory,
                            new UI.Presenters.FormatsWizard.ObjectsFactory.ViewFactories()
                {
                    CreateFormatsWizardView           = () => new FormatsWizardDialogController(),
                    CreateChooseOperationPageView     = () => new ChooseOperationPageController(),
                    CreateImportLog4NetPagePageView   = () => new ImportLog4NetPageController(),
                    CreateFormatIdentityPageView      = () => new FormatIdentityPageController(),
                    CreateFormatAdditionalOptionsPage = () => new FormatAdditionalOptionsPageController(),
                    CreateSaveFormatPageView          = () => new SaveFormatPageController(),
                    CreateImportNLogPage               = () => new ImportNLogPageController(),
                    CreateNLogGenerationLogPageView    = () => new NLogGenerationLogPageController(),
                    CreateChooseExistingFormatPageView = () => new ChooseExistingFormatPageController(),
                    CreateFormatDeleteConfirmPageView  = () => new FormatDeletionConfirmationPageController(),
                    CreateRegexBasedFormatPageView     = () => new RegexBasedFormatPageController(),
                    CreateEditSampleDialogView         = () => new EditSampleLogDialogController(),
                    CreateTestDialogView               = () => new TestFormatDialogController(),
                    CreateEditRegexDialog              = () => new EditRegexDialogController(),
                    CreateEditFieldsMappingDialog      = () => new FieldsMappingDialogController(),
                    CreateXmlBasedFormatPageView       = () => new XmlBasedFormatPageController(),
                    CreateJsonBasedFormatPageView      = () => new XmlBasedFormatPageController(),
                    CreateXsltEditorDialog             = () => new XsltEditorDialogController(),
                    CreateJUSTEditorDialog             = () => new XsltEditorDialogController()
                }
                            )
                        )
                    );

                newLogSourceDialogPagesPresentersRegistry.RegisterPagePresenterFactory(
                    StdProviderFactoryUIs.FileBasedProviderUIKey,
                    f => new UI.Presenters.NewLogSourceDialog.Pages.FileBasedFormat.Presenter(
                        new LogJoint.UI.FileBasedFormatPageController(),
                        (IFileBasedLogProviderFactory)f,
                        logSourcesController,
                        alerts,
                        fileDialogs
                        )
                    );

                UI.Presenters.SharingDialog.IPresenter sharingDialogPresenter = new UI.Presenters.SharingDialog.Presenter(
                    logSourcesManager,
                    workspacesManager,
                    logSourcesPreprocessings,
                    alerts,
                    clipboardAccess,
                    new UI.SharingDialogController()
                    );

                UI.Presenters.SourcesManager.IPresenter sourcesManagerPresenter = new UI.Presenters.SourcesManager.Presenter(
                    logSourcesManager,
                    userDefinedFormatsManager,
                    recentlyUsedLogs,
                    logSourcesPreprocessings,
                    logSourcesController,
                    mainWindow.SourcesManagementControlAdapter,
                    preprocessingStepsFactory,
                    workspacesManager,
                    sourcesListPresenter,
                    newLogSourceDialogPresenter,
                    heartBeatTimer,
                    sharingDialogPresenter,
                    historyDialogPresenter,
                    presentersFacade,
                    sourcePropertiesWindowPresenter,
                    alerts
                    );

                UI.Presenters.BookmarksList.IPresenter bookmarksListPresenter = new UI.Presenters.BookmarksList.Presenter(
                    bookmarks,
                    logSourcesManager,
                    mainWindow.BookmarksManagementControlAdapter.ListView,
                    heartBeatTimer,
                    loadedMessagesPresenter,
                    clipboardAccess
                    );

                UI.Presenters.BookmarksManager.IPresenter bookmarksManagerPresenter = new UI.Presenters.BookmarksManager.Presenter(
                    bookmarks,
                    mainWindow.BookmarksManagementControlAdapter,
                    viewerPresenter,
                    searchResultPresenter,
                    bookmarksListPresenter,
                    statusReportPresenter,
                    navHandler,
                    viewUpdates,
                    alerts
                    );

                UI.Presenters.FilterDialog.IPresenter hlFilterDialogPresenter = new UI.Presenters.FilterDialog.Presenter(
                    logSourcesManager,
                    filtersManager.HighlightFilters,
                    new UI.FilterDialogController(mainWindow)
                    );

                UI.Presenters.FiltersListBox.IPresenter hlFiltersListPresenter = new UI.Presenters.FiltersListBox.Presenter(
                    filtersManager.HighlightFilters,
                    mainWindow.HighlightingFiltersManagerControlAdapter.FiltersList,
                    hlFilterDialogPresenter
                    );

                UI.Presenters.FiltersManager.IPresenter hlFiltersManagerPresenter = new UI.Presenters.FiltersManager.Presenter(
                    filtersManager.HighlightFilters,
                    mainWindow.HighlightingFiltersManagerControlAdapter,
                    hlFiltersListPresenter,
                    hlFilterDialogPresenter,
                    loadedMessagesPresenter.LogViewerPresenter,
                    viewUpdates,
                    heartBeatTimer,
                    filtersFactory,
                    alerts
                    );


                UI.Presenters.MainForm.IDragDropHandler dragDropHandler = new UI.DragDropHandler(
                    logSourcesPreprocessings,
                    preprocessingStepsFactory,
                    logSourcesController
                    );

                new UI.LogsPreprocessorUI(
                    logSourcesPreprocessings,
                    statusReportPresenter
                    );

                UI.Presenters.About.IPresenter aboutDialogPresenter = new UI.Presenters.About.Presenter(
                    new UI.AboutDialogAdapter(),
                    new UI.AboutDialogConfig(),
                    clipboardAccess,
                    autoUpdater
                    );

                UI.Presenters.Timeline.IPresenter timelinePresenter = new UI.Presenters.Timeline.Presenter(
                    logSourcesManager,
                    logSourcesPreprocessings,
                    searchManager,
                    bookmarks,
                    mainWindow.TimelinePanelControlAdapter.TimelineControlAdapter,
                    viewerPresenter,
                    statusReportPresenter,
                    null,                     // tabUsageTracker
                    heartBeatTimer
                    );

                var timeLinePanelPresenter = new UI.Presenters.TimelinePanel.Presenter(
                    mainWindow.TimelinePanelControlAdapter,
                    timelinePresenter
                    );

                UI.Presenters.TimestampAnomalyNotification.IPresenter timestampAnomalyNotification = new UI.Presenters.TimestampAnomalyNotification.Presenter(
                    logSourcesManager,
                    logSourcesPreprocessings,
                    invokingSynchronization,
                    heartBeatTimer,
                    presentersFacade,
                    statusReportPresenter
                    );
                timestampAnomalyNotification.GetHashCode();                 // to suppress warning

                UI.Presenters.IPromptDialog promptDialog = new LogJoint.UI.PromptDialogController();

                UI.Presenters.IssueReportDialogPresenter.IPresenter issueReportDialogPresenter =
                    new UI.Presenters.IssueReportDialogPresenter.Presenter(
                        telemetryCollector, telemetryUploader, promptDialog);

                UI.Presenters.MainForm.IPresenter mainFormPresenter = new UI.Presenters.MainForm.Presenter(
                    logSourcesManager,
                    logSourcesPreprocessings,
                    mainWindow,
                    viewerPresenter,
                    searchResultPresenter,
                    searchPanelPresenter,
                    sourcesListPresenter,
                    sourcesManagerPresenter,
                    null,                    //messagePropertiesDialogPresenter,
                    loadedMessagesPresenter,
                    bookmarksManagerPresenter,
                    heartBeatTimer,
                    null,                    //tabUsageTracker,
                    statusReportPresenter,
                    dragDropHandler,
                    navHandler,
                    autoUpdater,
                    progressAggregator,
                    alerts,
                    sharingDialogPresenter,
                    issueReportDialogPresenter,
                    shutdown
                    );
                tracer.Info("main form presenter created");

                CustomURLSchemaEventsHandler.Instance.Init(
                    mainFormPresenter,
                    commandLineHandler,
                    invokingSynchronization
                    );

                presentersFacade.Init(
                    null,                     //messagePropertiesDialogPresenter,
                    null,                     //threadsListPresenter,
                    sourcesListPresenter,
                    bookmarksManagerPresenter,
                    mainFormPresenter,
                    aboutDialogPresenter,
                    null,                     //optionsDialogPresenter,
                    historyDialogPresenter
                    );

                var postprocessingViewsFactory = new LogJoint.UI.Postprocessing.PostprocessorOutputFormFactory();

                LogJoint.UI.Presenters.Postprocessing.MainWindowTabPage.IView postprocessingTabPage = new LogJoint.UI.Postprocessing.MainWindowTabPage.MainWindowTabPageAdapter(
                    mainFormPresenter
                    );

                LogJoint.UI.Presenters.Postprocessing.MainWindowTabPage.IPresenter postprocessingTabPagePresenter = new LogJoint.UI.Presenters.Postprocessing.MainWindowTabPage.PluginTabPagePresenter(
                    postprocessingTabPage,
                    postprocessorsManager,
                    postprocessingViewsFactory,
                    logSourcesManager,
                    tempFilesManager,
                    shellOpen,
                    newLogSourceDialogPresenter,
                    telemetryCollector
                    );

                LogJoint.Postprocessing.IAggregatingLogSourceNamesProvider logSourceNamesProvider = new LogJoint.Postprocessing.AggregatingLogSourceNamesProvider();

                var extensibilityEntryPoint = new Extensibility.Application(
                    new Extensibility.Model(
                        invokingSynchronization,
                        telemetryCollector,
                        webContentCache,
                        contentCache,
                        storageManager,
                        bookmarks,
                        logSourcesManager,
                        modelThreads,
                        tempFilesManager,
                        preprocessingManagerExtensionsRegistry,
                        logSourcesPreprocessings,
                        preprocessingStepsFactory,
                        progressAggregator,
                        logProviderFactoryRegistry,
                        userDefinedFormatsManager,
                        recentlyUsedLogs,
                        progressAggregatorsFactory,
                        heartBeatTimer,
                        logSourcesController,
                        shutdown,
                        webBrowserDownloader,
                        commandLineHandler,
                        postprocessorsManager,
                        analyticsShortNames,
                        timeSeriesTypesAccess,
                        logSourceNamesProvider
                        ),
                    new Extensibility.Presentation(
                        loadedMessagesPresenter,
                        clipboardAccess,
                        presentersFacade,
                        sourcesManagerPresenter,
                        newLogSourceDialogPresenter,
                        shellOpen,
                        alerts,
                        promptDialog,
                        mainFormPresenter,
                        postprocessingTabPagePresenter,
                        postprocessingViewsFactory
                        ),
                    new Extensibility.View(
                        )
                    );

                postprocessingViewsFactory.Init(extensibilityEntryPoint);

                new Extensibility.PluginsManager(
                    extensibilityEntryPoint,
                    mainFormPresenter,
                    telemetryCollector,
                    shutdown
                    );
            }
        }
Beispiel #10
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);
            }
        }
Beispiel #11
0
 public void Init()
 {
     _factory    = new FiltersFactory();
     _mockFilter = new SepiaFilter();
 }
Beispiel #12
0
        /// <summary>
        /// Retrieve users list with pagination
        /// </summary>
        /// <param name="query">Query page parameters</param>
        /// <returns>Paged users data</returns>
        public async Task <PagedData <dynamic> > GetAsync(PageQuery query)
        {
            using (var connection = new SqlConnection(_connectionString))
            {
                connection.Open();

                // Getting filters values
                var sqlFilters = FiltersFactory.ConvertColumnFilters(query.Filters);

                // Configuring filters with wildcards to match substrings also
                var name      = sqlFilters.FirstOrDefault(i => i.Name == "name")?.Value;
                var nameValue = string.IsNullOrEmpty(name) ? string.Empty : $"%{name}%";

                var surname      = sqlFilters.FirstOrDefault(i => i.Name == "surname")?.Value;
                var surnameValue = string.IsNullOrEmpty(surname) ? string.Empty : $"%{surname}%";

                var username      = sqlFilters.FirstOrDefault(i => i.Name == "username")?.Value;
                var usernameValue = string.IsNullOrEmpty(username) ? string.Empty : $"%{username}%";

                var email      = sqlFilters.FirstOrDefault(i => i.Name == "email")?.Value;
                var emailValue = string.IsNullOrEmpty(email) ? string.Empty : $"%{email}%";

                // Get the total rows count
                var count = await connection.QueryAsync <int>(
                    "SELECT COUNT(*) FROM IdentityContext.users WHERE Root = 0 AND Disabled = 0 " +
                    ((!string.IsNullOrEmpty(nameValue)) ? "AND name LIKE @nameValue " : "") +
                    ((!string.IsNullOrEmpty(surnameValue)) ? "AND surname LIKE @surnameValue " : "") +
                    ((!string.IsNullOrEmpty(usernameValue)) ? "AND username LIKE @usernameValue " : "") +
                    ((!string.IsNullOrEmpty(emailValue)) ? "AND email LIKE @emailValue " : ""),
                    new
                {
                    nameValue,
                    surnameValue,
                    usernameValue,
                    emailValue,
                });

                var startRow = query.PageNumber > 0 ? (query.Size * query.PageNumber) + 1 : 1;
                var endRow   = startRow + query.Size;

                // Get the paged users data
                var queryResult = await connection.QueryAsync <dynamic>(
                    "SELECT * FROM ( " +
                    "SELECT ROW_NUMBER() OVER ( ORDER BY Email ) AS RowNum, * FROM IdentityContext.users WHERE Root = 0 AND Disabled = 0 " +
                    ((!string.IsNullOrEmpty(nameValue)) ? "AND name LIKE @nameValue " : "") +
                    ((!string.IsNullOrEmpty(surnameValue)) ? "AND surname LIKE @surnameValue " : "") +
                    ((!string.IsNullOrEmpty(usernameValue)) ? "AND username LIKE @usernameValue " : "") +
                    ((!string.IsNullOrEmpty(emailValue)) ? "AND email LIKE @emailValue " : "") +
                    ") AS RowConstrainedResult WHERE RowNum >= @startRow AND RowNum < @endRow ORDER BY RowNum",
                    new
                {
                    nameValue,
                    surnameValue,
                    usernameValue,
                    emailValue,
                    startRow,
                    endRow
                });

                // Update pagination data
                query.TotalElements = count.First();
                query.TotalPages    = query.TotalElements / query.Size;

                return(new PagedData <dynamic>
                {
                    Data = queryResult.AsList().Select(item => MapUserObject(item)).ToList(),
                    Page = query
                });
            }
        }