Class AbstractHBCIJob

    • Method Detail

      • setLlParams

        public void setLlParams​(Map<String,​String> llParams)
      • getHBCICode

        public String getHBCICode()
      • getHBCICode

        public String getHBCICode​(boolean reduce)
      • getJobName

        public String getJobName()
      • canNationalAcc

        protected boolean canNationalAcc​(HBCIPassportInternal passport)
        Durchsucht das BPD-Segment "HISPAS" nach dem Property "cannationalacc" um herauszufinden, ob beim Versand eines SEPA-Auftrages die nationale Bankverbindung angegeben sein darf.

        Siehe FinTS_3.0_Messages_Geschaeftsvorfaelle_2013-05-28_final_version.pdf - Kapitel B.3.2

        Parameters:
        passport - passport
        Returns:
        true, wenn der BPD-Parameter von der Bank mit "J" befuellt ist und die nationale Bankverbindung angegeben sein darf.
      • getMaxNumberPerMsg

        public int getMaxNumberPerMsg()
      • addConstraint

        protected void addConstraint​(String frontendName,
                                     String destinationName,
                                     String defValue)
      • addConstraint

        protected void addConstraint​(String frontendName,
                                     String destinationName,
                                     String defValue,
                                     boolean indexed)
      • verifyConstraints

        public void verifyConstraints()
      • getJobRestrictions

        public Map<String,​String> getJobRestrictions()

        Gibt für einen Job alle bekannten Einschränkungen zurück, die bei der Ausführung des jeweiligen Jobs zu beachten sind. Diese Daten werden aus den Bankparameterdaten des aktuellen Passports extrahiert. Sie können von einer HBCI-Anwendung benutzt werden, um gleich entsprechende Restriktionen bei der Eingabe von Geschäftsvorfalldaten zu erzwingen (z.B. die maximale Anzahl von Verwendungszweckzeilen, ob das Ändern von terminierten Überweisungen erlaubt ist usw.).

        Die einzelnen Einträge des zurückgegebenen Properties-Objektes enthalten als Key die Bezeichnung einer Restriktion (z.B. "maxusage"), als Value wird der entsprechende Wert eingestellt. Die Bedeutung der einzelnen Restriktionen ist zur Zeit nur der HBCI-Spezifikation zu entnehmen. In späteren Programmversionen werden entsprechende Dokumentationen zur internen HBCI-Beschreibung hinzugefügt, so dass dafür eine Abfrageschnittstelle implementiert werden kann.

        Returns:
        Properties-Objekt mit den einzelnen Restriktionen
      • setParam

        public void setParam​(String paramname,
                             Konto acc)
        Setzen eines komplexen Job-Parameters (Kontodaten). Einige Jobs benötigten Kontodaten als Parameter. Diese müssten auf "normalem" Wege durch drei Aufrufe von setParam(String, String) erzeugt werden (je einer für die Länderkennung, die Bankleitzahl und die Kontonummer). Durch Verwendung dieser Methode wird dieser Weg abgekürzt. Es wird ein Kontoobjekt übergeben, für welches die entsprechenden drei setParam(String,String)-Aufrufe automatisch erzeugt werden.
        Parameters:
        paramname - die Basis der Parameter für die Kontodaten (für "my.country", "my.blz", "my.number" wäre das also "my")
        acc - ein Konto-Objekt, aus welchem die zu setzenden Parameterdaten entnommen werden
      • setParam

        public void setParam​(String paramname,
                             Value v)
        Setzen eines komplexen Job-Parameters (Geldbetrag). Einige Jobs benötigten Geldbeträge als Parameter. Diese müssten auf "normalem" Wege durch zwei Aufrufe von setParam(String, String) erzeugt werden (je einer für den Wert und die Währung). Durch Verwendung dieser Methode wird dieser Weg abgekürzt. Es wird ein Value-Objekt übergeben, für welches die entsprechenden zwei setParam(String,String)-Aufrufe automatisch erzeugt werden.
        Parameters:
        paramname - die Basis der Parameter für die Geldbetragsdaten (für "btg.value" und "btg.curr" wäre das also "btg")
        v - ein Value-Objekt, aus welchem die zu setzenden Parameterdaten entnommen werden
      • setParam

        public void setParam​(String paramName,
                             Date date)
        Setzen eines Job-Parameters, bei dem ein Datums als Wert erwartet wird. Diese Methode dient als Wrapper für setParam(String, String), um das Datum in einen korrekt formatierten String umzuwandeln. Das "richtige" Datumsformat ist dabei abhängig vom aktuellen Locale.
        Parameters:
        paramName - Name des zu setzenden Job-Parameters
        date - Datum, welches als Wert für den Job-Parameter benutzt werden soll
      • setParam

        public void setParam​(String paramName,
                             int i)
        Setzen eines Job-Parameters, bei dem ein Integer-Wert Da als Wert erwartet wird. Diese Methode dient nur als Wrapper für setParam(String, String).
        Parameters:
        paramName - Name des zu setzenden Job-Parameters
        i - Integer-Wert, der als Wert gesetzt werden soll
      • setParam

        public void setParam​(String paramName,
                             String value)

        Setzen eines Job-Parameters. Für alle Highlevel-Jobs ist in der Package-Beschreibung zum Package org.kapott.hbci.GV eine Auflistung aller Jobs und deren Parameter zu finden. Für alle Lowlevel-Jobs kann eine Liste aller Parameter entweder mit dem Tool ShowLowlevelGVs ermittelt werden.

        Bei Verwendung dieser oder einer der anderen setParam()-Methoden werden zusätzlich einige der Job-Restriktionen (siehe getJobRestrictions()) analysiert. Beim Verletzen einer der überprüften Einschränkungen wird eine Exception mit einer entsprechenden Meldung erzeugt. Diese Überprüfung findet allerdings nur bei Highlevel-Jobs statt.

        Parameters:
        paramName - der Name des zu setzenden Parameters.
        value - Wert, auf den der Parameter gesetzt werden soll
      • setParam

        public void setParam​(String paramName,
                             Integer index,
                             String value)

        Setzen eines Job-Parameters. Für alle Highlevel-Jobs ist in der Package-Beschreibung zum Package org.kapott.hbci.GV eine Auflistung aller Jobs und deren Parameter zu finden. Für alle Lowlevel-Jobs kann eine Liste aller Parameter entweder mit dem Tool ShowLowlevelGVs ermittelt werden.

        Bei Verwendung dieser oder einer der anderen setParam()-Methoden werden zusätzlich einige der Job-Restriktionen (siehe getJobRestrictions()) analysiert. Beim Verletzen einer der überprüften Einschränkungen wird eine Exception mit einer entsprechenden Meldung erzeugt. Diese Überprüfung findet allerdings nur bei Highlevel-Jobs statt.

        Parameters:
        paramName - der Name des zu setzenden Parameters.
        index - Der index oder null, wenn kein Index gewünscht ist
        value - Wert, auf den der Parameter gesetzt werden soll
      • applyOffset

        public void applyOffset()
      • setLowlevelParam

        public void setLowlevelParam​(String key,
                                     String value)
      • getLowlevelParams

        public Map<String,​String> getLowlevelParams()
        Gibt alle für diesen Job gesetzten Parameter zurück. In dem zurückgegebenen Properties-Objekt sind werden die Parameter als Lowlevel-Parameter abgelegt. Außerdem hat jeder Lowlevel-Parametername zusätzlich ein Prefix, welches den Lowlevel-Job angibt, für den der Parameter gilt (also z.B. Ueb3.BTG.value
        Returns:
        aktuelle gesetzte Lowlevel-Parameter für diesen Job
      • getLowlevelParam

        public String getLowlevelParam​(String key)
      • setIdx

        public void setIdx​(int idx)
      • getName

        public String getName()
      • getSegVersion

        public int getSegVersion()
      • setSegVersion

        public void setSegVersion​(int version)
        Legt die Versionsnummer des Segments manuell fest. Ist u.a. noetig, um HKTAN-Segmente in genau der Version zu senden, in der auch die HITANS empfangen wurden. Andernfalls koennte es passieren, dass wir ein HKTAN mit einem TAN-Verfahren senden, welches in dieser HKTAN-Version gar nicht von der Bank unterstuetzt wird. Das ist ein Dirty-Hack, ich weiss ;) Falls das noch IRGENDWO anders verwendet wird, muss man hoellisch aufpassen, dass alle Stellen, wo "this.name" bzw. "this.segVersion" direkt oder indirekt verwendet wurde, ebenfalls beruecksichtigt werden.
        Parameters:
        version - die neue Versionsnummer.
      • addLoop

        public void addLoop()
      • fillJobResult

        public void fillJobResult​(HBCIMsgStatus status,
                                  int offset)
      • extractResults

        protected void extractResults​(HBCIMsgStatus msgstatus,
                                      String header,
                                      int idx)
      • checkAccountCRC

        protected void checkAccountCRC​(String frontendname)
      • getChallengeParam

        public String getChallengeParam​(String path)
      • createOrderHash

        public String createOrderHash​(int segVersion)
      • getRawData

        public String getRawData()
      • skipped

        public boolean skipped()
        Prueft, ob der Auftrag uebersprungen werden soll.
        Returns:
        true, wenn der Auftrag uebersprungen werden soll.
      • setVeu

        public void setVeu​(boolean veu)
      • isVeu

        public boolean isVeu()