diff --git a/dspace-stats/pom.xml b/dspace-stats/pom.xml
index 4f1228cbd720..b35a7be5fd84 100644
--- a/dspace-stats/pom.xml
+++ b/dspace-stats/pom.xml
@@ -204,6 +204,13 @@
commons-cli
commons-cli
+
+
+ com.google.code.gson
+ gson
+ 2.1
+ compile
+
diff --git a/dspace-stats/src/main/java/org/dspace/statistics/DataTermsFacet.java b/dspace-stats/src/main/java/org/dspace/statistics/DataTermsFacet.java
new file mode 100644
index 000000000000..e209fbb2e2cc
--- /dev/null
+++ b/dspace-stats/src/main/java/org/dspace/statistics/DataTermsFacet.java
@@ -0,0 +1,64 @@
+package org.dspace.statistics;
+
+import com.google.gson.Gson;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * A neutral data object to hold data for statistics.
+ *
+ */
+public class DataTermsFacet {
+ private List terms;
+
+ public DataTermsFacet() {
+ terms = new ArrayList();
+ }
+ public void addTermFacet(TermsFacet termsFacet ) {
+ terms.add(termsFacet);
+ }
+
+ /**
+ * Render this data object into JSON format.
+ *
+ * An example of the output could be of the format:
+ * [{"term":"247166","count":10},{"term":"247168","count":6}]
+ * @return
+ */
+ public String toJson() {
+ Gson gson = new Gson();
+ return gson.toJson(terms);
+ }
+
+
+
+
+ public static class TermsFacet {
+ private String term;
+ private Integer count;
+
+ public TermsFacet(String term, Integer count) {
+ setTerm(term);
+ setCount(count);
+ }
+
+ public String getTerm() {
+ return term;
+ }
+
+ public void setTerm(String term) {
+ this.term = term;
+ }
+
+ public Integer getCount() {
+ return count;
+ }
+
+ public void setCount(Integer count) {
+ this.count = count;
+ }
+
+
+ }
+}
diff --git a/dspace-xmlui/dspace-xmlui-api/src/main/java/org/dspace/app/xmlui/aspect/statisticsElasticSearch/ElasticSearchStatsViewer.java b/dspace-xmlui/dspace-xmlui-api/src/main/java/org/dspace/app/xmlui/aspect/statisticsElasticSearch/ElasticSearchStatsViewer.java
index 1b2192d33168..8de06d2cf53c 100644
--- a/dspace-xmlui/dspace-xmlui-api/src/main/java/org/dspace/app/xmlui/aspect/statisticsElasticSearch/ElasticSearchStatsViewer.java
+++ b/dspace-xmlui/dspace-xmlui-api/src/main/java/org/dspace/app/xmlui/aspect/statisticsElasticSearch/ElasticSearchStatsViewer.java
@@ -12,6 +12,7 @@
import org.dspace.content.*;
import org.dspace.content.Item;
import org.dspace.core.Constants;
+import org.dspace.statistics.DataTermsFacet;
import org.dspace.statistics.ElasticSearchLogger;
import org.elasticsearch.action.search.SearchResponse;
import org.elasticsearch.action.search.SearchType;
@@ -261,6 +262,15 @@ public void showAllReports() throws WingException, SQLException{
// Top Downloads to Owning Object
TermsFacet bitstreamsFacet = resp.getFacets().facet(TermsFacet.class, "top_bitstreams_lastmonth");
addTermFacetToTable(bitstreamsFacet, division, "Bitstream", "Top Downloads for " + getLastMonthString());
+
+ // Convert Elastic Search data to a common DataTermsFacet object, and stuff in DRI/HTML of page.
+ TermsFacet topBitstreamsFacet = resp.getFacets().facet(TermsFacet.class, "top_bitstreams_lastmonth");
+ List extends TermsFacet.Entry> termsFacetEntries = topBitstreamsFacet.getEntries();
+ DataTermsFacet termsFacet = new DataTermsFacet();
+ for(TermsFacet.Entry entry : termsFacetEntries) {
+ termsFacet.addTermFacet(new DataTermsFacet.TermsFacet(entry.getTerm(), entry.getCount()));
+ }
+ division.addHidden("jsonTopDownloads").setValue(termsFacet.toJson());
}
public AbstractFacetBuilder facetTopBitstreamsLastMonth() {