Package de.willuhn.jameica.hbci.synchronize.scripting

# Class ScriptingSynchronizeBackend

java.lang.Object
de.willuhn.jameica.hbci.synchronize.AbstractSynchronizeBackend<ScriptingSynchronizeJobProvider>
de.willuhn.jameica.hbci.synchronize.scripting.ScriptingSynchronizeBackend

All Implemented Interfaces:
  `SynchronizeBackend`

@Lifecycle(CONTEXT) public class ScriptingSynchronizeBackend extends AbstractSynchronizeBackend<ScriptingSynchronizeJobProvider>
Backend, welches Konten via Scripting anbindet.

## Nested Class Summary

Nested Classes
Modifier and Type
Class
Description
`protected class`
`ScriptingSynchronizeBackend.ScriptingJobGroup`
Unsere Scripting-basierte Implementierung.

## Nested classes/interfaces inherited from class de.willuhn.jameica.hbci.synchronize.AbstractSynchronizeBackend

`AbstractSynchronizeBackend.JobGroup, AbstractSynchronizeBackend.Synchronization, AbstractSynchronizeBackend.Worker`

## Field Summary

### Fields inherited from class de.willuhn.jameica.hbci.synchronize.AbstractSynchronizeBackend

`i18n, worker`

### Fields inherited from interface de.willuhn.jameica.hbci.synchronize.SynchronizeBackend

`QUEUE_ERROR, QUEUE_NEXT, QUEUE_STATUS`

## Constructor Summary

Constructors
Constructor
Description
`ScriptingSynchronizeBackend()`

## Method Summary

Modifier and Type
Method
Description
`<T> T`
`create(Class<? extends SynchronizeJob> type, Konto konto)`
Kann ueberschrieben werden, um weitere Checks durchzufuehren oder weitere Context-Properties im Job zu setzen.
`protected AbstractSynchronizeBackend.JobGroup`
`createJobGroup(Konto k)`
Muss ueberschrieben werden, um dort eine Instanz der JobGroup zurueckzuliefern, in der die sync()-Funktion implementiert ist.
`SynchronizeSession`
`execute(List<SynchronizeJob> jobs)`
Kann ueberschrieben werden, um weitere Checks durchzufuehren.
`protected Class<ScriptingSynchronizeJobProvider>`
`getJobProviderInterface()`
Liefert das Marker-Interface der Job-Provider des Backends.
`String`
`getName()`
Liefert einen sprechenden Namen fuer das Backend.
`List<String>`
`getPropertyNames(Konto konto)`
Liefert eine optionale Liste mit Property-Namen, die in Hibiscus in den Sync-Einstellungen als Eingabefelder fuer zusaetzliche Konfigurationsoptionen angezeigt werden sollen.
`List<Konto>`
`getSynchronizeKonten(Konto k)`
Liefert eine Liste der Konten, fuer die die Synchronisierung ausgefuehrt werden.
`boolean`
`supports(Class<? extends SynchronizeJob> type, Konto konto)`
Kann ueberschrieben werden, um weitere Checks durchzufuehren.

### Methods inherited from class de.willuhn.jameica.hbci.synchronize.AbstractSynchronizeBackend

`getCurrentSession, getImplementor, getJobProviders, getSynchronizeJobs`

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

## Constructor Details

### ScriptingSynchronizeBackend

public ScriptingSynchronizeBackend()

## Method Details

### getName

public String getName()
Description copied from interface: `SynchronizeBackend`
Liefert einen sprechenden Namen fuer das Backend.

Returns:
  sprechender Name fuer das Backend.

### getJobProviderInterface

protected Class<ScriptingSynchronizeJobProvider> getJobProviderInterface()
Description copied from class: `AbstractSynchronizeBackend`
Liefert das Marker-Interface der Job-Provider des Backends.

Specified by:
  `getJobProviderInterface` in class `AbstractSynchronizeBackend<ScriptingSynchronizeJobProvider>`
Returns:
  das Marker-Interface der Job-Provider des Backends.

### createJobGroup

protected AbstractSynchronizeBackend.JobGroup createJobGroup(Konto k)
Description copied from class: `AbstractSynchronizeBackend`
Muss ueberschrieben werden, um dort eine Instanz der JobGroup zurueckzuliefern, in der die sync()-Funktion implementiert ist.

Specified by:
  `createJobGroup` in class `AbstractSynchronizeBackend<ScriptingSynchronizeJobProvider>`
Parameters:
  `k` - das Konto der Gruppe.
Returns:
  die Instanz der Gruppe.

### getSynchronizeKonten

public List<Konto> getSynchronizeKonten(Konto k)
Description copied from class: `AbstractSynchronizeBackend`
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.

Overrides:
  `getSynchronizeKonten` in class `AbstractSynchronizeBackend<ScriptingSynchronizeJobProvider>`
Parameters:
  `k` - das Konto.
Returns:
  die Liste der Konten.

### create

public <T> T create(Class<? extends SynchronizeJob> type, Konto konto) throws de.willuhn.util.ApplicationException
Description copied from class: `AbstractSynchronizeBackend`
Kann ueberschrieben werden, um weitere Checks durchzufuehren oder weitere Context-Properties im Job zu setzen.

Specified by:
  `create` in interface `SynchronizeBackend`
Overrides:
  `create` in class `AbstractSynchronizeBackend<ScriptingSynchronizeJobProvider>`
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)
Description copied from class: `AbstractSynchronizeBackend`
Kann ueberschrieben werden, um weitere Checks durchzufuehren.

Specified by:
  `supports` in interface `SynchronizeBackend`
Overrides:
  `supports` in class `AbstractSynchronizeBackend<ScriptingSynchronizeJobProvider>`
Parameters:
  `type` - der zu pruefende Job-Typ.
  `konto` - das Konto.
Returns:
  true, wenn es ihn unterstuetzt, sonst false.

### execute

public SynchronizeSession execute(List<SynchronizeJob> jobs) throws de.willuhn.util.ApplicationException, de.willuhn.jameica.system.OperationCanceledException
Description copied from class: `AbstractSynchronizeBackend`
Kann ueberschrieben werden, um weitere Checks durchzufuehren.

Specified by:
  `execute` in interface `SynchronizeBackend`
Overrides:
  `execute` in class `AbstractSynchronizeBackend<ScriptingSynchronizeJobProvider>`
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.

### getPropertyNames

public List<String> getPropertyNames(Konto konto)
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`
Overrides:
  `getPropertyNames` in class `AbstractSynchronizeBackend<ScriptingSynchronizeJobProvider>`
Parameters:
  `konto` - das Konto.
Returns:
  Liste von lesbaren Property-Namen. Die werden dem Benutzer 1:1 als Label von Eingabefeldern angezeigt.