package Ġcom . github . g fr anks . collapsible . calendar . model Ċ Ċ import Ġorg . joda . time . DateTime Constants Ċ import Ġorg . joda . time . Days Ċ import Ġorg . joda . time . LocalDate Ċ Ċ abstract Ġclass ĠRange Unit Ġprotected Ġconstructor ( ĊĠĠĠĠĠĠĠ Ġdate From : ĠLocalDate , ĊĠĠĠĠĠĠĠ Ġdate To : ĠLocalDate , ĊĠĠĠĠĠĠĠ Ġtoday : ĠLocalDate , ĊĠĠĠĠĠĠĠ Ġval Ġmin Date : ĠLocalDate ?, ĊĠĠĠĠĠĠĠ Ġval Ġmax Date : ĠLocalDate ? Ċ ) Ġ: ĠCalendar Unit ( date From , Ġdate To , Ġtoday ) Ġ{ ĊĊĠĠĠ Ġval Ġfirst Enabled : ĠLocalDate ĊĠĠĠĠĠĠĠ Ġget () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( min Date Ġ!= Ġnull Ġ&& Ġdate From . is Before ( min Date )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmin Date ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdate From ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( min Date Ġ!= Ġnull Ġ&& Ġmax Date Ġ!= Ġnull Ġ&& Ġmin Date . is After ( max Date )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠIllegalArgumentException (" Min Ġdate Ġshould Ġbe Ġbefore Ġmax Ġdate ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġabstract Ġfun Ġget First Date Of Current Month ( current Month : ĠLocalDate ?): ĠLocalDate ? ĊĊĠĠĠ Ġoverride Ġfun Ġhas Date ( date : ĠLocalDate ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġmin Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġvar Ġmax Ġ= Ġtrue ĊĊĠĠĠĠĠĠĠ Ġval Ġmax Date Ġ= Ġmax Date ĊĠĠĠĠĠĠĠ Ġif Ġ( max Date Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmax Ġ= Ġ! date . is After ( max Date ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġmin Date Ġ= Ġmin Date ĊĠĠĠĠĠĠĠ Ġif Ġ( min Date Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmin Ġ= Ġ! date . is Before ( min Date ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġmin Ġ&& Ġmax ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ@ param Ġfirst Day OfMonth ĠFirst Ġday Ġof Ġcurrent Ġmonth Ġin Ġrange Ġunit ĊĠĠĠĠ Ġ* Ġ@ return ĠWeek Ġof Ġmonth Ġof Ġfirst Ġenabled Ġdate , Ġ 0 Ġif Ġno Ġdates Ġare Ġenabled . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġget First Week ( first Day OfMonth : ĠLocalDate ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdate Ġ= Ġif Ġ( min Date Ġ!= Ġnull Ġ&& Ġmin Date . is After ( date From )) Ġ{ Ġ// ĠTODO Ġcheck Ġif Ġsame Ġmonth ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmin Date ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfirst Day OfMonth ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġget Week In Month ( date ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Week In Month ( date : ĠLocalDate ?): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġdate Ġ?: Ġreturn Ġ 0 ĊĠĠĠĠĠĠĠ Ġval Ġfirst Ġ= Ġdate . with Day OfMonth ( 1 ). with DayOfWeek ( DateTime Constants . MON DAY ) ĊĠĠĠĠĠĠĠ Ġval Ġdays Ġ= ĠDays . days Between ( first , Ġdate ) ĊĠĠĠĠĠĠĠ Ġreturn Ġdays . div ided By ( DateTime Constants . DAYS _ PER _ WEEK ). days ĊĠĠĠ Ġ} Ċ } Ċ