package Ġbr . com . j ir atorio . strategy . imp ed iment Ċ Ċ import Ġbr . com . j ir atorio . domain . Imp ed iment History Ċ import Ġbr . com . j ir atorio . domain . changelog . Change log Ċ import Ġjava . time . LocalDate Ċ import Ġjava . time . LocalDateTime Ċ Ċ object ĠImp ed iment Calculator By Column Ġ: ĠImp ed iment Calculator Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġcalc Imp ed iment ( ĊĠĠĠĠĠĠĠ Ġimp ed iment Columns : ĠList < String > ?, ĊĠĠĠĠĠĠĠ Ġchangelog : ĠChangelog , ĊĠĠĠĠĠĠĠ ĠendDate : ĠLocalDateTime , ĊĠĠĠĠĠĠĠ Ġh olidays : ĠList < LocalDate >, ĊĠĠĠĠĠĠĠ Ġignore Week end : ĠBoolean ?, ĊĠĠĠ Ġ): ĠPair < Long , ĠSet < Imp ed iment History >> Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( imp ed iment Columns Ġ== Ġnull Ġ|| Ġimp ed iment Columns . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠImp ed iment Calculator . EMPTY _ RESULT ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġimp ed iment History Ġ= Ġchangelog . column Change log ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. filter Ġ{ Ġimp ed iment Columns . contains ( it . to ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠInternal Imp ed iment History ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠstartDate Ġ= Ġit . startDate , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠendDate Ġ= Ġit . endDate , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlead Time Ġ= Ġit . lead Time ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn ĠPair ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġimp ed iment History . map Ġ{ Ġit . lead Time Ġ}. sum (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġimp ed iment History ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. sorted With ( Comparator . comp aring ( Imp ed iment History :: startDate )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. to Mutable Set () ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} Ċ Ċ } Ċ