Class AbstractPdfExtractor
- java.lang.Object
-
- de.frankmuenster.mahoe.pdfextractor.AbstractPdfExtractor
-
- Direct Known Subclasses:
SantanderPdfExtractor
,TargoBankPdfExtractor
public abstract class AbstractPdfExtractor extends java.lang.Object
Der Abstracter PDFExtractor. Konkrete auf die Bank angepasste Extraktoren müssen von dieser Klasse abgeleitet werden.- Author:
- Frank Münster
-
-
Field Summary
Fields Modifier and Type Field Description protected java.util.List<PdfEintrag>
buchungsDaten
List of effective dates for entriesprotected org.apache.pdfbox.pdmodel.PDDocument
document
Das PDF Documentprotected java.lang.String
kartenNummer
Die Kreditkartennummerprotected int
lastPage
Last with transactionsprotected static int
MAX_ONE_WORD
Threshold PDFBox value for keeping one word in one line.protected static int
MAX_TWO_WORD
Threshold PDFBox value for keeping 2 words in one line.protected java.text.NumberFormat
numFormat
Dezimalformatierer des Saldosprotected java.lang.String
rechungsDatum
Date of the bank statementprotected static java.lang.String
WORT_DELIMITER
The delimiter in the return string from the PDFBox extraction separating the positions and description values.protected static int
WORT_INFO_LENGTH
Ein extrahiertes Wort muss genau 3 Felder haben: PosX, PosY und das eigentliche Wort.
-
Constructor Summary
Constructors Modifier Constructor Description protected
AbstractPdfExtractor(byte[] byteArray, java.lang.String kartenNummer)
Constructs a new extractor with a byte array for teh given card number.protected
AbstractPdfExtractor(java.io.InputStream inputStream, java.lang.String kartenNummer)
Abstracter Konstruktor mit Angabe des PDF inputStreams und der Kartennummer.
-
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description protected abstract void
addYear(java.util.List<PdfEintrag> entries)
Adds the year to each entry as this is might be not enclosed in the PDF bank statement entries.void
close()
Schließt das PDF Dokumentprotected abstract AbstractBankPDFPage
getBankPdfPageEven()
Liefert die PDFPage der geraden Seiten des Auszugs.protected abstract AbstractBankPDFPage
getBankPdfPageFirst()
Liefert die PDFPage der ersten Seite des Auszugs.protected abstract AbstractBankPDFPage
getBankPdfPageOdd()
Liefert die PDFPage der ungeraden Seiten des Auszugs.protected java.util.List<PdfEintrag>
getBeschreibungen(AbstractBankPDFPage textAreas)
Read all transaction description and removes found text after the endprotected java.util.List<PdfEintrag>
getBetraege(AbstractBankPDFPage textAreas)
Liefert die Beträge der Umsä auf dem PDFjava.lang.String
getBic(AbstractBankPDFPage textAreas)
Liefert die BIC des PDF-Auszugesprotected java.util.List<PdfEintrag>
getBuchungsDaten(AbstractBankPDFPage textAreas)
Inspects the page to retrieve all transaction booking dates.java.util.List<PdfBuchung>
getExtract()
Extracts all entries from the PDF bank statement and returns them in as a PdfBuchung list.protected java.util.List<PdfEintrag>
getFremdwaehrungen(AbstractBankPDFPage textAreas)
Liefert die Fremdwährungen.protected java.util.List<PdfEintrag>
getFremdwaehrungsBetraege(AbstractBankPDFPage textAreas)
Liefert den Fremdwährungbetrag.java.lang.String
getIban(AbstractBankPDFPage textAreas)
Liefert die IBAN des PDF-Auszugesprotected java.lang.String
getKarteninhaber(AbstractBankPDFPage textAreas)
Liefert den Karteninhaber des PDF-Auszugesprotected java.lang.String
getKartenkonto(AbstractBankPDFPage textAreas)
Liefert das Kartenkonto des PDF-Auszugesprotected abstract int
getLastPage()
Liefert die letzte Seite mit Umsätzenprotected abstract java.text.NumberFormat
getNumberFormat()
Liefert das NumberFormat zum Parsen des Saldos.protected java.lang.String
getRechungsDatum(AbstractBankPDFPage textAreas)
Retrieves a 'standard' date, thus a single word date without any spaces.
Can be overwritten in case the date something else.protected java.math.BigDecimal
getSaldo(AbstractBankPDFPage textAreas)
Liefert das Saldo des Auszugesprotected abstract AbstractTransactionCreator
getTransactionCreator()
Liefert den konkreten TransactionCreator der Bank.protected abstract void
removeAnnotations(java.util.List<PdfEintrag> eintragsListe)
Hier kann eine konkrete Implementierung noch Änderungen an der anderen Listen vornehmen.protected abstract void
removeAnnotationsBookingDates(java.util.List<PdfEintrag> buchungenDatum)
Hier kann eine konkrete Implementierung noch Änderungen an der Liste der Buchungsdaten vornehmen.protected abstract void
reOrder(java.util.List<PdfBuchung> buchungen)
Here a concrete implementation can add an order mechanism to the transaction list before the saldo is calculated.
-
-
-
Field Detail
-
MAX_ONE_WORD
protected static final int MAX_ONE_WORD
Threshold PDFBox value for keeping one word in one line.- See Also:
- Constant Field Values
-
MAX_TWO_WORD
protected static final int MAX_TWO_WORD
Threshold PDFBox value for keeping 2 words in one line.- See Also:
- Constant Field Values
-
WORT_DELIMITER
protected static final java.lang.String WORT_DELIMITER
The delimiter in the return string from the PDFBox extraction separating the positions and description values.- See Also:
- Constant Field Values
-
WORT_INFO_LENGTH
protected static final int WORT_INFO_LENGTH
Ein extrahiertes Wort muss genau 3 Felder haben: PosX, PosY und das eigentliche Wort.- See Also:
- Constant Field Values
-
rechungsDatum
protected java.lang.String rechungsDatum
Date of the bank statement
-
buchungsDaten
protected java.util.List<PdfEintrag> buchungsDaten
List of effective dates for entries
-
numFormat
protected final java.text.NumberFormat numFormat
Dezimalformatierer des Saldos
-
document
protected org.apache.pdfbox.pdmodel.PDDocument document
Das PDF Document
-
kartenNummer
protected final java.lang.String kartenNummer
Die Kreditkartennummer
-
lastPage
protected int lastPage
Last with transactions
-
-
Constructor Detail
-
AbstractPdfExtractor
protected AbstractPdfExtractor(byte[] byteArray, java.lang.String kartenNummer)
Constructs a new extractor with a byte array for teh given card number.- Parameters:
byteArray
-kartenNummer
-
-
AbstractPdfExtractor
protected AbstractPdfExtractor(java.io.InputStream inputStream, java.lang.String kartenNummer)
Abstracter Konstruktor mit Angabe des PDF inputStreams und der Kartennummer. Sollte von der konkreten Implementierung aufgerufen werden.- Parameters:
inputStream
- das PDF als inputStream.kartenNummer
- die Kartennummer gegen die das PDF geprüft wird.
-
-
Method Detail
-
close
public void close()
Schließt das PDF Dokument
-
getBic
public java.lang.String getBic(AbstractBankPDFPage textAreas)
Liefert die BIC des PDF-Auszuges- Parameters:
textAreas
- die Textarea in der die BIC-Position definiert ist.- Returns:
- die BIC
-
getExtract
public java.util.List<PdfBuchung> getExtract() throws InvalidCardNumberException
Extracts all entries from the PDF bank statement and returns them in as a PdfBuchung list.- Returns:
- a List of PdfBuchung with all found entries.
- Throws:
InvalidCardNumberException
-
getIban
public java.lang.String getIban(AbstractBankPDFPage textAreas)
Liefert die IBAN des PDF-Auszuges- Parameters:
textAreas
- die Textarea in der die IBAN-Position definiert ist.- Returns:
- die IBAN
-
addYear
protected abstract void addYear(java.util.List<PdfEintrag> entries)
Adds the year to each entry as this is might be not enclosed in the PDF bank statement entries.- Parameters:
entries
-
-
getBankPdfPageEven
protected abstract AbstractBankPDFPage getBankPdfPageEven() throws java.io.IOException
Liefert die PDFPage der geraden Seiten des Auszugs. Muss von der Unterklasse implementiert werden.- Returns:
- die AbstractBankPDFPage der geraden Seiten des Auszugs
- Throws:
java.io.IOException
-
getBankPdfPageFirst
protected abstract AbstractBankPDFPage getBankPdfPageFirst() throws java.io.IOException
Liefert die PDFPage der ersten Seite des Auszugs. Muss von der Unterklasse implementiert werden.- Returns:
- die AbstractBankPDFPage der ersten Seite des Auszugs
- Throws:
java.io.IOException
-
getBankPdfPageOdd
protected abstract AbstractBankPDFPage getBankPdfPageOdd() throws java.io.IOException
Liefert die PDFPage der ungeraden Seiten des Auszugs. Muss von der Unterklasse implementiert werden.- Returns:
- die AbstractBankPDFPage der ungeraden Seiten des Auszugs
- Throws:
java.io.IOException
-
getBeschreibungen
protected java.util.List<PdfEintrag> getBeschreibungen(AbstractBankPDFPage textAreas)
Read all transaction description and removes found text after the end- Parameters:
textAreas
- the area to extract the transaction description region from- Returns:
- a list with all found transaction description
-
getBetraege
protected java.util.List<PdfEintrag> getBetraege(AbstractBankPDFPage textAreas)
Liefert die Beträge der Umsä auf dem PDF- Parameters:
textAreas
- die TextAre ader Beträge.- Returns:
- Liefert die Beträge
-
getBuchungsDaten
protected java.util.List<PdfEintrag> getBuchungsDaten(AbstractBankPDFPage textAreas)
Inspects the page to retrieve all transaction booking dates.- Parameters:
textAreas
- the TextStripperArea to inspect- Returns:
- a list of
PdfEintrag>
with all found booking dates
-
getFremdwaehrungen
protected java.util.List<PdfEintrag> getFremdwaehrungen(AbstractBankPDFPage textAreas)
Liefert die Fremdwährungen. Kann von Unterklassen überschrieben werden.- Parameters:
textAreas
- Der Textbereich mit den Fremdwährungen.- Returns:
- List mit allen gefundenen Fremdwährungen
-
getFremdwaehrungsBetraege
protected java.util.List<PdfEintrag> getFremdwaehrungsBetraege(AbstractBankPDFPage textAreas)
Liefert den Fremdwährungbetrag. Kann von Unterklassen überschrieben werden.- Parameters:
textAreas
- Der Textbereich mit den Fremdwährungsbeträgen.- Returns:
- List mit allen gefundenen Fremdwährungsbeträgen
-
getKarteninhaber
protected java.lang.String getKarteninhaber(AbstractBankPDFPage textAreas)
Liefert den Karteninhaber des PDF-Auszuges- Parameters:
textAreas
- die TextArea mit dem Karteninhaber- Returns:
- dde Karteninhaber des PDF-Auszuges
-
getKartenkonto
protected java.lang.String getKartenkonto(AbstractBankPDFPage textAreas)
Liefert das Kartenkonto des PDF-Auszuges- Parameters:
textAreas
- die TextArea mit der Kartenkonto- Returns:
- das Kartenkonto des PDF-Auszuges
-
getLastPage
protected abstract int getLastPage() throws java.io.IOException
Liefert die letzte Seite mit Umsätzen- Returns:
- die letzte Seite mit Umsätzen
- Throws:
java.io.IOException
-
getNumberFormat
protected abstract java.text.NumberFormat getNumberFormat()
Liefert das NumberFormat zum Parsen des Saldos. Muss von der Unterklasse implementiert werden.- Returns:
- das NumberFormat zum Parsen des Saldos
-
getRechungsDatum
protected java.lang.String getRechungsDatum(AbstractBankPDFPage textAreas) throws PdfExtractorException
Retrieves a 'standard' date, thus a single word date without any spaces.
Can be overwritten in case the date something else.- Parameters:
textAreas
-- Returns:
- the parsed invoice date
- Throws:
PdfExtractorException
- in case the date cannot be parsed
-
getSaldo
protected java.math.BigDecimal getSaldo(AbstractBankPDFPage textAreas)
Liefert das Saldo des Auszuges- Parameters:
textAreas
- die textArea mit dem Saldo- Returns:
- das Saldo
-
getTransactionCreator
protected abstract AbstractTransactionCreator getTransactionCreator()
Liefert den konkreten TransactionCreator der Bank. Muss von der Unterklasse implementiert werden.- Returns:
- der konkreten TransactionCreator der Bank
-
removeAnnotations
protected abstract void removeAnnotations(java.util.List<PdfEintrag> eintragsListe)
Hier kann eine konkrete Implementierung noch Änderungen an der anderen Listen vornehmen. Zum Beispiel Kommentare/Werbung entfernen.- Parameters:
eintragsListe
-
-
removeAnnotationsBookingDates
protected abstract void removeAnnotationsBookingDates(java.util.List<PdfEintrag> buchungenDatum)
Hier kann eine konkrete Implementierung noch Änderungen an der Liste der Buchungsdaten vornehmen. Zum Beispiel Kommentare/Werbung entfernen.- Parameters:
buchungenDatum
-
-
reOrder
protected abstract void reOrder(java.util.List<PdfBuchung> buchungen)
Here a concrete implementation can add an order mechanism to the transaction list before the saldo is calculated. IMPORTANT: The newest transaction must be on top due to saldo calculation.- Parameters:
buchungen
-
-
-