fix query log info, jobs by counter
[proteocache.git] / datadb / compbio / cassandra / CassandraNativeConnector.java
index b038457..5593594 100644 (file)
@@ -79,7 +79,6 @@ public class CassandraNativeConnector {
         */
        public void InsertData(long jobtime, String startdate, String enddate, String ip, String jobid, String statusEx, String statusFinal,
                        String protein, List<FastaSequence> predictions) {
-
                String check1 = "SELECT * FROM ProteinKeyspace.ProteinLog WHERE JobID = '" + jobid + "';";
                ResultSet results1 = session.execute(check1);
                if (results1.isExhausted()) {
@@ -87,11 +86,9 @@ public class CassandraNativeConnector {
                                        + "(JobID, IP, DataBegin, DataEnd, FinalStatus, ExecutionStatus, Protein)" + " VALUES ('" + jobid + "','" + ip + "','"
                                        + startdate + "','" + enddate + "','" + statusFinal + "','" + statusEx + "','" + protein + "');";
                        session.execute(com1);
-
                        String com2 = "INSERT INTO ProteinKeyspace.ProteinData " + "(jobtime, JobID, Protein)" + " VALUES (" + jobtime + ",'" + jobid
                                        + "','" + protein + "');";
                        session.execute(com2);
-
                        String allpredictions = "";
                        for (FastaSequence pred : predictions) {
                                String predictionname = pred.getId();
@@ -102,14 +99,14 @@ public class CassandraNativeConnector {
                        if (null != allpredictions) {
                                final_prediction = allpredictions.substring(0, allpredictions.length() - 1);
                        }
-
-                       String check2 = "SELECT * FROM ProteinKeyspace.ProteinRow WHERE JobID = '" + jobid + "';";
+                       String check2 = "SELECT * FROM ProteinKeyspace.ProteinRow WHERE JobID = '" + jobid + "' ALLOW FILTERING;";
                        ResultSet results2 = session.execute(check2);
                        if (results2.isExhausted()) {
                                String com3 = "INSERT INTO ProteinKeyspace.ProteinRow " + "(Protein, JobID, Predictions)" + " VALUES ('" 
                        + protein + "','" + jobid + "',{" + final_prediction + "});";
                                session.execute(com3);
                        }
+                       String check3 = "SELECT * FROM ProteinKeyspace.ProteinRow WHERE JobID = '" + jobid + "';";
                }
        }
 
@@ -212,9 +209,9 @@ public class CassandraNativeConnector {
        /*
         * getting protein sequences by counter
         */
-       public List<Pair<String, Integer>>  ReadProteinDataByCounter(int counter) {
+       public Map<String, Integer>  ReadProteinDataByCounter() {
                final long startTime = System.currentTimeMillis();
-               String com = "SELECT DISTINCT Protein FROM ProteinKeyspace.ProteinRow;";
+               String com = "SELECT Protein FROM ProteinKeyspace.ProteinRow;";
                System.out.println("Command: " + com);
                ResultSet results = session.execute(com);
                if (results.isExhausted())
@@ -223,17 +220,46 @@ public class CassandraNativeConnector {
                List<Row> rows = results.all();
                System.out.println ("Query time is " + (queryTime - startTime) + " msec");   
                System.out.println (" rows analysed,  " + rows.size());
-               List<Pair<String, Integer>>  res = new ArrayList<Pair<String, Integer>>();
+               Map<String, Integer> res = new HashMap<String, Integer>();
                int c = 0;
                for (Row r : rows) {
-                       String prot = r.getString("Protein");
-                       
+                       String protein = r.getString("Protein");
+                       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 protein sequences by counter
+        */
+       public StructureJobLog ReadJobLog(String jobid) {
+               final long startTime = System.currentTimeMillis();
+               String com = "SELECT * FROM ProteinKeyspace.ProteinLog WHERE JobID = '" + jobid + "';";
+               System.out.println("Command: " + com);
+               ResultSet results = session.execute(com);
+               if (results.isExhausted())
+                       return null;
+               final long queryTime = System.currentTimeMillis();
+               Row row = results.one();
+               String com1 = "SELECT * FROM ProteinKeyspace.ProteinRow WHERE JobID = '" + jobid + "' ALLOW FILTERING;";
+               System.out.println("Command: " + com1);
+               ResultSet results1 = session.execute(com1);
+               if (results1.isExhausted())
+                       return null;
+               Row row1 = results1.one();
+               StructureJobLog res = new StructureJobLog(row.getString("Protein"), row.getString("JobID"), row.getString("DataBegin"), row.getString("DataEnd"), row.getString("ip"), row1.getMap("Predictions", String.class, String.class));
+               System.out.println ("Query time is " + (queryTime - startTime) + " msec");   
+               final long endTime = System.currentTimeMillis();
+               System.out.println (" rows analysed, execution time is " + (endTime - startTime) + " msec");
+               return res;
+       }
+       
        /*
         * getting earlest date of jobs from the db
         */