diff --git a/rest/taskana-rest-spring/src/main/java/pro/taskana/rest/WorkbasketController.java b/rest/taskana-rest-spring/src/main/java/pro/taskana/rest/WorkbasketController.java index 38d926cef..b12b768c2 100644 --- a/rest/taskana-rest-spring/src/main/java/pro/taskana/rest/WorkbasketController.java +++ b/rest/taskana-rest-spring/src/main/java/pro/taskana/rest/WorkbasketController.java @@ -5,6 +5,8 @@ import java.util.Arrays; import java.util.List; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.hateoas.PagedResources; +import org.springframework.hateoas.PagedResources.PageMetadata; import org.springframework.hateoas.Resources; import org.springframework.hateoas.config.EnableHypermediaSupport; import org.springframework.hateoas.config.EnableHypermediaSupport.HypermediaType; @@ -43,8 +45,8 @@ import pro.taskana.rest.resource.WorkbasketSummaryResource; import pro.taskana.rest.resource.mapper.DistributionTargetListMapper; import pro.taskana.rest.resource.mapper.WorkbasketAccessItemListMapper; import pro.taskana.rest.resource.mapper.WorkbasketAccessItemMapper; -import pro.taskana.rest.resource.mapper.WorkbasketListMapper; import pro.taskana.rest.resource.mapper.WorkbasketMapper; +import pro.taskana.rest.resource.mapper.WorkbasketSummaryResourceAssembler; /** * Controller for all {@link Workbasket} related endpoints. @@ -68,9 +70,6 @@ public class WorkbasketController { @Autowired private WorkbasketMapper workbasketMapper; - @Autowired - private WorkbasketListMapper workbasketListMapper; - @Autowired private DistributionTargetListMapper distributionTargetListMapper; @@ -82,7 +81,7 @@ public class WorkbasketController { @GetMapping @Transactional(readOnly = true, rollbackFor = Exception.class) - public ResponseEntity> getWorkbaskets( + public ResponseEntity> getWorkbaskets( @RequestParam(value = "sortBy", defaultValue = "name", required = false) String sortBy, @RequestParam(value = "order", defaultValue = "asc", required = false) String order, @RequestParam(value = "name", required = false) String name, @@ -95,14 +94,23 @@ public class WorkbasketController { @RequestParam(value = "type", required = false) String type, @RequestParam(value = "requiredPermission", required = false) String requiredPermission) throws WorkbasketNotFoundException, NotAuthorizedException, InvalidArgumentException { + WorkbasketQuery query = workbasketService.createWorkbasketQuery(); addSortingToQuery(query, sortBy, order); addAttributeFilter(query, name, nameLike, key, keyLike, descLike, owner, ownerLike, type); addAuthorizationFilter(query, requiredPermission); List workbasketSummaries = query.list(); - Resources workbasketListResource = workbasketListMapper - .toResource(workbasketSummaries); - return new ResponseEntity<>(workbasketListResource, HttpStatus.OK); + + // Iterable workbasketSummaries2 = query.list(); + + WorkbasketSummaryResourceAssembler assembler = new WorkbasketSummaryResourceAssembler(); + List resources = assembler.toResources(workbasketSummaries); + PageMetadata pageMetadata = new PageMetadata(5, 1, workbasketSummaries.size(), 4); + PagedResources pagedResources = new PagedResources( + resources, + pageMetadata); + + return new ResponseEntity<>(pagedResources, HttpStatus.OK); } @GetMapping(path = "/{workbasketId}") diff --git a/rest/taskana-rest-spring/src/main/java/pro/taskana/rest/resource/mapper/WorkbasketSummaryResourceAssembler.java b/rest/taskana-rest-spring/src/main/java/pro/taskana/rest/resource/mapper/WorkbasketSummaryResourceAssembler.java new file mode 100644 index 000000000..8257afaef --- /dev/null +++ b/rest/taskana-rest-spring/src/main/java/pro/taskana/rest/resource/mapper/WorkbasketSummaryResourceAssembler.java @@ -0,0 +1,29 @@ +package pro.taskana.rest.resource.mapper; + +import org.springframework.beans.BeanUtils; +import org.springframework.hateoas.mvc.ResourceAssemblerSupport; + +import pro.taskana.WorkbasketSummary; +import pro.taskana.rest.WorkbasketController; +import pro.taskana.rest.resource.WorkbasketSummaryResource; + +/** + * @author HH + */ +public class WorkbasketSummaryResourceAssembler + extends ResourceAssemblerSupport { + + public WorkbasketSummaryResourceAssembler() { + super(WorkbasketController.class, WorkbasketSummaryResource.class); + } + + @Override + public WorkbasketSummaryResource toResource(WorkbasketSummary workbasketSummary) { + WorkbasketSummaryResource resource = createResourceWithId(workbasketSummary.getId(), workbasketSummary); + BeanUtils.copyProperties(workbasketSummary, resource); + // named different so needs to be set by hand + resource.setWorkbasketId(workbasketSummary.getId()); + return resource; + } + +}