public TransactionsController( ILogger <TransactionsController> logger, IStatementParser statementParser, IClean transactionCleaner) { _statementParser = statementParser; _transactionCleaner = transactionCleaner; }
private void StartButton_Click(object sender, RoutedEventArgs e) { IStatementParser parser = null; switch (StatementTypeComboBox.SelectionBoxItem.ToString()) { case "DES Visa": parser = new StatementParserForDejardingsVisa(); break; case "RBC Chequing": parser = new StatementParserForRbcChecking(); break; case "RBC Visa": parser = new StatementParserForRbcVisa(); break; } if (parser == null) { MessageBox.Show("Statement type is not supported."); return; } LogTextBox.Clear(); Log("Started..."); var path = InputFolderTextBox.Text; //Saving the path var s = new Settings { Path = path, StatementType = StatementTypeComboBox.SelectedItem.ToString(), }; s.Save(); ProcessFiles(Path.Combine(InputFolderTextBox.Text), parser, GeneratePdfTextFilesCheckBox.IsChecked == true); Log("Done."); }
private async Task <Dictionary <string, DataContainer> > ParseStatement(IStatementParser parser, string flexqText, ProgressDialogController progress) { Dictionary <string, DataContainer> newData = null; try { await Task.Run(() => newData = parser.Parse(flexqText, progress, _settings, _currencies)); } catch (Exception ex) { progress.CloseAsync().Forget(); _dialogService.ShowMessageAsync(_mainVm, "Error", ex.Message).Forget(); _logger.Error(ex, "Flex file parse error"); return(null); } progress.SetMessage("Updating open trades"); return(newData); }
private void ProcessFiles(string path, IStatementParser parser, bool generateInterimFiles) { if (!Directory.Exists(path)) { Log("ERROR: Path does not exist: " + path); return; } var outputFilename = Path.Combine(path, "output.txt"); using (var outputFile = new StreamWriter(outputFilename, false, Encoding.UTF8)) { foreach (var filename in Directory.GetFiles(path, "*.pdf")) { Log(filename); var statement = parser.ExtractStatement(filename, generateInterimFiles); statement.WriteStatementToCsv(outputFile); } } }
public virtual INode Parse(Token token) { var currentNode = NodeFactory.CreateNode(AttributeName); parser.NextToken(); while (parser.CurrentToken.Keyword != KeywordToken.ENDING_ELEMENT && parser.CurrentToken.Keyword != KeywordToken.EOF && parser.CurrentToken.Keyword != KeywordToken.ShortClose) { IAttributeStatementParser attributeNode = null; switch (parser.CurrentToken.Keyword) { // parse attributes case KeywordToken.StringLiteral: attributeNode = new UnknownStringLiteralAttribute(parser); break; case KeywordToken.Value: attributeNode = new ValueAttribute(parser); break; default: parser.NextToken(); break; } if (attributeNode != null) { currentNode.SetAttribute(attributeNode.AttributeName, attributeNode.Parse(parser.CurrentToken).GetAttribute("value")); } } if (parser.CurrentToken.Keyword == KeywordToken.ENDING_ELEMENT) { // if we are not at the end of the file or at the end tag of the of the current tag. go into the while // if we are at the end of the current tag, stop collecting children for the current tag while (parser.CurrentToken.Keyword != KeywordToken.EOF && parser.CurrentToken.Keyword != KeywordToken.Close ) { // we are in the body of the element parser.NextToken(); IStatementParser elementNode = null; switch (parser.CurrentToken.Keyword) { case KeywordToken.StringLiteral: elementNode = new StringLiteralStatementParser(parser); break; case KeywordToken.Paragraph: elementNode = new ParagraphStatementParser(parser); break; case KeywordToken.PreviousParagraph: elementNode = new PreviousParagraphStatementParser(parser); break; case KeywordToken.Color: elementNode = new ColorStatementNode(parser); break; case KeywordToken.Text: elementNode = new TextStatementParser(parser); break; case KeywordToken.Italic: elementNode = new ItalicStatementParser(parser); break; case KeywordToken.ParagraphStyle: elementNode = new ParagraphStyleStatementParser(parser); break; case KeywordToken.Unknown: elementNode = new UnknownElementParser(parser); break; case KeywordToken.Bold: elementNode = new GenericElementNode(parser, KeywordToken.Bold); break; case KeywordToken.Run: elementNode = new GenericElementNode(parser, KeywordToken.Run); break; case KeywordToken.Size: elementNode = new GenericElementNode(parser, KeywordToken.Size); break; } if (elementNode != null) { currentNode.AddChild(elementNode.Parse(parser.CurrentToken)); } } parser.NextToken(); } return(currentNode); }