Example usage for org.springframework.data.domain Page getTotalElements

List of usage examples for org.springframework.data.domain Page getTotalElements

Introduction

In this page you can find the example usage for org.springframework.data.domain Page getTotalElements.

Prototype

long getTotalElements();

Source Link

Document

Returns the total amount of elements.

Usage

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