Class DafSystemObject

java.lang.Object
de.bsvrz.dav.daf.main.impl.config.DafSystemObject
All Implemented Interfaces:
SystemObject, Comparable
Direct Known Subclasses:
DafConfigurationObject, DafDynamicObject

public abstract class DafSystemObject extends Object implements SystemObject
Implementierung der Schnittstelle zum Zugriff auf die Eigenschaften eines System-Objekts. Datensätze, die vom Datenverteiler transportiert werden, sind immer genau einem System-Objekt zugeordnet. Zur internen Identifizierung eines System-Objekts wird die id des Objekts benutzt. Das ist ein 64-Bit-Wert der systemweit eindeutig ist. Zur expliziten Referenzierung von Objekten (z.B. in Aufrufparametern von Applikationen, Versorgungsskripten etc.) kann die permanente ID (PID) eines Objekts verwendet werden. Diese ist optional und muss nur bei den Objekten gesetzt werden, bei denen sie gebraucht wird. Die PID ist eine leicht zu merkende Zeichenkette, die systemweit eindeutig ist und sich (wenn sie einmal vergeben wurde) nie mehr ändern kann. Außerdem kann jedem System-Objekt ein Name zugeordnet werden, der zu Darstellungszwecken benutzt werden kann. Der Name eines Objekts kann i.a. jederzeit geändert werden und sollte aus diesem Grund nicht zur Referenzierung von Objekten eingesetzt werden.
  • Field Details

    • NULL_OBJECT

      public static final byte NULL_OBJECT
      Typfeld für die Serialisierung von null-Referenzen
      See Also:
    • CONFIGURATION_OBJECT

      public static final byte CONFIGURATION_OBJECT
      Typfeld für die Serialisierung von Konfigurationsobjekten
      See Also:
    • DYNAMIC_OBJECT

      public static final byte DYNAMIC_OBJECT
      Typfeld für die Serialisierung von dynamischen Objekten
      See Also:
    • SYSTEM_OBJECT_TYPE

      public static final byte SYSTEM_OBJECT_TYPE
      Typfeld für die Serialisierung von Typen von Systemobjekten
      See Also:
    • DYNAMIC_OBJECT_TYPE

      public static final byte DYNAMIC_OBJECT_TYPE
      Typfeld für die Serialisierung von Typen von dynamischen Objekten
      See Also:
    • CONFIGURATION_OBJECT_TYPE

      public static final byte CONFIGURATION_OBJECT_TYPE
      Typfeld für die Serialisierung von Typen von Konfigurationsobjekten
      See Also:
    • OBJECT_SET_TYPE

      public static final byte OBJECT_SET_TYPE
      Typfeld für die Serialisierung von Mengentypen
      See Also:
    • ATTRIBUTE_GROUP

      public static final byte ATTRIBUTE_GROUP
      Typfeld für die Serialisierung von Attributgruppen
      See Also:
    • ASPECT

      public static final byte ASPECT
      Typfeld für die Serialisierung von Aspekten
      See Also:
    • OBJECT_SET_USE

      public static final byte OBJECT_SET_USE
      Typfeld für die Serialisierung von Mengenverwendungen
      See Also:
    • MUTABLE_SET

      public static final byte MUTABLE_SET
      Typfeld für die Serialisierung von dynamischen Mengen
      See Also:
    • NON_MUTABLE_SET

      public static final byte NON_MUTABLE_SET
      Typfeld für die Serialisierung von konfigurierenden Mengen
      See Also:
    • ATTRIBUTE

      public static final byte ATTRIBUTE
      Typfeld für die Serialisierung von Attributen
      See Also:
    • INTEGER_ATTRIBUTE_TYPE

      public static final byte INTEGER_ATTRIBUTE_TYPE
      Typfeld für die Serialisierung von Ganzzahlattributtypen
      See Also:
    • FLOATING_POINT_NUMBER_ATTRIBUTE_TYPE

      public static final byte FLOATING_POINT_NUMBER_ATTRIBUTE_TYPE
      Typfeld für die Serialisierung von Kommazahlattributtypen
      See Also:
    • REFERENCE_ATTRIBUTE_TYPE

      public static final byte REFERENCE_ATTRIBUTE_TYPE
      Typfeld für die Serialisierung von Referenzattributtypen
      See Also:
    • STRING_ATTRIBUTE_TYPE

      public static final byte STRING_ATTRIBUTE_TYPE
      Typfeld für die Serialisierung von Zeichenkettenattributtypen
      See Also:
    • TIME_ATTRIBUTE_TYPE

      public static final byte TIME_ATTRIBUTE_TYPE
      Typfeld für die Serialisierung von Zeitstempelattributtypen
      See Also:
    • ATTRIBUTE_LIST_TYPE

      public static final byte ATTRIBUTE_LIST_TYPE
      Typfeld für die Serialisierung von Attributlistendefinitionen
      See Also:
    • CONFIGURATION_AUTHORITY

      public static final byte CONFIGURATION_AUTHORITY
      Typfeld für die Serialisierung von Konfigurationsverantwortliche
      See Also:
    • DAV_APPLICATION

      public static final byte DAV_APPLICATION
      Typfeld für die Serialisierung von Datenverteilerobjekte
      See Also:
    • CONFIGURATION_APPLICATION

      public static final byte CONFIGURATION_APPLICATION
      Typfeld für die Serialisierung von Konfigurationsapplikationen
      See Also:
    • CLIENT_APPLICATION

      public static final byte CLIENT_APPLICATION
      Typfeld für die Serialisierung von Applikationen
      See Also:
    • INTEGER_VALUE_STATE

      public static final byte INTEGER_VALUE_STATE
      Typfeld für die Serialisierung von Aufzählungswerten von Ganzzahlattributtypen
      See Also:
    • INTEGER_VALUE_RANGE

      public static final byte INTEGER_VALUE_RANGE
      Typfeld für die Serialisierung von Wertebereichen von Ganzzahlattributtypen
      See Also:
    • CONFIGURATION_AREA

      public static final byte CONFIGURATION_AREA
      Typfeld für die Serialisierung von Konfigurationsbereichen
      See Also:
    • ATTRIBUTE_GROUP_USAGE

      public static final byte ATTRIBUTE_GROUP_USAGE
      Typfeld für die Serialisierung von Attributgruppenverwendungen
      See Also:
    • OBJECT_DELETED

      public static final byte OBJECT_DELETED
      Statusfeld für ungültig gewordene (dynamische) Objekte
      See Also:
    • OBJECT_EXISTS

      public static final byte OBJECT_EXISTS
      Statusfeld für gültige Objekte
      See Also:
    • OBJECT_INVALID

      public static final byte OBJECT_INVALID
      Statusfeld für nicht gültige (Konfigurations-) Objekte
      See Also:
    • _internType

      protected byte _internType
      Typfeld dieses Objekts. Dieses Feld dient zur Unterscheidung der verschiedenartigen Systemobjekte bei der Serialisierung
    • _dataModel

      protected DafDataModel _dataModel
      Objekt zum Zugriff auf die Konfiguration
    • _configurationAreaId

      protected long _configurationAreaId
      Id des Konfigurationsbereichs zu dem dieses Objekt gehört.
  • Constructor Details

    • DafSystemObject

      public DafSystemObject(DafDataModel dataModel)
      Erzeugt ein neues Objekt dessen Eigenschaften im Anschluss mit der read-Methode eingelesen werden sollten.
      Parameters:
      dataModel - DataModel Implementierung, der das neue Objekt zugeordnet ist.
    • DafSystemObject

      public DafSystemObject(long id, String pid, String name, long typeId, byte state, String error, DafDataModel dataModel, long configurationAreaId)
      Konstruktor, zur Erzeugung eines neuen Stellvertreterobjekts für ein Systemobjekt.
      Parameters:
      id - Id des Systemobjekts
      pid - Pid des Systemobjekts
      name - Name des Systemobjekts
      typeId - Id des Typs des SystemObjects
      state - Status des SystemObjects
      error - Fehler des Systemobjekts
      dataModel - Objekt zum Zugriff auf die Konfiguration
      configurationAreaId - Id des zugeordneten Konfigurationsbereichs
  • Method Details

    • getObject

      public static final DafSystemObject getObject(byte internType, DafDataModel dataModel)
      Gibt ein neues nicht initialisiertes Objekt der richtigen Klasse abhängig vom angegebenen Typfeld zurück
      Parameters:
      internType - Typfeld des gewünschten Systemobjekts
      dataModel - Objekt zum Zugriff auf die Konfiguration
      Returns:
      Neues nicht initialisiertes Systemobjekt
    • getConfigurationArea

      public ConfigurationArea getConfigurationArea()
      Description copied from interface: SystemObject
      Liefert den Konfigurationsbereich, zu dem dieses Objekt gehört, zurück.
      Specified by:
      getConfigurationArea in interface SystemObject
      Returns:
      Konfigurationsbereich dieses Objekts.
    • getConfigurationAreaId

      public long getConfigurationAreaId()
      Bestimmt die Objekt-Id des Konfigurationsbereichs des Objekts
      Returns:
      Objekt-Id des Konfigurationsbereichs des Objekts
    • equals

      public final boolean equals(Object other)
      Vergleicht das Objekt mit einem anderen Objekt. Zwei Objekte sind gleich, wenn sie die gleiche Objekt-Id haben.
      Overrides:
      equals in class Object
      Returns:
      true, wenn die Objekte gleich sind, sonst false.
    • hashCode

      public final int hashCode()
      Bestimmt den Hash-Code dieses Objekts.
      Overrides:
      hashCode in class Object
      Returns:
      Hash-Code dieses Objekts.
    • parseToString

      public String parseToString()
      Liefert eine textuelle Beschreibung dieses Objekts für Debug-Zwecke zurück.
      Returns:
      Beschreibender Text dieses Objekts.
    • toString

      public String toString()
      Liefert eine textuelle Beschreibung dieses Objekts zurück. Es wird der Name des Objekts gefolgt von der Pid in runden Klammern oder der Id in eckigen Klammern, falls keine Pid vergeben ist.
      Specified by:
      toString in interface SystemObject
      Overrides:
      toString in class Object
      Returns:
      Beschreibung dieses Objekts.
    • write

      public void write(DataOutputStream out) throws IOException
      Serialisiert dieses Objekt.
      Parameters:
      out - Stream auf den das Objekt geschrieben werden soll.
      Throws:
      IOException - wenn beim Schreiben auf den Ausgabe-Stream Fehler aufgetreten sind.
    • read

      public void read(DataInputStream in) throws IOException
      Deserialisiert dieses Objekt über die alte Methode.
      Parameters:
      in - Stream von dem das Objekt gelesen werden soll.
      Throws:
      IOException - wenn beim Lesen vom Eingabe-Stream Fehler aufgetreten sind.
    • read

      public void read(Deserializer deserializer) throws IOException
      Deserialisiert dieses Objekt
      Parameters:
      deserializer - Deserialisierer als Datenquelle
      Throws:
      IOException
    • getState

      public final byte getState()
      Bestimmt den Status dieses Objektes
      Returns:
      Liefert den Wert OBJECT_INVALID, OBJECT_DELETED für ungültige oder OBJECT_EXISTS für gültige Objekte zurück.
      See Also:
    • compareTo

      public final int compareTo(Object o)
      Implementiert die Vergleichsfunktion des Comparable-Interface.
      Specified by:
      compareTo in interface Comparable
      Parameters:
      o - Systemobjekt mit dem dieses Objekt verglichen werden sollte.
      Returns:
      Negative Zahl, wenn dieses Objekt kleiner ist als das Vergleichsobjekt; positive Zahl, wenn dieses Objekt größer ist als das Vergleichsobjekt; 0, wenn dieses Objekt mit dem Vergleichsobjekt übereinstimmt.
    • getNameOrPidOrId

      public final String getNameOrPidOrId()
      Description copied from interface: SystemObject
      Liefert eine Bezeichnung für dieses Objekt zurück. Wenn dieses Objekt einen nicht leeren Namen hat, wird dieser zurückgegeben. Ansonsten wird (falls vorhanden) die PID des Objekts zurückgeben. Wenn die PID auch nicht vorhanden ist, wird die ID des Objekts zurückgegeben.
      Specified by:
      getNameOrPidOrId in interface SystemObject
      Returns:
      Text, der den Namen, die PID oder die ID des System-Objekts enthält.
    • getPidOrNameOrId

      public String getPidOrNameOrId()
      Description copied from interface: SystemObject
      Liefert eine Bezeichnung für dieses Objekt zurück. Wenn dieses Objekt eine nicht leere PID hat, wird diese zurückgegeben. Ansonsten wird (falls vorhanden) der Name des Objekts zurückgegeben. Wenn der Name auch nicht vorhanden ist, wird die ID des Objekts zurückgegeben.
      Specified by:
      getPidOrNameOrId in interface SystemObject
      Returns:
      Text, der die PID, den Namen oder die ID des System-Objekts enthält.
    • getPidOrId

      public String getPidOrId()
      Description copied from interface: SystemObject
      Liefert eine Bezeichnug für dieses Objekt zurück. Wenn dieses Objekt eine nicht leere PID hat, wird diese zurückgegeben. Ansonsten wird die ID des Objekts zurückgegeben.
      Specified by:
      getPidOrId in interface SystemObject
      Returns:
      Text, der die PID oder die ID des System-Objekts enthält.
    • getId

      public final long getId()
      Description copied from interface: SystemObject
      Liefert die Objekt-ID des System-Objekts zurück.
      Specified by:
      getId in interface SystemObject
      Returns:
      ID dieses System-Objekts oder 0, wenn das Objekt keine ID hat.
    • getPid

      public final String getPid()
      Description copied from interface: SystemObject
      Liefert die permanente ID (PID) dieses Objekts zurück. Wenn das Objekt keine PID hat, wird ein leerer String zurückgegeben.
      Specified by:
      getPid in interface SystemObject
      Returns:
      PID des System-Objekts oder einen leeren String, wenn das Objekt keine PID hat.
    • getName

      public final String getName()
      Description copied from interface: SystemObject
      Liefert den Namen dieses Objekts zurück. Wenn das Objekt keinen Namen hat, wird ein leerer String zurückgegeben.
      Specified by:
      getName in interface SystemObject
      Returns:
      Name des System-Objekts oder ein leerer String, wenn das Objekt keinen Namen hat.
    • setName

      public final void setName(String _name) throws ConfigurationChangeException
      Description copied from interface: SystemObject
      Setzt den Namen dieses Objekts.
      Specified by:
      setName in interface SystemObject
      Parameters:
      _name - Neuer Name des Objekts. Der leere String ("") oder null wird als "kein Name" interpretiert.
      Throws:
      ConfigurationChangeException - Wenn der Name des Objektes nicht geändert werden konnte.
      See Also:
    • storeName

      protected void storeName(String newName)
      Diese Methode wird aufgerufen, wenn die Konfiguration den Namen des Objekts auf den aktuellen Stand bringen möchte. Der Aufruf der Methode führt nicht zu einer Anfrage an die Konfiguration wie bei setName(String).

      Eventuell angemeldete Listener werden nicht informiert, soll dies geschehen muss die Methode DafDynamicObjectType.updateName(long, String) benutzt werden.

      Parameters:
      newName - Aktueller Name des Objekts
    • getType

      public final SystemObjectType getType()
      Description copied from interface: SystemObject
      Liefert den Typ dieses System-Objekts zurück.
      Specified by:
      getType in interface SystemObject
      Returns:
      Typ dieses System-Objekts.
    • invalidate

      public final void invalidate() throws ConfigurationChangeException
      Description copied from interface: SystemObject
      Löscht das Objekt, indem es ungültig gemacht wird. Dynamische System-Objekte werden sofort ungültig. Bereits gültige konfigurierende System-Objekte werden mit Aktivierung der nächsten Konfigurationsversion ungültig. Für historische Anfragen bleiben ungültige Objekte nach wie vor existent. Konfigurierende System-Objekte, die noch nie gültig waren, werden durch diese Methode gelöscht und sind nicht mehr zugreifbar.
      Specified by:
      invalidate in interface SystemObject
      Throws:
      ConfigurationChangeException - Wenn das Objekt nicht ungültig gemacht werden konnte.
    • isOfType

      public final boolean isOfType(String typePid)
      Description copied from interface: SystemObject
      Bestimmt, ob dieses System-Objekt ein Element des angegebenen Typs ist. Ein System-Objekt ist Element des Objekt-Typs, der von der Methode SystemObject.getType() zurückgeliefert wird. Außerdem ist das Objekt ein Element von den direkten und indirekten Super-Typen des Objekt-Typs.
      Specified by:
      isOfType in interface SystemObject
      Parameters:
      typePid - PID des zu prüfenden Typs.
      Returns:
      true, wenn der übergebene Typ mit dem Objekt-Typ oder mit einem der direkten oder indirekten Vorgänger in der Vererbungshierarchie übereinstimmt; sonst false.
    • isOfType

      public final boolean isOfType(SystemObjectType objectType)
      Description copied from interface: SystemObject
      Bestimmt, ob dieses System-Objekt ein Element des angegebenen Typs ist. Ein System-Objekt ist Element des Objekt-Typs, der von der Methode SystemObject.getType() zurückgeliefert wird. Außerdem ist das Objekt ein Element von den direkten und indirekten Super-Typen des Objekt-Typs.
      Specified by:
      isOfType in interface SystemObject
      Parameters:
      objectType - Zu prüfender Typ.
      Returns:
      true, wenn der übergebene Typ mit dem Objekt-Typ oder mit einem der direkten oder indirekten Vorgänger in der Vererbungshierarchie übereinstimmt; sonst false.
    • getInternType

      public final byte getInternType()
      Gibt den internen Typ zurück
      Returns:
      der interne Typ
    • getDataModel

      public DataModel getDataModel()
      Description copied from interface: SystemObject
      Liefert das zu diesem Objekt gehörende Objekt zum Zugriff auf die Konfiguration zurück.
      Specified by:
      getDataModel in interface SystemObject
      Returns:
      Objekt zum Zugriff auf die Konfiguration.
    • getConfigurationData

      public final Data getConfigurationData(AttributeGroup atg)
      Description copied from interface: SystemObject
      Liefert einen konfigurierenden Datensatz dieses Objekts zurück. Als Aspekt des gewünschten Datensatzes wird "asp.eigenschaften" angenommen.
      Specified by:
      getConfigurationData in interface SystemObject
      Parameters:
      atg - Attributgruppe des gewünschten Datensatzes.
      Returns:
      Konfigurierender Datensatz der angegebenen Attributgruppe oder null, wenn das Objekt keinen Datensatz der angegebenen Attributgruppe hat.
      See Also:
    • getConfigurationData

      public Data getConfigurationData(AttributeGroup atg, Aspect asp)
      Description copied from interface: SystemObject
      Liefert einen konfigurierenden Datensatz dieses Objekts zurück.
      Specified by:
      getConfigurationData in interface SystemObject
      Parameters:
      atg - Attributgruppe des gewünschten Datensatzes.
      asp - Aspekt des gewünschten Datensatzes.
      Returns:
      Konfigurierender Datensatz der angegebenen Attributgruppe oder null, wenn das Objekt keinen Datensatz der angegebenen Attributgruppe hat.
    • getConfigurationData

      public Data getConfigurationData(AttributeGroupUsage atgUsage)
      Description copied from interface: SystemObject
      Liefert einen konfigurierenden Datensatz dieses Objekts zurück.
      Specified by:
      getConfigurationData in interface SystemObject
      Parameters:
      atgUsage - Attributgruppenverwendung des gewünschten Datensatzes
      Returns:
      Konfigurierender Datensatz der angegebenen Attributgruppenverwendung oder null, wenn das Objekt keinen Datensatz zu der angegebenen Attributgruppenverwendung hat.
    • setConfigurationData

      public void setConfigurationData(AttributeGroup atg, Data data) throws ConfigurationChangeException
      Description copied from interface: SystemObject
      Ändert einen konfigurierenden Datensatz dieses Objekts. Als Aspekt wird "asp.eigenschaften" verwendet.
      Specified by:
      setConfigurationData in interface SystemObject
      Parameters:
      atg - Attributgruppe des zu ändernden Datensatzes
      data - Der neue Datensatz. Wird null angegeben, wird der Datensatz am Objekt gelöscht.
      Throws:
      ConfigurationChangeException - Wenn der Datensatz nicht geändert werden konnte.
    • setConfigurationData

      public void setConfigurationData(AttributeGroup atg, Aspect aspect, Data data) throws ConfigurationChangeException
      Description copied from interface: SystemObject
      Ändert einen konfigurierenden Datensatz dieses Objekts.
      Specified by:
      setConfigurationData in interface SystemObject
      Parameters:
      atg - Attributgruppe des zu ändernden Datensatzes
      aspect - Aspekt des zu ändernden Datensatzes
      data - Der neue Datensatz. Wird null angegeben, wird der Datensatz am Objekt gelöscht.
      Throws:
      ConfigurationChangeException - Wenn der Datensatz nicht geändert werden konnte.
    • setConfigurationData

      public void setConfigurationData(AttributeGroupUsage atgUsage, Data data) throws ConfigurationChangeException
      Description copied from interface: SystemObject
      Ändert einen konfigurierenden Datensatz dieses Objekts.
      Specified by:
      setConfigurationData in interface SystemObject
      Parameters:
      atgUsage - Attributgruppenverwendung des zu ändernden Datensatzes
      data - Der neue Datensatz. Wird null angegeben, wird der Datensatz am Objekt gelöscht.
      Throws:
      ConfigurationChangeException - Wenn der Datensatz nicht geändert werden konnte.
    • getUsedAttributeGroupUsages

      public Collection<AttributeGroupUsage> getUsedAttributeGroupUsages()
      Description copied from interface: SystemObject
      Liefert alle Attributgruppenverwendungen zurück, für die es einen konfigurierenden Datensatz an diesem Objekt gibt.
      Specified by:
      getUsedAttributeGroupUsages in interface SystemObject
      Returns:
      Alle Attributgruppenverwendungen, für die es einen konfigurierenden Datensatz an diesem Objekt gibt.
    • isValid

      public abstract boolean isValid()
      Description copied from interface: SystemObject
      Bestimmt, ob dieses Objekt zum aktuellen Zeitpunkt gültig ist. Konfigurierende System-Objekte sind nach deren Erzeugung noch nicht gültig, sondern werden erst mit der Aktivierung der nächsten Konfigurationsversion gültig. Nach dem Löschen eines Konfigurationsobjekts bleibt es bis zur Aktivierung der nächsten Konfigurationsversion gültig. Dynamische Objekte werden sofort mit deren Erzeugung gültig und mit dem Löschen ungültig.
      Specified by:
      isValid in interface SystemObject
      Returns:
      true, falls das Objekt gültig ist;
      false, falls das Objekt nicht gültig ist.
    • getInfo

      public SystemObjectInfo getInfo()
      Description copied from interface: SystemObject
      Liefert ein Objekt mit beschreibenden Informationen zu diesem Objekt zurück.
      Specified by:
      getInfo in interface SystemObject
      Returns:
      Objekt mit beschreibenden Informationen.