1 package compbio.cassandra;
4 import java.util.HashMap;
6 import java.util.ArrayList;
9 import org.apache.log4j.Logger;
11 import com.datastax.driver.core.Row;
12 import com.datastax.driver.core.Session;
13 import com.datastax.driver.core.ResultSet;
15 public class CassandraReader {
16 private Session session;
17 private static Logger log = Logger.getLogger(CassandraNativeConnector.class);
19 public CassandraReader() {
20 Session inis = CassandraNativeConnector.getSession();
24 public void setSession(Session s) {
30 * getting data from the db
32 public List<Pair<String, String>> ReadProteinDataTable() {
33 final long startTime = System.currentTimeMillis();
34 String com = "SELECT DataBegin,DataEnd FROM ProteinLog;";
35 System.out.println("Command: " + com);
36 ResultSet results = session.execute(com);
37 final long queryTime = System.currentTimeMillis();
38 List<Row> rows = results.all();
39 System.out.println("Query time is " + (queryTime - startTime) + " msec");
41 List<Pair<String, String>> res = new ArrayList<Pair<String, String>>();
44 Pair<String, String> pair = new Pair<String, String>(r.getString("DataBegin"), r.getString("DataEnd"));
48 final long endTime = System.currentTimeMillis();
49 System.out.println(c + " rows analysed, execution time is " + (endTime - startTime) + " msec");
54 * getting data from the db
56 public DateBean ReadProteinData(long day, String date) {
57 final long startTime = System.currentTimeMillis();
58 String com = "SELECT JobID, Protein FROM ProteinData WHERE jobtime = " + day + ";";
59 System.out.println("Command: " + com);
60 ResultSet results = session.execute(com);
61 if (results.isExhausted())
63 final long queryTime = System.currentTimeMillis();
64 List<Row> rows = results.all();
65 System.out.println("Query time is " + (queryTime - startTime) + " msec");
66 DateBean res = new DateBean(date);
69 res.setJobidAndSeq(r.getString("JobID"), r.getString("Protein"));
72 final long endTime = System.currentTimeMillis();
73 System.out.println(c + " rows analysed, execution time is " + (endTime - startTime) + " msec");
77 * getting data from the db JobDateInfo
79 public Total ReadDateTable(long queryDate) {
80 ResultSet results = session.execute("SELECT * FROM JobDateInfo WHERE jobday = " + queryDate + ";");
81 if (results.isExhausted())
83 Row therow = results.one();
84 Total res = new Total(therow.getLong("Total"), therow.getLong("TotalOK"), therow.getLong("TotalStopped"),
85 therow.getLong("TotalError"), therow.getLong("TotalTimeOut"));
86 if (!results.isExhausted()) {
87 Date date = new Date (queryDate);
88 log.warn("CassandraReader.ReadDateTable: date row for " + date.toString () + " ("+ queryDate + ") duplicated ");
94 * getting whole protein sequence from the db ProteinRow
96 public List<ProteinBean> ReadWholeSequence(String queryProtein) {
97 final long startTime = System.currentTimeMillis();
98 String com = "SELECT JobID, Predictions FROM ProteinRow WHERE Protein = '" + queryProtein + "';";
99 System.out.println("Command: " + com);
100 ResultSet results = session.execute(com);
101 if (results.isExhausted())
103 final long queryTime = System.currentTimeMillis();
104 List<Row> rows = results.all();
105 System.out.println("first size : " + rows.size());
106 System.out.println("Query time is " + (queryTime - startTime) + " msec");
107 System.out.println(" rows analysed, " + rows.size());
108 List<ProteinBean> res = new ArrayList<ProteinBean>();
109 ProteinBean structure = new ProteinBean(queryProtein, rows.get(0).getMap(
110 "Predictions", String.class, String.class));
111 System.out.println("second size : " + rows.size());
114 structure.setJobid(r.getString("JobID"));
118 final long endTime = System.currentTimeMillis();
119 System.out.println(c + " rows analysed, execution time is " + (endTime - startTime) + " msec");
127 public Map<String, String[]> ReadIpWithJobs(String ip) {
128 final long startTime = System.currentTimeMillis();
129 String com = "SELECT JobID, Protein, FinalStatus, DataBegin FROM ProteinLog WHERE ip = '" + ip + "';";
130 System.out.println("Command: " + com);
131 ResultSet results = session.execute(com);
132 if (results.isExhausted())
134 final long queryTime = System.currentTimeMillis();
135 List<Row> rows = results.all();
136 Map<String, String[]> res = new HashMap<String, String[]>();
137 System.out.println("Query time is " + (queryTime - startTime) + " msec");
138 System.out.println(" rows analysed, " + rows.size());
141 if (r.getString("FinalStatus").equals("OK")) {
142 String date = r.getString("DataBegin");
143 res.put(r.getString("JobID"), new String[] {date.substring(0, date.indexOf(":")), r.getString("Protein")});
147 final long endTime = System.currentTimeMillis();
148 System.out.println(c + " rows analysed, execution time is " + (endTime - startTime) + " msec");
153 * getting part of protein sequence from the db ProteinRow
155 public List<ProteinBean> ReadPartOfSequence(String queryProtein) {
156 final long startTime = System.currentTimeMillis();
157 String com = "SELECT * FROM ProteinRow;";
158 System.out.println("Command: " + com);
159 ResultSet results = session.execute(com);
160 if (results.isExhausted())
162 final long queryTime = System.currentTimeMillis();
163 List<Row> rows = results.all();
164 System.out.println("Query time is " + (queryTime - startTime) + " msec");
165 System.out.println(" rows analysed, " + rows.size());
166 List<ProteinBean> res = new ArrayList<ProteinBean>();
169 String prot = r.getString("Protein");
170 if (prot.matches("(.*)" + queryProtein + "(.*)")) {
171 ProteinBean structure = new ProteinBean(prot, r.getMap("Predictions", String.class, String.class));
172 structure.setJobid(r.getString("JobID"));
177 final long endTime = System.currentTimeMillis();
178 System.out.println(c + " rows analysed, execution time is " + (endTime - startTime) + " msec");
183 * getting protein sequences by counter
185 public Map<String, Integer> ReadProteinSequenceByCounter() {
186 final long startTime = System.currentTimeMillis();
187 String com = "SELECT Protein, JobID FROM ProteinRow;";
188 System.out.println("Command: " + com);
189 ResultSet results = session.execute(com);
190 if (results.isExhausted())
192 final long queryTime = System.currentTimeMillis();
193 List<Row> rows = results.all();
194 System.out.println("Query time is " + (queryTime - startTime) + " msec");
195 System.out.println(" rows analysed, " + rows.size());
196 Map<String, Integer> res = new HashMap<String, Integer>();
199 String protein = r.getString("Protein");
200 String id = r.getString("JobID");
201 if (res.containsKey(protein))
202 res.put(protein, res.get(protein) + 1);
206 final long endTime = System.currentTimeMillis();
207 System.out.println(c + " rows analysed, execution time is " + (endTime - startTime) + " msec");
212 * getting ip by counter
214 public Map<String, Integer> ReadIpByCounter() {
215 final long startTime = System.currentTimeMillis();
216 String com = "SELECT JobID, ip FROM ProteinLog;";
217 System.out.println("Command: " + com);
218 ResultSet results = session.execute(com);
219 if (results.isExhausted())
221 final long queryTime = System.currentTimeMillis();
222 List<Row> rows = results.all();
223 System.out.println("Query time is " + (queryTime - startTime) + " msec");
224 System.out.println(" rows analysed, " + rows.size());
225 Map<String, Integer> res = new HashMap<String, Integer>();
228 String ip = r.getString("ip");
229 String id = r.getString("JobID");
230 if (res.containsKey(ip))
231 res.put(ip, res.get(ip) + 1);
235 final long endTime = System.currentTimeMillis();
236 System.out.println(c + " rows analysed, execution time is " + (endTime - startTime) + " msec");
241 * getting log info for jobid
243 public JobBean ReadJobLog(String jobid) {
244 final long startTime = System.currentTimeMillis();
245 String com = "SELECT * FROM ProteinLog WHERE JobID = '" + jobid + "';";
246 System.out.println("Command: " + com);
247 ResultSet results = session.execute(com);
248 if (results.isExhausted())
250 final long queryTime = System.currentTimeMillis();
251 Row row = results.one();
252 String com1 = "SELECT * FROM ProteinRow WHERE JobID = '" + jobid + "' ALLOW FILTERING;";
253 System.out.println("Command: " + com1);
254 ResultSet results1 = session.execute(com1);
255 if (results1.isExhausted())
257 Row row1 = results1.one();
258 JobBean res = new JobBean(row.getString("Protein"), row.getString("JobID"), row.getString("DataBegin"),
259 row.getString("DataEnd"), row.getString("ip"), row1.getMap("Predictions", String.class, String.class));
260 System.out.println("Query time is " + (queryTime - startTime) + " msec");
261 final long endTime = System.currentTimeMillis();
262 System.out.println(" rows analysed, execution time is " + (endTime - startTime) + " msec");