From 17a6c6da2144a479169b90e055a1283d91a3e9ce Mon Sep 17 00:00:00 2001
From: Paul Martin <paul@paulsputer.com>
Date: Wed, 27 Apr 2016 19:53:42 -0400
Subject: [PATCH] Fixes #1061 - Most recent first on filestore page

---
 src/main/java/com/gitblit/wicket/pages/FilestorePage.java |   44 ++++++++++++++++++++++++++++++++++++++++++--
 1 files changed, 42 insertions(+), 2 deletions(-)

diff --git a/src/main/java/com/gitblit/wicket/pages/FilestorePage.java b/src/main/java/com/gitblit/wicket/pages/FilestorePage.java
index 7130f6c..29b3d60 100644
--- a/src/main/java/com/gitblit/wicket/pages/FilestorePage.java
+++ b/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();
+		}
+	}
+	
 }
\ No newline at end of file

--
Gitblit v1.9.1