Merge branch 'master' into servlets
[proteocache.git] / server / compbio / statistic / CassandraRequester.java
index 6a54800..f2336e7 100755 (executable)
@@ -5,7 +5,7 @@ import java.text.SimpleDateFormat;
 import java.util.ArrayList;
 import java.util.Calendar;
 import java.util.Date;
-import java.util.Iterator;
+import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
@@ -13,15 +13,18 @@ import compbio.cassandra.DateBean;
 import compbio.cassandra.ProteinBean;
 import compbio.cassandra.CassandraNativeConnector;
 import compbio.cassandra.CassandraReader;
+import compbio.cassandra.DataBase;
 import compbio.cassandra.Pair;
 import compbio.cassandra.JobBean;
 import compbio.cassandra.Total;
 import compbio.cassandra.TotalByCounterBean;
 import compbio.cassandra.TotalJobsStatisticBean;
 import compbio.cassandra.UserBean;
+import compbio.engine.JobStatus;
 
 public class CassandraRequester {
        private CassandraReader db = new CassandraReader();
+       private ArrayList<DataBase> query;
        private static long currentDate = 0;
        private static long earlestDate = 0;
        private final static SimpleDateFormat formatYYMMDD = new SimpleDateFormat("yyyy/MM/dd");
@@ -29,7 +32,7 @@ public class CassandraRequester {
 
        /*
         * query: execution time for the period from date1 till date2
-        
+        */
        public List<DataBase> extractExecutionTime(String date1, String date2) {
                if (null == date1) {
                        date1 = "1970/1/1";
@@ -113,9 +116,8 @@ public class CassandraRequester {
                db.setTimeTotalExec(totalTime);
                query.add(db);
                return query;
-<<<<<<< HEAD
-       }*/
-       
+       }
+
        /*
         * query: total number of jobs for the period from date1 till date2
         */
@@ -164,7 +166,7 @@ public class CassandraRequester {
        /*
         * query: jobs and sequence at date
         */
-       public DateBean readJobByDay(String date) {
+       public DateBean readJobByDay(String date, JobStatus status) {
                if (!isThisDateValid(date, formatDDMMYY)) {
                        System.out.println("CassandraRequester.readJobByDay: Wrong date format for " + date);
                        return null;
@@ -173,28 +175,50 @@ public class CassandraRequester {
                long day = DateParsing(date, formatDDMMYY);
                if (day < earlestDate || day > currentDate)
                        return null;
-               return db.ReadProteinData(day, date);
+               
+               if (status == JobStatus.OK) {
+                       return db.ReadProteinData(day, date);
+               }
+               return db.ReadFailedJobs(day, date, status);
        }
 
        /*
         * query: protein sequence
         */
-       public List<ProteinBean> readProteins(String protIn, String flag) {
+       public List<ProteinBean> readProteins(String protIn, String searchtype) {
                List<ProteinBean> result;
-               if (flag.equals("whole"))
+               if (searchtype.equals("whole"))
                        result = db.ReadWholeSequence(protIn);
                else
                        result = db.ReadPartOfSequence(protIn);
                if (result == null)
                        return null;
 
-               if (flag.equals("part")) {
+               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
@@ -299,12 +323,6 @@ public class CassandraRequester {
                SimpleDateFormat datformat = new SimpleDateFormat("dd/MM/yyyy");
                return datformat.format(new Date(inDate));
        }
-       
-       // convert long to date in string format
-               private static String DateFormatYYMMDD(long inDate) {
-                       SimpleDateFormat datformat = new SimpleDateFormat("yyyy/MM/dd");
-                       return datformat.format(new Date(inDate));
-               }
 
        /*
         * set earlest date and current dates. earlestDate is static and should be
@@ -342,13 +360,5 @@ public class CassandraRequester {
                earlestDate = CassandraNativeConnector.getEarliestDateInDB();
                return earlestDate;
        }
-       
-       /*
-        * find the earliest date in the database in String format
-        */
-       public String earliestDateString() {
-               earlestDate = CassandraNativeConnector.getEarliestDateInDB();
-               return DateFormatYYMMDD(earlestDate);
-       }
-       
+
 }