de.jsystems.framework.common
Class ViewItemValidator

java.lang.Object
  extended byde.jsystems.framework.common.ViewItemValidator

public abstract class ViewItemValidator
extends Object

Diese Klasse uebernimmt die Validierung der Eingaben in einer Oberflaeche. Da Objekte in Java generell als Referenz uebergeben werden, steht sonst jede Aenderung aus der Oberflaeche sofort im zugehoerigen Model (bzw. im Item) drin. Deshalb wird hier das Item kopiert und erst diese Kopie mit den Werten aus der Oberflaeche gefuellt. Dabei findet schon die erste Pruefung statt auf Mussfelder und Datentypvertraeglichkeit. Fuer die eigentliche fachliche Pruefung muss dann die Methode validate(BusinessView, MessageList) ueberschrieben werden.

Benutzt wird hier die Methode Item.deepCopy() des Items um eine Kopie des Items zu erzeugen. Erst mit dieser Kopie findet dann die Pruefung der Eingaben statt.

Version:
1.0
Copyright by Jens Homm 2001 - 2003
Author:
Jens Homm JSYSTEMS
See Also:
BusinessView, BusinessModel, Item

Constructor Summary
ViewItemValidator()
          Erzeugt einen neuen ItemValidator.
 
Method Summary
protected  void checkItemEntrys(MessageList messageList)
          Prueft die Mussfelder im Item ab.
 void setItem(Item item)
          Setzt das Item, mit dem die Eingabepruefung stattfinden soll.
abstract  void validate(BusinessView view, MessageList ml)
          Diese Methode muss in konkreten Implementierungen des ItemValidators ueberschrieben werden.
 void validateLogical(BusinessView view, MessageList ml)
          Prueft die Eingaben in der Oberflaeche auf Typvertraeglichkeit zum zu fuellenden Item und auf in der Oberflaeche gefuellte Mussfelder.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

ViewItemValidator

public ViewItemValidator()
Erzeugt einen neuen ItemValidator.

Method Detail

validateLogical

public void validateLogical(BusinessView view,
                            MessageList ml)
                     throws GetItemMethodNotAllowedException,
                            ItemInvokeException,
                            WrongValueTypeException,
                            ValidateException
Prueft die Eingaben in der Oberflaeche auf Typvertraeglichkeit zum zu fuellenden Item und auf in der Oberflaeche gefuellte Mussfelder. Diese Methode wird von der View aus der Methode BusinessView.validateView(Item, MessageList) bzw. aus der Methode BusinessView.validateView(MessageList) heraus aufgerufen.

Parameters:
view - Die View, deren Eingaben mit dem Item geprueft werden sollen.
ml - Eine MessageList die mit allen bei der Pruefung auftretenden Fehlern gefuellt wird.
Throws:
GetItemMethodNotAllowedException - wenn beim auslesen der Methoden im Item ein Fehler aufgetreten ist.
ItemInvokeException - Wenn beim Aufruf einer get-Methode im Item ein Fehler aufgetreten ist.
WrongValueTypeException - Wenn die Eingabe in der Oberflaeche sich nicht in den passenden Typ im DynamicItem casten laesst.
ValidateException - wenn bei der Validierung ein Fehler auftritt.
See Also:
BusinessView.castDynamicItemAttribut(DynamicItem, Object, String)

validate

public abstract void validate(BusinessView view,
                              MessageList ml)
                       throws ValidateException
Diese Methode muss in konkreten Implementierungen des ItemValidators ueberschrieben werden. Hier passieren dann die fachlichen Pruefungen, ob die Eingaben in der Oberflaeche auch fachlich korrekt sind. Aufgerufen wird diese Methode von der Methode validateLogical(BusinessView, MessageList).

Parameters:
view - Die View, deren Eingaben mit dem Item geprueft werden sollen.
ml - Eine MessageList die mit allen bei der Pruefung auftretenden Fehlern gefuellt wird.
Throws:
ValidateException - wenn bei der Validierung ein Fehler auftritt.

setItem

public void setItem(Item item)
             throws DeepCopyException
Setzt das Item, mit dem die Eingabepruefung stattfinden soll. Gespeichert wird allerdings nicht das uebergebene Item, sondern lediglich eine Kopie. Die Kopie wird mit Hilfe der Methode Item.deepCopy() im Item angelegt. Somit ist sichergestellt, das es sich um eine 'deepCopy' handelt und durch die Pruefung noch keine Aenderung in der fachlichen Welt stattfindet.
Die uebergebene View ist die View, deren Eingaben mit dem Item geprueft werden sollen.

Daher steht auch nach der Validierung die Eingabe der Oberflaeche noch nicht im uebergebenen Item. Dazu muss dann die Methode BusinessView.getData(Item) in der BusinessView aufgerufen werden.

Das uebergebene Item darf nicht NULL sein, andernfalls wird eine IllegalArgumentException ausgeloest.

Parameters:
item - Das Item mit dem die Oberflaecheneingaben geprueft werden sollen.
Throws:
DeepCopyException - wenn beim kopieren ein Fehler auftritt.
See Also:
Item.deepCopy()

checkItemEntrys

protected void checkItemEntrys(MessageList messageList)
                        throws GetItemMethodNotAllowedException,
                               ItemInvokeException,
                               WrongValueTypeException
Prueft die Mussfelder im Item ab. Jedes Feld eines Items, das als Mussfeld regisitrert wurde, muss einen Wert enthalten. Als Wert nicht erlaubt ist NULL oder ein Leerstring, sofern es sich bei dem Typ des Attributes um einen String handelt. Alle aufgetretenen Validierungsfehler werden in der uebergebenen MessageList protokolliert. Eine fachliche Pruefung findet hier nicht statt, dafuer ist die Methode validate(BusinessView, MessageList) da.

Parameters:
messageList - MessageList zum sammeln aller aufgetretenen Fehlermeldungen.
Throws:
GetItemMethodNotAllowedException - wenn beim auslesen der Methoden im Item ein Fehler aufgetreten ist.
ItemInvokeException - Wenn beim Aufruf einer get-Methode im Item ein Fehler aufgetreten ist.
WrongValueTypeException - Wenn die Eingabe in der Oberflaeche sich nicht in den passenden Typ im DynamicItem casten laesst.