package io.delphiplatform.api.util;


import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.List;

public class PaginatedList<E> extends ArrayList<E> {

    private long totalCount;

    public PaginatedList(int initialCapacity, long totalCount) {
        super(initialCapacity);
        this.totalCount = totalCount;
    }

    public PaginatedList(long totalCount) {
        this.totalCount = totalCount;
    }

    public PaginatedList(Collection<? extends E> c, long totalCount) {
        super(c);
        this.totalCount = totalCount;
    }

    public long totalCount() {
        return totalCount;
    }

    public static <T> PaginatedList<T> from(List<? extends T> list, long totalCount) {
        return new PaginatedList<>(list, totalCount);
    }

    public static <T> PaginatedList<T> emptyList() {
        return from(Collections.emptyList(), 0L);
    }
}
