package fr.openwide.maven.artifact.notifier.web.application.artifact.model;
import java.util.List;
import org.apache.wicket.injection.Injector;
import org.apache.wicket.model.IModel;
import org.apache.wicket.model.Model;
import com.google.common.collect.Lists;
import fr.openwide.core.wicket.more.markup.repeater.data.LoadableDetachableDataProvider;
import fr.openwide.maven.artifact.notifier.core.business.search.model.ArtifactBean;
import fr.openwide.maven.artifact.notifier.core.business.search.model.PomBean;
public abstract class AbstractArtifactPomSearchDataProvider extends LoadableDetachableDataProvider<ArtifactBean> {
private static final long serialVersionUID = -6735682878632622767L;
private IModel<PomBean> pomBeanModel;
public AbstractArtifactPomSearchDataProvider(IModel<PomBean> pomBeanModel) {
Injector.get().inject(this);
if (pomBeanModel == null) {
throw new IllegalArgumentException("Null model is not supported.");
}
this.pomBeanModel = pomBeanModel;
}
@Override
public IModel<ArtifactBean> model(ArtifactBean artifact) {
return new Model<ArtifactBean>(artifact);
}
protected abstract List<ArtifactBean> loadData();
@Override
protected List<ArtifactBean> loadList(long first, long count) {
if (getPomBean() != null) {
return loadData().subList((int) first, (int) (first + count));
}
return Lists.newArrayList();
}
@Override
protected long loadSize() {
if (getPomBean() != null) {
return loadData().size();
}
return 0;
}
protected PomBean getPomBean() {
return pomBeanModel.getObject();
}
}