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