public TransactionsController(
     ILogger <TransactionsController> logger,
     IStatementParser statementParser,
     IClean transactionCleaner)
 {
     _statementParser    = statementParser;
     _transactionCleaner = transactionCleaner;
 }
示例#2
0
        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.");
        }
示例#3
0
        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);
        }
示例#4
0
        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);
                }
            }
        }
示例#5
0
        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);
                }
            }
        }
示例#6
0
        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);
        }