Class 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 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
      • 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 -