package org.onehippo.forge.weblogdemo.components.overview;
import org.hippoecm.hst.content.beans.standard.HippoBean;
import org.hippoecm.hst.content.beans.standard.HippoDocumentIterator;
import org.hippoecm.hst.content.beans.standard.HippoFacetChildNavigationBean;
import org.hippoecm.hst.core.component.HstRequest;
import org.onehippo.forge.weblogdemo.beans.Blogpost;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.util.ArrayList;
import java.util.List;
/**
* Component for an overview of documents within a facet
*
* @author Jasha Joachimsthal
*/
public class FacetedOverview extends AbstractListing {
public static final Logger log = LoggerFactory.getLogger(BlogListing.class);
public static final int PAGESIZE = 10;
/**
* Gets the documents within a facet for the current overview
* {@inheritDoc}
*/
@Override
protected List<HippoBean> getDocumentsForOverview(HstRequest request, int page) {
List<HippoBean> documents = new ArrayList<HippoBean>();
HippoBean n = getContentBean(request);
if (n instanceof HippoFacetChildNavigationBean) {
HippoFacetChildNavigationBean facetNav = (HippoFacetChildNavigationBean) n;
HippoDocumentIterator<Blogpost> it = facetNav.getResultSet().getDocumentIterator(Blogpost.class);
long pages = facetNav.getResultSet().getCount() / PAGESIZE;
pages = facetNav.getResultSet().getCount() % PAGESIZE > 0L ? pages + 1L : pages;
if (log.isDebugEnabled()) {
log.debug("Resultset of {}, pages {}", facetNav.getResultSet().getCount(), pages);
}
request.setAttribute("pages", pages);
int skip = page * PAGESIZE;
it.skip(skip);
while (it.hasNext() && it.getPosition() < PAGESIZE + (skip - 1)) {
// the it.getPosition gets increased on it.next() call, hence above, skip - 1
documents.add(it.next());
}
}
return documents; //To change body of implemented methods use File | Settings | File Templates.
}
}