/** Ċ Ġ* Ġ< s late _ header > Ċ Ġ* Ġurl : Ġwww . s late kit . com Ċ Ġ* Ġgit : Ġwww . github . com / code - helix / s late kit Ċ Ġ* Ġorg : Ġwww . code helix . co Ċ Ġ* Ġauthor : ĠK ish ore ĠRed dy Ċ Ġ* Ġcopyright : Ġ 2 0 1 6 ĠCode Hel ix ĠSolutions ĠInc . Ċ Ġ* Ġlicense : Ġrefer Ġto Ġwebsite Ġand / or Ġgithub Ċ Ġ* Ġabout : ĠA Ġtool - kit , Ġutility Ġlibrary Ġand Ġserver - backend Ċ Ġ* Ġman tra : ĠSimp licity Ġabove Ġall Ġelse Ċ Ġ* Ġ</ s late _ header > Ċ Ġ*/ Ċ Ċ package Ġs late kit . common . info Ċ Ċ import Ġs late kit . common . ext . to Id Ċ import Ġs late kit . common . io . Files Ċ import Ġjava . io . File Ċ Ċ /** Ċ Ġ* ĠRepresents Ġfolder Ġlocations Ġfor Ġan Ġapplication Ċ Ġ* ĠFold ers Ġlocations Ġare Ġorganized Ġby Ġcompany / app Ġand Ġstored Ġin Ġthe Ġuser Ġhome Ġdirectory . Ċ Ġ* Ġe . g . Ċ Ġ* Ċ Ġ* Ġ- Ġuser ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( Ġe . g Ġ/ usr / k re ddy Ġor Ġc :/ users / k re ddy Ġ) Ċ Ġ* ĠĠ Ġ- Ġcompany ĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( Ġ? Ġname Ġof Ġcompany Ġor Ġname Ġof Ġroot Ġfolder Ġ) Ċ Ġ* ĠĠĠĠ Ġ- Ġarea ĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( Ġ? Ġparent Ġfolder Ġfor Ġall Ġapps Ġfor Ġa Ġcertain Ġarea / department / group Ġ) Ċ Ġ* ĠĠĠĠĠĠ Ġ- Ġproduct 1 . console Ġ( Ġindividual Ġapps Ġgo Ġhere Ġ) Ċ Ġ* ĠĠĠĠĠĠ Ġ- Ġproduct 2 . shell Ċ Ġ* ĠĠĠĠĠĠ Ġ- Ġproduct 3 . server Ċ Ġ* ĠĠĠĠĠĠĠĠ Ġ- Ġconf Ċ Ġ* ĠĠĠĠĠĠĠĠ Ġ- Ġcache Ċ Ġ* ĠĠĠĠĠĠĠĠ Ġ- Ġlogs Ċ Ġ* ĠĠĠĠĠĠĠĠ Ġ- Ġinputs Ċ Ġ* ĠĠĠĠĠĠĠĠ Ġ- Ġoutputs Ċ Ġ* Ċ Ġ* Ġ@ param Ġhome : Ġlocation Ġof Ġwhere Ġthe Ġfolders Ġres ide Ġ( Ġe . g . Ġ~/ Ġ( Ġuser Ġdirectory ), Ġ/ apps /, Ġcurrent Ġdirectory Ġ) Ċ Ġ* Ġ@ param Ġroot Ġ: Ġoptional Ġname Ġof Ġroot Ġfolder Ġor Ġcompany Ġname Ċ Ġ* Ġ@ param Ġarea Ġ: Ġoptional Ġname Ġof Ġgroup Ġfolder Ġthat Ġholds Ġall Ġapps Ċ Ġ* Ġ@ param Ġapp Ġ: Ġname Ġof Ġthe Ġapplication Ġfolder Ġfor Ġthis Ġapp Ċ Ġ* Ġ@ param Ġcache Ġ: Ġname Ġof Ġcache Ġfolder Ġfor Ġthe Ġapplication Ċ Ġ* Ġ@ param Ġinputs Ġ: Ġname Ġof Ġinput Ġfolder Ġfor Ġthe Ġapplication Ċ Ġ* Ġ@ param Ġlogs Ġ: Ġname Ġof Ġlogs Ġfolder Ġfor Ġthe Ġapplication Ċ Ġ* Ġ@ param Ġoutputs Ġ: Ġname Ġof Ġoutput Ġfolder Ġfor Ġthe Ġapplication Ċ Ġ*/ Ċ Ċ data Ġclass ĠFold ers Ġprivate Ġconstructor ( ĊĊĠĠĠĠĠĠĠ Ġ@ Jvm Field ĊĠĠĠĠĠĠĠ Ġval Ġhome : ĠString , ĊĊĠĠĠĠĠĠĠ Ġ@ Jvm Field ĊĠĠĠĠĠĠĠ Ġval Ġroot : ĠString , ĊĊĠĠĠĠĠĠĠ Ġ@ Jvm Field ĊĠĠĠĠĠĠĠ Ġval Ġarea : ĠString , ĊĊĠĠĠĠĠĠĠ Ġ@ Jvm Field ĊĠĠĠĠĠĠĠ Ġval Ġapp : ĠString , ĊĊĠĠĠĠĠĠĠ Ġ@ Jvm Field ĊĠĠĠĠĠĠĠ Ġval Ġcache : ĠString , ĊĊĠĠĠĠĠĠĠ Ġ@ Jvm Field ĊĠĠĠĠĠĠĠ Ġval Ġinputs : ĠString , ĊĊĠĠĠĠĠĠĠ Ġ@ Jvm Field ĊĠĠĠĠĠĠĠ Ġval Ġlogs : ĠString , ĊĊĠĠĠĠĠĠĠ Ġ@ Jvm Field ĊĠĠĠĠĠĠĠ Ġval Ġoutputs : ĠString , ĊĊĠĠĠĠĠĠĠ Ġ@ Jvm Field ĊĠĠĠĠĠĠĠ Ġval Ġtemp : ĠString , ĊĊĠĠĠĠĠĠĠ Ġ@ Jvm Field ĊĠĠĠĠĠĠĠ Ġval Ġconf : ĠString Ċ ) Ġ: ĠMeta Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġprops (): ĠList < Pair < String , ĠString >> Ġ= ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" root " Ġto Ġroot , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" area " Ġto Ġarea , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" app " Ġto Ġapp , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" cache " Ġto Ġcache , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" inputs " Ġto Ġapp , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" log " Ġto Ġlogs , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" outputs " Ġto Ġoutputs , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" temp " Ġto Ġtemp ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġval Ġpath To Conf ĠĠ Ġ: ĠString Ġget () Ġ= Ġthis . path To App Ġ+ ĠFile . separator Ġ+ Ġconf ĊĠĠĠ Ġval Ġpath To Cache Ġ Ġ: ĠString Ġget () Ġ= Ġthis . path To App Ġ+ ĠFile . separator Ġ+ Ġcache ĊĠĠĠ Ġval Ġpath To Inputs Ġ: ĠString Ġget () Ġ= Ġthis . path To App Ġ+ ĠFile . separator Ġ+ Ġinputs ĊĠĠĠ Ġval Ġpath To Logs ĠĠ Ġ: ĠString Ġget () Ġ= Ġthis . path To App Ġ+ ĠFile . separator Ġ+ Ġlogs ĊĠĠĠ Ġval Ġpath To Outputs : ĠString Ġget () Ġ= Ġthis . path To App Ġ+ ĠFile . separator Ġ+ Ġoutputs ĊĠĠĠ Ġval Ġpath To Temp ĠĠ Ġ: ĠString Ġget () Ġ= Ġthis . path To App Ġ+ ĠFile . separator Ġ+ Ġtemp ĊĊĠĠĠ Ġfun Ġbuild Path ( part : ĠString ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġuser Home Ġ= ĠSystem . getProperty (" user . home ") ĊĠĠĠĠĠĠĠ Ġval Ġpath Ġ= Ġuser Home Ġ+ ĠFile . separator Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġroot Ġ+ ĠFile . separator Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarea Ġ+ ĠFile . separator Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpart . replace (" Ġ", Ġ"") ĊĠĠĠĠĠĠĠ Ġreturn Ġpath ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġval Ġpath To App : ĠString ĊĠĠĠĠĠĠĠ Ġget () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsep Ġ= ĠFile . separator ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġhome Path Ġ= Ġhome ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġroot Path Ġ= Ġhome Path Ġ+ Ġsep Ġ+ Ġroot ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġarea Path Ġ= Ġroot Path Ġ+ Ġsep Ġ+ Ġarea ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfinal Path Ġ= Ġarea Path Ġ+ Ġsep Ġ+ Ġapp ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfinal Path ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġcreate () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġroot Path Ġ= ĠFiles . mk Dir ( home , Ġroot ) ĊĠĠĠĠĠĠĠ Ġval Ġarea Path Ġ= ĠFiles . mk Dir ( rootPath , Ġarea ) ĊĠĠĠĠĠĠĠ Ġval Ġapp Path Ġ= ĠFiles . mk Dir ( area Path , Ġapp ) ĊĠĠĠĠĠĠĠ ĠFiles . mk Dir ( app Path , Ġcache ) ĊĠĠĠĠĠĠĠ ĠFiles . mk Dir ( app Path , Ġconf ) ĊĠĠĠĠĠĠĠ ĠFiles . mk Dir ( app Path , Ġinputs ) ĊĠĠĠĠĠĠĠ ĠFiles . mk Dir ( app Path , Ġlogs ) ĊĠĠĠĠĠĠĠ ĠFiles . mk Dir ( app Path , Ġoutputs ) ĊĠĠĠĠĠĠĠ ĠFiles . mk Dir ( app Path , Ġtemp ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġval Ġnone Ġ= ĠFold ers ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhome Ġ= ĠSystem . getProperty (" user . dir "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġroot Ġ= Ġ" s late kit ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarea Ġ= Ġ" samples ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġapp Ġ= Ġ" app ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcache Ġ= Ġ" cache ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinputs Ġ= Ġ" input ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlogs Ġ= Ġ" log ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoutputs Ġ= Ġ" output ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtemp Ġ= Ġ" temp ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconf Ġ= Ġ" conf " ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġval Ġdefault Ġ= ĠFold ers ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhome Ġ= ĠSystem . getProperty (" user . dir "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġroot Ġ= Ġ" s late kit ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarea Ġ= Ġ" samples ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġapp Ġ= Ġ" app ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcache Ġ= Ġ" cache ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinputs Ġ= Ġ" input ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlogs Ġ= Ġ" log ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoutputs Ġ= Ġ" output ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtemp Ġ= Ġ" temp ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconf Ġ= Ġ" conf " ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġfun Ġuser Dir ( about : About ) Ġ: ĠFold ers Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġcreate ( System . getProperty (" user . home "), Ġabout . company , Ġabout . area , Ġabout . name ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġfun Ġuser Dir ( root : ĠString , Ġarea : ĠString , Ġname : ĠString ) Ġ: ĠFold ers Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġcreate ( System . getProperty (" user . home "), Ġroot , Ġarea , Ġname ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġfun Ġinstall Dir ( tool : String , Ġabout : About ) Ġ: ĠFold ers Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġcreate ("/ usr / local / opt /$ tool ", Ġabout . company , Ġabout . area , Ġabout . name ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġcreate ( home : String , Ġroot : ĠString , Ġarea : ĠString , Ġapp : ĠString ) Ġ: ĠFold ers Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠFor Ġuser Ġhome Ġdirectories Ġ( Ġ~/ Ġ), Ġthe Ġroot Ġalways Ġbegins Ġwith Ġ"." Ġas Ġin Ġ~/. s late kit ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfinal Root Ġ= Ġ"." Ġ+ Ġroot . to Id () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfinal Area Ġ= Ġarea . to Id () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfinal App Ġ= Ġapp . to Id () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠFold ers ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhome Ġ= Ġhome , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġroot Ġ= Ġfinal Root , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarea Ġ= Ġfinal Area , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġapp Ġ= Ġfinal App , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcache Ġ= Ġ" cache ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinputs Ġ= Ġ" input ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlogs Ġ= Ġ" log ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoutputs Ġ= Ġ" output ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtemp Ġ= Ġ" temp ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconf Ġ= Ġ" conf " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ