/* Ċ Ġ* ĠCopyright Ġ 2 0 0 8 - present ĠMongoDB , ĠInc . Ċ Ġ* Ċ Ġ* Ġ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 Ġcom . mongodb . mong op op . gre mlin Ċ Ċ import Ġcom . mongodb . ConnectionString Ċ import Ġcom . mongodb . client . Mongo Clients Ċ import Ġcom . mongodb . mong op op . gre mlin . structure . Mongo Graph Ċ import Ġorg . apache . commons . configuration . Configuration Ċ import Ġorg . apache . t inker pop . gre mlin . process . traversal . P . neq Ċ import Ġorg . apache . t inker pop . gre mlin . structure . T Ċ import Ġorg . apache . t inker pop . gre mlin . structure . util . Graph Factory Ċ import Ġorg . junit . Test ĊĊ Ċ class ĠS moke Test Ġ{ ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` should Ġload Ġsome Ġdata Ġin Ġthe Ġgraph `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġgraph Ġ= ĠGraph Factory . open ( this :: class . java . class Loader . getResource (" graph . properties "). path ) ĊĠĠĠĠĠĠĠ Ġcleanup ( graph . configuration ()) ĊĠĠĠĠĠĠĠ Ġval Ġan ton Ġ= Ġgraph . add Vertex (" Ant on ") ĊĠĠĠĠĠĠĠ Ġval Ġas ya Ġ= Ġgraph . add Vertex (" As ya ") ĊĠĠĠĠĠĠĠ Ġval Ġro ss Ġ= Ġgraph . add Vertex (" Ro ss ") ĊĠĠĠĠĠĠĠ Ġval Ġj eff Ġ= Ġgraph . add Vertex (" J eff ") ĊĠĠĠĠĠĠĠ Ġval Ġc raig Ġ= Ġgraph . add Vertex (" C raig ") ĊĊĊĠĠĠĠĠĠĠ Ġval Ġmong op op Ġ= Ġgraph . add Vertex ( T . label , Ġ" Mong op op ", Ġ" description ", Ġ" G re mlin ĠGraph Ġquery Ġlanguage Ġimplementation ", Ġ" time Ġspent ", Ġ" 2 Ġdays ") ĊĊĠĠĠĠĠĠĠ Ġan ton . add Edge (" created ", Ġmong op op ) ĊĠĠĠĠĠĠĠ Ġas ya . add Edge (" created ", Ġmong op op ) ĊĠĠĠĠĠĠĠ Ġas ya . add Edge (" auth ored ", Ġmong op op , Ġ" mot ivation ", Ġ" Many Ġcustomers Ġask Ġfor ĠMongoDB Ġimplementation Ġfor ĠG re mlin ") ĊĠĠĠĠĠĠĠ Ġro ss . add Edge (" created ", Ġmong op op ) ĊĠĠĠĠĠĠĠ Ġj eff . add Edge (" created ", Ġmong op op ) ĊĠĠĠĠĠĠĠ Ġc raig . add Edge (" consult ed ", Ġmong op op ) ĊĊĊĠĠĠĠĠĠĠ Ġprintln (" Who Ġare Ġother Ġguys Ġexcept ĠAnt on Ġwho Ġcreated Ġthe ĠMong op op ?") ĊĠĠĠĠĠĠĠ Ġval Ġg Ġ= Ġgraph . traversal () ĊĠĠĠĠĠĠĠ Ġg . V (). has Label (" Ant on "). ` as ` (" exclude ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. out (" created ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. in E (" created ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. in V () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. where ( neq (" exclude ")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. values < String >(" mot ivation ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. forEach Ġ{ Ġprintln ( it ) Ġ} ĊĊĊĠĠĠĠĠĠĠ Ġval Ġg 2 Ġ= Ġgraph . traversal () ĊĠĠĠĠĠĠĠ Ġg 2 . V (). has Label (" Mong op op "). values < String >(). forEach Ġ{ Ġprintln ( it ) Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/* g . V (). has Label (" Ant on "). forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprintln (" id : Ġ${ it . id ()} Ġ(${ it . label () }) ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( e Ġin Ġit . properties < Object >()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprintln ("\ t ${ e . key ()} Ġ-> Ġ${ e . value () }") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}*/ ĊĊĊĠĠĠĠĠĠĠ Ġval Ġedges Ġ= Ġgraph . edges () ĊĠĠĠĠĠĠĠ Ġprintln (" Edges :") Ċ /* ĠĠĠĠĠĠĠ Ġwhile Ġ( edges . hasNext ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġedge Ġ= Ġedges . next () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprintln (" id : Ġ${ edge . id ()} Ġ(${ edge . label ()} ), Ġfrom Ġ${ edge . out Vertex (). label ()}, Ġto Ġ${ edge . in Vertex (). label () }") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( e Ġin Ġedge . properties < Object >()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprintln ("\ t ${ e . key ()} Ġ-> Ġ${ e . value () }") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}*/ ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġcleanup ( configuration : ĠConfiguration ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġurl Ġ= ĠConnection String ( configuration . getString ("${ Mongo Graph . MONGO DB _ CONFIG _ PREFIX }. connection Url ")) ĊĠĠĠĠĠĠĠ Ġval Ġclient Ġ= ĠMongo Clients . create ( url ) ĊĠĠĠĠĠĠĠ Ġclient . get Database ( url . database !! ). drop () ĊĠĠĠĠĠĠĠ Ġclient . close () ĊĠĠĠ Ġ} Ċ } Ċ