/* Ċ Ġ* ĠCopyright Ġ( c ) Ġ 2 0 0 8 - 2 0 1 8 ĠHa ul mont . Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* ĠĠĠĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ Ċ package Ġcom . ha ul mont . cub a . cli . cub apl ugin . updates cript Ċ Ċ import Ġcom . be ust . j command er . Parameters Ċ import Ġcom . ha ul mont . cub a . cli . cub apl ugin . model . Module Structure Ċ import Ġcom . ha ul mont . cub a . cli . Print Helper Ċ import Ġcom . ha ul mont . cub a . cli . commands . Generator Command Ċ import Ġcom . ha ul mont . cub a . cli . kode in Ċ import Ġcom . ha ul mont . cub a . cli . pro mp ting . Answers Ċ import Ġcom . ha ul mont . cub a . cli . pro mp ting . Questions List Ċ import Ġcom . ha ul mont . cub a . cli . resolve Ċ import Ġorg . kode in . di . generic . instance Ċ import Ġjava . nio . file . Files Ċ import Ġjava . util .* Ċ Ċ @ Parameters ( command Description Ġ= Ġ" Creates Ġnew Ġdatabase Ġupdate Ġscript ") Ċ class ĠUpdate Script Command Ġ: ĠGenerator Command < String >() Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġcalendar Ġ= ĠCalendar . getInstance () ĊĊĠĠĠ Ġprivate Ġval Ġprint Helper : ĠPrint Helper Ġby Ġk ode in . instance () ĊĊĠĠĠ Ġoverride Ġfun Ġget ModelName (): ĠString Ġ= Ġ" update Script Name " ĊĊĠĠĠ Ġoverride Ġfun Ġpre Execute () Ġ{ ĊĠĠĠĠĠĠĠ Ġcheck Project Ex istence () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠQuestions List . pro mp ting () Ġ{ ĊĠĠĠĠĠĠĠ Ġquestion (" script Name ", Ġ" Script Ġname ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdefault (" update Some Table ") ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġvalidate Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcheck Regex ("[ \\ w \\ - ]+ ", Ġ" Script Ġname Ġmay Ġcontain Ġonly Ġletters , Ġdigits , Ġdas hes Ġand Ġunders cores .") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġcreate Model ( answers : ĠAn swers ): ĠString Ġ= Ġanswers [" script Name "] Ġas ĠString ĊĊĠĠĠ Ġoverride Ġfun Ġgenerate ( bindings : ĠMap < String , ĠAny >) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġname Ġ= Ġmodel ĊĊĠĠĠĠĠĠĠ Ġval Ġdb Path Ġ= Ġproject Structure . getModule ( Module Structure . CORE _ MODULE ). path . resolve (" db ") ĊĊĊĠĠĠĠĠĠĠ Ġval Ġcurrent Year Update Dir Ġ= Ġdb Path . resolve (" update ", Ġproject Model . database . type , Ġget Year ()) ĊĠĠĠĠĠĠĠ Ġif Ġ(! Files . exists ( current Year Update Dir )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠFiles . create Directories ( current Year Update Dir ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġtoday Prefix Ġ= Ġget Today Prefix () ĊĊĠĠĠĠĠĠĠ Ġval Ġtoday Scripts Count Ġ= ĠFiles . walk ( current Year Update Dir , Ġ 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. filter Ġ{ ĠFiles . is Regular File ( it ) Ġ&& Ġit . fileName . toString (). endsWith (". sql ") Ġ&& Ġit . fileName . toString (). startsWith ( today Prefix ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. count () ĊĊĠĠĠĠĠĠĠ Ġval Ġscript Name Ġ= Ġ"$ today Prefix ${ 1 Ġ+ Ġtoday Scripts Count }-${ name }. sql " ĊĊĠĠĠĠĠĠĠ Ġval Ġupdate Script Path Ġ= Ġcurrent Year Update Dir . resolve ( script Name ) ĊĠĠĠĠĠĠĠ Ġupdate Script Path . to File (). also Ġ{ Ġit . createNew File () Ġ} ĊĠĠĠĠĠĠĠ Ġprint Helper . file Created ( update Script Path ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Year () Ġ= Ġ( calendar [ Calendar . YEAR ] Ġ- Ġ 2 0 0 0 ). toString () ĊĊĠĠĠ Ġprivate Ġfun Ġget Today Prefix () Ġ= Ġ"% s % 0 2 d % 0 2 d - ". format ( get Year (), Ġcalendar [ Calendar . MONTH ] Ġ+ Ġ 1 , Ġcalendar [ Calendar . DAY _ OF _ MONTH ]) Ċ }