// ĠCopyright Ġ 2 0 1 7 ĠS our cer er ĠInc . ĠAll ĠRights ĠReserved . Ċ // ĠAuthor : ĠAn at oly ĠK is lov Ġ( an at oly @ s our cer er . io ) Ċ Ċ package Ġapp . model Ċ Ċ import Ġapp . Protos Ċ import Ġcom . google . protobuf . InvalidProtocolBufferException Ċ import Ġorg . apache . commons . codec . digest . Digest Utils Ċ import Ġorg . eclipse . j git . rev walk . Rev Commit Ċ import Ġjava . security . Invalid Parameter Exception Ċ Ċ /** Ċ Ġ* ĠCommit . Ċ Ġ*/ Ċ data Ġclass ĠCommit ( ĊĠĠĠĠĠĠĠ Ġvar Ġre hash : ĠString Ġ= Ġ"", ĊĠĠĠĠĠĠĠ Ġvar Ġrepo : ĠRepo Ġ= ĠRepo (), ĊĠĠĠĠĠĠĠ Ġ// ĠTree Ġre hash Ġused Ġfor Ġadjust ments Ġof Ġstats Ġdue Ġto Ġrebase Ġand Ġf raud . ĊĠĠĠĠĠĠĠ Ġvar Ġtree Re hash : ĠString Ġ= Ġ"", ĊĠĠĠĠĠĠĠ Ġvar Ġauthor : ĠAuthor Ġ= ĠAuthor (), ĊĠĠĠĠĠĠĠ Ġvar Ġco authors : ĠList < Author > Ġ= Ġmutable ListOf (), ĊĠĠĠĠĠĠĠ Ġvar Ġdate Timestamp : ĠLong Ġ= Ġ 0 , ĊĠĠĠĠĠĠĠ Ġvar Ġdate TimeZone Offset : ĠInt Ġ= Ġ 0 , ĊĠĠĠĠĠĠĠ Ġvar Ġis Q om mit : ĠBoolean Ġ= Ġfalse , ĊĠĠĠĠĠĠĠ Ġvar Ġnum Lines Added : ĠInt Ġ= Ġ 0 , ĊĠĠĠĠĠĠĠ Ġvar Ġnum Lines Deleted : ĠInt Ġ= Ġ 0 , ĊĠĠĠĠĠĠĠ Ġvar Ġstats : ĠList < Commit Stats > Ġ= Ġmutable ListOf () Ċ ) Ġ{ ĊĠĠĠ Ġ// ĠWr apping ĠJ Git 's ĠRev Commit . ĊĠĠĠ Ġvar Ġraw : ĠRev Commit ? Ġ= Ġnull Ġ Ġ// ĠNot Ġsent Ġto Ġsever . ĊĠĠĠ Ġvar Ġdiffs : ĠList < Diff File > Ġ= ĠlistOf () ĊĊĠĠĠ Ġconstructor ( rev Commit : ĠRev Commit , Ġco authors List : ĠList < Author >? Ġ= Ġnull ) Ġ: ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis () Ġ{ ĊĠĠĠĠĠĠĠ Ġraw Ġ= Ġrev Commit ĊĊĠĠĠĠĠĠĠ Ġre hash Ġ= ĠDigest Utils . sha 2 5 6 Hex ( rev Commit . id . name ) ĊĠĠĠĠĠĠĠ Ġauthor Ġ= ĠAuthor ( rev Commit . author Ident . name , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrev Commit . author Ident . email Address . toLowerCase ()) ĊĠĠĠĠĠĠĠ Ġdate Timestamp Ġ= Ġrev Commit . author Ident . get When (). time Ġ/ Ġ 1 0 0 0 ĊĠĠĠĠĠĠĠ Ġdate TimeZone Offset Ġ= Ġrev Commit . author Ident . time Zone Offset ĊĠĠĠĠĠĠĠ Ġtree Re hash Ġ= ĠDigest Utils . sha 2 5 6 Hex ( rev Commit . tree . name ) ĊĠĠĠĠĠĠĠ Ġif Ġ( co authors List Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġco authors Ġ= Ġco authors List ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Throws ( Invalid Parameter Exception :: class ) ĊĠĠĠ Ġconstructor ( proto : ĠProto s . Commit ) Ġ: Ġthis () Ġ{ ĊĠĠĠĠĠĠĠ Ġre hash Ġ= Ġproto . re hash ĊĠĠĠĠĠĠĠ Ġrepo Ġ= ĠRepo ( re hash Ġ= Ġproto . repo Re hash ) ĊĠĠĠĠĠĠĠ Ġtree Re hash Ġ= Ġproto . tree Re hash ĊĠĠĠĠĠĠĠ Ġauthor Ġ= ĠAuthor ( proto . author Name , Ġproto . author Email ) ĊĠĠĠĠĠĠĠ Ġdate Timestamp Ġ= Ġproto . date ĊĠĠĠĠĠĠĠ Ġis Q om mit Ġ= Ġproto . is Q om mit ĊĠĠĠĠĠĠĠ Ġnum Lines Added Ġ= Ġproto . num Lines Added ĊĠĠĠĠĠĠĠ Ġnum Lines Deleted Ġ= Ġproto . num Lines Deleted ĊĠĠĠĠĠĠĠ Ġstats Ġ= Ġproto . stats List . map Ġ{ ĠCommit Stats ( it ) Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Throws ( InvalidProtocolBufferException :: class ) ĊĠĠĠ Ġconstructor ( bytes : ĠByteArray ) Ġ: Ġthis ( Protos . Commit . parseFrom ( bytes )) ĊĊĠĠĠ Ġconstructor ( serialized : ĠString ) Ġ: Ġthis ( serialized . toByteArray ()) ĊĊĠĠĠ Ġfun Ġget Proto (): ĠProto s . Commit Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠProto s . Commit . newBuilder () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Re hash ( re hash ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Repo Re hash ( repo . re hash ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Tree Re hash ( tree Re hash ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Author Name ( author . name ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Author Email ( author . email ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. setDate ( date Timestamp ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. setIs Q om mit ( is Q om mit ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Num Lines Added ( num Lines Added ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Num Lines Deleted ( num Lines Deleted ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. addAll Stats ( stats . map Ġ{ Ġit . get Proto () Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġserialize (): ĠByteArray Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġget Proto (). toByteArray () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġequals ( other : ĠAny ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( this Ġ=== Ġother ) Ġreturn Ġtrue ĊĠĠĠĠĠĠĠ Ġif Ġ( other ?. java Class Ġ!= Ġjava Class ) Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġreturn Ġre hash Ġ== Ġ( other Ġas ĠCommit ). re hash ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠhashCode (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġre hash . hashCode () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠgetAll Added (): ĠList < String > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġdiffs . map Ġ{ Ġit . getAll Added () Ġ}. flatten () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠgetAll Deleted (): ĠList < String > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġdiffs . map Ġ{ Ġit . getAll Deleted () Ġ}. flatten () ĊĠĠĠ Ġ} Ċ } Ċ