package Ġca . software add . country Ċ Ċ import Ġca . software add . domain . aggregate . Aggregate Ċ import Ġca . software add . domain . aggregate . Event Consumer Ċ import Ġca . software add . domain . commands . CommandHandler Ċ import Ġca . software add . domain . events . EventHandler Ċ import Ġjava . util .* Ċ Ċ enum Ġclass ĠCountry Aggregate State Ġ{ ĊĠĠĠ ĠNEW , ĊĠĠĠ ĠEX IST ING , ĊĠĠĠ ĠDE LETED Ċ } Ċ Ċ class ĠCountry ( ĊĠĠĠĠĠĠĠ Ġid : ĠUUID , ĊĠĠĠĠĠĠĠ Ġevent Consumer : ĠEvent Consumer Ċ ) Ġ: ĠAggregate ( id , Ġevent Consumer ) Ġ{ ĊĊĠĠĠ Ġlateinit Ġvar Ġalpha 2 code : ĠString ĊĠĠĠĠĠĠĠ Ġprivate Ġset ĊĊĠĠĠ Ġlateinit Ġvar Ġalpha 3 code : ĠString ĊĠĠĠĠĠĠĠ Ġprivate Ġset ĊĊĠĠĠ Ġlateinit Ġvar ĠfullName : ĠString ĊĠĠĠĠĠĠĠ Ġprivate Ġset ĊĊĠĠĠ Ġlateinit Ġvar Ġnumeric Code : ĠString ĊĠĠĠĠĠĠĠ Ġprivate Ġset ĊĊĠĠĠ Ġlateinit Ġvar Ġshort Name : ĠString ĊĠĠĠĠĠĠĠ Ġprivate Ġset ĊĊĠĠĠ Ġprivate Ġvar Ġstate Ġ= ĠCountry Aggregate State . NEW ĊĊĠĠĠ Ġ@ EventHandler ĊĠĠĠ Ġfun Ġcountry Created ( event : ĠCountry Created Event ) Ġ{ ĊĠĠĠĠĠĠĠ Ġalpha 2 code Ġ= Ġevent . alpha 2 code ĊĠĠĠĠĠĠĠ Ġalpha 3 code Ġ= Ġevent . alpha 3 code ĊĠĠĠĠĠĠĠ ĠfullName Ġ= Ġevent . fullName ĊĠĠĠĠĠĠĠ Ġnumeric Code Ġ= Ġevent . numeric Code ĊĠĠĠĠĠĠĠ Ġshort Name Ġ= Ġevent . short Name ĊĊĠĠĠĠĠĠĠ Ġstate Ġ= ĠCountry Aggregate State . EXIST ING ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ CommandHandler ĊĠĠĠ Ġfun Ġcreate Country ( command : ĠCreate Country Command ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( state Ġ== ĠCountry Aggregate State . NEW ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwith ( command ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġapply Event ( Country Created Event ( alpha 2 code , Ġalpha 3 code , ĠfullName , Ġnumeric Code , Ġshort Name )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ Ċ } Ċ