package de.onyxbits.tradetrax.remix; import java.util.Collections; import java.util.List; import org.apache.tapestry5.beaneditor.PropertyModel; import org.apache.tapestry5.grid.ColumnSort; import org.apache.tapestry5.grid.GridDataSource; import org.apache.tapestry5.grid.SortConstraint; public class TalliedStockPagedGridDataSource implements GridDataSource { /** * Column */ public static final String TOTALPROFIT = "totalprofit"; /** * Column */ public static final String TOTALINVESTMENT = "totalinvestment"; /** * Column */ public static final String AMOUNT = "amount"; /** * Column */ public static final String NAME = "name"; private List<TalliedStock> data; public TalliedStockPagedGridDataSource(List<TalliedStock> data) { this.data = data; } public int getAvailableRows() { return data.size(); } public void prepare(int startIndex, int endIndex, List<SortConstraint> sortConstraints) { if (sortConstraints.size() == 1) { SortConstraint sc = sortConstraints.get(0); boolean ascending = sc.getColumnSort() == ColumnSort.ASCENDING; int crit = TalliedStock.ONNAME; PropertyModel pm = sc.getPropertyModel(); if (TOTALPROFIT.equals(pm.getId())) { crit = TalliedStock.ONPROFIT; } if (TOTALINVESTMENT.equals(pm.getId())) { crit = TalliedStock.ONINVESTMENT; } if (AMOUNT.equals(pm.getId())) { crit = TalliedStock.ONAMOUNT; } for (TalliedStock ts : data) { ts.sortBy(crit, ascending); } Collections.sort(data); } } public Object getRowValue(int index) { return data.get(index); } public Class<?> getRowType() { return TalliedStock.class; } }