in src/com/intellij/idea/plugin/hybris/tools/remote/http/HybrisHacHttpClient.java [159:221]
public HybrisHttpResult executeFlexibleSearch(
final Project project,
final boolean shouldCommit,
final boolean isPlainSQL,
final String maxRows,
final String content
) {
final var settings = RemoteConnectionUtil.INSTANCE.getActiveRemoteConnectionSettings(project, RemoteConnectionType.Hybris);
final var params = Arrays.asList(
new BasicNameValuePair("scriptType", "flexibleSearch"),
new BasicNameValuePair("commit", BooleanUtils.toStringTrueFalse(shouldCommit)),
new BasicNameValuePair("flexibleSearchQuery", isPlainSQL ? "" : content),
new BasicNameValuePair("sqlQuery", isPlainSQL ? content : ""),
new BasicNameValuePair("maxCount", maxRows),
new BasicNameValuePair("user", settings.getUsername())
// new BasicNameValuePair("dataSource", "master"),
// new BasicNameValuePair("locale", "en")
);
HybrisHttpResult.HybrisHttpResultBuilder resultBuilder = createResult();
final String actionUrl = settings.getGeneratedURL() + "/console/flexsearch/execute";
final HttpResponse response = post(project, actionUrl, params, true, DEFAULT_HAC_TIMEOUT, settings);
final StatusLine statusLine = response.getStatusLine();
resultBuilder = resultBuilder.httpCode(statusLine.getStatusCode());
if (statusLine.getStatusCode() != SC_OK || response.getEntity() == null) {
return resultBuilder.errorMessage("[" + statusLine.getStatusCode() + "] " +
statusLine.getReasonPhrase()).build();
}
final Document document;
try {
document = parse(response.getEntity().getContent(), StandardCharsets.UTF_8.name(), "");
} catch (final IOException e) {
return resultBuilder.errorMessage(e.getMessage() + ' ' + actionUrl).httpCode(SC_BAD_REQUEST).build();
}
final Elements fsResultStatus = document.getElementsByTag("body");
if (fsResultStatus == null) {
return resultBuilder.errorMessage("No data in response").build();
}
final Map json = parseResponse(fsResultStatus);
if (json == null) {
return createResult()
.errorMessage("Cannot parse response from the server...")
.build();
}
if (json.get("exception") != null) {
return createResult()
.errorMessage(((Map<String, Object>) json.get("exception")).get("message").toString())
.build();
}
final TableBuilder tableBuilder = new TableBuilder();
final List<String> headers = (List<String>) json.get("headers");
final List<List<String>> resultList = (List<List<String>>) json.get("resultList");
tableBuilder.addRow(headers.toArray(new String[]{}));
resultList.forEach(row -> tableBuilder.addRow(row.toArray(new String[]{})));
return resultBuilder.output(tableBuilder.toString()).build();
}