/* Ċ Ġ* Ġ ĠCopyright Ġ( c ) Ġ 2 0 0 4 - 2 0 2 1 , ĠUniversity Ġof ĠOs lo Ċ Ġ* Ġ ĠAll Ġrights Ġreserved . Ċ Ġ* Ċ Ġ* Ġ ĠRedistribution Ġand Ġuse Ġin Ġsource Ġand Ġbinary Ġforms , Ġwith Ġor Ġwithout Ċ Ġ* Ġ Ġmodification , Ġare Ġpermitted Ġprovided Ġthat Ġthe Ġfollowing Ġconditions Ġare Ġmet : Ċ Ġ* Ġ ĠRedistributions Ġof Ġsource Ġcode Ġmust Ġretain Ġthe Ġabove Ġcopyright Ġnotice , Ġthis Ċ Ġ* Ġ Ġlist Ġof Ġconditions Ġand Ġthe Ġfollowing Ġdisclaimer . Ċ Ġ* Ċ Ġ* Ġ ĠRedistributions Ġin Ġbinary Ġform Ġmust Ġreproduce Ġthe Ġabove Ġcopyright Ġnotice , Ċ Ġ* Ġ Ġthis Ġlist Ġof Ġconditions Ġand Ġthe Ġfollowing Ġdisclaimer Ġin Ġthe Ġdocumentation Ċ Ġ* Ġ Ġand / or Ġother Ġmaterials Ġprovided Ġwith Ġthe Ġdistribution . Ċ Ġ* Ġ ĠNeither Ġthe Ġname Ġof Ġthe ĠH ISP Ġproject Ġnor Ġthe Ġnames Ġof Ġits Ġcontributors Ġmay Ċ Ġ* Ġ Ġbe Ġused Ġto Ġendorse Ġor Ġpromote Ġproducts Ġderived Ġfrom Ġthis Ġsoftware Ġwithout Ċ Ġ* Ġ Ġspecific Ġprior Ġwritten Ġpermission . Ċ Ġ* Ċ Ġ* Ġ ĠTHIS ĠSOFTWARE ĠIS ĠPROVIDED ĠBY ĠTHE ĠCOPYRIGHT ĠHOLDERS ĠAND ĠCONTRIBUTORS Ġ" AS ĠIS " ĠAND Ċ Ġ* Ġ ĠANY ĠEXPRESS ĠOR ĠIMPLIED ĠWARRANTIES , ĠINCLUDING , ĠBUT ĠNOT ĠLIMITED ĠTO , ĠTHE ĠIMPLIED Ċ Ġ* Ġ ĠWARRANTIES ĠOF ĠMERCHANTABILITY ĠAND ĠFITNESS ĠFOR ĠA ĠPARTICULAR ĠPURPOSE ĠARE Ċ Ġ* Ġ ĠDISCLAIMED . ĠIN ĠNO ĠEVENT ĠSHALL ĠTHE ĠCOPYRIGHT ĠOWNER ĠOR ĠCONTRIBUTORS ĠBE ĠLIABLE ĠFOR Ċ Ġ* Ġ ĠANY ĠDIRECT , ĠINDIRECT , ĠINCIDENTAL , ĠSPECIAL , ĠEXEMPLARY , ĠOR ĠCONSEQUENTIAL ĠDAMAGES Ċ Ġ* Ġ Ġ( INCLUDING , ĠBUT ĠNOT ĠLIMITED ĠTO , ĠPROCUREMENT ĠOF ĠSUBSTITUTE ĠGOODS ĠOR ĠSERVICES ; Ċ Ġ* Ġ ĠLOSS ĠOF ĠUSE , ĠDATA , ĠOR ĠPROFITS ; ĠOR ĠBUSINESS ĠINTERRUPTION ) ĠHOWEVER ĠCAUSED ĠAND ĠON Ċ Ġ* Ġ ĠANY ĠTHEORY ĠOF ĠLIABILITY , ĠWHETHER ĠIN ĠCONTRACT , ĠSTRICT ĠLIABILITY , ĠOR ĠTORT Ċ Ġ* Ġ Ġ( INCLUDING ĠNEGLIGENCE ĠOR ĠOTHERWISE ) ĠARISING ĠIN ĠANY ĠWAY ĠOUT ĠOF ĠTHE ĠUSE ĠOF ĠTHIS Ċ Ġ* Ġ ĠSOFTWARE , ĠEVEN ĠIF ĠADVISED ĠOF ĠTHE ĠPOSSIBILITY ĠOF ĠSUCH ĠDAMAGE . Ċ Ġ*/ Ċ package Ġorg . h isp . dh is . android . core . period . internal Ċ Ċ import Ġjava . util .* Ċ import Ġorg . h isp . dh is . android . core . common . Relative Period Ċ import Ġorg . h isp . dh is . android . core . period . Period Ċ import Ġorg . h isp . dh is . android . core . period . Period Type Ċ Ċ internal Ġclass ĠParent Period Generator Impl ( ĊĠĠĠ Ġprivate Ġval Ġdaily : ĠPeriod Generator , ĊĠĠĠ Ġprivate Ġval Ġweekly : ĠWeek ly Period Generators , ĊĠĠĠ Ġprivate Ġval Ġbi Week ly : ĠPeriod Generator , ĊĠĠĠ Ġprivate Ġval Ġmonthly : ĠPeriod Generator , ĊĠĠĠ Ġprivate Ġval Ġn Monthly : ĠN Monthly Period Generators , ĊĠĠĠ Ġprivate Ġval Ġyear ly : ĠYear ly Period Generators Ċ ) Ġ: ĠParent Period Generator Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġgenerate Periods (): ĠList < Period > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġperiods : ĠMutable List < Period > Ġ= ĠArrayList () ĊĠĠĠĠĠĠĠ Ġfor Ġ( period Type Ġin ĠPeriod Type . values ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġperiods In Type Ġ= Ġgenerate Periods ( period Type , Ġperiod Type . default End Periods ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġperiods . addAll ( periods In Type ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġperiods ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġgenerate Periods ( period Type : ĠPeriod Type , Ġend Periods : ĠInt ): ĠList < Period > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġgenerate Periods ( period Type , Ġperiod Type . default Start Periods , Ġend Periods ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġgenerate Periods ( period Type : ĠPeriod Type , Ġstart Periods : ĠInt , Ġend Periods : ĠInt ): ĠList < Period > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġget Period Generator ( period Type ). generate Periods ( start Periods , Ġend Periods ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġgenerate Period ( period Type : ĠPeriod Type , Ġdate : ĠDate , Ġoffset : ĠInt ): ĠPeriod ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġperiod Generator Ġ= Ġget Period Generator ( period Type ) ĊĠĠĠĠĠĠĠ Ġreturn Ġperiod Generator . generate Period ( date , Ġoffset ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġgenerate Relative Periods ( relative Period : ĠRelative Period ): ĠList < Period > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġperiod Generator Ġ= Ġget Period Generator ( relative Period . period Type ) ĊĊĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrelative Period . start Ġ!= Ġnull Ġ&& Ġrelative Period . end Ġ!= Ġnull Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġperiod Generator . generate Periods ( relative Period . start , Ġrelative Period . end ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrelative Period . periods This Year Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġperiod Generator . generate Periods In Year ( 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrelative Period . periods Last Year Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġperiod Generator . generate Periods In Year (- 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġempty List () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Suppress (" Complex Method ") ĊĠĠĠ Ġprivate Ġfun Ġget Period Generator ( period Type : ĠPeriod Type ): ĠPeriod Generator Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ( period Type ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPeriod Type . Daily Ġ-> Ġdaily ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPeriod Type . Week ly Ġ-> Ġweekly . weekly ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPeriod Type . Week ly Wednesday Ġ-> Ġweekly . weekly Wednesday ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPeriod Type . Week ly Thursday Ġ-> Ġweekly . weekly Thursday ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPeriod Type . Week ly Saturday Ġ-> Ġweekly . weekly Saturday ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPeriod Type . Week ly S unday Ġ-> Ġweekly . weekly S unday ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPeriod Type . Bi Week ly Ġ-> Ġbi Week ly ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPeriod Type . Monthly Ġ-> Ġmonthly ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPeriod Type . Bi Monthly Ġ-> Ġn Monthly . bi Monthly ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPeriod Type . Qu arter ly Ġ-> Ġn Monthly . quarter ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPeriod Type . Six Monthly Ġ-> Ġn Monthly . six Monthly ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPeriod Type . Six Monthly April Ġ-> Ġn Monthly . six Monthly April ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPeriod Type . Six Monthly Nov Ġ-> Ġn Monthly . six Monthly Nov ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPeriod Type . Year ly Ġ-> Ġyear ly . year ly ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPeriod Type . Financial April Ġ-> Ġyear ly . financial April ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPeriod Type . Financial July Ġ-> Ġyear ly . financial July ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPeriod Type . Financial Oct Ġ-> Ġyear ly . financial Oct ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPeriod Type . Financial Nov Ġ-> Ġyear ly . financial Nov ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġfun Ġcreate ( calendar Provider : ĠCalendar Provider ): ĠParent Period Generator Impl Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcalendar Ġ= Ġcalendar Provider . calendar ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠParent Period Generator Impl ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDaily Period Generator ( calendar ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠWeek ly Period Generators . create ( calendar ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠBi Week ly Period Generator ( calendar ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMonth ly Period Generator ( calendar ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠN Monthly Period Generators . create ( calendar ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠYear ly Period Generators . create ( calendar ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ