Interface Data

All Superinterfaces:
java.lang.Iterable<Data>
All Known Implementing Classes:
AbstractData, AbstractData.ArrayData, AbstractData.ListData, AbstractData.PlainData, AbstractData.StructuredData, AttributeBaseValueDataFactory.AttributeGroupAdapter, ByteArrayArrayData, ByteArrayData, ByteArrayListArrayItemData, ByteArrayListData, ByteArrayPrimitiveArrayItemData, ByteArrayPrimitiveData, ByteArrayStructuredData

public interface Data
extends java.lang.Iterable<Data>
Schnittstelle zum generischen Zugriff auf Attributwerte in beliebig strukturierten Attributgruppen. Zum Erzeugen eines neuen Datensatzes kann die Methode ClientDavInterface.createData(de.bsvrz.dav.daf.main.config.AttributeGroup) benutzt werden. Nach dem Empfang von Daten kann mit der Methode ResultData.getData() der im Ergebnis enthaltene Datensatz abgefragt werden.

Ein Data-Objekt besitzt eine JSON-ähnliche Baumstruktur aus Arrays, Attributlisten (Schlüssel-Wert-Paaren, entspricht etwa Java-Maps) und einfachen Werten (Attributen).

Im Gegensatz zu JSON besitzt ein Data-Objekt jedoch eine durch die Attributgruppen, Attributlisten und Attribute im Datenmodell fest vorgegebene Struktur und feste Wertebereiche für Attribute (durch Attributtypen definiert).

  • Nested Class Summary

    Nested Classes
    Modifier and Type Interface Description
    static interface  Data.Array
    Interface-Klasse für die Array-Ansicht eines Datums.
    static class  Data.FormatException
    Deprecated.
    Diese Exception wird nicht verwendet und in einem zukünftigen Release entfernt.
    static interface  Data.NumberArray
    Interface-Klasse für die Skalierte- und Unskalierte-Array-Ansicht eines Datums.
    static interface  Data.NumberValue
    Interface-Klasse für die Skalierte- und Unskalierte-Ansicht eines Datums.
    static interface  Data.ReferenceArray
    Interface-Klasse für die Referenz-Array-Ansicht eines Datums.
    static interface  Data.ReferenceValue
    Interface-Klasse für die Referenz-Ansicht eines Datums.
    static interface  Data.TextArray
    Interface-Klasse für die Text-Array-Ansicht eines Datums.
    static interface  Data.TextValue
    Interface-Klasse für die Text-Ansicht eines Datums.
    static interface  Data.TimeArray
    Interface-Klasse für die Zeit-Array-Ansicht eines Datums.
    static interface  Data.TimeValue
    Interface-Klasse für die Zeit-Ansicht eines Datums.
  • Method Summary

    Modifier and Type Method Description
    Data.Array asArray()
    Liefert eine Array-Ansicht auf dieses Array zurück.
    Data.ReferenceArray asReferenceArray()
    Liefert eine Referenz-Array-Ansicht auf dieses Array zurück.
    Data.ReferenceValue asReferenceValue()
    Liefert eine Referenz-Ansicht auf dieses einfache Datum zurück.
    Data.NumberArray asScaledArray()
    Liefert eine Skalierte-Array-Ansicht auf dieses Array zurück.
    Data.NumberValue asScaledValue()
    Liefert eine Skalierte-Ansicht auf dieses einfache Datum zurück.
    Data.TextArray asTextArray()
    Liefert eine Text-Array-Ansicht auf dieses Array zurück.
    Data.TextValue asTextValue()
    Liefert eine Text-Ansicht auf dieses einfache Datum zurück.
    Data.TimeArray asTimeArray()
    Liefert eine Time-Array-Ansicht auf dieses Array zurück.
    Data.TimeValue asTimeValue()
    Liefert eine Zeit-Ansicht auf dieses einfache Datum zurück.
    Data.NumberArray asUnscaledArray()
    Liefert eine Unskalierte-Array-Ansicht auf dieses Array zurück.
    Data.NumberValue asUnscaledValue()
    Liefert eine Unskalierte-Ansicht auf dieses einfache Datum zurück.
    default boolean containsItem​(java.lang.String itemName)
    Ermittelt, ob es ein Sub-Datum mit dem angegebenen Namen gibt.
    Data createModifiableCopy()
    Liefert eine modifizierbare Kopie eines Datensatzes zurück.
    Data createUnmodifiableCopy()
    Liefert eine nicht modifizierbare Kopie eines Datensatzes zurück.
    Data.Array getArray​(java.lang.String itemName)
    Liefert eine Array-Ansicht auf das Sub-Datum dieser Liste mit dem angegebenen Namen zurück.
    default AttributeGroup getAttributeGroup()
    Liefert die Attributgruppe eines Datums zurück.
    AttributeType getAttributeType()
    Liefert den Attribut-Typ eines Datums zurück.
    Data getItem​(java.lang.String itemName)
    Bestimmt das Sub-Datum dieser Liste mit dem angegebenen Namen.
    java.lang.String getName()
    Liefert den Namen eines Datums zurück.
    Data.ReferenceArray getReferenceArray​(java.lang.String itemName)
    Liefert eine Referenz-Array-Ansicht auf das Sub-Datum dieser Liste mit dem angegebenen Namen zurück.
    Data.ReferenceValue getReferenceValue​(java.lang.String itemName)
    Liefert eine Referenz-Ansicht auf das Sub-Datum dieser Liste mit dem angegebenen Namen zurück.
    Data.NumberArray getScaledArray​(java.lang.String itemName)
    Liefert eine Skalierte-Array-Ansicht auf das Sub-Datum dieser Liste mit dem angegebenen Namen zurück.
    Data.NumberValue getScaledValue​(java.lang.String itemName)
    Liefert eine Skalierte-Ansicht auf das Sub-Datum dieser Liste mit dem angegebenen Namen zurück.
    Data.TextArray getTextArray​(java.lang.String itemName)
    Liefert eine Text-Array-Ansicht auf das Sub-Datum dieser Liste mit dem angegebenen Namen zurück.
    Data.TextValue getTextValue​(java.lang.String itemName)
    Liefert eine Text-Ansicht auf das Sub-Datum dieser Liste mit dem angegebenen Namen zurück.
    Data.TimeArray getTimeArray​(java.lang.String itemName)
    Liefert eine Time-Array-Ansicht auf das Sub-Datum dieser Liste mit dem angegebenen Namen zurück.
    Data.TimeValue getTimeValue​(java.lang.String itemName)
    Liefert eine Zeit-Ansicht auf das Sub-Datum dieser Liste mit dem angegebenen Namen zurück.
    Data.NumberArray getUnscaledArray​(java.lang.String itemName)
    Liefert eine Unskalierte-Array-Ansicht auf das Sub-Datum dieser Liste mit dem angegebenen Namen zurück.
    Data.NumberValue getUnscaledValue​(java.lang.String itemName)
    Liefert eine Unskalierte-Ansicht auf das Sub-Datum dieser Liste mit dem angegebenen Namen zurück.
    boolean isArray()
    Prüft, ob das Datum ein Array ist.
    boolean isDefined()
    Prüft, ob das Datum über den Datenverteiler verschickt werden kann.
    boolean isList()
    Prüft, ob das Datum eine Liste ist, d.h. aus Sub-Daten besteht.
    boolean isPlain()
    Prüft, ob das Datum ein einfaches Datum ohne untergeordnete Sub-Daten ist.
    java.util.Iterator<Data> iterator()
    Liefert einen Iterator zurück, der über die Sub-Daten dieser Liste oder die Element-Daten dieses Arrays iteriert.
    void setToDefault()
    Setzt bei einem Datum alle Werte auf die definierte Default-Werte.
    java.lang.String toString()
    Liefert eine textliche Darstellung des Datums mit Name und Wert.
    default Data updated()
    Diese Methode prüft, ob das Datum in einer älteren Version der Attributgruppe vorliegt, und überträgt das Datum auf die aktuelle Version der Attributgruppe, falls notwendig und möglich.
    default Data updated​(ClientDavInterface connection)
    Deprecated.
    Der connection-Parameter wird nicht mehr benötigt.
    java.lang.String valueToString()
    Liefert eine textliche Darstellung des Werts eines Datums zurück.

    Methods inherited from interface java.lang.Iterable

    forEach, spliterator
  • Method Details

    • createModifiableCopy

      Data createModifiableCopy()
      Liefert eine modifizierbare Kopie eines Datensatzes zurück. Diese Methode kann verwendet werden, um eine Kopie von einem empfangenen (nicht modifizierbaren) Datensatz zu erstellen und die Kopie mit eventuell veränderten Attributwerten wieder zu versenden. Die Methode funktioniert i.a. nur auf ganzen Datensätzen. Bei Data-Objekten, die nur Teile oder einzelne Attributwerte repräsentieren wird eine IllegalStateException generiert.
      Returns:
      Veränderbare Kopie des Datensatzes.
      Throws:
      java.lang.IllegalStateException - wenn das Data-Objekt keinen ganzen Datensatz enthält.
    • updated

      @Deprecated default Data updated​(ClientDavInterface connection)
      Deprecated.
      Der connection-Parameter wird nicht mehr benötigt.
      Diese Methode prüft, ob das Datum in einer älteren Version der Attributgruppe vorliegt, und überträgt das Datum auf die aktuelle Version der Attributgruppe, falls notwendig und möglich.
      • Attribute, die in beiden Versionen gleich geblieben sind (oder kompatibel sind), werden beibehalten.
      • Attribute, die in der neuen Version weggefallen sind, werden gelöscht.
      • Attribute, die in der neuen Version hinzugefügt wurden, werden auf den Default-Wert gesetzt (falls vorhanden).
      • Attribute, die inkompatibel geändert wurden, werden auf undefiniert gelassen.
      Wenn hinzugefügte Attribute keinen Default-Wert besitzen, werden diese undefiniert gelassen.

      Beispiel-Code:

      
       Data oldData = ...;
       Data updatedData = oldData.updated(connection);
       if (oldData == updatedData) {
           // Das Datum war bereits auf der aktuellen Attributgruppen-Version
       }
       else if (updatedData.isDefined()) {
           // Das Datum wurde erfolgreich aktualisiert
       }
       else {
           // Es sind Attribute hinzugekommen oder geändert worden, für die keine Werte ermittelt werden konnten.
           // Das Datum muss vor dem Benutzen also z. B. händisch korrigiert werden
       }
       
      Parameters:
      connection - Datenverteiler-Verbindung
      Returns:
      Wenn das Datum aktualisiert wurde, eine veränderbare Kopie des aktualisierten Datums. Wenn keine Aktualisierung notwendig war, wird this zurückgegeben! In diesem Fall ist nicht garantiert, dass das Datum änderbar ist, oder die Bearbeitung keine Nebeneffekte hat. Der Aufrufer muss ggf. mit if (oldData == updatedData) ... prüfen, ob das Datum verändert wurde. Ebenfalls sollte der Anwender vermutlich mit isDefined() prüfen, ob das neue Datum gültig ist, ober ob einzelne Attribute korrigiert werden müssen.
      Throws:
      java.lang.IllegalStateException - wenn das Data-Objekt keinen ganzen Datensatz enthält.
      Since:
      3.12
    • updated

      default Data updated()
      Diese Methode prüft, ob das Datum in einer älteren Version der Attributgruppe vorliegt, und überträgt das Datum auf die aktuelle Version der Attributgruppe, falls notwendig und möglich.
      • Attribute, die in beiden Versionen gleich geblieben sind (oder kompatibel sind), werden beibehalten.
      • Attribute, die in der neuen Version weggefallen sind, werden gelöscht.
      • Attribute, die in der neuen Version hinzugefügt wurden, werden auf den Default-Wert gesetzt (falls vorhanden).
      • Attribute, die inkompatibel geändert wurden, werden auf undefiniert gelassen.
      Wenn hinzugefügte Attribute keinen Default-Wert besitzen, werden diese undefiniert gelassen.

      Beispiel-Code:

      
       Data oldData = ...;
       Data updatedData = oldData.updated(connection);
       if (oldData == updatedData) {
           // Das Datum war bereits auf der aktuellen Attributgruppen-Version
       }
       else if (updatedData.isDefined()) {
           // Das Datum wurde erfolgreich aktualisiert
       }
       else {
           // Es sind Attribute hinzugekommen oder geändert worden, für die keine Werte ermittelt werden konnten.
           // Das Datum muss vor dem Benutzen also z. B. händisch korrigiert werden
       }
       
      Returns:
      Wenn das Datum aktualisiert wurde, eine veränderbare Kopie des aktualisierten Datums. Wenn keine Aktualisierung notwendig war, wird this zurückgegeben! In diesem Fall ist nicht garantiert, dass das Datum änderbar ist, oder die Bearbeitung keine Nebeneffekte hat. Der Aufrufer muss ggf. mit if (oldData == updatedData) ... prüfen, ob das Datum verändert wurde. Ebenfalls sollte der Anwender vermutlich mit isDefined() prüfen, ob das neue Datum gültig ist, ober ob einzelne Attribute korrigiert werden müssen.
      Throws:
      java.lang.IllegalStateException - wenn das Data-Objekt keinen ganzen Datensatz enthält.
      Since:
      3.14
    • createUnmodifiableCopy

      Data createUnmodifiableCopy()
      Liefert eine nicht modifizierbare Kopie eines Datensatzes zurück. Die Methode funktioniert i.a. nur auf ganzen Datensätzen. Bei Data-Objekten, die nur Teile oder einzelne Attributwerte repräsentieren wird eine IllegalStateException generiert.
      Returns:
      Nicht änderbare Kopie des Datensatzes.
      Throws:
      java.lang.IllegalStateException - wenn das Data-Objekt keinen ganzen Datensatz enthält.
    • getName

      java.lang.String getName()
      Liefert den Namen eines Datums zurück.
      Returns:
      Name des Datums
    • valueToString

      java.lang.String valueToString()
      Liefert eine textliche Darstellung des Werts eines Datums zurück.
      Returns:
      Wert des Datums
    • toString

      java.lang.String toString()
      Liefert eine textliche Darstellung des Datums mit Name und Wert.
      Overrides:
      toString in class java.lang.Object
      Returns:
      Name und Wert des Datums
    • getAttributeType

      AttributeType getAttributeType()
      Liefert den Attribut-Typ eines Datums zurück.
      Returns:
      Attribut-Typ des Datums
    • getAttributeGroup

      @Nullable default AttributeGroup getAttributeGroup()
      Liefert die Attributgruppe eines Datums zurück. Die Attributgruppe ist hier nur ermittelbar, wenn es sich um eine unterstützte Implementierung von Data handelt, und wenn es sich um den strukturierten Datensatz handelt, der direkt die Attributgruppe repräsentiert (keinen innerhalb der Hierarchie liegenden Datensatz, sondern die "Wurzel")
      Returns:
      Die Attributgruppe eines Datums, oder `null`, falls nicht ermittelbar.
      Since:
      3.12
    • isDefined

      boolean isDefined()
      Prüft, ob das Datum über den Datenverteiler verschickt werden kann. Die Methode gibt true zurück, wenn jedes Attribut einen Wert besitzt, der ungleich dem "undefiniert" Wert ist. Ist das Datum ein Array oder eine Liste, so wird jedes Element geprüft ob es einen gültigen Wert besitzt. Die Prüfung findet auf alle "Sub-Daten" des Datums statt.
      Returns:
      true = Das Datum enthält gültige Werte und kann über den Datenverteiler verschickt werden; false = Das Datum enthält mindestens ein Attribut, das einen undefinierten Wert besitzt und kann somit nicht über den Datenverteiler verschickt werden
    • setToDefault

      void setToDefault()
      Setzt bei einem Datum alle Werte auf die definierte Default-Werte. Wurde weder beim Attribut noch beim Attributtyp ein Default-Wert definiert so wird der "undefiniert" Wert gesetzt. Ist das Datum eine Liste oder ein Array, so wird bei jedem Element der Default-Wert gesetzt. Der Vorgang wird solange fortgesetzt, bis alle "Sub-Daten" mit einem Default-Wert/Undefiniert-Wert definiert sind.
      See Also:
      isDefined()
    • isList

      boolean isList()
      Prüft, ob das Datum eine Liste ist, d.h. aus Sub-Daten besteht.
      Returns:
      true, falls das Datum eine Liste ist, sonst false.
    • isArray

      boolean isArray()
      Prüft, ob das Datum ein Array ist.
      Returns:
      true, falls das Datum ein Array ist, sonst false.
    • isPlain

      boolean isPlain()
      Prüft, ob das Datum ein einfaches Datum ohne untergeordnete Sub-Daten ist.
      Returns:
      true, falls das Datum eine einfaches Datum ist, sonst false.
    • getItem

      Data getItem​(java.lang.String itemName)
      Bestimmt das Sub-Datum dieser Liste mit dem angegebenen Namen.
      Parameters:
      itemName - Name des gewünschten Sub-Datums.
      Returns:
      Gewünschtes Sub-Datum.
      Throws:
      java.util.NoSuchElementException - falls nicht vorhanden.
    • containsItem

      default boolean containsItem​(java.lang.String itemName)
      Ermittelt, ob es ein Sub-Datum mit dem angegebenen Namen gibt.
      Parameters:
      itemName - Name
      Returns:
      true, wenn enthalten, sonst false
      Since:
      3.12
    • asTextValue

      Data.TextValue asTextValue()
      Liefert eine Text-Ansicht auf dieses einfache Datum zurück.
      Returns:
      Text-Ansicht des Datums.
    • getTextValue

      Data.TextValue getTextValue​(java.lang.String itemName)
      Liefert eine Text-Ansicht auf das Sub-Datum dieser Liste mit dem angegebenen Namen zurück.
      Parameters:
      itemName - Name des gewünschten Sub-Datums.
      Returns:
      Text-Ansicht des Sub-Datums.
    • asTimeValue

      Data.TimeValue asTimeValue()
      Liefert eine Zeit-Ansicht auf dieses einfache Datum zurück.
      Returns:
      Zeit-Ansicht des Datums.
    • getTimeValue

      Data.TimeValue getTimeValue​(java.lang.String itemName)
      Liefert eine Zeit-Ansicht auf das Sub-Datum dieser Liste mit dem angegebenen Namen zurück.
      Parameters:
      itemName - Name des gewünschten Sub-Datums.
      Returns:
      Zeit-Ansicht des Sub-Datums.
    • asScaledValue

      Data.NumberValue asScaledValue()
      Liefert eine Skalierte-Ansicht auf dieses einfache Datum zurück.
      Returns:
      Skalierte-Ansicht des Datums.
    • getScaledValue

      Data.NumberValue getScaledValue​(java.lang.String itemName)
      Liefert eine Skalierte-Ansicht auf das Sub-Datum dieser Liste mit dem angegebenen Namen zurück.
      Parameters:
      itemName - Name des gewünschten Sub-Datums.
      Returns:
      Skalierte-Ansicht des Sub-Datums.
    • asUnscaledValue

      Data.NumberValue asUnscaledValue()
      Liefert eine Unskalierte-Ansicht auf dieses einfache Datum zurück.
      Returns:
      Unskalierte-Ansicht des Datums.
    • getUnscaledValue

      Data.NumberValue getUnscaledValue​(java.lang.String itemName)
      Liefert eine Unskalierte-Ansicht auf das Sub-Datum dieser Liste mit dem angegebenen Namen zurück.
      Parameters:
      itemName - Name des gewünschten Sub-Datums.
      Returns:
      Unskalierte-Ansicht des Sub-Datums.
    • asReferenceValue

      Data.ReferenceValue asReferenceValue()
      Liefert eine Referenz-Ansicht auf dieses einfache Datum zurück.
      Returns:
      Referenz-Ansicht des Datums.
    • getReferenceValue

      Data.ReferenceValue getReferenceValue​(java.lang.String itemName)
      Liefert eine Referenz-Ansicht auf das Sub-Datum dieser Liste mit dem angegebenen Namen zurück.
      Parameters:
      itemName - Name des gewünschten Sub-Datums.
      Returns:
      Referenz-Ansicht des Sub-Datums.
    • asArray

      Data.Array asArray()
      Liefert eine Array-Ansicht auf dieses Array zurück.
      Returns:
      Array-Ansicht des Datums.
    • getArray

      Data.Array getArray​(java.lang.String itemName)
      Liefert eine Array-Ansicht auf das Sub-Datum dieser Liste mit dem angegebenen Namen zurück.
      Parameters:
      itemName - Name des gewünschten Sub-Datums.
      Returns:
      Array-Ansicht des Sub-Datums.
    • asTextArray

      Data.TextArray asTextArray()
      Liefert eine Text-Array-Ansicht auf dieses Array zurück.
      Returns:
      Text-Array-Ansicht des Datums.
    • getTextArray

      Data.TextArray getTextArray​(java.lang.String itemName)
      Liefert eine Text-Array-Ansicht auf das Sub-Datum dieser Liste mit dem angegebenen Namen zurück.
      Parameters:
      itemName - Name des gewünschten Sub-Datums.
      Returns:
      Text-Array-Ansicht des Sub-Datums.
    • asTimeArray

      Data.TimeArray asTimeArray()
      Liefert eine Time-Array-Ansicht auf dieses Array zurück.
      Returns:
      Time-Array-Ansicht des Datums.
    • getTimeArray

      Data.TimeArray getTimeArray​(java.lang.String itemName)
      Liefert eine Time-Array-Ansicht auf das Sub-Datum dieser Liste mit dem angegebenen Namen zurück.
      Parameters:
      itemName - Name des gewünschten Sub-Datums.
      Returns:
      Time-Array-Ansicht des Sub-Datums.
    • asScaledArray

      Data.NumberArray asScaledArray()
      Liefert eine Skalierte-Array-Ansicht auf dieses Array zurück.
      Returns:
      Skalierte-Array-Ansicht des Datums.
    • getScaledArray

      Data.NumberArray getScaledArray​(java.lang.String itemName)
      Liefert eine Skalierte-Array-Ansicht auf das Sub-Datum dieser Liste mit dem angegebenen Namen zurück.
      Parameters:
      itemName - Name des gewünschten Sub-Datums.
      Returns:
      Skalierte-Array-Ansicht des Sub-Datums.
    • asUnscaledArray

      Data.NumberArray asUnscaledArray()
      Liefert eine Unskalierte-Array-Ansicht auf dieses Array zurück.
      Returns:
      Unskalierte-Array-Ansicht des Datums.
    • getUnscaledArray

      Data.NumberArray getUnscaledArray​(java.lang.String itemName)
      Liefert eine Unskalierte-Array-Ansicht auf das Sub-Datum dieser Liste mit dem angegebenen Namen zurück.
      Parameters:
      itemName - Name des gewünschten Sub-Datums.
      Returns:
      Unskalierte-Array-Ansicht des Sub-Datums.
    • asReferenceArray

      Data.ReferenceArray asReferenceArray()
      Liefert eine Referenz-Array-Ansicht auf dieses Array zurück.
      Returns:
      Referenz-Array-Ansicht des Datums.
    • getReferenceArray

      Data.ReferenceArray getReferenceArray​(java.lang.String itemName)
      Liefert eine Referenz-Array-Ansicht auf das Sub-Datum dieser Liste mit dem angegebenen Namen zurück.
      Parameters:
      itemName - Name des gewünschten Sub-Datums.
      Returns:
      Referenz-Array-Ansicht des Sub-Datums.
    • iterator

      java.util.Iterator<Data> iterator()
      Liefert einen Iterator zurück, der über die Sub-Daten dieser Liste oder die Element-Daten dieses Arrays iteriert.
      Specified by:
      iterator in interface java.lang.Iterable<Data>
      Returns:
      Iterator über die Sub-Daten dieser Liste oder die Element-Daten dieses Arrays.