de.bsvrz.pua.prot.manager.datamanager
Class DataManager

java.lang.Object
  extended by java.lang.Thread
      extended by de.bsvrz.pua.prot.manager.datamanager.DataManager
All Implemented Interfaces:
DataManagerInterface, java.lang.Runnable

public class DataManager
extends java.lang.Thread
implements DataManagerInterface

Submodul Daten Manager.
1. Übernimmt die Verwaltung von Dateisystem-Operationen:
- Schreiben von Protokollen
- Herausfinden, ob eine bestimmte Protokoll-Id bereits vergeben wurde
- Lesen und Schreiben von Skriptquelltexten
2. Zugriff auf die Konfiguration zur Verwaltung von Skript-Quelltexten
3. Zugriff auf den Skript-Interpreter
Geht eine Anfrage über die Methoden addProtocolRequest(ResultData[]) oder addScriptRequest(ResultData[]) ein, so wird diese Anfrage in einem Ringpuffer abgelegt. Ist der Thread unbeschäftigt, werden sie der Reihe nach (FIFO) abgearbeitet.

Version:
$Revision: 1.2 $ / $Date: 2008/01/22 16:55:50 $ / ($Author: yvonnes $)
Author:
beck et al. projects GmbH, Martin Hilgers

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
DataManager(ClientDavInterface dav, java.lang.String path, int quota, boolean prettyPrinter)
          Erzeugen des Data Managers.
 
Method Summary
 void addProtocolRequest(ResultData[] resultData)
          Übergeben einer Protokoll-bezogenen Anfrage.
 void addScriptRequest(ResultData[] resultData)
          Übergeben einer Skript-bezogenen Anfrage.
 void addScriptRequest(ScriptRequest request)
          Übergeben einer Skript-bezogenen Anfrage
 ProtocolOutputStream createProtocolStream(long protocolId, ProcessingParameter pp)
          Erzeugt einen Ausgabestream für ein Protokoll.
 void deleteProtocol(long protocolId)
          Löscht ein gespeichertes Protokoll.
 java.lang.String getAbsolutFileNameMeta(SystemObject script)
          Liefert Pfad und Dateiname der Metainformation
 java.lang.String getAbsolutFileNameSource(SystemObject script)
          Liefert Pfad und Dateiname des Skriptquelltextes
 java.lang.String getFileNameMeta(SystemObject script)
          Liefert den Dateinamen der Metainformationen.
 java.lang.String getFileNameSource(SystemObject script)
          Liefert den Dateinamen des Skriptquelltexts.
 AtlMeta getMetaInformation(SystemObject script)
          Liefert die zum Skript gehörenden Metainformationen.
 java.lang.String getPath()
          Gibt den Pfad der Protokoll- und Skriptdateien zurück.
 ProtocolInputStream getSavedProtocol(long protocolId)
          Liefert ein Objekt zum Zugriff auf ein gespeichertes Protokoll zurück.
 ProtocolInputStream getUnreadProtocol(long protocolId)
          Liefert ein Objekt zum Zugriff auf ein gespeichertes Protokoll zurück.
 DataManagerRequest[] getUpcomingOps(DataManagerRequest[] dmr)
          Liefert eine Liste mit anstehenden Aufgaben.
 boolean isUnique(long protocolId)
          Überprüft ob es zu der gegebenen Protokoll-Id bereits ein gespeichertes Protokoll gibt.
 ProcessingInformation process(ProcessingParameter parameter)
          Startet die Interpretation eines Skriptes:
1.
 ProcessingInformation process(java.lang.String source)
          Startet die Interpretation eines Skriptes.
 void run()
          Arbeitet die Aufträge ab.
 void shutdown()
          Fährt den Data-Manager herunter.
 
Methods inherited from class java.lang.Thread
activeCount, checkAccess, 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
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Constructor Detail

DataManager

public DataManager(ClientDavInterface dav,
                   java.lang.String path,
                   int quota,
                   boolean prettyPrinter)
            throws FailureException
Erzeugen des Data Managers. Nach dem Erzeugen des Data Manager Objekts muss der Data Manager mit Thread.start() gestartet werden.

Parameters:
dav - Verbindung zum Datenverteiler
path - Pfad unter dem die Dateien (Skriptquelltexte und Protokolldateien) verwaltet werden.
quota - Minimaler verbleibender Speicherplatz auf dem Datenträgern (in MB)
prettyPrinter - Steuert ob der Pretty Printer verwendet werden soll.
Throws:
FailureException - Falls ein ungültiger Pfad übergeben wird.
Method Detail

process

public ProcessingInformation process(ProcessingParameter parameter)
                              throws FailureException
Startet die Interpretation eines Skriptes:
1. Holt den Dateinamen des Skripts aus der Konfiguration
2. Erzeugen eines Skript-Interpreters und evaluieren des Skripts
3. Information zurückgeben

Specified by:
process in interface DataManagerInterface
Parameters:
parameter - Auftragsparameter
Returns:
Aus dem Skript gewonnene Informationen
Throws:
FailureException - Fehler beim Interpretieren des Skripts.

getMetaInformation

public AtlMeta getMetaInformation(SystemObject script)
                           throws FailureException
Description copied from interface: DataManagerInterface
Liefert die zum Skript gehörenden Metainformationen. Dazu werden die auf der Festplatte gespeicherten Informationen eingelesen. Überprüft zudem die Prüfsumme.

Specified by:
getMetaInformation in interface DataManagerInterface
Parameters:
script - Skriptobjekt.
Returns:
Metainformationen oder null falls keine Metainformation existiert.
Throws:
FailureException - Korrupte Metainformation.
See Also:
DataManagerInterface.getMetaInformation(SystemObject)

run

public void run()
Arbeitet die Aufträge ab. Sind alle Aufträge erledigt, wartet der Thread, bis neue Aufträge eingehen. Vor beenden des Threads werden alle Schreiboperattionen abgebrochen.

Specified by:
run in interface java.lang.Runnable
Overrides:
run in class java.lang.Thread

isUnique

public boolean isUnique(long protocolId)
Überprüft ob es zu der gegebenen Protokoll-Id bereits ein gespeichertes Protokoll gibt. Wenn nicht, dann ist die Protokoll-Id eindeutig.

Specified by:
isUnique in interface DataManagerInterface
Parameters:
protocolId - Protokoll-Id
Returns:
true falls die protokoll-Id bereits verwendet wurde und das Protokoll auf dem Datenträger gespeichert wurde, false sonst.

addScriptRequest

public void addScriptRequest(ResultData[] resultData)
Übergeben einer Skript-bezogenen Anfrage.

Specified by:
addScriptRequest in interface DataManagerInterface
Parameters:
resultData - Objekt mit den Anfrageparametern

getPath

public java.lang.String getPath()
Description copied from interface: DataManagerInterface
Gibt den Pfad der Protokoll- und Skriptdateien zurück. Endet mit File.separator

Specified by:
getPath in interface DataManagerInterface
Returns:
Pfad der Protokoll- und Skriptdateien.
See Also:
DataManagerInterface.getPath()

process

public ProcessingInformation process(java.lang.String source)
                              throws CriticalParserException
Description copied from interface: DataManagerInterface
Startet die Interpretation eines Skriptes. Dabei werden dem Interpreter keine Aufrufparameter übergeben. Daher können die Daten, die zurückgegeben werden, nicht von der Datenaufbereitung verwendet werden.

Specified by:
process in interface DataManagerInterface
Parameters:
source - Source des Skriptobjekts
Returns:
Aus dem Skript gewonnene Informationen
Throws:
CriticalParserException - Fehlermeldung
See Also:
DataManagerInterface.process(java.lang.String)

addProtocolRequest

public void addProtocolRequest(ResultData[] resultData)
Übergeben einer Protokoll-bezogenen Anfrage.

Specified by:
addProtocolRequest in interface DataManagerInterface
Parameters:
resultData - Objekt mit den Anfrageparametern

getFileNameSource

public java.lang.String getFileNameSource(SystemObject script)
Description copied from interface: DataManagerInterface
Liefert den Dateinamen des Skriptquelltexts.

Specified by:
getFileNameSource in interface DataManagerInterface
Parameters:
script - Skriptobjekt
Returns:
Dateiname
See Also:
DataManagerInterface.getFileNameSource(SystemObject)

getFileNameMeta

public java.lang.String getFileNameMeta(SystemObject script)
Description copied from interface: DataManagerInterface
Liefert den Dateinamen der Metainformationen.

Specified by:
getFileNameMeta in interface DataManagerInterface
Parameters:
script - Skriptobjekt
Returns:
Dateiname
See Also:
DataManagerInterface.getFileNameMeta(SystemObject)

getAbsolutFileNameMeta

public java.lang.String getAbsolutFileNameMeta(SystemObject script)
Description copied from interface: DataManagerInterface
Liefert Pfad und Dateiname der Metainformation

Specified by:
getAbsolutFileNameMeta in interface DataManagerInterface
Parameters:
script - Skriptobjekt
Returns:
Pfad und Dateiname
See Also:
DataManagerInterface.getAbsolutFileNameMeta(SystemObject)

getAbsolutFileNameSource

public java.lang.String getAbsolutFileNameSource(SystemObject script)
Description copied from interface: DataManagerInterface
Liefert Pfad und Dateiname des Skriptquelltextes

Specified by:
getAbsolutFileNameSource in interface DataManagerInterface
Parameters:
script - Skriptobjekt
Returns:
Pfad und Dateiname
See Also:
DataManagerInterface.getAbsolutFileNameSource(SystemObject)

addScriptRequest

public void addScriptRequest(ScriptRequest request)
Description copied from interface: DataManagerInterface
Übergeben einer Skript-bezogenen Anfrage

Specified by:
addScriptRequest in interface DataManagerInterface
Parameters:
request - Anfrage
See Also:
DataManagerInterface.addScriptRequest(de.bsvrz.pua.prot.manager.requests.ScriptRequest)

shutdown

public void shutdown()
Description copied from interface: DataManagerInterface
Fährt den Data-Manager herunter.

Specified by:
shutdown in interface DataManagerInterface
See Also:
DataManagerInterface.shutdown()

deleteProtocol

public void deleteProtocol(long protocolId)
                    throws NoncriticalException
Description copied from interface: DataManagerInterface
Löscht ein gespeichertes Protokoll.

Specified by:
deleteProtocol in interface DataManagerInterface
Throws:
NoncriticalException - Fehler beim Löschen.
See Also:
DataManagerInterface.deleteProtocol(long)

getSavedProtocol

public ProtocolInputStream getSavedProtocol(long protocolId)
                                     throws FailureException
Description copied from interface: DataManagerInterface
Liefert ein Objekt zum Zugriff auf ein gespeichertes Protokoll zurück.

Specified by:
getSavedProtocol in interface DataManagerInterface
Parameters:
protocolId - Id des Protokolls, das gelesen werden soll.
Returns:
Objekt zum Zugriff auf das gespeicherte Protokoll
Throws:
FailureException - Fehler.
See Also:
DataManagerInterface.getSavedProtocol(long)

getUnreadProtocol

public ProtocolInputStream getUnreadProtocol(long protocolId)
                                      throws FailureException
Description copied from interface: DataManagerInterface
Liefert ein Objekt zum Zugriff auf ein gespeichertes Protokoll zurück.

Specified by:
getUnreadProtocol in interface DataManagerInterface
Parameters:
protocolId - Id des Protokolls, das gelesen werden soll.
Returns:
Objekt zum Zugriff auf das gespeicherte Protokoll.
Throws:
FailureException - Fehler.
See Also:
DataManagerInterface.getUnreadProtocol(long)

createProtocolStream

public ProtocolOutputStream createProtocolStream(long protocolId,
                                                 ProcessingParameter pp)
                                          throws NoncriticalException
Description copied from interface: DataManagerInterface
Erzeugt einen Ausgabestream für ein Protokoll.

Specified by:
createProtocolStream in interface DataManagerInterface
Parameters:
protocolId - Protokoll-Id.
pp - Auftragsparameter.
Returns:
Stream zum schreiben des Protokolls.
Throws:
NoncriticalException - Die Datei kann nicht angelegt werden; Fehler beim Schreiben der Protokollinformationen.
See Also:
DataManagerInterface.createProtocolStream(long, de.bsvrz.pua.prot.util.ProcessingParameter)

getUpcomingOps

public DataManagerRequest[] getUpcomingOps(DataManagerRequest[] dmr)
Description copied from interface: DataManagerInterface
Liefert eine Liste mit anstehenden Aufgaben.

Specified by:
getUpcomingOps in interface DataManagerInterface
Parameters:
dmr - Array, in den das Ergebnis kopiert wird. Ist der Array zu klein, so wird ein neuer Array angelegt.
Returns:
Anstehende Aufgaben.
See Also:
DataManagerInterface.getUpcomingOps(DataManagerRequest[])


Copyright © 2005-2008 beck et al. projects GmbH All Rights Reserved.