mirror of
https://github.com/scm-manager/scm-manager.git
synced 2025-11-12 08:25:44 +01:00
Create collections conform to HAL
This commit is contained in:
@@ -0,0 +1,31 @@
|
||||
package sonia.scm.api.v2.resources;
|
||||
|
||||
import de.otto.edison.hal.HalRepresentation;
|
||||
import de.otto.edison.hal.paging.NumberedPaging;
|
||||
import de.otto.edison.hal.paging.PagingRel;
|
||||
|
||||
import java.util.EnumSet;
|
||||
import java.util.List;
|
||||
|
||||
import static com.damnhandy.uri.template.UriTemplate.fromTemplate;
|
||||
import static de.otto.edison.hal.Embedded.embeddedBuilder;
|
||||
import static de.otto.edison.hal.Links.linkingTo;
|
||||
|
||||
public class UserCollectionDto extends HalRepresentation {
|
||||
public UserCollectionDto(String baseUrl, NumberedPaging page, List<UserDto> users) {
|
||||
super(linkingTo()
|
||||
.with(page.links(
|
||||
fromTemplate(baseUrl + "{?page,pageSize}"),
|
||||
EnumSet.allOf(PagingRel.class)))
|
||||
// .array(users
|
||||
// .stream()
|
||||
// .limit(page.getPageNumber()*page.getPageSize())
|
||||
// .map(stuff -> linkBuilder("item", stuff.getLinks().getLinkBy("self").get().getHref()).withTitle(stuff.getName()).build())
|
||||
// .collect(toList()))
|
||||
.build(),
|
||||
embeddedBuilder()
|
||||
.with("users", users)
|
||||
.build()
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -18,6 +18,7 @@ import java.util.Collection;
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import static de.otto.edison.hal.paging.NumberedPaging.zeroBasedNumberedPaging;
|
||||
import static sonia.scm.api.v2.resources.ScmMediaType.USER;
|
||||
|
||||
@Singleton
|
||||
@@ -52,13 +53,18 @@ public class UserCollectionResource extends AbstractManagerResource<User, UserEx
|
||||
@ResponseCode(code = 500, condition = "internal server error")
|
||||
})
|
||||
public Response getAll(@Context Request request, @Context UriInfo uriInfo, @DefaultValue("0")
|
||||
@QueryParam("start") int start, @DefaultValue("-1")
|
||||
@QueryParam("limit") int limit, @QueryParam("sortby") String sortby,
|
||||
@QueryParam("page") int page, @DefaultValue("10")
|
||||
@QueryParam("pageSize") int pageSize, @QueryParam("sortby") String sortby,
|
||||
@DefaultValue("false")
|
||||
@QueryParam("desc") boolean desc) {
|
||||
Collection<User> items = fetchItems(sortby, desc, start, limit);
|
||||
List<UserDto> collect = items.stream().map(user -> userToDtoMapper.userToUserDto(user, uriInfo)).collect(Collectors.toList());
|
||||
return Response.ok(new GenericEntity<Collection<UserDto>>(collect) {}).build();
|
||||
Collection<User> items = fetchItems(sortby, desc, page * pageSize, pageSize);
|
||||
|
||||
LinkBuilder collectionLinkBuilder = new LinkBuilder(uriInfo, UserV2Resource.class, UserCollectionResource.class);
|
||||
String baseUrl = collectionLinkBuilder.method("getUserCollectionResource").parameters().method("create").parameters().href();
|
||||
|
||||
List<UserDto> dtos = items.stream().map(user -> userToDtoMapper.userToUserDto(user, uriInfo)).collect(Collectors.toList());
|
||||
|
||||
return Response.ok(new UserCollectionDto(baseUrl, zeroBasedNumberedPaging(page, pageSize, true), dtos)).build();
|
||||
}
|
||||
|
||||
@POST
|
||||
|
||||
Reference in New Issue
Block a user