de.bsvrz.kex.kexdav.main
Class AbstractKExDaVExchange<D,E>

java.lang.Object
  extended by de.bsvrz.kex.kexdav.main.AbstractKExDaVExchange<D,E>
Direct Known Subclasses:
DataExchangeManager, ObjectExchangeManager, ParameterExchangeManager, SetExchangeManager

public abstract class AbstractKExDaVExchange<D,E>
extends Object

Abstrakte Klasse, die den Austausch von Objekten zwischen 2 Datenverteilern kapselt. Diese Klasse erhält Parameter, Und erstellt daraus eine beliebige anzahl von Definitionen (generischer Parameter D). Beim erneuten Eintreffen von Parametern werden diese Definitionen aktualisiert und mit den alten Definitionen verglichen. Für jede neue Definition wird ein neues Austausch-Objekt erstellt (generischer Parameter E). Für jede weggefallene Definition wird das zugehörige Austauschobjekt entsorgt. Wenn eine Definition unverändert bleibt, wird auch am Austauschobjekt nichts gemacht. So werden nur die Austausche von Parameteränderungen beeinflusst, wo auch wirklich die Parameter geändert werden. Hinweis: Definitionen und Austauschobjekte sollten weitgehend immutable sein.

Descriptions sollten sinnvolle implementierungen von equals und hashcode haben, da sie hier in einer HashMap gespeichert werden und bei bedarf verglichen werden.

Author:
Kappich Systemberatung

Field Summary
private  Map<D,E> _exchangeMap
           
private  ManagerInterface _manager
           
private  RemoteDaVParameter _parameter
           
 
Constructor Summary
protected AbstractKExDaVExchange(RemoteDaVParameter parameter, ManagerInterface manager)
          Abstrakte Klasse, die den Austausch von Objekten zwischen 2 Datenverteilern kapselt
 
Method Summary
protected abstract  E createExchange(D description)
          Template-Methode, die anhand einer Description ein Datenaustausch-Klasse erstellt
protected abstract  Set<D> getExchangeDescriptionsFromNewParameters(RemoteDaVParameter parameters)
          Template-Methode, die für einen Parameter-Datensatz alle Datenbeschreibungen zurückgeben soll
 Map<D,E> getExchangeMap()
          Gibt die Descriptions und zugehörigen Austauschobjekte zurück, die zur Zeit in dieser Klasse gespeichert sind
protected  ManagerInterface getManager()
          Gibt den KExDaV-Manager zurück
protected  void notifyNewExchangeDescriptions(Set<D> newExchangeDescriptions)
          Benachrichtigung über neue Asutausche, damit z.B.
private  void refreshExchanges(RemoteDaVParameter parameters)
          Aktualisiert die bestehenden Austauschmodule
protected abstract  void removeExchange(E exchange)
          Template-Methode, die eine Datenaustauschklasse deaktiviert bzw.
 void setParameter(RemoteDaVParameter newParameters)
          Wird aufgerufen, falls neue Parameter eintreffen
protected  void start()
          Startet den Austausch, aktualisiert den Austausch falls bereits gestartet
protected  void stop()
          Stoppt den Austausch
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

_parameter

private RemoteDaVParameter _parameter

_exchangeMap

private final Map<D,E> _exchangeMap

_manager

private final ManagerInterface _manager
Constructor Detail

AbstractKExDaVExchange

protected AbstractKExDaVExchange(RemoteDaVParameter parameter,
                                 ManagerInterface manager)
Abstrakte Klasse, die den Austausch von Objekten zwischen 2 Datenverteilern kapselt

Parameters:
parameter - Parameter
manager - KExDaV-Verwaltung
Method Detail

start

protected void start()
              throws MissingAreaException
Startet den Austausch, aktualisiert den Austausch falls bereits gestartet

Throws:
MissingAreaException - falls kein gültiger Konfigurationsbereich zum Erstellen von Objekten angegeben wurde, aber einer benötigt wurde.

stop

protected void stop()
Stoppt den Austausch


setParameter

public void setParameter(RemoteDaVParameter newParameters)
                  throws MissingAreaException
Wird aufgerufen, falls neue Parameter eintreffen

Parameters:
newParameters - Neue Parameter, die die auszutauschenden Daten und Objekte festlegen
Throws:
MissingAreaException - falls kein gültiger Konfigurationsbereich zum Erstellen von Objekten angegeben wurde, aber einer benötigt wurde.

refreshExchanges

private void refreshExchanges(RemoteDaVParameter parameters)
                       throws MissingAreaException
Aktualisiert die bestehenden Austauschmodule

Parameters:
parameters - Parameter
Throws:
MissingAreaException - falls kein gültiger Konfigurationsbereich zum Erstellen von Objekten angegeben wurde, aber einer benötigt wurde.

notifyNewExchangeDescriptions

protected void notifyNewExchangeDescriptions(Set<D> newExchangeDescriptions)
Benachrichtigung über neue Asutausche, damit z.B. Systemobjekte geladen werden können

Parameters:
newExchangeDescriptions - neue Austauschbeschreibungen

getManager

protected final ManagerInterface getManager()
Gibt den KExDaV-Manager zurück

Returns:
Manager

getExchangeMap

public Map<D,E> getExchangeMap()
Gibt die Descriptions und zugehörigen Austauschobjekte zurück, die zur Zeit in dieser Klasse gespeichert sind

Returns:
Map mit Descriptions und Austauschobjekten

createExchange

protected abstract E createExchange(D description)
                             throws KExDaVException
Template-Methode, die anhand einer Description ein Datenaustausch-Klasse erstellt

Parameters:
description - Description
Returns:
Datenaustausch-Klasse
Throws:
KExDaVException - Falls ein Fehler auftritt

removeExchange

protected abstract void removeExchange(E exchange)
Template-Methode, die eine Datenaustauschklasse deaktiviert bzw. entfernt

Parameters:
exchange - Datenaustauschklasse

getExchangeDescriptionsFromNewParameters

protected abstract Set<D> getExchangeDescriptionsFromNewParameters(RemoteDaVParameter parameters)
Template-Methode, die für einen Parameter-Datensatz alle Datenbeschreibungen zurückgeben soll

Parameters:
parameters - Parameter
Returns:
Set mit Datenbeschreibungen