Selbstverständlich ist es möglich, checkerberry db über die Konfiguration um eigene Funktionen zu erweitern. Die Konfiguration erlaubt nicht nur das Registrieren von eigenen Funktionen, sondern auch das Anpassen der Syntax (siehe unten). Die Definition einer Funktion zum Addieren ihrer Parameter zeigt das Beispiel 2.30, „Definieren einer Funktion zur Addition“.
Beispiel 2.30. Definieren einer Funktion zur Addition
/** * Addiert alle Argumente. */ public class AddFunction implements TestdataFunction { @Override public String evaluate(ExecutionContext context, List<String> arguments, String functionName) { int result = 0; for (String argument : arguments) { result += Integer.valueOf(argument); } return Integer.toString(result); } }
Funktionen implementieren das Interface
TestdataFunction
. Die Methode
evaluate()
wird bei Auswertung der Funktion
aufgerufen und bestimmt das Ergebnis. Der aktuelle Ausführungskontext
(u.a. Kontexte für Parameter, Autoparameter und Validatoren), eine
Liste der Argumente in Form von Strings und der Name, unter dem die
Funktion aufgerufen wurde (theoretisch ist es möglich eine Funktion
unter mehreren Namen zu registrieren), werden übergeben. Es liegt in
der Verantwortung der Implementation zu überprüfen, ob die Parameter
in korrekter Anzahl und Form vorliegen. Argumente können null sein und
es ist für eine Funktion legitim null zurückzugeben (Beispiel:
->null()
). Ist ein Parameter ausschließlich
durch eine Funktion definiert, so führt ein Rückgabewert von
null
zum Belegen des Feldes mit
null
, was beispielsweise gegen evtl. in der
Datenbank vorhandene NOT NULL
-Bedingungen
verstoßen würde.
Anschließend ist das Registrieren der Funktion in der Konfiguration folgendermaßen möglich:
Nach der Registrierung kann die neue Funktion in den Testdaten
verwendet werden (->add(1,3)
würde zu
4
ausgewertet).