operators
Class OperatorDB

java.lang.Object
  |
  +--dataanalysis.databases.GenericDatabase
        |
        +--operators.OperatorDB

public class OperatorDB
extends GenericDatabase

Diese Datenbank beinhaltet Beispiel-Operatoren, der Operatoren, die der Agent kennt. Die Operatortypen werden aufgrund einer ID unterschieden, die innerhalb der Datenbank eindeutig ist. Die IDs werden von der Datenbank fortlaufend vergeben. Der Shellbenutzer muss selbstst?ndig darauf achten, dass er nicht ungewollt zweimal denselben Operator in der Datenbank speichert, da die Gleichheit von Operatoren auf der Gleichheit ihrer ID definiert ist. Die OperatorDB muss vor dem ersten Lauf des Agenten mit Operatoren gef?llt werden, damit der Agent weiss, welche Operatoren ihm zur Verf?gung stehen. Wenn ein neuer Operator von der Datenbank verlangt wird, so bekommt der Benutzer der Datenbank einen Klon des Beispieloperators.

Version:
1.8
Author:
Nils Malzahn
See Also:
Operator, Serialized Form

Field Summary
protected  Concept classifierPrecondConcept
          Diese Variable beschreibt das Standardkonzept mit dem die ClassifierOperator in der Vorbedingung initialisiert werden sollen.
private  long nextID
          gibt die n?chste noch vergebene eindeutige ID.
(package private)  boolean onlySpecialized
          Dieses Flag gibt an, ob für alle Zwischenkonzepte zwischen classifierPrecondConcept und den Blättern der tBox ClassifierOperatoren erzeugt werden sollen oder nur zu den speziellsten Unterkonzepten.
protected  java.util.TreeMap postcondPredMap
          in diesem Attribut werden die Operatoren den Pr?dikaten zugeordnet, so dass danach gefragt werden kann, welche Operatoren das Pr?dikat p in einer Nachbedingung in einer AddList enthalten.
protected  java.util.TreeMap precondPredMap
          in diesem Attribut werden die Operatoren den Pr?dikaten zugeordnet, so dass danach gefragt werden kann, welche Operatoren das Pr?dikat p in der Vorbedingung enthalten.
protected static java.lang.String standardConceptName
          Name des standardm?ssigen Oberkonzepts f?r automatisch erzeugte ClassifierOperator.
protected  T_Box tBox
          in diesem Attribut ist die T_Box gespeichert f?r die die ClassifierOperator erzeugt werden.
protected  java.util.TreeMap weightMap
          die nach ihrem Gewicht geordneteten Operatoren.
 
Fields inherited from class dataanalysis.databases.GenericDatabase
elements, nameNumberTranslation
 
Constructor Summary
protected OperatorDB()
          Der Konstruktor initialisiert die weightMap, die precondPredMap und die postcondPredMap mit neuen TreeMaps.
Die weightMap wird dabei mit einem OperatorWeightComparator initialisiert.

  OperatorDB(java.lang.String s, T_Box tBox, Concept c, boolean b)
          Dieser Konstruktor f?llt nach der der Initialisierung der Datenbank wie in OperatorDB() die Datenbank mit den, in der Datei, dessen Name (kompletter Pfad) ?bergeben wurde.
Die Datei muss zeilenweise wechselnd die Klassennamen und das Gewicht der Operatoren enthalten.

  OperatorDB(T_Box tBox, Concept c, boolean b)
          Mit diesem Konstruktor ist es m?glich das Concept f?r die automatisch generierten ClassifierOperator zu setzen.
 
Method Summary
 long addOperator(Operator newOp)
          Diese Methode f?gt einen Operator zu de DB hinzu.
private  void addOperatorPostcond(Operator newOp)
          Diese Methode dient nur der ?bersichlichen Gliederung der Methode addOperator.
private  void addOperatorPrecond(Operator newOp)
          Diese Methode dient nur der ?bersichlichen Gliederung der Methode addOperatorClass.
private  void addOperatorWeight(Operator newOp)
          Diese Methode f?gt einen Operator in die WeightMap ein.
 Operator deleteOperator(long id)
          Diese Methode l?scht einen Operator aus der DB anhand der ID.
protected  void generateAllClassifierOperators()
          Diese Methode generiert aus der tBox automatisch alle ClassifierOperator zu allen Konzepten, die in der tBox enthalten sind.
 java.util.ListIterator getAllOperators4PostcondPred(Predicate p)
           
 java.util.ListIterator getAllOperators4PrecondPred(Predicate p)
           
 java.util.ListIterator getBestOperators()
          Diese Methode gibt Klone aller Operatoren, die in dieser Datenbank enthalten sind zur?ck.
 java.util.ListIterator getBestOperators(long mask)
          Diese Methode gibt Klone aller Operatoren, die in dieser Datenbank enthalten sind zur?ck.
 java.util.LinkedList getBestOperatorsAsList()
          Diese Methode gibt Klone aller Operatoren, die in dieser Datenbank enthalten sind zur?ck.
 Operator getNewOperator(long id)
          Diese Methode gibt einen neuen Operator zur?ck, der von demselben Typ wie der Operator der ?bergebenen opID ist.
 Operator getOperator(long id)
          Diese Methode gibt den Operator zur?ck, dessen ID ?bergeben wurde.
 java.util.ListIterator getSelectedOperators4PostcondPred(Predicate p, long mask)
           
 java.util.ListIterator getSelectedOperators4PrecondPred(Predicate p, long mask)
           
protected  void initializePredicate(Predicate pred)
          Diese Methode weist den {knowledge.Concept Konzepten} im uübergebenen Prüdikat die passende Konzeptreferenz aus der T_Box zu.
protected  void operatorInitialization(Operator op)
          Diese Methode initialisiert einen Operator aufgrund seiner Signatur.
 java.lang.String toString()
          Diese Methode gibt einen String zur?ck, der den Zustand des Objekts repr?sentiert.
 void toTextFile(java.lang.String s)
          Diese Methode gibt die OperatorenKlassen in ein Textfile aus.
 void updateWeightMap(double newWeight, Operator op)
          Die Methode 'updateWeightMap' korrigiert den Fehler, der in der weightMap entsteht, wenn das Gewicht eines Operators durch z.B.
 
Methods inherited from class dataanalysis.databases.GenericDatabase
add, clearAll, count, delete, gdGet, gdGet, gdNameOf, gdNumberOf, last, nameOf, numberOf, optimize
 
Methods inherited from class java.lang.Object
, clone, equals, finalize, getClass, hashCode, notify, notifyAll, registerNatives, wait, wait, wait
 

Field Detail

nextID

private long nextID
gibt die n?chste noch vergebene eindeutige ID.
Since:
1.0

weightMap

protected java.util.TreeMap weightMap
die nach ihrem Gewicht geordneteten Operatoren.
Since:
1.1

precondPredMap

protected java.util.TreeMap precondPredMap
in diesem Attribut werden die Operatoren den Pr?dikaten zugeordnet, so dass danach gefragt werden kann, welche Operatoren das Pr?dikat p in der Vorbedingung enthalten.
Since:
1.1

postcondPredMap

protected java.util.TreeMap postcondPredMap
in diesem Attribut werden die Operatoren den Pr?dikaten zugeordnet, so dass danach gefragt werden kann, welche Operatoren das Pr?dikat p in einer Nachbedingung in einer AddList enthalten.
Since:
1.1

tBox

protected T_Box tBox
in diesem Attribut ist die T_Box gespeichert f?r die die ClassifierOperator erzeugt werden.
Since:
1.4

standardConceptName

protected static final java.lang.String standardConceptName
Name des standardm?ssigen Oberkonzepts f?r automatisch erzeugte ClassifierOperator. Der Wert dieser Konstante ist "URL".
Since:
1.5

classifierPrecondConcept

protected Concept classifierPrecondConcept
Diese Variable beschreibt das Standardkonzept mit dem die ClassifierOperator in der Vorbedingung initialisiert werden sollen.
See Also:
T_Box, Concept
Since:
1.4

onlySpecialized

boolean onlySpecialized
Dieses Flag gibt an, ob für alle Zwischenkonzepte zwischen classifierPrecondConcept und den Blättern der tBox ClassifierOperatoren erzeugt werden sollen oder nur zu den speziellsten Unterkonzepten. True nur die speziellsten ClassifierOperatoren werden erzeugt. False alle ClassifierOperatoren werden erzeugt.
Since:
1.8
Constructor Detail

OperatorDB

protected OperatorDB()
Der Konstruktor initialisiert die weightMap, die precondPredMap und die postcondPredMap mit neuen TreeMaps.
Die weightMap wird dabei mit einem OperatorWeightComparator initialisiert.
Since:
1.0
See Also:
OperatorWeightComparator


OperatorDB

public OperatorDB(T_Box tBox,
                  Concept c,
                  boolean b)
Mit diesem Konstruktor ist es m?glich das Concept f?r die automatisch generierten ClassifierOperator zu setzen.
Parameters:
tBox - die T-Box, zu deren Konzepten ClassifierOperator erzeugt werden sollen.
c - Das Konzept, das in die ClassifierOperator -Vorbedingung eingesetzt wird.
b - setzt onlySpecialized
Since:
1.8

OperatorDB

public OperatorDB(java.lang.String s,
                  T_Box tBox,
                  Concept c,
                  boolean b)
           throws java.io.FileNotFoundException,
                  java.io.IOException
Dieser Konstruktor f?llt nach der der Initialisierung der Datenbank wie in OperatorDB() die Datenbank mit den, in der Datei, dessen Name (kompletter Pfad) ?bergeben wurde.
Die Datei muss zeilenweise wechselnd die Klassennamen und das Gewicht der Operatoren enthalten. Die ID, die der Operator beim Einf?gen erh?lt ist dabei abh?ngig von der Position in der Datei. Der Operator in der ersten Zeile bekommt die niedrigste Nummer usw.

Beispiel:
Die OperatorKlasse PrintlnOperator aus dem Paket operators soll mit einem Gewicht von 3.0 unter Benutzung einer Datei in die Datenbank gelangen. Dann muessen in der Datei, deren Name ?bergeben wurde folgende Zeilen stehen:
operators.PrintlnOperator
3.0

wenn der Classpath das Verzeichnis enth?lt, indem das Paket operators steht.

Zu beachten ist, dass diese Datei nat?rlich keine CompoundOperatoren enthalten sollte, da diese keine eigenen Subklassen bilden, sondern eben nur Instanzen der Klasse CompoundOperatoren sind. Diese Objekten k?nnen nur in einem Stream gespeichert werden, nachdem sie zur Laufzeit des Agenten erzeugt wurden. Danach werden zu allen Konzepten der ?bergebenen tBox ClassifierOperatoren erzeugt.

Parameters:
s - der Name der Datei aus der die OperatorKlassen gelesen werden.
tBox - die T-Box zu deren Konzepten die ClassifierOperatoren erzeugt werden.
c - Das Konzept, das in die ClassifierOperator -Vorbedingung eingesetzt wird.
b - setzt onlySpecialized
Throws:
java.io.FileNotFoundException - wird geworfen, wenn der ?bergebene String zu keiner Datei f?hrt.
java.io.IOException - wird bei einem I/O-Fehler geworfen.
Since:
Version 1.8





Method Detail

initializePredicate

protected void initializePredicate(Predicate pred)
Diese Methode weist den {knowledge.Concept Konzepten} im uübergebenen Prüdikat die passende Konzeptreferenz aus der T_Box zu.
Parameters:
pred - das Prüdikat, dem die passende Referenz zugewiesen werden soll.
Since:
1.7

operatorInitialization

protected void operatorInitialization(Operator op)
Diese Methode initialisiert einen Operator aufgrund seiner Signatur. Konkret bedeutet dies, dass die Concept die in den PredArgument in den Predicates auftauchen mit Referenzen auf die T-Box-Konzepte versehen werden.
Parameters:
op - Operator der initialisiert werden soll.
Since:
1.6

getOperator

public Operator getOperator(long id)
                     throws OperatorNotFoundException
Diese Methode gibt den Operator zur?ck, dessen ID ?bergeben wurde. Es handelt sich dabei um den Beispiel-Operator, der in der Datenbank gespeichert hat. Das bedeutet ?nderungen an dem zr?ckgegeben Operator wirken sich auf alle zuk?nftig instantiierte Operatoren aus.
Parameters:
id - ID desOperators, der zur?ckgegeben werden soll.
Returns:
Operator dessen ID ?bergeben wurde.
Throws:
OperatorNotFoundException - Diese Exception wirdausgel?st, wenn der Operator zu der ?bergebenen ID nicht existiert.
Since:
1.0
See Also:
Operator

getNewOperator

public Operator getNewOperator(long id)
                        throws OperatorNotFoundException
Diese Methode gibt einen neuen Operator zur?ck, der von demselben Typ wie der Operator der ?bergebenen opID ist.
Parameters:
id - die Nummer des Operators, von dessen Klasse ein neuer Operator zur?ckgegeben werden soll.
Returns:
einen neuen Operator von der Klasse des Operators der ?bergebenen id mir derselben ID.

Sollte der Operator mit der ?begebenen ID nicht Cloneable sein, dann wird null zur?ckgegeben.

Since:
Version 1.2


getAllOperators4PrecondPred

public java.util.ListIterator getAllOperators4PrecondPred(Predicate p)
Parameters:
p - das Pr?dikat zu dem alle Operatoren deren Vorbedingungen dieses Pr?dikat enthalten gesucht werden sollen.
Returns:
einen ListIterator ?ber alle gesuchten Operatoren. Es handelt sich dabei nicht um Klone der Operatoren in der OperatorDB!
Since:
Version 1.1

getSelectedOperators4PrecondPred

public java.util.ListIterator getSelectedOperators4PrecondPred(Predicate p,
                                                               long mask)
Parameters:
p - das Pr?dikat zu dem alle Operatoren deren Vorbedingungen dieses Pr?dikat enthalten gesucht werden sollen.
mask - die Auswahlmaske der Operatoren, die sich aus der Summe der gewünschten {operators.Operator#opType OperatorTypen} zusammensetzt.
Returns:
einen ListIterator ?ber Klone der gesuchten Operatoren.
Since:
Version 1.7

getAllOperators4PostcondPred

public java.util.ListIterator getAllOperators4PostcondPred(Predicate p)
Parameters:
p - das Pr?dikat zu dem alle Operatoren, deren Nachbedingungen dieses Pr?dikat in einer Add-List enthalten, gesucht werden sollen.

So kann z.B. gezielt nach Operatoren gesucht werden, die ein bestimmtes Pr?dikat hinzuf?gen k?nnen, ohne gleich alle Operatoren durchprobieren zu m?ssen.

Returns:
einen ListIterator ?ber alle gesuchten Operatoren. Es handelt sich dabei nicht um Klone der Operatoren in der OperatorDB!
Since:
Version 1.1


getSelectedOperators4PostcondPred

public java.util.ListIterator getSelectedOperators4PostcondPred(Predicate p,
                                                                long mask)
Parameters:
p - das Pr?dikat zu dem alle Operatoren, deren Nachbedingungen dieses Pr?dikat in einer Add-List enthalten, gesucht werden sollen.

So kann z.B. gezielt nach Operatoren gesucht werden, die ein bestimmtes Pr?dikat hinzuf?gen k?nnen, ohne gleich alle Operatoren durchprobieren zu m?ssen.

mask - die Auswahlmaske der Operatoren, die sich aus der Summe der gewünschten {operators.Operator#opType OperatorTypen} zusammensetzt.
Returns:
einen ListIterator ?ber alle gesuchten Operatoren. Es handelt sich dabei um Klone der Operatoren in der OperatorDB!
Since:
Version 1.7


getBestOperators

public java.util.ListIterator getBestOperators()
                                        throws OperatorDBInconsistentException
Diese Methode gibt Klone aller Operatoren, die in dieser Datenbank enthalten sind zur?ck. Sie sind nach absteigendem Gewicht sortiert, da davon ausgegangen wird, dass ein h?heres Gewicht an 'bessere' Operatoren vergeben wird.
Returns:
ListIterator ?ber die Operatoren; dem Gewicht nach sortiert.
Throws:
OperatorDBInconsistentException - Diese Exception wird ausgel?st, wenn eine Inkonsistenz zwischen den einzelnen Datenstrukturen in der DB erkannt wird.
Since:
Version 1.2
See Also:
Operator.clone()

getBestOperatorsAsList

public java.util.LinkedList getBestOperatorsAsList()
                                            throws OperatorDBInconsistentException
Diese Methode gibt Klone aller Operatoren, die in dieser Datenbank enthalten sind zur?ck. Sie sind nach absteigendem Gewicht sortiert, da davon ausgegangen wird, dass ein h?heres Gewicht an 'bessere' Operatoren vergeben wird.
Returns:
LinkedList ?ber die Operatoren; dem Gewicht nach sortiert.
Throws:
OperatorDBInconsistentException - Diese Exception wird ausgel?st, wenn eine Inkonsistenz zwischen den einzelnen Datenstrukturen in der DB erkannt wird.
Since:
Version 1.2
See Also:
Operator.clone()

getBestOperators

public java.util.ListIterator getBestOperators(long mask)
                                        throws OperatorDBInconsistentException
Diese Methode gibt Klone aller Operatoren, die in dieser Datenbank enthalten sind zur?ck. Sie sind nach absteigendem Gewicht sortiert, da davon ausgegangen wird, dass ein h?heres Gewicht an 'bessere' Operatoren vergeben wird.
Parameters:
mask - die Auswahlmaske der Operatoren, die sich aus der Summe der gewünschten {operators.Operator#opType OperatorTypen} zusammensetzt.
Returns:
ListIterator ?ber die Operatoren; dem Gewicht nach sortiert.
Throws:
OperatorDBInconsistentException - Diese Exception wird ausgel?st, wenn eine Inkonsistenz zwischen den einzelnen Datenstrukturen in der DB erkannt wird.
Since:
Version 1.7
See Also:
Operator.clone()

addOperator

public long addOperator(Operator newOp)
                 throws java.lang.InstantiationException,
                        ElementExistsException,
                        java.lang.IllegalAccessException
Diese Methode f?gt einen Operator zu de DB hinzu. Als R?ckgabewert wird die eindeutige ID zur?ckgegeben, die dem Operator zugeordnet wurde.
Parameters:
newOp - Operator, der hinzugef?gt werden soll.
Returns:
long der eindeutige ID des hinzugef?gten Operators.
Throws:
ElementExistsException - wenn ein Element eingefuegt werden soll, dessen Name in der Datenbank schon vergeben ist.
Since:
1.0
See Also:
Operator, GenericDatabase

addOperatorPrecond

private void addOperatorPrecond(Operator newOp)
                         throws java.lang.IllegalAccessException,
                                java.lang.InstantiationException
Diese Methode dient nur der ?bersichlichen Gliederung der Methode addOperatorClass. Sie f?gt den Operator in die precondPredMap ein.
Parameters:
op - eine Variable vom Typ 'Operator'
Throws:
java.lang.IllegalAccessException - wenn ein Fehler auftritt
java.lang.InstantiationException - wenn ein Fehler auftritt
See Also:
addOperator(Operator op)

addOperatorPostcond

private void addOperatorPostcond(Operator newOp)
                          throws java.lang.IllegalAccessException,
                                 java.lang.InstantiationException
Diese Methode dient nur der ?bersichlichen Gliederung der Methode addOperator. Sie f?gt den Operator in die postcondPredMap ein.
Parameters:
op - eine Variable vom Typ 'Operator'
Throws:
java.lang.IllegalAccessException - wenn ein Fehler auftritt
java.lang.InstantiationException - wenn ein Fehler auftritt
See Also:
addOperator(Operator op)

addOperatorWeight

private void addOperatorWeight(Operator newOp)
Diese Methode f?gt einen Operator in die WeightMap ein. Sollte der Operator dabei ein anderes Gewicht haben, als die WeightMap im betreffenden Schl?ssel eingetragen hat, so wird das Gewicht des Operators angepasst, um die Konsistenz aller Operatoren eines Typs zu gew?hrleisten. Diese Methode dient nur der ?bersichtlichen Aufteilung der Methode addOperator(Operator).
Parameters:
newOp - der einzuf?gende Operator.
Since:
Version 1.2

deleteOperator

public Operator deleteOperator(long id)
                        throws OperatorNotFoundException
Diese Methode l?scht einen Operator aus der DB anhand der ID. Als R?ckgabewert wird der gel?schte Operator zur?ckgegeben, falls man ihn noch ein letztes Mal braucht.

Vorsicht! Es reicht ein Operator eines Typs, um alle Operatoren des Typs aus der DB zu l?schen, schliesslich auch immer nur genau ein Exemplar in der DB gespeichert ist.

Parameters:
id - ID des zu l?schenden Operators.
Returns:
den gel?schten Operator.
Since:
1.0


updateWeightMap

public void updateWeightMap(double newWeight,
                            Operator op)
Die Methode 'updateWeightMap' korrigiert den Fehler, der in der weightMap entsteht, wenn das Gewicht eines Operators durch z.B. den OperatorLearner ge?ndert wird.

Um das tats?chliche auftreten eines solchen Fehlers zu vermeiden, kann die soll das Gewicht des Operators ?ber diese Methode gesetzt werden. Seiteneffekt:Um die Konsistenz zu wahren, hat der Operator nach Aufruf dieser Methode stets das neue Gewicht!

Parameters:
newWeight - das neue Gewicht des Operators
op - der Operator selbst
See Also:
OperatorWeightComparator, Operator.setWeight(double)


toString

public java.lang.String toString()
Diese Methode gibt einen String zur?ck, der den Zustand des Objekts repr?sentiert. Dazu werden die Attribute des Objekts in den String geschrieben.
Returns:
String, der den Zustand der DB beschreibt
Overrides:
toString in class GenericDatabase
Since:
Version 1.2

toTextFile

public void toTextFile(java.lang.String s)
                throws java.io.IOException
Diese Methode gibt die OperatorenKlassen in ein Textfile aus. Da CompoundOperatoren alle denselben Klassennamen haben, werden sie ignoriert. Diese Methode ist also der Widerpart f?r den Konstruktor OperatorDB(String,T_Box,Concept,boolean).
Parameters:
s - vollst?ndiger Dateiname der Datei, in die die Operatorenklassennamen ausgegeben werden sollen.
Throws:
java.io.IOException - wird geworfen, wenn ein I/O-Fehler auftritt.
Since:
Version 1.3

generateAllClassifierOperators

protected void generateAllClassifierOperators()
Diese Methode generiert aus der tBox automatisch alle ClassifierOperator zu allen Konzepten, die in der tBox enthalten sind.
Since:
1.4