Fachwert Factory
Ueber die FachwertFactory kann ein beliebiger Fachwert generiert oder geholt werden. Normalerweise sollte man da den entsprechenden Konstruktor des Fachwerts bemuehen, aber es gibt auch Situation, wo man den genauen Typ des Fachwertes (noch) nicht weiss. Fuer diese Situation ist diese Factory gedacht.
Zum Generieren eines Fachwerts wird der aktuelle Classpath abgescannt, um die passende Implementierung zu finden. Um die Implementierung erweitern aoder austauschen zu koennen, hat diese Factory keine statischen Methoden, sondern ist als normale Klasse implementiert.
Da in dieser Klasse Exceptions auftreten koennen, die nicht weitergegeben werden, wird dazu der Standard-Logger aus dem JDK verwendet. Damit kann man sich zum Debuggen diese Exceptions im Log-Level "FINE" ausgeben lassen.
Author
oboehm
Since
0.5 (13.01.2018)
Functions
Liefert einen Fachwert zur angegebenen Klasse.
Liefert einen Fachwert zum angegebenen (Klassen-)Namen. Als Name wird der Klassennamen erwartet. Wird keine Klasse gefunden, wird die Klasse genommen, die am ehesten passt. So wird bei "IBAN1" als Name eine Instanz der IBAN-Klasse zurueckgeliefert.
Liefert die registrierten Klassen zurueck.
Hierueber sollten sich die einzelnen Fachwert-Klassen registrieren. Ansonsten werden sie bei FachwertFactory.getFachwert nicht gefunden.
Validiert die uebergebenen Argumente mit Hilfe der angegebenen Klasse. Viele Fachwert-Klassen haben eine (statische) validate-Methode, die dafuer verwendet wird. Fehlt diese validate-Methode, wird der Konstruktor fuer die Validierung herangezogen. Schlaegt die Validierung fehl, wird eine ValidationException geworfen.
Validiert die uebergebenen Argumente mit Hilfe der angegebenen Klasse, die als (Klassen-)Namen angegeben wird. Viele Fachwert-Klassen haben eine (statische) validate-Methode, die dafuer verwendet wird. Fehlt diese validate-Methode, wird der Konstruktor fuer die Validierung herangezogen. Schlaegt die Validierung fehl, wird eine Schlaegt die Validierung fehl, wird eine ValidationException geworfen.