package Ġcom . yo av st . j eb . utils . ren aming Ċ Ċ object ĠRename Frontend Engine Impl Ġ: ĠRename Frontend Engine Ġ{ ĊĠĠĠ Ġprivate Ġval ĠPre served Short Names Ġ= Ġset Of (" run ", Ġ" act ", Ġ" get ", Ġ" set ", Ġ" let ") ĊĊĠĠĠ Ġoverride Ġfun Ġapply Rules ( rename Request : ĠInternal Rename Request ): ĠInternal Rename Request ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġ( type , Ġcurrent Name , ĠnewName , Ġreason , Ġinformation al Rename ) Ġ= Ġrename Request ĊĠĠĠĠĠĠĠ Ġval ĠnewName Sanit ized Ġ= ĠnewName . sanitize () ĊĠĠĠĠĠĠĠ Ġif Ġ( current Name . isBlank ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġrename Request ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ(! general Should Rename ( current Name , ĠnewName Sanit ized , Ġreason )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ(! information al Rename Ġ&& Ġcurrent Name . length Ġ> Ġ 3 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( type ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRename ObjectType . Class Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġcheck Ġfor ĠCamel Case ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( current Name [ 0 ]. is UpperCase () Ġ&& Ġcurrent Name . any ( Char :: is LowerCase )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRename ObjectType . Method Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġis Ġit Ġgetter Ġor Ġsetter Ġor Ġconstructor ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( current Name . startsWith (" get ") Ġ|| Ġcurrent Name . startsWith (" set ") Ġ|| ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Name Ġ== Ġ"< init >" Ġ|| Ġcurrent Name Ġ== Ġ"< cl init >" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġis Ġit Ġa Ġcamel Case ? ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( current Name [ 0 ]. is LowerCase () Ġ&& Ġcurrent Name . any ( Char :: is UpperCase )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRename ObjectType . Field Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġcheck Ġfor Ġm Variable Ġor Ġs Variable ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(( current Name [ 0 ] Ġ== Ġ' m ' Ġ|| Ġcurrent Name [ 0 ] Ġ== Ġ' s ') Ġ&& Ġcurrent Name [ 1 ]. is UpperCase ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRename ObjectType . Identifier Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( current Name [ 0 ]. is LowerCase () Ġ&& Ġcurrent Name . any ( Char :: is UpperCase )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// Ġcheck Ġif Ġcurrent Name Ġis Ġa Ġvalid Ġjava Ġname ĊĠĠĠĠĠĠĠ Ġval Ġcurrent Modified Name Ġ= Ġif Ġ( current Name . isValid Java Identifier ()) Ġcurrent Name Ġelse Ġ"$ $ current Name " ĊĊĠĠĠĠĠĠĠ Ġif Ġ( information al Rename ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġwe Ġwant Ġto Ġkeep Ġthe Ġcurrent Ġname ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠInternal Rename Request ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtype , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Name , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"${ current Modified Name } __ ${ reason . prefix }_${ new Name Sanit ized }", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreason , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinformation al Rename ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( type Ġ== ĠRename ObjectType . Identifier ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠWe Ġwant Ġto Ġerase Ġthe Ġprevious Ġname Ġsince Ġit Ġisn 't Ġa Ġreal Ġname ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠInternal Rename Request ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtype , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Name , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"__ ${ reason . prefix }_${ new Name Sanit ized }", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreason , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinformation al Rename ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠInternal Rename Request ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtype , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Name , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"${ current Modified Name . extract Original Name ()} __ ${ reason . prefix }_${ new Name Sanit ized }", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreason , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinformation al Rename ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĠCommon Ġrules Ġfor Ġwhether Ġshould Ġrename Ġfrom Ġ` name ` Ġto Ġ` new Name ` Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġgeneral Should Rename ( name : ĠString , ĠnewName : ĠString , Ġreason : ĠRename Reason ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( new Name . isBlank ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĊĠĠĠĠĠĠĠ Ġif Ġ( name . contains ( new Name , Ġignore Case Ġ= Ġtrue )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĊĠĠĠĠĠĠĠ Ġif Ġ( name . length Ġ<= Ġ 3 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġname Ġ! in ĠPre served Short Names ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( new Name . contains ( name , Ġignore Case Ġ= Ġtrue )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĊĠĠĠĠĠĠĠ Ġif Ġ(' $ ' Ġin Ġname ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĊĠĠĠĠĠĠĠ Ġval Ġold Reason Ġ= Ġget Modified Info ( name )?. second Ġ?: Ġreturn Ġtrue ĊĠĠĠĠĠĠĠ Ġreturn Ġreason Ġ>= Ġold Reason ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠT ries Ġto Ġextract Ġthe Ġrename Ġreason Ġencoded Ġin Ġthe Ġgiven Ġ` name `. ĊĠĠĠĠ Ġ* ĠIt Ġassumes Ġnormal Ġname Ġdoes Ġnot Ġhave Ġan Ġunderscore Ġin Ġits Ġname . ĊĠĠĠĠ Ġ* ĠThis Ġis Ġprobably Ġjust ified Ġsince Ġthis Ġis Ġagainst ĠJava Ġnaming Ġconvention . ĊĠĠĠĠ Ġ* ĠSome Ġgenerated Ġclasses Ġmay Ġcontain Ġ__ Ġin Ġname , Ġbut Ġthat Ġmean ĊĠĠĠĠ Ġ* Ġthey Ġhave Ġthe Ġoriginal Ġname , Ġso Ġit 's Ġok . ĊĠĠĠĠ Ġ**/ ĊĠĠĠ Ġoverride Ġfun Ġget Modified Info ( name : ĠString ): ĠPair < String , ĠRename Reason ?> ? Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġname Parts Ġ= Ġname . split ("__ ", Ġlimit Ġ= Ġ 2 ) ĊĠĠĠĠĠĠĠ Ġif Ġ( name Parts . size Ġ== Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġname Parts Ġ= Ġname . split ("_ ", Ġlimit Ġ= Ġ 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( name Parts . size Ġ== Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġassume Ġthere Ġis Ġno Ġreason Ġfor Ġ_ Ġto Ġbe Ġin Ġname Ġwe Ġwant Ġto Ġrename . ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠThe Ġonly Ġreason Ġit Ġactually Ġmake Ġsense Ġis Ġif Ġwe Ġtry Ġto Ġrename Ġconstant . ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠAnd Ġin Ġthis Ġcase , Ġit 's Ġok Ġto Ġfail Ġsince Ġwe Ġprobably Ġwant Ġto Ġretain Ġthe Ġoriginal Ġname . ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġname Parts [ 1 ] Ġto Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġgenerated Name Parts Ġ= Ġname Parts [ 1 ]. split ("_ ", Ġlimit Ġ= Ġ 2 ) ĊĠĠĠĠĠĠĠ Ġif Ġ( generated Name Parts . size Ġ== Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠThe Ġuser Ġwas Ġtoo Ġlazy Ġto Ġremove Ġthe Ġextra Ġunderscore , Ġok ... ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġgenerated Name Parts [ 0 ] Ġto Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġprefix Ġ= Ġgenerated Name Parts [ 0 ] ĊĠĠĠĠĠĠĠ Ġif Ġ( Rename Reason . MAX _ PREFIX _ LENGTH Ġ< Ġprefix . length ) Ġreturn Ġnull ĊĠĠĠĠĠĠĠ Ġreturn Ġgenerated Name Parts [ 1 ] Ġto ĠRename Reason . from Prefix ( prefix ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠString . extract Original Name (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġname Parts Ġ= Ġsplit ("__ ", Ġlimit Ġ= Ġ 2 ) ĊĠĠĠĠĠĠĠ Ġif Ġ( name Parts . size Ġ== Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġname Parts Ġ= Ġsplit ("_ ", Ġlimit Ġ= Ġ 2 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġname Parts [ 0 ] ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠString . isValid Java Identifier (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ(! this [ 0 ]. is Java Identifier Start ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 1 Ġuntil Ġlength ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! this [ i ]. is Java Identifier Part ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠString . sanitize (): ĠString Ġ= Ġtrim (). map Ġ{ Ġif Ġ( it . is Java Identifier Part ()) Ġit Ġelse Ġ"_" Ġ}. join ToString ("") Ċ }