Package de.bsvrz.ibv.uda.interpreter
Class UdaInterpreter
- java.lang.Object
-
- java.lang.Thread
-
- de.bsvrz.ibv.uda.interpreter.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.
-
-
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 einenInterpreterListener
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 SchnittstelleApplicationCloseActionHandler
, 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 einenInterpreterListener
.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
-
-
-
-
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 AnwendungskriptLauf
- 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 Zielsdaten
- 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
-
addListener
public void addListener(InterpreterListener listener)
fügt einenInterpreterListener
hinzu.- Parameters:
listener
- der hinzuzufügende Listener- See Also:
removeListener(InterpreterListener)
-
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 SchnittstelleApplicationCloseActionHandler
, um zu verhindern, das das Beenden der Verbindung, die ein Interpreter verwendet hat das gesamte System beendet.- Specified by:
close
in interfacede.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
-
getFunktion
public FunktionsDefinition getFunktion(java.lang.String name)
liefert die nuzterdefinierte Funktion mit dem angegebenen Namen.- Parameters:
name
- der Name der gesuchten Funktion.- Returns:
- die Funktionsdefinition
- See Also:
setFunktion(String, FunktionsDefinition)
-
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
-
removeListener
public void removeListener(InterpreterListener listener)
entfernt einenInterpreterListener
.- Parameters:
listener
- der zu entfernende Listener- See Also:
addListener(InterpreterListener)
-
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 interfacejava.lang.Runnable
- Overrides:
run
in classjava.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 Funktiondefinition
- 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 Quantorsdefinition
- die Quantordefinition- See Also:
getQuantor(String)
-
-