Search in sources :

Example 26 with Sort

use of org.springframework.data.domain.Sort in project goci by EBISPOT.

the class SolrIndexer method mapTraits.

Integer mapTraits() {
    Sort sort = new Sort(new Sort.Order("trait"));
    Pageable pager = new PageRequest(0, pageSize, sort);
    Page<DiseaseTrait> diseaseTraitPage = diseaseTraitRepository.findAll(pager);
    traitMapper.map(diseaseTraitPage.getContent());
    while (diseaseTraitPage.hasNext()) {
        if (maxPages != -1 && diseaseTraitPage.getNumber() >= maxPages - 1) {
            break;
        }
        pager = pager.next();
        diseaseTraitPage = diseaseTraitRepository.findAll(pager);
        traitMapper.map(diseaseTraitPage.getContent());
        if (sysOutLogging) {
            System.out.print(".");
        }
    }
    return (int) diseaseTraitPage.getTotalElements();
}
Also used : PageRequest(org.springframework.data.domain.PageRequest) Pageable(org.springframework.data.domain.Pageable) DiseaseTrait(uk.ac.ebi.spot.goci.model.DiseaseTrait) Sort(org.springframework.data.domain.Sort)

Example 27 with Sort

use of org.springframework.data.domain.Sort in project goci by EBISPOT.

the class JsonBuilder method getJsons.

public Collection<String> getJsons(String snp2geneMappingFilePath) throws IOException {
    Collection<String> jsons = new ArrayList<>();
    SnpToGeneMapper snpToGeneMapper = new SnpToGeneMapper(snp2geneMappingFilePath);
    Sort sort = new Sort(new Sort.Order("id"));
    int setNumber = 0;
    Pageable pager = new PageRequest(setNumber, 200, sort);
    Page<Association> associationPage = associationService.findPublishedAssociations(pager);
    Iterator<Association> assoIterator = associationPage.iterator();
    while (assoIterator.hasNext()) {
        jsons.addAll(processAssociation(assoIterator.next(), snpToGeneMapper));
    }
    while (associationPage.hasNext()) {
        pager = associationPage.nextPageable();
        associationPage = associationService.findPublishedAssociations(pager);
        assoIterator = associationPage.iterator();
        while (assoIterator.hasNext()) {
            jsons.addAll(processAssociation(assoIterator.next(), snpToGeneMapper));
        }
    }
    return jsons;
}
Also used : PageRequest(org.springframework.data.domain.PageRequest) Pageable(org.springframework.data.domain.Pageable) Sort(org.springframework.data.domain.Sort)

Example 28 with Sort

use of org.springframework.data.domain.Sort in project goci by EBISPOT.

the class StudyController method allStudiesPage.

/* All studies and various filtered lists */
@RequestMapping(produces = MediaType.TEXT_HTML_VALUE, method = RequestMethod.GET)
public String allStudiesPage(Model model, @RequestParam(required = false) Integer page, @RequestParam(required = false) String pubmed, @RequestParam(required = false) String author, @RequestParam(value = "studytype", required = false) String studyType, @RequestParam(value = "efotraitid", required = false) Long efoTraitId, @RequestParam(value = "notesquery", required = false) String notesQuery, @RequestParam(required = false) Long status, @RequestParam(required = false) Long curator, @RequestParam(value = "sorttype", required = false) String sortType, @RequestParam(value = "diseasetraitid", required = false) Long diseaseTraitId, @RequestParam(required = false) Integer year, @RequestParam(required = false) Integer month) {
    // This is passed back to model and determines if pagination is applied
    Boolean pagination = true;
    // Return all studies ordered by date if no page number given
    if (page == null) {
        // Find all studies ordered by study date and only display first page
        return "redirect:/studies?page=1";
    }
    // This will be returned to view and store what curator has searched for
    StudySearchFilter studySearchFilter = new StudySearchFilter();
    // Store filters which will be need for pagination bar and to build URI passed back to view
    String filters = "";
    // Set sort object and sort string for URI
    Sort sort = findSort(sortType);
    String sortString = "";
    if (sortType != null && !sortType.isEmpty()) {
        sortString = "&sorttype=" + sortType;
    }
    // This is the default study page will all studies
    Page<Study> studyPage = studyRepository.findAll(constructPageSpecification(page - 1, sort));
    // For multi-snp and snp interaction studies pagination is not applied as the query leads to duplicates
    List<Study> studies = null;
    // Search by pubmed ID option available from landing page
    if (pubmed != null && !pubmed.isEmpty()) {
        studyPage = studyRepository.findByPubmedId(pubmed, constructPageSpecification(page - 1, sort));
        filters = filters + "&pubmed=" + pubmed;
        studySearchFilter.setPubmedId(pubmed);
    }
    // Search by author option available from landing page
    if (author != null && !author.isEmpty()) {
        studyPage = studyRepository.findByAuthorContainingIgnoreCase(author, constructPageSpecification(page - 1, sort));
        filters = filters + "&author=" + author;
        studySearchFilter.setAuthor(author);
    }
    // Search by study type
    if (studyType != null && !studyType.isEmpty()) {
        if (studyType.equals("GXE")) {
            studyPage = studyRepository.findByGxe(true, constructPageSpecification(page - 1, sort));
        }
        if (studyType.equals("GXG")) {
            studyPage = studyRepository.findByGxg(true, constructPageSpecification(page - 1, sort));
        }
        if (studyType.equals("CNV")) {
            studyPage = studyRepository.findByCnv(true, constructPageSpecification(page - 1, sort));
        }
        if (studyType.equals("Genomewide array studies")) {
            studyPage = studyRepository.findByGenomewideArray(true, constructPageSpecification(page - 1, sort));
        }
        if (studyType.equals("Targeted array studies")) {
            studyPage = studyRepository.findByTargetedArray(true, constructPageSpecification(page - 1, sort));
        }
        if (studyType.equals("Studies in curation queue")) {
            CurationStatus errorStatus = curationStatusRepository.findByStatus("Publish study");
            Long errorStatusId = errorStatus.getId();
            studyPage = studyRepository.findByHousekeepingCurationStatusIdNot(errorStatusId, constructPageSpecification(page - 1, sort));
        }
        if (studyType.equals("p-Value Set")) {
            studyPage = studyRepository.findByFullPvalueSet(true, constructPageSpecification(page - 1, sort));
        }
        if (studyType.equals("Multi-SNP haplotype studies")) {
            studies = studyRepository.findStudyDistinctByAssociationsMultiSnpHaplotypeTrue(sort);
            pagination = false;
        }
        if (studyType.equals("SNP Interaction studies")) {
            studies = studyRepository.findStudyDistinctByAssociationsSnpInteractionTrue(sort);
            pagination = false;
        }
        studySearchFilter.setStudyType(studyType);
        filters = filters + "&studytype=" + studyType;
    }
    // Search by efo trait id
    if (efoTraitId != null) {
        studyPage = studyRepository.findByEfoTraitsId(efoTraitId, constructPageSpecification(page - 1, sort));
        studySearchFilter.setEfoTraitSearchFilterId(efoTraitId);
        filters = filters + "&efotraitid=" + efoTraitId;
    }
    // Search by disease trait id
    if (diseaseTraitId != null) {
        studyPage = studyRepository.findByDiseaseTraitId(diseaseTraitId, constructPageSpecification(page - 1, sort));
        studySearchFilter.setDiseaseTraitSearchFilterId(diseaseTraitId);
        filters = filters + "&diseasetraitid=" + diseaseTraitId;
    }
    // Search by notes for entered string
    if (notesQuery != null && !notesQuery.isEmpty()) {
        studyPage = studyRepository.findDistinctByNotesTextNoteContainingIgnoreCase(notesQuery, constructPageSpecification(page - 1, sort));
        studySearchFilter.setNotesQuery(notesQuery);
        filters = filters + "&notesquery=" + notesQuery;
    }
    // If user entered a status
    if (status != null) {
        // If we have curator and status find by both
        if (curator != null) {
            // This is just used to link from reports tab
            if (year != null && month != null) {
                studyPage = studyRepository.findByPublicationDateAndCuratorAndStatus(curator, status, year, month, constructPageSpecification(page - 1, sort));
                studySearchFilter.setMonthFilter(month);
                studySearchFilter.setYearFilter(year);
                filters = filters + "&status=" + status + "&curator=" + curator + "&year=" + year + "&month=" + month;
            } else {
                studyPage = studyRepository.findByHousekeepingCurationStatusIdAndHousekeepingCuratorId(status, curator, constructPageSpecification(page - 1, sort));
                filters = filters + "&status=" + status + "&curator=" + curator;
            }
            // Return these values so they appear in filter results
            studySearchFilter.setCuratorSearchFilterId(curator);
            studySearchFilter.setStatusSearchFilterId(status);
        } else {
            studyPage = studyRepository.findByHousekeepingCurationStatusId(status, constructPageSpecification(page - 1, sort));
            filters = filters + "&status=" + status;
            // Return this value so it appears in filter result
            studySearchFilter.setStatusSearchFilterId(status);
        }
    } else // If user entered curator
    {
        if (curator != null) {
            studyPage = studyRepository.findByHousekeepingCuratorId(curator, constructPageSpecification(page - 1, sort));
            filters = filters + "&curator=" + curator;
            // Return this value so it appears in filter result
            studySearchFilter.setCuratorSearchFilterId(curator);
        }
    }
    // Return URI, this will build thymeleaf links using by sort buttons.
    // At present, do not add the current sort to the URI,
    // just maintain any filter values (pubmed id, author etc) used by curator
    String uri = "/studies?page=1";
    if (!filters.isEmpty()) {
        uri = uri + filters;
    }
    model.addAttribute("uri", uri);
    // filters will be used by pagination bar
    if (!filters.isEmpty()) {
        if (!sortString.isEmpty()) {
            filters = filters + sortString;
        }
    } else // If user has just sorted without any filter we need
    // to pass this back to pagination bar
    {
        if (!sortString.isEmpty()) {
            filters = sortString;
        }
    }
    model.addAttribute("filters", filters);
    long totalStudies;
    int current = 1;
    // Construct table using pagination
    if (studies == null) {
        model.addAttribute("studies", studyPage);
        //Pagination variables
        totalStudies = studyPage.getTotalElements();
        current = studyPage.getNumber() + 1;
        // Returns the greater of two values
        int begin = Math.max(1, current - 5);
        int end = // how many pages to display in the pagination bar
        Math.min(begin + 10, studyPage.getTotalPages());
        model.addAttribute("beginIndex", begin);
        model.addAttribute("endIndex", end);
        model.addAttribute("currentIndex", current);
    } else {
        model.addAttribute("studies", studies);
        totalStudies = studies.size();
    }
    model.addAttribute("totalStudies", totalStudies);
    model.addAttribute("pagination", pagination);
    // Add studySearchFilter to model so user can filter table
    model.addAttribute("studySearchFilter", studySearchFilter);
    // Add assignee and status assignment so user can assign
    // study to curator or assign a status
    // Also set uri so we can redirect to page user was on
    Assignee assignee = new Assignee();
    StatusAssignment statusAssignment = new StatusAssignment();
    assignee.setUri("/studies?page=" + current + filters);
    statusAssignment.setUri("/studies?page=" + current + filters);
    model.addAttribute("assignee", assignee);
    model.addAttribute("statusAssignment", statusAssignment);
    return "studies";
}
Also used : Study(uk.ac.ebi.spot.goci.model.Study) Assignee(uk.ac.ebi.spot.goci.curation.model.Assignee) StudySearchFilter(uk.ac.ebi.spot.goci.curation.model.StudySearchFilter) CurationStatus(uk.ac.ebi.spot.goci.model.CurationStatus) StatusAssignment(uk.ac.ebi.spot.goci.curation.model.StatusAssignment) Sort(org.springframework.data.domain.Sort) RequestMapping(org.springframework.web.bind.annotation.RequestMapping)

Example 29 with Sort

use of org.springframework.data.domain.Sort in project sic by belluccifranco.

the class ProductoController method buscarProductos.

@GetMapping("/productos/busqueda/criteria")
@ResponseStatus(HttpStatus.OK)
public Page buscarProductos(@RequestParam long idEmpresa, @RequestParam(required = false) String codigo, @RequestParam(required = false) String descripcion, @RequestParam(required = false) Long idRubro, @RequestParam(required = false) Long idProveedor, @RequestParam(required = false) boolean soloFantantes, @RequestParam(required = false) Integer pagina, @RequestParam(required = false) Integer tamanio) {
    Rubro rubro = null;
    if (idRubro != null) {
        rubro = rubroService.getRubroPorId(idRubro);
    }
    Proveedor proveedor = null;
    if (idProveedor != null) {
        proveedor = proveedorService.getProveedorPorId(idProveedor);
    }
    if (tamanio == null || tamanio <= 0) {
        tamanio = TAMANIO_PAGINA_DEFAULT;
    }
    if (pagina == null || pagina < 0) {
        pagina = 0;
    }
    Pageable pageable = new PageRequest(pagina, tamanio, new Sort(Sort.Direction.ASC, "descripcion"));
    BusquedaProductoCriteria criteria = BusquedaProductoCriteria.builder().buscarPorCodigo((codigo != null && !codigo.isEmpty())).codigo(codigo).buscarPorDescripcion(descripcion != null && !descripcion.isEmpty()).descripcion(descripcion).buscarPorRubro(rubro != null).rubro(rubro).buscarPorProveedor(proveedor != null).proveedor(proveedor).empresa(empresaService.getEmpresaPorId(idEmpresa)).listarSoloFaltantes(soloFantantes).pageable(pageable).build();
    return productoService.buscarProductos(criteria);
}
Also used : PageRequest(org.springframework.data.domain.PageRequest) BusquedaProductoCriteria(sic.modelo.BusquedaProductoCriteria) Pageable(org.springframework.data.domain.Pageable) Rubro(sic.modelo.Rubro) Proveedor(sic.modelo.Proveedor) Sort(org.springframework.data.domain.Sort) GetMapping(org.springframework.web.bind.annotation.GetMapping) ResponseStatus(org.springframework.web.bind.annotation.ResponseStatus)

Example 30 with Sort

use of org.springframework.data.domain.Sort in project sic by belluccifranco.

the class ClienteServiceImpl method buscarClientes.

@Override
public List<Cliente> buscarClientes(BusquedaClienteCriteria criteria) {
    //Empresa
    if (criteria.getEmpresa() == null) {
        throw new EntityNotFoundException(ResourceBundle.getBundle("Mensajes").getString("mensaje_empresa_no_existente"));
    }
    if (criteria.getRazonSocial() == null) {
        criteria.setRazonSocial("");
    }
    QCliente qcliente = QCliente.cliente;
    BooleanBuilder builder = new BooleanBuilder();
    builder.and(qcliente.empresa.eq(criteria.getEmpresa()).and(qcliente.eliminado.eq(false))).and(this.buildPredicadoBusqueda(criteria.getRazonSocial(), criteria.getNombreFantasia(), criteria.getIdFiscal(), qcliente, criteria.isBuscaPorRazonSocial(), criteria.isBuscaPorNombreFantasia(), criteria.isBuscaPorId_Fiscal()));
    if (criteria.isBuscaPorLocalidad() == true) {
        builder.and(qcliente.localidad.eq(criteria.getLocalidad()));
    }
    if (criteria.isBuscaPorProvincia() == true) {
        builder.and(qcliente.localidad.provincia.eq(criteria.getProvincia()));
    }
    if (criteria.isBuscaPorPais() == true) {
        builder.and(qcliente.localidad.provincia.pais.eq(criteria.getPais()));
    }
    List<Cliente> list = new ArrayList<>();
    clienteRepository.findAll(builder, new Sort(Sort.Direction.ASC, "razonSocial")).iterator().forEachRemaining(list::add);
    return list;
}
Also used : BooleanBuilder(com.querydsl.core.BooleanBuilder) ArrayList(java.util.ArrayList) Sort(org.springframework.data.domain.Sort) QCliente(sic.modelo.QCliente) EntityNotFoundException(javax.persistence.EntityNotFoundException) QCliente(sic.modelo.QCliente) Cliente(sic.modelo.Cliente)

Aggregations

Sort (org.springframework.data.domain.Sort)49 PageRequest (org.springframework.data.domain.PageRequest)29 Pageable (org.springframework.data.domain.Pageable)14 ArrayList (java.util.ArrayList)13 RequestMapping (org.springframework.web.bind.annotation.RequestMapping)7 IdmIdentityDto (eu.bcvsolutions.idm.core.api.dto.IdmIdentityDto)5 List (java.util.List)5 Order (org.springframework.data.domain.Sort.Order)5 BooleanBuilder (com.querydsl.core.BooleanBuilder)4 ResultCodeException (eu.bcvsolutions.idm.core.api.exception.ResultCodeException)4 Collectors (java.util.stream.Collectors)4 EntityNotFoundException (javax.persistence.EntityNotFoundException)4 ApiOperation (io.swagger.annotations.ApiOperation)3 Date (java.util.Date)3 PageImpl (org.springframework.data.domain.PageImpl)3 JsonGenerator (com.fasterxml.jackson.core.JsonGenerator)2 Commentable (com.odysseusinc.arachne.portal.api.v1.dto.Commentable)2 SubmissionInsightDTO (com.odysseusinc.arachne.portal.api.v1.dto.SubmissionInsightDTO)2 CommentTopic (com.odysseusinc.arachne.portal.model.CommentTopic)2 SubmissionInsight (com.odysseusinc.arachne.portal.model.SubmissionInsight)2