1. Fix problem with slow servlets (wrong forming CVS line)
[proteocache.git] / server / compbio / controllers / SSFeaturesController.java
index 34eed80..3c66361 100644 (file)
@@ -10,8 +10,8 @@ import org.springframework.web.bind.annotation.RequestParam;
 import compbio.statistic.CassandraRequester;
 
 /**
- * Spring controller for sequence queries. This version works in the servlet
- * style.
+ * Spring controller for protein secondary structure features. This version
+ * works in the servlet style.
  * 
  * @author Alexander Sherstnev
  * @author Natasha Sherstneva
@@ -23,6 +23,15 @@ import compbio.statistic.CassandraRequester;
 @RequestMapping("/features")
 public class SSFeaturesController extends BasicController {
 
+       /**
+        * form a query page for protein secondary structure feaatures: Proteins
+        * with given fraction of H/E (helix/beta sheets)
+        * 
+        * @param model
+        *            MVC model object
+        * 
+        * @return link to the report JSP page
+        */
        @RequestMapping(value = "query", method = RequestMethod.GET)
        public String formCounterQuery(Map<String, Object> model) {
                model.put("username", getPrincipalName());
@@ -31,6 +40,21 @@ public class SSFeaturesController extends BasicController {
                return "query/SSFeatures";
        }
 
+       /**
+        * form a results page for protein secondary structure features: Proteins
+        * with given fraction of H/E (helix/beta sheets) All proteins with E/H
+        * higher than a given percent of the length are returned
+        * 
+        * @param model
+        *            MVC model object
+        * @param typeFeature
+        *            type of SS: H/E (helix/beta sheets)
+        * @param percent
+        *            fraction of the protein length predicted as H/E (helix/beta
+        *            sheets)
+        * 
+        * @return link to the report JSP page
+        */
        @RequestMapping(value = "results", method = RequestMethod.GET)
        public String countSequences(@RequestParam("TypeFeatures") String typeFeature, @RequestParam("Percent") String percent,
                        Map<String, Object> model) {
@@ -69,19 +93,19 @@ public class SSFeaturesController extends BasicController {
                Map<String, String> r = cr.readProteinsPrediction(typeFeature, realpercent);
                model.put("results", r);
                model.put("njobs", 0);
-               String csvline = "";
+               StringBuilder csvline = new StringBuilder("");
                if (null != r) {
                        model.put("njobs", r.size());
-                       csvline = "\'Prediction%20number\',\'Protein%20Sequence\', \'Secondary%20Structure%20Prediction\'%0A";
-               }
+                       csvline.append("\'Prediction%20number\',\'Protein%20Sequence\', \'Secondary%20Structure%20Prediction\'%0A");
 
-               // form line for CSV file
-               int counter = 1;
-               for (Map.Entry<String, String> entry : r.entrySet()) {
-                       csvline += "\'" + counter + "\',\'" + entry.getKey() + "\',\'" + entry.getValue() + "\'%0A";
-                       ++counter;
+                       // form line for CSV file
+                       int counter = 1;
+                       for (Map.Entry<String, String> entry : r.entrySet()) {
+                               csvline.append("\'" + counter + "\',\'" + entry.getKey() + "\',\'" + entry.getValue() + "\'%0A");
+                               ++counter;
+                       }
                }
-               model.put("csvfile", csvline);
+               model.put("csvfile", csvline.toString());
 
                final long endTime = System.currentTimeMillis();
                model.put("timeExecution", (endTime - startTime));