Class UdaInterpreter

  • All Implemented Interfaces:
    de.bsvrz.dav.daf.main.ApplicationCloseActionHandler, java.lang.Runnable

    public class UdaInterpreter
    extends java.lang.Thread
    implements de.bsvrz.dav.daf.main.ApplicationCloseActionHandler
    die Repräsentation eines Uda-Interpreter.
    Ein Uda-Interpreter wird als einzelner Thread gestartet und führt ein SkriptLauf-Objekt aus, d.h. ein Skript mit einer zugewiesenen Ausführungsumgebung.
    • Nested Class Summary

      • Nested classes/interfaces inherited from class java.lang.Thread

        java.lang.Thread.State, java.lang.Thread.UncaughtExceptionHandler
    • Field Summary

      • Fields inherited from class java.lang.Thread

        MAX_PRIORITY, MIN_PRIORITY, NORM_PRIORITY
    • Constructor Summary

      Constructors 
      Constructor Description
      UdaInterpreter​(de.bsvrz.dav.daf.main.ClientDavInterface initialConnection, SkriptLauf skriptLauf)
      Konstruktor.
      Die Funktion erstellt einen Interpreter aus dem übergebenen Skriptlaufobjekt.
    • Method Summary

      Modifier and Type Method Description
      void addAktivitaet​(UdaAktivitaet aktivitaet)
      fügt der Liste der nebenlaüfigen Aktivitäten eine neue hinzu.
      void addAnweisung​(de.bsvrz.sys.funclib.bitctrl.interpreter.Ausdruck ausdruck)
      fügt dem Hauptskript des Interpreters eine Anweisung hinzu.
      void addListener​(InterpreterListener listener)
      fügt einen InterpreterListener hinzu.
      void anhalten()
      hält die Ausführung der Anweisungen des Hauptthreads an.
      Eine aktive Anweisung wird nicht unterbrochen, das Skript wartet erst vor Beginn der Ausführung der nächstfolgenden Anweisung auf die Freigabe.
      void ausgabe​(ProtokollEintrag daten)
      gibt den übergebenen Text über alle Ausgabekanäle des Skripts aus.
      void beenden()
      beendet die Ausführung des Skripts.
      void close​(java.lang.String error)
      .
      Die Funktion implementiert die entsprechende Funktion der Schnittstelle ApplicationCloseActionHandler, um zu verhindern, das das Beenden der Verbindung, die ein Interpreter verwendet hat das gesamte System beendet.
      void fortsetzen()
      setzt die Ausführung eines zuvor angehaltenen Skripts fort.
      de.bsvrz.dav.daf.main.ClientDavConnection getConnection()
      liefert die Datenverteilerverbindung des Interpreters.
      FunktionsDefinition getFunktion​(java.lang.String name)
      liefert die nuzterdefinierte Funktion mit dem angegebenen Namen.
      QuantorDefinition getQuantor​(java.lang.String name)
      liefert den nuzterdefinierten Quantor mit dem angegebenen Namen.
      SkriptLauf getSkriptLauf()
      liefert den Skriptlauf, für den das Interpreterobjekt angelegt wurde.
      java.util.Timer getTimer()
      liefert den Timer des Interpreters.
      static java.lang.Object getZuweisbareDaten​(java.lang.Object dest, java.lang.Object daten)
      prüft, ob Daten einem Zielobjekt zugewiesen werden können und nimmt gegebenenfalls eine Konvertierung vor.
      boolean isRunning()
      ermittelt, ob der Interpreter läuft.
      static void main​(java.lang.String[] args)
      führt den Interpreter lokal aus.
      void removeListener​(InterpreterListener listener)
      entfernt einen InterpreterListener.
      void run()
      führt das zugeordnete Uda-Skript aus.
      Die Funktion stellt initialisiert Datenverteilerverbindung mit den gewünschten Parametern und meldet sich als der im Skriptlauf definierte Benutzer an.
      void setFunktion​(java.lang.String name, FunktionsDefinition definition)
      fügt dem Skript eine nutzerdefinierte Funktion hinzu.
      Die nutzerdefinierten Funktionen werden bereits vor der eigentlichen Ausführung des Skripts ermittelt, eine Funktion mit gleichem Namen ersetzt immer die vorige Version, d.h. die Änderung einer Funktion zur Laufzeit ist nicht möglich.
      void setQuantor​(java.lang.String name, QuantorDefinition definition)
      fügt dem Skript einen nutzerdefinierte Quantor hinzu.
      Die nutzerdefinierten Quantoren werden bereits vor der eigentlichen Ausführung des Skripts ermittelt, ein Quantor mit gleichem Namen ersetzt immer die vorige Version, d.h. die Änderung eines Quantors zur Laufzeit ist nicht möglich.
      • Methods inherited from class java.lang.Thread

        activeCount, checkAccess, clone, countStackFrames, currentThread, dumpStack, enumerate, getAllStackTraces, getContextClassLoader, getDefaultUncaughtExceptionHandler, getId, getName, getPriority, getStackTrace, getState, getThreadGroup, getUncaughtExceptionHandler, holdsLock, interrupt, interrupted, isAlive, isDaemon, isInterrupted, join, join, join, onSpinWait, resume, setContextClassLoader, setDaemon, setDefaultUncaughtExceptionHandler, setName, setPriority, setUncaughtExceptionHandler, sleep, sleep, start, stop, suspend, toString, yield
      • Methods inherited from class java.lang.Object

        equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
    • Constructor Detail

      • UdaInterpreter

        public UdaInterpreter​(de.bsvrz.dav.daf.main.ClientDavInterface initialConnection,
                              SkriptLauf skriptLauf)
                       throws UdaInterpreterException
        Konstruktor.
        Die Funktion erstellt einen Interpreter aus dem übergebenen Skriptlaufobjekt. Der zugeordnete Quelltext des Skripts wird analysiert und eine für den Interpreter ausführbare Form übersetzt.
        Parameters:
        initialConnection - die Verbindung der umgebenden Anwendung
        skriptLauf - den SkriptLauf
        Throws:
        UdaInterpreterException - bei der Erstellung des Interpreters ist ein Fehler aufgetreten. Mögliche Probleme sind:
        • die Datei mit dem Quelltext konnte nicht ermittelt werden,
        • beim Einlesen der Quelldatei wurden ungültige Zeichen empfangen,
        • der Quelltext enthält syntaktische Fehler.
    • Method Detail

      • getZuweisbareDaten

        public static java.lang.Object getZuweisbareDaten​(java.lang.Object dest,
                                                          java.lang.Object daten)
        prüft, ob Daten einem Zielobjekt zugewiesen werden können und nimmt gegebenenfalls eine Konvertierung vor.
        Parameters:
        dest - die alten Daten des Ziels
        daten - die Daten, die zugewiesen werden sollen
        Returns:
        die zuzuweisenden Daten
      • main

        public static void main​(java.lang.String[] args)
        führt den Interpreter lokal aus.
        Parameters:
        args - die Kommandozeilen-Parameter
      • addAktivitaet

        public void addAktivitaet​(UdaAktivitaet aktivitaet)
        fügt der Liste der nebenlaüfigen Aktivitäten eine neue hinzu.
        Parameters:
        aktivitaet - die Aktivität
      • addAnweisung

        public void addAnweisung​(de.bsvrz.sys.funclib.bitctrl.interpreter.Ausdruck ausdruck)
        fügt dem Hauptskript des Interpreters eine Anweisung hinzu.
        Parameters:
        ausdruck - die neue Anweisung
      • anhalten

        public void anhalten()
        hält die Ausführung der Anweisungen des Hauptthreads an.
        Eine aktive Anweisung wird nicht unterbrochen, das Skript wartet erst vor Beginn der Ausführung der nächstfolgenden Anweisung auf die Freigabe.
      • ausgabe

        public void ausgabe​(ProtokollEintrag daten)
        gibt den übergebenen Text über alle Ausgabekanäle des Skripts aus.
        Parameters:
        daten - die auszugebenden Daten
      • beenden

        public void beenden()
        beendet die Ausführung des Skripts.
      • close

        public void close​(java.lang.String error)
        .
        Die Funktion implementiert die entsprechende Funktion der Schnittstelle ApplicationCloseActionHandler, um zu verhindern, das das Beenden der Verbindung, die ein Interpreter verwendet hat das gesamte System beendet.
        Specified by:
        close in interface de.bsvrz.dav.daf.main.ApplicationCloseActionHandler
        See Also:
        ApplicationCloseActionHandler.close(java.lang.String)
      • fortsetzen

        public void fortsetzen()
        setzt die Ausführung eines zuvor angehaltenen Skripts fort.
      • getConnection

        public de.bsvrz.dav.daf.main.ClientDavConnection getConnection()
        liefert die Datenverteilerverbindung des Interpreters.
        Returns:
        connection die Verbindung
      • getQuantor

        public QuantorDefinition getQuantor​(java.lang.String name)
        liefert den nuzterdefinierten Quantor mit dem angegebenen Namen.
        Parameters:
        name - der Name des gesuchten Quantors.
        Returns:
        die Quantordefinition
        See Also:
        setQuantor(String, QuantorDefinition)
      • getSkriptLauf

        public SkriptLauf getSkriptLauf()
        liefert den Skriptlauf, für den das Interpreterobjekt angelegt wurde.
        Returns:
        den Skriptlauf
      • getTimer

        public java.util.Timer getTimer()
        liefert den Timer des Interpreters.
        Returns:
        den Timer
      • isRunning

        public boolean isRunning()
        ermittelt, ob der Interpreter läuft.
        Returns:
        true, wenn er aktiv ist
      • run

        public void run()
        führt das zugeordnete Uda-Skript aus.
        Die Funktion stellt initialisiert Datenverteilerverbindung mit den gewünschten Parametern und meldet sich als der im Skriptlauf definierte Benutzer an. Nach erfolgreicher Anmeldung werden die Anweisungen des Skriptanweisungsblockes nacheinander ausgeführt. Wenn alle Anweisungen ausgeführt wurden, blockiert der Hauptthread, bis alle bei der Ausführung des Skripts gestarteten nebenläufigen Aktivitäten beendet wurden.
        Specified by:
        run in interface java.lang.Runnable
        Overrides:
        run in class java.lang.Thread
        See Also:
        Thread.run()
      • setFunktion

        public void setFunktion​(java.lang.String name,
                                FunktionsDefinition definition)
        fügt dem Skript eine nutzerdefinierte Funktion hinzu.
        Die nutzerdefinierten Funktionen werden bereits vor der eigentlichen Ausführung des Skripts ermittelt, eine Funktion mit gleichem Namen ersetzt immer die vorige Version, d.h. die Änderung einer Funktion zur Laufzeit ist nicht möglich.
        Parameters:
        name - der Name der Funktion
        definition - die Funktionsdefinition
        See Also:
        getFunktion(String)
      • setQuantor

        public void setQuantor​(java.lang.String name,
                               QuantorDefinition definition)
        fügt dem Skript einen nutzerdefinierte Quantor hinzu.
        Die nutzerdefinierten Quantoren werden bereits vor der eigentlichen Ausführung des Skripts ermittelt, ein Quantor mit gleichem Namen ersetzt immer die vorige Version, d.h. die Änderung eines Quantors zur Laufzeit ist nicht möglich.
        Parameters:
        name - der Name des Quantors
        definition - die Quantordefinition
        See Also:
        getQuantor(String)