Fix problem with new table column names: ProgrammeName -> ProgramName, Version -...
[proteocache.git] / datadb / compbio / cassandra / CassandraNewTableWriter.java
index 1832750..4ee10c8 100644 (file)
@@ -11,10 +11,10 @@ import com.datastax.driver.core.Session;
 import com.datastax.driver.core.ResultSet;
 import com.datastax.driver.core.PreparedStatement;
 import com.datastax.driver.core.BoundStatement;
+import com.datastax.driver.core.exceptions.QueryExecutionException;
 
 import compbio.engine.ProteoCachePropertyHelperManager;
 import compbio.cassandra.CassandraNativeConnector;
-import compbio.util.PropertyHelper;
 
 public class CassandraNewTableWriter {
        private Session session;
@@ -47,29 +47,65 @@ public class CassandraNewTableWriter {
        }
 
        /*
+        * update programme name and version
+        */
+       public void FillNewParameter() {
+               System.out.println("Updating....");
+
+               final long StartTime = System.currentTimeMillis();
+               long erldate = CassandraNativeConnector.getEarliestDateInDB();
+               Calendar runnicCal = Calendar.getInstance();
+               runnicCal.setTime(new Date(erldate));
+               Calendar endcal = Calendar.getInstance();
+               long endTime = endcal.getTime().getTime();
+               for (Date date = runnicCal.getTime(); date.getTime() < endTime; runnicCal.add(Calendar.DATE, 1), date = runnicCal.getTime()) {
+                       try {
+                               String com = "SELECT JobID, Protein FROM ProteinData WHERE jobtime = " + date.getTime() + ";";
+                               System.out.println(com);
+                               ResultSet results = session.execute(com);
+                               if (results == null || results.isExhausted())
+                                       continue;
+                               List<Row> rows = results.all();
+                               System.out.println(rows.size());
+                               for (Row r : rows) {
+                                       session.execute("UPDATE  ProteinLog SET ProgramName = 'Jpred', ProgramVersion = '3.0.1' WHERE JobID = '"
+                                                       + r.getString("JobID") + "';");
+                                       session.execute("UPDATE  JpredArchive SET ProgramName = 'Jpred', ProgramVersion = '3.0.1' WHERE JobID = '"
+                                                       + r.getString("JobID") + "';");
+                               }
+                       } catch (QueryExecutionException e) {
+                               e.printStackTrace();
+                       }
+               }
+               System.out.println("Table ProteinLog filled: total time is " + (System.currentTimeMillis() - StartTime) + " msec");
+       }
+
+       /*
         * fill new table
         */
        public void FillNewTable() {
-               long date1 = CassandraNativeConnector.getEarliestDateInDB();
-               Calendar start = Calendar.getInstance();
-               start.setTime(new Date(date1));
+               final long StartTime = System.currentTimeMillis();
+               long erldate = CassandraNativeConnector.getEarliestDateInDB();
+               Calendar runnicCal = Calendar.getInstance();
+               runnicCal.setTime(new Date(erldate));
                Calendar endcal = Calendar.getInstance();
-               Date end = endcal.getTime();
-               for (Date date = start.getTime(); !start.after(end); start.add(Calendar.DATE, 1), date = start.getTime()) {
-                       String query1 = "SELECT * FROM ProteinData WHERE jobtime = " + date.getTime() + ";";
-                       System.out.println("Query db: " + query1);
-                       ResultSet results = session.execute(query1);
-                       String query2 = "INSERT INTO JobDateInfo " + "(jobday, Total)" + " VALUES (" + date.getTime() + "," + results.all().size()+ ");";
-                       System.out.println("Insert DB: " + query2);
-                       session.execute(query2);
+               long endTime = endcal.getTime().getTime();
+               for (Date date = runnicCal.getTime(); date.getTime() < endTime; runnicCal.add(Calendar.DATE, 1), date = runnicCal.getTime()) {
+                       try {
+                               ResultSet results = session.execute("SELECT * FROM ProteinData WHERE jobtime = " + date.getTime() + ";");
+                               session.execute("INSERT INTO JobDateInfo " + "(jobday, Total)" + " VALUES (" + date.getTime() + "," + results.all().size()
+                                               + ");");
+                       } catch (QueryExecutionException e) {
+                               e.printStackTrace();
+                       }
                }
-               System.out.println("Table JobDateInfo filled");
+               System.out.println("Table JobDateInfo filled: total time is " + (System.currentTimeMillis() - StartTime) + " msec");
        }
-       
+
        /*
-        * fill new table
+        * fill a table with the database global parameters
         */
-       public void FillParameters() {
+       public void FillMainDBParameters() {
                Date bubu = new Date(CassandraNativeConnector.getEarliestDateInDB());
                System.out.println("Old EarliestJobDate is " + bubu.toString());