/* Ċ Ġ* Ċ Ġ* Ġ Ġ* ĠCopyright Ġ 2 0 2 0 ĠZ UP ĠIT ĠSER V IC OS ĠEM ĠT EC NO LOG IA ĠE ĠIN OV AC AO ĠSA Ċ Ġ* Ġ Ġ* Ċ Ġ* Ġ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* Ġ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ġ Ġ* Ċ Ġ* Ġ Ġ* ĠĠĠĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ġ Ġ* Ċ Ġ* Ġ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* Ġ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* Ġ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ* Ċ Ġ*/ Ċ Ċ package Ġio . char le sc d . m oo ve . infrastructure . repository . mapper Ċ Ċ import Ġcom . fasterxml . jackson . databind . ObjectMapper Ċ import Ġio . char le sc d . m oo ve . domain .* Ċ import Ġjava . sql . ResultSet Ċ import Ġorg . springframework . jdbc . core . ResultSet Extractor Ċ import Ġorg . springframework . stereotype . Component Ċ Ċ @ Component Ċ class ĠBuild Extractor ( private Ġval ĠobjectMapper : ĠObjectMapper ) Ġ: ĠResultSet Extractor < Set < Build >> Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġextract Data ( resultSet : ĠResultSet ): ĠSet < Build > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġbuilds Ġ= ĠHashSet < Build >() ĊĠĠĠĠĠĠĠ Ġval Ġdeployments Ġ= ĠHashSet < Deployment >() ĊĠĠĠĠĠĠĠ Ġval Ġfeatures Ġ= ĠHashSet < Feature Snapshot >() ĊĠĠĠĠĠĠĠ Ġval Ġmodules Ġ= ĠHashSet < Module Snapshot >() ĊĠĠĠĠĠĠĠ Ġval Ġcomponents Ġ= ĠHashSet < Component Snapshot >() ĊĊĠĠĠĠĠĠĠ Ġwhile Ġ( resultSet . next ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbuilds . add ( map Build ( resultSet )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcreate Features ( resultSet , Ġfeatures ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcreate Modules ( resultSet , Ġmodules ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcreate Components ( resultSet , Ġcomponents ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcreate Deployments ( resultSet , Ġdeployments ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġcompose Build s ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbuilds , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcompose Features ( features , Ġcompose Modules ( modules , Ġcomponents )), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdeployments ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcreate Deployments ( ĊĠĠĠĠĠĠĠ ĠresultSet : ĠResultSet , ĊĠĠĠĠĠĠĠ Ġdeployments : ĠHashSet < Deployment > ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( resultSet . getString (" deployment _ id ") Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdeployments . add ( map Deployment ( resultSet )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcreate Components ( ĊĠĠĠĠĠĠĠ ĠresultSet : ĠResultSet , ĊĠĠĠĠĠĠĠ Ġcomponents : ĠHashSet < Component Snapshot > ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( resultSet . getString (" component _ snapshot _ id ") Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcomponents . add ( map Component Snapshot ( resultSet )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcreate Modules ( ĊĠĠĠĠĠĠĠ ĠresultSet : ĠResultSet , ĊĠĠĠĠĠĠĠ Ġmodules : ĠHashSet < Module Snapshot > ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( resultSet . getString (" module _ snapshot _ id ") Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmodules . add ( map Module Snapshot ( resultSet )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcreate Features ( ĊĠĠĠĠĠĠĠ ĠresultSet : ĠResultSet , ĊĠĠĠĠĠĠĠ Ġfeatures : ĠHashSet < Feature Snapshot > ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( resultSet . getString (" feature _ snapshot _ id ") Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfeatures . add ( map Feature ( resultSet )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcompose Build s ( ĊĠĠĠĠĠĠĠ Ġbuilds : ĠHashSet < Build >, ĊĠĠĠĠĠĠĠ Ġfeatures : ĠHashSet < Feature Snapshot >, ĊĠĠĠĠĠĠĠ Ġdeployments : ĠHashSet < Deployment > ĊĠĠĠ Ġ): ĠHashSet < Build > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġbuilds . map Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . copy ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfeatures Ġ= Ġfeatures . toList (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdeployments Ġ= Ġdeployments . toList () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ}. to HashSet () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcompose Features ( ĊĠĠĠĠĠĠĠ Ġfeatures : ĠHashSet < Feature Snapshot >, ĊĠĠĠĠĠĠĠ Ġmodules : ĠHashSet < Module Snapshot > ĊĠĠĠ Ġ): ĠHashSet < Feature Snapshot > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġfeatures . map Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . copy ( modules Ġ= Ġmodules . filter Ġ{ Ġm Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm . feature Snapshot Id Ġ== Ġit . id ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġ}. to HashSet () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcompose Modules ( ĊĠĠĠĠĠĠĠ Ġmodules : ĠHashSet < Module Snapshot >, ĊĠĠĠĠĠĠĠ Ġcomponents : ĠHashSet < Component Snapshot > ĊĠĠĠ Ġ): ĠHashSet < Module Snapshot > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġmodules . map Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . copy ( components Ġ= Ġcomponents . filter Ġ{ Ġc Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġc . module Snapshot Id Ġ== Ġit . id ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġ}. to HashSet () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġmap Build ( resultSet : ĠResultSet ) Ġ= ĠBuild ( ĊĠĠĠĠĠĠĠ Ġid Ġ= ĠresultSet . getString (" build _ id "), ĊĠĠĠĠĠĠĠ Ġauthor Ġ= Ġmap Build User ( resultSet ), ĊĠĠĠĠĠĠĠ ĠcreatedAt Ġ= ĠresultSet . getTimestamp (" build _ created _ at "). to LocalDateTime (), ĊĠĠĠĠĠĠĠ Ġfeatures Ġ= Ġempty List (), ĊĠĠĠĠĠĠĠ Ġtag Ġ= ĠresultSet . getString (" build _ tag "), ĊĠĠĠĠĠĠĠ Ġcolumn Id Ġ= ĠresultSet . getString (" build _ card _ column _ id "), ĊĠĠĠĠĠĠĠ Ġhypothesis Id Ġ= ĠresultSet . getString (" build _ h ypothesis _ id "), ĊĠĠĠĠĠĠĠ Ġstatus Ġ= ĠBuild Status Enum . valueOf ( resultSet . getString (" build _ status ")), ĊĠĠĠĠĠĠĠ Ġworkspace Id Ġ= ĠresultSet . getString (" build _ workspace _ id "), ĊĠĠĠĠĠĠĠ Ġdeployments Ġ= Ġempty List () ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġprivate Ġfun Ġmap Build User ( resultSet : ĠResultSet ) Ġ= ĠUser ( ĊĠĠĠĠĠĠĠ Ġid Ġ= ĠresultSet . getString (" build _ user _ id "), ĊĠĠĠĠĠĠĠ Ġname Ġ= ĠresultSet . getString (" build _ user _ name "), ĊĠĠĠĠĠĠĠ Ġemail Ġ= ĠresultSet . getString (" build _ user _ email "), ĊĠĠĠĠĠĠĠ Ġphoto Url Ġ= ĠresultSet . getString (" build _ user _ photo _ url "), ĊĠĠĠĠĠĠĠ Ġwork spaces Ġ= Ġempty List (), ĊĠĠĠĠĠĠĠ ĠcreatedAt Ġ= ĠresultSet . getTimestamp (" build _ user _ created _ at "). to LocalDateTime () ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġprivate Ġfun Ġmap Feature ( resultSet : ĠResultSet ) Ġ= ĠFeature Snapshot ( ĊĠĠĠĠĠĠĠ Ġid Ġ= ĠresultSet . getString (" feature _ snapshot _ id "), ĊĠĠĠĠĠĠĠ Ġfeature Id Ġ= ĠresultSet . getString (" feature _ snapshot _ feature _ id "), ĊĠĠĠĠĠĠĠ Ġname Ġ= ĠresultSet . getString (" feature _ snapshot _ name "), ĊĠĠĠĠĠĠĠ Ġbranch Name Ġ= ĠresultSet . getString (" feature _ snapshot _ branch _ name "), ĊĠĠĠĠĠĠĠ ĠcreatedAt Ġ= ĠresultSet . getTimestamp (" feature _ snapshot _ created _ at "). to LocalDateTime (), ĊĠĠĠĠĠĠĠ Ġauthor Name Ġ= ĠresultSet . getString (" feature _ snapshot _ author _ name "), ĊĠĠĠĠĠĠĠ Ġmodules Ġ= Ġempty List (), ĊĠĠĠĠĠĠĠ Ġauthor Id Ġ= ĠresultSet . getString (" feature _ snapshot _ author _ id "), ĊĠĠĠĠĠĠĠ Ġbuild Id Ġ= ĠresultSet . getString (" feature _ snapshot _ build _ id ") ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġprivate Ġfun Ġmap Module Snapshot ( resultSet : ĠResultSet ) Ġ= ĠModule Snapshot ( ĊĠĠĠĠĠĠĠ Ġid Ġ= ĠresultSet . getString (" module _ snapshot _ id "), ĊĠĠĠĠĠĠĠ Ġmodule Id Ġ= ĠresultSet . getString (" module _ snapshot _ module _ id "), ĊĠĠĠĠĠĠĠ Ġname Ġ= ĠresultSet . getString (" module _ snapshot _ name "), ĊĠĠĠĠĠĠĠ Ġgit Repository Address Ġ= ĠresultSet . getString (" module _ snapshot _ git _ repository _ address "), ĊĠĠĠĠĠĠĠ ĠcreatedAt Ġ= ĠresultSet . getTimestamp (" module _ snapshot _ created _ at "). to LocalDateTime (), ĊĠĠĠĠĠĠĠ Ġhelm Repository Ġ= ĠresultSet . getString (" module _ snapshot _ helm _ repository "), ĊĠĠĠĠĠĠĠ Ġcomponents Ġ= Ġempty List (), ĊĠĠĠĠĠĠĠ Ġworkspace Id Ġ= ĠresultSet . getString (" module _ snapshot _ workspace _ id "), ĊĠĠĠĠĠĠĠ Ġfeature Snapshot Id Ġ= ĠresultSet . getString (" module _ snapshot _ feature _ snapshot _ id ") ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġprivate Ġfun Ġmap Component Snapshot ( resultSet : ĠResultSet ) Ġ= ĠComponent Snapshot ( ĊĠĠĠĠĠĠĠ Ġid Ġ= ĠresultSet . getString (" component _ snapshot _ id "), ĊĠĠĠĠĠĠĠ Ġcomponent Id Ġ= ĠresultSet . getString (" component _ snapshot _ component _ id "), ĊĠĠĠĠĠĠĠ Ġname Ġ= ĠresultSet . getString (" component _ snapshot _ name "), ĊĠĠĠĠĠĠĠ ĠcreatedAt Ġ= ĠresultSet . getTimestamp (" component _ snapshot _ created _ at "). to LocalDateTime (), ĊĠĠĠĠĠĠĠ Ġartifact Ġ= ĠresultSet . getString (" artifact _ snapshot _ id ") ?. let Ġ{ Ġmap Artifact Snapshot ( resultSet ) Ġ}, ĊĠĠĠĠĠĠĠ Ġworkspace Id Ġ= ĠresultSet . getString (" component _ snapshot _ workspace _ id "), ĊĠĠĠĠĠĠĠ Ġmodule Snapshot Id Ġ= ĠresultSet . getString (" component _ snapshot _ module _ snapshot _ id "), ĊĠĠĠĠĠĠĠ Ġhost Value Ġ= ĠresultSet . getString (" component _ snapshot _ host _ value "), ĊĠĠĠĠĠĠĠ Ġgateway Name Ġ= ĠresultSet . getString (" component _ snapshot _ gateway _ name ") ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġprivate Ġfun Ġmap Artifact Snapshot ( resultSet : ĠResultSet ) Ġ= ĠArtifact Snapshot ( ĊĠĠĠĠĠĠĠ Ġid Ġ= ĠresultSet . getString (" artifact _ snapshot _ id "), ĊĠĠĠĠĠĠĠ Ġartifact Ġ= ĠresultSet . getString (" artifact _ snapshot _ artifact "), ĊĠĠĠĠĠĠĠ Ġversion Ġ= ĠresultSet . getString (" artifact _ snapshot _ version "), ĊĠĠĠĠĠĠĠ Ġcomponent Snapshot Id Ġ= ĠresultSet . getString (" artifact _ snapshot _ component _ snapshot _ id "), ĊĠĠĠĠĠĠĠ ĠcreatedAt Ġ= ĠresultSet . getTimestamp (" artifact _ snapshot _ created _ at "). to LocalDateTime () ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġprivate Ġfun Ġmap Deployment ( resultSet : ĠResultSet ) Ġ= ĠDeployment ( ĊĠĠĠĠĠĠĠ Ġid Ġ= ĠresultSet . getString (" deployment _ id "), ĊĠĠĠĠĠĠĠ Ġauthor Ġ= Ġmap Deployment User ( resultSet ), ĊĠĠĠĠĠĠĠ ĠcreatedAt Ġ= ĠresultSet . getTimestamp (" deployment _ created _ at "). to LocalDateTime (), ĊĠĠĠĠĠĠĠ Ġdeployed At Ġ= ĠresultSet . getTimestamp (" deployment _ deployed _ at ") ?. to LocalDateTime (), ĊĠĠĠĠĠĠĠ Ġstatus Ġ= ĠDeployment Status Enum . valueOf ( resultSet . getString (" deployment _ status ")), ĊĠĠĠĠĠĠĠ Ġcircle Ġ= Ġmap Circle ( resultSet ), ĊĠĠĠĠĠĠĠ Ġbuild Id Ġ= ĠresultSet . getString (" deployment _ build _ id "), ĊĠĠĠĠĠĠĠ Ġworkspace Id Ġ= ĠresultSet . getString (" deployment _ workspace _ id "), ĊĠĠĠĠĠĠĠ Ġun deployed At Ġ= ĠresultSet . getTimestamp (" deployment _ un deployed _ at ") ?. to LocalDateTime () ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġprivate Ġfun Ġmap Deployment User ( resultSet : ĠResultSet ) Ġ= ĠUser ( ĊĠĠĠĠĠĠĠ Ġid Ġ= ĠresultSet . getString (" deployment _ user _ id "), ĊĠĠĠĠĠĠĠ Ġname Ġ= ĠresultSet . getString (" deployment _ user _ name "), ĊĠĠĠĠĠĠĠ Ġemail Ġ= ĠresultSet . getString (" deployment _ user _ email "), ĊĠĠĠĠĠĠĠ Ġphoto Url Ġ= ĠresultSet . getString (" deployment _ user _ photo _ url "), ĊĠĠĠĠĠĠĠ Ġwork spaces Ġ= Ġempty List (), ĊĠĠĠĠĠĠĠ ĠcreatedAt Ġ= ĠresultSet . getTimestamp (" deployment _ user _ created _ at "). to LocalDateTime () ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġprivate Ġfun Ġmap Circle ( resultSet : ĠResultSet ) Ġ= ĠCircle ( ĊĠĠĠĠĠĠĠ Ġid Ġ= ĠresultSet . getString (" circle _ id "), ĊĠĠĠĠĠĠĠ Ġname Ġ= ĠresultSet . getString (" circle _ name "), ĊĠĠĠĠĠĠĠ Ġreference Ġ= ĠresultSet . getString (" circle _ reference "), ĊĠĠĠĠĠĠĠ Ġauthor Ġ= Ġmap Circle User ( resultSet ), ĊĠĠĠĠĠĠĠ ĠcreatedAt Ġ= ĠresultSet . getTimestamp (" circle _ created _ at "). to LocalDateTime (), ĊĠĠĠĠĠĠĠ Ġmatcher Type Ġ= ĠMatcher TypeEnum . valueOf ( resultSet . getString (" circle _ matcher _ type ")), ĊĠĠĠĠĠĠĠ Ġrules Ġ= ĠresultSet . getString (" circle _ rules ") ?. let Ġ{ ĠobjectMapper . read Tree ( it ) Ġ}, ĊĠĠĠĠĠĠĠ Ġimported Kv Records Ġ= ĠresultSet . getInt (" circle _ imported _ kv _ records "), ĊĠĠĠĠĠĠĠ Ġimported At Ġ= ĠresultSet . getTimestamp (" circle _ imported _ at ") ?. to LocalDateTime (), ĊĠĠĠĠĠĠĠ Ġdefault Circle Ġ= ĠresultSet . getBoolean (" circle _ default _ circle "), ĊĠĠĠĠĠĠĠ Ġworkspace Id Ġ= ĠresultSet . getString (" circle _ workspace _ id "), ĊĠĠĠĠĠĠĠ Ġpercentage Ġ= ĠresultSet . getInt (" circle _ percentage ") ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġprivate Ġfun Ġmap Circle User ( resultSet : ĠResultSet ) Ġ= ĠUser ( ĊĠĠĠĠĠĠĠ Ġid Ġ= ĠresultSet . getString (" circle _ user _ id "), ĊĠĠĠĠĠĠĠ Ġname Ġ= ĠresultSet . getString (" circle _ user _ name "), ĊĠĠĠĠĠĠĠ Ġemail Ġ= ĠresultSet . getString (" circle _ user _ email "), ĊĠĠĠĠĠĠĠ Ġphoto Url Ġ= ĠresultSet . getString (" circle _ user _ photo _ url "), ĊĠĠĠĠĠĠĠ Ġwork spaces Ġ= Ġempty List (), ĊĠĠĠĠĠĠĠ ĠcreatedAt Ġ= ĠresultSet . getTimestamp (" circle _ user _ created _ at "). to LocalDateTime () ĊĠĠĠ Ġ) Ċ } Ċ