Class AbstractHBCIJob
- java.lang.Object
-
- org.kapott.hbci.GV.AbstractHBCIJob
-
- Direct Known Subclasses:
AbstractMultiGV,AbstractSEPAGV,GVAccInfo,GVCardList,GVChangePIN,GVCustomMsg,GVDauerDel,GVDauerEdit,GVDauerNew,GVDTAZV,GVFestCondList,GVFestList,GVInfoList,GVInfoOrder,GVInstanstUebSEPAStatus,GVKontoauszug,GVKontoauszugPdf,GVKUmsAll,GVLast,GVReceipt,GVSaldoReq,GVSEPAInfo,GVStatus,GVStornoLast,GVTAN2Step,GVTANList,GVTANMediaList,GVTemplate,GVTermMultiUebSEPADel,GVTermUeb,GVTermUebDel,GVTermUebEdit,GVTermUebList,GVUeb,GVUebForeign,GVVeuList,GVVeuStep,GVWPDepotList,GVWPDepotUms
public abstract class AbstractHBCIJob extends Object
-
-
Field Summary
Fields Modifier and Type Field Description protected HBCIJobResultImpljobResultprotected HBCIPassportInternalpassport
-
Constructor Summary
Constructors Constructor Description AbstractHBCIJob(HBCIPassportInternal passport, String jobnameLL, HBCIJobResultImpl jobResult)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected voidaddConstraint(String frontendName, String destinationName, String defValue)protected voidaddConstraint(String frontendName, String destinationName, String defValue, boolean indexed)voidaddLoop()voidapplyOffset()protected booleancanNationalAcc(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.protected voidcheckAccountCRC(String frontendname)StringcreateOrderHash(int segVersion)protected voidextractResults(HBCIMsgStatus msgstatus, String header, int idx)voidfillJobResult(HBCIMsgStatus status, int offset)StringgetChallengeParam(String path)Map<String,String[][]>getConstraints()StringgetHBCICode()StringgetHBCICode(boolean reduce)StringgetJobName()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.HBCIJobResultgetJobResult()StringgetLowlevelParam(String key)Map<String,String>getLowlevelParams()Gibt alle für diesen Job gesetzten Parameter zurück.intgetMaxNumberPerMsg()StringgetName()SepaVersiongetPainVersion()StringgetRawData()intgetSegVersion()booleanisVeu()AbstractHBCIJobredo()voidsetIdx(int idx)voidsetLlParams(Map<String,String> llParams)voidsetLowlevelParam(String key, String value)voidsetParam(String paramName, int i)Setzen eines Job-Parameters, bei dem ein Integer-Wert Da als Wert erwartet wird.voidsetParam(String paramName, Integer index, String value)Setzen eines Job-Parameters.voidsetParam(String paramName, Integer index, Date date)voidsetParam(String paramname, Integer index, Konto acc)voidsetParam(String paramname, Integer index, Value v)voidsetParam(String paramName, String value)Setzen eines Job-Parameters.voidsetParam(String paramName, Date date)Setzen eines Job-Parameters, bei dem ein Datums als Wert erwartet wird.voidsetParam(String paramname, Konto acc)Setzen eines komplexen Job-Parameters (Kontodaten).voidsetParam(String paramname, Value v)Setzen eines komplexen Job-Parameters (Geldbetrag).voidsetSegVersion(int version)Legt die Versionsnummer des Segments manuell fest.voidsetVeu(boolean veu)booleanskipped()Prueft, ob der Auftrag uebersprungen werden soll.voidverifyConstraints()
-
-
-
Field Detail
-
jobResult
protected HBCIJobResultImpl jobResult
-
passport
protected HBCIPassportInternal passport
-
-
Constructor Detail
-
AbstractHBCIJob
public AbstractHBCIJob(HBCIPassportInternal passport, String jobnameLL, HBCIJobResultImpl jobResult)
-
-
Method Detail
-
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 vonsetParam(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 dreisetParam(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 vonsetParam(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 zweisetParam(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ürsetParam(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-Parametersdate- 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ürsetParam(String, String).- Parameters:
paramName- Name des zu setzenden Job-Parametersi- 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.GVeine Auflistung aller Jobs und deren Parameter zu finden. Für alle Lowlevel-Jobs kann eine Liste aller Parameter entweder mit dem ToolShowLowlevelGVsermittelt werden.Bei Verwendung dieser oder einer der anderen
setParam()-Methoden werden zusätzlich einige der Job-Restriktionen (siehegetJobRestrictions()) 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.GVeine Auflistung aller Jobs und deren Parameter zu finden. Für alle Lowlevel-Jobs kann eine Liste aller Parameter entweder mit dem ToolShowLowlevelGVsermittelt werden.Bei Verwendung dieser oder einer der anderen
setParam()-Methoden werden zusätzlich einige der Job-Restriktionen (siehegetJobRestrictions()) 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 odernull, wenn kein Index gewünscht istvalue- Wert, auf den der Parameter gesetzt werden soll
-
applyOffset
public void applyOffset()
-
getLowlevelParams
public Map<String,String> getLowlevelParams()
Gibt alle für diesen Job gesetzten Parameter zurück. In dem zurückgegebenenProperties-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
-
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.
-
redo
public AbstractHBCIJob redo()
-
addLoop
public void addLoop()
-
fillJobResult
public void fillJobResult(HBCIMsgStatus status, int offset)
-
extractResults
protected void extractResults(HBCIMsgStatus msgstatus, String header, int idx)
-
getJobResult
public HBCIJobResult getJobResult()
-
checkAccountCRC
protected void checkAccountCRC(String frontendname)
-
createOrderHash
public String createOrderHash(int segVersion)
-
getRawData
public String getRawData()
-
getPainVersion
public SepaVersion getPainVersion()
-
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()
-
-