/** Ċ Ġ* ĠCopyright Ġ( c ) Ġ 2 0 2 0 - present , ĠDash ĠCore ĠGroup Ċ Ġ* Ċ Ġ* ĠThis Ġsource Ġcode Ġis Ġlicensed Ġunder Ġthe ĠMIT Ġlicense Ġfound Ġin Ġthe Ċ Ġ* ĠLICENSE Ġfile Ġin Ġthe Ġroot Ġdirectory Ġof Ġthis Ġsource Ġtree . Ċ Ġ*/ Ċ package Ġorg . dash j . platform . examples Ċ Ċ import Ġjava . util . Scanner Ċ import Ġorg . bitcoin j . core . Coin Ċ import Ġorg . dash j . platform . dash pay . Contact Request Ċ import Ġorg . dash j . platform . dash pay . Contact Requests Ċ import Ġorg . dash j . platform . dash pay . Profile Ċ import Ġorg . dash j . platform . dash pay . Profiles Ċ import Ġorg . dash j . platform . dpp . identifier . Identifier Ċ import Ġorg . dash j . platform . dpp . identity . Identity Ċ import Ġorg . dash j . platform . dpp . util . Credits Converter Ċ import Ġorg . dash j . platform . sdk . Client Ċ import Ġorg . dash j . platform . sdk . client . Client Options Ċ import Ġorg . dash j . platform . sdk . platform . Documents Ċ import Ġorg . dash j . platform . sdk . platform . Domain Document Ċ import Ġorg . dash j . platform . sdk . platform . Names Ċ Ċ class ĠSearch Names Ġ{ ĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġlateinit Ġvar Ġsdk : ĠClient ĊĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġfun Ġmain ( args : ĠArray < String >) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( args . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprintln (" Usage : ĠSearch Names Ġnetwork ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsdk Ġ= ĠClient ( Client Options ( network Ġ= Ġargs [ 0 ])) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprintln (" Enter Ġsearch Ġtext Ġfor Ġnames : Ġ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġscanner Ġ= ĠScanner ( System .` in `) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġtext Ġ= Ġscanner . next () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdo Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsearch Documents ( text ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprintln () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprintln (" Enter Ġsearch Ġtext Ġfor Ġnames : Ġ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext Ġ= Ġscanner . next () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġwhile Ġ( text . isNotEmpty ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġsearch Documents ( text : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġplatform Ġ= Ġsdk . platform ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġstart At Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdocuments Ġ= Ġhash Map Of < Identifier , ĠDomain Document >() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġprofiles Ġ= Ġhash Map Of < Identifier , ĠProfile >() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġident ities Ġ= Ġhash Map Of < Identifier , ĠIdentity >() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcontact Requests Ġ= Ġhash Map Of < Identifier , ĠList < Contact Request >>() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġrequests Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġtransition Count Ġ= Ġ 3 Ġ// Ġidentity Ġ+ Ġpre order Ġ+ Ġdomain ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdo Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresults Ġ= Ġplatform . names . search ( text , ĠNames . DEFAULT _ PARENT _ DOMAIN , Ġfalse , Ġstart AtIndex Ġ= Ġstart At ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġthese Names Ġ= Ġhash Map Of < Identifier , ĠDomain Document >() ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresults . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdoc Ġ= ĠDomain Document ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( doc . dash Unique Identity Id Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthese Names [ doc . dash Unique Identity Id !! ] Ġ= Ġdoc ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġident ities [ doc . dash Unique Identity Id !! ] Ġ= Ġplatform . ident ities . get ( doc . dash Unique Identity Id !! ) !! ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdocuments . put All ( these Names ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġthese Profiles Ġ= ĠPro files ( platform ). getList ( these Names . keys . toList ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthese Profiles . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġprofile Ġ= ĠProfile ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprofiles [ it . owner Id ] Ġ= Ġprofile ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthese Names . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrequests Ġ= ĠContact Requests ( platform ). get ( it . key , Ġfalse , Ġ 0 , Ġtrue , Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlist Ġ= Ġrequests . map Ġ{ Ġrequest Ġ-> ĠContact Request ( request ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontact Requests [ it . key ] Ġ= Ġlist ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrequests Ġ+= Ġ 1 ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstart At Ġ+= ĠDocuments . DOCUMENT _ LIMIT ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprintln ("\ n Error Ġretrieving Ġresults Ġ( start At Ġ= Ġ Ġ$ start At )") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprintln ( e . message ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġwhile Ġ( requests Ġ== Ġ 0 Ġ|| Ġdocuments !!. size Ġ>= ĠDocuments . DOCUMENT _ LIMIT ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( doc Ġin Ġdocuments ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprintln ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Name : Ġ" Ġ+ Ġdoc . value . label Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Ġ( domain : Ġ" Ġ+ Ġdoc . value . normalized Parent DomainName Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ") ĠIdentity : Ġ" Ġ+ Ġdoc . value . owner Id ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( profiles . containsKey ( doc . key )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġprofile Ġ= Ġprofiles [ doc . key ] !! ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprintln (" Ġ ĠDisplayName : Ġ${ profile . displayName }") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprintln (" Ġ ĠPublic ĠMessage : Ġ${ profile . public Message }") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtransition Count Ġ+= Ġprofile . revision Ġ+ Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbalance Ġ= Ġident ities [ doc . key ] !!. balance ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprintln (" Ġ ĠCredit ĠBalance : Ġ Ġ$ balance ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsent Contact Request Count Ġ= Ġif Ġ( contact Requests [ doc . key ] Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontact Requests [ doc . key ] !!. size ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprintln (" Ġ ĠSent ĠContact ĠRequests : Ġ Ġ$ sent Contact Request Count ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtransition Count Ġ+= Ġsent Contact Request Count ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprintln (" Ġ Ġtransitions Ġmade : Ġ$ transition Count ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprintln (" Ġ Ġcredits / transition : Ġ${ ( Credits Converter . convert Sat oshi To Credits ( Coin . CENT ) Ġ- Ġbalance ) Ġ/ Ġtransition Count }") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( documents . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprintln (" No Ġnames Ġfound Ġstarting Ġwith Ġ$ text ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ