Add servlets for queries with IP
[proteocache.git] / datadb / compbio / cassandra / CassandraReader.java
index c7d08bf..e75f148 100644 (file)
@@ -12,9 +12,6 @@ import com.datastax.driver.core.Row;
 import com.datastax.driver.core.Session;
 import com.datastax.driver.core.ResultSet;
 
-import compbio.engine.ProteoCachePropertyHelperManager;
-import compbio.util.PropertyHelper;
-
 public class CassandraReader {
        private Session session;
        private static Logger log = Logger.getLogger(CassandraNativeConnector.class);
@@ -54,24 +51,54 @@ public class CassandraReader {
        }
 
        /*
+        * getting data from the db
+        */
+       public List<Pair<String, String>> ReadProteinData(long day) {
+               final long startTime = System.currentTimeMillis();
+               String com = "SELECT JobID, Protein FROM ProteinData WHERE jobtime = " + day + ";";
+               System.out.println("Command: " + com);
+               ResultSet results = session.execute(com);
+               if (results.isExhausted())
+                       return null;
+               final long queryTime = System.currentTimeMillis();
+               List<Row> rows = results.all();
+               System.out.println("Query time is " + (queryTime - startTime) + " msec");
+               List<Pair<String, String>> res = new ArrayList<Pair<String, String>>();
+               int c = 0;
+               for (Row r : rows) {
+                       Pair<String, String> pair = new Pair<String, String>(r.getString("JobID"), r.getString("Protein"));
+                       res.add(pair);
+                       ++c;
+               }
+               final long endTime = System.currentTimeMillis();
+               System.out.println(c + " rows analysed, execution time is " + (endTime - startTime) + " msec");
+               return res;
+       }
+       /*
         * getting data from the db JobDateInfo
         */
-       public long ReadDateTable(long queryDate) {
-               ResultSet results = session.execute("SELECT Total FROM JobDateInfo WHERE jobday = " + queryDate + ";");
+       public List<Long> ReadDateTable(long queryDate) {
+               ResultSet results = session.execute("SELECT * FROM JobDateInfo WHERE jobday = " + queryDate + ";");
                if (results.isExhausted())
-                       return 0;
+                       return null;
                Row therow = results.one();
-               long res = therow.getLong("Total");
+               List<Long> res = new ArrayList<Long>();
+               res.add(therow.getLong("Total"));
+               res.add(therow.getLong("TotalOK"));
+               res.add(therow.getLong("TotalStopped"));
+               res.add(therow.getLong("TotalError"));
+               res.add(therow.getLong("TotalTimeOut"));
                if (!results.isExhausted()) {
                        Date date = new Date (queryDate);
                        log.warn("CassandraReader.ReadDateTable: date row for " + date.toString () + " ("+ queryDate + ") duplicated ");
                }
                return res;
        }
+
        /*
         * getting whole protein sequence from the db ProteinRow
         */
-       public List<StructureProteinPrediction> ReadWholeSequence(String queryProtein) {
+       public List<AnnotatedProteinSequenceBean> ReadWholeSequence(String queryProtein) {
                final long startTime = System.currentTimeMillis();
                String com = "SELECT JobID, Predictions FROM ProteinRow WHERE Protein = '" + queryProtein + "';";
                System.out.println("Command: " + com);
@@ -82,10 +109,10 @@ public class CassandraReader {
                List<Row> rows = results.all();
                System.out.println("Query time is " + (queryTime - startTime) + " msec");
                System.out.println(" rows analysed,  " + rows.size());
-               List<StructureProteinPrediction> res = new ArrayList<StructureProteinPrediction>();
+               List<AnnotatedProteinSequenceBean> res = new ArrayList<AnnotatedProteinSequenceBean>();
                int c = 0;
                for (Row r : rows) {
-                       StructureProteinPrediction structure = new StructureProteinPrediction(queryProtein, r.getString("JobID"), r.getMap(
+                       AnnotatedProteinSequenceBean structure = new AnnotatedProteinSequenceBean(queryProtein, r.getString("JobID"), r.getMap(
                                        "Predictions", String.class, String.class));
                        res.add(structure);
                        ++c;
@@ -95,10 +122,41 @@ public class CassandraReader {
                return res;
        }
 
+       
+       /*
+        * getting jobs by ip
+        */
+       public List<Pair<String, String>> ReadIpWithJobs(String ip) {
+               final long startTime = System.currentTimeMillis();
+               String com = "SELECT JobID, Protein, FinalStatus FROM ProteinLog WHERE ip = '" + ip + "';";
+               System.out.println("Command: " + com);
+               ResultSet results = session.execute(com);
+               if (results.isExhausted())
+                       return null;
+               final long queryTime = System.currentTimeMillis();
+               List<Row> rows = results.all();
+               List<Pair<String, String>> res = new ArrayList<Pair<String, String>>();
+               System.out.println("Query time is " + (queryTime - startTime) + " msec");
+               System.out.println(" rows analysed,  " + rows.size());
+               int c = 0;
+               for (Row r : rows) {
+                       if (r.getString("FinalStatus").equals("OK")) { 
+                               Pair<String, String> pair = new Pair<String, String>(r.getString("JobID"), r.getString("Protein"));
+                               System.out.println(pair.getElement0());
+                               System.out.println(pair.getElement1());
+                               res.add(pair);
+                               ++c;
+                       }
+               }
+               final long endTime = System.currentTimeMillis();
+               System.out.println(c + " rows analysed, execution time is " + (endTime - startTime) + " msec");
+               return res;
+       }
+
        /*
         * getting part of protein sequence from the db ProteinRow
         */
-       public List<StructureProteinPrediction> ReadPartOfSequence(String queryProtein) {
+       public List<AnnotatedProteinSequenceBean> ReadPartOfSequence(String queryProtein) {
                final long startTime = System.currentTimeMillis();
                String com = "SELECT * FROM ProteinRow;";
                System.out.println("Command: " + com);
@@ -109,12 +167,12 @@ public class CassandraReader {
                List<Row> rows = results.all();
                System.out.println("Query time is " + (queryTime - startTime) + " msec");
                System.out.println(" rows analysed,  " + rows.size());
-               List<StructureProteinPrediction> res = new ArrayList<StructureProteinPrediction>();
+               List<AnnotatedProteinSequenceBean> res = new ArrayList<AnnotatedProteinSequenceBean>();
                int c = 0;
                for (Row r : rows) {
                        String prot = r.getString("Protein");
                        if (prot.matches("(.*)" + queryProtein + "(.*)")) {
-                               StructureProteinPrediction structure = new StructureProteinPrediction(prot, r.getString("JobID"), r.getMap("Predictions",
+                               AnnotatedProteinSequenceBean structure = new AnnotatedProteinSequenceBean(prot, r.getString("JobID"), r.getMap("Predictions",
                                                String.class, String.class));
                                res.add(structure);
                                ++c;
@@ -130,7 +188,7 @@ public class CassandraReader {
         */
        public Map<String, Integer> ReadProteinSequenceByCounter() {
                final long startTime = System.currentTimeMillis();
-               String com = "SELECT Protein FROM ProteinRow;";
+               String com = "SELECT Protein, JobID FROM ProteinRow;";
                System.out.println("Command: " + com);
                ResultSet results = session.execute(com);
                if (results.isExhausted())
@@ -143,6 +201,7 @@ public class CassandraReader {
                int c = 0;
                for (Row r : rows) {
                        String protein = r.getString("Protein");
+                       String id = r.getString("JobID");
                        if (res.containsKey(protein))
                                res.put(protein, res.get(protein) + 1);
                        else
@@ -154,7 +213,36 @@ public class CassandraReader {
        }
 
        /*
-        * getting protein sequences by counter
+        * getting ip by counter
+        */
+       public Map<String, Integer> ReadIpByCounter() {
+               final long startTime = System.currentTimeMillis();
+               String com = "SELECT JobID, ip FROM ProteinLog;";
+               System.out.println("Command: " + com);
+               ResultSet results = session.execute(com);
+               if (results.isExhausted())
+                       return null;
+               final long queryTime = System.currentTimeMillis();
+               List<Row> rows = results.all();
+               System.out.println("Query time is " + (queryTime - startTime) + " msec");
+               System.out.println(" rows analysed,  " + rows.size());
+               Map<String, Integer> res = new HashMap<String, Integer>();
+               int c = 0;
+               for (Row r : rows) {
+                       String protein = r.getString("ip");
+                       String id = r.getString("JobID");
+                       if (res.containsKey(protein))
+                               res.put(protein, res.get(protein) + 1);
+                       else
+                               res.put(protein, 1);
+               }
+               final long endTime = System.currentTimeMillis();
+               System.out.println(c + " rows analysed, execution time is " + (endTime - startTime) + " msec");
+               return res;
+       }
+
+       /*
+        * getting log info for jobid
         */
        public StructureJobLog ReadJobLog(String jobid) {
                final long startTime = System.currentTimeMillis();