diff --git a/src/main/java/at/ac/uibk/gitsearch/repository/search/MetaDataRepository.java b/src/main/java/at/ac/uibk/gitsearch/repository/search/MetaDataRepository.java index 34c1774bc6b6d5ae320217b5585d76920ca0f286..ea5d8c1e8e39d3051ab56789b8003c7c3e51bda0 100644 --- a/src/main/java/at/ac/uibk/gitsearch/repository/search/MetaDataRepository.java +++ b/src/main/java/at/ac/uibk/gitsearch/repository/search/MetaDataRepository.java @@ -41,7 +41,7 @@ import at.ac.uibk.gitsearch.service.dto.SearchResultsDTO.SearchResultDTO; @Repository public class MetaDataRepository { - + /** * just a local wrapper, to decrypt JSON * @@ -186,7 +186,7 @@ public class MetaDataRepository { while (tryNextPage) { SearchSourceBuilder sourceBuilder = new SearchSourceBuilder().size(pageSize).from(currentPage++*pageSize); - + searchRequest.source(sourceBuilder); SearchResponse searchResponse = elasticsearchClient.search(searchRequest, RequestOptions.DEFAULT); @@ -196,7 +196,7 @@ public class MetaDataRepository { objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); tryNextPage = searchResponse.getHits().getHits().length > 0; - + for (SearchHit searchHit : searchResponse.getHits().getHits()) { final String sourceAsJSON = searchHit.getSourceAsString(); SearchResultDTOWrapper entry = objectMapper.readValue(sourceAsJSON, SearchResultDTOWrapper.class); @@ -276,7 +276,7 @@ public class MetaDataRepository { SearchRepositoryConstants.METADATA_PUBLISHER) .type(MultiMatchQueryBuilder.Type.PHRASE_PREFIX)); -// forEachTerm(searchInputDTO.getMetadata().getAuthor(), +// forEachTerm(searchInputDTO.getMetadata().getAuthor(), // term -> // queryBuilder.must(QueryBuilders.prefixQuery(SearchRepositoryConstants.METADATA_CREATOR, term))); @@ -302,25 +302,33 @@ public class MetaDataRepository { SearchResponse searchResponse = elasticsearchClient.search(searchRequest, RequestOptions.DEFAULT); - ObjectMapper objectMapper = new ObjectMapper(); - objectMapper.registerModule(new JavaTimeModule()); - objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); - - final SearchResultsDTO results = new SearchResultsDTO(); - List<SearchResultDTO> searchResults = new ArrayList<>(); - for (SearchHit searchHit : searchResponse.getHits().getHits()) { - SearchResultDTOWrapper entry = objectMapper.readValue(searchHit.getSourceAsString(), - SearchResultDTOWrapper.class); - final SearchResultDTO metadata = entry.getMetadata(); - metadata.setProject(entry.getProject()); - searchResults.add(metadata); - } - long hitCount = searchResponse.getHits().getTotalHits(); - results.setHitCount(hitCount); - results.setSearchResult(searchResults); - return results; + return parseSearchResponse(searchResponse); } + private static SearchResultsDTO parseSearchResponse(final SearchResponse searchResponse) throws JsonProcessingException { + ObjectMapper objectMapper = new ObjectMapper(); + objectMapper.registerModule(new JavaTimeModule()); + objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); + + final SearchResultsDTO results = new SearchResultsDTO(); + final List<SearchResultDTO> searchResults = new ArrayList<>(); + for (SearchHit searchHit : searchResponse.getHits().getHits()) { + searchResults.add(parseSearchHit(searchHit, objectMapper)); + } + long hitCount = searchResponse.getHits().getTotalHits(); + results.setHitCount(hitCount); + results.setSearchResult(searchResults); + return results; + } + + private static SearchResultDTO parseSearchHit(SearchHit searchHit, ObjectMapper objectMapper) throws JsonProcessingException { + SearchResultDTOWrapper entry = objectMapper.readValue(searchHit.getSourceAsString(), + SearchResultDTOWrapper.class); + final SearchResultDTO metadata = entry.getMetadata(); + metadata.setProject(entry.getProject()); + return metadata; + } + /** Helper **/ private void forEachTerm(String searchTerm, Consumer<String> exec) { if (searchTerm == null)