// 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>()); }
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 }); } }
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)); }
/// <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)); }
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 ); } }
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); } }
public void Init() { _factory = new FiltersFactory(); _mockFilter = new SepiaFilter(); }
/// <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 }); } }