package Ġnet . cord a . node . services . persistence Ċ Ċ import Ġnet . cord a . core . utilities . debug Ċ import Ġnet . cord a . core . utilities . logger For Ċ import Ġnet . cord a . node . services . api . Node Properties Store Ċ import Ġnet . cord a . node . services . api . Node Properties Store . Flows Dr aining Mode Operations Ċ import Ġnet . cord a . node . utilities . Persistent Map Ċ import Ġnet . cord a . node api . internal . persistence . C ord a Persistence Ċ import Ġnet . cord a . node api . internal . persistence . NODE _ DATABASE _ PREFIX Ċ import Ġorg . slf 4 j . Logger Ċ import Ġrx . subjects . Publish Subject Ċ import Ġjava . io . Serializable Ċ import Ġjavax . persistence . Column Ċ import Ġjavax . persistence . Entity Ċ import Ġjavax . persistence . Id Ċ import Ġjavax . persistence . Table Ċ Ċ /** Ċ Ġ* ĠSimple Ġnode Ġproperties Ġkey Ġvalue Ġstore Ġin ĠDB . Ċ Ġ*/ Ċ class ĠNode Properties Persistent Store ( read Physical NodeId : Ġ() Ġ-> ĠString , Ġpersistence : ĠC ord a Persistence ) Ġ: ĠNode Properties Store Ġ{ ĊĊĠĠĠ Ġprivate Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġlogger Ġ= Ġlogger For < Node Properties Store >() ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġval Ġflows Dr aining Mode : ĠFlow s Dr aining Mode Operations Ġ= ĠFlow s Dr aining Mode Operations Impl ( read Physical NodeId , Ġpersistence , Ġlogger ) ĊĊĠĠĠ Ġ@ Entity ĊĠĠĠ Ġ@ Table ( name Ġ= Ġ"${ NODE _ DATABASE _ PREFIX } properties ") ĊĠĠĠ Ġclass ĠDB Node Property ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Id ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Column ( name Ġ= Ġ" property _ key ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġkey : ĠString Ġ= Ġ"", ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Column ( name Ġ= Ġ" property _ value ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġvalue : ĠString ? Ġ= Ġ"" ĊĠĠĠ Ġ) Ġ: ĠSerializable Ċ } Ċ Ċ private Ġclass ĠFlow s Dr aining Mode Operations Impl ( read Physical NodeId : Ġ() Ġ-> ĠString , Ġprivate Ġval Ġpersistence : ĠC ord a Persistence , Ġlogger : ĠLogger ) Ġ: ĠFlow s Dr aining Mode Operations Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġnode Specific Flows Execution Mode Key Ġ= Ġ"${ read Physical NodeId ()} _ flows Execution Mode " ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġlogger . debug Ġ{ Ġ" Node 's Ġflow Ġexecution Ġmode Ġproperty Ġkey : Ġ$ node Specific Flows Execution Mode Key " Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġmap Ġ= ĠPersistent Map ({ Ġkey Ġ-> Ġkey Ġ}, Ġ{ Ġentity Ġ-> Ġentity . key Ġto Ġentity . value !! Ġ}, ĠNode Properties Persistent Store :: DB Node Property , ĠNode Properties Persistent Store . DB Node Property :: class . java ) ĊĊĠĠĠ Ġoverride Ġval Ġvalues Ġ= ĠPublish Subject . create < Pair < Boolean , ĠBoolean >>() !! ĊĊĠĠĠ Ġoverride Ġfun Ġset Enabled ( enabled : ĠBoolean ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġvar ĠoldValue : ĠBoolean ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġpersistence . transaction Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠoldValue Ġ= Ġmap . put ( node Specific Flows Execution Mode Key , Ġenabled . toString ()) ?. to Boolean () Ġ?: Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġvalues . onNext ( oldValue !! Ġto Ġenabled ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġis Enabled (): ĠBoolean Ġ{ ĊĊĠĠĠĠĠĠĠ Ġreturn Ġpersistence . transaction Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmap [ node Specific Flows Execution Mode Key ]?. to Boolean () Ġ?: Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }