public MainPresenter(IView view, IViewSettings parseSettings, IMessageService messageService) { _view = view; _parseSettings = parseSettings; _messageService = messageService; _parseSettings.Start += _parseSettings_Start; _parseSettings.Close += _parseSettings_Closing; _view.NewParcing += _view_NewParcing; _view.SaveData += _view_SaveData; _view.ReadAllData += _view_ReadData; _mainForm = _view.GetForm(); _parserController = ParserControllerBuilder.GetController <DataTable>("mock", null, null, ParserType.Agility); _parserController.NewDataReceived += _parserController_NewDataReceived; }
private async void _parseSettings_Start(object sender, ParsingSettings e) { if (String.IsNullOrWhiteSpace(e.Url) && string.IsNullOrWhiteSpace(e.Source)) { _messageService.ShowError("Данные для парсинга отсутствуют!"); return; } else if (e.Tags.Length == 0) { _messageService.ShowError("Теги для парсинга отсутствуют!"); return; } else if (e.Attributes.Length == 0) { _messageService.ShowError("Атрибуты для парсинга отсутствуют!"); return; } else if (string.IsNullOrWhiteSpace(e.Source) & !(Uri.TryCreate(e.Url, UriKind.Absolute, out Uri uri))) { _messageService.ShowError("Данный URL не валидный!"); return; } string[] attrs = e.Attributes; _settings = new ParserSettings(e.Tags, attrs); ParserType parserType; try { parserType = (ParserType)e.ParserType; } catch (InvalidCastException ex) { _messageService.ShowError(ex.Message); return; } try { _parserController = ParserControllerBuilder.GetController <DataTable>(e.Url, e.Source, _settings, parserType); _parserController.NewDataReceived += _parserController_NewDataReceived; } catch (NotSupportedException ex) { _messageService.ShowError(ex.Message); return; } catch (NullReferenceException ex) { _messageService.ShowError(ex.Message); return; } _parseSettings.HideForm(); bool parsingState = false; try { _view.Reset(); _view.Write(DateTime.UtcNow.ToLongTimeString() + " || Выполняется парсинг...."); await _parserController.ParseAsync(); parsingState = true; } catch (ArgumentNullException ex) { _messageService.ShowError(ex.Message); _view.Write(DateTime.UtcNow.ToLongTimeString() + " ---- Во время парсинга возникла ошибка!"); parsingState = false; } finally { _view.Write(DateTime.UtcNow.ToLongTimeString() + " || Парсинг " + ((parsingState) ? "успешно " : "не ") + "выполнен"); _view.ToggleToolStripBusy(false); } }