package ro.nextreports.server.web.analysis.feature.sort; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import org.apache.wicket.extensions.markup.html.repeater.util.SortableDataProvider; import org.apache.wicket.injection.Injector; import org.apache.wicket.model.IModel; import org.apache.wicket.model.Model; public class SortObjectDataProvider extends SortableDataProvider<SortObject, String> { private ArrayList<String> sortProperty; private ArrayList<Boolean> ascending; public SortObjectDataProvider(IModel<ArrayList<String>> propertyModel, IModel<ArrayList<Boolean>> orderModel) { Injector.get().inject(this); sortProperty = propertyModel.getObject(); ascending = orderModel.getObject(); } @Override public Iterator<? extends SortObject> iterator(long first, long count) { return getSortObjects().subList((int)first, (int)(first + Math.min(count, size()))).iterator(); } @Override public IModel<SortObject> model(SortObject sortObject) { return new Model<SortObject>(sortObject); } @Override public long size() { return getSortObjects().size(); } private List<SortObject> getSortObjects() { List<SortObject> sortObjects = new ArrayList<SortObject>(); for (int i=0, size=sortProperty.size(); i<size; i++) { SortObject so = new SortObject(); so.setColumn(sortProperty.get(i)); so.setOrder(ascending.get(i)); sortObjects.add(so); } return sortObjects; } }