A címpozíció adatai, a csekkek bizonyos mező, tértivevény adatainak mérete fizikailag kötött. Hogy megfelelően elő tudjuk állítani az említett nyomdai termékeket, validálnunk kell a bejövő adatokat.
Jelenleg ezen mezők maximális méretének meghatározására a felhasználandó területre írt "M" karakterek maximális számához hasonlítjuk az adatok karakterhosszát. Ez az eljárás azonban túlságosan szigorú. Pl. a címzett címsorai max 68 mm hosszúak, Arial 10-es fontot alkalmazva "M" karakterből maximum 22 db fér el (64.6 mm), míg a leghosszabb budapesti közterületet használva, lépcsőházjelölést és az emelet és ajtót is megnevezve 44 karakter fér el (67.7 mm). Néhány példa cím Arial 10 font használatával:
Cím | Hossz (mm) | Karakterszám |
---|---|---|
Gagarin tér 1 2/3 a | 29,5 | 17 |
Gagarin tér 11 fsz. 2 | 32,3 | 21 |
Könyves Kálmán krt. 45/A 1. e. 4. a | 55,6 | 36 |
Könyves Kálmán körút. 45/A 1. e. 4. a | 59,6 | 38 |
Ferihegyi repülőtérre vezető út 88/a 1 e 4 a | 67,7 | 44 |
Ferihegyi repülőtérre vezető út 88/a 1. e. 4. a | 70,4 | 47 |
MMMMMMMMMMMMMMMMMMMMMM | 64,6 | 22 |
A szövegméret mérésének tűrése 0,5 mm. |
Ebből következik, hogy a kötött méretű adatok validációját pontos a szövegméret meghatározása alapján kell elvégezni, nem pedig a maximum karakterszám meghatározásával.
A kötött méretű, nyomtatandó adatok validációjának két módszerét állapítottuk meg.
Az aktuális font alapjáb kiszámítjuk a szöveg hosszát, majd a mezőkhöz definiált maximum hosszúsággal összevetve, ha meghaladja: validációs hibát dobunk.
Ha az a.) variáns vizsgálata szerint invalid az adat: visszacsonkoljuk az adatot, ameddig elfér a megadott területen.
Célszerűnek tartom, hogy az adatbázisban a csonkolt adatokat tároljuk el.
Elképzelhető és életszerű, hogy az ügyfél bizonyos esetekben csonkolni szeretne, más esetben pedig validációs hibát várna. Ennek megvalósítására biztosítani kell, hogy az ügyfél meg tudja jelölni: mely adatokat szeretné csonkolni, és melyeket szeretné, ha megakadnának a validáció során. Az adott modell osztályokat ki kell egészíteni egy dataOverflowHandlingMode nevű adattaggal, amelynek értékei a következőek lehetnek:
A kiegészítendő modell osztályok:
A címek validálására egyedi logikára van szükségünk (lásd: Címsorok méretének validációja).