protected override void OnStop() { base.OnStop(); ReportWorker.Stop(); ReportHoster.Stop(); ELogger.SNG.WriteLog("server service stop..."); }
//------------------------------------------------------------------------------------------------------------------------- // //------------------------------------------------------------------------------------------------------------------------- protected override void OnStart(string[] args) { ELogger.SNG.WriteLog("server service start..."); ReportHoster.Start(); ReportWorker.Start(); base.OnStart(args); }
private void OnReportLoaded(object sender, RunWorkerCompletedEventArgs e) { ReportWorker rw = sender as ReportWorker; if (rw != null && rw.Report != null) { if (null == _lastSelected) { _lastSelected = _SetItemSelected(rw.Report.Guid); } else { SetItemUnselected(rw.Report.Guid); } StopTimer(rw.Report.Guid.ToString()); } if (e.Error != null) { FireException(e.Error); return; } if (e.Cancelled) { return; } Report report = e.Result as Report; Debug.Assert(report != null, "Report is null"); try { report.OpenCount++; report.SaveOpenCount(); UpdateOpenCount(report); ReportViewerForm frm = new ReportViewerForm(report); frm.Show(); } catch (Exception ex) { MessageBox.Show(ex.Message, "Error"); } }
private void ReportItem_DoubleClick(object sender, HtmlElementEventArgs e) { HtmlElement el = wbReports.Document != null ? wbReports.Document.GetElementFromPoint(e.ClientMousePosition) : null; string guid = el != null ? el.Id : string.Empty; Report ri = ReportService.GetInstance().GetReport(new Guid(guid)); if (ri != null && !_timers.ContainsKey(guid)) { bool showReport = true; if (ri.Params.Count > 0) { try { ReportParamsForm frm = new ReportParamsForm(ri.Params, ri.Title); if (frm.ShowDialog() != DialogResult.OK) { showReport = false; } } catch (Exception error) { FireException(error); showReport = false; } } if (showReport) { SetItemLoading(guid); StartTimer(guid); _lastSelected = null; BackgroundWorker bwReportLoader = new ReportWorker { WorkerReportsProgress = true , Report = ri , WorkerSupportsCancellation = true }; bwReportLoader.DoWork += OnLoadReport; bwReportLoader.RunWorkerCompleted += OnReportLoaded; bwReportLoader.RunWorkerAsync(ri); } } }
/// <summary> /// Gets report worker details- create report with self reference /// </summary> /// <param name="idWorker">idUser</param> /// <returns>List<ReportWorker>-</returns> public static List <ReportWorker> GetReportWorkerDetailsById(int idWorker) { Func <MySqlDataReader, List <ReportWorker> > func = (reader) => { List <ReportWorker> reportWorker = new List <ReportWorker>(); while (reader.Read()) { ReportWorker reportWorker1 = ConvertReport.ConvertDBtoWorkersReport(reader); reportWorker1.Id = index++; reportWorker1.ParentId = idWorker; reportWorker.Add(reportWorker1); } return(reportWorker); }; return(DBAccess.RunReader(func, "reportWorker", new List <string>() { idWorker.ToString() }, new List <string>() { "idWorker" })); }
public static void Main(string[] args) { CultureInfo.CurrentCulture = CultureInfo.CreateSpecificCulture("ru-RU"); Application.Init(); QSMain.GuiThread = System.Threading.Thread.CurrentThread; applicationInfo = new ApplicationVersionInfo(); #region Первоначальная настройка обработки ошибок SingletonErrorReporter.Initialize(ReportWorker.GetReportService(), applicationInfo, new LogService(), null, false, null); var errorMessageModelFactoryWithoutUserService = new DefaultErrorMessageModelFactory(SingletonErrorReporter.Instance, null, null); var exceptionHandler = new DefaultUnhandledExceptionHandler(errorMessageModelFactoryWithoutUserService, applicationInfo); exceptionHandler.SubscribeToUnhandledExceptions(); exceptionHandler.GuiThread = System.Threading.Thread.CurrentThread; #endregion //FIXME Удалить после того как будет удалена зависимость от библиотеки QSProjectLib QSMain.ProjectPermission = new System.Collections.Generic.Dictionary <string, UserPermission>(); CreateProjectParam(); ConfigureViewModelWidgetResolver(); ConfigureJournalColumnsConfigs(); QSMain.SetupFromArgs(args); QS.Project.Search.GtkUI.SearchView.QueryDelay = 1500; Gtk.Settings.Default.SetLongProperty("gtk-button-images", 1, ""); // Создаем окно входа Login LoginDialog = new Login(); LoginDialog.Logo = Gdk.Pixbuf.LoadFromResource("Vodovoz.icons.logo.png"); LoginDialog.SetDefaultNames("Vodovoz"); LoginDialog.DefaultLogin = "******"; LoginDialog.DefaultServer = "sql.vod.qsolution.ru"; LoginDialog.UpdateFromGConf(); ResponseType LoginResult; LoginResult = (ResponseType)LoginDialog.Run(); if (LoginResult == ResponseType.DeleteEvent || LoginResult == ResponseType.Cancel) { return; } LoginDialog.Destroy(); PerformanceHelper.StartMeasurement("Замер запуска приложения"); GetPermissionsSettings(); //Настройка базы CreateBaseConfig(); PerformanceHelper.AddTimePoint(logger, "Закончена настройка базы"); VodovozGtkServicesConfig.CreateVodovozDefaultServices(); ParametersProvider.Instance.RefreshParameters(); #region Настройка обработки ошибок c параметрами из базы и сервисами var baseParameters = new BaseParametersProvider(); SingletonErrorReporter.Initialize( ReportWorker.GetReportService(), applicationInfo, new LogService(), LoginDialog.BaseName, LoginDialog.BaseName == baseParameters.GetDefaultBaseForErrorSend(), baseParameters.GetRowCountForErrorLog() ); var errorMessageModelFactoryWithUserService = new DefaultErrorMessageModelFactory(SingletonErrorReporter.Instance, ServicesConfig.UserService, UnitOfWorkFactory.GetDefaultFactory); exceptionHandler.InteractiveService = ServicesConfig.InteractiveService; exceptionHandler.ErrorMessageModelFactory = errorMessageModelFactoryWithUserService; //Настройка обычных обработчиков ошибок. exceptionHandler.CustomErrorHandlers.Add(CommonErrorHandlers.MySqlException1055OnlyFullGroupBy); exceptionHandler.CustomErrorHandlers.Add(CommonErrorHandlers.MySqlException1366IncorrectStringValue); exceptionHandler.CustomErrorHandlers.Add(CommonErrorHandlers.NHibernateFlushAfterException); exceptionHandler.CustomErrorHandlers.Add(ErrorHandlers.NHibernateStaleObjectStateExceptionHandler); exceptionHandler.CustomErrorHandlers.Add(ErrorHandlers.MySqlExceptionConnectionTimeoutHandler); exceptionHandler.CustomErrorHandlers.Add(ErrorHandlers.MySqlExceptionAuthHandler); #endregion //Настройка карты GMapProvider.UserAgent = String.Format("{0}/{1} used GMap.Net/{2} ({3})", applicationInfo.ProductName, applicationInfo.Version.VersionToShortString(), Assembly.GetAssembly(typeof(GMapProvider)).GetName().Version.VersionToShortString(), Environment.OSVersion.VersionString ); GMapProvider.Language = GMap.NET.LanguageType.Russian; PerformanceHelper.AddTimePoint(logger, "Закончена настройка карты."); DatePicker.CalendarFontSize = 16; DateRangePicker.CalendarFontSize = 16; OsmWorker.ServiceHost = "osm.vod.qsolution.ru"; OsmWorker.ServicePort = 7073; QS.Osm.Osrm.OsrmMain.ServerUrl = "http://osrm.vod.qsolution.ru:5000"; PerformanceHelper.StartPointsGroup("Главное окно"); var baseVersionChecker = new CheckBaseVersion(applicationInfo, new ParametersService(QS.Project.DB.Connection.ConnectionDB)); if (baseVersionChecker.Check()) { ServicesConfig.CommonServices.InteractiveService.ShowMessage(ImportanceLevel.Warning, baseVersionChecker.TextMessage, "Несовпадение версии"); return; } QSMain.CheckServer(null); // Проверяем настройки сервера PerformanceHelper.AddTimePoint("Закончена загрузка параметров базы и проверка версии."); AutofacClassConfig(); PerformanceHelper.AddTimePoint("Закончена настройка AutoFac."); if (QSMain.User.Login == "root") { string Message = "Вы зашли в программу под администратором базы данных. У вас есть только возможность создавать других пользователей."; MessageDialog md = new MessageDialog(null, DialogFlags.Modal, MessageType.Info, ButtonsType.Ok, Message); md.Run(); md.Destroy(); UsersDialog usersDlg = new UsersDialog(ServicesConfig.InteractiveService); usersDlg.Show(); usersDlg.Run(); usersDlg.Destroy(); return; } else { if (ChangePassword(LoginDialog.BaseName) && CanLogin()) { StartMainWindow(LoginDialog.BaseName); } else { return; } } PerformanceHelper.EndPointsGroup(); PerformanceHelper.AddTimePoint(logger, "Закончен старт SAAS. Конец загрузки."); QSSaaS.Session.StartSessionRefresh(); PerformanceHelper.AddTimePoint(logger, "Закончен старт SAAS. Конец загрузки."); PerformanceHelper.Main.PrintAllPoints(logger); Application.Run(); QSSaaS.Session.StopSessionRefresh(); ClearTempDir(); }
static async Task Main(string[] args) { // get connected string url = ConfigurationManager.AppSettings["url"]; if ((!url.EndsWith("/")) && (!url.EndsWith("\\"))) { url += "/"; } Console.Out.WriteLine($"Connecting to URL {url}"); client = new WindwardClient(new Uri(url)); VersionInfo version = await client.GetVersion(); Console.Out.WriteLine($"REST server version = {version}"); // if no arguments, then we list out the usage. if (args.Length < 2) { DisplayUsage(); return; } // the try here is so we can print out an exception if it is thrown. This code does minimal error checking and no other // exception handling to keep it simple & clear. try { Console.Out.WriteLine("Running in {0}-bit mode", IntPtr.Size * 8); // parse the arguments passed in. This method makes no calls to Windward, it merely organizes the passed in arguments. CommandLine cmdLine = CommandLine.Factory(args); // This turns on log4net logging. You can also call log4net.Config.XmlConfigurator.Configure(); directly. // If you do not make this call, then there will be no logging (which you may want off). var logRepository = LogManager.GetRepository(Assembly.GetEntryAssembly()); XmlConfigurator.Configure(logRepository, new FileInfo("RunReport.config")); logWriter.Info($"Starting RunReport ({string.Join(", ", args)})"); DateTime startTime = DateTime.Now; // run one report if (!cmdLine.IsPerformance) { PerfCounters perfCounters = await RunOneReport(cmdLine, args.Length == 2); PrintPerformanceCounter(startTime, perfCounters, false); } else { string dirReports = Path.GetDirectoryName(Path.GetFullPath(cmdLine.ReportFilename)) ?? ""; if (!Directory.Exists(dirReports)) { Console.Error.WriteLine($"The directory {dirReports} does not exist"); return; } // drop out threads - twice the number of cores. int numThreads = cmdLine.NumThreads; numReportsRemaining = cmdLine.NumReports; ReportWorker[] workers = new ReportWorker[numThreads]; for (int ind = 0; ind < numThreads; ind++) { workers[ind] = new ReportWorker(ind, new CommandLine(cmdLine)); } Task[] threads = new Task[numThreads]; for (int ind = 0; ind < numThreads; ind++) { threads[ind] = workers[ind].DoWork(); } Console.Out.WriteLine($"Start time: {startTime.ToLongTimeString()}, {numThreads} threads, {cmdLine.NumReports} reports"); Console.Out.WriteLine(); for (int ind = 0; ind < numThreads; ind++) { threads[ind].Start(); } // we wait await Task.WhenAll(threads); PerfCounters perfCounters = new PerfCounters(); for (int ind = 0; ind < numThreads; ind++) { perfCounters.Add(workers[ind].perfCounters); } Console.Out.WriteLine(); PrintPerformanceCounter(startTime, perfCounters, true); } } catch (Exception ex) { logWriter.Error("RunReport", ex); string indent = " "; Console.Error.WriteLine(); Console.Error.WriteLine("Error(s) running the report"); while (ex != null) { Console.Error.WriteLine($"{indent}Error: {ex.Message} ({ex.GetType().FullName})\n{indent} stack: {ex.StackTrace}\n"); ex = ex.InnerException; indent += " "; } throw; } }