Fix ArangoDB
This commit is contained in:
parent
27501b82e1
commit
2ed088e415
1 changed files with 56 additions and 53 deletions
|
|
@ -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<String> queryIds = (List<String>) query.get("ids");
|
||||
List<String> queryIds = (List<String>) query.get("ids");
|
||||
if (queryIds != null && !queryIds.isEmpty()) {
|
||||
ids.addAll(queryIds);
|
||||
} else {
|
||||
|
|
@ -163,64 +163,64 @@ public class RequestService {
|
|||
}
|
||||
}
|
||||
|
||||
private Map<String, Object> buildSqlQuery(SqlRequest request, List<String> ids) {
|
||||
logger.debug("Starting building SQL query for request: {}", request.getRequestURL());
|
||||
long startExecTime = System.currentTimeMillis();
|
||||
Map<String, Object> resultMap = new HashMap<>();
|
||||
String endpointArguments;
|
||||
private Map<String, Object> buildSqlQuery(SqlRequest request, List<String> ids) {
|
||||
logger.debug("Starting building SQL query for request: {}", request.getRequestURL());
|
||||
long startExecTime = System.currentTimeMillis();
|
||||
Map<String, Object> 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<String> 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<String> 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<String, Object> buildSqlQuery(SqlRequest request, List<String> ids)
|
|||
}
|
||||
|
||||
private Map<String, Object> executeSelectAqlRequest(ArangoDatabase arangoDb,
|
||||
String aqlCollectionWrite,
|
||||
RequestArgument requestArgument,
|
||||
List<String> ids, String transactionId) {
|
||||
String aqlCollectionWrite,
|
||||
RequestArgument requestArgument,
|
||||
List<String> ids, String transactionId) {
|
||||
Map<String, Object> entities = new HashMap<>();
|
||||
|
||||
String url = requestArgument.getRequestArgumentURL();
|
||||
|
|
@ -338,14 +338,17 @@ private Map<String, Object> buildSqlQuery(SqlRequest request, List<String> ids)
|
|||
|
||||
Map<String, Object> 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);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue