1 package org.openkilda.wfm.topology.stats;
3 import org.neo4j.driver.v1.*;
4 import org.slf4j.Logger;
5 import org.slf4j.LoggerFactory;
7 import java.util.Iterator;
15 private static final Logger logger = LoggerFactory.getLogger(
CypherExecutor.class);
16 private final Driver driver;
24 this(
url, null, null);
35 boolean hasPassword = password != null && !password.isEmpty();
36 AuthToken token = hasPassword ? AuthTokens.basic(username, password) : AuthTokens.none();
37 logger.debug(
"connecting to neo4j at " +
url);
38 driver = GraphDatabase.driver(
url, token,
39 Config.build().withEncryptionLevel(Config.EncryptionLevel.NONE).toConfig());
49 public Iterator<Map<String, Object>>
query(String
query, Map<String, Object> params) {
50 try (Session session = driver.session()) {
51 List<Map<String, Object>> list = session.run(
query, params)
52 .list(r -> r.asMap(CypherExecutor::convert));
53 return list.iterator();
63 private static Object convert(Value
value) {
64 switch (
value.type().name()) {
66 return value.asList(CypherExecutor::convert);
71 return value.asObject();
CypherExecutor(String url)
Iterator< Map< String, Object > > query(String query, Map< String, Object > params)
CypherExecutor(String url, String username, String password)