stats = DeviceInfo.getDevicesUsage(pm);
+ pm.close();
+
+ resp.setContentType("text/html");
+ PrintWriter out = resp.getWriter();
+ out.println("");
+ out.println("");
+ out.println("Device stats");
+ out.println("");
+ out.println("");
+ out.println("Device stats
");
+ if (stats.isEmpty()) {
+ out.println("No devices registered yet!
");
+ } else {
+ int total = 0;
+ for (Integer count : stats.values()) {
+ total += count;
+ }
+
+ out.println("| Type | " +
+ "Count | Share |
");
+ for (Entry entry : stats.entrySet()) {
+ String type = entry.getKey();
+ int count = entry.getValue();
+ float share = (100*count) / total;
+ out.println("" +
+ "| " + type + " | " +
+ "" + count + " | " +
+ "" + share + "% |
");
+ }
+ out.println("" +
+ "| Total | " +
+ "" + total+ " | " +
+ "100.0% |
");
+ out.println("
");
+ }
+
+ out.println("");
+ resp.setStatus(HttpServletResponse.SC_OK);
+ }
+}
diff --git a/appengine/war/WEB-INF/appengine-web.xml b/appengine/war/WEB-INF/appengine-web.xml
index da28fd3..99e3164 100644
--- a/appengine/war/WEB-INF/appengine-web.xml
+++ b/appengine/war/WEB-INF/appengine-web.xml
@@ -17,6 +17,7 @@
chrometophone
11
+ true
diff --git a/appengine/war/WEB-INF/web.xml b/appengine/war/WEB-INF/web.xml
index 4db965d..a7cff56 100644
--- a/appengine/war/WEB-INF/web.xml
+++ b/appengine/war/WEB-INF/web.xml
@@ -62,6 +62,18 @@
+
+ SenderServlet
+ com.google.android.chrometophone.server.SenderServlet
+
+
+
+
+ StatsServlet
+ com.google.android.chrometophone.server.StatsServlet
+
+
+
RegisterServlet
/register
@@ -97,6 +109,16 @@
/signout
+
+ SenderServlet
+ /admin/sender
+
+
+
+ StatsServlet
+ /admin/stats
+
+
dataMessagingServlet
/tasks/c2dm
@@ -111,4 +133,13 @@
admin
+
+
+ admin
+ /admin/*
+
+
+ admin
+
+