de.bsvrz.sys.startstopp.buv
Class CmdInterpreter

java.lang.Object
  extended by java.lang.Thread
      extended by de.bsvrz.sys.startstopp.buv.CmdInterpreter
All Implemented Interfaces:
java.lang.Runnable

public class CmdInterpreter
extends java.lang.Thread

Kommando-Interpreter

Version:
$Revision: 1.14 $ / $Date: 2011/11/04 09:02:21 $ / ($Author: Drapp $)
Author:
beck et al. projects GmbH, Thomas Müller

Nested Class Summary
private  class CmdInterpreter.Interpreter
          Klasse die über einen Thread die Kommunikation zu den Telnet Verbindungen realisiert
private  class CmdInterpreter.InterpreterAbgelehnt
          Klasse die über einen Thread die Kommunikation zu den abgelehnten Telnet Verbindungen realisiert
 
Nested classes/interfaces inherited from class java.lang.Thread
java.lang.Thread.State, java.lang.Thread.UncaughtExceptionHandler
 
Field Summary
private  java.net.Socket client
           
 Command closeConnCmd
          Kommando zum schliessen der Verbindung (Server horcht weiter)
private  boolean closeConnection
           
private  CmdMenu currentMenu
           
private  java.io.BufferedReader in
           
private static de.bsvrz.sys.funclib.debug.Debug logger
           
private  java.io.BufferedWriter out
           
private  int port
           
static java.lang.String PROMPT
          Das Prompt für die Darstellung einer Eingabeaufforderung an der Konsole
private  CmdMenu rootMenu
           
private  java.net.ServerSocket serverSocket
           
private  boolean showHidden
          True falls zusätzliche Kommandos angezeigt werden sollen.
private  boolean stopServer
           
 Command stopServerCmd
          Kommando zum beenden des Serverdienstes auf localhost
private  int timeout
           
 
Fields inherited from class java.lang.Thread
MAX_PRIORITY, MIN_PRIORITY, NORM_PRIORITY
 
Constructor Summary
CmdInterpreter(int port, int timeOutMinutes)
          Erzeugt den Telnet-Server
CmdInterpreter(int port, int timeOutMinutes, boolean showHidden)
          Erzeugt den Telnet-Server
CmdInterpreter(int port, int timeOutMinutes, CmdMenu root)
          Erzeugt den Telnet-Server
 
Method Summary
private  java.lang.String getHelp(java.lang.String ind)
          Hilfe für Menüeintrag zurückgeben
private  java.lang.String getUserInput()
          Benutzereingabe vom In-Stream lesen und z.B. an menuLoop() zurückgeben, Abbruch bei Überschreitung des Server-Timeout
 void menuLoop()
          Menü anzeigen, Navigation durchführen, Kommandos ausführen
 void println(java.lang.String str)
          Einen Text in den Out-Stream (z.B. via Telnet) ausgeben
private  void processConnections()
          Warten auf Verbindung, Menü in Loop anzeigen, Verbindung schliessen
 void run()
           
 void setMenu(CmdMenu root)
          Menü für den Interpreter setzen (falls noch nicht geschehen)
private  void showMenu()
          Aktuelles Menü darstellen
 void stopServerCmd()
          Beendet den Telnet-Servers.
private  boolean waitForConnection()
          Socket-Verbindung (Telnet) akzeptieren und Timeout setzen.
 
Methods inherited from class java.lang.Thread
activeCount, checkAccess, clone, countStackFrames, currentThread, destroy, dumpStack, enumerate, getAllStackTraces, getContextClassLoader, getDefaultUncaughtExceptionHandler, getId, getName, getPriority, getStackTrace, getState, getThreadGroup, getUncaughtExceptionHandler, holdsLock, interrupt, interrupted, isAlive, isDaemon, isInterrupted, join, join, join, resume, setContextClassLoader, setDaemon, setDefaultUncaughtExceptionHandler, setName, setPriority, setUncaughtExceptionHandler, sleep, sleep, start, stop, stop, suspend, toString, yield
 
Methods inherited from class java.lang.Object
equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

logger

private static final de.bsvrz.sys.funclib.debug.Debug logger

PROMPT

public static java.lang.String PROMPT
Das Prompt für die Darstellung einer Eingabeaufforderung an der Konsole


closeConnection

private boolean closeConnection

stopServer

private boolean stopServer

port

private int port

timeout

private int timeout

currentMenu

private CmdMenu currentMenu

rootMenu

private CmdMenu rootMenu

client

private java.net.Socket client

serverSocket

private java.net.ServerSocket serverSocket

in

private java.io.BufferedReader in

out

private java.io.BufferedWriter out

showHidden

private boolean showHidden
True falls zusätzliche Kommandos angezeigt werden sollen.


closeConnCmd

public Command closeConnCmd
Kommando zum schliessen der Verbindung (Server horcht weiter)


stopServerCmd

public Command stopServerCmd
Kommando zum beenden des Serverdienstes auf localhost

Constructor Detail

CmdInterpreter

public CmdInterpreter(int port,
                      int timeOutMinutes)
Erzeugt den Telnet-Server

Parameters:
port - der Port auf dem der Server horcht
timeOutMinutes - Timeout für eine Socket-Verbindung

CmdInterpreter

public CmdInterpreter(int port,
                      int timeOutMinutes,
                      CmdMenu root)
Erzeugt den Telnet-Server

Parameters:
port - Port auf dem der Server horcht
root - das Hauptmenü
timeOutMinutes - Timeout für eine Socket-Verbindung

CmdInterpreter

public CmdInterpreter(int port,
                      int timeOutMinutes,
                      boolean showHidden)
Erzeugt den Telnet-Server

Parameters:
port - Port auf dem der Server horcht
timeOutMinutes - Timeout für eine Socket-Verbindung
showHidden - true falls zusätzliche Kommandos angezeigt werden sollen
Method Detail

run

public void run()
Specified by:
run in interface java.lang.Runnable
Overrides:
run in class java.lang.Thread
See Also:
Runnable.run()

processConnections

private void processConnections()
                         throws java.net.UnknownHostException,
                                java.io.IOException
Warten auf Verbindung, Menü in Loop anzeigen, Verbindung schliessen

Throws:
java.io.IOException
java.net.UnknownHostException

waitForConnection

private boolean waitForConnection()
                           throws java.io.IOException
Socket-Verbindung (Telnet) akzeptieren und Timeout setzen.

Returns:
true, wenn die Verbindung akzeptiert wurde.
Throws:
java.io.IOException

menuLoop

public void menuLoop()
Menü anzeigen, Navigation durchführen, Kommandos ausführen


getUserInput

private java.lang.String getUserInput()
                               throws java.lang.Exception
Benutzereingabe vom In-Stream lesen und z.B. an menuLoop() zurückgeben, Abbruch bei Überschreitung des Server-Timeout

Returns:
Benutzereingabe
Throws:
java.lang.Exception

getHelp

private java.lang.String getHelp(java.lang.String ind)
Hilfe für Menüeintrag zurückgeben

Parameters:
ind - Index des Menüeintrags (Submenü oder Kommando)
Returns:
Hilfetext

showMenu

private void showMenu()
               throws java.lang.Exception
Aktuelles Menü darstellen

Throws:
java.lang.Exception

println

public void println(java.lang.String str)
             throws java.lang.Exception
Einen Text in den Out-Stream (z.B. via Telnet) ausgeben

Parameters:
str - der darzustellende String
Throws:
java.lang.Exception

setMenu

public void setMenu(CmdMenu root)
Menü für den Interpreter setzen (falls noch nicht geschehen)

Parameters:
root - das Menü

stopServerCmd

public void stopServerCmd()
                   throws java.io.IOException
Beendet den Telnet-Servers. Schliesst die Verbindung.

Throws:
java.io.IOException