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.
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; }
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; }