Exemple #1
0
        protected override void OnStop()
        {
            base.OnStop();

            ReportWorker.Stop();
            ReportHoster.Stop();

            ELogger.SNG.WriteLog("server service stop...");
        }
Exemple #2
0
        //-------------------------------------------------------------------------------------------------------------------------
        //
        //-------------------------------------------------------------------------------------------------------------------------
        protected override void OnStart(string[] args)
        {
            ELogger.SNG.WriteLog("server service start...");

            ReportHoster.Start();
            ReportWorker.Start();

            base.OnStart(args);
        }
Exemple #3
0
        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");
            }
        }
Exemple #4
0
        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"
            }));
        }
Exemple #6
0
        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();
        }
        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);
                }
            }
        }
Exemple #8
0
        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;
            }
        }