Add posibility to look at failed jobs
[proteocache.git] / datadb / compbio / cassandra / CassandraReader.java
index 69f7c08..00a9f27 100644 (file)
@@ -11,6 +11,7 @@ import org.apache.log4j.Logger;
 import com.datastax.driver.core.Row;
 import com.datastax.driver.core.Session;
 import com.datastax.driver.core.ResultSet;
+import compbio.engine.JobStatus;
 
 public class CassandraReader {
        private Session session;
@@ -18,7 +19,7 @@ public class CassandraReader {
 
        public CassandraReader() {
                Session inis = CassandraNativeConnector.getSession();
-               setSession (inis);
+               setSession(inis);
        }
 
        public void setSession(Session s) {
@@ -54,25 +55,44 @@ public class CassandraReader {
         * getting data from the db
         */
        public DateBean ReadProteinData(long day, String date) {
-               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");
                DateBean res = new DateBean(date);
-               int c = 0;
                for (Row r : rows) {
                        res.setJobidAndSeq(r.getString("JobID"), r.getString("Protein"));
-                       ++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
+        */
+       public DateBean ReadFailedJobs(long day, String date, JobStatus status) {
+               // FailLog (jobtime, JobID, ExecTime, ip, FinalStatus)
+               String com = "SELECT JobID FROM FailLog WHERE jobtime = " + day + " and FinalStatus = '" + status.name() + "';";
+               ResultSet results = session.execute(com);
+               if (results.isExhausted())
+                       return null;
+               List<Row> rows = results.all();
+               DateBean res = new DateBean(date);
+               for (Row r : rows) {
+                       String jobid = r.getString("JobID");
+                       String com1 = "SELECT Protein FROM ProteinLog WHERE JobID = '" + jobid + "';";
+                       System.out.println("Command: " + com1);
+                       ResultSet results2 = session.execute(com1);
+                       List<Row> jrows = results2.all();
+                       if (1 == jrows.size()) {
+                               String protein = jrows.get(0).getString("Protein");
+                               res.setJobidAndSeq(jobid, protein);
+                       }
+               }
+               return res;
+       }
+
        /*
         * getting data from the db JobDateInfo
         */
@@ -81,11 +101,11 @@ public class CassandraReader {
                if (results.isExhausted())
                        return null;
                Row therow = results.one();
-               Total res = new Total(therow.getLong("Total"), therow.getLong("TotalOK"), therow.getLong("TotalStopped"), 
+               Total res = new Total(therow.getLong("Total"), therow.getLong("TotalOK"), therow.getLong("TotalStopped"),
                                therow.getLong("TotalError"), therow.getLong("TotalTimeOut"));
                if (!results.isExhausted()) {
-                       Date date = new Date (queryDate);
-                       log.warn("CassandraReader.ReadDateTable: date row for " + date.toString () + " ("+ queryDate + ") duplicated ");
+                       Date date = new Date(queryDate);
+                       log.warn("CassandraReader.ReadDateTable: date row for " + date.toString() + " (" + queryDate + ") duplicated ");
                }
                return res;
        }
@@ -106,12 +126,11 @@ public class CassandraReader {
                System.out.println("Query time is " + (queryTime - startTime) + " msec");
                System.out.println(" rows analysed,  " + rows.size());
                List<ProteinBean> res = new ArrayList<ProteinBean>();
-               ProteinBean structure = new ProteinBean(queryProtein, rows.get(0).getMap(
-                               "Predictions", String.class, String.class));
+               ProteinBean structure = new ProteinBean(queryProtein, rows.get(0).getMap("Predictions", String.class, String.class));
                System.out.println("second size : " + rows.size());
                int c = 0;
                for (Row r : rows) {
-                       structure.setJobid(r.getString("JobID"));                       
+                       structure.setJobid(r.getString("JobID"));
                        ++c;
                }
                res.add(structure);
@@ -120,7 +139,6 @@ public class CassandraReader {
                return res;
        }
 
-       
        /*
         * getting jobs by ip
         */
@@ -138,9 +156,9 @@ public class CassandraReader {
                System.out.println(" rows analysed,  " + rows.size());
                int c = 0;
                for (Row r : rows) {
-                       if (r.getString("FinalStatus").equals("OK")) { 
+                       if (r.getString("FinalStatus").equals("OK")) {
                                String date = r.getString("DataBegin");
-                               res.put(r.getString("JobID"), new String[] {date.substring(0, date.indexOf(":")), r.getString("Protein")});
+                               res.put(r.getString("JobID"), new String[] { date.substring(0, date.indexOf(":")), r.getString("Protein") });
                                ++c;
                        }
                }
@@ -168,7 +186,7 @@ public class CassandraReader {
                for (Row r : rows) {
                        String prot = r.getString("Protein");
                        if (prot.matches("(.*)" + queryProtein + "(.*)")) {
-                               ProteinBean structure = new ProteinBean(prot,  r.getMap("Predictions", String.class, String.class));
+                               ProteinBean structure = new ProteinBean(prot, r.getMap("Predictions", String.class, String.class));
                                structure.setJobid(r.getString("JobID"));
                                res.add(structure);
                                ++c;
@@ -255,8 +273,8 @@ public class CassandraReader {
                if (results1.isExhausted())
                        return null;
                Row row1 = results1.one();
-               JobBean res = new JobBean(row.getString("Protein"), row.getString("JobID"), row.getString("DataBegin"),
-                               row.getString("DataEnd"), row.getString("ip"), row1.getMap("Predictions", String.class, String.class));
+               JobBean res = new JobBean(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");