ae3ca753b086b6834523856112da316f288e1cc2
[proteocache.git] / server / compbio / controllers / IPDataController.java
1 package compbio.controllers;
2
3 import java.util.List;
4 import java.util.Map;
5
6 import org.springframework.stereotype.Controller;
7 import org.springframework.web.bind.annotation.RequestMapping;
8 import org.springframework.web.bind.annotation.RequestMethod;
9 import org.springframework.web.bind.annotation.RequestParam;
10
11 import compbio.cassandra.TotalByCounterBean;
12 import compbio.cassandra.UserBean;
13 import compbio.statistic.CassandraRequester;
14
15 /**
16  * @author Alexander Sherstnev
17  * @author Natasha Sherstneva
18  */
19 @Controller
20 public class IPDataController extends BasicController {
21
22         @RequestMapping(value = "/admin/ip/counts/query", method = RequestMethod.GET)
23         public String initStatisticsForm(Map<String, Object> model) {
24                 model.put("username", getPrincipalName());
25                 model.put("value", 5);
26                 return "query/IPStatistics";
27         }
28
29         @RequestMapping(value = "/admin/ip/query", method = RequestMethod.GET)
30         public String initOneIPForm(Map<String, Object> model) {
31                 model.put("username", getPrincipalName());
32                 model.put("value", "127.0.0.1");
33                 return "query/IP";
34         }
35
36         @RequestMapping(value = "/admin/ip/counts/results", method = RequestMethod.GET)
37         public String findIPwithCounter(@RequestParam("JobCounter") String counter, Map<String, Object> model) {
38                 model.put("username", getPrincipalName());
39                 if (counter.equals("")) {
40                         model.put("error", "The value must not be empty");
41                         model.put("value", counter);
42                         return "query/IPStatistics";
43                 }
44
45                 int realcounter;
46                 try {
47                         realcounter = Integer.parseInt(counter.trim());
48                 } catch (NumberFormatException e) {
49                         model.put("error", "The value must be an integer number");
50                         model.put("value", counter);
51                         return "query/IPStatistics";
52                 }
53
54                 if (realcounter < 1) {
55                         model.put("error", "The value must be greater than 0");
56                         model.put("value", counter);
57                         return "query/IPStatistics";
58                 }
59
60                 final long startTime = System.currentTimeMillis();
61                 CassandraRequester cr = new CassandraRequester();
62                 List<TotalByCounterBean> r = cr.readIpByCounter(realcounter);
63                 model.put("results", r);
64                 model.put("njobs", 0);
65                 if (null != r) {
66                         model.put("njobs", r.size());
67                 }
68                 final long endTime = System.currentTimeMillis();
69                 model.put("timeExecution", (endTime - startTime));
70                 model.put("counter", realcounter);
71                 return "reportIPstatistics";
72         }
73
74         @RequestMapping(value = "/admin/ip/results", method = RequestMethod.GET)
75         public String findIP(@RequestParam("ip") String ip, Map<String, Object> model) {
76                 model.put("username", getPrincipalName());
77                 final long startTime = System.currentTimeMillis();
78                 CassandraRequester cr = new CassandraRequester();
79                 UserBean r = cr.readIp(ip);
80                 model.put("results", r);
81                 model.put("njobs", 0);
82                 if (null != r) {
83                         model.put("njobs", r.getMainInfo().size());
84                 }
85                 final long endTime = System.currentTimeMillis();
86                 model.put("timeExecution", (endTime - startTime));
87                 model.put("ip", ip);
88                 return "reportIP";
89         }
90 }