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

commit e33d4702e2d1c33a9e6c91db40bedc393c3bc7c9 Author: Karsten Loesing <karsten.loesing@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; } /**
participants (1)
-
karsten@torproject.org