2.4.3.4. Eigene Validatoren erstellen

Checkerberry db unterstützt die Definition von benutzerspezifischen Validatoren. Die Validatoren müssen das Interface de.conceptpeople.checkerberry.common.validation.Validator implementieren, das im Folgenden dargestellt ist.

Beispiel 2.13. Validator-Interface

public interface Validator {

  /**
   * Liefert die Id des Validators.
   *
   * @return Id des Validators.
   */
  ValidatorId getValidatorId();

  /**
   * Prüft, ob der erwartete Wert von dem Validator geprüft werden soll.
   *
   * @param expectedValue
   *            erwarteter Wert.
   * @return <code>true</code>, wenn der erwartete Wert mit dem impliziten
   *         Pattern des Validators übereinstimmt.<br/>
   *         <code>false</code>, sonst.
   */
  boolean matches(String expectedValue);

  /**
   * Prüft, ob der erwartete Wert mit dem tatsächlichen Wert übereinstimmt.
   * Der erwartete Wert kann Operationen wie z.B. "=" oder "eq" beinhalten.
   * Die konkrete Implementierung des Validators muss diese Operatoren
   * berücksichtigen.
   *
   * @param currentValueAsString
   *            aktueller Wert.
   * @param expectedValueWithOperatorAsString
   *            erwartete Wert, der ggf. Operatoren enthält z.B.
   *            "lt 2010-01-01".
   *
   * @return Status, ob und wenn ja, wie die Validierung durchgeführt wurde.
   */
  ValidationStatus validate(String currentValueAsString,
    String expectedValueWithOperatorAsString);
}


Jeder Validator wird über seine Id angesprochen. Die Methode getValidatorId liefert diese Id zurück. Durch den Aufruf der Methode matches entscheidet checkerberry db, ob der Validator für die Überprüfung des aktuellen Wertes aus den erwarteten Testdaten verwendet werden soll. Liefert die Methode matches den Wert true zurück, wird danach die Methode validate aufgerufen, die die Überprüfung des erwarteten mit dem tatsächlichen Wert durchführt. Die Methode liefert den Status der Validierung. Die möglichen Werte sind:

Damit der Validator verwendet werden kann, muss er, wie im nächsten Abschnitt beschrieben, an checkerberry db registriert werden.