de.bsvrz.kex.kexdav.correspondingObjects
Class CorrespondingObjectManager

java.lang.Object
  extended by de.bsvrz.kex.kexdav.correspondingObjects.CorrespondingObjectManager
All Implemented Interfaces:
ObjectManagerInterface

public class CorrespondingObjectManager
extends Object
implements ObjectManagerInterface

Verwaltung korrespondierender Objekte, der Konfigurationsbereiche um diese abzuspeichern, und der Plug-Ins um die Attributgruppen zu konvertieren

Author:
Kappich Systemberatung

Field Summary
private  Map<String,ConfigurationArea> _localAreas
           
private  ClientDavInterface _localConnection
           
private  ConfigurationArea _localDefaultArea
           
private  ManagerInterface _manager
           
private  HashBagMap<ObjectSpecification,CorrespondingObject> _objectMap
           
private  Map<AttributeGroupPair,KExDaVDataPlugin> _plugins
           
private  Map<String,ConfigurationArea> _remoteAreas
           
private  ClientDavInterface _remoteConnection
           
private  ConfigurationArea _remoteDefaultArea
           
 
Constructor Summary
CorrespondingObjectManager(ClientDavInterface localConnection, ClientDavInterface remoteConnection, ManagerInterface manager, Map<AttributeGroupPair,KExDaVDataPlugin> plugins)
          Erstellt eine Verwaltung korrespondierender Objekte.
 
Method Summary
 void clear()
          Beendet alle von dieser Klasse verwendeten Austausche
 void copyObjectIfNecessary(ObjectSpecification objectSpecification, ClientDavInterface sourceConnection, ClientDavInterface targetConnection)
          Wird aufgerufen, wenn im Zielsystem ein dynamisches Objekt gebraucht wird.
 CopyableCorrespondingObject createObjectExchange(ObjectSpecification objectSpecification, Direction direction)
          Erstellt einen Austausch dynamischer Objekte
 ConfigurationArea getConfigurationAreaLocal(String typePid)
          Sucht den passenden Konfigurationsbereich um ein Objekt im Lokal-System abzuspeichern
 ConfigurationArea getConfigurationAreaRemote(String typePid)
          Sucht den passenden Konfigurationsbereich um ein Objekt im Remote-System abzuspeichern
 ClientDavInterface getLocalConnection()
          Gibt die lokale Verbindung zurück
 CorrespondingObject getObject(ObjectSpecification objectSpecification)
          Gibt zu einer Pid ein korrespondierendes Objekt zurück, ohne dieses zu kopieren o.ä.
 KExDaVDataPlugin getPlugIn(String atgSource, String atgTarget)
          Gibt ein Plugin zurück um von atgSource nach atgTarget zu konvertieren.
 ClientDavInterface getRemoteConnection()
          Gibt die Remote-Verbindung zurück
private  void removeIllegalObjects(boolean onRemoteSystem, ConfigurationArea targetArea, Collection<ConfigurationArea> additionalTargetAreas)
          Löscht Objekte aus den Austauschbereichen, die dort nichts zu suchen haben.
private  void removeObject(boolean onRemoteSystem, SystemObject systemObject)
          Löscht ein Objekt.
 boolean removeObjectExchange(ObjectSpecification objectSpecification, Direction direction)
          Entfernt einen Objektaustausch
 void setConfigurationAreas(ConfigurationArea localDefaultArea, ConfigurationArea remoteDefaultArea, Map<String,ConfigurationArea> localAreas, Map<String,ConfigurationArea> remoteAreas)
          Setzt die Konfigurationsbereiche, in denen die Objekte angelegt werden sollen
 String toString()
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

_objectMap

private final HashBagMap<ObjectSpecification,CorrespondingObject> _objectMap

_localAreas

private Map<String,ConfigurationArea> _localAreas

_remoteAreas

private Map<String,ConfigurationArea> _remoteAreas

_localDefaultArea

private ConfigurationArea _localDefaultArea

_remoteDefaultArea

private ConfigurationArea _remoteDefaultArea

_localConnection

private final ClientDavInterface _localConnection

_remoteConnection

private final ClientDavInterface _remoteConnection

_manager

private final ManagerInterface _manager

_plugins

private final Map<AttributeGroupPair,KExDaVDataPlugin> _plugins
Constructor Detail

CorrespondingObjectManager

public CorrespondingObjectManager(ClientDavInterface localConnection,
                                  ClientDavInterface remoteConnection,
                                  ManagerInterface manager,
                                  Map<AttributeGroupPair,KExDaVDataPlugin> plugins)
Erstellt eine Verwaltung korrespondierender Objekte. Diese sollte es einmal pro Remote-Datenverteiler geben.

Parameters:
localConnection - Lokale Verbindung
remoteConnection - Remote-Verbindung
manager - KExDaV-Verwaltung
plugins - Plugins die pro Attributgruppenkonvertierung verwendet werden
Method Detail

createObjectExchange

public CopyableCorrespondingObject createObjectExchange(ObjectSpecification objectSpecification,
                                                        Direction direction)
                                                 throws MissingAreaException
Erstellt einen Austausch dynamischer Objekte

Parameters:
objectSpecification - Pid des Objektes
direction - Richtung des Austausches
Returns:
die Klasse des Korrespondierenden Objektes
Throws:
MissingAreaException - Falls kein Konfigurationsbereich gefunden werden konnte, um das Objekt auf dem Zielsystem anzulegen

removeObjectExchange

public boolean removeObjectExchange(ObjectSpecification objectSpecification,
                                    Direction direction)
Entfernt einen Objektaustausch

Parameters:
objectSpecification - Pid
direction - Richtung
Returns:
True wenn erfolgreich entfernt, False falls nicht vorhanden

getObject

public CorrespondingObject getObject(ObjectSpecification objectSpecification)
Gibt zu einer Pid ein korrespondierendes Objekt zurück, ohne dieses zu kopieren o.ä.

Specified by:
getObject in interface ObjectManagerInterface
Parameters:
objectSpecification - Pid
Returns:
die Klasse des korrespondierenden Objektes

copyObjectIfNecessary

public void copyObjectIfNecessary(ObjectSpecification objectSpecification,
                                  ClientDavInterface sourceConnection,
                                  ClientDavInterface targetConnection)
Description copied from interface: ObjectManagerInterface
Wird aufgerufen, wenn im Zielsystem ein dynamisches Objekt gebraucht wird. Diese Funktion sollte, falls nötig und möglich, das Objekt kopieren. Es gibt derzeit keine Rückmeldung, ob dies auch geklappt hat.

Specified by:
copyObjectIfNecessary in interface ObjectManagerInterface
Parameters:
objectSpecification - Spezifikation zur Ermittlung des Objektes
sourceConnection - Quellverbindung
targetConnection - Zielverbindung

getLocalConnection

public ClientDavInterface getLocalConnection()
Description copied from interface: ObjectManagerInterface
Gibt die lokale Verbindung zurück

Specified by:
getLocalConnection in interface ObjectManagerInterface
Returns:
Lokale Verbindung

getRemoteConnection

public ClientDavInterface getRemoteConnection()
Description copied from interface: ObjectManagerInterface
Gibt die Remote-Verbindung zurück

Specified by:
getRemoteConnection in interface ObjectManagerInterface
Returns:
die Remote-Verbindung

getConfigurationAreaRemote

public ConfigurationArea getConfigurationAreaRemote(String typePid)
                                             throws MissingAreaException
Description copied from interface: ObjectManagerInterface
Sucht den passenden Konfigurationsbereich um ein Objekt im Remote-System abzuspeichern

Specified by:
getConfigurationAreaRemote in interface ObjectManagerInterface
Parameters:
typePid - Objekt-Typ
Returns:
Konfigurationsbereich
Throws:
MissingAreaException - Falls kein Konfigurationsbereich gefunden werden konnte

getConfigurationAreaLocal

public ConfigurationArea getConfigurationAreaLocal(String typePid)
                                            throws MissingAreaException
Description copied from interface: ObjectManagerInterface
Sucht den passenden Konfigurationsbereich um ein Objekt im Lokal-System abzuspeichern

Specified by:
getConfigurationAreaLocal in interface ObjectManagerInterface
Parameters:
typePid - Objekt-Typ
Returns:
Konfigurationsbereich
Throws:
MissingAreaException - Falls kein Konfigurationsbereich gefunden werden konnte

getPlugIn

public KExDaVDataPlugin getPlugIn(String atgSource,
                                  String atgTarget)
                           throws MissingPluginException
Description copied from interface: ObjectManagerInterface
Gibt ein Plugin zurück um von atgSource nach atgTarget zu konvertieren. Wenn atgSource und atgTarget gleich sind wird einBasicKExDaVDataPlugin zurückgegeben

Specified by:
getPlugIn in interface ObjectManagerInterface
Parameters:
atgSource - Quell-Attributgruppe (Pid)
atgTarget - Ziel-Attributgruppe (Pid)
Returns:
ein KExDaVDataPlugin
Throws:
MissingPluginException - Falls kein Plugin gefunden werden kann

setConfigurationAreas

public void setConfigurationAreas(ConfigurationArea localDefaultArea,
                                  ConfigurationArea remoteDefaultArea,
                                  Map<String,ConfigurationArea> localAreas,
                                  Map<String,ConfigurationArea> remoteAreas)
Setzt die Konfigurationsbereiche, in denen die Objekte angelegt werden sollen

Parameters:
localDefaultArea - Standardbereich Lokal (oder null für keinen Standardbereich)
remoteDefaultArea - Standardbereich Remote (oder null für keinen Standardbereich)
localAreas - Lokale zusätzliche Bereiche nach Typ
remoteAreas - Remote zusätzliche Bereiche nach Typ

removeIllegalObjects

private void removeIllegalObjects(boolean onRemoteSystem,
                                  ConfigurationArea targetArea,
                                  Collection<ConfigurationArea> additionalTargetAreas)
Löscht Objekte aus den Austauschbereichen, die dort nichts zu suchen haben.

Parameters:
onRemoteSystem - true wenn das Objekt auf dem Remotesystem, false wenn es auf dem Lokalsystem gelöscht werden soll
targetArea - Standardbereich
additionalTargetAreas - Zusätzliche Bereiche

removeObject

private void removeObject(boolean onRemoteSystem,
                          SystemObject systemObject)
                   throws MissingKExDaVAttributeGroupException
Löscht ein Objekt. Objekte werden nur gelöscht, wenn sie ausgetauscht wurden, dynamische Objekte sind und eine Pid haben.

Parameters:
onRemoteSystem - true wenn das Objekt auf dem Remotesystem, false wenn es auf dem Lokalsystem gelöscht werden soll
systemObject - Objekt.
Throws:
MissingKExDaVAttributeGroupException

toString

public String toString()
Overrides:
toString in class Object

clear

public void clear()
Beendet alle von dieser Klasse verwendeten Austausche