org.kapott.hbci.server
Class JobContext

Object
  |
  +--org.kapott.hbci.server.JobContext

public class JobContext
extends Object

Liefert Informationen über einen eingegangenen Auftrag und nimmt Rückgabedaten auf. Ein Objekt dieser Klasse wird für jedes eingegangene Auftragssegment einer Kundennachricht vom HBCI4Java-Server-Code erzeugt. Mit diesem JobContext-Objekt wird dann der Callback-Handler ServerCallback.handleGV(JobContext) aufgerufen, der von der HBCI-Server-Anwendung implementiert werden muss.

Die JobContext-Klasse stellt außerdem einige Hilfsmethoden für die leichtere Auswertung der Auftragsdaten zur Verfügung.


Method Summary
 void addStatus(String dename, String code, String text, String[] params)
          Hinzufügen eines auftragsspezifischen Rückgabewertes zur Antwortnachricht.
 boolean checkKIK(String header)
          Hilfmethode zum Überprüfen der Gültigkeit der Kreditinstitutskennung in einem Auftragssegment.
 org.kapott.hbci.structures.Konto checkKTV(String header)
          Hilfsmethode zum Überprüfen der Gültigkeit einer Kontoverbindung aus den Auftragsdaten des aktuellen Auftrages.
 org.kapott.hbci.structures.Value extractBTG(String header)
          Geldbetrag aus Auftragsdaten extrahieren.
 java.util.Date extractDate(String header)
          Extrahiert eine Datumsangabe.
 org.kapott.hbci.structures.Konto extractMyAccount(String header)
          Extrahieren einer Kontoverbindung und Zurückgeben des entsprechenden Konto-Objektes.
 org.kapott.hbci.structures.Konto extractOtherAccount(String header)
          Extrahieren einer Kontoverbindung und Zurückgeben eines entsprechenden Konto-Objektes.
 String[] extractStringArray(String header)
          Extrahieren von evtl. mehrfach auftretenden Datenelemente.
 org.kapott.hbci.structures.Konto[] getAllAccounts()
          Gibt alle Konten aller Kunden zurück, die an dieser Bank geführt werden.
 org.kapott.hbci.structures.Konto[] getAllMyAccounts()
          Alle für die aktuelle UserId/CustomerId verfügbaren Kontoverbindungen zurückmelden.
 String getCustomerId()
          Gibt die Kunden-ID zurück, mit der der aktuelle HBCI-Dialog geführt wird und für die also der aktuelle Auftrag bearbeitet werden soll
 java.util.Properties getJobData()
          Gibt ein Objekt mit den Auftragsdaten des eingegangenen Auftrages zurück.
 String getJobData(String key)
          Ermitteln eines bestimmten Eintrages aus den eingegangen Auftragsdaten.
 String getJobName()
          Gibt den Namen des eingegangenen Auftragssegmentes zurück.
 int getJobVersion()
          Gibt die Versionsnummer des eingegangenen Geschäftsvorfalles zurück.
 String getUserId()
          Gibt die Nutzerkennung zurück, mit der der aktuelle HBCI-Dialog geführt wird und für die also der aktuelle Auftrag bearbeitet werden soll
 void setData(int segCounter, String key, String value)
          Setzen eines Datenelementes für die zu generierende Antwortnachricht.
 

Method Detail

getJobName

public String getJobName()
Gibt den Namen des eingegangenen Auftragssegmentes zurück. Dabei handelt es sich um die gleichen Namen, die in einer HBCI4Java-Client-Anwendung mit HBCIHandler.getSupportedLowlevelGVs() ermittelt werden können. Eine Liste aller möglichen Jobnamen erhält man mit dem Tool org.kapott.hbci.tools.ShowLowlevelGVs. Dieser Jobname ist immer einer der Namen, die von dem implementierten DataStore-Objekt mit der Methode DataStore.getSupportedGVs(String) zurückgegeben werden (das stimmt noch nicht, es werden zur Zeit auch Aufträge akzeptiert, die gar nicht in den BPD aufgeführt sind ***).

Returns:
interner Name des eingegangenen Auftrages

getJobVersion

public int getJobVersion()
Gibt die Versionsnummer des eingegangenen Geschäftsvorfalles zurück. Es handelt sich dabei um eine der Versionsnummern, die via DataStore.getGVVersions(String,String) für den aktuellen Job-Namen ermittelt werden können (das stimmt noch nicht, es werden zur Zeit auch Aufträge akzeptiert, die gar nicht in den BPD aufgeführt sind ***).

Returns:
Versionsnummer des Geschäftsvorfall-Auftragssegmentes

getJobData

public java.util.Properties getJobData()
Gibt ein Objekt mit den Auftragsdaten des eingegangenen Auftrages zurück. Die für jeden Geschäftsvorfall jeweils möglichen Daten lassen sich mit dem Tool org.kapott.hbci.tools.ShowLowlevelGVs ermitteln.

Returns:
Properties-Objekt mit Auftragsdaten

getJobData

public String getJobData(String key)
Ermitteln eines bestimmten Eintrages aus den eingegangen Auftragsdaten. Ein Aufruf von getJobData(key) entspricht dem Aufruf von getJobData().getProperty(key).

Parameters:
key - Name für das Auftragsdatenelement, dessen Wert ermittelt werden soll
Returns:
Wert des entsprechenden Auftragsdatenelementes

getCustomerId

public String getCustomerId()
Gibt die Kunden-ID zurück, mit der der aktuelle HBCI-Dialog geführt wird und für die also der aktuelle Auftrag bearbeitet werden soll

Returns:
aktuelle Kunden-ID

getUserId

public String getUserId()
Gibt die Nutzerkennung zurück, mit der der aktuelle HBCI-Dialog geführt wird und für die also der aktuelle Auftrag bearbeitet werden soll

Returns:
aktuelle Benutzerkennung

addStatus

public void addStatus(String dename,
                      String code,
                      String text,
                      String[] params)
Hinzufügen eines auftragsspezifischen Rückgabewertes zur Antwortnachricht. Diese Methode erzeugt eine HBCI-Rückmeldung, die sich automatisch auf das aktuelle Auftragssegment bezieht. Diese Methode hat eine gewisse "Intelligenz" der folgenden Art eingebaut: Eine Erfolgsmeldung (code beginnt mit '0') wird nur dann tatsächlich als Rückmeldung hinzugefügt, wenn vorher nicht bereits eine Fehlermeldung hinzugefügt wurde. Eine hinzugefügte Fehlermeldung (code beginnt mit '9') bewirkt, dass alle evtl. vorher hinzugefügten Erfolgsmeldungen aus der Menge der Rückmeldungen entfernt werden und dass keine weiteren Erfolgsmeldungen hinzugefügt werden können.

Parameters:
dename - Name des Datenelements, auf das sich diese Meldung bezieht (kann null sein) - für eine sinnvolle Belegung ist die Kenntnis der intern von HBCI4Java verwendeten HBCI-Spezifikation nötig
code - Codenummer der Rückmeldung (siehe HBCI-Spezifikation)
text - Textmeldung, die zurückgegeben werden soll
params - Feld mit optionalen Parametern, die die Fehlermeldung näher spezifizieren

setData

public void setData(int segCounter,
                    String key,
                    String value)
Setzen eines Datenelementes für die zu generierende Antwortnachricht. Die Namen (key) der möglichen Datenelemente je Auftragstyp können mit dem Tool org.kapott.hbci.tools.ShowLowlevelGVRs ermittelt werden. Da ein Auftrag u.U. mehrere Antwortdatensätze erzeugen kann (z.B. eine Saldenabfrage für alle Konten gleichzeitig), kann mit dem Parameter segCounter zusätzlich angegeben werden, für den wievielten Antwortdatensatz das Datenelement benutzt werden soll (Zählung beginnt bei 0!).

Parameters:
segCounter - Nummer des Antwortdatensatzes (beginnend bei 0), für den dieses Datenelement gesetzt werden soll
key - Name des zu setzenden Antwortdatenelementes
value - Wert, auf das Datenelement gesetzt werden soll

checkKIK

public boolean checkKIK(String header)
Hilfmethode zum Überprüfen der Gültigkeit der Kreditinstitutskennung in einem Auftragssegment. Diese Methode überprüft, ob eine Kreditinstitutskennung (KIK), welche in einem Auftragssegment übermittelt wurde, gültig ist (d.h. KIK.country und KIK.blz entsprechen den Daten des HBCI-Servers). Ist das nicht der Fall, so wird automatisch eine entsprechende Fehlermeldung zur Antwortnachricht hinzugefügt.

Parameters:
header - Name der KIK-Datenelementgruppe ([*.]KIK)
Returns:
true, wenn Daten in KIK-Element mit den Serverdaten übereinstimmen, sonst false

getAllMyAccounts

public org.kapott.hbci.structures.Konto[] getAllMyAccounts()
Alle für die aktuelle UserId/CustomerId verfügbaren Kontoverbindungen zurückmelden. Diese Methode ermittelt alle Konten, auf die der Nutzer, der den aktuellen Dialog führt, zugreifen darf. Dazu werden intern zunächst die für die aktuelle Nutzer-ID (getUserId()) gültigen Kontoverbindungen ermittelt (DataStore.getAccounts(String)). Daraus werden dann die Einträge extrahiert, deren .customerid-Feld mit der aktuellen Kunden-ID (getCustomerId()) übereinstimmt. Die so ermittelte Menge von Kontoverbindungen wird zurückgegeben.

Returns:
Liste der Konten, auf die der aktuelle Nutzer/Kunde zugreifen darf

getAllAccounts

public org.kapott.hbci.structures.Konto[] getAllAccounts()
Gibt alle Konten aller Kunden zurück, die an dieser Bank geführt werden.

Returns:
Feld mit allen Konten bei dieser Bank

checkKTV

public org.kapott.hbci.structures.Konto checkKTV(String header)
Hilfsmethode zum Überprüfen der Gültigkeit einer Kontoverbindung aus den Auftragsdaten des aktuellen Auftrages. Diese Methode überprüft, ob die jeweilige Kontoverbindung (header) ein gültiges Konto für den aktuellen Nutzer/Kunden darstellt (siehe extractMyAccount(String)). Ist das der Fall, so wird das entsprechende Konto-Objekt zurückgegeben, sonst null. Falls kein passendes Nutzerkonto gefunden werden konnte, so wird automatisch eine entsprechende Fehlermeldung zur Antwortnachricht hinzugefügt.

Parameters:
header - Name der KTV-Datenelementgruppe ([*.]KTV) innerhalb der Auftragsdaten
Returns:
null, wenn die Kontodaten kein gültiges Konto des aktuellen Nutzers/Kunden darstellen, sonst das entsprechende Konto-Objekt

extractMyAccount

public org.kapott.hbci.structures.Konto extractMyAccount(String header)
Extrahieren einer Kontoverbindung und Zurückgeben des entsprechenden Konto-Objektes. Diese Methode gibt null zurück, wenn es für den aktuellen Nutzer/Kunden kein Konto mit der extrahierten Kontoverbindung gibt. Ansonsten wird das Konto-Objekt zurückgegeben, welches der Kontoverbindung entspricht. Es muss sich dabei also immer um ein Konto handeln, welches dem aktuellen Nutzer/Kunden gehört. Zusätzlich zu den Verbindungsdaten aus dem Auftragssegment werden in dem Konto-Objekt weitere Informationen (wie Kontowährung, Name des Inhabers) usw. aus den server-internen Datenbeständen eingetragen.

Parameters:
header - Name der KTV-Datenelementgruppe ([*.]KTV) innerhalb der Auftragsdaten
Returns:
null, wenn die Kontodaten kein gültiges Konto des aktuellen Nutzers/Kunden darstellen, sonst das entsprechende Konto-Objekt
See Also:
getAllMyAccounts()

extractOtherAccount

public org.kapott.hbci.structures.Konto extractOtherAccount(String header)
Extrahieren einer Kontoverbindung und Zurückgeben eines entsprechenden Konto-Objektes. Diese Methode extrahiert die üblichen Verbindungsdaten (Ländercode, Bankleitzahl, Kontonummer) und stellt ein Konto-Objekt bereit, welches mit diesen Werten initialisiert ist. Im Gegensatz zu extractMyAccount(String) wird hier keine Überprüfung vorgenommen, ob das Konto dem aktuellen Nutzer gehört. Das hat aber auch den Effekt, dass keine zusätzlichen Kontoinformationen in das Konto-Objekt eingestellt werden (wie z.B. Währung, Name des Inhabers usw.). Falls das referenzierte Konto jedoch bei dieser Bank geführt wird (siehe getAllAccounts()), dann werden auch die entsprechenden zusätzlichen Daten (Kunden-ID, Währung) gesetzt.

Parameters:
header - Name der KTV-Datenelementgruppe ([*.]KTV) innerhalb der Auftragsdaten
Returns:
Konto-Objekt, welches mit den jeweiligen Daten aus dem Auftragssegment initialisiert ist

extractBTG

public org.kapott.hbci.structures.Value extractBTG(String header)
Geldbetrag aus Auftragsdaten extrahieren.

Parameters:
header - Name des BTG-Datenelementes, welches extrahiert werden soll
Returns:
Value-Objekt, welches den extrahierten Geldbetrag repräsentiert

extractStringArray

public String[] extractStringArray(String header)
Extrahieren von evtl. mehrfach auftretenden Datenelemente. Das Datenelement mit dem Pfad header wird als Datenelement betrachtet, welches 0..n mal auftreten kann. Diese Methode gibt ein String[] zurück, welches alle Vorkommen dieses DE enthält (kann zum Beispiel für die Extraktion von Verwendungszweckzeilen benutzt werden -- header=usage.usage).

Parameters:
header - Pfadname des zu extrahierenden Datenelementes
Returns:
String[] (evtl. mit Länge 0) mit den entsprechenden Daten

extractDate

public java.util.Date extractDate(String header)
Extrahiert eine Datumsangabe.

Parameters:
header - Pfadname des zu extrahierenden Datenelementes
Returns:
extrahiertes Datum als Java-Objekt