0d68b1acfcf40bb73437c08b25a4d071bf3c3e9a
[proteocache.git] / datadb / compbio / cassandra / CassandraNewTableWriter.java
1 package compbio.cassandra;
2
3 import java.util.Calendar;
4 import java.util.Date;
5
6 import org.apache.log4j.Logger;
7
8 import com.datastax.driver.core.Row;
9 import com.datastax.driver.core.Session;
10 import com.datastax.driver.core.ResultSet;
11 import com.datastax.driver.core.PreparedStatement;
12 import com.datastax.driver.core.BoundStatement;
13 import com.datastax.driver.core.exceptions.QueryExecutionException;
14
15 import compbio.engine.ProteoCachePropertyHelperManager;
16 import compbio.cassandra.CassandraNativeConnector;
17
18 public class CassandraNewTableWriter {
19         private Session session;
20         private static Logger log = Logger.getLogger(CassandraNativeConnector.class);
21
22         public CassandraNewTableWriter() {
23                 Session inis = CassandraNativeConnector.getSession();
24                 setSession(inis);
25         }
26
27         public void setSession(Session s) {
28                 assert s != null;
29                 session = s;
30         }
31
32         public boolean JobisNotInsterted(String jobid) {
33                 ResultSet results1 = session.execute("SELECT * FROM ProteinLog WHERE JobID = '" + jobid + "';");
34                 if (results1.isExhausted()) {
35                         return true;
36                 }
37                 return false;
38         }
39
40         public boolean JobisNotArchived(String jobid) {
41                 ResultSet results1 = session.execute("SELECT * FROM JpredArchive WHERE JobID = '" + jobid + "';");
42                 if (results1.isExhausted()) {
43                         return true;
44                 }
45                 return false;
46         }
47
48         /*
49          * fill new table
50          */
51         public void FillNewTable() {
52                 final long StartTime = System.currentTimeMillis();
53                 long erldate = CassandraNativeConnector.getEarliestDateInDB();
54                 Calendar runnicCal = Calendar.getInstance();
55                 runnicCal.setTime(new Date(erldate));
56                 Calendar endcal = Calendar.getInstance();
57                 long endTime = endcal.getTime().getTime();
58                 for (Date date = runnicCal.getTime(); date.getTime() < endTime; runnicCal.add(Calendar.DATE, 1), date = runnicCal.getTime()) {
59                         try {
60                                 ResultSet results = session.execute("SELECT * FROM ProteinData WHERE jobtime = " + date.getTime() + ";");
61                                 session.execute("INSERT INTO JobDateInfo " + "(jobday, Total)" + " VALUES (" + date.getTime() + "," + results.all().size()
62                                                 + ");");
63                         } catch (QueryExecutionException e) {
64                                 e.printStackTrace();
65                         }
66                 }
67                 System.out.println("Table JobDateInfo filled: total time is " + (System.currentTimeMillis() - StartTime) + " msec");
68         }
69
70         /*
71          * fill a table with the database global parameters
72          */
73         public void FillMainDBParameters() {
74                 Date bubu = new Date(CassandraNativeConnector.getEarliestDateInDB());
75                 System.out.println("Old EarliestJobDate is " + bubu.toString());
76
77                 String query1 = "SELECT jobtime FROM ProteinData LIMIT 2000000;";
78                 System.out.println("Query db: " + query1);
79                 ResultSet results = session.execute(query1);
80                 Calendar endcal = Calendar.getInstance();
81                 long newearliestday = endcal.getTime().getTime();
82                 while (!results.isExhausted()) {
83                         Row r = results.one();
84                         long day = r.getLong("jobtime");
85                         if (day < newearliestday) {
86                                 newearliestday = day;
87                         }
88                 }
89                 String com = "INSERT INTO MainParameters " + "(Name, Value)" + " VALUES ('EarliestJobDate','" + String.valueOf(newearliestday)
90                                 + "');";
91                 session.execute(com);
92                 Date gaga = new Date(newearliestday);
93                 System.out.println("New EarliestJobDate is " + gaga.toString());
94         }
95 }