package Ġra ft . log Ċ Ċ import Ġjava . io . File Ċ import Ġjava . util . regex . Pattern ĊĊ Ċ class ĠLog Generation Ġ: ĠAbstract Log Dir , ĠComparable < Log Generation ?> Ġ{ ĊĠĠĠ Ġval Ġlast Included Index : ĠInt ĊĊĠĠĠ Ġconstructor ( base Dir : ĠFile ?, Ġlast Included Index : ĠInt ) Ġ: Ġsuper ( File ( base Dir , Ġgenerate Dir Name ( last Included Index ))) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . last Included Index Ġ= Ġlast Included Index ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġconstructor ( dir : ĠFile ) Ġ: Ġsuper ( dir ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmatcher Ġ= ĠDIR _ NAME _ PATTERN . matcher ( dir . name ) ĊĠĠĠĠĠĠĠ Ġrequire ( matcher . matches ()) Ġ{ Ġ" not Ġa Ġdirectory Ġname Ġof Ġlog Ġgeneration , Ġ[" Ġ+ Ġdir . name Ġ+ Ġ" ]" Ġ} ĊĠĠĠĠĠĠĠ Ġlast Included Index Ġ= Ġmatcher . group ( 1 ). toInt () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġoperator Ġfun Ġcompare To ( other : ĠLog Generation ?): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( other Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠInteger . compare ( last Included Index , Ġother . last Included Index ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġ 0 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠtoString (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġ" Log Generation {" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" dir =" Ġ+ Ġdir Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ", Ġlast Included Index =" Ġ+ Ġlast Included Index Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ' }' ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠDIR _ NAME _ PATTERN Ġ= ĠPattern . compile (" log -( \\ d + )") ĊĠĠĠĠĠĠĠ Ġfun ĠisValid Dir Name ( dir Name : ĠString ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠDIR _ NAME _ PATTERN . matcher ( dir Name ). matches () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġgenerate Dir Name ( last Included Index : ĠInt ): ĠString Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ" log -$ last Included Index " ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ Ċ } ĊĊ