package nl.helixsoft.xml; import java.io.File; import java.io.FileNotFoundException; import java.util.List; public class Paginator { private List<?> data; private int itemsPerPage; private String basename; public class PaginatorPage { private final int pageno; public PaginatorPage (int i) { pageno = i; } private String getName(int i) { if (i == 0) { return basename + ".html"; } else return basename + i + ".html"; } public String getPage() { return getName(pageno); } public String getNextPage() { return getName (pageno + 1); } public String getPrevPage() { if (pageno == 0) return null; else return getName(pageno - 1); } public int getPageNo() { return pageno + 1; } public List<?> getPageItems() { int end = Math.min (((pageno + 1) * itemsPerPage) - 1, data.size()); return data.subList(pageno * itemsPerPage, end); } } private File baseDir; public Paginator(File basedir, String name, List<?> data, int itemsPerPage) { this.data = data; this.itemsPerPage = itemsPerPage; this.basename = name; this.baseDir = basedir; } public void flush (Html template) throws FileNotFoundException { int page = 0; for (int i = 0; i < data.size(); i += itemsPerPage) { PaginatorPage x = new PaginatorPage(page); page++; Page p = new Page (new File (baseDir, x.getPage()), x.getPage()); p.render(template, x); } } }