Improve stability of Cassandra API calls (commands are checked)
[proteocache.git] / datadb / compbio / cassandra / readers / CassandraReaderExecutionTime.java
1 package compbio.cassandra.readers;
2
3 import java.util.Calendar;
4 import java.util.List;
5 import java.util.ArrayList;
6
7 import com.datastax.driver.core.Row;
8 import com.datastax.driver.core.Session;
9 import com.datastax.driver.core.ResultSet;
10
11 import compbio.engine.Pair;
12
13 public class CassandraReaderExecutionTime {
14         private Session session;
15
16         public static String CASSANDRA_HOSTNAME = "localhost";
17         public static boolean READ_WEB_JPRED = false;
18         public static boolean READ_LOCALFILE_JPRED = false;
19
20         public void setSession(Session s) {
21                 assert s != null;
22                 session = s;
23         }
24
25         public boolean JobisNotInsterted(String jobid) {
26                 ResultSet results1 = session.execute("SELECT * FROM ProteinLog WHERE JobID = '" + jobid + "';");
27                 if (results1.isExhausted()) {
28                         return true;
29                 }
30                 return false;
31         }
32
33         public boolean JobisNotArchived(String jobid) {
34                 ResultSet results1 = session.execute("SELECT * FROM JpredArchive WHERE JobID = '" + jobid + "';");
35                 if (results1.isExhausted()) {
36                         return true;
37                 }
38                 return false;
39         }
40
41         /*
42          * getting data from the db
43          */
44         public List<Pair<String, String>> ReadProteinDataTable() {
45                 final long startTime = System.currentTimeMillis();
46                 String com = "SELECT DataBegin,DataEnd FROM ProteinKeyspace.ProteinLog;";
47                 System.out.println("Command: " + com);
48                 ResultSet results = session.execute(com);
49                 final long queryTime = System.currentTimeMillis();
50                 List<Row> rows = results.all();
51                 System.out.println("Query time is " + (queryTime - startTime) + " msec");
52
53                 List<Pair<String, String>> res = new ArrayList<Pair<String, String>>();
54                 int c = 0;
55                 for (Row r : rows) {
56                         Pair<String, String> pair = new Pair<String, String>(r.getString("DataBegin"), r.getString("DataEnd"));
57                         res.add(pair);
58                         ++c;
59                 }
60                 final long endTime = System.currentTimeMillis();
61                 System.out.println(c + " rows analysed, execution time is " + (endTime - startTime) + " msec");
62                 return res;
63         }
64
65         /*
66          * getting earlest date of jobs from the db
67          */
68         public long getEarliestDateInDB() {
69                 final long startTime = System.currentTimeMillis();
70                 String com = "SELECT jobtime FROM ProteinKeyspace.ProteinData;";
71                 System.out.println("Command: " + com);
72                 ResultSet results = session.execute(com);
73                 final long queryTime = System.currentTimeMillis();
74                 System.out.println("Query time is " + (queryTime - startTime) + " msec");
75
76                 Calendar cal = Calendar.getInstance();
77                 long res = cal.getTimeInMillis();
78                 int c = 0;
79                 while (!results.isExhausted()) {
80                         Row r = results.one();
81                         long d1 = r.getLong("jobtime");
82                         if (res > d1) {
83                                 res = d1;
84                         }
85                         ++c;
86                 }
87                 final long endTime = System.currentTimeMillis();
88                 System.out.println(c + " rows analysed, execution time is " + (endTime - startTime) + " msec");
89                 return res;
90         }
91
92 }