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 List<Pair<String, String>> ReadProteinData(long day) {
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 List<Pair<String, String>> res = new ArrayList<Pair<String, String>>();
69 Pair<String, String> pair = new Pair<String, String>(r.getString("JobID"), r.getString("Protein"));
73 final long endTime = System.currentTimeMillis();
74 System.out.println(c + " rows analysed, execution time is " + (endTime - startTime) + " msec");
78 * getting data from the db JobDateInfo
80 public List<Long> ReadDateTable(long queryDate) {
81 ResultSet results = session.execute("SELECT * FROM JobDateInfo WHERE jobday = " + queryDate + ";");
82 if (results.isExhausted())
84 Row therow = results.one();
85 List<Long> res = new ArrayList<Long>();
86 res.add(therow.getLong("Total"));
87 res.add(therow.getLong("TotalOK"));
88 res.add(therow.getLong("TotalStopped"));
89 res.add(therow.getLong("TotalError"));
90 res.add(therow.getLong("TotalTimeOut"));
91 if (!results.isExhausted()) {
92 Date date = new Date (queryDate);
93 log.warn("CassandraReader.ReadDateTable: date row for " + date.toString () + " ("+ queryDate + ") duplicated ");
99 * getting whole protein sequence from the db ProteinRow
101 public List<ProteinBean> ReadWholeSequence(String queryProtein) {
102 final long startTime = System.currentTimeMillis();
103 String com = "SELECT JobID, Predictions FROM ProteinRow WHERE Protein = '" + queryProtein + "';";
104 System.out.println("Command: " + com);
105 ResultSet results = session.execute(com);
106 if (results.isExhausted())
108 final long queryTime = System.currentTimeMillis();
109 List<Row> rows = results.all();
110 System.out.println("first size : " + rows.size());
111 System.out.println("Query time is " + (queryTime - startTime) + " msec");
112 System.out.println(" rows analysed, " + rows.size());
113 List<ProteinBean> res = new ArrayList<ProteinBean>();
114 ProteinBean structure = new ProteinBean(queryProtein, rows.get(0).getMap(
115 "Predictions", String.class, String.class));
116 System.out.println("second size : " + rows.size());
119 structure.setJobid(r.getString("JobID"));
123 final long endTime = System.currentTimeMillis();
124 System.out.println(c + " rows analysed, execution time is " + (endTime - startTime) + " msec");
132 public List<Pair<String, String>> ReadIpWithJobs(String ip) {
133 final long startTime = System.currentTimeMillis();
134 String com = "SELECT JobID, Protein, FinalStatus FROM ProteinLog WHERE ip = '" + ip + "';";
135 System.out.println("Command: " + com);
136 ResultSet results = session.execute(com);
137 if (results.isExhausted())
139 final long queryTime = System.currentTimeMillis();
140 List<Row> rows = results.all();
141 List<Pair<String, String>> res = new ArrayList<Pair<String, String>>();
142 System.out.println("Query time is " + (queryTime - startTime) + " msec");
143 System.out.println(" rows analysed, " + rows.size());
146 if (r.getString("FinalStatus").equals("OK")) {
147 Pair<String, String> pair = new Pair<String, String>(r.getString("JobID"), r.getString("Protein"));
148 System.out.println(pair.getElement0());
149 System.out.println(pair.getElement1());
154 final long endTime = System.currentTimeMillis();
155 System.out.println(c + " rows analysed, execution time is " + (endTime - startTime) + " msec");
160 * getting part of protein sequence from the db ProteinRow
162 public List<ProteinBean> ReadPartOfSequence(String queryProtein) {
163 final long startTime = System.currentTimeMillis();
164 String com = "SELECT * FROM ProteinRow;";
165 System.out.println("Command: " + com);
166 ResultSet results = session.execute(com);
167 if (results.isExhausted())
169 final long queryTime = System.currentTimeMillis();
170 List<Row> rows = results.all();
171 System.out.println("Query time is " + (queryTime - startTime) + " msec");
172 System.out.println(" rows analysed, " + rows.size());
173 List<ProteinBean> res = new ArrayList<ProteinBean>();
176 String prot = r.getString("Protein");
177 if (prot.matches("(.*)" + queryProtein + "(.*)")) {
178 ProteinBean structure = new ProteinBean(prot, r.getMap("Predictions", String.class, String.class));
179 structure.setJobid(r.getString("JobID"));
184 final long endTime = System.currentTimeMillis();
185 System.out.println(c + " rows analysed, execution time is " + (endTime - startTime) + " msec");
190 * getting protein sequences by counter
192 public Map<String, Integer> ReadProteinSequenceByCounter() {
193 final long startTime = System.currentTimeMillis();
194 String com = "SELECT Protein, JobID FROM ProteinRow;";
195 System.out.println("Command: " + com);
196 ResultSet results = session.execute(com);
197 if (results.isExhausted())
199 final long queryTime = System.currentTimeMillis();
200 List<Row> rows = results.all();
201 System.out.println("Query time is " + (queryTime - startTime) + " msec");
202 System.out.println(" rows analysed, " + rows.size());
203 Map<String, Integer> res = new HashMap<String, Integer>();
206 String protein = r.getString("Protein");
207 String id = r.getString("JobID");
208 if (res.containsKey(protein))
209 res.put(protein, res.get(protein) + 1);
213 final long endTime = System.currentTimeMillis();
214 System.out.println(c + " rows analysed, execution time is " + (endTime - startTime) + " msec");
219 * getting ip by counter
221 public Map<String, Integer> ReadIpByCounter() {
222 final long startTime = System.currentTimeMillis();
223 String com = "SELECT JobID, ip FROM ProteinLog;";
224 System.out.println("Command: " + com);
225 ResultSet results = session.execute(com);
226 if (results.isExhausted())
228 final long queryTime = System.currentTimeMillis();
229 List<Row> rows = results.all();
230 System.out.println("Query time is " + (queryTime - startTime) + " msec");
231 System.out.println(" rows analysed, " + rows.size());
232 Map<String, Integer> res = new HashMap<String, Integer>();
235 String protein = r.getString("ip");
236 String id = r.getString("JobID");
237 if (res.containsKey(protein))
238 res.put(protein, res.get(protein) + 1);
242 final long endTime = System.currentTimeMillis();
243 System.out.println(c + " rows analysed, execution time is " + (endTime - startTime) + " msec");
248 * getting log info for jobid
250 public StructureJobLog ReadJobLog(String jobid) {
251 final long startTime = System.currentTimeMillis();
252 String com = "SELECT * FROM ProteinLog WHERE JobID = '" + jobid + "';";
253 System.out.println("Command: " + com);
254 ResultSet results = session.execute(com);
255 if (results.isExhausted())
257 final long queryTime = System.currentTimeMillis();
258 Row row = results.one();
259 String com1 = "SELECT * FROM ProteinRow WHERE JobID = '" + jobid + "' ALLOW FILTERING;";
260 System.out.println("Command: " + com1);
261 ResultSet results1 = session.execute(com1);
262 if (results1.isExhausted())
264 Row row1 = results1.one();
265 StructureJobLog res = new StructureJobLog(row.getString("Protein"), row.getString("JobID"), row.getString("DataBegin"),
266 row.getString("DataEnd"), row.getString("ip"), row1.getMap("Predictions", String.class, String.class));
267 System.out.println("Query time is " + (queryTime - startTime) + " msec");
268 final long endTime = System.currentTimeMillis();
269 System.out.println(" rows analysed, execution time is " + (endTime - startTime) + " msec");