840466359a0ba1e998d1f104ae1c7b3de20e04e9
[proteocache.git] / datadb / compbio / cassandra / CassandraRemover.java
1 package compbio.cassandra;
2
3 import java.text.ParseException;
4 import java.text.SimpleDateFormat;
5 import java.util.Calendar;
6 import java.util.Date;
7 import java.util.List;
8
9 import org.apache.log4j.Logger;
10
11 import com.datastax.driver.core.ResultSet;
12 import com.datastax.driver.core.Row;
13 import com.datastax.driver.core.Session;
14
15 public class CassandraRemover {
16         private Session session;
17         static SimpleDateFormat dateformatter =  new SimpleDateFormat("yyyy/MM/dd");
18         private static Logger log = Logger.getLogger(CassandraNativeConnector.class);
19
20         public CassandraRemover() {
21                 Session inis = CassandraNativeConnector.getSession();
22                 setSession (inis);
23         }
24
25         public void setSession(Session s) {
26                 assert s != null;
27                 session = s;
28         }
29         
30         /*
31          * delete a record from CF for current jobId
32          */
33         private void RemoveJob(String jobid, long date) {               
34                 String com0 = "DELETE FROM ProteinLog WHERE JobID = '" + jobid + "';";
35                 System.out.println("Command: " + com0);
36                 session.execute(com0);
37                 String com1 = "DELETE FROM ProteinRow WHERE JobID = '" + jobid + "';";
38                 System.out.println("Command: " + com1);
39                 session.execute(com1);
40                 String com2 = "DELETE FROM ProteinData WHERE JobID = '" + jobid + "' AND jobtime = " + date + ";";
41                 System.out.println("Command: " + com2);
42                 session.execute(com2);
43                 String com3 = "UPDATE jpredarchive SET finalstatus = 'DELETED'  WHERE JobID = '" + jobid + "' ;";
44                 System.out.println("Command: " + com3);
45                 session.execute(com3);
46                 String com = "SELECT total FROM JobDateInfo WHERE jobday = " + date + ";";
47                 System.out.println("Command: " + com);
48                 ResultSet results = session.execute(com);
49                 long njobs = results.one().getLong("total");
50                 System.out.println("njobs: " + njobs);
51                 String com4 = "INSERT INTO JobDateInfo " + "(jobday, Total)" + " VALUES (" + date + "," + (njobs -1) + ");";
52                 System.out.println("Command: " + com4);
53                 session.execute(com4);
54                 System.out.println("Remove jobs: " + jobid);
55         }
56         
57         public void RemoveJobById (String jobid) {
58                 if (jobid == null) 
59                         return;
60                 Long date = FindDate(jobid);
61                 if (date == null)
62                         return;
63                 RemoveJob(jobid, date);
64         }
65         
66         public void RemoveJobByDate (String date1, String date2) {
67                 System.out.println("Start " + date1 + ", " + date2);
68                 if (date1 == null || date2 == null) 
69                         return;
70                 Long dateBegin = convertDate(date1);
71                 Long dateEnd = convertDate(date2);
72                 System.out.println("Date to long done!: ");
73                 if (dateBegin == null || dateEnd == null) 
74                         return;
75                 Calendar start = Calendar.getInstance();
76                 start.setTime(new Date(dateBegin));
77                 Calendar end = Calendar.getInstance();
78                 end.setTime(new Date(dateEnd));
79                 System.out.println("Date to cal done!: ");
80                 for (Date date = start.getTime(); !start.after(end); start.add(Calendar.DATE, 1), date = start.getTime()) {
81                         String com = "SELECT JobID FROM ProteinData WHERE jobtime = " + date.getTime() + ";";
82                         System.out.println("Command: " + com);
83                         ResultSet results = session.execute(com);
84                         if (!results.isExhausted()) {
85                                 List<Row> rows = results.all();
86                                 for (Row r : rows) {
87                                         String jobid = r.getString("JobID");
88                                         if (jobid != null)
89                                                 RemoveJob(jobid, date.getTime());
90                                 }
91                         }
92                 }
93         }
94         
95         
96         public void RemoveJobByIp (String ip) {
97                 if (ip == null) 
98                         return;
99                 String com = "SELECT databegin, JobID FROM ProteinLog WHERE ip = '" + ip + "';";
100                 System.out.println("Command: " + com);
101                 ResultSet results = session.execute(com);
102                 if (!results.isExhausted()) {
103                         List<Row> rows = results.all();
104                         for (Row r : rows) {
105                                 Long date = convertDate(r.getString("databegin"));
106                                 String jobid = r.getString("JobID");
107                                 if (date == null || jobid == null)
108                                         continue;
109                                 RemoveJob(jobid, date);
110                         }
111                 }
112         }
113         
114         public void RemoveJobBySequence (String seq) {
115                 if (seq == null) 
116                         return;
117                 String com = "SELECT JobID FROM ProteinRow WHERE Protein = '" + seq + "';";
118                 System.out.println("Command: " + com);
119                 ResultSet results = session.execute(com);
120                 if (!results.isExhausted()) {
121                         List<Row> rows = results.all();
122                         for (Row r : rows) {
123                                 String jobid = r.getString("JobID");
124                                 if (jobid == null)
125                                         continue;
126                                 Long date = FindDate(jobid);
127                                 if (date == null)
128                                         continue;
129                                 RemoveJob(jobid, date);
130                         }
131                 }
132         }
133          
134         private Long FindDate(String jobid) {
135                 String com = "SELECT databegin FROM ProteinLog WHERE JobID = '" + jobid + "';";
136                 System.out.println("Command: " + com);
137                 ResultSet results = session.execute(com);
138                 if (results.isExhausted())
139                         return null;
140                 Long date = convertDate(results.one().getString("databegin"));
141                 return date;
142         }
143         
144         
145         protected long convertDate (String d) {
146                 try {
147                         if (null != d) {
148                                 Date startdate = dateformatter.parse(d);
149                                 return startdate.getTime();
150                         }
151                 } catch (ParseException e) {
152                         e.printStackTrace();
153                 }
154                 return 0L;
155         }
156
157 }