Class AbstractPdfExtractor

java.lang.Object
de.frankmuenster.mahoe.pdfextractor.AbstractPdfExtractor
Direct Known Subclasses:
SantanderPdfExtractor, TargoBankPdfExtractor

public abstract class AbstractPdfExtractor extends Object
Der Abstracter PDFExtractor. Konkrete auf die Bank angepasste Extraktoren müssen von dieser Klasse abgeleitet werden.
Author:
Frank Münster
  • Field Details

    • MAX_ONE_WORD

      protected static final int MAX_ONE_WORD
      Threshold PDFBox value for keeping one word in one line.
      See Also:
    • MAX_TWO_WORD

      protected static final int MAX_TWO_WORD
      Threshold PDFBox value for keeping 2 words in one line.
      See Also:
    • WORT_DELIMITER

      protected static final String WORT_DELIMITER
      The delimiter in the return string from the PDFBox extraction separating the positions and description values.
      See Also:
    • 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:
    • rechungsDatum

      protected String rechungsDatum
      Date of the bank statement
    • buchungsDaten

      protected List<PdfEintrag> buchungsDaten
      List of effective dates for entries
    • numFormat

      protected final NumberFormat numFormat
      Dezimalformatierer des Saldos
    • document

      protected org.apache.pdfbox.pdmodel.PDDocument document
      Das PDF Document
    • kartenNummer

      protected final String kartenNummer
      Die Kreditkartennummer
    • lastPage

      protected int lastPage
      Last with transactions
  • Constructor Details

    • AbstractPdfExtractor

      protected AbstractPdfExtractor(byte[] byteArray, String kartenNummer)
      Constructs a new extractor with a byte array for teh given card number.
      Parameters:
      byteArray -
      kartenNummer -
    • AbstractPdfExtractor

      protected AbstractPdfExtractor(InputStream inputStream, 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 Details

    • close

      public void close()
      Schließt das PDF Dokument
    • getBic

      public 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 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 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(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 IOException
      Liefert die PDFPage der geraden Seiten des Auszugs. Muss von der Unterklasse implementiert werden.
      Returns:
      die AbstractBankPDFPage der geraden Seiten des Auszugs
      Throws:
      IOException
    • getBankPdfPageFirst

      protected abstract AbstractBankPDFPage getBankPdfPageFirst() throws IOException
      Liefert die PDFPage der ersten Seite des Auszugs. Muss von der Unterklasse implementiert werden.
      Returns:
      die AbstractBankPDFPage der ersten Seite des Auszugs
      Throws:
      IOException
    • getBankPdfPageOdd

      protected abstract AbstractBankPDFPage getBankPdfPageOdd() throws IOException
      Liefert die PDFPage der ungeraden Seiten des Auszugs. Muss von der Unterklasse implementiert werden.
      Returns:
      die AbstractBankPDFPage der ungeraden Seiten des Auszugs
      Throws:
      IOException
    • getBeschreibungen

      protected 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 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 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 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 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 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 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 IOException
      Liefert die letzte Seite mit Umsätzen
      Returns:
      die letzte Seite mit Umsätzen
      Throws:
      IOException
    • getNumberFormat

      protected abstract NumberFormat getNumberFormat()
      Liefert das NumberFormat zum Parsen des Saldos. Muss von der Unterklasse implementiert werden.
      Returns:
      das NumberFormat zum Parsen des Saldos
    • getRechungsDatum

      protected 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 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(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(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(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 -