Paul Martin
2016-04-27 17a6c6da2144a479169b90e055a1283d91a3e9ce
Fixes #1061 - Most recent first on filestore page
2 files modified
51 ■■■■■ changed files
src/main/java/com/gitblit/models/FilestoreModel.java 7 ●●●● patch | view | raw | blame | history
src/main/java/com/gitblit/wicket/pages/FilestorePage.java 44 ●●●●● patch | view | raw | blame | history
src/main/java/com/gitblit/models/FilestoreModel.java
@@ -31,7 +31,7 @@
 * @author Paul Martin
 *
 */
public class FilestoreModel implements Serializable {
public class FilestoreModel implements Serializable, Comparable<FilestoreModel> {
    private static final long serialVersionUID = 1L;
@@ -217,5 +217,10 @@
        }
    }
    @Override
    public int compareTo(FilestoreModel o) {
        return this.oid.compareTo(o.oid);
    }
}
src/main/java/com/gitblit/wicket/pages/FilestorePage.java
@@ -18,15 +18,20 @@
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.Iterator;
import java.util.List;
import org.apache.commons.io.FileUtils;
import org.apache.wicket.PageParameters;
import org.apache.wicket.extensions.markup.html.repeater.util.SortableDataProvider;
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.markup.html.link.BookmarkablePageLink;
import org.apache.wicket.markup.repeater.Item;
import org.apache.wicket.markup.repeater.data.DataView;
import org.apache.wicket.markup.repeater.data.ListDataProvider;
import org.apache.wicket.model.IModel;
import org.apache.wicket.model.Model;
import com.gitblit.Constants;
import com.gitblit.Keys;
@@ -153,7 +158,7 @@
        }
        
        DataView<FilestoreModel> filesView = new DataView<FilestoreModel>("fileRow", 
                new ListDataProvider<FilestoreModel>(filteredResults) , itemsPerPage) {
                new SortableFilestoreProvider(filteredResults) , itemsPerPage) {
            private static final long serialVersionUID = 1L;
            private int counter;
@@ -238,4 +243,39 @@
        ok, pending, inprogress, error, deleted;
    }
    
    private static class SortableFilestoreProvider extends SortableDataProvider<FilestoreModel> {
        private static final long serialVersionUID = 1L;
        private List<FilestoreModel> list;
        protected SortableFilestoreProvider(List<FilestoreModel> list) {
            this.list = list;
        }
        @Override
        public int size() {
            if (list == null) {
                return 0;
            }
            return list.size();
        }
        @Override
        public IModel<FilestoreModel> model(FilestoreModel header) {
            return new Model<FilestoreModel>(header);
        }
        @Override
        public Iterator<FilestoreModel> iterator(int first, int count) {
            Collections.sort(list, new Comparator<FilestoreModel>() {
                @Override
                public int compare(FilestoreModel o1, FilestoreModel o2) {
                    return o2.getChangedOn().compareTo(o1.getChangedOn());
                }
            });
            return list.subList(first, first + count).iterator();
        }
    }
}