Java служба возвращает сообщение Result вместе с классом Object - PullRequest
1 голос
/ 14 февраля 2020

Привет, я должен вернуть ResultMessage вместе с моим классом объектов в моем коде ниже.

public List<EmployeeInformation> findAll(String IndexName) throws Exception {

        String ResultMessage = new String();
        if (Strings.isNullOrEmpty(IndexName)) {
            ResultMessage= "Index name is null or empty";
        } else if (isTextContainUpperCase(IndexName)) {
            ResultMessage= "Index name should be in lowercase";
        } else if (!checkEsConnection(client)) {
            ResultMessage= "Elasticsearch deployment is not reachable";
        }
        SearchRequest searchRequest = new SearchRequest(IndexName);
        SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
        searchSourceBuilder.query(QueryBuilders.matchAllQuery());
        searchRequest.source(searchSourceBuilder);
        SearchResponse searchResponse = client.search(searchRequest, RequestOptions.DEFAULT);
        return getSearchResult(searchResponse);
    }



private List<EmployeeInformation> getSearchResult(SearchResponse response) {

        SearchHit[] searchHit = response.getHits().getHits();

        List<EmployeeInformation> EmployeeDocuments = new ArrayList<>();

        for (SearchHit hit : searchHit) {
            EmployeeDocuments
                    .add(objectMapper
                            .convertValue(hit
                                    .getSourceAsMap(), EmployeeInformation.class));
        }

        return EmployeeDocuments;
    }

Каков наилучший способ вернуть ResultMessage вместе с моим объектом employeeinformation. Может ли кто-нибудь изменить вышеуказанный код соответствующим образом и опубликовать свой ответ или предложить мне, как этого добиться? заранее спасибо

Ответы [ 2 ]

1 голос
/ 14 февраля 2020

Вы можете вернуть ImmutablePair<ResultMessage, List<EmployeeInformation>>. Затем к этим объектам получают доступ методы getLeft () и getRight (). Однако для этого вам потребуется org.apache.commons lib. Стоит добавить эту библиотеку, так как в ней много других утилит и классов-оболочек. https://mvnrepository.com/artifact/org.apache.commons/commons-lang3

1 голос
/ 14 февраля 2020

Этот код - мой рекомендуемый пример кода для вашего требования.

public class Test {

    public static void main(String args[]) {

        Test test = new Test();
        String dept = "test";

        Object[] result = test.searchUser(dept);

        // Here must and should be follow the initailize order.
        String something = null;
        EmployeeInformation employee = null;
        if (result.length>= 0 && result[0] instanceof String) {
            something = (String) result[0];
        }

        if (result.length>= 1 && result[1] instanceof EmployeeInformation) {
            employee = (EmployeeInformation) result[1];
        }
        // do something
    }

    public Object[] searchUser(String dept) {

        Object[] result = new Object[2];

        result[0] = dept;
        result[1] = getUser(dept);

        return result;

    }

    private List<EmployeeInformation> getUser(String dept) {

        List<EmployeeInformation> userList = null;

        // some logic for get the EmployeeInformationInformation List based on
        // department.

        return userList;

    }

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...