List of usage examples for org.springframework.data.domain Page getTotalElements
long getTotalElements();
From source file:com.github.vanroy.springdata.jest.JestElasticsearchTemplateTests.java
@Test public void shouldSortResultsGivenMultipleSortCriteria() { // given/* w ww .j a va 2 s .com*/ List<IndexQuery> indexQueries; // first document String documentId = randomNumeric(5); SampleEntity sampleEntity1 = SampleEntity.builder().id(documentId).message("abc").rate(10) .version(System.currentTimeMillis()).build(); // second document String documentId2 = randomNumeric(5); SampleEntity sampleEntity2 = SampleEntity.builder().id(documentId2).message("xyz").rate(5) .version(System.currentTimeMillis()).build(); // third document String documentId3 = randomNumeric(5); SampleEntity sampleEntity3 = SampleEntity.builder().id(documentId3).message("xyz").rate(15) .version(System.currentTimeMillis()).build(); indexQueries = getIndexQueries(Arrays.asList(sampleEntity1, sampleEntity2, sampleEntity3)); elasticsearchTemplate.bulkIndex(indexQueries); elasticsearchTemplate.refresh(SampleEntity.class); SearchQuery searchQuery = new NativeSearchQueryBuilder().withQuery(matchAllQuery()) .withSort(new FieldSortBuilder("rate").ignoreUnmapped(true).order(SortOrder.ASC)) .withSort(new FieldSortBuilder("message").ignoreUnmapped(true).order(SortOrder.ASC)).build(); // when Page<SampleEntity> sampleEntities = elasticsearchTemplate.queryForPage(searchQuery, SampleEntity.class); // then assertThat(sampleEntities.getTotalElements(), equalTo(3L)); assertThat(sampleEntities.getContent().get(0).getRate(), is(sampleEntity2.getRate())); assertThat(sampleEntities.getContent().get(1).getMessage(), is(sampleEntity1.getMessage())); }
From source file:com.github.vanroy.springdata.jest.JestElasticsearchTemplateTests.java
@Test public void shouldReturnSimilarResultsGivenMoreLikeThisQuery() { // given/*from ww w . j av a 2s . co m*/ String sampleMessage = "So we build a web site or an application and want to add search to it, " + "and then it hits us: getting search working is hard. We want our search solution to be fast," + " we want a painless setup and a completely free search schema, we want to be able to index data simply using JSON over HTTP, " + "we want our search server to be always available, we want to be able to start with one machine and scale to hundreds, " + "we want real-time search, we want simple multi-tenancy, and we want a solution that is built for the cloud."; String documentId1 = randomNumeric(5); SampleEntity sampleEntity = SampleEntity.builder().id(documentId1).message(sampleMessage) .version(System.currentTimeMillis()).build(); IndexQuery indexQuery = getIndexQuery(sampleEntity); elasticsearchTemplate.index(indexQuery); String documentId2 = randomNumeric(5); elasticsearchTemplate.index(getIndexQuery(SampleEntity.builder().id(documentId2).message(sampleMessage) .version(System.currentTimeMillis()).build())); elasticsearchTemplate.refresh(SampleEntity.class); MoreLikeThisQuery moreLikeThisQuery = new MoreLikeThisQuery(); moreLikeThisQuery.setId(documentId2); moreLikeThisQuery.addFields("message"); moreLikeThisQuery.setMinDocFreq(1); // when Page<SampleEntity> sampleEntities = elasticsearchTemplate.moreLikeThis(moreLikeThisQuery, SampleEntity.class); // then assertThat(sampleEntities.getTotalElements(), is(equalTo(1L))); assertThat(sampleEntities.getContent(), hasItem(sampleEntity)); }
From source file:com.github.vanroy.springdata.jest.JestElasticsearchTemplateTests.java
@Test public void shouldReturnFieldsBasedOnSourceFilter() { // given//w w w.j ava2 s . c o m String documentId = randomNumeric(5); String message = "some test message"; SampleEntity sampleEntity = SampleEntity.builder().id(documentId).message(message) .version(System.currentTimeMillis()).build(); IndexQuery indexQuery = getIndexQuery(sampleEntity); elasticsearchTemplate.index(indexQuery); elasticsearchTemplate.refresh(SampleEntity.class); FetchSourceFilterBuilder sourceFilter = new FetchSourceFilterBuilder(); sourceFilter.withIncludes("message"); SearchQuery searchQuery = new NativeSearchQueryBuilder().withQuery(matchAllQuery()).withIndices(INDEX_NAME) .withTypes(TYPE_NAME).withSourceFilter(sourceFilter.build()).build(); // when Page<SampleEntity> page = elasticsearchTemplate.queryForPage(searchQuery, SampleEntity.class); // then assertThat(page, is(notNullValue())); assertThat(page.getTotalElements(), is(equalTo(1L))); assertThat(page.getContent().get(0).getMessage(), is(message)); }
From source file:com.github.vanroy.springdata.jest.JestElasticsearchTemplateTests.java
@Test public void shouldIndexVersionnedEntity() { // given//www . j a va2s. c o m String documentId = randomNumeric(5); BasicEntity entity = new BasicEntity(documentId, "test"); IndexQuery indexQuery = new IndexQueryBuilder().withId(documentId).withIndexName(INDEX_NAME) .withType(TYPE_NAME).withVersion(entity.getVersion()).withObject(entity).build(); elasticsearchTemplate.index(indexQuery); elasticsearchTemplate.refresh(INDEX_NAME); SearchQuery searchQuery = new NativeSearchQueryBuilder().withIndices(INDEX_NAME).withTypes(TYPE_NAME) .withQuery(matchAllQuery()).build(); // when Page<BasicEntity> entities = elasticsearchTemplate.queryForPage(searchQuery, BasicEntity.class); // then assertThat(entities, is(notNullValue())); assertThat(entities.getTotalElements(), greaterThanOrEqualTo(1L)); assertThat(entities.getContent().get(0).getFirstName(), equalTo(entity.getFirstName())); assertThat(entities.getContent().get(0).getVersion(), equalTo(entity.getVersion())); }
From source file:com.github.vanroy.springdata.jest.JestElasticsearchTemplateTests.java
@Test public void shouldReturnPageForGivenSearchQuery() { // given// w w w .ja v a 2 s . com String documentId = randomNumeric(5); SampleEntity sampleEntity = SampleEntity.builder().id(documentId).message("some message") .version(System.currentTimeMillis()).build(); IndexQuery indexQuery = getIndexQuery(sampleEntity); elasticsearchTemplate.index(indexQuery); elasticsearchTemplate.refresh(SampleEntity.class); SearchQuery searchQuery = new NativeSearchQueryBuilder().withQuery(matchAllQuery()).build(); // when Page<SampleEntity> sampleEntities = elasticsearchTemplate.queryForPage(searchQuery, SampleEntity.class); // then assertThat(sampleEntities, is(notNullValue())); assertThat(sampleEntities.getTotalElements(), greaterThanOrEqualTo(1L)); assertThat(sampleEntities.getContent().get(0), is(sampleEntity)); }
From source file:com.github.vanroy.springdata.jest.JestElasticsearchTemplateTests.java
@Test public void shouldIndexSampleEntityWithIndexAndTypeAtRuntime() { // given/* w w w.jav a 2 s.c om*/ String documentId = randomNumeric(5); SampleEntity sampleEntity = SampleEntity.builder().id(documentId).message("some message") .version(System.currentTimeMillis()).build(); IndexQuery indexQuery = new IndexQueryBuilder().withId(documentId).withIndexName(INDEX_NAME) .withType(TYPE_NAME).withObject(sampleEntity).build(); elasticsearchTemplate.index(indexQuery); elasticsearchTemplate.refresh(INDEX_NAME); SearchQuery searchQuery = new NativeSearchQueryBuilder().withIndices(INDEX_NAME).withTypes(TYPE_NAME) .withQuery(matchAllQuery()).build(); // when Page<SampleEntity> sampleEntities = elasticsearchTemplate.queryForPage(searchQuery, SampleEntity.class); // then assertThat(sampleEntities, is(notNullValue())); assertThat(sampleEntities.getTotalElements(), greaterThanOrEqualTo(1L)); }
From source file:com.github.vanroy.springdata.jest.JestElasticsearchTemplateTests.java
@Test public void shouldReturnSpecifiedFields() { // given/*from ww w .j a v a 2 s .co m*/ String documentId = randomNumeric(5); String message = "some test message"; SampleEntity sampleEntity = SampleEntity.builder().id(documentId).message(message) .version(System.currentTimeMillis()).build(); IndexQuery indexQuery = getIndexQuery(sampleEntity); elasticsearchTemplate.index(indexQuery); elasticsearchTemplate.refresh(SampleEntity.class); SearchQuery searchQuery = new NativeSearchQueryBuilder().withQuery(matchAllQuery()).withIndices(INDEX_NAME) .withTypes(TYPE_NAME).withFields("message").build(); // when Page<String> page = elasticsearchTemplate.queryForPage(searchQuery, String.class, new JestSearchResultMapper() { @Override public <T> Page<T> mapResults(SearchResult response, Class<T> clazz, Pageable pageable) { List<String> values = new ArrayList<String>(); for (JsonElement hit : response.getJsonObject().get("hits").getAsJsonObject().get("hits") .getAsJsonArray()) { values.add(hit.getAsJsonObject().get("fields").getAsJsonObject().get("message") .getAsString()); } return new PageImpl<T>((List<T>) values); } }); // then assertThat(page, is(notNullValue())); assertThat(page.getTotalElements(), is(equalTo(1L))); assertThat(page.getContent().get(0), is(message)); }
From source file:com.github.vanroy.springdata.jest.JestElasticsearchTemplateTests.java
@Test /**//from ww w. ja v a 2 s. com * This is basically a demonstration to show composing entities out of heterogeneous indexes. */ public void shouldComposeObjectsReturnedFromHeterogeneousIndexes() { // Given HetroEntity1 entity1 = new HetroEntity1(randomNumeric(3), "aFirstName"); HetroEntity2 entity2 = new HetroEntity2(randomNumeric(4), "aLastName"); IndexQuery idxQuery1 = new IndexQueryBuilder().withIndexName(INDEX_1_NAME).withId(entity1.getId()) .withObject(entity1).build(); IndexQuery idxQuery2 = new IndexQueryBuilder().withIndexName(INDEX_2_NAME).withId(entity2.getId()) .withObject(entity2).build(); elasticsearchTemplate.bulkIndex(Arrays.asList(idxQuery1, idxQuery2)); elasticsearchTemplate.refresh(INDEX_1_NAME); elasticsearchTemplate.refresh(INDEX_2_NAME); // When SearchQuery searchQuery = new NativeSearchQueryBuilder().withQuery(matchAllQuery()).withTypes("hetro") .withIndices(INDEX_1_NAME, INDEX_2_NAME).build(); Page<ResultAggregator> page = elasticsearchTemplate.queryForPage(searchQuery, ResultAggregator.class, new JestSearchResultMapper() { @Override public <T> Page<T> mapResults(SearchResult response, Class<T> clazz, Pageable pageable) { List<ResultAggregator> values = new ArrayList<>(); for (SearchResult.Hit<JsonObject, Void> searchHit : response.getHits(JsonObject.class)) { String id = String.valueOf(searchHit.source.get("id")); String firstName = searchHit.source.get("firstName") != null ? searchHit.source.get("firstName").getAsString() : ""; String lastName = searchHit.source.get("lastName") != null ? searchHit.source.get("lastName").getAsString() : ""; values.add(new ResultAggregator(id, firstName, lastName)); } return new PageImpl<>((List<T>) values); } }); assertThat(page.getTotalElements(), is(2L)); }
From source file:com.aerohive.nms.web.config.lbs.services.HmFolderServiceImpl.java
@Override @Transactional/* ww w .ja v a 2 s. co m*/ public void init(HmFolderInitVo vo) throws Exception { Page<HmFolder> folders = rep.findByOwnerId(vo.getOwnerId(), DEFAULT_PAGEREQUEST); if (folders.getTotalElements() > 0) { logger.error(String.format("Map has been initialized already for ownerId %s", vo.getOwnerId())); throw new BadRequestException(ErrorCodes.folderAlreadyInitialized); } // create root folders HmFolderVo organizationVo = newHmFolderVo(vo.getOwnerId(), null, vo.getOrganization()); HmFolder organization = (HmFolder) voDoUtil.toDo(organizationVo); organization.setCenterZoom((short) 2); organization = rep.save(organization); HmFolderVo cityVo = newHmFolderVo(vo.getOwnerId(), organization, vo.getCity()); HmFolder city = (HmFolder) voDoUtil.toDo(cityVo); city.setFolderType(FolderType.GENERIC); city.setIconType(IconType.AREA); city.setEnvironmentType(EnvironmentType.OUTDOOR_FREE_SPACE); city.setCenterZoom((short) 12); city.setAddress(vo.getStreet() + ", " + vo.getCity()); city = rep.save(city); HmFolderVo streetVo = newHmFolderVo(vo.getOwnerId(), city, vo.getStreet()); HmFolder street = (HmFolder) voDoUtil.toDo(streetVo); street.setFolderType(FolderType.BUILDING); street.setIconType(IconType.BUILDING); street.setEnvironmentType(EnvironmentType.OUTDOOR_FREE_SPACE); street.setAddress(vo.getStreet() + ", " + vo.getCity()); rep.save(street); // save country code HmPlanningConfig planningConfig = planningConfigRep.findByOwnerId(vo.getOwnerId()); if (null == planningConfig) { planningConfig = new HmPlanningConfig(); planningConfig.setOwnerId(vo.getOwnerId()); } planningConfig.setDefaultCountryCode(vo.getCountryCode()); planningConfigRep.save(planningConfig); }
From source file:uk.ac.ebi.ep.controller.BrowseTaxonomyController.java
@RequestMapping(value = FILTER_BY_FACETS, method = RequestMethod.GET) public String filterByFacets(@ModelAttribute("searchModel") SearchModel searchModel, @RequestParam(value = "taxId", required = true) Long taxId, @RequestParam(value = "organismName", required = false) String organismName, Model model, HttpServletRequest request, HttpSession session, RedirectAttributes attributes) { List<Species> species = enzymePortalService.findSpeciesByTaxId(taxId); List<Compound> compouds = enzymePortalService.findCompoundsByTaxId(taxId); List<Disease> diseases = enzymePortalService.findDiseasesByTaxId(taxId); List<EcNumber> enzymeFamilies = enzymePortalService.findEnzymeFamiliesByTaxId(taxId); SearchFilters filters = new SearchFilters(); filters.setSpecies(species);//from w w w . j a v a 2s . c o m filters.setCompounds(compouds); filters.setDiseases(diseases); filters.setEcNumbers(enzymeFamilies); SearchParams searchParams = searchModel.getSearchparams(); searchParams.setText(organismName); searchParams.setSize(SEARCH_PAGESIZE); searchModel.setSearchparams(searchParams); SearchResults searchResults = new SearchResults(); searchResults.setSearchfilters(filters); searchModel.setSearchresults(searchResults); SearchParams searchParameters = searchModel.getSearchparams(); String compound_autocompleteFilter = request.getParameter("searchparams.compounds"); String specie_autocompleteFilter = request.getParameter("_ctempList_selected"); String diseases_autocompleteFilter = request.getParameter("_DtempList_selected"); // Filter: List<String> specieFilter = searchParameters.getSpecies(); List<String> compoundFilter = searchParameters.getCompounds(); List<String> diseaseFilter = searchParameters.getDiseases(); List<Integer> ecFilter = searchParameters.getEcFamilies(); //remove empty string in the filter to avoid unsual behavior of the filter facets if (specieFilter.contains("")) { specieFilter.remove(""); } if (compoundFilter.contains("")) { compoundFilter.remove(""); } if (diseaseFilter.contains("")) { diseaseFilter.remove(""); } //to ensure that the seleted item is used in species filter, add the selected to the list. this is a workaround. different JS were used for auto complete and normal filter if ((specie_autocompleteFilter != null && StringUtils.hasLength(specie_autocompleteFilter) == true) && StringUtils.isEmpty(compound_autocompleteFilter) && StringUtils.isEmpty(diseases_autocompleteFilter)) { specieFilter.add(specie_autocompleteFilter); } if ((diseases_autocompleteFilter != null && StringUtils.hasLength(diseases_autocompleteFilter) == true) && StringUtils.isEmpty(compound_autocompleteFilter) && StringUtils.isEmpty(specie_autocompleteFilter)) { diseaseFilter.add(diseases_autocompleteFilter); } //both from auto complete and normal selection. selected items are displayed on top the list and returns back to the orignial list when not selected. //SearchResults searchResults = resultSet; List<Species> defaultSpeciesList = searchResults.getSearchfilters().getSpecies(); resetSelectedSpecies(defaultSpeciesList); searchParameters.getSpecies().stream().forEach((selectedItems) -> { defaultSpeciesList.stream() .filter((theSpecies) -> (selectedItems.equals(theSpecies.getScientificname()))) .forEach((theSpecies) -> { theSpecies.setSelected(true); }); }); List<Compound> defaultCompoundList = searchResults.getSearchfilters().getCompounds(); resetSelectedCompounds(defaultCompoundList); searchParameters.getCompounds().stream().forEach((SelectedCompounds) -> { defaultCompoundList.stream().filter((theCompound) -> (SelectedCompounds.equals(theCompound.getName()))) .forEach((theCompound) -> { theCompound.setSelected(true); }); }); List<Disease> defaultDiseaseList = searchResults.getSearchfilters().getDiseases(); resetSelectedDisease(defaultDiseaseList); searchParameters.getDiseases().stream().forEach((selectedDisease) -> { defaultDiseaseList.stream().filter((disease) -> (selectedDisease.equals(disease.getName()))) .forEach((disease) -> { disease.setSelected(true); }); }); List<EcNumber> defaultEcNumberList = searchResults.getSearchfilters().getEcNumbers(); resetSelectedEcNumber(defaultEcNumberList); searchParameters.getEcFamilies().stream().forEach((selectedEcFamily) -> { defaultEcNumberList.stream().filter((ec) -> (selectedEcFamily.equals(ec.getEc()))).forEach((ec) -> { ec.setSelected(true); }); }); Pageable pageable = new PageRequest(0, SEARCH_PAGESIZE, Sort.Direction.ASC, "function", "entryType"); Page<UniprotEntry> page = new PageImpl<>(new ArrayList<>(), pageable, 0); //specie only if (specieFilter.isEmpty() && compoundFilter.isEmpty() && diseaseFilter.isEmpty()) { page = enzymePortalService.filterBySpecie(taxId, pageable); } //specie only if (!specieFilter.isEmpty() && compoundFilter.isEmpty() && diseaseFilter.isEmpty()) { page = enzymePortalService.filterBySpecie(taxId, pageable); } // compounds only if (!compoundFilter.isEmpty() && diseaseFilter.isEmpty()) { page = enzymePortalService.filterBySpecieAndCompounds(taxId, compoundFilter, pageable); } // disease only if (compoundFilter.isEmpty() && !diseaseFilter.isEmpty()) { page = enzymePortalService.filterBySpecieAndDiseases(taxId, diseaseFilter, pageable); } //ec only if (compoundFilter.isEmpty() && diseaseFilter.isEmpty() && !ecFilter.isEmpty()) { page = enzymePortalService.filterBySpecieAndEc(taxId, ecFilter, pageable); } //compound and diseases if (!compoundFilter.isEmpty() && !diseaseFilter.isEmpty() && ecFilter.isEmpty()) { page = enzymePortalService.filterBySpecieAndCompoundsAndDiseases(taxId, compoundFilter, diseaseFilter, pageable); } //compound and ec if (!compoundFilter.isEmpty() && !ecFilter.isEmpty() && diseaseFilter.isEmpty()) { page = enzymePortalService.filterBySpecieAndCompoundsAndEc(taxId, compoundFilter, ecFilter, pageable); } //disease and ec if (!ecFilter.isEmpty() && !diseaseFilter.isEmpty() && compoundFilter.isEmpty()) { page = enzymePortalService.filterBySpecieAndDiseasesAndEc(taxId, diseaseFilter, ecFilter, pageable); } //disease and compounds and ec if (!ecFilter.isEmpty() && !diseaseFilter.isEmpty() && !compoundFilter.isEmpty()) { page = enzymePortalService.filterBySpecieAndCompoundsAndDiseasesAndEc(taxId, compoundFilter, diseaseFilter, ecFilter, pageable); } model.addAttribute("searchFilter", filters); List<UniprotEntry> result = page.getContent(); int current = page.getNumber() + 1; int begin = Math.max(1, current - 5); int end = Math.min(begin + 10, page.getTotalPages()); model.addAttribute("page", page); model.addAttribute("beginIndex", begin); model.addAttribute("endIndex", end); model.addAttribute("currentIndex", current); model.addAttribute("organismName", organismName); model.addAttribute("taxId", taxId); model.addAttribute("summaryEntries", result); searchResults.setTotalfound(page.getTotalElements()); searchResults.setSearchfilters(filters); searchResults.setSummaryentries(result); searchModel.setSearchresults(searchResults); model.addAttribute("searchModel", searchModel); model.addAttribute("searchConfig", searchConfig); String searchKey = getSearchKey(searchModel.getSearchparams()); cacheSearch(session.getServletContext(), searchKey, searchResults); setLastSummaries(session, searchResults.getSummaryentries()); clearHistory(session); addToHistory(session, searchModel.getSearchparams().getType(), searchKey); return RESULT; }