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 java.lang.Object implements SynchronizeBackend
Abstrakte Basis-Implementierung fuer ein Synchronize-Backend.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description protected class
AbstractSynchronizeBackend.JobGroup
Abstrakte Basis-Klasse, die die Jobs nach Konten gruppiert und ausfuehrt.protected class
AbstractSynchronizeBackend.Synchronization
Container fuer alle auszufuehrenden Jobs gruppiert nach Konto.protected class
AbstractSynchronizeBackend.Worker
Implementierung des eigentlichen Worker-Threads.
-
Field Summary
Fields Modifier and Type Field Description protected static de.willuhn.util.I18N
i18n
protected AbstractSynchronizeBackend.Worker
worker
-
Fields inherited from interface de.willuhn.jameica.hbci.synchronize.SynchronizeBackend
QUEUE_ERROR, QUEUE_STATUS
-
-
Constructor Summary
Constructors Constructor Description AbstractSynchronizeBackend()
-
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description <R> R
create(java.lang.Class<? extends SynchronizeJob> type, Konto konto)
Kann ueberschrieben werden, um weitere Checks durchzufuehren oder weitere Context-Properties im Job zu setzen.protected abstract AbstractSynchronizeBackend.JobGroup
createJobGroup(Konto k)
Muss ueberschrieben werden, um dort eine Instanz der JobGroup zurueckzuliefern, in der die sync()-Funktion implementiert ist.SynchronizeSession
execute(java.util.List<SynchronizeJob> jobs)
Kann ueberschrieben werden, um weitere Checks durchzufuehren.SynchronizeSession
getCurrentSession()
Liefert die aktuelle Session oder NULL wenn gerade keine laeuft.protected java.lang.Class<? extends SynchronizeJob>
getImplementor(java.lang.Class<? extends SynchronizeJob> type, Konto konto)
Liefert die passende Implementierung fuer den angegebenen Job.protected abstract java.lang.Class<T>
getJobProviderInterface()
Liefert das Marker-Interface der Job-Provider des Backends.protected java.util.List<T>
getJobProviders()
Liefert unsere Job-Provider.java.util.List<java.lang.String>
getPropertyNames(Konto k)
Liefert eine optionale Liste mit Property-Namen, die in Hibiscus in den Sync-Einstellungen als Eingabefelder fuer zusaetzliche Konfigurationsoptionen angezeigt werden sollen.java.util.List<SynchronizeJob>
getSynchronizeJobs(Konto k)
Liefert eine Liste der auszufuehrenden Synchronisierungsjobs auf dem angegebenen Konto.java.util.List<Konto>
getSynchronizeKonten(Konto k)
Liefert eine Liste der Konten, fuer die die Synchronisierung ausgefuehrt werden.boolean
supports(java.lang.Class<? extends SynchronizeJob> type, Konto konto)
Kann ueberschrieben werden, um weitere Checks durchzufuehren.-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface de.willuhn.jameica.hbci.synchronize.SynchronizeBackend
getName
-
-
-
-
Field Detail
-
i18n
protected static final de.willuhn.util.I18N i18n
-
worker
protected AbstractSynchronizeBackend.Worker worker
-
-
Method Detail
-
getSynchronizeKonten
public java.util.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 java.lang.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.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 java.util.List<T> getJobProviders()
Liefert unsere Job-Provider.- Returns:
- unsere Job-Provider.
-
getImplementor
protected java.lang.Class<? extends SynchronizeJob> getImplementor(java.lang.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(java.lang.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 interfaceSynchronizeBackend
- 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(java.lang.Class<? extends SynchronizeJob> type, Konto konto)
Kann ueberschrieben werden, um weitere Checks durchzufuehren.- Specified by:
supports
in interfaceSynchronizeBackend
- Parameters:
type
- der zu pruefende Job-Typ.konto
- das Konto.- Returns:
- true, wenn es ihn unterstuetzt, sonst false.
-
getSynchronizeJobs
public final java.util.List<SynchronizeJob> getSynchronizeJobs(Konto k)
Description copied from interface:SynchronizeBackend
Liefert eine Liste der auszufuehrenden Synchronisierungsjobs auf dem angegebenen Konto.- Specified by:
getSynchronizeJobs
in interfaceSynchronizeBackend
- 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 java.util.List<java.lang.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 mittelsHibiscusDBObject.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 interfaceSynchronizeBackend
- 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(java.util.List<SynchronizeJob> jobs) throws de.willuhn.util.ApplicationException, de.willuhn.jameica.system.OperationCanceledException
Kann ueberschrieben werden, um weitere Checks durchzufuehren.- Specified by:
execute
in interfaceSynchronizeBackend
- 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 interfaceSynchronizeBackend
- Returns:
- die aktuelle Session oder NULL wenn gerade keine laeuft.
-
-