sota.ast.util
Class ASTManager

java.lang.Object
  extended by sota.ast.util.ASTManager

public class ASTManager
extends java.lang.Object

Verwaltet das Projekt und bietet Zugriff auf die wichtigsten UseCases; ist damit zentrale Klasse zur Verwaltung und Manipulation des gesamten AST. Biete Zugriff auf folgende UseCases:
- Erstellung des AST über einen ASTBuilder
- statische Analyse des Quellcodes
- Instrumentation des Quellcodes
- Programmkompilation und -ausführung
- Einlesen der Logdateien, inkl. Verarbeitung der Testdaten
- Applikation der Überdeckungsdaten auf den AST und Berechnung der Überdeckungsmaße
- Erstellung einer Reportdatei

Verwaltet:
- die Projektkonfiguration
- alle Daten des Abstrakten Syntaxbaum
- die Testdaten
- die Listener des Projekts


Nested Class Summary
 class ASTManager.ASTLogReader
          Klasse zum Einlesen von Logdateien als Thread mit ProgressMonitor.
 class ASTManager.FileParser
          Führt das Parsen des Projektes als Thread mit Progressmonitor durch.
 
Field Summary
private  java.util.Vector<sota.lang.java.ast.util.ProjectChangeListener> changeListeners
           
private  sota.ast.util.ProjectConfig config
           
private  sota.ast.nodes.FileNode currFileNode
           
private  boolean[] flag
           
private  java.util.Vector<sota.lang.java.ast.util.GuiUpdateListener> guiUpdateListeners
           
private  java.util.List<sota.ast.nodes.ASTNode> listOfNodes
           
private  java.util.Vector<sota.gui.provider.IProjectTreeView> projectTreeViews
           
private  java.util.TreeSet<sota.ast.nodes.ASTClassNode> setOfClassNodes
           
private  java.util.TreeSet<sota.ast.nodes.FileNode> setOfFileNodes
           
private  java.util.TreeSet<sota.ast.nodes.ASTFunctionNode> setOfFunctionNodes
           
private  java.util.TreeSet<sota.ast.nodes.ASTClassNode> setOfTopLevelClassNodes
           
private  java.util.TreeSet<sota.ast.nodes.ASTFunctionNode> setOfTopLevelFunctionNodes
           
private  boolean VERBOSE
           
 
Constructor Summary
ASTManager()
          Der Konstruktor, der einene ASTManager mit einer neuen Konfiguration erstellt.
ASTManager(sota.ast.util.ProjectConfig c)
          Der Konstruktor, der den ASTManager anhand einer Konfiguration erstellt.
 
Method Summary
 sota.ast.util.ProjectConfig addFile(java.lang.String s)
          Fügt eine Datei in das Projekt hinzu.
 void addFileNode(sota.ast.nodes.FileNode fn)
          Fügt einen neuen Fileknoten in den AST ein.
 void addGuiUpdateListener(sota.lang.java.ast.util.GuiUpdateListener listener)
          Fügt einen GuiUpdateListener hinzu.
 void addInstrumentationScheme(sota.ast.util.IScheme scheme)
          Fügt ein IScheme zu dem Projekt hinzu.
 void addProjectChangeListener(sota.lang.java.ast.util.ProjectChangeListener listener)
          Fügt einen ProjectChangeListener hinzu.
 void addProjectTreeView(sota.gui.provider.IProjectTreeView view)
          Fügt eine ProjectTreeView hinzu.
 void append(sota.ast.nodes.ASTNode n)
          Fügt einen neuen Knoten in den AST ein
 void applyTestCase(sota.ast.util.TestCase t)
          Appliziert einen Testfall auf den AST und ermöglicht dessen Auswertung.
 boolean backupFile(java.lang.String fileName)
          Sichert eine Quelldatei.
 boolean backupProject()
          Sichert die Quelldateien des Projektes.
 org.eclipse.draw2d.graph.DirectedGraph buildCFG(sota.ast.nodes.ASTFunctionNode fn, sota.gui.graph.GraphManager gcm)
          Konstruiert den Kontrollflussgraphen für eine Funktion.
 boolean checkSourceStatus()
          Testet den Quellcodestatus des Projektes.
 boolean compileProject(java.lang.String antBuildFile)
          Startet die Kompilation des Projektes anhand eines Ant-Buildfiles, ohne Progressmonitor (vgl.
 void computeCoverage()
          Berechnet die Überdeckungsmaße für die applizierten Testfälle.
 void fireToGuiUpdateListeners()
          Ruft an allen GuiUpdateListener die Funktion guiUpdate(this) auf.
 void fireToProjectChangeListeners()
          Ruft für alle ProjectChangeListener die Funktion projectChanged(this) auf.
 java.util.List<sota.ast.nodes.ASTNode> getAllNodes()
          Gibt alle Knoten in einer Liste zurück.
 java.util.TreeSet<sota.ast.nodes.ASTClassNode> getClassNodes()
          Gibt TreeSet aller Klassenknoten zurück.
 sota.ast.util.ProjectConfig getConfiguration()
          Gibt die aktuelle Konfiguration zurück.
 java.util.TreeSet<sota.ast.nodes.FileNode> getFileNodes()
          Gibt das TreeSet aller Dateiknoten zurück.
 java.util.TreeSet<sota.ast.nodes.ASTFunctionNode> getFunctionNodes()
          Gibt TreeSet aller Funktionsknoten zurück.
 sota.ast.nodes.ASTNode getLastNode()
          Gibt den letzten Knoten zurück.
 sota.ast.nodes.ASTNode getNodeByID(int id)
          Gibt Knoten nach ID zurück.
 int getParsedSourceStatus()
          Gibt den Status der geparsten Quelldateien zurück.
 sota.ast.util.Metrics getProjectMetrics()
          Gibt die Metrik-Daten des Projektes zurück.
 int getProjectStatus()
          Gibt den akutellen Projektstatus zurück.
 int getSourceStatus()
          Gibt den Status der Quelldateien zurück.
 java.util.TreeSet<sota.ast.nodes.ASTClassNode> getTopLevelClassNodes()
          Gibt TreeSet aller Top-Level-Klassenknoten zurück.
 java.util.TreeSet<sota.ast.nodes.ASTFunctionNode> getTopLevelFunctionNodes()
          Gibt TreeSet aller Top-Level-Funktionsknoten zurück
 boolean instrumentProject()
          Instrumentiert das Projekt nach aktueller Konfiguration.
static boolean isInstrumented(java.lang.String file)
          Teste, ob diese Datei schon instrumentiert ist.
 boolean openProject(java.lang.String file, boolean recover)
          Öffnet das Projekt anhand einer XML-Datei ohne ProgressMonitor (SOTA-ATM).
 boolean openProject(java.lang.String file, org.eclipse.ui.IWorkbenchWindow workbenchWindow, boolean recover)
          Öffnet ein Projekt mit einem ProgressMonitor (GUI).
 boolean openProjectConfiguration(java.lang.String file)
          Liest die Konfiguration des Projektes ein.
 boolean parseProject()
          Parst das Projekt ohne Progressmonitor
 boolean parseProject(org.eclipse.ui.IWorkbenchWindow window)
          Startet das Parsen des Projektes mit einem ProgressMonitor.
 void print()
          Ausgabe der geparsten Dateien
 void printCFG()
          Ausgabe der Kontrollflussgraphen des AST.
 void printConditions()
          Ausgabe der Bedingungen.
 void printFunctions()
          Ausgabe der aller Funktionen im AST.
 void printNodes()
          Ausgabe aller Knoten des AST mit Informationen.
 boolean readLanguageSpecs()
          Liest die Sprachspezifikation der unterstützten Programmiersprachen für SOTA ein.
 boolean readLog(java.util.TreeSet<java.lang.String> set)
          Liest Logfiles mit einem ProgressMonitor ein und verarbeitet diese (SOTA-ATM).
 boolean readLog(java.util.TreeSet<java.lang.String> set, org.eclipse.ui.IWorkbenchWindow window)
          Liest Logfiles mit einem ProgressMonitor ein und verarbeitet diese (GUI).
 void reinit()
          Initialisier den ASTManager neu.
 void reinit(sota.ast.util.ProjectConfig c)
          Initialisiert den ASTManager anhand einer Konfiguration neu.
 void removeFileNode(sota.ast.nodes.FileNode fn)
           
 void removeGuiUpdateListener(sota.lang.java.ast.util.GuiUpdateListener listener)
          Entfernt einen GuiUpdateListener.
 void removeProjectChangeListener(sota.lang.java.ast.util.ProjectChangeListener listener)
          Entfernt einen ProjectChangeListener.
 void removeProjectTreeView(sota.gui.provider.IProjectTreeView view)
          Entfernt eine ProjectTreeView.
 void resetHits()
          Setzt alle applizierten Testdaten zurück.
 boolean restoreFile(java.lang.String fileName)
          Stellt eine originale Quelldatei wieder her.
 boolean restoreProject()
          Stellt die originalen Quelldateien des Projekts wieder her.
 boolean runProject(java.lang.String runScript)
          Startet das Projekt anhand eines Startskripts, ohne Progressmonitor (vgl.
 boolean saveProject()
          Speichert das Projekt in einer XML-Datei.
 void select(java.lang.Object o)
          Wählt an allen ProjectTreeViwes ein Objekt aus und aktualisiert die Darstellung.
 boolean showCoverage()
          Liefert die Information, ob die Überdeckung farblich angezeigt werden soll.
 void showCoverage(boolean b)
          Legt fest, ob die Überdeckung in den Views farblich hervorgehoben werden soll.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

changeListeners

private java.util.Vector<sota.lang.java.ast.util.ProjectChangeListener> changeListeners

config

private sota.ast.util.ProjectConfig config

currFileNode

private sota.ast.nodes.FileNode currFileNode

flag

private boolean[] flag

guiUpdateListeners

private java.util.Vector<sota.lang.java.ast.util.GuiUpdateListener> guiUpdateListeners

listOfNodes

private java.util.List<sota.ast.nodes.ASTNode> listOfNodes

projectTreeViews

private java.util.Vector<sota.gui.provider.IProjectTreeView> projectTreeViews

setOfClassNodes

private java.util.TreeSet<sota.ast.nodes.ASTClassNode> setOfClassNodes

setOfFileNodes

private java.util.TreeSet<sota.ast.nodes.FileNode> setOfFileNodes

setOfFunctionNodes

private java.util.TreeSet<sota.ast.nodes.ASTFunctionNode> setOfFunctionNodes

setOfTopLevelClassNodes

private java.util.TreeSet<sota.ast.nodes.ASTClassNode> setOfTopLevelClassNodes

setOfTopLevelFunctionNodes

private java.util.TreeSet<sota.ast.nodes.ASTFunctionNode> setOfTopLevelFunctionNodes

VERBOSE

private boolean VERBOSE
Constructor Detail

ASTManager

public ASTManager()
Der Konstruktor, der einene ASTManager mit einer neuen Konfiguration erstellt.


ASTManager

public ASTManager(sota.ast.util.ProjectConfig c)
Der Konstruktor, der den ASTManager anhand einer Konfiguration erstellt.

Parameters:
c - die Konfiguration
Method Detail

addFile

public sota.ast.util.ProjectConfig addFile(java.lang.String s)
Fügt eine Datei in das Projekt hinzu.

Parameters:
s - die Datei samt Pfad
Returns:
die Projektkonfiguration

addFileNode

public void addFileNode(sota.ast.nodes.FileNode fn)
Fügt einen neuen Fileknoten in den AST ein.

Parameters:
fn - der FileNode

addGuiUpdateListener

public void addGuiUpdateListener(sota.lang.java.ast.util.GuiUpdateListener listener)
Fügt einen GuiUpdateListener hinzu.

Parameters:
listener - der Listener

addInstrumentationScheme

public void addInstrumentationScheme(sota.ast.util.IScheme scheme)
Fügt ein IScheme zu dem Projekt hinzu.

Parameters:
scheme - das IScheme

addProjectChangeListener

public void addProjectChangeListener(sota.lang.java.ast.util.ProjectChangeListener listener)
Fügt einen ProjectChangeListener hinzu.

Parameters:
listener - der Listener

addProjectTreeView

public void addProjectTreeView(sota.gui.provider.IProjectTreeView view)
Fügt eine ProjectTreeView hinzu.

Parameters:
view - die View

append

public void append(sota.ast.nodes.ASTNode n)
Fügt einen neuen Knoten in den AST ein

Parameters:
n - der ASTNode

applyTestCase

public void applyTestCase(sota.ast.util.TestCase t)
Appliziert einen Testfall auf den AST und ermöglicht dessen Auswertung.

Parameters:
t - der Testfall

backupFile

public boolean backupFile(java.lang.String fileName)
Sichert eine Quelldatei.

Parameters:
fileName - die Datei
Returns:
true, wenn erfolgreich, sonst false

backupProject

public boolean backupProject()
Sichert die Quelldateien des Projektes.

Returns:
true, wenn erfolgreich, sonst false

buildCFG

public org.eclipse.draw2d.graph.DirectedGraph buildCFG(sota.ast.nodes.ASTFunctionNode fn,
                                                       sota.gui.graph.GraphManager gcm)
Konstruiert den Kontrollflussgraphen für eine Funktion.

Parameters:
fn - der Funktionsknoten
gcm - der Graphmanager der CFGView
Returns:
der konstruierte DirectedGraph

checkSourceStatus

public boolean checkSourceStatus()
Testet den Quellcodestatus des Projektes.

Returns:
true, wenn mind. eine Datei instrumentiert ist, sonst false

compileProject

public boolean compileProject(java.lang.String antBuildFile)
Startet die Kompilation des Projektes anhand eines Ant-Buildfiles, ohne Progressmonitor (vgl. ProjectBuilder-Klasse).

Parameters:
antBuildFile - das Ant-BuildFile
Returns:
true, wenn erfolgreich, sonst false

computeCoverage

public void computeCoverage()
Berechnet die Überdeckungsmaße für die applizierten Testfälle.


fireToGuiUpdateListeners

public void fireToGuiUpdateListeners()
Ruft an allen GuiUpdateListener die Funktion guiUpdate(this) auf.


fireToProjectChangeListeners

public void fireToProjectChangeListeners()
Ruft für alle ProjectChangeListener die Funktion projectChanged(this) auf.


getAllNodes

public java.util.List<sota.ast.nodes.ASTNode> getAllNodes()
Gibt alle Knoten in einer Liste zurück.

Returns:
die vollständige Knotenliste

getClassNodes

public java.util.TreeSet<sota.ast.nodes.ASTClassNode> getClassNodes()
Gibt TreeSet aller Klassenknoten zurück.

Returns:
die ASTClassNodes

getConfiguration

public sota.ast.util.ProjectConfig getConfiguration()
Gibt die aktuelle Konfiguration zurück.

Returns:
die Konfiguration

getFileNodes

public java.util.TreeSet<sota.ast.nodes.FileNode> getFileNodes()
Gibt das TreeSet aller Dateiknoten zurück.

Returns:
die FileNodes

getFunctionNodes

public java.util.TreeSet<sota.ast.nodes.ASTFunctionNode> getFunctionNodes()
Gibt TreeSet aller Funktionsknoten zurück.

Returns:
die ASTFunctionNodes

getLastNode

public sota.ast.nodes.ASTNode getLastNode()
Gibt den letzten Knoten zurück.

Returns:
der letzte Knoten

getNodeByID

public sota.ast.nodes.ASTNode getNodeByID(int id)
Gibt Knoten nach ID zurück.

Parameters:
id - die ID
Returns:
der Knoten

getParsedSourceStatus

public int getParsedSourceStatus()
Gibt den Status der geparsten Quelldateien zurück.

Returns:
der Status

getProjectMetrics

public sota.ast.util.Metrics getProjectMetrics()
Gibt die Metrik-Daten des Projektes zurück.

Returns:
die Metriken

getProjectStatus

public int getProjectStatus()
Gibt den akutellen Projektstatus zurück.

Returns:
der Status

getSourceStatus

public int getSourceStatus()
Gibt den Status der Quelldateien zurück.

Returns:
der Status

getTopLevelClassNodes

public java.util.TreeSet<sota.ast.nodes.ASTClassNode> getTopLevelClassNodes()
Gibt TreeSet aller Top-Level-Klassenknoten zurück.

Returns:
die Top-Level-ASTClassNodes

getTopLevelFunctionNodes

public java.util.TreeSet<sota.ast.nodes.ASTFunctionNode> getTopLevelFunctionNodes()
Gibt TreeSet aller Top-Level-Funktionsknoten zurück

Returns:
die Top-Level-ASTFunctionNodes

instrumentProject

public boolean instrumentProject()
Instrumentiert das Projekt nach aktueller Konfiguration.

Returns:
die Konfiguration

isInstrumented

public static boolean isInstrumented(java.lang.String file)
Teste, ob diese Datei schon instrumentiert ist.

Parameters:
file - die Datei
Returns:
true, wenn instrumentiert, sonst false

openProject

public boolean openProject(java.lang.String file,
                           boolean recover)
Öffnet das Projekt anhand einer XML-Datei ohne ProgressMonitor (SOTA-ATM).

Parameters:
file - die XML-Projektdatei
recover - ob die originalen Quelldateien wiederhergestellt werden sollen
Returns:
true, wenn erfolgreich, sonst false

openProject

public boolean openProject(java.lang.String file,
                           org.eclipse.ui.IWorkbenchWindow workbenchWindow,
                           boolean recover)
Öffnet ein Projekt mit einem ProgressMonitor (GUI).

Parameters:
file - die Projektdatei
workbenchWindow - das zugehörige Window
recover - ob die originalen Quelldateien wiederhergestellt werden sollen
Returns:
true, wenn erfolgreich, sonst false

openProjectConfiguration

public boolean openProjectConfiguration(java.lang.String file)
Liest die Konfiguration des Projektes ein.

Parameters:
file - die XML-Projektdatei
Returns:
true, wenn erfolgreich, sonst false

parseProject

public boolean parseProject()
Parst das Projekt ohne Progressmonitor

Returns:
true, wenn erfolgreich,sonst false

parseProject

public boolean parseProject(org.eclipse.ui.IWorkbenchWindow window)
Startet das Parsen des Projektes mit einem ProgressMonitor.

Parameters:
window - IWorkbenchWindow für den ProgressMonitor oder null, wenn ohne GUI gestartet (SOTA-ATM)
Returns:
die ProjektKonfiguration

print

public void print()
Ausgabe der geparsten Dateien


printCFG

public void printCFG()
Ausgabe der Kontrollflussgraphen des AST.


printConditions

public void printConditions()
Ausgabe der Bedingungen.


printFunctions

public void printFunctions()
Ausgabe der aller Funktionen im AST.


printNodes

public void printNodes()
Ausgabe aller Knoten des AST mit Informationen.


readLanguageSpecs

public boolean readLanguageSpecs()
Liest die Sprachspezifikation der unterstützten Programmiersprachen für SOTA ein.

Returns:
true, wenn erfolgreich, sonst false

readLog

public boolean readLog(java.util.TreeSet<java.lang.String> set)
Liest Logfiles mit einem ProgressMonitor ein und verarbeitet diese (SOTA-ATM).

Parameters:
set - die Menge der Logdateien
Returns:
true, wenn erfolgreich, sonst false

readLog

public boolean readLog(java.util.TreeSet<java.lang.String> set,
                       org.eclipse.ui.IWorkbenchWindow window)
Liest Logfiles mit einem ProgressMonitor ein und verarbeitet diese (GUI).

Parameters:
set - die Menge der Logdateien
window - das aktuelle Window
Returns:
true, wenn erfolgreich, sonst false

reinit

public void reinit()
Initialisier den ASTManager neu.


reinit

public void reinit(sota.ast.util.ProjectConfig c)
Initialisiert den ASTManager anhand einer Konfiguration neu.

Parameters:
c - die Konfiguration

removeFileNode

public void removeFileNode(sota.ast.nodes.FileNode fn)
Parameters:
fn -

removeGuiUpdateListener

public void removeGuiUpdateListener(sota.lang.java.ast.util.GuiUpdateListener listener)
Entfernt einen GuiUpdateListener.

Parameters:
listener - der Listener

removeProjectChangeListener

public void removeProjectChangeListener(sota.lang.java.ast.util.ProjectChangeListener listener)
Entfernt einen ProjectChangeListener.

Parameters:
listener - der Listener

removeProjectTreeView

public void removeProjectTreeView(sota.gui.provider.IProjectTreeView view)
Entfernt eine ProjectTreeView.

Parameters:
view - die View

resetHits

public void resetHits()
Setzt alle applizierten Testdaten zurück.


restoreFile

public boolean restoreFile(java.lang.String fileName)
Stellt eine originale Quelldatei wieder her.

Parameters:
fileName - die Datei
Returns:
true, wenn erfolgreich, sonst false

restoreProject

public boolean restoreProject()
Stellt die originalen Quelldateien des Projekts wieder her.

Returns:
true, wenn erfolgreich, sonst false

runProject

public boolean runProject(java.lang.String runScript)
Startet das Projekt anhand eines Startskripts, ohne Progressmonitor (vgl. ProjectRunner-Klasse).

Parameters:
runScript - das Startskript
Returns:
true, wenn erfolgreich, sonst false

saveProject

public boolean saveProject()
Speichert das Projekt in einer XML-Datei.

Returns:
true, wenn erfolgreich, sonst false

select

public void select(java.lang.Object o)
Wählt an allen ProjectTreeViwes ein Objekt aus und aktualisiert die Darstellung.

Parameters:
o - das Objekt

showCoverage

public boolean showCoverage()
Liefert die Information, ob die Überdeckung farblich angezeigt werden soll.

Returns:
true, wenn ja, sonst false

showCoverage

public void showCoverage(boolean b)
Legt fest, ob die Überdeckung in den Views farblich hervorgehoben werden soll.

Parameters:
b - true, wenn ja, sonst false