package compbio.cassandra; import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.ArrayList; import java.util.Map; import org.apache.log4j.Logger; import com.datastax.driver.core.Row; import com.datastax.driver.core.Session; import com.datastax.driver.core.ResultSet; import compbio.beans.DateBean; import compbio.beans.JobBean; import compbio.beans.ProteinBean; import compbio.beans.Total; import compbio.engine.JobStatus; import compbio.engine.Pair; public class CassandraReaderOld { private Session session; private static Logger log = Logger.getLogger(CassandraNativeConnector.class); public CassandraReaderOld() { Session inis = CassandraNativeConnector.getSession(); setSession(inis); } public void setSession(Session s) { assert s != null; session = s; } /* * getting data from the db */ public List> ReadProteinDataTable() { final long startTime = System.currentTimeMillis(); String com = "SELECT DataBegin,DataEnd FROM ProteinLog;"; System.out.println("Command: " + com); ResultSet results = session.execute(com); final long queryTime = System.currentTimeMillis(); List rows = results.all(); System.out.println("Query time is " + (queryTime - startTime) + " msec"); List> res = new ArrayList>(); int c = 0; for (Row r : rows) { Pair pair = new Pair(r.getString("DataBegin"), r.getString("DataEnd")); res.add(pair); ++c; } final long endTime = System.currentTimeMillis(); System.out.println(c + " rows analysed, execution time is " + (endTime - startTime) + " msec"); return res; } /* * getting data from the db */ public DateBean ReadProteinData(long day, String date) { String com = "SELECT JobID, Protein FROM ProteinData WHERE jobtime = " + day + ";"; System.out.println("Command: " + com); ResultSet results = session.execute(com); if (results.isExhausted()) return null; List rows = results.all(); DateBean res = new DateBean(date); for (Row r : rows) { res.setJobidAndSeq(r.getString("JobID"), r.getString("Protein")); } return res; } /** * getting data from the db */ public DateBean ReadFailedJobs(long day, String date, JobStatus status) { // FailLog (jobtime, JobID, ExecTime, ip, FinalStatus) String com = "SELECT JobID FROM FailLog WHERE jobtime = " + day + " and FinalStatus = '" + status.name() + "';"; ResultSet results = session.execute(com); if (results.isExhausted()) return null; List rows = results.all(); DateBean res = new DateBean(date); for (Row r : rows) { String jobid = r.getString("JobID"); String com1 = "SELECT Protein FROM ProteinLog WHERE JobID = '" + jobid + "';"; System.out.println("Command: " + com1); ResultSet results2 = session.execute(com1); List jrows = results2.all(); if (1 == jrows.size()) { String protein = jrows.get(0).getString("Protein"); res.setJobidAndSeq(jobid, protein); } } return res; } /* * getting data from the db JobDateInfo */ public Total ReadDateTable(long queryDate) { ResultSet results = session.execute("SELECT * FROM JobDateInfo WHERE jobday = " + queryDate + ";"); if (results.isExhausted()) return null; Row therow = results.one(); Total res = new Total(therow.getLong("Total"), therow.getLong("TotalOK"), therow.getLong("TotalStopped"), therow.getLong("TotalError"), therow.getLong("TotalTimeOut")); if (!results.isExhausted()) { Date date = new Date(queryDate); log.warn("CassandraReader.ReadDateTable: date row for " + date.toString() + " (" + queryDate + ") duplicated "); } return res; } /* * getting whole protein sequence from the db ProteinRow */ public List ReadWholeSequence(String queryProtein) { final long startTime = System.currentTimeMillis(); String com = "SELECT JobID, Predictions FROM ProteinRow WHERE Protein = '" + queryProtein + "';"; System.out.println("Command: " + com); ResultSet results = session.execute(com); if (results.isExhausted()) return null; final long queryTime = System.currentTimeMillis(); List rows = results.all(); System.out.println("first size : " + rows.size()); System.out.println("Query time is " + (queryTime - startTime) + " msec"); System.out.println(" rows analysed, " + rows.size()); List res = new ArrayList(); ProteinBean structure = new ProteinBean(queryProtein, rows.get(0).getMap("Predictions", String.class, String.class)); System.out.println("second size : " + rows.size()); int c = 0; for (Row r : rows) { structure.setJobid(r.getString("JobID")); ++c; } res.add(structure); final long endTime = System.currentTimeMillis(); System.out.println(c + " rows analysed, execution time is " + (endTime - startTime) + " msec"); return res; } /* * getting jobs by ip */ public Map ReadIpWithJobs(String ip) { final long startTime = System.currentTimeMillis(); String com = "SELECT JobID, Protein, FinalStatus, DataBegin FROM ProteinLog WHERE ip = '" + ip + "';"; System.out.println("Command: " + com); ResultSet results = session.execute(com); if (results.isExhausted()) return null; final long queryTime = System.currentTimeMillis(); List rows = results.all(); Map res = new HashMap(); System.out.println("Query time is " + (queryTime - startTime) + " msec"); System.out.println(" rows analysed, " + rows.size()); int c = 0; for (Row r : rows) { if (r.getString("FinalStatus").equals("OK")) { String date = r.getString("DataBegin"); res.put(r.getString("JobID"), new String[] { date.substring(0, date.indexOf(":")), r.getString("Protein") }); ++c; } } final long endTime = System.currentTimeMillis(); System.out.println(c + " rows analysed, execution time is " + (endTime - startTime) + " msec"); return res; } /* * getting part of protein sequence from the db ProteinRow */ public List ReadPartOfSequence(String queryProtein) { final long startTime = System.currentTimeMillis(); String com = "SELECT * FROM ProteinRow;"; System.out.println("Command: " + com); ResultSet results = session.execute(com); if (results.isExhausted()) return null; final long queryTime = System.currentTimeMillis(); List rows = results.all(); System.out.println("Query time is " + (queryTime - startTime) + " msec"); System.out.println(" rows analysed, " + rows.size()); List res = new ArrayList(); int c = 0; for (Row r : rows) { String prot = r.getString("Protein"); if (prot.matches("(.*)" + queryProtein + "(.*)")) { ProteinBean structure = new ProteinBean(prot, r.getMap("Predictions", String.class, String.class)); structure.setJobid(r.getString("JobID")); res.add(structure); ++c; } } final long endTime = System.currentTimeMillis(); System.out.println(c + " rows analysed, execution time is " + (endTime - startTime) + " msec"); return res; } /* * getting protein sequence from the db ProteinRow */ public Map ReadProtein() { //final long startTime = System.currentTimeMillis(); String com = "SELECT * FROM ProteinRow;"; System.out.println("Command: " + com); ResultSet results = session.execute(com); if (results.isExhausted()) return null; //final long queryTime = System.currentTimeMillis(); List rows = results.all(); Map output = new HashMap(); for (Row r : rows) { String protein = r.getString("Protein"); String prediction = findJnetpred(r.getMap("Predictions", String.class, String.class)); if (protein != null && prediction != null) { output.put(protein, prediction); } } //final long endTime = System.currentTimeMillis(); return output; } private String findJnetpred(Map pred) { if (pred != null) { if (pred.containsKey("jnetpred")) return pred.get("jnetpred"); } return null; } /* * getting protein sequences by counter */ public Map ReadProteinSequenceByCounter() { final long startTime = System.currentTimeMillis(); String com = "SELECT Protein, JobID FROM ProteinRow;"; System.out.println("Command: " + com); ResultSet results = session.execute(com); if (results.isExhausted()) return null; final long queryTime = System.currentTimeMillis(); List rows = results.all(); System.out.println("Query time is " + (queryTime - startTime) + " msec"); System.out.println(" rows analysed, " + rows.size()); Map res = new HashMap(); int c = 0; for (Row r : rows) { String protein = r.getString("Protein"); if (res.containsKey(protein)) res.put(protein, res.get(protein) + 1); else res.put(protein, 1); } final long endTime = System.currentTimeMillis(); System.out.println(c + " rows analysed, execution time is " + (endTime - startTime) + " msec"); return res; } /* * getting ip by counter */ public Map ReadIpByCounter() { final long startTime = System.currentTimeMillis(); String com = "SELECT JobID, ip FROM ProteinLog;"; System.out.println("Command: " + com); ResultSet results = session.execute(com); if (results.isExhausted()) return null; final long queryTime = System.currentTimeMillis(); List rows = results.all(); System.out.println("Query time is " + (queryTime - startTime) + " msec"); System.out.println(" rows analysed, " + rows.size()); Map res = new HashMap(); int c = 0; for (Row r : rows) { String ip = r.getString("ip"); if (res.containsKey(ip)) res.put(ip, res.get(ip) + 1); else res.put(ip, 1); } final long endTime = System.currentTimeMillis(); System.out.println(c + " rows analysed, execution time is " + (endTime - startTime) + " msec"); return res; } /* * getting log info for jobid */ public JobBean ReadJobLog(String jobid) { final long startTime = System.currentTimeMillis(); String com = "SELECT * FROM ProteinLog WHERE JobID = '" + jobid + "';"; System.out.println("Command: " + com); ResultSet results = session.execute(com); if (results.isExhausted()) return null; final long queryTime = System.currentTimeMillis(); Row row = results.one(); String com1 = "SELECT * FROM ProteinRow WHERE JobID = '" + jobid + "' ALLOW FILTERING;"; System.out.println("Command: " + com1); ResultSet results1 = session.execute(com1); if (results1.isExhausted()) return null; Row row1 = results1.one(); JobBean res = new JobBean(row.getString("Protein"), row.getString("JobID"), row.getString("DataBegin"), row.getString("DataEnd"), row.getString("ip"), row1.getMap("Predictions", String.class, String.class)); String program = row.getString("ProgramName"); String version = row.getString("ProgramVersion"); if (null != program && null != version) { res.setProgramName(program); res.setProgramVersion(version); } System.out.println("Query time is " + (queryTime - startTime) + " msec"); final long endTime = System.currentTimeMillis(); System.out.println(" rows analysed, execution time is " + (endTime - startTime) + " msec"); return res; } }