Search in sources :

Example 16 with Sort

use of org.springframework.data.domain.Sort in project CzechIdMng by bcvsolutions.

the class IdentityReportExecutor method generateData.

@Override
protected IdmAttachmentDto generateData(RptReportDto report) {
    File temp = null;
    FileOutputStream outputStream = null;
    try {
        // prepare temp file for json stream
        temp = getAttachmentManager().createTempFile();
        outputStream = new FileOutputStream(temp);
        // write into json stream
        JsonGenerator jGenerator = getMapper().getFactory().createGenerator(outputStream, JsonEncoding.UTF8);
        try {
            // json will be array of identities
            jGenerator.writeStartArray();
            // form instance has useful methods to transform form values
            IdmFormInstanceDto formInstance = new IdmFormInstanceDto(report, getFormDefinition(), report.getFilter());
            // initialize filter by given form - transform to multi value map
            // => form attribute defined above will be automaticaly mapped to identity filter
            IdmIdentityFilter filter = new IdmIdentityFilter(formInstance.toMultiValueMap());
            // report extends long running task - show progress by count and counter lrt attributes
            counter = 0L;
            // find a first page of identities
            Pageable pageable = new PageRequest(0, 100, new Sort(Direction.ASC, IdmIdentity_.username.getName()));
            do {
                Page<IdmIdentityDto> identities = identityService.find(filter, pageable, IdmBasePermission.READ);
                if (count == null) {
                    // report extends long running task - show progress by count and counter lrt attributes
                    count = identities.getTotalElements();
                }
                boolean canContinue = true;
                for (Iterator<IdmIdentityDto> i = identities.iterator(); i.hasNext() && canContinue; ) {
                    // write single identity into json
                    getMapper().writeValue(jGenerator, i.next());
                    // 
                    // supports cancel report generating (report extends long running task)
                    ++counter;
                    canContinue = updateState();
                }
                // iterate while next page of identities is available
                pageable = identities.hasNext() && canContinue ? identities.nextPageable() : null;
            } while (pageable != null);
            // 
            // close array of identities
            jGenerator.writeEndArray();
        } finally {
            // close json stream
            jGenerator.close();
        }
        // save create temp file with array of identities in json as attachment
        return createAttachment(report, new FileInputStream(temp));
    } catch (IOException ex) {
        throw new ReportGenerateException(report.getName(), ex);
    } finally {
        // just for sure - jGenerator should close stream itself
        IOUtils.closeQuietly(outputStream);
        FileUtils.deleteQuietly(temp);
    }
}
Also used : IdmFormInstanceDto(eu.bcvsolutions.idm.core.eav.api.dto.IdmFormInstanceDto) IdmIdentityFilter(eu.bcvsolutions.idm.core.api.dto.filter.IdmIdentityFilter) IOException(java.io.IOException) ReportGenerateException(eu.bcvsolutions.idm.rpt.api.exception.ReportGenerateException) FileInputStream(java.io.FileInputStream) PageRequest(org.springframework.data.domain.PageRequest) Pageable(org.springframework.data.domain.Pageable) FileOutputStream(java.io.FileOutputStream) JsonGenerator(com.fasterxml.jackson.core.JsonGenerator) Sort(org.springframework.data.domain.Sort) IdmIdentityDto(eu.bcvsolutions.idm.core.api.dto.IdmIdentityDto) File(java.io.File)

Example 17 with Sort

use of org.springframework.data.domain.Sort in project CzechIdMng by bcvsolutions.

the class IdentityReportExecutor method generateData.

@Override
protected IdmAttachmentDto generateData(RptReportDto report) {
    File temp = null;
    FileOutputStream outputStream = null;
    try {
        // prepare temp file for json stream
        temp = getAttachmentManager().createTempFile();
        outputStream = new FileOutputStream(temp);
        // write into json stream
        JsonGenerator jGenerator = getMapper().getFactory().createGenerator(outputStream, JsonEncoding.UTF8);
        try {
            // json will be array of identities
            jGenerator.writeStartArray();
            // form instance has useful methods to transform form values
            IdmFormInstanceDto formInstance = new IdmFormInstanceDto(report, getFormDefinition(), report.getFilter());
            // initialize filter by given form - transform to multi value map
            // => form attribute defined above will be automaticaly mapped to identity filter
            IdmIdentityFilter filter = new IdmIdentityFilter(formInstance.toMultiValueMap());
            // report extends long running task - show progress by count and counter lrt attributes
            counter = 0L;
            // find a first page of identities
            Pageable pageable = new PageRequest(0, 100, new Sort(Direction.ASC, IdmIdentity_.username.getName()));
            do {
                Page<IdmIdentityDto> identities = identityService.find(filter, pageable, IdmBasePermission.READ);
                if (count == null) {
                    // report extends long running task - show progress by count and counter lrt attributes
                    count = identities.getTotalElements();
                }
                boolean canContinue = true;
                for (Iterator<IdmIdentityDto> i = identities.iterator(); i.hasNext() && canContinue; ) {
                    // write single identity into json
                    getMapper().writeValue(jGenerator, i.next());
                    // 
                    // supports cancel report generating (report extends long running task)
                    ++counter;
                    canContinue = updateState();
                }
                // iterate while next page of identities is available
                pageable = identities.hasNext() && canContinue ? identities.nextPageable() : null;
            } while (pageable != null);
            // 
            // close array of identities
            jGenerator.writeEndArray();
        } finally {
            // close json stream
            jGenerator.close();
        }
        // save create temp file with array of identities in json as attachment
        return createAttachment(report, new FileInputStream(temp));
    } catch (IOException ex) {
        throw new ReportGenerateException(report.getName(), ex);
    } finally {
        // just for sure - jGenerator should close stream itself
        IOUtils.closeQuietly(outputStream);
        FileUtils.deleteQuietly(temp);
    }
}
Also used : IdmFormInstanceDto(eu.bcvsolutions.idm.core.eav.api.dto.IdmFormInstanceDto) IdmIdentityFilter(eu.bcvsolutions.idm.core.api.dto.filter.IdmIdentityFilter) IOException(java.io.IOException) ReportGenerateException(eu.bcvsolutions.idm.rpt.api.exception.ReportGenerateException) FileInputStream(java.io.FileInputStream) PageRequest(org.springframework.data.domain.PageRequest) Pageable(org.springframework.data.domain.Pageable) FileOutputStream(java.io.FileOutputStream) JsonGenerator(com.fasterxml.jackson.core.JsonGenerator) Sort(org.springframework.data.domain.Sort) IdmIdentityDto(eu.bcvsolutions.idm.core.api.dto.IdmIdentityDto) File(java.io.File)

Example 18 with Sort

use of org.springframework.data.domain.Sort in project CzechIdMng by bcvsolutions.

the class DefaultVsRequestService method findDuplicities.

/**
 * Find duplicity requests. All request in state IN_PROGRESS for same UID and
 * system. For all operation types.
 *
 * @param request
 * @return
 */
@Override
public List<VsRequestDto> findDuplicities(String uid, UUID systemId) {
    VsRequestFilter filter = new VsRequestFilter();
    filter.setUid(uid);
    filter.setSystemId(systemId);
    filter.setState(VsRequestState.IN_PROGRESS);
    Sort sort = new Sort(Direction.DESC, VsRequest_.created.getName());
    return this.find(filter, new PageRequest(0, Integer.MAX_VALUE, sort)).getContent();
}
Also used : PageRequest(org.springframework.data.domain.PageRequest) Sort(org.springframework.data.domain.Sort) VsRequestFilter(eu.bcvsolutions.idm.vs.dto.filter.VsRequestFilter)

Example 19 with Sort

use of org.springframework.data.domain.Sort in project cas by apereo.

the class MongoDbThrottledSubmissionHandlerInterceptorAdapter method exceedsThreshold.

@Override
public boolean exceedsThreshold(final HttpServletRequest request) {
    final ClientInfo clientInfo = ClientInfoHolder.getClientInfo();
    final String remoteAddress = clientInfo.getClientIpAddress();
    final Query query = new Query().addCriteria(Criteria.where("clientIpAddress").is(remoteAddress).and("principal").is(getUsernameParameterFromRequest(request)).and("actionPerformed").is(getAuthenticationFailureCode()).and("applicationCode").is(getApplicationCode()).and("whenActionWasPerformed").gte(getFailureInRangeCutOffDate()));
    query.with(new Sort(Sort.Direction.DESC, "whenActionWasPerformed"));
    query.limit(2);
    query.fields().include("whenActionWasPerformed");
    LOGGER.debug("Executing MongoDb throttling query [{}]", query.toString());
    final List<Date> failures = this.mongoTemplate.find(query, AuditActionContext.class, this.collectionName).stream().map(AuditActionContext::getWhenActionWasPerformed).collect(Collectors.toList());
    return calculateFailureThresholdRateAndCompare(failures);
}
Also used : Query(org.springframework.data.mongodb.core.query.Query) AuditActionContext(org.apereo.inspektr.audit.AuditActionContext) Sort(org.springframework.data.domain.Sort) ClientInfo(org.apereo.inspektr.common.web.ClientInfo) Date(java.util.Date)

Example 20 with Sort

use of org.springframework.data.domain.Sort in project plumdo-work by wengwh.

the class BaseResource method getPageable.

protected Pageable getPageable(Map<String, String> requestParams) {
    int page = 1;
    if (requestParams.containsKey("pageNum")) {
        page = ObjectUtils.convertToInteger(requestParams.get("pageNum"), 1);
    }
    int size = 10;
    if (requestParams.containsKey("pageSize")) {
        size = ObjectUtils.convertToInteger(requestParams.get("pageSize"), 10);
    }
    Order order = null;
    if (ObjectUtils.isNotEmpty(requestParams.get("sortName"))) {
        String sortName = requestParams.get("sortName");
        String sortOrder = requestParams.get("sortOrder");
        if (ObjectUtils.isEmpty(sortOrder) || sortOrder.equals("desc")) {
            order = new Order(Direction.DESC, sortName);
        } else {
            order = new Order(Direction.ASC, sortName);
        }
    }
    if (order == null) {
        return new PageRequest(page - 1, size);
    } else {
        return new PageRequest(page - 1, size, new Sort(order));
    }
}
Also used : Order(org.springframework.data.domain.Sort.Order) PageRequest(org.springframework.data.domain.PageRequest) Sort(org.springframework.data.domain.Sort)

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