Add mode comments to the classes
[proteocache.git] / server / compbio / controllers / IPDataController.java
index 5f3f5e1..a9d25b9 100644 (file)
@@ -8,32 +8,57 @@ import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestMethod;
 import org.springframework.web.bind.annotation.RequestParam;
 
-import compbio.cassandra.TotalByCounterBean;
-import compbio.cassandra.UserBean;
-import compbio.statistic.CassandraRequester;
+import compbio.beans.TotalByCounterBean;
+import compbio.beans.UserBean;
+import compbio.cassandra.readers.CassandraReader;
+import compbio.cassandra.readers.IpReader;
+import compbio.cassandra.readers.ReaderByCounter;
 
 /**
+ * The controller 
+ * 
  * @author Alexander Sherstnev
  * @author Natasha Sherstneva
+ * @version 1.0
  */
 @Controller
 public class IPDataController extends BasicController {
-
+       /**
+        * default minimal jobs to consider a user "heavy user"
+        */
+       private int minimalJobsFromIP = 5;
+       
+       /**
+        * for initial page for request "heavy users"
+        * 
+        */
        @RequestMapping(value = "/admin/ip/counts/query", method = RequestMethod.GET)
        public String initStatisticsForm(Map<String, Object> model) {
                model.put("username", getPrincipalName());
-               model.put("value", 5);
+               model.put("value", minimalJobsFromIP);
                return "query/IPStatistics";
        }
 
+       /**
+        * form query page for requesting a single IP
+        * 
+        * @param model - MVC abstract model
+        * @return
+        */
        @RequestMapping(value = "/admin/ip/query", method = RequestMethod.GET)
        public String initOneIPForm(Map<String, Object> model) {
                model.put("username", getPrincipalName());
-               CassandraRequester cr = new CassandraRequester();
+               CassandraReader cr = new CassandraReader();
                model.put("value", cr.getExample("ip"));
                return "query/IP";
        }
 
+       /**
+        * Form output model with statistics on "heavy users"
+        * @param counter - the number of jobs for requested "heavy users"
+        * @param model - abstract MVC model
+        * @return
+        */
        @RequestMapping(value = "/admin/ip/counts/results", method = RequestMethod.GET)
        public String findIPwithCounter(@RequestParam("JobCounter") String counter, Map<String, Object> model) {
                model.put("username", getPrincipalName());
@@ -59,25 +84,32 @@ public class IPDataController extends BasicController {
                }
 
                final long startTime = System.currentTimeMillis();
-               CassandraRequester cr = new CassandraRequester();
-               List<TotalByCounterBean> r = cr.readIpByCounter(realcounter);
+               ReaderByCounter reader = new ReaderByCounter();
+               List<TotalByCounterBean> r = reader.readIpByCounter(realcounter);
                model.put("results", r);
                model.put("njobs", 0);
+               String csvline = "";
                if (null != r) {
                        model.put("njobs", r.size());
+                       csvline = "\'Job%20 count\', \'IP\'%0A";
+               }
+               // form line for CSV file
+               for (TotalByCounterBean b : r) {
+                       csvline += "\'" + b.getTotaljobs() + "\',\'" + b.getName() + "\'%0A";
                }
+               model.put("csvfile", csvline);
                final long endTime = System.currentTimeMillis();
                model.put("timeExecution", (endTime - startTime));
                model.put("counter", realcounter);
-               return "reportIPstatistics";
+               return "reports/IPstatistics";
        }
 
        @RequestMapping(value = "/admin/ip/results", method = RequestMethod.GET)
        public String findIP(@RequestParam("ip") String ip, Map<String, Object> model) {
                model.put("username", getPrincipalName());
                final long startTime = System.currentTimeMillis();
-               CassandraRequester cr = new CassandraRequester();
-               UserBean r = cr.readIp(ip);
+               IpReader reader = new IpReader();
+               UserBean r = reader.readIp(ip);
                model.put("results", r);
                model.put("njobs", 0);
                if (null != r) {
@@ -86,6 +118,6 @@ public class IPDataController extends BasicController {
                final long endTime = System.currentTimeMillis();
                model.put("timeExecution", (endTime - startTime));
                model.put("ip", ip);
-               return "reportIP";
+               return "reports/IP";
        }
 }