Ich möchte bei der Validierung mit ilivalidator prüfen können, ob ein bestimmtes numerisches Attribut eine Ganzzahl ist.
Meines Wissens gibt es noch keine Funktion dafür, die man in einem Constraint verwenden könnte. Ich stelle mir sowas vor wie
FUNCTION IsInt (a: NUMERIC): BOOLEAN;
Welches ist nun die richtige resp. nachhaltigste Option?
a) Ich schreibe dazu ein eigenes Modell und ein Plugin für ilivalidator?
b) Ich schaue, dass das interne INTERLIS-Datenmodell (RefHB Anhang A) um diese Funktion ergänzt wird; das Plugin steure ich dem ilivalidator-Repository bei?*
c) Ich schaue, dass das offizielle Math_V2-Modell um diese Funktion ergänzt wird, das Plugin steure ich dem ilivalidator-Repository bei?**
Ich denke Variante c) wäre pragmatisch und nachhaltig. Die Funktion würde dann Teil vom iox-ili und wäre so in allen Formen des ilivalidators verfügbar. Und aus meiner Sicht sollten solche Erweiterungen problemlos und ohne grosse Vernehmlassung umgesetzt werden können.
Ja, es ist im Detail noch zu definieren, was diese Funktion können muss (und was nicht). Aber das ist für mich zurzeit zweitrangig.
Ich würde gerne die Diskussion führen, wo (auf Stufe der Werkzeuge) eine solche Funktion platziert werden sollte.
@olivergrimm Wo siehst du die Abgrenzung zwischen c) und d)? Welche Eigenschaften muss eine Funktion aufweisen, damit sie ‚nativ‘ unterstützt wird? Und wann schreibt man ein Plugin dafür?
Diese Abgrenzung ist schwierig, aber ich finde die aktuelle Liste der Funktionen in GeoW_FunctionsExt zeigt eine mögliche Klassierung. Aktuell packen wir da Funktionen aus projektspezifischen Anforderungen rein, bei welchen wir oder der Kunde der Meinung ist, dass diese auch in einem anderen Kontext verwendet werden können und trotzdem keine allgemeine Methode darstellt. Und dann werden sie bzgl. Name und Parametrisierung möglichst allgemein gestaltet.
Aber diese IsInt()-Funktion gehört m.E. klar in die native Unterstützung, weil sie eine Ergänzung einer der Grund-Bibliotheken (Math, Text) darstellt.