[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