package ch.alv.components.data;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageImpl;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Pageable;
import org.springframework.hateoas.Link;
import java.util.ArrayList;
import java.util.List;
/**
* Extension of PageImpl that provides a list of links.
*
* @since 1.0.0
*/
public class LinkPage<T> extends PageImpl<T> {
private static final long serialVersionUID = -2522202576062015408L;
private List<Link> links = new ArrayList<>();
public LinkPage(List<T> content) {
super(content);
}
public LinkPage(List<T> content, Pageable pageable, long total) {
super(content, pageable, total);
}
public LinkPage(Page<T> page) {
super(page.getContent(), new PageRequest(page.getNumber(), page.getSize()), page.getTotalElements());
}
public void addLink(Link link) {
if (link != null) {
links.add(link);
}
}
public List<Link> getLinks() {
return links;
}
public void setLinks(List<Link> links) {
this.links = links;
}
}