/* $Id: DataStore.java,v 1.3 2005/06/10 18:03:03 kleiner Exp $
This file is part of HBCI4Java
Copyright (C) 2001-2005 Stefan Palme
HBCI4Java is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
HBCI4Java is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
package org.kapott.hbci.server.datastore;
import java.util.Properties;
import org.kapott.hbci.manager.HBCIKey;
import org.kapott.hbci.server.StatusProtEntry;
import org.kapott.hbci.structures.Konto;
/** <p>Schnittstelle, die vom Server-Code fr den Zugriff auf Laufzeitdaten
benutzt wird. Beim Erzeugen eines HBCI-Server-Objektes (siehe
{@link org.kapott.hbci.server.HBCIServer#HBCIServer(DataStore,org.kapott.hbci.server.ServerCallback)
HBCIServer()}) muss ein Objekt angegeben werden, welches dieses Interface
implementiert. Der HBCI4Java-Server-Code benutzt die Methoden dieser
Schnittstelle, um Daten, die zur Konfiguration, Benutzerverwaltung usw.
bentigt werden, in Erfahrung zu bringen.</p>
<p>Somit sind die Laufzeitdaten eines HBCI-Servers von der
eigentlichen Server-Implementation losgelst. Durch die Verwendung eines
Interfaces kann ein konkreter Server diese Daten auf beliebige Art und
Weise bereitstellen. Fr einen allerersten Server-Test knnten die jeweiligen
Methoden beispielsweise feste Rckgabewerte (also statische Daten)
zurckliefern. In einer "echteren" Implementation knnten die Daten aus
einer Datenbank kommen, die evtl. auch zur Laufzeit des Servers gendert
wird (siehe dazu auch
{@link org.kapott.hbci.server.HBCIServer#reInitializeServerData()} !!).</p>
<p>In der Beschreibung des API wird davon ausgegangen, dass der zu implementierende
HBCI-Server tatschlich innerhalb einer Bank luft, deshalb auch
Beschreibungen wie "<em>Bankleitzahl fr Kreditinstitut zurckgeben</em>".
Soll der HBCI-Server nur innerhalb einer Testumgebung aufgesetzt werden, so
ist hier natrlich prinzipiell jede BLZ mglich, diese muss dann aber auch
clientseitig verwendet werden. Das gilt analog auch fr alle anderen Daten,
die mit diesem Interface verwaltet werden.</p>*/
public interface DataStore
{
/** Zu untersttzende Verbindungstypen zurckgeben. Damit ermittelt das
* <em>HBCI4Java</em>-Server-Framework, welche Verbindungsarten aktiviert
* werden sollen. Gltige Werte sind "<code>TCP</code>" fr "normale"
* TCP-Verbindungen ber Port 3000 sowie "<code>PinTan</code>" fr
* Verbindungen via HBCI-PIN/TAN. Zum Einrichten des PIN/TAN-Listeners siehe
* Datei <code>README.PinTan</code> */
public String[] getListeners();
// BPD data
/** Lndercode fr Kreditinstitut zurckgeben.
@return Lndercode (z.B. "<code>DE</code>") */
public String getCountry();
/** Bankleitzahl fr Kreditinstitut zurckgeben
@return BLZ */
public String getBLZ();
/** Namen des Kreditinstitutes zurckgeben
@return Name der Bank */
public String getKIName();
/** <p>Zurckgeben der Kommunikationsparameter. Damit ist gemeint, welche
Kommunikationspfade genutzt werden knnen, um diesen Server zu erreichen.
Fr jeden zu realisierenden Pfad ist genau ein <code>String[]</code>
zurckzugeben.</p>
<p>Ein solches <code>String[]</code> fr einen Kommunikationspfad enthlt
folgende Daten in dieser Reihenfolge: Typ des Dienstes, Adresse, Adresszusatz,
Filter, Filterversion. (diese Daten entsprechen den Daten aus dem HBCI-Segment
"<em>Kommunikationszugang zurckmelden</em>".
Eine Server-Implementation wird diese Methode also in etwa wiefolgt realisieren:</p>
<pre>
public String[][] getCommData(String hbciVersion)
{
return new String[][] {{"2","192.168.1.1",null,null,null},
{"3","https://192.168.1.1/pintan/PinTanServlet",null,"MIM","1"}};
}
</pre>
<p>Der HBCI4Java-Server-Code fragt fr jede zu untersttzende HBCI-Version separat
die Kommunikationsdaten ab. Im Parameter <code>hbciVersion</code> wird angegeben,
fr welche HBCI-Version er die Daten gerade bentigt. Da diese Informationen i.d.R.
fr jede HBCI-Version identisch sind, wird dieser Parameter bei der Erstellung der
Rckgabedaten meist ignoriert.</p>
@param hbciVersion HBCI-Version, fr die diese Daten gelten sollen
@return Array mit Kommunikationszugangs-Informationen, wobei jedes Array-Element
wiederum ein String-Array mit den eigentlichen Daten pro Zugang ist*/
public String[][] getCommData(String hbciVersion);
/** Menge der untersttzen Sprachen zurckgeben. Es muss ein <code>String[]</code>
zurckgegeben werden, wobei jedes Arrayelement eine Sprache kennzeichnet.
Gltige Sprachcodes sind "<code>DE</code>", "<code>EN</code>" und "<code>FR</code>".
@param hbciVersion HBCI-Version, fr die diese Informationen gelten sollen
@return Array mit untersttzten Sprachen */
public String[] getSuppLangs(String hbciVersion);
/** Gibt die Standard-Sprache des HBCI-Servers zurck. Der hier zurckgegebene Wert
muss einer der Werte aus {@link #getSuppLangs(String)} sein.
@param hbciVersion HBCI-Version, fr die diese Standardsprache gelten soll
@return Standardsprache des Institutes */
public String getDefaultLang(String hbciVersion);
/** Welche HBCI-Versionen soll der HBCI-Server untersttzen? Es muss ein Array
zurckgegeben werden, wobei jedes Element eine untersttzte HBCI-Version
angibt. Gltige Werte sind "<code>201</code>", "<code>210</code>" und
"<code>220</code>". Wenn HBCI via PIN/TAN untersttzt werden soll, muss
hier mindestens die Version "<code>220</code>" angegeben werden.
@return Array der zu untersttzenden HBCI-Versionen */
public String[] getSuppHBCIVersions();
/** <p>Welche Sicherheitsmechanismen soll der HBCI-Server untersttzen? Es muss
ein Array zurckgegeben werden, wobei jeder zu untersttzende
Sicherheitsmechanismus einem Element entspricht. Jedes Element ist wiederum
ein <code>String[]</code>, bei welchem das erste Element den Typ und das
zweite die Version des jeweiligen Mechanismus' angibt. Als Typen sind
prinzipiell "<code>RDH</code>" und "<code>DDV</code>" mglich, als Versions
bis jetzt immer "<code>1</code>". Zur Zeit wird aber nur der Mechanismus
<code>RDH</code> auch tatschlich vom HBCI4Java-Server-Code implementiert.</p>
<p>Soll auch HBCI-PIN/TAN-Untersttzung aktiviert werden, so muss an dieser
Stelle kein spezieller Sicherheitsmechanismus dafr angegeben werden.
Statt dessen muss ein entsprechender Kommunikationszugang zurckgemeldet
werden, und es muss der Listener "<code>PinTan</code>" aktiviert werden.</p>
@param hbciVersion HBCI-Version, fr die diese Informationen gelten sollen
@return Array mit Informationen ber die zu untersttzenden Sicherheitsmechanismen */
public String[][] getSuppSecMethods(String hbciVersion);
/** Welche Kompressionsverfahren soll der HBCI-Server untersttzen? Da Kompression
von <em>HBCI4Java</em> noch nicht untersttzt wird, ist hier vorerst <code>null</code>
oder ein leeres Array (<code>new String[0][]</code>) zurckzugeben.
@param hbciVersion HBCI-Version, fr die diese Informationen gelten sollen
@return zu untersttzende Komressionsverfahren */
public String[][] getSuppCompMethods(String hbciVersion);
/** Wieviele Auftragssegmente sollen pro HBCI-Nachricht mglich sein?
@param hbciVersion HBCI-Version, fr die diese Informationen gelten soll
@return Anzahl der maximalen Auftragssegmente pro HBCI-Auftragsnachricht */
public int getNumOfGVsPerMsg(String hbciVersion);
/** Maximale Gre einer HBCI-Nachricht in KiloByte (1024 Byte). Diese Angabe gilt
fr den HBCI-Client, der HBCI4Java-Server-Code generiert zur Zeit u.U.
grere Nachrichten.
@param hbciVersion HBCI-Version, fr die diese Informationen gelten soll
@return Maximalgrer einer HBCI-Nachricht in KB */
public int getMaxMsgSize(String hbciVersion);
/** Gibt an, ob der HBCI-Server anonyme Zugnge erlauben soll.
@return anonyme Zugnge erlaubt? */
public boolean isAnonAllowed();
/** Gibt die Versionsnummer der aktuell gltigen BankParameterDaten zurck. Die
BPD-Versionsnummer sollte erhht werden, wenn Konfigurationsdaten ndern,
die ber dieses Interface (<code>DataStore</code>) zurckgegeben werden.
Spter wird u.U. eine automatische Versionsnummernverwaltung im
HBCI4Java-Server-Code implementiert werden, die bei Datenvernderungen
automatisch die Versionsnummer aktualisiert.
<code>hbciVersion</code> kann hier zustzliche auch "<code>plus</code>"
sein, falls Untersttzung fr HBCI-PIN/TAN aktiviert ist.
@param hbciVersion HBCI-Version, deren BPD-Version hier gemeint ist
@return Versionsnummer der aktuellen BPD */
public int getBPDVersion(String hbciVersion);
// GV data
/** Liste aller untersttzten HBCI-Geschftsvorflle zurckgeben. Eine Liste aller
mglichen Werte erhlt man mit dem Tool
{@link org.kapott.hbci.tools.ShowLowlevelGVs}, die Zeilen, die mit
"<em>jobname:</em>" beginnen, enthalten die jeweils mglichen GV-Bezeichner
fr die einzelnen Geschftsvorflle.
<code>hbciversion</code> kann hier zustzliche auch "<code>plus</code>"
sein, falls Untersttzung fr HBCI-PIN/TAN aktiviert ist.
@param hbciversion HBCI-Version, fr die die Liste der untersttzten GVs
zurckgegeben werden soll
@return Liste der zu untersttzenden HBCI-Geschftsvorflle */
public String[] getSupportedGVs(String hbciversion);
/* TODO doku fehlt */
public Properties getPinTanGVs();
/** Welche Versionen eines Geschftsvorfalles sollen fr eine bestimmte HBCI-Version
untersttzt werden? Die zur Zeit prinzipiell von <em>HBCI4Java</em> untersttzten
Versionsnummern knnen mit dem Tool {@link org.kapott.hbci.tools.ShowLowlevelGVs}
(siehe auch {@link #getSupportedGVs(String)}) ermittelt werden.
<code>hbciVersion</code> kann hier zustzliche auch "<code>plus</code>"
sein, falls Untersttzung fr HBCI-PIN/TAN aktiviert ist.
@param gvname Name des Geschftsvorfalles, fr den die untersttzten Versionen
zurckgemeldet werden sollen
@param hbciversion HBCI-Version, fr die diese Daten gelten sollen
@return Array mit Versionsnummern */
public int[] getGVVersions(String gvname,String hbciversion);
/** Gibt zurck, wie viele Auftragssegmente einer Geschftsvorfallart pro Auftragsnachricht
erlaubt werden sollen. Dieser Wert wird zwar in die BPD eingestellt, die
der HBCI-Client erhlt, wird aber bei eingehenden Nachrichten noch nicht
vom HBCI4Java-Server-Code berprft (***)
@param gvname Name des Geschftsvorfalles, fr den die Maximalanzahl an Segmenten
pro Nachricht zurckgegeben werden soll
@param gvversion Versionsnummer des entsprechenden Geschftsvorfalles
@return Maximalanzahl an Auftragssegmenten dieses Typs */
public int getGVMaxNum(String gvname,int gvversion);
/** Wieviele Signaturen sind fr einen bestimmten Geschftsvorfall ntig? Hier wird
i.d.R. "<code>1</code>" zurckgegeben. Sollen Mehrfachsignaturen fr einen
GV ntig sein, so kann hier natrlich auch ein hherer Wert zurckgegeben werden.
Dieser Parameter wird vom HBCI4Java-Server-Code bei eingehenden Nachrichten noch
nicht berprft.
@param gvname Name des Geschftsvorfalles, fr die Mindestanzahl Signaturen
ermittelt werden soll
@param gvversion Versionsnummer des entsprechenden Geschftsvorfalles
@return Mindestanzahl an bentigten Signaturen fr diesen GV */
public int getGVMinSigs(String gvname,int gvversion);
/** Ermitteln der Parameter fr einen Geschftsvorfall. Hier muss ein
<code>Property</code>-Objekt zurckgegeben werden, welches als <code>key</code>
den Namen eines GV-Parameters und als Wert den entsprechenden Wert
enthlt. Es gibt leider noch kein externes Tool, mit welchem sich die
bentigten Parameter je Geschftsvorfall anzeigen lassen (***). In einem
<em>HBCI4Java</em>-Client-Programm kann das aber mit der Methode
{@link org.kapott.hbci.GV.HBCIJob#getJobRestrictions()} ermittelt werden.
Auerdem hilft ein Blick in die <em>HBCI4Java</em>-interne Spezifikation
der HBCI-Nachrichten, die Segmente "<code><em>gvname</em>Par*</code>" bzw.
die DEG "<code>Par<em>gvname</em>*</code>" helfen hier weiter.
@param gvname Name des Geschftsvorfalles, fr den die Parameter ermittelt werden
sollen
@param gvversion Versionsnummer des GV, fr den die Parameter bentigt werden
@return <code>Property</code>-Objekt mit Parameterdaten */
public Properties getGVParams(String gvname,int gvversion);
// keys
/** Wird vom HBCI4Java-Server-Code bei dessen Initialisierung aufgerufen, um
die Signierschlssel des Institutes fr den RDH-Zugang zu
erhalten. Das Array muss als erstes Element den ffentlichen und als zweites
den privaten Signierschlssel enthalten.
Sind noch keine Schlssel vorhanden, so kann hier <code>null</code>
zurckgegeben werden. In diesem Fall erzeugt der HBCI4Java-Server-Code
selbststndig neue Signierschlssel und bergibt sie der Methode
{@link #setSigKeys(HBCIKey[])}, damit die Server-Anwendung diese Schlssel
speichern und bei der nchsten Schlssel-Initialisierung zurckgeben kann.
@return Array mit ffentlichem und privaten Signierschlssel der Bank */
public HBCIKey[] getSigKeys();
/** Wird vom HBCI4Java-Server-Code bei dessen Initialisierung aufgerufen, um
die Chiffrierschlssel des Institutes fr den RDH-Zugang zu
erhalten. Das Array muss als erstes Element den ffentlichen und als zweites
den privaten Chiffrierschlssel enthalten.
Sind noch keine Schlssel vorhanden, so kann hier <code>null</code>
zurckgegeben werden. In diesem Fall erzeugt der HBCI4Java-Server-Code
selbststndig neue Chiffrierschlssel und bergibt sie der Methode
{@link #setCryptKeys(HBCIKey[])}, damit die Server-Anwendung diese Schlssel
speichern und bei der nchsten Schlssel-Initialisierung zurckgeben kann.
@return Array mit ffentlichem und privaten Chiffrierschlssel der Bank */
public HBCIKey[] getCryptKeys();
/** Speichern eines neuen Signierschlsselpaares. Nachdem der HBCI4Java-Server-Code
ein neues Signierschlsselpaar erzeugt hat, ruft er diese Methode auf, damit
die HBCI-Server-Anwendung diese Schlssel permanent speichern kann.
@param keys Array mit neuem ffentlichem und privatem Signierschlssel der Bank */
public void setSigKeys(HBCIKey[] keys);
/** Speichern eines neuen Chiffrierschlsselpaares. Nachdem der HBCI4Java-Server-Code
ein neues Chiffrierschlsselpaar erzeugt hat, ruft er diese Methode auf, damit
die HBCI-Server-Anwendung diese Schlssel permanent speichern kann.
@param keys Array mit neuem ffentlichem und privatem Chiffrierschlssel der Bank */
public void setCryptKeys(HBCIKey[] keys);
/** Wird aufgerufen, wenn der HBCI4Java-Server-Code die aktuelle Signatur-ID
fr servergenerierte Signaturen bentigt. Diese Methode wird nur einmal beim
Initialisieren des Servers aufgerufen (und beim Aufruf der Methode
{@link org.kapott.hbci.server.HBCIServer#reInitializeServerData()}), danach
wird die Signatur-ID intern verwaltet.
@return aktuelle Signatur-ID */
public Long getSigId();
/** Speichern des aktuellen Wertes der Signatur-ID. Sobald die Signatur-ID intern
verndert wurde, wird diese Methode aufgerufen, um der HBCI-Anwendung
die Mglichkeit zu geben, die neue Signatur-ID permanent zu speichern
@param sigid die genderte Signatur-ID */
public void setSigId(Long sigid);
// userdata
/** Liste der gltigen Benutzerkennungen ermitteln. Wird vom Server bei
dessen Initialisierung aufgerufen, um die Menge aller gltigen
Benutzerkennungen zu ermitteln
@return Array mit Benutzerkennungen fr den HBCI-Server */
public String[] getUserIds();
/** Gibt zu einer Benutzerkennung die gltigen Kunden-IDs zurck. Wenn
"eigentlich" keine Kunden-IDs verwendet werden, so muss in dem zurckgegebenen
Array trotzdem zumindest ein Element eingestellt werden, welches in
diesem Fall identisch mit der Benutzerkennung sein muss.
@param userid Nutzerkennung, fr die die Kunden-IDs bentigt werden
@return Array mit Kunden-IDs fr diese Benutzerkennung.*/
public String[] getCustomerIds(String userid);
/** Ermitteln der ffentlichen Schlssel eines Nutzers. Diese Methode wird
vom HBCI4Java-Server-Code aufgerufen, wenn die ffentlichen Schlssel fr
eine bestimmte Nutzerkennung bentigt werden. Sind noch keine Schlssel fr
diesen Nutzer eingereicht worden, so kann <code>null</code> zurckgegeben
werden. Das erste Element dieses Arrays muss den ffentlichen Signier-,
das zweite den ffentlichen Chiffrierschlssel fr diese Nutzerkennung
enthalten.
@param userid Benutzerkennung, fr die die ffentlichen Schlssel bentigt werden
@return Array mit ffentlichem Signier- und Chiffrierschlssel des Nutzers oder
<code>null</code>, wenn noch keine Schlssel eingereicht wurden*/
public HBCIKey[] getUserKeys(String userid);
/** Ermitteln der PIN eines Nutzers fr das HBCI-PIN/TAN-Verfahren
* @param userid Nutzerkennung, fr die die PIN zurckgegeben werden soll
* @return PIN des jeweiligen Nutzers fr das HBCI-PIN/TAN-Verfahren */
public String getUserPIN(String userid);
/** Wird aufgerufen, um eine neue PIN fr einen Nutzer zu setzen. Gemeint ist
* hier die PIN fr das HBCI-PIN/TAN-Verfahren.
* @param userid Nutzerkennung, fr die die PIN gendert werden soll
* @param pin neue PIN */
public void setUserPIN(String userid,String pin);
/** Zurckgeben der TAN-Liste eines Nutzers. Das zurckgegebene String-Array
* muss fr jede TAN der aktuellen TAN-Liste einen String im Format
* "TAN:0" oder "TAN:1" enthalten. TAN ist dabei durch eine konkrete TAN
* zu ersetzen. "TAN:0" bedeutet, diese TAN wurde bereits verbraucht,
* "TAN:1" bedeutet, dass diese TAN noch zur Verfgung steht.
* @param userid Nutzerkennung, fr die die TAN-Liste zurckgegeben werden soll
* @return String-Array mit Informationen ber TANs und deren Status
* (verbraucht / nicht verbraucht) */
public String[] getUserTANList(String userid);
/** Wird aufgerufen, wenn fr einen Nutzer eine komplett neue TAN-Liste
* verwendet werden soll.
* @param userid Nutzerkennung, fr den die TAN-Liste gendert werden soll
* @param tans Neue TAN-Liste im Format TAN:0 oder TAN:1 fr jeden Eintrag
* (siehe auch {@link #getUserTANList(String)}) */
public void setUserTANList(String userid,String[] tans);
/** Wird aufgerufen, um eine TAN eines Nutzers als "benutzt" zu markieren.
* @param userid Nutzerkennung des Nutzers, dessen TAN-Liste aktualisiert
* werden soll
* @param tan die TAN aus der Liste, die als "benutzt" markiert werden soll */
public void removeUserTAN(String userid,String tan);
/** Speichern des genderten Signierschlssels eines Nutzers. Wird whrend eines
HBCI-Dialoges ein neuer Signierschlssel durch den Nutzer eingereicht bzw. der
aktuelle Signierschlssel gendert (Nachrichten "<em>Erstmalige Einreichung
der Nutzerschlssel</em>" bzw. "<em>nderung der Nutzerschlssel</em>"), dann
ruft der HBCI4Java-Server-Code diese Methode auf, damit die HBCI-Anwendung
die neuen Nutzerschlssel permanent speichern kann.
@param userid Nutzerkennung, zu der der neue Signierschlssel gehrt
@param key neuer ffentlicher Signierschlssel des Nutzers*/
public void storeUserSigKey(String userid,HBCIKey key);
/** Speichern des genderten Chiffrierschlssels eines Nutzers. Wird whrend eines
HBCI-Dialoges ein neuer Chiffrierschlssel durch den Nutzer eingereicht bzw. der
aktuelle Chiffrierschlssel gendert (Nachrichten "<em>Erstmalige Einreichung
der Nutzerschlssel</em>" bzw. "<em>nderung der Nutzerschlssel</em>"), dann
ruft der HBCI4Java-Server-Code diese Methode auf, damit die HBCI-Anwendung
die neuen Nutzerschlssel permanent speichern kann.
@param userid Nutzerkennung, zu der der neue Chiffrierschlssel gehrt
@param key neuer ffentlicher Chiffrierschlssel des Nutzers*/
public void storeUserEncKey(String userid,HBCIKey key);
/** Ermitteln der System-IDs fr einen Nutzer.
Existiert fr einen Nutzer noch keine System-ID (weil der Client noch
keine "<em>Synchronisierung der System-ID</em>" durchgefhrt hat), dann
muss hier ein leeres Array zurckgegeben werden.
@param userid Nutzerkennung, fr die die System-IDs bentigt werden
@return Array mit den gltigen System-IDs fr diesen Nutzer */
public String[] getSysIds(String userid);
/** Speichern einer neuen System-ID fr einen Nutzer. Fhrt ein Nutzer eine
"<em>Synchronisation der System-ID</em>" aus, so generiert der
HBCI4Java-Server-Code fr diesen Nutzer eine neue System-ID und sendet ihm
diese zurck. Gleichzeitig wird diese Methode aufgerufen, damit die
HBCI-Server-Anwendung die neue fr diesen Nutzer gltige System-ID permanent
abspeichern kann. Existiert die angegebene System-ID bereits, so wird
die bereits existierende System-ID einfach berschrieben.
@param userid Nutzerkennung, fr die die neue System-ID gespeichert werden soll
@param sysid neue System-ID fr diesen Nutzer */
public void addSysId(String userid,String sysid);
/** Ermitteln der schon eingereichten Signatur-IDs fr eine bestimmte Nutzerkennung
und eine bestimmte System-ID. Wenn die System-ID nicht existiert, so wird
eine Exception geworfen.
@param userid Nutzerkennung, fr die die Liste der Sig-IDs ermittelt werden soll
@param sysid System-ID, fr die die schon eingereichten Signatur-IDs ermittelt
werden sollen.
@return Array aus <code>long</code>-Werten, wobei jedes Element eine schon
eingereichte Signatur-ID darstellt */
public long[] getSigIds(String userid,String sysid);
/** Lschen der Liste schon eingereichter Signatur-IDs fr eine bestimmte System-ID.
* Existiert die angegebene System-ID nicht, so wird eine Exception geworfen.
@param userid Nutzerkennung, fr die die Liste der Sig-IDs gelscht werden soll
@param sysid System-ID, fr welche die Signatur-IDs zurckgesetzt werden sollen. */
public void clearSigIds(String userid,String sysid);
/** Hinzufgen einer Signatur-ID zur Liste der schon eingereichten Signatur-IDs.
@param userid Nutzerkennung, deren Sig-ID-Liste aktualisiert werden soll. Wenn
die angegebene System-ID noch nicht existiert, wird eine Exception geworfen.
@param sysid System-ID, fr die diese Signatur-ID hinzugefgt werden soll
(Die Doppeleinreichungskontrolle fr Signatur-IDs wird fr jede
System-ID separat durchgefhrt)
@param sigid Signatur-ID, die zur Liste hinzugefgt werden soll */
public void addSigId(String userid,String sysid,long sigid);
/** Ermitteln aller fr eine bestimmte Nutzerkennung gltigen Kontoverbindungen.
Fr die durch diese Methode zurckgegeben {@link org.kapott.hbci.structures.Konto}-Objekte
mssen mindestens die Felder <code>country</code>, <code>blz</code>, <code>number</code>,
<code>curr</code>, <code>name</code>, <code>type</code> und <code>customerid</code>
belegt sein. <code>customerid</code> gibt dabei eine der Kunden-IDs aus
{@link #getCustomerIds(String)} an, fr die Berechtigung zum Zugriff auf dieses
Konto besteht
@param userid Benutzerkennung, fr die die verfgbaren Kontoverbindungen zurckgemeldet
werden sollen
@return Array mit Kontoinformationen fr diesen Nutzer */
public Konto[] getAccounts(String userid);
/** Ermitteln der Versionsnummer der Kontoinformationen. Sobald sich Daten in den
Kontoinformationen fr einen Benutzer (siehe {@link #getAccounts(String)}) ndern,
muss hier eine hhere Versionsnummer zurckgemeldet werden als zu dem Zeitpunkt,
zu dem noch die alten Kontodaten galten.
@param userid Benutzerkennung, fr die Version der Kontoinformationen bentigt wird
@return Versionsnummer der Kontoinformationen, die via {@link #getAccounts(String)}
zurckgegeben werden */
public int getAccountInfoVersion(String userid);
// misc
/** Ermitteln des Log-Levels, mit welchem der HBCI4Java-Server-Code Logausgaben
erzeugen soll. Die Logausgaben werden via
{@link org.kapott.hbci.server.ServerCallback#log(String,int,java.util.Date,StackTraceElement)} zur
HBCI-Anwendung gesandt. Gltige Werte fr das Log-Level sind in der Dokumentation
zu {@link org.kapott.hbci.manager.HBCIUtils#LOG_DEBUG HBCIUtils} aufgefhrt.
@return Loglevel fr HBCI4Java-Server-Logausgaben */
public int getLogLevel();
/* TODO doku fehlt */
public void addToStatusProt(String userid,StatusProtEntry entry);
}