package Ġde . et ern al w ings . focus . storage . data . xml Ċ Ċ import Ġde . et ern al w ings . focus . storage . data .* Ċ import Ġde . et ern al w ings . focus . storage . xml . Xml Constants Ċ import Ġde . et ern al w ings . focus . storage . xml . attr Ċ import Ġde . et ern al w ings . focus . storage . xml . child Ċ import Ġde . et ern al w ings . focus . storage . xml . date Element Ċ import Ġorg . j dom 2 . Element Ċ Ċ abstract Ġclass ĠBase XmlElement Converter < T Ġ: ĠChange set Element >( private Ġval ĠtagName : ĠString ) Ġ: ĠXml Element Converter < T > Ġ{ ĊĊĠĠĠ Ġabstract Ġfun Ġfill XmlElement ( source : ĠT , Ġcontainer : ĠElement ) ĊĊĠĠĠ Ġoverride Ġfun Ġwrite ( source : ĠT ): ĠElement Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠElement ( tagName , ĠXml Constants . NAMESPACE ). also Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . setAttribute (" id ", Ġsource . id ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġoperation Ġ= Ġif Ġ( source Ġis ĠWith Operation ) Ġsource . operation Ġelse ĠOperation . CREATE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( operation Ġ!= ĠOperation . CREATE ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . setAttribute (" op ", Ġoperation . name . toLowerCase ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcontainer Ġ= Ġif Ġ( operation Ġ== ĠOperation . REFERENCE ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġinner Ġ= ĠElement (" snapshot - reference ", ĠXml Constants . NAMESPACE ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . add Content ( inner ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinner ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġit ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( source Ġis ĠWith Creation Timestamp ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġadded Ġ= Ġsource . added ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcheck ( added Ġ!= Ġnull ) Ġ{ Ġ" A Ġ${ java Class . simple Name } Ġchangeset Ġentry Ġalways Ġhas Ġan Ġadded Ġdate ." Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġelem Ġ= Ġdate Element (" added ", Ġadded ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsource . order ?. let Ġ{ Ġelem . setAttribute (" order ", Ġit . toString ()) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontainer . add Content ( elem ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( this Ġis ĠWith Modification Timestamp ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmodified ?. let Ġ{ Ġmodified Ġ-> Ġcontainer . add Content ( date Element (" modified ", Ġmodified )) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġfill XmlElement ( source , Ġcontainer ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġread ( source : ĠElement ): ĠT Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġoperation Ġ= Ġsource . attr (" op ") ?. to Operation () Ġ?: ĠOperation . CREATE ĊĠĠĠĠĠĠĠ Ġval Ġid Ġ= Ġsource . getAttribute (" id "). value ĊĠĠĠĠĠĠĠ Ġval Ġcontainer Ġ= Ġif Ġ( operation Ġ== ĠOperation . REFERENCE ) Ġsource . child (" reference - snapshot ") !! Ġelse Ġsource ĊĊĠĠĠĠĠĠĠ Ġreturn Ġread Values ( id , Ġoperation , Ġcontainer ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġabstract Ġfun Ġread Values ( id : ĠString , Ġoperation : ĠOperation , Ġcontainer : ĠElement ): ĠT Ċ } Ċ