X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=server%2Fcompbio%2Fcontrollers%2FSequenceController.java;h=0f154d3da92b2e711d5fb6531b493872d74cdf6a;hb=de3f241669f5f2bfd8258e87cbd0b19402950f32;hp=8e5bc293d1b47d20a47c627a20ad0575f53f7f1a;hpb=f67950b14ab016e93cca92d9b918a255728d58fd;p=proteocache.git diff --git a/server/compbio/controllers/SequenceController.java b/server/compbio/controllers/SequenceController.java index 8e5bc29..0f154d3 100644 --- a/server/compbio/controllers/SequenceController.java +++ b/server/compbio/controllers/SequenceController.java @@ -2,22 +2,34 @@ package compbio.controllers; import java.util.List; import java.util.Map; +import java.util.regex.Pattern; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RequestParam; +import compbio.cassandra.ProteinBean; import compbio.cassandra.DataBase; - +import compbio.data.sequence.SequenceUtil; import compbio.statistic.CassandraRequester; /** + * Spring controller for sequence search. This version works in the servlet style. + * * @author Alexander Sherstnev * @author Natasha Sherstneva + * + * @since 0.5 + * @version 1.0 December 2013 */ @Controller public class SequenceController { + + /** + * pattern for NON-protein alphabet symbols + */ + private final Pattern NONPROTEIN = Pattern.compile("[^ARNDCQEGHILKMFPSTWYV]+", Pattern.CASE_INSENSITIVE); @RequestMapping(value = "/sequence/query1", method = RequestMethod.GET) public String formSequenceQuery(Map model) { @@ -35,18 +47,32 @@ public class SequenceController { public String findSequence(@RequestParam("sequence") String sequence, @RequestParam("protein") String flag, Map model) { final long startTime = System.currentTimeMillis(); + // input checks String trimmedsequence = sequence.replaceAll("\\s", ""); + if (trimmedsequence.equalsIgnoreCase("")) { + model.put("error", "The sequence cann't be empty"); + model.put("value", sequence); + return "queryProteinSequence"; + } + if (NONPROTEIN.matcher(trimmedsequence).find()) { + model.put("error", "The sequence contains symbols not from the standard protein alphabet"); + model.put("value", sequence); + return "queryProteinSequence"; + } + model.put("njobs", 0); model.put("prot", trimmedsequence); model.put("flag", flag); if (0 < trimmedsequence.length()) { CassandraRequester cr = new CassandraRequester(); - List r = cr.readProteins(trimmedsequence, flag); + List r = cr.readProteins(trimmedsequence, flag); model.put("results", r); if (null != r) { - System.out.println("result size = " + r.size()); - model.put("njobs", r.size()); + if (flag.equals("whole")) + model.put("njobs",r.get(0).getJobid().size()); + else + model.put("njobs", r.size()); } } final long endTime = System.currentTimeMillis();