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());
- model.put("value", "127.0.0.1");
+ 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());
}
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) {
final long endTime = System.currentTimeMillis();
model.put("timeExecution", (endTime - startTime));
model.put("ip", ip);
- return "reportIP";
+ return "reports/IP";
}
}