diff --git a/application-engine/src/main/java/com/netgrif/application/engine/workflow/web/WorkflowController.java b/application-engine/src/main/java/com/netgrif/application/engine/workflow/web/WorkflowController.java index 7222b4ae96..8b61331f2b 100644 --- a/application-engine/src/main/java/com/netgrif/application/engine/workflow/web/WorkflowController.java +++ b/application-engine/src/main/java/com/netgrif/application/engine/workflow/web/WorkflowController.java @@ -109,7 +109,7 @@ public PagedModel getAll(Pageable pageable, PagedResourcesAssemble .getAll(pageable, assembler)).withRel("all"); PagedModel resources = assembler.toModel(cases, new CaseResourceAssembler(), selfLink); ResourceLinkAssembler.addLinks(resources, Case.class, selfLink.getRel().toString()); - return PagedModel.of(cases.stream().map(CaseResource::new).toList(), new PagedModel.PageMetadata(pageable.getPageSize(), pageable.getPageNumber(), cases.getTotalElements())); + return resources; } @Operation(summary = "Generic case search with QueryDSL predicate, paginated", security = {@SecurityRequirement(name = "BasicAuth")}) @@ -120,7 +120,7 @@ public PagedModel search2(@QuerydslPredicate(root = Case.class) Pr .search2(predicate, pageable, assembler)).withRel("search2"); PagedModel resources = assembler.toModel(cases, new CaseResourceAssembler(), selfLink); ResourceLinkAssembler.addLinks(resources, Case.class, selfLink.getRel().toString()); - return PagedModel.of(cases.stream().map(CaseResource::new).toList(), new PagedModel.PageMetadata(pageable.getPageSize(), pageable.getPageNumber(), cases.getTotalElements())); + return resources; } @Operation(summary = "Generic case search on Elasticsearch database, paginated", security = {@SecurityRequirement(name = "BasicAuth")}) @@ -129,12 +129,24 @@ public PagedModel search(@RequestBody SingleCaseSearchRequestAsLis LoggedUser user = (LoggedUser) auth.getPrincipal(); Page cases = elasticCaseService.search(searchBody.getList(), user, pageable, locale, operation == MergeFilterOperation.AND); + if (log.isTraceEnabled()) { + log.trace("Found {} cases with id {}.", cases.getNumberOfElements(), cases.map(Case::getStringId)); + } Link selfLink = WebMvcLinkBuilder.linkTo(WebMvcLinkBuilder.methodOn(WorkflowController.class) .search(searchBody, operation, pageable, assembler, auth, locale)).withRel("search"); PagedModel resources = assembler.toModel(cases, new CaseResourceAssembler(), selfLink); + + if (log.isTraceEnabled()) { + log.trace("Paged model of {}", resources); + } + ResourceLinkAssembler.addLinks(resources, ElasticCase.class, selfLink.getRel().toString()); - return PagedModel.of(cases.stream().map(CaseResource::new).toList(), new PagedModel.PageMetadata(pageable.getPageSize(), pageable.getPageNumber(), cases.getTotalElements())); + + if (log.isTraceEnabled()) { + log.trace("Returning paged model with link: {}", resources); + } + return resources; } @Operation(summary = "Generic case search on Mongo database, paginated", security = {@SecurityRequirement(name = "BasicAuth")}) @@ -145,7 +157,7 @@ public PagedModel searchMongo(@RequestBody Map sea .searchMongo(searchBody, pageable, auth, assembler, locale)).withRel("search"); PagedModel resources = assembler.toModel(cases, new CaseResourceAssembler(), selfLink); ResourceLinkAssembler.addLinks(resources, Case.class, selfLink.getRel().toString()); - return PagedModel.of(cases.stream().map(CaseResource::new).toList(), new PagedModel.PageMetadata(pageable.getPageSize(), pageable.getPageNumber(), cases.getTotalElements())); + return resources; } @@ -173,7 +185,7 @@ public PagedModel findAllByAuthor(@PathVariable("id") String autho .findAllByAuthor(authorId, petriNet, assembler, pageable)).withRel("author"); PagedModel resources = assembler.toModel(cases, new CaseResourceAssembler(), selfLink); ResourceLinkAssembler.addLinks(resources, Case.class, selfLink.getRel().toString()); - return PagedModel.of(cases.stream().map(CaseResource::new).toList(), new PagedModel.PageMetadata(pageable.getPageSize(), pageable.getPageNumber(), cases.getTotalElements())); + return resources; } @PreAuthorize("@authorizationService.hasAuthority('ADMIN')") diff --git a/application-engine/src/main/java/com/netgrif/application/engine/workflow/web/responsebodies/CaseResource.java b/application-engine/src/main/java/com/netgrif/application/engine/workflow/web/responsebodies/CaseResource.java index dcd0a65f41..cc4b23f81f 100644 --- a/application-engine/src/main/java/com/netgrif/application/engine/workflow/web/responsebodies/CaseResource.java +++ b/application-engine/src/main/java/com/netgrif/application/engine/workflow/web/responsebodies/CaseResource.java @@ -1,24 +1,30 @@ package com.netgrif.application.engine.workflow.web.responsebodies; - import com.netgrif.application.engine.objects.workflow.domain.Case; import com.netgrif.application.engine.workflow.web.WorkflowController; import com.netgrif.application.engine.workflow.web.requestbodies.CreateCaseBody; +import lombok.extern.slf4j.Slf4j; import org.springframework.context.i18n.LocaleContextHolder; import org.springframework.hateoas.EntityModel; +import org.springframework.hateoas.server.core.Relation; import org.springframework.hateoas.server.mvc.WebMvcLinkBuilder; import java.util.ArrayList; +@Slf4j +@Relation(collectionRelation = "cases", itemRelation = "cases") public class CaseResource extends EntityModel { public CaseResource(Case content) { super(content, new ArrayList<>()); + log.trace("Creating CaseResource, id={}, locale={}, caseClass={}", content.get_id(), LocaleContextHolder.getLocale(), content.getClass().getName()); buildLinks(); } private void buildLinks() { add(WebMvcLinkBuilder.linkTo(WebMvcLinkBuilder - .methodOn(WorkflowController.class).createCase(new CreateCaseBody(), null, LocaleContextHolder.getLocale())).withRel("create")); + .methodOn(WorkflowController.class) + .createCase(new CreateCaseBody(), null, LocaleContextHolder.getLocale())) + .withRel("create")); } }