3ee0609aa5db2f856eb084a4431d4420b666c8f7
[proteocache.git] / server / compbio / controllers / ProteomeController.java
1 package compbio.controllers;
2
3 import java.util.Map;
4
5 import org.springframework.stereotype.Controller;
6 import org.springframework.web.bind.annotation.RequestMapping;
7 import org.springframework.web.bind.annotation.RequestMethod;
8 import org.springframework.web.bind.annotation.RequestParam;
9
10 import compbio.cassandra.readers.FeaturesReader;
11
12
13 /**
14  * Spring controller for dealing with proteomes. This version works in the
15  * servlet style.
16  * 
17  * @author Alexander Sherstnev
18  * @author Natasha Sherstneva
19  * 
20  * @since 0.5
21  * @version 1.0 December 2014
22  */
23 @Controller
24 @RequestMapping("/proteomes")
25 public class ProteomeController extends BasicController {
26
27         @RequestMapping(value = "/load", method = RequestMethod.GET)
28         public String loadProteome(Map<String, Object> model) {
29                 model.put("username", getPrincipalName());
30                 return "support/Notimplemented";
31         }
32
33         @RequestMapping(value = "view", method = RequestMethod.GET)
34         public String viewProteome(Map<String, Object> model) {
35                 model.put("username", getPrincipalName());
36                 return "support/Notimplemented";
37         }
38
39         @RequestMapping(value = "launch", method = RequestMethod.GET)
40         public String launchjobProteome(Map<String, Object> model) {
41                 model.put("username", getPrincipalName());
42                 return "support/Notimplemented";
43         }
44
45         @RequestMapping(value = "load/result", method = RequestMethod.GET)
46         public String countSequences(@RequestParam("TypeFeatures") String typeFeature, @RequestParam("Percent") String percent,
47                         Map<String, Object> model) {
48                 model.put("username", getPrincipalName());
49                 final long startTime = System.currentTimeMillis();
50
51                 if (percent.equals("")) {
52                         model.put("error", "The value must not be empty");
53                         model.put("type", typeFeature);
54                         model.put("value", percent);
55                         return "query/SSFeatures";
56                 }
57
58                 int realpercent;
59                 try {
60                         realpercent = Integer.parseInt(percent.trim());
61                 } catch (NumberFormatException e) {
62                         model.put("error", "The value must be an integer number");
63                         model.put("value", percent);
64                         return "query/SSFeatures";
65                 }
66
67                 if (realpercent < 1) {
68                         model.put("error", "The value must be greater than 0");
69                         model.put("value", percent);
70                         return "query/SSFeatures";
71                 }
72
73                 if (realpercent > 100) {
74                         model.put("error", "The value must be less than 100");
75                         model.put("value", percent);
76                         return "query/SSFeatures";
77                 }
78
79                 FeaturesReader reader = new FeaturesReader();
80                 Map<String, String> r = reader.readProteinsPrediction(typeFeature, realpercent);
81                 model.put("results", r);
82                 model.put("njobs", 0);
83                 if (null != r) {
84                         model.put("njobs", r.size());
85                 }
86                 final long endTime = System.currentTimeMillis();
87                 model.put("timeExecution", (endTime - startTime));
88                 model.put("feature", typeFeature);
89                 model.put("percent", realpercent);
90                 return "reports/SSFeatures";
91         }
92
93 }