use of name.abuchen.portfolio.datatransfer.Extractor in project portfolio by buchen.
the class FinTechGroupBankPDFExtractorTest method testWertpapierKauf.
@Test
public void testWertpapierKauf() throws IOException {
FinTechGroupBankPDFExtractor extractor = new FinTechGroupBankPDFExtractor(new Client());
List<Exception> errors = new ArrayList<Exception>();
List<Item> results = extractor.extract(PDFInputFile.loadTestCase(getClass(), "FlatexKauf.txt"), errors);
assertThat(errors, empty());
assertThat(results.size(), is(6));
new AssertImportActions().check(results, CurrencyUnit.EUR);
assertFirstSecurity(results.stream().filter(i -> i instanceof SecurityItem).findFirst());
assertFirstTransaction(results.stream().filter(i -> i instanceof BuySellEntryItem).findFirst());
assertSecondSecurity(//
results.stream().filter(i -> i instanceof SecurityItem).collect(Collectors.toList()).get(1));
assertSecondTransaction(results.stream().filter(i -> i instanceof BuySellEntryItem).collect(Collectors.toList()).get(1));
assertThirdTransaction(//
results.stream().filter(i -> i instanceof BuySellEntryItem).collect(Collectors.toList()).get(2));
assertFourthTransaction(//
results.stream().filter(i -> i instanceof TransactionItem).collect(Collectors.toList()).get(0));
}
use of name.abuchen.portfolio.datatransfer.Extractor in project portfolio by buchen.
the class FinTechGroupBankPDFExtractorTest method testWertpapierKauf3.
@Test
public void testWertpapierKauf3() throws IOException {
FinTechGroupBankPDFExtractor extractor = new FinTechGroupBankPDFExtractor(new Client());
List<Exception> errors = new ArrayList<Exception>();
List<Item> results = extractor.extract(PDFInputFile.loadTestCase(getClass(), "FlatexKauf3.txt"), errors);
assertThat(errors, empty());
assertThat(results.size(), is(2));
Optional<Item> item;
// security
item = results.stream().filter(i -> i instanceof SecurityItem).findFirst();
assertThat(item.isPresent(), is(true));
Security security = ((SecurityItem) item.get()).getSecurity();
assertThat(security.getIsin(), is("IE00B2QWCY14"));
assertThat(security.getWkn(), is("A0Q1YY"));
assertThat(security.getName(), is("ISHSIII-S+P SM.CAP600 DLD"));
PortfolioTransaction transaction = results.stream().filter(i -> i instanceof Extractor.BuySellEntryItem).map(i -> (BuySellEntry) ((Extractor.BuySellEntryItem) i).getSubject()).map(b -> b.getPortfolioTransaction()).findAny().get();
assertThat(transaction.getType(), is(PortfolioTransaction.Type.BUY));
assertThat(transaction.getAmount(), is(Values.Amount.factorize(1050)));
assertThat(transaction.getDateTime(), is(LocalDateTime.parse("2016-12-15T00:00")));
assertThat(transaction.getUnitSum(Unit.Type.FEE), is(Money.of("EUR", Values.Amount.factorize(0))));
assertThat(transaction.getShares(), is(Values.Share.factorize(19.334524)));
}
use of name.abuchen.portfolio.datatransfer.Extractor in project portfolio by buchen.
the class FinTechGroupBankPDFExtractorTest method testDividendeAusland.
@Test
public void testDividendeAusland() throws IOException {
FinTechGroupBankPDFExtractor extractor = new FinTechGroupBankPDFExtractor(new Client());
List<Exception> errors = new ArrayList<Exception>();
List<Item> results = extractor.extract(PDFInputFile.loadTestCase(getClass(), "FinTechGroupBankDividendeAusland1.txt"), errors);
assertThat(errors, empty());
assertThat(results.size(), is(2));
// security
Optional<Item> item = results.stream().filter(i -> i instanceof SecurityItem).findFirst();
assertThat(item.isPresent(), is(true));
Security security = ((SecurityItem) item.get()).getSecurity();
assertThat(security.getIsin(), is("US8552441094"));
assertThat(security.getWkn(), is("884437"));
assertThat(security.getName(), is("STARBUCKS CORP."));
item = results.stream().filter(i -> i instanceof TransactionItem).findFirst();
assertThat(item.isPresent(), is(true));
assertThat(item.get().getSubject(), instanceOf(AccountTransaction.class));
AccountTransaction transaction = (AccountTransaction) item.get().getSubject();
assertThat(transaction.getType(), is(AccountTransaction.Type.DIVIDENDS));
assertThat(transaction.getSecurity(), is(security));
assertThat(transaction.getDateTime(), is(LocalDateTime.parse("2017-08-25T00:00")));
assertThat(transaction.getAmount(), is(Values.Amount.factorize(14.45)));
assertThat(transaction.getUnitSum(Unit.Type.TAX), is(Money.of(CurrencyUnit.EUR, Values.Amount.factorize(7.78))));
assertThat(transaction.getShares(), is(Values.Share.factorize(105)));
}
use of name.abuchen.portfolio.datatransfer.Extractor in project portfolio by buchen.
the class ImportIBHandler method execute.
@Execute
public void execute(@Named(IServiceConstants.ACTIVE_PART) MPart part, @Named(IServiceConstants.ACTIVE_SHELL) Shell shell) throws IOException {
Client client = MenuHelper.getActiveClient(part);
if (client == null)
return;
try {
Extractor extractor = new IBFlexStatementExtractor(client);
FileDialog fileDialog = new FileDialog(shell, SWT.OPEN | SWT.MULTI);
fileDialog.setText(extractor.getLabel());
fileDialog.setFilterNames(new String[] { // $NON-NLS-1$
MessageFormat.format("{0} ({1})", extractor.getLabel(), extractor.getFilterExtension()) });
fileDialog.setFilterExtensions(new String[] { extractor.getFilterExtension() });
fileDialog.open();
String[] filenames = fileDialog.getFileNames();
if (filenames.length == 0)
return;
List<Extractor.InputFile> files = new ArrayList<>();
for (String filename : filenames) files.add(new Extractor.InputFile(new File(fileDialog.getFilterPath(), filename)));
IPreferenceStore preferences = ((PortfolioPart) part.getObject()).getPreferenceStore();
Dialog wizwardDialog = new WizardDialog(Display.getDefault().getActiveShell(), new ImportExtractedItemsWizard(client, extractor, preferences, files));
wizwardDialog.open();
} catch (IllegalArgumentException e) {
PortfolioPlugin.log(e);
MessageDialog.openError(shell, Messages.LabelError, e.getMessage());
}
}
use of name.abuchen.portfolio.datatransfer.Extractor in project portfolio by buchen.
the class ImportExtractedItemsWizard method assignFilesToExtractors.
private void assignFilesToExtractors(Map<Extractor, List<Extractor.InputFile>> extractor2files) {
List<Extractor.InputFile> unknown = new ArrayList<>();
for (Extractor.InputFile file : files) {
PDFInputFile inputFile = (PDFInputFile) file;
Extractor extractor = PDFImportAssistant.detectBankIdentifier(inputFile, extractors);
if (extractor != null)
extractor2files.computeIfAbsent(extractor, k -> new ArrayList<>()).add(inputFile);
else
unknown.add(inputFile);
}
if (!unknown.isEmpty()) {
Extractor e = new AssistantPDFExtractor(client, new ArrayList<>(extractors));
extractors.add(e);
extractor2files.put(e, unknown);
}
}
Aggregations