diff --git a/config-data-executor/src/main/java/org/micord/service/RequestService.java b/config-data-executor/src/main/java/org/micord/service/RequestService.java index aa43bee..d833998 100644 --- a/config-data-executor/src/main/java/org/micord/service/RequestService.java +++ b/config-data-executor/src/main/java/org/micord/service/RequestService.java @@ -145,9 +145,9 @@ public class RequestService { try (Connection connection = DatabaseConnection.getConnection( request.getSqlConnectionParams())) { String requestURL = (String) query.get("requestURL"); - executeSqlQuery(connection, requestURL); + executeSqlQuery(connection, requestURL); - List queryIds = (List) query.get("ids"); + List queryIds = (List) query.get("ids"); if (queryIds != null && !queryIds.isEmpty()) { ids.addAll(queryIds); } else { @@ -163,64 +163,64 @@ public class RequestService { } } -private Map buildSqlQuery(SqlRequest request, List ids) { - logger.debug("Starting building SQL query for request: {}", request.getRequestURL()); - long startExecTime = System.currentTimeMillis(); - Map resultMap = new HashMap<>(); - String endpointArguments; + private Map buildSqlQuery(SqlRequest request, List ids) { + logger.debug("Starting building SQL query for request: {}", request.getRequestURL()); + long startExecTime = System.currentTimeMillis(); + Map resultMap = new HashMap<>(); + String endpointArguments; - String requestURL = request.getRequestURL(); + String requestURL = request.getRequestURL(); - if (requestURL.contains(":=")) { - endpointArguments = "'{" + ids.stream() - .map(String::trim) - .collect(Collectors.joining(", ")) + "}'"; - } else { - endpointArguments = "(" + ids.stream() - .map(s -> "'" + s.trim() + "'") - .collect(Collectors.joining(", ")) + ")"; - } + if (requestURL.contains(":=")) { + endpointArguments = "'{" + ids.stream() + .map(String::trim) + .collect(Collectors.joining(", ")) + "}'"; + } else { + endpointArguments = "(" + ids.stream() + .map(s -> "'" + s.trim() + "'") + .collect(Collectors.joining(", ")) + ")"; + } - if (request.getRequestArguments() != null && !request.getRequestArguments().isEmpty()) { - for (RequestArgument argument : request.getRequestArguments()) { + if (request.getRequestArguments() != null && !request.getRequestArguments().isEmpty()) { + for (RequestArgument argument : request.getRequestArguments()) { - if (argument.getRequestArgumentConnectionParams() != null) { - logger.debug("Opening connection for SQL RequestArgument: {}", argument.getRequestArgumentName()); - try (Connection connection = DatabaseConnection.getConnection( - argument.getRequestArgumentConnectionParams())) { - String query = argument.getRequestArgumentURL(); - List result = fetchFileListFromDatabaseSQL(connection, query); + if (argument.getRequestArgumentConnectionParams() != null) { + logger.debug("Opening connection for SQL RequestArgument: {}", argument.getRequestArgumentName()); + try (Connection connection = DatabaseConnection.getConnection( + argument.getRequestArgumentConnectionParams())) { + String query = argument.getRequestArgumentURL(); + List result = fetchFileListFromDatabaseSQL(connection, query); - resultMap.put("ids", result); + resultMap.put("ids", result); - if (result != null && !result.isEmpty()) { - String resultSet = "(" + result.stream() - .map(s -> "'" + s.trim() + "'") - .collect(Collectors.joining(", ")) + ")"; + if (result != null && !result.isEmpty()) { + String resultSet = "(" + result.stream() + .map(s -> "'" + s.trim() + "'") + .collect(Collectors.joining(", ")) + ")"; - requestURL = requestURL.replace("${" + argument.getRequestArgumentName() + "}", resultSet); + requestURL = requestURL.replace("${" + argument.getRequestArgumentName() + "}", resultSet); + + } } - - } - catch (SQLException e) { - logger.error("Failed to execute query for RequestArgument", e); + catch (SQLException e) { + logger.error("Failed to execute query for RequestArgument", e); + } } } } + + resultMap.put("requestURL", requestURL + .replace("${DB}", request.getSqlConnectionParams().getJdbcDatabase()) + .replace("${endpointArguments}", endpointArguments)); + + long endExecTime = System.currentTimeMillis(); + logger.debug("SQL query built in {} ms", endExecTime - startExecTime); + + return resultMap; } - resultMap.put("requestURL", requestURL - .replace("${DB}", request.getSqlConnectionParams().getJdbcDatabase()) - .replace("${endpointArguments}", endpointArguments)); - - long endExecTime = System.currentTimeMillis(); - logger.debug("SQL query built in {} ms", endExecTime - startExecTime); - - return resultMap; -} - private boolean executeSqlQuery(Connection connection, String query) throws SQLException { try (PreparedStatement stmt = connection.prepareStatement(query)) { @@ -282,9 +282,9 @@ private Map buildSqlQuery(SqlRequest request, List ids) } private Map executeSelectAqlRequest(ArangoDatabase arangoDb, - String aqlCollectionWrite, - RequestArgument requestArgument, - List ids, String transactionId) { + String aqlCollectionWrite, + RequestArgument requestArgument, + List ids, String transactionId) { Map entities = new HashMap<>(); String url = requestArgument.getRequestArgumentURL(); @@ -338,14 +338,17 @@ private Map buildSqlQuery(SqlRequest request, List ids) Map bindVars = new HashMap<>(); // TODO: verify correctness of received entities and compare keys - Object writeEntity = entities.get(aqlCollectionWrite); - bindVars.put("ids", entities); + Object ids = entities.get(aqlCollectionWrite); + bindVars.put("ids", ids); AqlQueryOptions aqlQueryOptions = new AqlQueryOptions().streamTransactionId(transactionId); - arangoDb.query(requestURL, null, bindVars, aqlQueryOptions); - - logger.info("Successfully removed {}: {}", aqlCollectionWrite, writeEntity); + try { + arangoDb.query(requestURL, null, bindVars, aqlQueryOptions); + logger.info("Successfully removed {} for ids: {}", aqlCollectionWrite, ids); + } catch (Exception e) { + logger.error("Failed to execute AQL request: {}", e.getMessage(), e); + } } }