/* Ċ Ġ* ĠTransaction Receiver . kt Ġ- Ġpair - modeling Ċ Ġ* ĠCopyright ĠÂ© Ġ 2 0 2 1 ĠHy oda K azu aki . Ċ Ġ* Ċ Ġ* ĠReleased Ġunder Ġthe ĠMIT ĠLicense . Ċ Ġ* Ġsee Ġhttps :// opensource . org / licenses / MIT Ċ Ġ*/ Ċ Ċ package Ġjp . ex _ t . kaz u aki . change _ vision . apply _ transaction Ċ Ċ import Ġcom . change _ vision . j ude . api . inf . Ast ah API Ċ import Ġcom . change _ vision . j ude . api . inf . exception . Bad Transaction Exception Ċ import Ġcom . change _ vision . j ude . api . inf . project . Project Accessor Ċ import Ġcom . change _ vision . j ude . api . inf . ui . I Plugin Action Delegate . Un Expected Exception Ċ import Ġjp . ex _ t . kaz u aki . change _ vision . Logging Ċ import Ġjp . ex _ t . kaz u aki . change _ vision . event _ listener . Project Changed Listener Ċ import Ġjp . ex _ t . kaz u aki . change _ vision . logger Ċ import Ġjp . ex _ t . kaz u aki . change _ vision . network .* Ċ import Ġkotlinx . serialization . Experimental Serialization Api Ċ import Ġkotlinx . serialization . cb or . Cb or Ċ import Ġkotlinx . serialization . decode From ByteArray Ċ import Ġorg . eclipse . p aho . client . mqtt v 3 . Mqtt Message Ċ import Ġjavax . swing . Swing Utilities Ċ Ċ class ĠTransaction Receiver ( ĊĠĠĠ Ġprivate Ġval Ġentity Table : ĠEntity Table , Ġprivate Ġval Ġproject Changed Listener : ĠProject Changed Listener , ĊĠĠĠ ĠclientId : ĠString Ċ ) Ġ: ĊĠĠĠ ĠReceiver ( clientId ) Ġ{ ĊĠĠĠ Ġprivate Ġval Ġapi : ĠAst ah API Ġ= ĠAst ah API . get Ast ah API () ĊĠĠĠ Ġprivate Ġval Ġproject Accessor : ĠProject Accessor Ġ= Ġapi . project Accessor ĊĠĠĠ Ġprivate Ġval Ġcommon Apply Transaction Ġ= ĠCommon Apply Transaction ( entity Table ) ĊĠĠĠ Ġprivate Ġval Ġclass Diagram Apply Transaction Ġ= ĠClass Diagram Apply Transaction ( entity Table ) ĊĠĠĠ Ġprivate Ġval Ġmind map Diagram Apply Transaction Ġ= ĠM ind map Diagram Apply Transaction ( entity Table ) ĊĠĠĠ Ġprivate Ġval Ġstate Machine Diagram Apply Transaction Ġ= ĠState Machine Diagram Apply Transaction ( entity Table ) ĊĊĠĠĠ Ġ@ Experimental Serialization Api ĊĠĠĠ Ġoverride Ġfun Ġmessage Ar rived ( topic : ĠString , Ġmessage : ĠM qtt Message ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( is Received My self ( topic )) Ġreturn ĊĠĠĠĠĠĠĠ Ġval Ġreceived Message Ġ= ĠC bor . decode From ByteArray < Transaction >( message . payload ) ĊĠĠĠĠĠĠĠ Ġlogger . debug (" Received : Ġ$ received Message Ġ($ topic )") ĊĠĠĠĠĠĠĠ Ġtrans act ( received Message ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġtrans act ( transaction : ĠTransaction ) Ġ{ ĊĠĠĠĠĠĠĠ ĠSw ing Utilities . invoke Later Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlogger . debug (" Received : Ġ$ transaction ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtransaction Manager Ġ= Ġproject Accessor . transaction Manager ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġproject Accessor . remove Project EventListener ( project Changed Listener ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġselected Elements Ġ= Ġapi . view Manager . diagram View Manager . selected Present ations ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠProject Ġcreation ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtransaction . operations . filter Is Instance < Create Project >(). forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalidate And Create Project ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlogger . debug (" Start Ġtransaction .") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtransaction Manager . beginTransaction () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcommon Apply Transaction . apply ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtransaction . operations . filter Is Instance < Common Operation >() ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġclass Diagram Apply Transaction . apply ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtransaction . operations . filter Is Instance < Class Diagram Operation >() ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmind map Diagram Apply Transaction . apply ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtransaction . operations . filter Is Instance < M ind map Diagram Operation >() ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstate Machine Diagram Apply Transaction . apply ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtransaction . operations . filter Is Instance < StateMachine Diagram Operation >() ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtransaction Manager . end Transaction () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlogger . debug (" Finished Ġtransaction .") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġapi . view Manager . diagram View Manager . select ( selected Elements ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠBad Transaction Exception ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtransaction Manager . abort Transaction () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlogger . warn (" Failed Ġto Ġtransaction .", Ġe ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠUn Expected Exception () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġfinally Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġproject Accessor . add Project EventListener ( project Changed Listener ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġvalidate And Create Project ( operation : ĠCreate Project ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( operation . name . isNotEmpty () Ġ&& Ġoperation . id . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcreate Project ( operation . name , Ġoperation . id ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcreate Project ( name : ĠString , Ġid : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġlogger . debug (" Create Ġproject .") ĊĠĠĠĠĠĠĠ Ġproject Accessor . create () ĊĠĠĠĠĠĠĠ Ġproject Accessor . project . name Ġ= Ġname ĊĊĠĠĠĠĠĠĠ Ġentity Table . entries . add ( Entry ( project Accessor . project . id , Ġid )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ: ĠLogging Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġlogger Ġ= Ġlogger () ĊĠĠĠ Ġ} Ċ }