public HybrisHttpResult executeFlexibleSearch()

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();
    }