Class HBCIJobImpl
- java.lang.Object
-
- org.kapott.hbci.GV.HBCIJobImpl
-
- All Implemented Interfaces:
HBCIJob
- Direct Known Subclasses:
AbstractMultiGV
,AbstractSEPAGV
,GVAccInfo
,GVCardList
,GVChangePIN
,GVCustomMsg
,GVDauerDel
,GVDauerEdit
,GVDauerList
,GVDauerNew
,GVFestCondList
,GVFestList
,GVInfoList
,GVInfoOrder
,GVKontoauszug
,GVKontoauszugPdf
,GVKUmsAll
,GVLast
,GVReceipt
,GVSaldoReq
,GVSEPAInfo
,GVStatus
,GVStornoLast
,GVTAN2Step
,GVTANList
,GVTANMediaList
,GVTemplate
,GVTermUeb
,GVTermUebDel
,GVTermUebEdit
,GVTermUebList
,GVUeb
,GVUebForeign
,GVWPDepotList
,GVWPDepotUms
public abstract class HBCIJobImpl extends java.lang.Object implements HBCIJob
-
-
Field Summary
Fields Modifier and Type Field Description private java.util.Hashtable<java.lang.String,java.lang.String[][]>
constraints
private int
contentCounter
private boolean
executed
private java.lang.String
externalId
private boolean
haveTan
private int
idx
private static java.util.regex.Pattern
INDEX_PATTERN
private java.util.HashSet<java.lang.String>
indexedConstraints
private java.lang.String
jobName
protected HBCIJobResultImpl
jobResult
private java.util.Properties
llParams
private java.util.Hashtable<java.lang.String,java.lang.Integer>
logFilterLevels
private int
loopCount
private java.lang.String
name
private HBCIHandler
parentHandler
private HBCIPassportList
passports
private java.lang.String
segVersion
private boolean
skip
-
Constructor Summary
Constructors Modifier Constructor Description protected
HBCIJobImpl(HBCIHandler parentHandler, java.lang.String jobnameLL, HBCIJobResultImpl jobResult)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description private void
_checkAccountCRC(java.lang.String frontendname, java.lang.String blz, java.lang.String number)
private void
_checkIBANCRC(java.lang.String frontendname, java.lang.String iban)
protected boolean
acceptsParam(java.lang.String hlParamName)
protected void
addConstraint(java.lang.String frontendName, java.lang.String destinationName, java.lang.String defValue, int logFilterLevel)
protected void
addConstraint(java.lang.String frontendName, java.lang.String destinationName, java.lang.String defValue, int logFilterLevel, boolean indexed)
void
addSignaturePassport(HBCIPassport passport, java.lang.String role)
Hinzufügen eines Passports, welches für eine zusätzliche Signatur für diesen Auftrag benutzt wird.void
addToQueue()
Hinzufügen dieses Jobs zu einem HBCI-Dialog.void
addToQueue(java.lang.String customerId)
Hinzufügen dieses Jobs zu einem HBCI-Dialog.void
applyOffset()
Setzt den Offset-Parameter mit dem aktuellen Loop-Count.protected boolean
canNationalAcc(HBCIHandler handler)
Durchsucht das BPD-Segment "HISPAS" nach dem Property "cannationalacc" um herauszufinden, ob beim Versand eines SEPA-Auftrages die nationale Bankverbindung angegeben sein darf.protected void
checkAccountCRC(java.lang.String frontendname)
SEG
createJobSegment()
SEG
createJobSegment(int segnum)
private void
extractPlaintextResults(HBCIMsgStatus status, java.lang.String header, int idx)
protected void
extractResults(HBCIMsgStatus msgstatus, java.lang.String header, int idx)
void
fillJobResult(HBCIMsgStatus status, int offset)
void
fillJobResultFromTanJob(HBCIMsgStatus status, java.lang.String header, int seg)
private void
findSpecNameForGV(java.lang.String jobnameLL, HBCIHandler handler)
java.lang.String
getChallengeParam(java.lang.String path)
private java.lang.String
getContinueOffset()
Gibt (sofern vorhanden) den Wiederaufsetzpunkt des letzten HBCI-Rückgabecodes 3040 zurück.java.lang.String
getExternalId()
Liefert eine optionalen Identifier, der von der Banking-Anwendung genutzt werden kann, um einen Bezug zum urspruenglichen Auftrag herstellen zu koennen.java.lang.String
getHBCICode()
java.lang.String
getJobName()
java.util.List<java.lang.String>
getJobParameterNames()
Gibt alle möglichen Job-Parameter für einen Lowlevel-Job zurück.java.util.Properties
getJobRestrictions()
Gibt für einen Job alle bekannten Einschränkungen zurück, die bei der Ausführung des jeweiligen Jobs zu beachten sind.HBCIJobResult
getJobResult()
Gibt ein Objekt mit den Rückgabedaten für diesen Job zurück.java.util.List<java.lang.String>
getJobResultNames()
Gibt alle möglichen Property-Namen für die Lowlevel-Rückgabedaten dieses Jobs zurück.java.lang.String
getLowlevelParam(java.lang.String key)
java.util.Properties
getLowlevelParams()
Gibt alle für diesen Job gesetzten Parameter zurück.HBCIPassportInternal
getMainPassport()
int
getMaxNumberPerMsg()
int
getMinSigs()
Gibt zurück, wieviele Signaturen für diesen Job mindestens benötigt werden.java.lang.String
getName()
Gibt den internen Namen für diesen Job zurück.Konto
getOrderAccount()
Liefert das Auftraggeber-Konto, wie es ab HKTAN5 erforderlich ist.HBCIHandler
getParentHandler()
int
getSecurityClass()
Gibt zurück, welche Sicherheitsklasse für diesen Job mindestens benötigt wird.java.lang.String
getSegVersion()
Gibt die für diesen Job verwendete Segment-Versionsnummer zurückHBCIPassportList
getSignaturePassports()
private HBCIRetVal
getW3040(int loop)
Liefert den Rueckgabecode 3040 (fuer "Weitere Daten folgen"), insofern vorhanden und mit einem Parameter versehen.boolean
haveTan()
Liefert true, wenn fuer den Auftrag ein HKTAN erzeugt wurde.private java.lang.String
insertIndex(java.lang.String key, java.lang.Integer index)
HBCIJobImpl
redo()
Liefert den ggf erneut auszufuehrenden Job.protected boolean
redoAllowed()
Wir erlauben per Default erstmal kein Redo bei einem 3040-Code.private void
saveBasicValues(java.util.Properties result, int ref)
protected void
saveReturnValues(HBCIMsgStatus status, int sref)
void
setExternalId(java.lang.String id)
Kann von der Banking-Anwendung genutzt werden, um einen eigenen Identifier im Job zu speichern, um im spaeteren Verlauf des HBCI-Dialoges (z.Bsp.void
setIdx(int idx)
protected void
setLowlevelParam(java.lang.String key, java.lang.String value)
void
setParam(java.lang.String paramName, int i)
Setzen eines Job-Parameters, bei dem ein Integer-Wert Da als Wert erwartet wird.void
setParam(java.lang.String paramName, java.lang.Integer index, java.lang.String value)
Setzen eines Job-Parameters.void
setParam(java.lang.String paramName, java.lang.Integer index, java.util.Date date)
void
setParam(java.lang.String paramname, java.lang.Integer index, Konto acc)
void
setParam(java.lang.String paramname, java.lang.Integer index, Value v)
void
setParam(java.lang.String paramName, java.lang.String value)
Setzen eines Job-Parameters.void
setParam(java.lang.String paramName, java.util.Date date)
Setzen eines Job-Parameters, bei dem ein Datums als Wert erwartet wird.void
setParam(java.lang.String paramname, Konto acc)
Setzen eines komplexen Job-Parameters (Kontodaten).void
setParam(java.lang.String paramname, Value v)
Setzen eines komplexen Job-Parameters (Geldbetrag).void
setSegVersion(java.lang.String version)
Legt die Versionsnummer des Segments manuell fest.void
skip()
Markiert den Auftrag als zu ueberspringend.boolean
skipped()
Prueft, ob der Auftrag uebersprungen werden soll.void
tanApplied()
Vermerkt den Auftrag als "HKTAN erzeugt".protected boolean
twoDigitValueInList(java.lang.String value, java.lang.String list)
void
verifyConstraints()
-
-
-
Field Detail
-
name
private java.lang.String name
-
jobName
private java.lang.String jobName
-
segVersion
private java.lang.String segVersion
-
llParams
private java.util.Properties llParams
-
passports
private HBCIPassportList passports
-
jobResult
protected HBCIJobResultImpl jobResult
-
parentHandler
private HBCIHandler parentHandler
-
idx
private int idx
-
executed
private boolean executed
-
contentCounter
private int contentCounter
-
constraints
private java.util.Hashtable<java.lang.String,java.lang.String[][]> constraints
-
logFilterLevels
private java.util.Hashtable<java.lang.String,java.lang.Integer> logFilterLevels
-
externalId
private java.lang.String externalId
-
loopCount
private int loopCount
-
haveTan
private boolean haveTan
-
skip
private boolean skip
-
indexedConstraints
private java.util.HashSet<java.lang.String> indexedConstraints
-
INDEX_PATTERN
private static final java.util.regex.Pattern INDEX_PATTERN
-
-
Constructor Detail
-
HBCIJobImpl
protected HBCIJobImpl(HBCIHandler parentHandler, java.lang.String jobnameLL, HBCIJobResultImpl jobResult)
-
-
Method Detail
-
getJobName
public java.lang.String getJobName()
-
getHBCICode
public java.lang.String getHBCICode()
-
findSpecNameForGV
private void findSpecNameForGV(java.lang.String jobnameLL, HBCIHandler handler)
-
setSegVersion
public void setSegVersion(java.lang.String 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.
-
getMaxNumberPerMsg
public int getMaxNumberPerMsg()
-
getMinSigs
public int getMinSigs()
Description copied from interface:HBCIJob
Gibt zurück, wieviele Signaturen für diesen Job mindestens benötigt werden. Diese Information wird den BPD entnommen. In einigen Fällen gibt es in den UPD aktuellere Informationen zu einem bestimmten Geschäftsvorfall, zur Zeit werden die UPD von dieser Methode aber nicht ausgewertet.
Wird für einen Job mehr als eine Signatur benötigt, so können mit der Methode
HBCIJob.addSignaturePassport(HBCIPassport, String)
Passports bestimmt werden, die für die Erzeugung der zusätzlichen Signaturen verwendet werden sollen.Es wird außerdem empfohlen, dass Aufträge, die mehrere Signaturen benötigen, jeweils in einer separaten HBCI-Nachricht versandt werden. Um das zu erzwingen, kann entweder ein HBCI-Dialog geführt werden, der definitiv nur diesen einen Auftrag enthält (also nur ein
HBCIJob.addToQueue()
für diesen Dialog), oder es wird beim Zusammenstellen der Jobs für einen Dialog sichergestellt, dass ein bestimmter Job in einer separaten Nachricht gesandt wird (HBCIHandler.newMsg()
).- Specified by:
getMinSigs
in interfaceHBCIJob
- Returns:
- Mindest-Anzahl der benötigten Signaturen für diesen Job
-
getSecurityClass
public int getSecurityClass()
Description copied from interface:HBCIJob
Gibt zurück, welche Sicherheitsklasse für diesen Job mindestens benötigt wird. Diese Information wird den BPD entnommen. Sicherheitsklassen sind erst ab FinTS-3.0 definiert. Falls keine Sicherheitsklassen unterstützt werden (weil eine geringere HBCI-Version als FinTS-3.0 verwendet wird), wird
1
zurückgegeben. Die Sicherheitsklasse ist nur die Sicherheitsmechanismen DDV und RDH relevant - bei Verwendung von PIN/TAN hat die Sicherheitsklasse keine Bedeutung.Folgende Sicherheitsklassen sind definiert:
0
: kein Sicherheitsdienst erforderlich1
: Authentication - es wird eine Signatur mit dem Signaturschlüssel benötigt.2
: Authentication mit fortgeschrittener elektronischer Signatur unter Verwendung des Signaturschlüssels.3
: Non-Repudiation mit fortgeschrittener elektronischer Signatur und optionaler Zertifikatsprüfung unter Verwendung des DigiSig-Schlüssels4
: Non-Repudiation mit fortgeschrittener bzw. qualifizierter elektronischer Signatur und zwingender Zertifikatsüberprüfung mit dem DigiSig-Schlüssel
- Specified by:
getSecurityClass
in interfaceHBCIJob
- Returns:
- Sicherheitsklasse, die für diese Job benötigt wird
-
addConstraint
protected void addConstraint(java.lang.String frontendName, java.lang.String destinationName, java.lang.String defValue, int logFilterLevel)
-
addConstraint
protected void addConstraint(java.lang.String frontendName, java.lang.String destinationName, java.lang.String defValue, int logFilterLevel, boolean indexed)
-
verifyConstraints
public void verifyConstraints()
-
createJobSegment
public SEG createJobSegment()
-
createJobSegment
public SEG createJobSegment(int segnum)
-
getJobParameterNames
public java.util.List<java.lang.String> getJobParameterNames()
Description copied from interface:HBCIJob
Gibt alle möglichen Job-Parameter für einen Lowlevel-Job zurück. Die Anwendung dieser Methode ist nur sinnvoll, wenn es sich bei dem aktuellen Job um einen Lowlevel-Job handelt (erzeugt mitHBCIHandler.newLowlevelJob(String)
). Die zurückgegebenen Parameternamen können als erstes Argument der MethodeHBCIJob.setParam(String, String)
verwendet werden.- Specified by:
getJobParameterNames
in interfaceHBCIJob
- Returns:
- Liste aller gültigen Parameternamen (nur für Lowlevel-Jobs)
-
getJobResultNames
public java.util.List<java.lang.String> getJobResultNames()
Description copied from interface:HBCIJob
Gibt alle möglichen Property-Namen für die Lowlevel-Rückgabedaten dieses Jobs zurück. Die Lowlevel-Rückgabedaten können mitHBCIJob.getJobResult()
undHBCIJobResult.getResultData()
ermittelt werden. Diese Methode verwendet internHBCIHandler.getLowlevelJobResultNames(String)
.- Specified by:
getJobResultNames
in interfaceHBCIJob
- Returns:
- Liste aller prinzipiell möglichen Property-Keys für die Lowlevel-Rückgabedaten dieses Jobs
-
getJobRestrictions
public java.util.Properties getJobRestrictions()
Description copied from interface:HBCIJob
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.Diese Methode verwendet intern
.HBCIHandler.getLowlevelJobRestrictions(String)
- Specified by:
getJobRestrictions
in interfaceHBCIJob
- Returns:
- Properties-Objekt mit den einzelnen Restriktionen
-
setParam
public void setParam(java.lang.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.
-
setParam
public void setParam(java.lang.String paramname, java.lang.Integer index, Konto acc)
- Specified by:
setParam
in interfaceHBCIJob
- See Also:
HBCIJob.setParam(java.lang.String, java.lang.Integer, org.kapott.hbci.structures.Konto)
-
setParam
public void setParam(java.lang.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.
-
setParam
public void setParam(java.lang.String paramname, java.lang.Integer index, Value v)
-
setParam
public void setParam(java.lang.String paramName, java.util.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.
-
setParam
public void setParam(java.lang.String paramName, java.lang.Integer index, java.util.Date date)
-
setParam
public void setParam(java.lang.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)
.
-
acceptsParam
protected boolean acceptsParam(java.lang.String hlParamName)
-
setParam
public void setParam(java.lang.String paramName, java.lang.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 ToolShowLowlevelGVs
oder zur Laufzeit durch Aufruf der MethodeHBCIHandler.getLowlevelJobParameterNames(String)
ermittelt 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.
-
setParam
public void setParam(java.lang.String paramName, java.lang.Integer index, java.lang.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 ToolShowLowlevelGVs
oder zur Laufzeit durch Aufruf der MethodeHBCIHandler.getLowlevelJobParameterNames(String)
ermittelt 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.
-
applyOffset
public void applyOffset()
Setzt den Offset-Parameter mit dem aktuellen Loop-Count. Der Counter wird jedesmal in fillJobResult erhoeht - also mit jedem neuen Ergebnis.
-
haveTan
public boolean haveTan()
Liefert true, wenn fuer den Auftrag ein HKTAN erzeugt wurde.- Returns:
- true, wenn fuer den Auftrag ein HKTAN erzeugt wurde.
-
tanApplied
public void tanApplied()
Vermerkt den Auftrag als "HKTAN erzeugt".
-
skip
public void skip()
Markiert den Auftrag als zu ueberspringend.
-
skipped
public boolean skipped()
Prueft, ob der Auftrag uebersprungen werden soll.- Returns:
- true, wenn der Auftrag uebersprungen werden soll.
-
setLowlevelParam
protected void setLowlevelParam(java.lang.String key, java.lang.String value)
-
getLowlevelParams
public java.util.Properties getLowlevelParams()
Description copied from interface:HBCIJob
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
- Specified by:
getLowlevelParams
in interfaceHBCIJob
- Returns:
- aktuelle gesetzte Lowlevel-Parameter für diesen Job
-
getLowlevelParam
public java.lang.String getLowlevelParam(java.lang.String key)
-
setIdx
public void setIdx(int idx)
-
getName
public java.lang.String getName()
Description copied from interface:HBCIJob
Gibt den internen Namen für diesen Job zurück.
-
getSegVersion
public java.lang.String getSegVersion()
Description copied from interface:HBCIJob
Gibt die für diesen Job verwendete Segment-Versionsnummer zurück- Specified by:
getSegVersion
in interfaceHBCIJob
-
redo
public HBCIJobImpl redo()
Liefert den ggf erneut auszufuehrenden Job. Die Default-Implementierung liefert "this", wenn die Bank ein 3040 zurueckgemeldet hat. Das kann aber auch ein anderer sein, als "this". Naemlich bei HKTAN in Prozess-Variante #2. Dort liefert es stattdessen den eigentlichen GV.- Returns:
- den ggf erneut auszufuehrenden Job.
-
redoAllowed
protected boolean redoAllowed()
Wir erlauben per Default erstmal kein Redo bei einem 3040-Code. Es sei denn, im Job ist explizit uebeschrieben. Siehe https://homebanking-hilfe.de/forum/topic.php?p=150614#real150614- Returns:
- true, wenn redo erlaubt ist.
-
getContinueOffset
private java.lang.String getContinueOffset()
Gibt (sofern vorhanden) den Wiederaufsetzpunkt des letzten HBCI-Rückgabecodes 3040 zurück.- Returns:
- der Offset-Wert oder NULL.
-
getW3040
private HBCIRetVal getW3040(int loop)
Liefert den Rueckgabecode 3040 (fuer "Weitere Daten folgen"), insofern vorhanden und mit einem Parameter versehen.- Parameters:
loop
- die Nummer des Durchlaufs, beginnend bei 0.- Returns:
- der Rueckgabewert, insofern vorhanden. Sonst NULL.
-
fillJobResultFromTanJob
public void fillJobResultFromTanJob(HBCIMsgStatus status, java.lang.String header, int seg)
-
fillJobResult
public void fillJobResult(HBCIMsgStatus status, int offset)
-
saveBasicValues
private void saveBasicValues(java.util.Properties result, int ref)
-
saveReturnValues
protected void saveReturnValues(HBCIMsgStatus status, int sref)
-
extractResults
protected void extractResults(HBCIMsgStatus msgstatus, java.lang.String header, int idx)
-
extractPlaintextResults
private void extractPlaintextResults(HBCIMsgStatus status, java.lang.String header, int idx)
-
getJobResult
public HBCIJobResult getJobResult()
Description copied from interface:HBCIJob
Gibt ein Objekt mit den Rückgabedaten für diesen Job zurück. Das zurückgegebene Objekt enthält erst nach der Ausführung des Jobs gültige Daten.- Specified by:
getJobResult
in interfaceHBCIJob
- Returns:
- ein Objekt mit den Rückgabedaten und Statusinformationen zu diesem Job
-
getMainPassport
public HBCIPassportInternal getMainPassport()
-
_checkAccountCRC
private void _checkAccountCRC(java.lang.String frontendname, java.lang.String blz, java.lang.String number)
-
_checkIBANCRC
private void _checkIBANCRC(java.lang.String frontendname, java.lang.String iban)
-
checkAccountCRC
protected void checkAccountCRC(java.lang.String frontendname)
-
addSignaturePassport
public void addSignaturePassport(HBCIPassport passport, java.lang.String role)
Description copied from interface:HBCIJob
Hinzufügen eines Passports, welches für eine zusätzliche Signatur für diesen Auftrag benutzt wird.role
gibt dabei die Rolle an, die der Eigentümer des zusätzlichen Passports in Bezug auf diesen Job (bzw. die aktuelle Nachricht) einnimmt. Gültige Werte sind inHBCIPassport
beschrieben. Mit der MethodeHBCIJob.getMinSigs()
kann ermittelt werden, wieviele Signaturen für einen Job mindestens benötigt werden.- Specified by:
addSignaturePassport
in interfaceHBCIJob
- Parameters:
passport
- das hinzuzufügende Passport-Objekt, welches für eine zusätzliche Signatur benutzt werden sollrole
- die Rolle, in der sich der Eigentümer des zusätzlichen Passport-Objektes bezüglich dieses Jobs befindet
-
getSignaturePassports
public HBCIPassportList getSignaturePassports()
-
getChallengeParam
public java.lang.String getChallengeParam(java.lang.String path)
-
getOrderAccount
public Konto getOrderAccount()
Liefert das Auftraggeber-Konto, wie es ab HKTAN5 erforderlich ist.- Returns:
- das Auftraggeber-Konto oder NULL, wenn keines angegeben ist.
-
getParentHandler
public HBCIHandler getParentHandler()
-
addToQueue
public void addToQueue(java.lang.String customerId)
Description copied from interface:HBCIJob
Hinzufügen dieses Jobs zu einem HBCI-Dialog. Nachdem alle Jobparameter mit
HBCIJob.setParam(String,String)
gesetzt wurden, kann der komplett spezifizierte Job mit dieser Methode zur Auftragsliste eines Dialoges hinzugefügt werden.Die
customerId
gibt an, unter welcher Kunden-ID dieser Job ausgeführt werden soll. Existiert für eine HBCI-Nutzerkennung (ein Passport) nur genau eine Kunden-ID (wie das i.d.R. der Fall ist), so kann dercustomerId
-Parameter weggelassen werden - HBCI4Java verwendet dann automatisch die richtige Kunden-ID (als Kunden-ID wird in diesem Fall der Wert vonHBCIPassport.getCustomerId()
verwendet). Gibt es aber mehrere gültige Kunden-IDs für einen HBCI-Zugang, so muss die Kunden-ID, die für diesen Job verwendet werden soll, mit angegeben werden.Jeder Auftrag (=Job) ist i.d.R. an ein bestimmtes Konto des Auftraggebers gebunden (Überweisung: das Belastungskonto; Saldenabfrage: das abzufragende Konto usw.). Als Kunden-ID für einen Auftrag muss die Kunden-ID angegeben werden, die für dieses Konto verfügungsberechtigt ist.
I.d.R. liefert eine Bank Informationen über alle Konten, auf die via HBCI zugegriffen werden kann. Ist das der Fall, so kann die Menge dieser Konten mit
HBCIPassport.getAccounts()
ermittelt werden. In jedem zurückgemeldetenKonto
-Objekt ist im Feldcustomerid
vermerkt, welche Kunden-ID für dieses Konto verfügungsberechtigt ist. Diese Kunden-ID müsste dann also beim Hinzufügen eines Auftrages angegeben werden, welcher das jeweilige Konto betrifft.Liefert eine Bank diese Informationen nicht, so hat die Anwendung selbst eine Kontenverwaltung zu implementieren, bei der jedem Nutzerkonto eine zu verwendende Kunden-ID zugeordnet ist.
Ein HBCI-Dialog kann aus beliebig vielen HBCI-Nachrichten bestehen. HBCI4Java versucht zunächst, alle Jobs in einer einzigen Nachricht unterzubringen. Kann ein Job nicht mehr zur aktuellen Nachricht hinzugefügt werden (weil sonst bestimmte vorgegebene Bedingungen nicht eingehalten werden), so legt HBCI4Java automatisch eine neue Nachricht an, zu der der Job schließlich hinzugefügt wird. Beim Ausführen des HBCI-Dialoges (siehe
HBCIHandler.execute()
) werden dann natürlich alle erzeugten Nachrichten zum HBCI-Server gesandt.Der HBCI-Kernel bestimmt also automatisch, ob ein Auftrag noch mit in die aktuelle Nachricht aufgenommen werden kann, oder ob eine separate Nachricht erzeugt werden muss. Der manuelle Aufruf von
HBCIHandler.newMsg()
ist deshalb im Prinzip niemals notwendig, es sei denn, es soll aus anderen Gründen eine neue Nachricht begonnen werden.- Specified by:
addToQueue
in interfaceHBCIJob
- Parameters:
customerId
- die Kunden-ID, zu deren Dialog der Auftrag hinzugefügt werden soll
-
addToQueue
public void addToQueue()
Description copied from interface:HBCIJob
Hinzufügen dieses Jobs zu einem HBCI-Dialog. Diese Methode arbeitet analog zu
HBCIJob.addToQueue(String)
, nur dass hier diecustomerid
mit der Kunden-ID vorbelegt ist, wie sie im aktuellen Passport gespeichert ist.- Specified by:
addToQueue
in interfaceHBCIJob
-
getExternalId
public java.lang.String getExternalId()
Description copied from interface:HBCIJob
Liefert eine optionalen Identifier, der von der Banking-Anwendung genutzt werden kann, um einen Bezug zum urspruenglichen Auftrag herstellen zu koennen.- Specified by:
getExternalId
in interfaceHBCIJob
- Returns:
- der Identifier.
- See Also:
HBCIJob.getExternalId()
-
setExternalId
public void setExternalId(java.lang.String id)
Description copied from interface:HBCIJob
Kann von der Banking-Anwendung genutzt werden, um einen eigenen Identifier im Job zu speichern, um im spaeteren Verlauf des HBCI-Dialoges (z.Bsp. bei der TAN-Eingabe) einen Bezug zum urspruenglichen Auftrag wiederherstellen zu koennen.- Specified by:
setExternalId
in interfaceHBCIJob
- Parameters:
id
- optionale ID.- See Also:
HBCIJob.setExternalId(java.lang.String)
-
twoDigitValueInList
protected boolean twoDigitValueInList(java.lang.String value, java.lang.String list)
-
insertIndex
private java.lang.String insertIndex(java.lang.String key, java.lang.Integer index)
-
canNationalAcc
protected boolean canNationalAcc(HBCIHandler handler)
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:
handler
-- Returns:
- true, wenn der BPD-Parameter von der Bank mit "J" befuellt ist und die nationale Bankverbindung angegeben sein darf.
-
-