edu.bonn.xulu.model
Class AbstractModelResource

java.lang.Object
  extended by edu.bonn.xulu.model.AbstractModelResource
All Implemented Interfaces:
ModelResource
Direct Known Subclasses:
DefaultModelResource, PropertiesResource

public abstract class AbstractModelResource
extends Object
implements ModelResource

Diese Klasse bildet eine abstrakte Basis-Implementierung fuer eine Modell-Ressource. Die einzigen Methoden, die eine Unterklasse noch implementieren muss, sind checkAndError(Object) und checkTypeAndError(Object), ueber die geprueft wird, ob ein Objekt fuer die Ressource zulaessig ist.
Details zur Funktionalitaet und Bestimmung dieser Klasse sind in ModelResource zu finden.

Version:
1.0
Author:
Martin Schmitz (University of Bonn/Germany)

Field Summary
protected  int category
          Speichert die Kategorie der Ressource (Default: ModelResource.CATEGORY_OTHER)
protected  Object data
          Speichert das Daten-Objekt der Ressource.
protected  String desc
          Speichert die Beschreibung der Ressource.
protected  boolean nullable
          Speichert, ob die Ressource unbelegt bleiben darf
protected  Class type
          Speichert den Datentyp der Ressource.
 
Fields inherited from interface edu.bonn.xulu.model.ModelResource
CATEGORY_INPUT, CATEGORY_OTHER, CATEGORY_OUTPUT, CATEGORY_TEMP
 
Constructor Summary
AbstractModelResource(int category, String desc, Class type, boolean nullable)
          Erzeugt eine leere Ressource.
AbstractModelResource(int category, String desc, Object data, boolean nullable)
          Erzeugt Ressource und ordnet ihr ein konretes Datenobjekt zu.
AbstractModelResource(String desc, Class type, boolean nullable)
          Erzeugt eine leere Ressource.
AbstractModelResource(String desc, Object data, boolean nullable)
          Erzeugt Ressource und ordnet ihr ein konretes Datenobjekt zu.
 
Method Summary
 boolean check()
          Prueft das der Ressource zugeordnete Objekt auf Typ- und Wert-Konsistenz mit der Ressource.
 boolean check(Object data)
          Prueft ein beliebiges Objekt auf Typ- und Wert-Konsistenz mit der Ressource.
 void checkAndError()
          Prueft das der Ressource zugeordnete Objekt auf Typ- und Wert-Konsistenz mit der Ressource.
abstract  void checkAndError(Object data)
          Prueft ein beliebiges Objekt auf Typ- und Wert-Konsistenz mit der Ressource.
protected  void checkCategory(int category)
          Prueft, ob die angegebene Kategorie korrekt ist.
 boolean checkType(Object data)
          Prueft ein beliebiges Objekt nur auf Typ-Vertraeglichkeit mit der Ressource.
abstract  void checkTypeAndError(Object data)
          Prueft ein beliebiges Objekt nur auf Typ-Vertraeglichkeit mit der Ressource.
 int getCategory()
          Liefert die Kategorie der Ressource.
 Object getData()
          Liefert das Daten-Objekt der Ressource.
 String getDesc()
          Liefert eine Beschreibung, worum es sich bei der Ressource handelt.
 Class getType()
          Liefert den Datentyp der Ressource.
 boolean isCategory(int category)
          Prueft, ob die Ressource einer bestimmten Kategorie zugeordnet ist.
 boolean isCategoryAll(int category)
          Prueft, ob die Ressource einer bestimmten Kategorie-Kombination zugeordnet ist.
 boolean isNullable()
          Gibt an, ob die Ressource opional ist (also unbelegt bleiben darf).
 void setCategory(int category)
          Setzt die Kategorie der Ressource.
 void setData(Object data)
          Ordnet der Ressource ein bestimmtes Datenobjekt zu.
 void setData(Object data, boolean check)
          Ordnet der Ressource ein bestimmtes Datenobjekt zu.
 void setDesc(String desc)
          Setzt eine Beschreibung, worum es sich bei der Ressource handelt.
 void setNullable(boolean nullable)
          Bestimmt, ob die Ressource opional ist (also unbelegt bleiben darf).
protected  void throwDataException(String expected)
          Erzeugt und wirft eine XuluDataException mit der Beschreibung "Resource 'resource_name': expected expected" Der Ressourcenname wird automatisch ueber this.getDesc() ermittelt.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

type

protected Class type
Speichert den Datentyp der Ressource.


data

protected Object data
Speichert das Daten-Objekt der Ressource.


desc

protected String desc
Speichert die Beschreibung der Ressource.


nullable

protected boolean nullable
Speichert, ob die Ressource unbelegt bleiben darf


category

protected int category
Speichert die Kategorie der Ressource (Default: ModelResource.CATEGORY_OTHER)

Constructor Detail

AbstractModelResource

public AbstractModelResource(int category,
                             String desc,
                             Class type,
                             boolean nullable)
Erzeugt eine leere Ressource.

Parameters:
category - Ordnet die Ressource in eine Kategorie ein (siehe setCategory(int))
desc - Beschreibung der Ressource
type - Datentyp der Ressource
nullable - gibt an, ob die Ressource unbelegt bleiben darf
Throws:
XuluDataException - falls der Datentyp null ist.

AbstractModelResource

public AbstractModelResource(int category,
                             String desc,
                             Object data,
                             boolean nullable)
Erzeugt Ressource und ordnet ihr ein konretes Datenobjekt zu. Der Datentyp wird implizit aus dem uebergebenen Objekt ermittelt.

Parameters:
category - Ordnet die Ressource in eine Kategorie ein (siehe setCategory(int))
desc - Beschreibung der Ressource
data - Daten-Objekt fuer die Ressource
nullable - gibt an, ob die Ressource unbelegt bleiben darf
Throws:
XuluDataException - falls das Datenobjekt null ist, denn aus null kann kein Datentyp ermittelt werden

AbstractModelResource

public AbstractModelResource(String desc,
                             Class type,
                             boolean nullable)
Erzeugt eine leere Ressource.

Parameters:
desc - Beschreibung der Ressource
type - Datentyp der Ressource
nullable - gibt an, ob die Ressource unbelegt bleiben darf
Throws:
XuluDataException - falls der Datentyp null ist.
IllegalArgumentException - falls eine unbekannte Kategorie angegeben wird

AbstractModelResource

public AbstractModelResource(String desc,
                             Object data,
                             boolean nullable)
Erzeugt Ressource und ordnet ihr ein konretes Datenobjekt zu. Der Datentyp wird implizit aus dem uebergebenen Objekt ermittelt.

Parameters:
desc - Beschreibung der Ressource
data - Daten-Objekt fuer die Ressource
nullable - gibt an, ob die Ressource unbelegt bleiben darf
Throws:
XuluDataException - falls das Datenobjekt null ist, denn aus null kann kein Datentyp ermittelt werden
IllegalArgumentException - falls eine unbekannte Kategorie angegeben wird
Method Detail

checkCategory

protected void checkCategory(int category)
Prueft, ob die angegebene Kategorie korrekt ist. Unterklassen, die neue Kategorien definieren, muessen diese Methode ueberschreiben.

Throws:
IllegalArgumentException - falls eine unbekannte Kategorie angegeben wird

isNullable

public boolean isNullable()
Gibt an, ob die Ressource opional ist (also unbelegt bleiben darf).

Specified by:
isNullable in interface ModelResource

setNullable

public void setNullable(boolean nullable)
Bestimmt, ob die Ressource opional ist (also unbelegt bleiben darf).

Specified by:
setNullable in interface ModelResource

getCategory

public int getCategory()
Liefert die Kategorie der Ressource. Dies kann die Konstante ModelResource.CATEGORY_OTHER sein, oder eine logische Oder-Verknuepfung der Konstanten ModelResource.CATEGORY_INPUT, ModelResource.CATEGORY_OUTPUT und ModelResource.CATEGORY_TEMP.

Specified by:
getCategory in interface ModelResource

setCategory

public void setCategory(int category)
Setzt die Kategorie der Ressource. Dies kann die Konstante ModelResource.CATEGORY_OTHER sein, oder eine logische Oder-Verknuepfung der Konstanten ModelResource.CATEGORY_INPUT, ModelResource.CATEGORY_OUTPUT und ModelResource.CATEGORY_TEMP.

Specified by:
setCategory in interface ModelResource
Throws:
IllegalArgumentException - falls eine unbekannte Kategorie angegeben wird

isCategory

public boolean isCategory(int category)
Prueft, ob die Ressource einer bestimmten Kategorie zugeordnet ist. Liefert true wenn die Ressource einer der angegebenen Kategorien zugeordnet ist (ODER).

Specified by:
isCategory in interface ModelResource
Parameters:
category - Oder-Verknuepfung von Kategorien
Returns:
this.getCategory() == CATEGORY_OTHER && category == CATEGORY_OTHER || (this.getCategory() & category) > 0

isCategoryAll

public boolean isCategoryAll(int category)
Prueft, ob die Ressource einer bestimmten Kategorie-Kombination zugeordnet ist. Liefert true wenn die Ressource allen angegebenen Kategorien zugeordnet ist (UND).

Specified by:
isCategoryAll in interface ModelResource
Returns:
this.getCategory() == CATEGORY_OTHER && category == CATEGORY_OTHER || (this.getCategory() & category) == category

checkType

public boolean checkType(Object data)
Prueft ein beliebiges Objekt nur auf Typ-Vertraeglichkeit mit der Ressource.

Specified by:
checkType in interface ModelResource

checkTypeAndError

public abstract void checkTypeAndError(Object data)
                                throws XuluDataException
Prueft ein beliebiges Objekt nur auf Typ-Vertraeglichkeit mit der Ressource.

Specified by:
checkTypeAndError in interface ModelResource
Throws:
XuluDataException - falls der Objekt-Typ nicht mit der Ressourcen vertraeglich ist

check

public boolean check(Object data)
Prueft ein beliebiges Objekt auf Typ- und Wert-Konsistenz mit der Ressource.

Specified by:
check in interface ModelResource
See Also:
checkAndError(Object)

checkAndError

public abstract void checkAndError(Object data)
                            throws XuluDataException
Prueft ein beliebiges Objekt auf Typ- und Wert-Konsistenz mit der Ressource. Kann manuell aufgerufen werden und wird automatisch von setData(Object) aufgerufen.

Specified by:
checkAndError in interface ModelResource
Throws:
XuluDataException - falls der Typ oder der Wert des zugeordneten Objekts nicht mit der Ressource vertraeglich ist

check

public boolean check()
Prueft das der Ressource zugeordnete Objekt auf Typ- und Wert-Konsistenz mit der Ressource.

Specified by:
check in interface ModelResource
See Also:
checkAndError()

checkAndError

public void checkAndError()
                   throws XuluDataException
Prueft das der Ressource zugeordnete Objekt auf Typ- und Wert-Konsistenz mit der Ressource.

Specified by:
checkAndError in interface ModelResource
Throws:
XuluDataException - falls der Typ oder der Wert des zugeordneten Objekts nicht mit der Ressource vertraeglich ist
See Also:
checkAndError(Object)

getType

public Class getType()
Liefert den Datentyp der Ressource.

Specified by:
getType in interface ModelResource

getData

public Object getData()
Liefert das Daten-Objekt der Ressource.

Specified by:
getData in interface ModelResource

getDesc

public String getDesc()
Liefert eine Beschreibung, worum es sich bei der Ressource handelt.

Specified by:
getDesc in interface ModelResource

setDesc

public void setDesc(String desc)
Setzt eine Beschreibung, worum es sich bei der Ressource handelt.

Specified by:
setDesc in interface ModelResource

setData

public void setData(Object data,
                    boolean check)
Ordnet der Ressource ein bestimmtes Datenobjekt zu.

Specified by:
setData in interface ModelResource
Parameters:
data - Daten-Objekt
check - bestimmt, ob das Datenobjekt sofort auf Typ-Vertraeglichkeit ueberprueft werden soll
See Also:
checkAndError(Object)

setData

public void setData(Object data)
             throws XuluDataException
Ordnet der Ressource ein bestimmtes Datenobjekt zu.

Specified by:
setData in interface ModelResource
Parameters:
data - Daten-Objekt
Throws:
XuluDataException - falls das nicht mit dem Ressourcen-Typ vertraeglich ist
See Also:
checkAndError(Object)

throwDataException

protected void throwDataException(String expected)
Erzeugt und wirft eine XuluDataException mit der Beschreibung
"Resource 'resource_name': expected expected"
Der Ressourcenname wird automatisch ueber this.getDesc() ermittelt. Der erwartete Wert/Typ wird als Parameter uebergeben.

Parameters:
expected - Bezeichnung des erwarteten Typ/Wert