===== Externe Adressdaten einbinden =====
In Hibiscus können auf einfache Weise zusätzliche Adressbücher integriert werden. Hierzu müssen lediglich die beiden folgenden Interfaces implementiert werden.
Die Implementierungen können in einer Jar-Datei im Verzeichnis "plugins/hibiscus" abgelegt werden. Der Dateiname der JAR-Datei muss mit "ext_" beginnen. Also z.Bsp. "ext_myaddresses.jar". Beim nächsten Start wird das Adressbuch automatisch erkannt. Sobald neben dem Hibiscus-eigenen noch ein weiteres Adressbuch existiert, wird die View "Adressbuch" sowie der Dialog zur Auswahl einer Adresse um eine zusätzliche Combo-Box erweitert, in der der User gezielt in einem bestimmten Adressbuch suchen kann.
=== de.willuhn.jameica.hbci.rmi.Addressbook ===
package de.willuhn.jameica.hbci.rmi;
import java.rmi.Remote;
import java.rmi.RemoteException;
import java.util.List;
/**
* Interface fuer ein einzelnes Adressbuch.
* Alle Klassen, die dieses Interface implementieren, werden automatisch von
* Hibiscus erkannt.
* Alle Implementierungen muessen einen parameterlosen Konstruktor
* besitzen (Bean-Spezifikation), um via Reflection instanziiert werden zu koennen.
*/
public interface Addressbook extends Remote
{
/**
* Liefert einen sprechenden Namen fuer das Adressbuch.
* @return Name des Adressbuches.
* @throws RemoteException
*/
public String getName() throws RemoteException;
/**
* Sucht nach Adressen und liefert die gefundenen zurueck.
* Es ist der jeweiligen Implementierung des Adressbuches ueberlassen,
* in welchen Feldern/Attributen der Adressdaten sie nach dem uebergebenen Text
* sucht.
* Wird kein Text uebergeben, kann das Adressbuch selbst entscheiden,
* ob es alle Adressen zurueckliefert oder gar keine.
* @param text der Suchtext.
* @return Liste der gefundenen Adressen.
* Die Objekte der Liste muessen vom Typ Address sein.
* Die Funktion darf auch null zurueckliefern, wenn keine Adressen gefunden wurden.
* @throws RemoteException
* @see AddressbookService#findAddresses(String)
*/
public List findAddresses(String text) throws RemoteException;
/**
* Prueft, ob im Adressbuch eine Adresse mit diesen Eigenschaften enthalten ist.
* @param address die gesuchte Adresse.
* @return die Adresse mit den gleichen Eigenschaften aus dem Adressbuch oder null.
* @throws RemoteException
*/
public Address contains(Address address) throws RemoteException;
}
=== de.willuhn.jameica.hbci.rmi.Address ===
package de.willuhn.jameica.hbci.rmi;
import java.rmi.Remote;
import java.rmi.RemoteException;
/**
* Basis-Interface fuer einen Adressbuch-Eintrag.
* Die deutschen Methoden-Namen (trotz englischem Interface-Namen)
* sind ein Zugestaendnis an die existierende Hibiscus-API.
*/
public interface Address extends Remote
{
/**
* Liefert die Kontonummer.
* @return Kontonummer.
* @throws RemoteException
*/
public String getKontonummer() throws RemoteException;
/**
* Liefert die BLZ.
* @return BLZ.
* @throws RemoteException
*/
public String getBlz() throws RemoteException;
/**
* Liefert den Namen.
* @return Name.
* @throws RemoteException
*/
public String getName() throws RemoteException;
/**
* Liefert einen zusaetzlichen Kommentar fuer den Adressbuch-Eintrag.
* @return Kommentar.
* @throws RemoteException
*/
public String getKommentar() throws RemoteException;
/**
* Liefert die BIC.
* @return die BIC.
* @throws RemoteException
*/
public String getBic() throws RemoteException;
/**
* Liefert die IBAN.
* @return die IBAN.
* @throws RemoteException
*/
public String getIban() throws RemoteException;
/**
* Liefert einen Freitext mit der Kategorie.
* @return Freitext mit der Kategorie.
* @throws RemoteException
*/
public String getKategorie() throws RemoteException;
}