package Ġcom . teal cube . minecraft . bukkit . my th ic dro ps . config . migration . models Ċ Ċ import Ġcom . squareup . mos hi . Json Class Ċ import Ġcom . squareup . mos hi . adapters . Pol ymorphic Json Adapter Factory Ċ import Ġorg . bukkit . configuration . Configuration Section Ċ Ċ /** Ċ Ġ* ĠRepresents Ġa Ġstep Ġthat Ġcan Ġbe Ġrun Ġas Ġpart Ġof Ġa Ġmigration . Ċ Ġ*/ Ċ sealed Ġclass ĠConfig Migration Step ( val Ġreason : ĠString Ġ= Ġ"") Ġ{ ĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġadapter Factory : ĠPol ymorphic Json Adapter Factory < Config Migration Step > Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPol ymorphic Json Adapter Factory . of ( Config Migration Step :: class . java , Ġ" step Type ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Subtype ( Set Boolean Config Migration Step :: class . java , Ġ" set _ boolean ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Subtype ( Set Double Config Migration Step :: class . java , Ġ" set _ double ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Subtype ( Set Int Config Migration Step :: class . java , Ġ" set _ int ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Subtype ( SetString List Config Migration Step :: class . java , Ġ" set _ string _ list ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Subtype ( SetString Config Migration Step :: class . java , Ġ" set _ string ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Subtype ( Delete Config Migration Step :: class . java , Ġ" delete ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Subtype ( Rename Config Migration Step :: class . java , Ġ" rename ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Subtype ( SetString If Equals Config Migration Step :: class . java , Ġ" set _ string _ if _ equals ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Subtype ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSet String List If Key Equals String Config Migration Step :: class . java , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" set _ string _ list _ if _ key _ equals _ string " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Subtype ( ForEach Config Migration Step :: class . java , Ġ" for _ each ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġabstract Ġfun Ġmigrate ( configuration : ĠConfiguration Section ) Ċ } Ċ Ċ @ Json Class ( generate Adapter Ġ= Ġtrue ) Ċ data Ġclass ĠDelete Config Migration Step ( val Ġpath : ĠString ) Ġ: ĠConfig Migration Step () Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġmigrate ( configuration : ĠConfiguration Section ) Ġ{ ĊĠĠĠĠĠĠĠ Ġconfiguration [ path ] Ġ= Ġnull ĊĠĠĠ Ġ} Ċ } Ċ Ċ @ Json Class ( generate Adapter Ġ= Ġtrue ) Ċ data Ġclass ĠFor Each Config Migration Step ( ĊĠĠĠ Ġval Ġmatch Regex : ĠString , ĊĠĠĠ Ġval Ġconfig Migration Steps : ĠList < Config Migration Step > Ġ= Ġempty List () Ċ ) Ġ: ĠConfig Migration Step () Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġmigrate ( configuration : ĠConfiguration Section ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġparent Regex Ġ= Ġmatch Regex . to Regex () ĊĠĠĠĠĠĠĠ Ġval Ġkeys That Match Parent Ġ= Ġconfiguration . get Keys ( true ). filter Ġ{ Ġit . matches ( parent Regex ) Ġ} ĊĠĠĠĠĠĠĠ Ġfor Ġ( key That Matches Parent Ġin Ġkeys That Match Parent ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! configuration . is Configuration Section ( key That Matches Parent )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontinue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmatches Section Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconfiguration . getConfiguration Section ( key That Matches Parent ) Ġ?: Ġconfiguration . create Section ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġkey That Matches Parent ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( config Migration Step Ġin Ġconfig Migration Steps ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconfig Migration Step . migrate ( matches Section ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ @ Json Class ( generate Adapter Ġ= Ġtrue ) Ċ data Ġclass ĠRename Config Migration Step ( val Ġfrom : ĠString , Ġval Ġto : ĠString ) Ġ: ĠConfig Migration Step () Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġmigrate ( configuration : ĠConfiguration Section ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( configuration [ from ] Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġconfiguration [ to ] Ġ= Ġconfiguration [ from ] ĊĠĠĠĠĠĠĠ Ġconfiguration [ from ] Ġ= Ġnull ĊĠĠĠ Ġ} Ċ } Ċ Ċ @ Json Class ( generate Adapter Ġ= Ġtrue ) Ċ data Ġclass ĠSet Boolean Config Migration Step ( val Ġkey : ĠString , Ġval Ġvalue : ĠBoolean ) Ġ: ĠConfig Migration Step () Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġmigrate ( configuration : ĠConfiguration Section ) Ġ{ ĊĠĠĠĠĠĠĠ Ġconfiguration [ key ] Ġ= Ġvalue ĊĠĠĠ Ġ} Ċ } Ċ Ċ @ Json Class ( generate Adapter Ġ= Ġtrue ) Ċ data Ġclass ĠSet Double Config Migration Step ( val Ġkey : ĠString , Ġval Ġvalue : ĠDouble ) Ġ: ĠConfig Migration Step () Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġmigrate ( configuration : ĠConfiguration Section ) Ġ{ ĊĠĠĠĠĠĠĠ Ġconfiguration [ key ] Ġ= Ġvalue ĊĠĠĠ Ġ} Ċ } Ċ Ċ @ Json Class ( generate Adapter Ġ= Ġtrue ) Ċ data Ġclass ĠSet Int Config Migration Step ( val Ġkey : ĠString , Ġval Ġvalue : ĠInt ) Ġ: ĠConfig Migration Step () Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġmigrate ( configuration : ĠConfiguration Section ) Ġ{ ĊĠĠĠĠĠĠĠ Ġconfiguration [ key ] Ġ= Ġvalue ĊĠĠĠ Ġ} Ċ } Ċ Ċ @ Json Class ( generate Adapter Ġ= Ġtrue ) Ċ data Ġclass ĠSet String List Config Migration Step ( val Ġkey : ĠString , Ġval Ġvalue : ĠList < String > Ġ= Ġempty List ()) Ġ: ĊĠĠĠ ĠConfig Migration Step () Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġmigrate ( configuration : ĠConfiguration Section ) Ġ{ ĊĠĠĠĠĠĠĠ Ġconfiguration [ key ] Ġ= Ġvalue ĊĠĠĠ Ġ} Ċ } Ċ Ċ @ Json Class ( generate Adapter Ġ= Ġtrue ) Ċ data Ġclass ĠSet String List If Key Equals String Config Migration Step ( ĊĠĠĠ Ġval Ġkey : ĠString , ĊĠĠĠ Ġval Ġvalue : ĠList < String >, ĊĠĠĠ Ġval Ġif Key : ĠString , ĊĠĠĠ Ġval Ġif Value : ĠString Ċ ) Ġ: ĠConfig Migration Step () Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġmigrate ( configuration : ĠConfiguration Section ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( configuration . getString ( if Key ) Ġ== Ġif Value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconfiguration [ key ] Ġ= Ġvalue ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ @ Json Class ( generate Adapter Ġ= Ġtrue ) Ċ data Ġclass ĠSet String Config Migration Step ( val Ġkey : ĠString , Ġval Ġvalue : ĠString ) Ġ: ĠConfig Migration Step () Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġmigrate ( configuration : ĠConfiguration Section ) Ġ{ ĊĠĠĠĠĠĠĠ Ġconfiguration [ key ] Ġ= Ġvalue ĊĠĠĠ Ġ} Ċ } Ċ Ċ @ Json Class ( generate Adapter Ġ= Ġtrue ) Ċ data Ġclass ĠSet String If Equals Config Migration Step ( val Ġkey : ĠString , Ġval Ġvalue : ĠString , Ġval Ġif Value : ĠString ) Ġ: ĊĠĠĠ ĠConfig Migration Step () Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġmigrate ( configuration : ĠConfiguration Section ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( configuration . getString ( key ) Ġ== Ġif Value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconfiguration [ key ] Ġ= Ġvalue ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ