package Ġorg . vit riv r . cott ont ail . database . index Ċ Ċ import Ġorg . map db . Data Input 2 Ċ import Ġorg . map db . Data Output 2 Ċ Ċ import Ġorg . vit riv r . cott ont ail . database . column . Column Def Ċ import Ġorg . vit riv r . cott ont ail . database . general . DB O Version Ċ import Ġorg . vit riv r . cott ont ail . model . exceptions . Database Exception Ċ Ċ /** Ċ Ġ* ĠThe Ġheader Ġsection Ġof Ġan Ġ[ Abstract Index ] Ġdata Ġstructure . Ċ Ġ* Ċ Ġ* Ġ@ see ĠAbstract Index Ċ Ġ* Ċ Ġ* Ġ@ author ĠR alph ĠG asser Ċ Ġ* Ġ@ version Ġ 2 . 0 . 0 Ċ Ġ*/ Ċ data Ġclass ĠIndex Header ( ĊĠĠĠ Ġval Ġname : ĠString , ĊĠĠĠ Ġval Ġtype : ĠIndex Type , ĊĠĠĠ Ġval Ġcolumns : ĠArray < Column Def <* >>, ĊĠĠĠ Ġval Ġcreated : ĠLong Ġ= ĠSystem . currentTimeMillis (), Ġval Ġmodified : ĠLong Ġ= ĠSystem . currentTimeMillis () Ċ ) Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject ĠSerializer Ġ: Ġorg . map db . Serializer < Index Header > Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġserialize ( out : ĠData Output 2 , Ġvalue : ĠIndex Header ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġout . pack Int ( DB O Version . V 2 _ 0 . ordinal ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġout . write UTF ( value . name ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġout . pack Int ( value . type . ordinal ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġout . pack Int ( value . columns . size ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvalue . columns . forEach Ġ{ ĠColumn Def . serialize ( out , Ġit ) Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġdeserialize ( input : ĠData Input 2 , Ġavailable : ĠInt ): ĠIndex Header Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġversion Ġ= ĠD BO Version . values ()[ input . unpack Int ()] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( version Ġ!= ĠD BO Version . V 2 _ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠDatabase Exception . Version Mismatch Exception ( version , ĠD BO Version . V 2 _ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠIndex Header ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinput . read UTF (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠIndex Type . values ()[ input . unpack Int ()], ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠArray ( input . unpack Int ()) Ġ{ ĠColumn Def . deserialize ( input , Ġavailable ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }