@Override public boolean isEmpty(PagedResources<?> value) { return value.getContent().size() == 0; }
@ResponseBody @SuppressWarnings({ "unchecked" }) @RequestMapping(value = BASE_MAPPING, method = RequestMethod.GET, produces = { "application/x-spring-data-compact+json", "text/uri-list" }) public Resources<?> getCollectionResourceCompact(@QuerydslPredicate RootResourceInformation resourceinformation, DefaultedPageable pageable, Sort sort, PersistentEntityResourceAssembler assembler) throws ResourceNotFoundException, HttpRequestMethodNotSupportedException { Resources<?> resources = getCollectionResource(resourceinformation, pageable, sort, assembler); List<Link> links = new ArrayList<Link>(resources.getLinks()); for (Resource<?> resource : ((Resources<Resource<?>>) resources).getContent()) { PersistentEntityResource persistentEntityResource = (PersistentEntityResource) resource; links.add(resourceLink(resourceinformation, persistentEntityResource)); } if (resources instanceof PagedResources) { return new PagedResources<Object>(Collections.emptyList(), ((PagedResources<?>) resources).getMetadata(), links); } else { return new Resources<Object>(Collections.emptyList(), links); } }
@Override public String toString() { return String.format("PagedResource { content: %s, metadata: %s, links: %s }", getContent(), metadata, getLinks()); }
@Override public void serialize(PagedResources<?> value, JsonGenerator jgen, SerializerProvider provider) throws IOException { CollectionJson<?> collectionJson = new CollectionJson() .withVersion("1.0") .withHref(value.getRequiredLink(IanaLinkRelation.SELF.value()).getHref()) .withLinks(withoutSelfLink(value.getLinks())) .withItems(resourcesToCollectionJsonItems(value)) .withQueries(findQueries(value)) .withTemplate(findTemplate(value)); CollectionJsonDocument<?> doc = new CollectionJsonDocument<>(collectionJson); provider .findValueSerializer(CollectionJsonDocument.class, property) .serialize(doc, jgen, provider); }
public <R extends ResourceSupport> PagedResources<R> toResource(Pageable pageable, Page<T> page, ResourceAssembler<T, R> assembler) { PagedResources<R> pagedResources = toResource(page, assembler); ExtendedPageMetadata extendedPageMetadata = extendedPageMetadataConverter.toExtendedPageMetadata(pageable.getOffset(), pagedResources.getMetadata()); pagedResources = new PagedResources<>(pagedResources.getContent(), extendedPageMetadata, pagedResources.getLinks()); return pagedResources; } }
}); resources = new PagedResources<>(users, new PagedResources.PageMetadata(tempSize, (tempPage + 1), pageUser .getTotalElements(), pageUser.getTotalPages())); resources.add(linkTo(methodOn(getClass()).findAll(search, page, size, sort)).withSelfRel()); if (pageUser.getTotalPages() > 1) { resources.add(linkTo(methodOn(getClass()).findAll(search, 1, size, sort)).withRel("first")); resources.add(linkTo(methodOn(getClass()).findAll(search, pageUser.getTotalPages(), size, sort)) .withRel("last")); resources.add(linkTo(methodOn(getClass()).findAll(search, (tempPage + 1) - 1, size, sort)) .withRel("prev")); resources.add(linkTo(methodOn(getClass()).findAll(search, (tempPage + 1) + 1, size, sort)) .withRel("next"));
final int currentPage = (int) resources.getMetadata().getNumber(); final int totalPages = (int) resources.getMetadata().getTotalPages(); if (resources.hasLinks()) { if (hasFirst && resources.getLink("first") != null) { model.addAttribute("pageFirst", new Page(1, "?".concat(new URI(resources .getLinks("first").get(0).expand(parameters).getHref()).getQuery()))); if (hasLast && resources.getLink("last") != null) { model.addAttribute("pageLast", new Page(totalPages, "?".concat(new URI(resources .getLinks("last").get(0).expand(parameters).getHref()).getQuery()))); if (resources.getPreviousLink() != null) { model.addAttribute("pagePrev", new Page((currentPage - 1), "?".concat(new URI(resources .getPreviousLink().expand(parameters).getHref()).getQuery()))); if (resources.getNextLink() != null) { model.addAttribute("pageNext", new Page((currentPage + 1), "?".concat(new URI(resources .getNextLink().expand(parameters).getHref()).getQuery()))); model.addAttribute("totalPage", totalPages); model.addAttribute("pages", pages); model.addAttribute("items", resources.getContent()); return "catalog";
public WorkspacePagedResources(PagedResources<T> pagedResources) { this(pagedResources.getContent(), null, pagedResources.getMetadata(), pagedResources.getLinks()); }
public <T> AlfrescoPageContentListWrapper<T> toAlfrescoContentListWrapper(PagedResources<Resource<T>> pagedResources) { Collection<Resource<T>> pagedResourceContent = pagedResources.getContent(); List<AlfrescoContentEntry<T>> baseContent = pagedResourceContent.stream() .map( resource -> new AlfrescoContentEntry<>(resource.getContent()) ).collect(Collectors.toList()); AlfrescoPageMetadata pagination = pageMetadataConverter.toAlfrescoPageMetadata(pagedResources.getMetadata(), baseContent.size()); return AlfrescoPageContentListWrapper.wrap(baseContent, pagination); } }
/** * Factory method to easily create a {@link PagedResources} instance from a set of entities and pagination metadata. * * @param content must not be {@literal null}. * @param metadata * @return */ @SuppressWarnings("unchecked") public static <T extends Resource<S>, S> PagedResources<T> wrap(Iterable<S> content, PageMetadata metadata) { Assert.notNull(content, "Content must not be null!"); ArrayList<T> resources = new ArrayList<>(); for (S element : content) { resources.add((T) new Resource<>(element)); } return new PagedResources<>(resources, metadata); }
@Override @JsonProperty("page") @JsonInclude(Include.NON_EMPTY) public PageMetadata getMetadata() { return super.getMetadata(); } }
EmbeddedWrapper wrapper = wrappers.emptyCollectionOf(Person.class); List<EmbeddedWrapper> embedded = Collections.singletonList(wrapper); adminPagedResources = new PagedResources(embedded, adminPagedResources.getMetadata(), adminPagedResources.getLinks());
@Override public PagedResources<Resource<Taco>> process(PagedResources<Resource<Taco>> resources) { resources .add(entityLinks .linkFor(Taco.class) .slash("recent") .withRel("recents")); return resources; }
@Override public PagedResources<Resource<Address>> process(PagedResources<Resource<Address>> resources) { String[] linkParts = resources.getLink("self").getHref().split("/"); String customerId = linkParts[linkParts.length - 2]; try { UUID.fromString(customerId); resources.add(linkTo(methodOn(AddressesCommandsController.class).getCommands(customerId)).withRel("commands")); } catch (Exception e) {} return resources; } }
/** * Returns the Link pointing to the next page (if set). * * @return */ @JsonIgnore public Optional<Link> getNextLink() { return getLink(IanaLinkRelation.NEXT.value()); }
@Override public PagedResources<Resource<OrderItem>> process(PagedResources<Resource<OrderItem>> resources) { String orderId = new ResourceURI(resources.getId().getHref()).getParentId(); try { UUID.fromString(orderId); resources.add(linkTo(methodOn(OrderItemsCommandsController.class).getCommands(orderId)) .withRel("commands").expand(orderId)); } catch (Exception e) {} return resources; } }
@Override @JsonSerialize(using = LinkListSerializer.class) @JsonUnwrapped public List<Link> getLinks() { return super.getLinks(); }
List<Link> links = pagedResources.getLinks(); List<Link> filteredLinks = new ArrayList<Link>(); for (Link link : links) { PagedResources toRender = new PagedResources(pagedResources.getContent(), pagedResources.getMetadata(), filteredLinks); .serialize(toRender, jgen, serializerProvider); PagedResources.PageMetadata metadata = pagedResources.getMetadata(); jgen.writeNumberField("hydra:totalItems", metadata.getTotalElements());
items.add(dto); }); resources = new PagedResources<>(items, new PagedResources.PageMetadata(tempSize, (tempPage + 1), pageItem .getTotalElements(), pageItem.getTotalPages())); resources.add(linkTo(methodOn(getClass()).findByCategoryId(categoryIds, page, size, sort)).withSelfRel()); if (pageItem.getTotalPages() > 1) { resources.add(linkTo(methodOn(getClass()).findByCategoryId(categoryIds, 1, size, sort)) .withRel("first")); resources.add(linkTo(methodOn(getClass()).findByCategoryId(categoryIds, pageItem .getTotalPages(), size, sort)).withRel("last")); resources.add(linkTo(methodOn(getClass()).findByCategoryId(categoryIds, (tempPage + 1) - 1, size, sort)) .withRel("prev")); resources.add(linkTo(methodOn(getClass()).findByCategoryId(categoryIds, (tempPage + 1) + 1, size, sort)) .withRel("next"));
/** * Converts HATEOAS resources into Spring Data page. * * @param resources Paged resources. * @param request Pagination specification. * @param <ResourceType> Collection element type. * @return Paged result. */ public static <ResourceType> Page<ResourceType> buildPageFromResources( PagedResources<? extends ResourceType> resources, Pageable request ) { return new PageImpl<>( new ArrayList<>(resources.getContent()), request, resources.getMetadata().getTotalElements() ); } }