+ public List<ProteinBean> readProteins(String protIn, String searchtype) {
+ List<ProteinBean> result;
+ if (searchtype.equals("whole"))
+ result = db.ReadWholeSequence(protIn);
+ else
+ result = db.ReadPartOfSequence(protIn);
+ if (result == null)
+ return null;
+
+ if (searchtype.equals("partial")) {
+ for (ProteinBean entry : result) {
+ entry.setSubProt(CreateSubprot(entry.getSequence(), protIn));
+ }
+ }
+ return result;
+ }
+
+ /*
+ * query: protein feature
+ */
+ public Map<String, String> readProteinsPrediction(String feature, int percent) {
+ Map<String, String> result = db.ReadProtein();;
+ if (result == null)
+ return null;
+ Map<String, String> query = new HashMap<String, String>();
+ for (Map.Entry<String, String> entry : result.entrySet()) {
+ String pred = entry.getValue();
+ if (pred.replaceAll("[^"+feature+"]", "").length() > pred.length() * percent / 100 && (!entry.getKey().equals(""))) {
+ // if (!entry.getKey().equals(""))
+ query.put(entry.getKey(), pred);
+ }
+ }
+ return query;
+ }
+
+ /*
+ * query protein sequences with number of jobs
+ */
+ public List<TotalByCounterBean> readProteinByCounter(int minimalcounter) {
+ List<TotalByCounterBean> query = new ArrayList<TotalByCounterBean>();
+ Map<String, Integer> map = db.ReadProteinSequenceByCounter();
+ if (map == null)
+ return null;
+ for (Map.Entry<String, Integer> entry : map.entrySet()) {
+ if (entry.getValue() > minimalcounter) {
+ TotalByCounterBean bean = new TotalByCounterBean();
+ bean.setTotaljobs(entry.getValue());
+ bean.setName(entry.getKey());
+ query.add(bean);
+ }
+ }
+ return query;
+ }
+
+ /*
+ * query ip with number of jobs
+ */
+ public List<TotalByCounterBean> readIpByCounter(Integer minimalcounter) {
+ List<TotalByCounterBean> query = new ArrayList<TotalByCounterBean>();
+ Map<String, Integer> map = db.ReadIpByCounter();
+ if (minimalcounter == null)
+ minimalcounter = 0;
+ if (map == null)
+ return null;
+ for (Map.Entry<String, Integer> entry : map.entrySet()) {
+ if (entry.getValue() > minimalcounter) {
+ TotalByCounterBean bean = new TotalByCounterBean();
+ bean.setTotaljobs(entry.getValue());
+ bean.setName(entry.getKey());
+ query.add(bean);
+ }
+ }
+ return query;
+ }
+
+ /*
+ * query jobs log info
+ */
+ public JobBean readJobLog(String jobid) {
+ if (jobid == null)
+ return null;
+ return db.ReadJobLog(jobid);
+ }
+
+ /*
+ * query jobs by ipStructureJobLog
+ */
+ public UserBean readIp(String ip) {
+ if (ip == null)
+ return null;
+ Map<String, String[]> res = db.ReadIpWithJobs(ip);
+ if (res == null)
+ return null;
+ UserBean query = new UserBean(ip);
+ query.setMainInfo(res);
+ return query;
+ }
+
+ /*
+ * create list of parts of protein sequence;
+ */
+ private static List<String> CreateSubprot(String protein, String subprot) {
+ List<String> sub = new ArrayList<String>();
+ String subStr = protein;
+ while (subStr.length() > 0 && subStr.contains(subprot)) {
+ String first = subStr.substring(0, subStr.indexOf(subprot));
+ if (first.length() > 0)
+ sub.add(first);
+ sub.add(subprot);
+ subStr = subStr.substring(subStr.indexOf(subprot) + subprot.length(), subStr.length());
+ }
+ if (subStr.length() > 0)
+ sub.add(subStr);
+ return sub;
+ }
+
+ /*
+ * convert String date into long date (miliseconds since the epoch start)
+ */
+ private static long DateParsing(String datInput, SimpleDateFormat formatter) {