package de.flower.rmt.ui.page.blog;
import de.flower.common.ui.inject.InjectorAwareObject;
import de.flower.rmt.model.db.entity.BArticle;
import de.flower.rmt.model.db.entity.QBArticle;
import de.flower.rmt.service.IBlogManager;
import de.flower.rmt.ui.model.BArticleModel;
import org.apache.wicket.markup.repeater.data.IDataProvider;
import org.apache.wicket.model.IModel;
import org.apache.wicket.spring.injection.annot.SpringBean;
import java.util.Iterator;
/**
* @author flowerrrr
*/
public class ArticleDataProvider extends InjectorAwareObject implements IDataProvider<BArticle> {
@SpringBean
private IBlogManager blogManager;
private int itemsPerPage;
private Long size;
public ArticleDataProvider(final int itemsPerPage) {
this.itemsPerPage = itemsPerPage;
}
@Override
public Iterator<? extends BArticle> iterator(final int first, final int count) {
int pageNum = first / itemsPerPage;
return blogManager.findAllArticles(pageNum, itemsPerPage, QBArticle.bArticle.author).iterator();
}
@Override
public int size() {
// method is called at least twice during rendering -> cache value
if (size == null) {
size = blogManager.getNumArticles();
}
return size.intValue();
}
@Override
public IModel<BArticle> model(final BArticle object) {
return new BArticleModel(object);
}
@Override
public void detach() {
this.size = null;
}
}