Class AbstractOnlineDatensatz<T extends OnlineDatum>

    • Constructor Detail

      • AbstractOnlineDatensatz

        public AbstractOnlineDatensatz​(SystemObjekt systemObjekt,
                                       ObjektFactory objektFactory)
        Initialisiert den Onlinedatensatz.
        Parameters:
        systemObjekt - das Systemobjekt zu dem der Datensatz gehört.
        objektFactory - die ObjektFabrik, die der Datensatz verwenden soll.
    • Method Detail

      • anmeldenQuelle

        public void anmeldenQuelle​(Aspekt asp,
                                   T datum)
                            throws AnmeldeException
        Meldet den Datensatz als Quelle am Datenverteiler an und versendet den übergebenen Datensatz.
        Specified by:
        anmeldenQuelle in interface OnlineDatensatz<T extends OnlineDatum>
        Parameters:
        asp - der betroffene Aspekt.
        datum - der initiale Datensatz
        Throws:
        AnmeldeException - wenn die Anmeldung nicht erfolgreich war.
      • abmeldenSender

        public void abmeldenSender​(Aspekt asp)
        Meldet eine eventuell vorhandene Anmeldung als Sender oder Quelle wieder ab. Noch nicht gesendet Datensätze werden aus dem Sendepuffer entfernt.
        Specified by:
        abmeldenSender in interface OnlineDatensatz<T extends OnlineDatum>
        Parameters:
        asp - der betroffene Aspekt.
      • getDatum

        public T getDatum​(Aspekt asp)
        Description copied from interface: Datensatz
        Gibt die aktuellen Daten des Datensatzes zurück. Es erfolgt eine implizite Empfängeranmeldung für 1 Stunde.
        Specified by:
        getDatum in interface Datensatz<T extends OnlineDatum>
        Parameters:
        asp - der betroffene Aspekt.
        Returns:
        ein Datum, welches die Daten des Datensatzes kapselt.
      • getSingleDatum

        public T getSingleDatum​(Aspekt asp)
        Description copied from interface: OnlineDatensatz
        Gibt die aktuellen Daten des Datensatzes zurück. Die implizite Empfängeranmeldung wird sofort abgemeldet.
        Specified by:
        getSingleDatum in interface OnlineDatensatz<T extends OnlineDatum>
        Parameters:
        asp - der betroffene Aspekt.
        Returns:
        ein Datum, welches die Daten des Datensatzes kapselt.
      • getDatum

        public T getDatum​(Aspekt asp,
                          long unsubscriptionIntervall)
        Description copied from interface: OnlineDatensatz
        Gibt die aktuellen Daten des Datensatzes zurück. Es erfolgt eine implizite Empfängeranmeldung für das angegebene Intervall in Millisekunden.
        Specified by:
        getDatum in interface OnlineDatensatz<T extends OnlineDatum>
        Parameters:
        asp - der betroffene Aspekt.
        unsubscriptionIntervall - das Intervall für die eine implizite Empfängeranmeldung gültig sein soll.
        Returns:
        ein Datum, welches die Daten des Datensatzes kapselt.
      • addUpdateListener

        public void addUpdateListener​(Aspekt asp,
                                      short simulationsVariante,
                                      DatensatzUpdateListener listener)
        Registriert einen Listener für eine bestimmte Simulationsvariante.
        Specified by:
        addUpdateListener in interface OnlineDatensatz<T extends OnlineDatum>
        Parameters:
        asp - der betroffene Aspekt.
        simulationsVariante - die Simulationsvariante.
        listener - ein interessierte Listener.
      • removeUpdateListener

        public void removeUpdateListener​(Aspekt asp,
                                         DatensatzUpdateListener listener)
        Deregistriert einen Listener. Beim Versuch einen nicht registrierten Listener zu entfernen, wird keine Aktion ausgeführt.
        Specified by:
        removeUpdateListener in interface OnlineDatensatz<T extends OnlineDatum>
        Parameters:
        asp - der betroffene Aspekt.
        listener - ein nicht mehr interessierten Listener.
      • removeUpdateListener

        public void removeUpdateListener​(Aspekt asp,
                                         short simulationsVariante,
                                         DatensatzUpdateListener listener)
        Deregistriert einen Listener. Beim Versuch einen nicht registrierten Listener zu entfernen, wird keine Aktion ausgeführt.
        Specified by:
        removeUpdateListener in interface OnlineDatensatz<T extends OnlineDatum>
        Parameters:
        asp - der betroffene Aspekt.
        simulationsVariante - die betroffene Simulationsvariante.
        listener - ein nicht mehr interessierten Listener.
      • addSendeSteuerungListener

        public void addSendeSteuerungListener​(Aspekt asp,
                                              short simulationsVariante,
                                              SendeSteuerungListener listener)
        Registriert einen Listener für eine bestimmte Simulationsvariante.
        Specified by:
        addSendeSteuerungListener in interface OnlineDatensatz<T extends OnlineDatum>
        Parameters:
        asp - der betroffene Aspekt.
        simulationsVariante - die Simulationsvariante.
        listener - ein interessierte Listener.
      • removeSendeSteuerungListener

        public void removeSendeSteuerungListener​(Aspekt asp,
                                                 SendeSteuerungListener listener)
        Deregistriert einen Listener. Beim Versuch einen nicht registrierten Listener zu entfernen, wird keine Aktion ausgeführt.
        Specified by:
        removeSendeSteuerungListener in interface OnlineDatensatz<T extends OnlineDatum>
        Parameters:
        asp - der betroffene Aspekt.
        listener - ein nicht mehr interessierten Listener.
      • removeSendeSteuerungListener

        public void removeSendeSteuerungListener​(Aspekt asp,
                                                 short simulationsVariante,
                                                 SendeSteuerungListener listener)
        Deregistriert einen Listener. Beim Versuch einen nicht registrierten Listener zu entfernen, wird keine Aktion ausgeführt.
        Specified by:
        removeSendeSteuerungListener in interface OnlineDatensatz<T extends OnlineDatum>
        Parameters:
        asp - der betroffene Aspekt.
        simulationsVariante - die betroffene Simulationsvariante.
        listener - ein nicht mehr interessierten Listener.
      • fireDatensatzAktualisiert

        protected void fireDatensatzAktualisiert​(de.bsvrz.dav.daf.main.DataDescription dbs,
                                                 OnlineDatum datum)
        Benachricht registrierte Listener über Änderungen am Datensatz. Muss von abgeleiteten Klassen aufgerufen werden, wenn das Datum geändert wurde.
        Parameters:
        dbs - DataDescription
        datum - das Datum zum Zeitpunkt des Events.
      • fireSendeSteuerungAktualisiert

        protected void fireSendeSteuerungAktualisiert​(de.bsvrz.dav.daf.main.DataDescription dbs,
                                                      OnlineDatensatz.Status status)
        Benachricht registrierte Listener über Änderungen der Sendesteuerung.
        Parameters:
        dbs - DataDescription
        status - Status der Sendesteuerung
      • isAngemeldetSender

        public boolean isAngemeldetSender​(Aspekt asp)
        Fragt, ob der Datensatz als Sender oder Quelle angemeldet ist.
        Specified by:
        isAngemeldetSender in interface OnlineDatensatz<T extends OnlineDatum>
        Parameters:
        asp - der betroffene Aspekt.
        Returns:
        true, wenn der Datensatz als Sender oder Quelle angemeldet ist.
      • isAutoUpdate

        public boolean isAutoUpdate​(Aspekt asp)
        Liest das Flag autoUpdate.
        Specified by:
        isAutoUpdate in interface OnlineDatensatz<T extends OnlineDatum>
        Parameters:
        asp - der betroffene Aspekt.
        Returns:
        true, wenn der Datensatz neue Daten automatisch vom Datenverteiler empfängt.
      • sendeDatum

        public void sendeDatum​(Aspekt asp,
                               T datum)
                        throws DatensendeException
        Veranlasst den Datensatz ein Datum an den Datenverteiler zusenden. Ist der Zeitstempel des Datums nicht gesetzt oder gleich 0, wird automatisch der aktuelle Zeitstempel beim Versand verwendet. Es wird das Standardtimeout verwendet.
        Specified by:
        sendeDatum in interface OnlineDatensatz<T extends OnlineDatum>
        Parameters:
        asp - der betroffene Aspekt.
        datum - das zu sendende Datum.
        Throws:
        DatensendeException - wenn die Daten nicht gesendet werden konnten. Der Sendecache wird in dem Fall nicht geleert.
        See Also:
        Datensatz.createDatum()
      • sendeDatum

        public void sendeDatum​(Aspekt asp,
                               T datum,
                               long timeout)
                        throws DatensendeException
        Veranlasst den Datensatz ein Datum an den Datenverteiler zusenden. Ist der Zeitstempel des Datums nicht gesetzt oder gleich 0, wird automatisch der aktuelle Zeitstempel beim Versand verwendet.
        Specified by:
        sendeDatum in interface OnlineDatensatz<T extends OnlineDatum>
        Parameters:
        asp - der betroffene Aspekt.
        datum - das zu sendende Datum.
        timeout - die Zeitspanne in der die Daten gesendet werden müssen.
        Throws:
        DatensendeException - wenn die Daten nicht gesendet werden konnten. Der Sendecache wird in dem Fall nicht geleert.
        See Also:
        Datensatz.createDatum()
      • isQuelle

        public boolean isQuelle​(Aspekt asp)
        Description copied from interface: OnlineDatensatz
        Gibt das Flag quelle zurück.
        Specified by:
        isQuelle in interface OnlineDatensatz<T extends OnlineDatum>
        Parameters:
        asp - der betroffene Aspekt.
        Returns:
        true, wenn der Datensatz als Quelle und false, wenn er als Sender angemeldet werden soll.
      • setQuelle

        public void setQuelle​(Aspekt asp,
                              boolean quelle)
        Description copied from interface: OnlineDatensatz
        Legt fest, ob Anmeldungen als Quelle durchgeführt werden sollen. Eine bereits bestehende Anmeldung wird dadurch nicht beeinflusst.
        Specified by:
        setQuelle in interface OnlineDatensatz<T extends OnlineDatum>
        Parameters:
        asp - der betroffene Aspekt.
        quelle - true, wenn die Anmeldung als Quelle erfolgen soll, ansonsten erfolgt sie als Sender.
      • isSenke

        public boolean isSenke​(Aspekt asp)
        Description copied from interface: OnlineDatensatz
        Gibt das Flag senke zurück.
        Specified by:
        isSenke in interface OnlineDatensatz<T extends OnlineDatum>
        Parameters:
        asp - der betroffene Aspekt.
        Returns:
        true, wenn der Datensatz als Senke und false, wenn er als Empfänger angemeldet werden soll.
      • setSenke

        public void setSenke​(Aspekt asp,
                             boolean senke)
        Description copied from interface: OnlineDatensatz
        Legt fest, ob Anmeldungen als Senke durchgeführt werden sollen. Eine bereits bestehende Anmeldung wird dadurch nicht beeinflusst.
        Specified by:
        setSenke in interface OnlineDatensatz<T extends OnlineDatum>
        Parameters:
        asp - der betroffene Aspekt.
        senke - true, wenn die Anmeldung als Senke erfolgen soll, ansonsten erfolgt sie als Empfänger.
      • getArchivdatenIterator

        public java.util.Iterator<T> getArchivdatenIterator​(Aspekt asp,
                                                            com.bitctrl.util.Interval intervall,
                                                            boolean nurAenderungen,
                                                            de.bsvrz.dav.daf.main.archive.ArchiveDataKind... dataKinds)
        Description copied from interface: OnlineDatensatz
        Erzeugt aus den Parametern eine äquivalente Archivanfrage für einen Zeitraum.
        Specified by:
        getArchivdatenIterator in interface OnlineDatensatz<T extends OnlineDatum>
        Parameters:
        asp - der Aspekt für den Daten gesucht werden.
        intervall - das Zeitintervall der Archivanfrage.
        nurAenderungen - true, wenn nur geänderten Datensätze zurückgeben werden sollen. Aufeinanderfolgende identische Datensätze werden hierbei zu einem Datensatz zusammengefasst.
        dataKinds - die gewünschten Datensatzarten. Wenn nicht angegeben, werden nur Onlinedaten abgefragt.
        Returns:
        die Liste der Archivanfragen.
      • getArchivdatenIterator

        public java.util.Iterator<T> getArchivdatenIterator​(Aspekt asp,
                                                            long zeitstempel,
                                                            int anzahlDatensaetze,
                                                            boolean nurAenderungen,
                                                            de.bsvrz.dav.daf.main.archive.ArchiveDataKind... dataKinds)
        Description copied from interface: OnlineDatensatz
        Erzeugt aus den Parametern eine äquivalente Archivanfrage für eine bestimmte Anzahl Datensätze vor einem Endzeitpunkt.
        Specified by:
        getArchivdatenIterator in interface OnlineDatensatz<T extends OnlineDatum>
        Parameters:
        asp - der Aspekt für den Daten gesucht werden.
        zeitstempel - der Zeitpunkt vor dem die Datensätze liegen sollen.
        anzahlDatensaetze - die Anzahl der gewünschten Datensätze.
        nurAenderungen - true, wenn nur geänderten Datensätze zurückgeben werden sollen. Aufeinanderfolgende identische Datensätze werden hierbei zu einem Datensatz zusammengefasst.
        dataKinds - die gewünschten Datensatzarten. Wenn nicht angegeben, werden nur Onlinedaten abgefragt.
        Returns:
        die Liste der Archivanfragen.
      • getArchivdaten

        public java.util.List<T> getArchivdaten​(Aspekt asp,
                                                com.bitctrl.util.Interval intervall,
                                                boolean nurAenderungen,
                                                de.bsvrz.dav.daf.main.archive.ArchiveDataKind... dataKinds)
        Description copied from interface: OnlineDatensatz
        Ruft Archivdaten in einen Rutsch ab. Diese Methode sollte nur verwendet werden, wenn die zu erwartenden Liste der Archivdaten nicht zu groß ist.

        Hinweis: Diese Methode sollte nur für Anfragen benutzt werden, die relativ kleine Datenmengen abfragen, da die Abfrage sonst sehr lange dauern oder gar fehlschlagen kann. Besser ist es die Methode OnlineDatensatz.getArchivdatenIterator(Aspekt, Interval, boolean, ArchiveDataKind...) zu verwenden.

        Specified by:
        getArchivdaten in interface OnlineDatensatz<T extends OnlineDatum>
        Parameters:
        asp - der Aspekt für den Daten gesucht werden.
        intervall - das Zeitintervall der Archivanfrage.
        nurAenderungen - true, wenn nur geänderten Datensätze zurückgeben werden sollen. Aufeinanderfolgende identische Datensätze werden hierbei zu einem Datensatz zusammengefasst.
        dataKinds - die gewünschten Datensatzarten. Wenn nicht angegeben, werden nur Onlinedaten abgefragt.
        Returns:
        die Liste der Archivdaten.
        See Also:
        OnlineDatensatz.getArchivdatenIterator(Aspekt, Interval, boolean, ArchiveDataKind...)
      • getArchivdaten

        public java.util.List<T> getArchivdaten​(Aspekt asp,
                                                long zeitstempel,
                                                int anzahlDatensaetze,
                                                boolean nurAenderungen,
                                                de.bsvrz.dav.daf.main.archive.ArchiveDataKind... dataKinds)
        Description copied from interface: OnlineDatensatz
        Liefert eine beliebige Anzahl an Archivdatensätzen vor einem definierten Zeitpunkt.

        Hinweis: Diese Methode sollte nur für Anfragen benutzt werden, die relativ kleine Datenmengen abfragen, da die Abfrage sonst sehr lange dauern oder gar fehlschlagen kann. Besser ist es die Methode OnlineDatensatz.getArchivdatenIterator(Aspekt, long, int, boolean, ArchiveDataKind...) zu verwenden.

        Specified by:
        getArchivdaten in interface OnlineDatensatz<T extends OnlineDatum>
        Parameters:
        asp - der Aspekt für den Daten gesucht werden.
        zeitstempel - der Zeitpunkt vor dem die Datensätze liegen sollen.
        anzahlDatensaetze - die Anzahl der gewünschten Datensätze.
        nurAenderungen - true, wenn nur geänderten Datensätze zurückgeben werden sollen. Aufeinanderfolgende identische Datensätze werden hierbei zu einem Datensatz zusammengefasst.
        dataKinds - die gewünschten Datensatzarten. Wenn nicht angegeben, werden nur Onlinedaten abgefragt.
        Returns:
        die Liste der Archivdaten.
        See Also:
        ArchivIterator, OnlineDatensatz.getArchivdatenIterator(Aspekt, long, int, boolean, ArchiveDataKind...)
      • konvertiere

        public de.bsvrz.dav.daf.main.Data konvertiere​(T datum)
        Description copied from interface: Datensatz
        Konvertiert ein Modelldatum in ein Datenverteilerdatum.

        Hinweis: Diese Methode gehört nicht zur public API.

        Specified by:
        konvertiere in interface Datensatz<T extends OnlineDatum>
        Parameters:
        datum - das Datum, welches konvertiert werden soll.
        Returns:
        das Datenverteilerdatum.
      • konvertiere

        public T konvertiere​(de.bsvrz.dav.daf.main.ResultData result)
        Description copied from interface: Datensatz
        Konvertiert ein Datenverteilerdatum ein Modelldatum.

        Hinweis: Diese Methode gehört nicht zur public API.

        Specified by:
        konvertiere in interface Datensatz<T extends OnlineDatum>
        Parameters:
        result - das Datum, welches konvertiert werden soll.
        Returns:
        das Modelldatum.
      • registrationStoreDataRequest

        public void registrationStoreDataRequest​(de.bsvrz.dav.daf.main.config.SystemObject obj,
                                                 de.bsvrz.dav.daf.main.DataDescription desc,
                                                 byte state)
        Specified by:
        registrationStoreDataRequest in interface de.bsvrz.sys.funclib.bitctrl.daf.SendRegistrationStoreDataRequestListener
      • init

        public void init​(de.bsvrz.dav.daf.main.config.SystemObject systemObject,
                         ObjektFactory objektFactory)
        Initialisiert das Systemobjekt.

        Hinweis: Diese Methode darf nur genau einmal aufgerufen werden. Muss aber aufgerufen werden, bevor das Systemobjekt verwendet wird.

        Parameters:
        systemObject - das zu kapselnde Systemobjekt.
        objektFactory - die Factory, die das Objekt erzeugt hat.
      • equals

        public boolean equals​(java.lang.Object obj)
        übernimmt die Methode von SystemObject, wenn dieses und das andere Systemobjekt initialisiert sind. Andernfalls werden die PIDs der beiden Objekt verglichen.
        Overrides:
        equals in class java.lang.Object
      • hashCode

        public int hashCode()
        Verwendet den Hash der PID.
        Overrides:
        hashCode in class java.lang.Object
      • getId

        public long getId()
        Description copied from interface: SystemObjekt
        Gibt die ID des Systemobjekts zurück.
        Specified by:
        getId in interface SystemObjekt
        Returns:
        Die ID
        See Also:
        SystemObject.getId()
      • getName

        public java.lang.String getName()
        Description copied from interface: SystemObjekt
        Gibt den Namen des Systemobjekts zurück.
        Specified by:
        getName in interface SystemObjekt
        Returns:
        Der Systemobjektname
        See Also:
        SystemObject.getName()
      • getPid

        public java.lang.String getPid()
        Description copied from interface: SystemObjekt
        Gibt die PID des Systemobjekts zurück.
        Specified by:
        getPid in interface SystemObjekt
        Returns:
        Die PID als String
        See Also:
        SystemObject.getPid()
      • toString

        public java.lang.String toString()
        übernimmt die Methode von SystemObject.
        Overrides:
        toString in class java.lang.Object
      • compareTo

        public int compareTo​(SystemObjekt o)
        Specified by:
        compareTo in interface java.lang.Comparable<SystemObjekt>