diff --git a/backend/src/main/java/uk/ac/ebi/spot/ols/controller/api/v1/V1SearchController.java b/backend/src/main/java/uk/ac/ebi/spot/ols/controller/api/v1/V1SearchController.java index 10cb89a2a..a83339e59 100644 --- a/backend/src/main/java/uk/ac/ebi/spot/ols/controller/api/v1/V1SearchController.java +++ b/backend/src/main/java/uk/ac/ebi/spot/ols/controller/api/v1/V1SearchController.java @@ -21,6 +21,8 @@ import org.apache.solr.client.solrj.response.FacetField.Count; import org.apache.solr.client.solrj.response.QueryResponse; import org.apache.solr.common.SolrDocument; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.MediaType; import org.springframework.stereotype.Controller; @@ -34,6 +36,7 @@ import org.springframework.web.bind.annotation.RestController; import uk.ac.ebi.spot.ols.repository.Validation; +import uk.ac.ebi.spot.ols.repository.neo4j.OlsNeo4jClient; import uk.ac.ebi.spot.ols.repository.solr.OlsSolrClient; import uk.ac.ebi.spot.ols.repository.transforms.LocalizationTransform; import uk.ac.ebi.spot.ols.repository.transforms.RemoveLiteralDatatypesTransform; @@ -59,6 +62,8 @@ public class V1SearchController { private OlsSolrClient solrClient; + private static final Logger logger = LoggerFactory.getLogger(V1SearchController.class); + @RequestMapping(path = "/api/search", produces = {MediaType.APPLICATION_JSON_VALUE}, method = RequestMethod.GET) public void search( @RequestParam("q") String query, @@ -81,8 +86,6 @@ public void search( @RequestParam(value = "lang", defaultValue = "en") String lang, HttpServletResponse response ) throws IOException, SolrServerException { - System.out.println("fieldList 1 = " + fieldList); - System.out.println("type = " + types); final SolrQuery solrQuery = new SolrQuery(); // 1 @@ -208,15 +211,13 @@ public void search( * Fix: End */ solrQuery.add("wt", format); - System.out.println("fieldList 2 = " + fieldList); - System.out.println("solrQuery=" + solrQuery.jsonStr()); + logger.debug("search: ()", solrQuery.toQueryString()); QueryResponse qr = solrClient.dispatchSearch(solrQuery, "ols4_entities"); List docs = new ArrayList<>(); for(SolrDocument res : qr.getResults()) { - System.out.println("res = " + res.toString()); String _json = (String)res.get("_json"); if(_json == null) { throw new RuntimeException("_json was null"); diff --git a/backend/src/main/java/uk/ac/ebi/spot/ols/controller/api/v1/V1SelectController.java b/backend/src/main/java/uk/ac/ebi/spot/ols/controller/api/v1/V1SelectController.java index 38a4a34e7..b8d0b9d51 100644 --- a/backend/src/main/java/uk/ac/ebi/spot/ols/controller/api/v1/V1SelectController.java +++ b/backend/src/main/java/uk/ac/ebi/spot/ols/controller/api/v1/V1SelectController.java @@ -9,6 +9,8 @@ import org.apache.solr.client.solrj.impl.HttpSolrClient; import org.apache.solr.client.solrj.response.QueryResponse; import org.apache.solr.common.SolrDocument; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.MediaType; import org.springframework.stereotype.Controller; @@ -17,6 +19,7 @@ import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; import uk.ac.ebi.spot.ols.repository.Validation; +import uk.ac.ebi.spot.ols.repository.neo4j.OlsNeo4jClient; import uk.ac.ebi.spot.ols.repository.solr.OlsSolrClient; import uk.ac.ebi.spot.ols.repository.transforms.LocalizationTransform; import uk.ac.ebi.spot.ols.repository.transforms.RemoveLiteralDatatypesTransform; @@ -42,6 +45,8 @@ public class V1SelectController { @Autowired private OlsSolrClient solrClient; + private static final Logger logger = LoggerFactory.getLogger(V1SelectController.class); + @RequestMapping(path = "/api/select", produces = {MediaType.APPLICATION_JSON_VALUE}, method = RequestMethod.GET) public void select( @RequestParam("q") String query, @@ -118,7 +123,7 @@ public void select( solrQuery.addHighlightField("whitespace_edge_synonym"); solrQuery.addHighlightField("synonym"); - System.out.println("select: " + solrQuery.toQueryString()); + logger.debug("select: ()", solrQuery.toQueryString()); QueryResponse qr = solrClient.dispatchSearch(solrQuery, "ols4_entities"); diff --git a/backend/src/main/java/uk/ac/ebi/spot/ols/repository/neo4j/OlsNeo4jClient.java b/backend/src/main/java/uk/ac/ebi/spot/ols/repository/neo4j/OlsNeo4jClient.java index 67e8b5681..64201ce9b 100644 --- a/backend/src/main/java/uk/ac/ebi/spot/ols/repository/neo4j/OlsNeo4jClient.java +++ b/backend/src/main/java/uk/ac/ebi/spot/ols/repository/neo4j/OlsNeo4jClient.java @@ -1,11 +1,14 @@ package uk.ac.ebi.spot.ols.repository.neo4j; import com.google.gson.JsonElement; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.Page; import org.springframework.data.domain.PageRequest; import org.springframework.data.domain.Pageable; import org.springframework.stereotype.Component; +import uk.ac.ebi.spot.ols.repository.solr.OlsSolrClient; import uk.ac.ebi.spot.ols.service.Neo4jClient; import java.util.List; @@ -19,6 +22,8 @@ public class OlsNeo4jClient { @Autowired Neo4jClient neo4jClient; + private static final Logger logger = LoggerFactory.getLogger(OlsNeo4jClient.class); + public Page getAll(String type, Map properties, Pageable pageable) { String query = "MATCH (a:" + type + ")"; @@ -71,40 +76,40 @@ private String makeEdgePropsClause(Map edgeProps) { public Page traverseOutgoingEdges(String type, String id, List edgeIRIs, Map edgeProps, Pageable pageable) { - String edge = makeEdgesList(edgeIRIs, edgeProps); + String edge = makeEdgesList(edgeIRIs, edgeProps); - // TODO fix injection + // TODO fix injection - String query = - "MATCH (a:" + type+ ")-[edge:" + edge + "]->(b) " - + "WHERE a.id = $id " + makeEdgePropsClause(edgeProps) - + "RETURN distinct b"; + String query = + "MATCH (a:" + type+ ")-[edge:" + edge + "]->(b) " + + "WHERE a.id = $id " + makeEdgePropsClause(edgeProps) + + "RETURN distinct b"; - String countQuery = - "MATCH (a:" + type + ")-[edge:" + edge + "]->(b) " - + "WHERE a.id = $id " + makeEdgePropsClause(edgeProps) - + "RETURN count(distinct b)"; + String countQuery = + "MATCH (a:" + type + ")-[edge:" + edge + "]->(b) " + + "WHERE a.id = $id " + makeEdgePropsClause(edgeProps) + + "RETURN count(distinct b)"; - System.out.println(query); + logger.trace(query); return neo4jClient.queryPaginated(query, "b", countQuery, parameters("type", type, "id", id), pageable); } public Page traverseIncomingEdges(String type, String id, List edgeIRIs, Map edgeProps, Pageable pageable) { - String edge = makeEdgesList(edgeIRIs, Map.of()); + String edge = makeEdgesList(edgeIRIs, Map.of()); - String query = - "MATCH (a:" + type + ")<-[edge:" + edge + "]-(b) " - + "WHERE a.id = $id " - + "RETURN distinct b"; + String query = + "MATCH (a:" + type + ")<-[edge:" + edge + "]-(b) " + + "WHERE a.id = $id " + + "RETURN distinct b"; - String countQuery = - "MATCH (a:" + type + ")<-[edge:" + edge + "]-(b) " - + "WHERE a.id = $id " - + "RETURN count(distinct b)"; + String countQuery = + "MATCH (a:" + type + ")<-[edge:" + edge + "]-(b) " + + "WHERE a.id = $id " + + "RETURN count(distinct b)"; - return neo4jClient.queryPaginated(query, "b", countQuery, parameters("type", type, "id", id), pageable); + return neo4jClient.queryPaginated(query, "b", countQuery, parameters("type", type, "id", id), pageable); } public Page recursivelyTraverseOutgoingEdges(String type, String id, List edgeIRIs, Map edgeProps, Pageable pageable) { @@ -128,21 +133,21 @@ public Page recursivelyTraverseOutgoingEdges(String type, String id public Page recursivelyTraverseIncomingEdges(String type, String id, List edgeIRIs, Map edgeProps, Pageable pageable) { - String edge = makeEdgesList(edgeIRIs, Map.of()); + String edge = makeEdgesList(edgeIRIs, Map.of()); - String query = - "MATCH (a:" + type + ") WHERE a.id = $id " - + "WITH a " - + "OPTIONAL MATCH (a)<-[edge:" + edge + " *]-(descendant) " - + "RETURN DISTINCT descendant AS c"; + String query = + "MATCH (a:" + type + ") WHERE a.id = $id " + + "WITH a " + + "OPTIONAL MATCH (a)<-[edge:" + edge + " *]-(descendant) " + + "RETURN DISTINCT descendant AS c"; - String countQuery = - "MATCH (a:" + type + ") WHERE a.id = $id " - + "WITH a " - + "OPTIONAL MATCH (a)<-[edge:" + edge + " *]-(descendant) " - + "RETURN count(DISTINCT descendant)"; + String countQuery = + "MATCH (a:" + type + ") WHERE a.id = $id " + + "WITH a " + + "OPTIONAL MATCH (a)<-[edge:" + edge + " *]-(descendant) " + + "RETURN count(DISTINCT descendant)"; - return neo4jClient.queryPaginated(query, "c", countQuery, parameters("id", id), pageable); + return neo4jClient.queryPaginated(query, "c", countQuery, parameters("id", id), pageable); } diff --git a/backend/src/main/java/uk/ac/ebi/spot/ols/service/Neo4jClient.java b/backend/src/main/java/uk/ac/ebi/spot/ols/service/Neo4jClient.java index cfbab9afd..2cac8c726 100644 --- a/backend/src/main/java/uk/ac/ebi/spot/ols/service/Neo4jClient.java +++ b/backend/src/main/java/uk/ac/ebi/spot/ols/service/Neo4jClient.java @@ -12,29 +12,31 @@ import org.neo4j.driver.*; import org.neo4j.driver.Record; import org.neo4j.driver.exceptions.NoSuchRecordException; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.data.domain.Page; import org.springframework.data.domain.PageImpl; import org.springframework.data.domain.Pageable; import org.springframework.data.domain.Sort; import org.springframework.stereotype.Component; import org.springframework.data.rest.webmvc.ResourceNotFoundException; +import uk.ac.ebi.spot.ols.repository.neo4j.OlsNeo4jClient; import javax.validation.constraints.NotNull; @Component public class Neo4jClient { - @NotNull @org.springframework.beans.factory.annotation.Value("${ols.neo4j.host:bolt://localhost:7687}") private String host; - - private Gson gson = new Gson(); private Driver driver; + private static final Logger logger = LoggerFactory.getLogger(Neo4jClient.class); + public Driver getDriver() { if(driver == null) { @@ -106,8 +108,8 @@ public Page queryPaginated(String query, String resVar, String coun queryToRun = query; } - System.out.println(queryToRun); - System.out.println(gson.toJson(parameters.asMap())); + logger.debug(queryToRun); + logger.trace(gson.toJson(parameters.asMap())); Stopwatch timer = Stopwatch.createStarted(); Result result = session.run( @@ -115,11 +117,11 @@ public Page queryPaginated(String query, String resVar, String coun parameters ); - System.out.println("Neo4j run paginated query: " + timer.stop()); + logger.info("Neo4j run paginated query: " + timer.stop()); Stopwatch timer2 = Stopwatch.createStarted(); Result countResult = session.run(countQuery, parameters); - System.out.println("Neo4j run paginated count: " + timer2.stop()); + logger.info("Neo4j run paginated count: " + timer2.stop()); Record countRecord = countResult.single(); int count = countRecord.get(0).asInt(); @@ -142,11 +144,11 @@ public JsonElement queryOne(String query, String resVar, Value parameters) { Session session = getSession(); - System.out.println(query); + logger.debug(query); Stopwatch timer = Stopwatch.createStarted(); Result result = session.run(query, parameters); - System.out.println("Neo4j run query " + query + ": " + timer.stop()); + logger.info("Neo4j run query " + query + ": " + timer.stop()); Value v = null; diff --git a/backend/src/main/resources/logback.xml b/backend/src/main/resources/logback.xml index 2c1bbe530..caedf23aa 100644 --- a/backend/src/main/resources/logback.xml +++ b/backend/src/main/resources/logback.xml @@ -7,7 +7,7 @@ - +