package Ġcom . codec ensus . core Ċ Ċ import Ġcom . codec ensus . core . callbacks . Analyze Callback Ċ import Ġcom . codec ensus . core . callbacks . Clone Callback Ċ import Ġcom . codec ensus . core . callbacks . Pull Callback Ċ import Ġcom . codec ensus . core . callbacks . Setup Callback Ċ import Ġorg . eclipse . j git . rev walk . Rev Commit Ċ import Ġjava . io . File Ċ import Ġjava . util .* ĊĊ Ċ /** Ċ Ġ* ĠCreated Ġby Ġke vin Ġon Ġ 0 8 / 1 2 / 1 8 Ġat Ġ 1 4 : 0 1 Ċ Ġ*/ Ċ class ĠCode C ensus ( var Ġgit : ĠGIT ) Ġ: ĠCode base Ġ{ ĊĊĠĠĠ Ġvar Ġinitialized Ġ: ĠBoolean Ġ= Ġfalse ĊĊĠĠĠ Ġoverride Ġfun Ġsetup ( callback : ĠSetup Callback ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif ( git . repo Exists ()){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgit . pull ( object : ĠPull Callback Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġpull Success () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinitialized Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcallback . setup Success () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġpull Failed ( error : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcallback . setup Failed ( error ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġ} else { ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgit . clone Repo ( object : ĠClone Callback Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġclone Success () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinitialized Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcallback . setup Success () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġclone Failure ( reason : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcallback . setup Failed ( reason ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġcontributors () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcommits Ġ: ĠIterable < Rev Commit > Ġ= Ġgit . log () ĊĊĠĠĠĠĠĠĠ Ġvar Ġcont Map Ġ: ĠHashMap < String , Int > Ġ= ĠHashMap () // Total Ġcontributions Ġper Ġperson ĊĠĠĠĠĠĠĠ Ġvar Ġtime Map Ġ: ĠMap < Date , Int > Ġ= ĠHashMap () // Cont ributions Ġby Ġdate ĊĊĠĠĠĠĠĠĠ Ġfor Ġ( commit Ġin Ġcommits ){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( cont Map . containsKey ( commit . name )){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcont Map [ commit . name ]?. plus ( 1 )?. let Ġ{ Ġcont Map . put ( commit . name , Ġit ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} else { ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcont Map [ commit . name ] Ġ= Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// TODO : Ġgather Ġdaily Ġcontribution ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġanalyze Total File Count ( callback : ĠAn alyze Callback ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif (! initialized ){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcallback . on Failure (" Not Ġinitialized , Ġcall Ġsetup () Ġfirst ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġdir String Ġ= Ġgit . get Repo Directory () ĊĊĠĠĠĠĠĠĠ ĠThread ( Runnable Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcount Ġ: ĠInt Ġ= Ġcount Files ( File ( dir String )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmodel Ġ= ĠResult Model ( Analysis Type . FILE _ COUNT , count ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcallback . on Finished ( model ) ĊĠĠĠĠĠĠĠ Ġ}). start () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcount Files ( dir Ġ: ĠFile ) Ġ: ĠInt { ĊĠĠĠĠĠĠĠ Ġvar Ġsize Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġfor Ġ( file Ġin Ġdir . list Files () !! ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsize Ġ+= Ġif Ġ( file . isFile ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 1 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcount Files ( file ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġsize ĊĠĠĠ Ġ} Ċ }