[tor-commits] [metrics-web/master] Move available R object lists to RObjectGenerator.

karsten at torproject.org karsten at torproject.org
Tue Mar 20 19:18:52 UTC 2012


commit e33d4702e2d1c33a9e6c91db40bedc393c3bc7c9
Author: Karsten Loesing <karsten.loesing at gmx.net>
Date:   Tue Mar 20 14:17:21 2012 +0100

    Move available R object lists to RObjectGenerator.
---
 src/org/torproject/ernie/web/CsvServlet.java       |   22 +-------
 .../ernie/web/GraphParameterChecker.java           |   26 +-------
 src/org/torproject/ernie/web/RObjectGenerator.java |   61 ++++++++++++++++++++
 .../ernie/web/TableParameterChecker.java           |    6 +-
 4 files changed, 69 insertions(+), 46 deletions(-)

diff --git a/src/org/torproject/ernie/web/CsvServlet.java b/src/org/torproject/ernie/web/CsvServlet.java
index 4f60eaf..1e9fbf8 100644
--- a/src/org/torproject/ernie/web/CsvServlet.java
+++ b/src/org/torproject/ernie/web/CsvServlet.java
@@ -33,31 +33,11 @@ public class CsvServlet extends HttpServlet {
     /* Initialize logger. */
     this.logger = Logger.getLogger(CsvServlet.class.toString());
 
-    /* Initialize map of available CSV files. */
-    this.availableCsvFiles = new TreeSet<String>();
-    this.availableCsvFiles.add("bandwidth");
-    this.availableCsvFiles.add("bridge-users");
-    this.availableCsvFiles.add("bwhist-flags");
-    this.availableCsvFiles.add("connbidirect");
-    this.availableCsvFiles.add("direct-users");
-    this.availableCsvFiles.add("dirreq-stats");
-    this.availableCsvFiles.add("dirbytes");
-    this.availableCsvFiles.add("gettor");
-    this.availableCsvFiles.add("monthly-users-average");
-    this.availableCsvFiles.add("monthly-users-peak");
-    this.availableCsvFiles.add("networksize");
-    this.availableCsvFiles.add("platforms");
-    this.availableCsvFiles.add("relaycountries");
-    this.availableCsvFiles.add("relayflags");
-    this.availableCsvFiles.add("relayflags-hour");
-    this.availableCsvFiles.add("torperf");
-    this.availableCsvFiles.add("torperf-failures");
-    this.availableCsvFiles.add("versions");
-
     /* Get a reference to the R object generator that we need to generate
      * CSV files. */
     this.rObjectGenerator = (RObjectGenerator) getServletContext().
         getAttribute("RObjectGenerator");
+    this.availableCsvFiles = rObjectGenerator.getAvailableCsvFiles();
   }
 
   public void doGet(HttpServletRequest request,
diff --git a/src/org/torproject/ernie/web/GraphParameterChecker.java b/src/org/torproject/ernie/web/GraphParameterChecker.java
index 96efed0..19a4081 100644
--- a/src/org/torproject/ernie/web/GraphParameterChecker.java
+++ b/src/org/torproject/ernie/web/GraphParameterChecker.java
@@ -47,28 +47,6 @@ public class GraphParameterChecker {
     this.dateFormat = new SimpleDateFormat("yyyy-MM-dd");
     this.dateFormat.setTimeZone(TimeZone.getTimeZone("UTC"));
 
-    this.availableGraphs = new HashMap<String, String>();
-    this.availableGraphs.put("networksize", "start,end,filename,dpi");
-    this.availableGraphs.put("relaycountries",
-        "start,end,country,filename,dpi");
-    this.availableGraphs.put("relayflags", "start,end,flag,granularity,"
-        + "filename,dpi");
-    this.availableGraphs.put("versions", "start,end,filename,dpi");
-    this.availableGraphs.put("platforms", "start,end,filename,dpi");
-    this.availableGraphs.put("bandwidth", "start,end,filename,dpi");
-    this.availableGraphs.put("bwhist-flags", "start,end,filename,dpi");
-    this.availableGraphs.put("dirbytes", "start,end,filename,dpi");
-    this.availableGraphs.put("direct-users",
-        "start,end,country,events,filename,nocutoff,dpi");
-    this.availableGraphs.put("bridge-users",
-         "start,end,country,filename,dpi");
-    this.availableGraphs.put("gettor", "start,end,language,filename,dpi");
-    this.availableGraphs.put("torperf",
-         "start,end,source,filesize,filename,dpi");
-    this.availableGraphs.put("torperf-failures",
-         "start,end,source,filesize,filename,dpi");
-    this.availableGraphs.put("connbidirect", "start,end,filename,dpi");
-
     this.knownParameterValues = new HashMap<String, String>();
     this.knownParameterValues.put("flag",
         "Running,Exit,Guard,Fast,Stable");
@@ -86,6 +64,10 @@ public class GraphParameterChecker {
     this.knownParameterValues.put("dpi", "72,150,300");
   }
 
+  public void setAvailableGraphs(Map<String, String> availableGraphs) {
+    this.availableGraphs = availableGraphs;
+  }
+
   /**
    * Checks request parameters for the given graph type and returns a map
    * of recognized parameters, or null if the graph type doesn't exist or
diff --git a/src/org/torproject/ernie/web/RObjectGenerator.java b/src/org/torproject/ernie/web/RObjectGenerator.java
index 2fb4477..da79d43 100644
--- a/src/org/torproject/ernie/web/RObjectGenerator.java
+++ b/src/org/torproject/ernie/web/RObjectGenerator.java
@@ -14,6 +14,8 @@ import java.util.Arrays;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.SortedSet;
+import java.util.TreeSet;
 
 import javax.servlet.ServletContext;
 import javax.servlet.ServletContextEvent;
@@ -33,6 +35,10 @@ public class RObjectGenerator implements ServletContextListener {
   private String cachedGraphsDirectory;
   private long maxCacheAge;
 
+  private SortedSet<String> availableCsvFiles;
+  private Map<String, String> availableTables;
+  private Map<String, String> availableGraphs;
+
   public void contextInitialized(ServletContextEvent event) {
 
     /* Initialize using context parameters. */
@@ -45,6 +51,57 @@ public class RObjectGenerator implements ServletContextListener {
     this.cachedGraphsDirectory = servletContext.getInitParameter(
         "cachedGraphsDir");
 
+    /* Initialize map of available CSV files. */
+    this.availableCsvFiles = new TreeSet<String>();
+    this.availableCsvFiles.add("bandwidth");
+    this.availableCsvFiles.add("bridge-users");
+    this.availableCsvFiles.add("bwhist-flags");
+    this.availableCsvFiles.add("connbidirect");
+    this.availableCsvFiles.add("direct-users");
+    this.availableCsvFiles.add("dirreq-stats");
+    this.availableCsvFiles.add("dirbytes");
+    this.availableCsvFiles.add("gettor");
+    this.availableCsvFiles.add("monthly-users-average");
+    this.availableCsvFiles.add("monthly-users-peak");
+    this.availableCsvFiles.add("networksize");
+    this.availableCsvFiles.add("platforms");
+    this.availableCsvFiles.add("relaycountries");
+    this.availableCsvFiles.add("relayflags");
+    this.availableCsvFiles.add("relayflags-hour");
+    this.availableCsvFiles.add("torperf");
+    this.availableCsvFiles.add("torperf-failures");
+    this.availableCsvFiles.add("versions");
+
+    this.availableTables = new HashMap<String, String>();
+    this.availableTables.put("direct-users", "start,end,filename");
+    this.availableTables.put("censorship-events", "start,end,filename");
+    TableParameterChecker.getInstance().setAvailableTables(
+        availableTables);
+
+    this.availableGraphs = new HashMap<String, String>();
+    this.availableGraphs.put("networksize", "start,end,filename,dpi");
+    this.availableGraphs.put("relaycountries",
+        "start,end,country,filename,dpi");
+    this.availableGraphs.put("relayflags", "start,end,flag,granularity,"
+        + "filename,dpi");
+    this.availableGraphs.put("versions", "start,end,filename,dpi");
+    this.availableGraphs.put("platforms", "start,end,filename,dpi");
+    this.availableGraphs.put("bandwidth", "start,end,filename,dpi");
+    this.availableGraphs.put("bwhist-flags", "start,end,filename,dpi");
+    this.availableGraphs.put("dirbytes", "start,end,filename,dpi");
+    this.availableGraphs.put("direct-users",
+        "start,end,country,events,filename,nocutoff,dpi");
+    this.availableGraphs.put("bridge-users",
+         "start,end,country,filename,dpi");
+    this.availableGraphs.put("gettor", "start,end,language,filename,dpi");
+    this.availableGraphs.put("torperf",
+         "start,end,source,filesize,filename,dpi");
+    this.availableGraphs.put("torperf-failures",
+         "start,end,source,filesize,filename,dpi");
+    this.availableGraphs.put("connbidirect", "start,end,filename,dpi");
+    GraphParameterChecker.getInstance().setAvailableGraphs(
+        availableGraphs);
+
     /* Register ourself, so that servlets can use us. */
     servletContext.setAttribute("RObjectGenerator", this);
   }
@@ -141,6 +198,10 @@ public class RObjectGenerator implements ServletContextListener {
     return result;
   }
 
+  public SortedSet<String> getAvailableCsvFiles() {
+    return this.availableCsvFiles;
+  }
+
   public String generateCsv(String requestedCsvFile) {
     /* Prepare filename and R query string. */
     String rQuery = "export_" + requestedCsvFile.replaceAll("-", "_")
diff --git a/src/org/torproject/ernie/web/TableParameterChecker.java b/src/org/torproject/ernie/web/TableParameterChecker.java
index 3209bda..25bd8fa 100644
--- a/src/org/torproject/ernie/web/TableParameterChecker.java
+++ b/src/org/torproject/ernie/web/TableParameterChecker.java
@@ -41,10 +41,10 @@ public class TableParameterChecker {
   public TableParameterChecker() {
     this.dateFormat = new SimpleDateFormat("yyyy-MM-dd");
     this.dateFormat.setTimeZone(TimeZone.getTimeZone("UTC"));
+  }
 
-    this.availableTables = new HashMap<String, String>();
-    this.availableTables.put("direct-users", "start,end,filename");
-    this.availableTables.put("censorship-events", "start,end,filename");
+  public void setAvailableTables(Map<String, String> availableTables) {
+    this.availableTables = availableTables;
   }
 
   /**





More information about the tor-commits mailing list