@ file : Suppress (" unused ") Ċ Ċ package Ġplugin Ċ Ċ import Ġorg . neo 4 j . graph db . Graph Database Service Ċ import Ġorg . neo 4 j . graph db . Label Ċ import Ġorg . neo 4 j . logging . Log Ċ import Ġorg . neo 4 j . procedure . Context Ċ import Ġorg . neo 4 j . procedure . Mode Ċ import Ġorg . neo 4 j . procedure . Name Ċ import Ġorg . neo 4 j . procedure . Procedure Ċ import Ġstructures . Graph Result Ċ import Ġstructures . NodeList Result Ċ import Ġstructures . Value ListResult Ċ import Ġtools . Graph Generator Ċ import Ġutilities . Value F aker Ċ import Ġutilities . Yaml Parser Ċ import Ġjava . util . stream . Stream Ċ Ċ open Ġclass ĠPlugin Procedure Ġ{ ĊĠĠĠ Ġ@ Context ĊĠĠĠ Ġlateinit Ġvar Ġdatabase : ĠGraph Database Service ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġyaml Parser : ĠYaml Parser Ġ= ĠYaml Parser () ĊĠĠĠĠĠĠĠ Ġval Ġvalue F aker : ĠValue F aker Ġ= ĠValue F aker () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġval Ġgraph Generator : ĠGraph Generator ĊĠĠĠĠĠĠĠ Ġget () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠGraph Generator ( database , Ġyaml Parser , Ġvalue F aker ) ĊĠĠĠĠĠĠĠ Ġ} Ċ } Ċ Ċ class ĠGenerate Nodes Procedure Ġ: ĠPlugin Procedure () Ġ{ ĊĠĠĠ Ġ@ Jvm Field ĊĠĠĠ Ġ@ Context ĊĠĠĠ Ġvar Ġlog : ĠLog ? Ġ= Ġnull ĊĊĠĠĠ Ġ@ Procedure ( value Ġ= Ġ" generate . nodes ", Ġmode Ġ= ĠMode . WRITE ) ĊĠĠĠ Ġfun Ġgenerate Nodes (@ Name (" how Many ") Ġhow Many : ĠLong , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Name (" labels ") Ġlabels String Array : ĠAny , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Name (" properties Yaml String ") Ġproperties Yaml String : ĠString ): ĠStream < NodeList Result > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġlabels Ġ= Ġ( labels String Array Ġas ĠIterable < *> ). filter Is Instance < String >() ĊĠĠĠĠĠĠĠ Ġlog !!. info (" Generating Ġ${ how Many . toInt ()} Ġnodes Ġwith Ġlabels Ġ${ labels . join ToString ()} Ġand Ġproperties Ġ$ properties Yaml String ") ĊĊĠĠĠĠĠĠĠ Ġreturn ĠStream . of < NodeList Result >( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠNode ListResult ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgraph Generator . generate Nodes ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠGraph Generator . labels From Strings ( labels ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġproperties Yaml String , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhow Many ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ class ĠGenerate Values Procedure Ġ: ĠPlugin Procedure () Ġ{ ĊĠĠĠ Ġ@ Jvm Field ĊĠĠĠ Ġ@ Context ĊĠĠĠ Ġvar Ġlog : ĠLog ? Ġ= Ġnull ĊĊĠĠĠ Ġ@ Procedure ( value Ġ= Ġ" generate . values ", Ġmode Ġ= ĠMode . READ ) ĊĠĠĠ Ġfun Ġgenerate Values (@ Name (" how Many ") Ġhow Many : ĠLong , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Name (" generator Name ") Ġgenerator Name : ĠString , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Name (" parameters ") Ġparameters : ĠAny ): ĠStream < Value ListResult > Ġ{ ĊĠĠĠĠĠĠĠ Ġlog !!. info (" Generating Ġ${ how Many . toInt ()} Ġvalues Ġusing Ġgenerator Ġ$ generator Name Ġwith Ġproperties Ġ$ parameters ") ĊĊĠĠĠĠĠĠĠ Ġval Ġgraph Generator Ġ= Ġgraph Generator ĊĠĠĠĠĠĠĠ Ġreturn ĠStream . of ( Value ListResult ( graph Generator . generate Values ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgenerator Name , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( parameters Ġas ĠList < *> ). filter Is Instance < Any >(), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhow Many ))) ĊĠĠĠ Ġ} Ċ } Ċ Ċ class ĠGenerate LinkedList Procedure Ġ: ĠPlugin Procedure () Ġ{ ĊĠĠĠ Ġ@ Jvm Field ĊĠĠĠ Ġ@ Context ĊĠĠĠ Ġvar Ġlog : ĠLog ? Ġ= Ġnull ĊĊĠĠĠ Ġ@ Procedure ( value Ġ= Ġ" generate . link edList ", Ġmode Ġ= ĠMode . WRITE ) ĊĠĠĠ Ġfun Ġgenerate LinkedList (@ Name (" how Many ") Ġhow Many : ĠLong , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Name (" labels ") Ġlabels String Array : ĠAny , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Name (" node Properties String ") Ġnode Properties String : ĠString , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Name (" relationship Type ") Ġrelationship Type : ĠString ): ĠStream < Graph Result > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġlabels Ġ= Ġ( labels String Array Ġas ĠIterable < *> ). filter Is Instance < String >() ĊĠĠĠĠĠĠĠ Ġlog !!. info (" Generating Ġa Ġlinked Ġlist Ġof Ġ$ how Many Ġnodes Ġwith Ġlabels Ġ${ labels . join ToString ()} Ġconnected Ġby Ġ$ relationship Type ") ĊĠĠĠĠĠĠĠ Ġval Ġgraph Generator Ġ= Ġgraph Generator ĊĠĠĠĠĠĠĠ Ġval Ġnodes For LinkedList Ġ= Ġgraph Generator . generate Nodes ( Graph Generator . labels From Strings ( labels ), Ġnode Properties String , Ġhow Many ) ĊĠĠĠĠĠĠĠ Ġval Ġgraph Result Ġ= Ġgraph Generator . generate LinkedList ( nodes For LinkedList , Ġrelationship Type ) ĊĠĠĠĠĠĠĠ Ġreturn ĠStream . of ( graph Result ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ class ĠGenerate Zip per Procedure Ġ: ĠPlugin Procedure () Ġ{ ĊĠĠĠ Ġ@ Jvm Field ĊĠĠĠ Ġ@ Context ĊĠĠĠ Ġvar Ġlog : ĠLog ? Ġ= Ġnull ĊĊĠĠĠ Ġ@ Procedure ( value Ġ= Ġ" generate . zip per ", Ġmode Ġ= ĠMode . WRITE ) ĊĠĠĠ Ġfun Ġgenerate Zip per (@ Name (" how Many ") Ġhow Many : ĠLong , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Name (" source Label ") Ġsource Label Name : ĠString , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Name (" source Properties String ") Ġsource Properties String : ĠString , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Name (" target Label ") Ġtarget Label Name : ĠString , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Name (" target Properties String ") Ġtarget Properties String : ĠString , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Name (" relationship Type ") Ġrelationship Type : ĠString , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Name (" relationship Properties ") Ġrelationship Properties : ĠString ): ĠStream < Graph Result > Ġ{ ĊĊĠĠĠĠĠĠĠ Ġlog !!. info (" Generating Ġzip per Ġstructure Ġof Ġ${ how Many . toInt ()} Ġnodes Ġin Ġeach Ġside , Ġsource =$ source Label Name , Ġtarget =$ target Label Name , Ġrelationship =$ relationship Type , Ġrel _ properties :$ relationship Properties ") ĊĊĠĠĠĠĠĠĠ Ġval Ġgraph Generator Ġ= Ġgraph Generator ĊĠĠĠĠĠĠĠ Ġval Ġsource Label Ġ= ĠLabel . label ( source Label Name ) ĊĠĠĠĠĠĠĠ Ġval Ġtarget Label Ġ= ĠLabel . label ( target Label Name ) ĊĠĠĠĠĠĠĠ Ġval Ġsource Nodes Ġ= Ġgraph Generator . generate Nodes ( array Of ( source Label ), Ġsource Properties String , Ġhow Many . toInt (). to Long ()) ĊĠĠĠĠĠĠĠ Ġval Ġtarget Nodes Ġ= Ġgraph Generator . generate Nodes ( array Of ( target Label ), Ġtarget Properties String , Ġhow Many . toInt (). to Long ()) ĊĠĠĠĠĠĠĠ Ġval Ġrelationships Ġ= Ġgraph Generator . generate Relationships Zip per ( source Nodes , Ġtarget Nodes , Ġrelationship Type , Ġrelationship Properties ) ĊĠĠĠĠĠĠĠ Ġval Ġgraph Result Ġ= ĠGraph Result ( source Nodes Ġ+ Ġtarget Nodes , Ġrelationships ) ĊĠĠĠĠĠĠĠ Ġreturn ĠStream . of ( graph Result ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ class ĠGenerate From Yaml File Procedure Ġ: ĠPlugin Procedure () Ġ{ ĊĠĠĠ Ġ@ Jvm Field ĊĠĠĠ Ġ@ Context ĊĠĠĠ Ġvar Ġlog : ĠLog ? Ġ= Ġnull ĊĊĠĠĠ Ġ@ Procedure ( value Ġ= Ġ" generate . from Yaml File ", Ġmode Ġ= ĠMode . WRITE ) ĊĠĠĠ Ġfun Ġgenerate From Yaml File (@ Name (" yaml FilePath ") Ġyaml FilePath : ĠString ): ĠStream < Value ListResult > Ġ{ ĊĠĠĠĠĠĠĠ Ġlog !!. info (" Generating Ġa Ġgraph Ġfrom Ġa ĠYAML Ġtemplate Ġif Ġfile : Ġ$ yaml FilePath ") ĊĠĠĠĠĠĠĠ Ġval Ġgraph Generator Ġ= Ġgraph Generator ĊĠĠĠĠĠĠĠ Ġgraph Generator . generate From Yaml File ( yaml FilePath ) ĊĠĠĠĠĠĠĠ Ġreturn ĠStream . of ( Value ListResult ( listOf (" Done "))) ĊĠĠĠ Ġ} Ċ } Ċ