[HREF-tech] Dátumok a niifPerson osztályban
Kristof Bajnok
bajnokk at niif.hu
2010. Okt. 19., K, 14:06:50 CEST
Szia Kornél!
[cc href-tech]
On Sunday 17 October 2010 21.59.28 Ecsedi Kornel wrote:
> Nézem a dátumokat, és valamit nem egészen értek. Van ugye az alábbi
> három dátum attribútum:
>
> - niifPersonDateOfBirth (SYNTAX 1.3.6.1.4.1.1466.115.121.1.15),
> - niifPersonJoinDate (SYNTAX 1.3.6.1.4.1.1466.115.121.1.27),
> - niifPersonQuitDate (SYNTAX 1.3.6.1.4.1.1466.115.121.1.27).
>
> Az első egy Directory String, a másik kettő egész. Ráadásul a leírás azt
> mondja, hogy mindhárom formátuma az RFC-3339 által meghatározott
> full-date, ami viszont kötőjeleket tartalmaz a szabvány szerint:
>
> date-fullyear = 4DIGIT
> date-month = 2DIGIT ; 01-12
> date-mday = 2DIGIT ; 01-28, 01-29, 01-30, 01-31 based on
> ; month/year
> full-date = date-fullyear "-" date-month "-" date-mday
>
> Akkor ez most hogy van? Nem kellene egyezniük ezeknek a dátum típusoknak?
Azt hiszem, ez eléggé el lett szúrva annak idején. :(
A leírás egyértelműen hibás, a csupa integert tartom jónak (20101019)
Ami miatt az integert pártolom a GeneralizedTime
(1.3.6.1.4.1.1466.115.121.1.24) helyett az az, hogy nem kell hozzá időpontot
megadni. A DirectoryString-nél pedig azért jobb, mert így sima IntegerMatch-
csel leválogathatók egy időpontnál régebbi vagy újabb dátumok.
Változtatási javaslataim:
- full-date hivatkozásokat törölni, ez szimplán bénaság
- niifPersonDateOfBirth attribútum szintaxisa szintén bénaság. Ha az
értékek a specifikációnak megfelelnek, akkor ezt meg lehet változtatni
anélkül, hogy az adatokat módosítani kellene.
Kérdés, hogy az Integer (ezt használja az niif{Join,Quit}Date) vagy a
Numeric String (ezt használja a SCHAC) szintaxis a jobb. Lássuk, mit ír az
RFC2252:
- ( 1.3.6.1.4.1.1466.115.121.1.36 DESC 'Numeric String' )
The encoding of a string in this syntax is the string value itself.
Example: 1997
- ( 1.3.6.1.4.1.1466.115.121.1.27 DESC 'INTEGER' )
Values in this syntax are encoded as the decimal representation of
their values, with each decimal digit represented by the its
character equivalent. So the number 1321 is represented by the
character string "1321".
A különbség talán az lehet, hogy - ha jól értem - a NumericString esetén
lehet olyat mondani (ha megvannak a megfelelő MatchinRule-ok), hogy
foo=1989*, míg Integer esetén csak &(foo>=19890000)(foo<=19900000)
Szerintem az Integerre átállás egy kicsit egyszerűbb, így én ezt pártolnám.
Remélem, így csak a sémán kell módosítani, a már betöltött adatokon nem (de
azért persze ki kell próbálni előtte!)
Mit szólsz / szóltok?
Kristóf
További információk a(z) HREF-tech levelezőlistáról