import compbio.cassandra.readers.SequenceReader;
/**
- * Spring controller for sequence queries. This version works in the servlet
- * style.
+ * Spring controller for supporting sequence queries. This version works in the
+ * servlet style.
*
* @author Alexander Sherstnev
* @author Natasha Sherstneva
/**
* form a query page for search protein sequence. The servlet should be
- * available for users and admins only.
+ * available for users and admins only.
*
* @param model
* MVC model
}
/**
- * form a query page for statistics: Protein by job count. The servlet should be
- * available for users and admins only.
+ * form a query page for statistics: Protein by job count. The servlet
+ * should be available for users and admins only.
*
* @param model
* MVC model
* @param sequence
* protein sequence or part of sequence
* @param searchtype
- * defined whether the whole sequence or part of sequence would be searched
+ * defined whether the whole sequence or part of sequence would
+ * be searched
* @return link to the report JSP page
*/
- @RequestMapping(value = "sequence/results", method = RequestMethod.GET)
+ @RequestMapping(value = "results", method = RequestMethod.GET)
public String findSequence(@RequestParam("sequence") String sequence, @RequestParam("searchtype") String searchtype,
Map<String, Object> model) {
model.put("username", getPrincipalName());
model.put("njobs", 0);
model.put("prot", trimmedsequence);
model.put("searchtype", searchtype);
- String csvline = "";
+ StringBuilder csvline = new StringBuilder("");
if (0 < trimmedsequence.length()) {
SequenceReader reader = new SequenceReader();
List<ProteinBean> result = reader.readProteins(trimmedsequence, searchtype);
model.put("results", result);
if (null != result) {
- if (searchtype.equals("whole"))
+ if (searchtype.equals("whole")) {
model.put("njobs", result.get(0).getJobid().size());
- else
+ } else {
model.put("njobs", result.size());
- csvline = "\'Job\',\'Annotation\',\'Sequence\'%0A";
- }
- // form CSV file string
- for (ProteinBean entry : result) {
- List<String> jobs = entry.getJobid();
- String protein = entry.getSequence();
- LinkedHashMap<String, String> predictions = entry.getPredictions();
- for (String job : jobs) {
- csvline += "\'" + job + "\',\'Sequence\',\'" + protein + "\',\'%0A";
+ }
+ csvline.append("\'Job\',\'Annotation\',\'Sequence\'%0A");
+ for (ProteinBean entry : result) {
+ List<String> jobs = entry.getJobid();
+ String protein = entry.getSequence();
+ LinkedHashMap<String, String> predictions = entry.getPredictions();
+ StringBuilder jobline = new StringBuilder();
for (Map.Entry<String, String> pr : predictions.entrySet()) {
- csvline += "\'\',\'" + pr.getKey() + "\',\'" + pr.getValue() + "\'%0A";
+ jobline.append("\'\',\'" + pr.getKey() + "\',\'" + pr.getValue() + "\'%0A");
+ }
+ for (String job : jobs) {
+ csvline.append("\'" + job + "\',\'Sequence\',\'" + protein + "\',\'%0A" + jobline.toString());
}
}
}
+ } else {
+ model.put("error", "The sequence after trimming is empty");
+ model.put("value", sequence);
+ return "query/Sequence";
}
- model.put("csvfile", csvline);
+ model.put("csvfile", csvline.toString());
final long endTime = System.currentTimeMillis();
model.put("timeExecution", (endTime - startTime));
- return "reportProteinSequences";
+ return "reports/Sequences";
}
/**
* @param model
* MVC model object
* @param counter
- *
+ *
* @return link to the report JSP page
*/
@RequestMapping(value = "counts/results", method = RequestMethod.GET)
return "query/SequenceCounts";
}
-
ReaderByCounter reader = new ReaderByCounter();
List<TotalByCounterBean> r = reader.readProteinByCounter(realcounter);
model.put("results", r);
model.put("njobs", 0);
- String csvline = "";
+ StringBuilder csvline = new StringBuilder("");
if (null != r) {
model.put("njobs", r.size());
- csvline = "\'Job%20 count\', \'Protein%20Sequence\'%0A";
- }
- // form line for CSV file
-
- for (TotalByCounterBean b : r) {
- if (b.getName().equals("")) {
- csvline += "\'" + b.getTotaljobs() + "\',\'Alignment%20job\'%0A";
- // fix problem with records without protein sequence (alignment
- // jobs)
- b.setName("Alignment job");
- } else {
- csvline += "\'" + b.getTotaljobs() + "\',\'" + b.getName() + "\'%0A";
+ // form line for CSV file
+ csvline.append("\'Job%20 count\', \'Protein%20Sequence\'%0A");
+ for (TotalByCounterBean b : r) {
+ if (b.getName().equals("")) {
+ // fix problem with records without protein sequence
+ // (alignment jobs)
+ csvline.append("\'" + b.getTotaljobs() + "\',\'Alignment%20job\'%0A");
+ b.setName("Alignment job");
+ } else {
+ csvline.append("\'" + b.getTotaljobs() + "\',\'" + b.getName() + "\'%0A");
+ }
}
}
- model.put("csvfile", csvline);
+ model.put("csvfile", csvline.toString());
model.put("results", r);
final long endTime = System.currentTimeMillis();
model.put("timeExecution", (endTime - startTime));
model.put("counter", realcounter);
- return "reportProteinSequencesCounter";
+ return "reports/SequencesStatistics";
}
}