Merge branch 'DAO'
[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.beans.TotalByCounterBean;
12 import compbio.beans.UserBean;
13 import compbio.cassandra.readers.IpReader;
14 import compbio.cassandra.readers.ReaderByCounter;
15 import compbio.statistic.CassandraRequester;
16
17 /**
18  * @author Alexander Sherstnev
19  * @author Natasha Sherstneva
20  */
21 @Controller
22 public class IPDataController extends BasicController {
23
24         @RequestMapping(value = "/admin/ip/counts/query", method = RequestMethod.GET)
25         public String initStatisticsForm(Map<String, Object> model) {
26                 model.put("username", getPrincipalName());
27                 model.put("value", 5);
28                 return "query/IPStatistics";
29         }
30
31         @RequestMapping(value = "/admin/ip/query", method = RequestMethod.GET)
32         public String initOneIPForm(Map<String, Object> model) {
33                 model.put("username", getPrincipalName());
34                 CassandraRequester cr = new CassandraRequester();
35                 model.put("value", cr.getExample("ip"));
36                 return "query/IP";
37         }
38
39         @RequestMapping(value = "/admin/ip/counts/results", method = RequestMethod.GET)
40         public String findIPwithCounter(@RequestParam("JobCounter") String counter, Map<String, Object> model) {
41                 model.put("username", getPrincipalName());
42                 if (counter.equals("")) {
43                         model.put("error", "The value must not be empty");
44                         model.put("value", counter);
45                         return "query/IPStatistics";
46                 }
47
48                 int realcounter;
49                 try {
50                         realcounter = Integer.parseInt(counter.trim());
51                 } catch (NumberFormatException e) {
52                         model.put("error", "The value must be an integer number");
53                         model.put("value", counter);
54                         return "query/IPStatistics";
55                 }
56
57                 if (realcounter < 1) {
58                         model.put("error", "The value must be greater than 0");
59                         model.put("value", counter);
60                         return "query/IPStatistics";
61                 }
62
63                 final long startTime = System.currentTimeMillis();
64                 ReaderByCounter reader = new ReaderByCounter();
65                 List<TotalByCounterBean> r = reader.readIpByCounter(realcounter);
66                 model.put("results", r);
67                 model.put("njobs", 0);
68                 String csvline = "";
69                 if (null != r) {
70                         model.put("njobs", r.size());
71                         csvline = "\'Job%20 count\', \'IP\'%0A";
72                 }
73                 // form line for CSV file
74                 for (TotalByCounterBean b : r) {
75                         csvline += "\'" + b.getTotaljobs() + "\',\'" + b.getName() + "\'%0A";
76                 }
77                 model.put("csvfile", csvline);
78                 final long endTime = System.currentTimeMillis();
79                 model.put("timeExecution", (endTime - startTime));
80                 model.put("counter", realcounter);
81                 return "reportIPstatistics";
82         }
83
84         @RequestMapping(value = "/admin/ip/results", method = RequestMethod.GET)
85         public String findIP(@RequestParam("ip") String ip, Map<String, Object> model) {
86                 model.put("username", getPrincipalName());
87                 final long startTime = System.currentTimeMillis();
88                 IpReader reader = new IpReader();
89                 UserBean r = reader.readIp(ip);
90                 model.put("results", r);
91                 model.put("njobs", 0);
92                 if (null != r) {
93                         model.put("njobs", r.getMainInfo().size());
94                 }
95                 final long endTime = System.currentTimeMillis();
96                 model.put("timeExecution", (endTime - startTime));
97                 model.put("ip", ip);
98                 return "reportIP";
99         }
100 }