Class AbstractSynchronizeBackend<T extends SynchronizeJobProvider>

java.lang.Object
de.willuhn.jameica.hbci.synchronize.AbstractSynchronizeBackend<T>
Type Parameters:
T - der konkrete Typ des JobProviders.
All Implemented Interfaces:
SynchronizeBackend
Direct Known Subclasses:
HBCISynchronizeBackend, ScriptingSynchronizeBackend

public abstract class AbstractSynchronizeBackend<T extends SynchronizeJobProvider> extends Object implements SynchronizeBackend
Abstrakte Basis-Implementierung fuer ein Synchronize-Backend.
  • Field Details

  • Constructor Details

    • AbstractSynchronizeBackend

      public AbstractSynchronizeBackend()
  • Method Details

    • getSynchronizeKonten

      public List<Konto> getSynchronizeKonten(Konto k)
      Liefert eine Liste der Konten, fuer die die Synchronisierung ausgefuehrt werden. Die Funktion macht nichts anderes, als: - alle zur Synchronisierung aktiven zurueckzuliefern, wenn k=null ist - eine Liste mit nur dem angegebenen Konto zurueckzuliefern, wenn k!=null ist. Die Liste enthaelt jedoch generell nur Konten, die nicht deaktiviert sind. Kann ueberschrieben werden, um die Liste weiter einzuschraenken.
      Parameters:
      k - das Konto.
      Returns:
      die Liste der Konten.
    • getJobProviderInterface

      protected abstract Class<T> getJobProviderInterface()
      Liefert das Marker-Interface der Job-Provider des Backends.
      Returns:
      das Marker-Interface der Job-Provider des Backends.
    • createJobGroup

      protected abstract AbstractSynchronizeBackend<T>.JobGroup createJobGroup(Konto k)
      Muss ueberschrieben werden, um dort eine Instanz der JobGroup zurueckzuliefern, in der die sync()-Funktion implementiert ist.
      Parameters:
      k - das Konto der Gruppe.
      Returns:
      die Instanz der Gruppe.
    • getJobProviders

      protected List<T> getJobProviders()
      Liefert unsere Job-Provider.
      Returns:
      unsere Job-Provider.
    • getImplementor

      protected Class<? extends SynchronizeJob> getImplementor(Class<? extends SynchronizeJob> type, Konto konto)
      Liefert die passende Implementierung fuer den angegebenen Job.
      Parameters:
      type - der Typ des Jobs.
      konto - das Konto, fuer das der Job gesucht wird.
      Returns:
      die passende Implementierung oder null, wenn keine Implementierung gefunden wurde.
    • create

      public <R> R create(Class<? extends SynchronizeJob> type, Konto konto) throws de.willuhn.util.ApplicationException
      Kann ueberschrieben werden, um weitere Checks durchzufuehren oder weitere Context-Properties im Job zu setzen.
      Specified by:
      create in interface SynchronizeBackend
      Parameters:
      type - der zu erstellende Job-Typ.
      konto - das Konto.
      Returns:
      die Instanz des Jobs.
      Throws:
      de.willuhn.util.ApplicationException - bei einem Anwendungsfehler.
    • supports

      public boolean supports(Class<? extends SynchronizeJob> type, Konto konto)
      Kann ueberschrieben werden, um weitere Checks durchzufuehren.
      Specified by:
      supports in interface SynchronizeBackend
      Parameters:
      type - der zu pruefende Job-Typ.
      konto - das Konto.
      Returns:
      true, wenn es ihn unterstuetzt, sonst false.
    • getSynchronizeJobs

      public final List<SynchronizeJob> getSynchronizeJobs(Konto k)
      Description copied from interface: SynchronizeBackend
      Liefert eine Liste der auszufuehrenden Synchronisierungsjobs auf dem angegebenen Konto.
      Specified by:
      getSynchronizeJobs in interface SynchronizeBackend
      Parameters:
      k - das Konto. Wenn kein Konto angegeben ist, werden die Jobs aller Konten zurueckgeliefert.
      Returns:
      Liste der auszufuehrenden Jobs. Die Funktion darf auch NULL liefern.
    • getPropertyNames

      public List<String> getPropertyNames(Konto k)
      Description copied from interface: SynchronizeBackend
      Liefert eine optionale Liste mit Property-Namen, die in Hibiscus in den Sync-Einstellungen als Eingabefelder fuer zusaetzliche Konfigurationsoptionen angezeigt werden sollen. Wird z.Bsp. vom ScriptingBackend verwendet, um dort die Zugangsdaten zur Webseite hinterlegen zu koennen, ohne dafuer Kontonummer, Benutzerkennung, usw. des Kontos "missbrauchen" zu muessen. Die vom Benutzer eingegebenen Werte werden als Meta-Daten zum Konto gespeichert. Sie koennen mittels HibiscusDBObject.getMeta(String, String) wieder abgerufen werden. Besitzt ein Property den Suffix "(true/false)" wird es als Checkbox angezeigt. Besitzt ein Property den Suffix "(pwd)" oder "(password)" wird es als Passwort-Eingabe angezeigt. Der Suffix wird vor dem Speichern des Property in den Meta-Daten des Konto entfernt.
      Specified by:
      getPropertyNames in interface SynchronizeBackend
      Parameters:
      k - das Konto.
      Returns:
      Liste von lesbaren Property-Namen. Die werden dem Benutzer 1:1 als Label von Eingabefeldern angezeigt.
    • execute

      public SynchronizeSession execute(List<SynchronizeJob> jobs) throws de.willuhn.util.ApplicationException, de.willuhn.jameica.system.OperationCanceledException
      Kann ueberschrieben werden, um weitere Checks durchzufuehren.
      Specified by:
      execute in interface SynchronizeBackend
      Parameters:
      jobs - die auszufuehrenden Jobs.
      Returns:
      die neue Session.
      Throws:
      de.willuhn.util.ApplicationException - bei einem Anwendungsfehler.
      de.willuhn.jameica.system.OperationCanceledException - wenn der User die Synchronisierung abgebrochen hat.
    • getCurrentSession

      public final SynchronizeSession getCurrentSession()
      Description copied from interface: SynchronizeBackend
      Liefert die aktuelle Session oder NULL wenn gerade keine laeuft.
      Specified by:
      getCurrentSession in interface SynchronizeBackend
      Returns:
      die aktuelle Session oder NULL wenn gerade keine laeuft.