/* Ċ Ġ* ĠMIT ĠLicense Ċ Ġ* Ċ Ġ* ĠCopyright Ġ( C ) Ġ 2 0 2 0 ĠFre der ick ĠBa ier Ċ Ġ* Ċ Ġ* ĠPermission Ġis Ġhereby Ġgranted , Ġfree Ġof Ġcharge , Ġto Ġany Ġperson Ġobtaining Ġa Ġcopy Ġof Ġthis Ġsoftware Ġand Ġassociated Ċ Ġ* Ġdocumentation Ġfiles Ġ( the Ġ" Software "), Ġto Ġdeal Ġin Ġthe ĠSoftware Ġwithout Ġrestriction , Ġincluding Ġwithout Ġlimitation Ċ Ġ* Ġthe Ġrights Ġto Ġuse , Ġcopy , Ġmodify , Ġmerge , Ġpublish , Ġdistribute , Ġsublicense , Ġand / or Ġsell Ġcopies Ġof Ġthe ĠSoftware , Ċ Ġ* Ġand Ġto Ġpermit Ġpersons Ġto Ġwhom Ġthe ĠSoftware Ġis Ġfurnished Ġto Ġdo Ġso , Ġsubject Ġto Ġthe Ġfollowing Ġconditions : Ċ Ġ* Ċ Ġ* ĠThe Ġabove Ġcopyright Ġnotice Ġand Ġthis Ġpermission Ġnotice Ġshall Ġbe Ġincluded Ġin Ġall Ċ Ġ* Ġcopies Ġor Ġsubstantial Ġportions Ġof Ġthe ĠSoftware . Ċ Ġ* Ċ Ġ* ĠTHE ĠSOFTWARE ĠIS ĠPROVIDED Ġ" AS ĠIS ", ĠWITHOUT ĠWARRANTY ĠOF ĠANY ĠKIND , ĠEXPRESS ĠOR ĠIMPLIED , Ċ Ġ* ĠINCLUDING ĠBUT ĠNOT ĠLIMITED ĠTO ĠTHE ĠWARRANTIES ĠOF ĠMERCHANTABILITY , Ċ Ġ* ĠFITNESS ĠFOR ĠA ĠPARTICULAR ĠPURPOSE ĠAND ĠNONINFRINGEMENT . Ċ Ġ* ĠIN ĠNO ĠEVENT ĠSHALL ĠTHE ĠAUTHORS ĠOR ĠCOPYRIGHT ĠHOLDERS ĠBE ĠLIABLE ĠFOR ĠANY ĠCLAIM , Ċ Ġ* ĠDAMAGES ĠOR ĠOTHER ĠLIABILITY , ĠWHETHER ĠIN ĠAN ĠACTION ĠOF ĠCONTRACT , ĠTORT ĠOR ĠOTHERWISE , Ċ Ġ* ĠARISING ĠFROM , ĠOUT ĠOF ĠOR ĠIN ĠCONNECTION ĠWITH ĠTHE ĠSOFTWARE ĠOR ĠTHE ĠUSE ĠOR ĠOTHER Ċ Ġ* ĠDEALINGS ĠIN ĠTHE ĠSOFTWARE . Ċ Ġ*/ Ċ Ċ package Ġeu . the simple cloud . client server api . lib . default packets Ċ Ċ import Ġeu . the simple cloud . client server api . lib . connection . I Connection Ċ import Ġeu . the simple cloud . client server api . lib . packet . packet type . Json Packet Ċ import Ġeu . the simple cloud . client server api . lib . promise . IC om munication Promise Ċ import Ġorg . apache . commons . io . FileUtils Ċ import Ġorg . apache . commons . io . file filter . IO File Filter Ċ import Ġjava . io . File Ċ Ċ class ĠPacket IO Sync Directories () Ġ: ĠJson Packet () Ġ{ ĊĊĠĠĠ Ġconstructor ( dir Path On Other Side : ĠString , Ġdirectories On Other Side : ĠList < String >) Ġ: Ġthis () Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . json Lib . append (" dir Path On Other Side ", Ġdir Path On Other Side ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. append (" directories On Other Side ", Ġdirectories On Other Side ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġsuspend Ġfun Ġhandle ( connection : ĠI Connection ): ĠI Communication Promise < Any > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdir Path On Other Side Ġ= Ġthis . json Lib . getString (" dir Path On Other Side ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġreturn Ġcontent Exception (" dir Path On Other Side ") ĊĠĠĠĠĠĠĠ Ġval Ġfile InfoList Ġ= Ġthis . json Lib . getObject (" directories On Other Side ", ĠArray < String >:: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġreturn Ġcontent Exception (" directories On Other Side ") ĊĠĠĠĠĠĠĠ Ġval Ġother Side All Dirs Ġ= Ġfile InfoList . map Ġ{ ĠFile ( it ) Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġthis Side All Directories Ġ= ĠgetAll Directories ( File ( dir Path On Other Side )) ĊĊĠĠĠĠĠĠĠ Ġval Ġcreate Mutable List Ġ= Ġother Side All Dirs . to Mutable List () ĊĠĠĠĠĠĠĠ Ġcreate Mutable List . removeAll ( this Side All Directories ) ĊĠĠĠĠĠĠĠ Ġcreate Mutable List . forEach Ġ{ Ġit . mkdir s () Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġdelete Mutable List Ġ= Ġthis Side All Directories . to Mutable List () ĊĠĠĠĠĠĠĠ Ġdelete Mutable List . removeAll ( other Side All Dirs ) ĊĠĠĠĠĠĠĠ Ġdelete Mutable List . forEach Ġ{ ĠFileUtils . delete Directory ( it ) Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġunit () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠgetAll Directories ( directory : ĠFile ): ĠCollection < File > Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(! directory . exists ()) Ġreturn Ġempty List () ĊĠĠĠĠĠĠĠ Ġval Ġaccept All Filter Ġ= Ġobject Ġ: ĠIO File Filter Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġaccept ( file : ĠFile ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġaccept ( dir : ĠFile ?, Ġname : ĠString ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn ĠFileUtils . list Files And Dirs ( directory , Ġaccept All Filter , Ġaccept All Filter ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. filter Ġ{ Ġit . isDirectory Ġ}. filter Ġ{ Ġit Ġ!= Ġdirectory Ġ} ĊĠĠĠ Ġ} Ċ }