*/
public void InsertData(long jobtime, String startdate, String enddate, String ip, String jobid, String statusEx, String statusFinal,
String protein, List<FastaSequence> predictions) {
-
String check1 = "SELECT * FROM ProteinKeyspace.ProteinLog WHERE JobID = '" + jobid + "';";
ResultSet results1 = session.execute(check1);
if (results1.isExhausted()) {
+ "(JobID, IP, DataBegin, DataEnd, FinalStatus, ExecutionStatus, Protein)" + " VALUES ('" + jobid + "','" + ip + "','"
+ startdate + "','" + enddate + "','" + statusFinal + "','" + statusEx + "','" + protein + "');";
session.execute(com1);
-
String com2 = "INSERT INTO ProteinKeyspace.ProteinData " + "(jobtime, JobID, Protein)" + " VALUES (" + jobtime + ",'" + jobid
+ "','" + protein + "');";
session.execute(com2);
-
String allpredictions = "";
for (FastaSequence pred : predictions) {
String predictionname = pred.getId();
if (null != allpredictions) {
final_prediction = allpredictions.substring(0, allpredictions.length() - 1);
}
-
- String check2 = "SELECT * FROM ProteinKeyspace.ProteinRow WHERE JobID = '" + jobid + "';";
+ String check2 = "SELECT * FROM ProteinKeyspace.ProteinRow WHERE JobID = '" + jobid + "' ALLOW FILTERING;";
ResultSet results2 = session.execute(check2);
if (results2.isExhausted()) {
String com3 = "INSERT INTO ProteinKeyspace.ProteinRow " + "(Protein, JobID, Predictions)" + " VALUES ('"
+ protein + "','" + jobid + "',{" + final_prediction + "});";
session.execute(com3);
}
+ String check3 = "SELECT * FROM ProteinKeyspace.ProteinRow WHERE JobID = '" + jobid + "';";
}
}
/*
* getting protein sequences by counter
*/
- public List<Pair<String, Integer>> ReadProteinDataByCounter(int counter) {
+ public Map<String, Integer> ReadProteinDataByCounter() {
final long startTime = System.currentTimeMillis();
- String com = "SELECT DISTINCT Protein FROM ProteinKeyspace.ProteinRow;";
+ String com = "SELECT Protein FROM ProteinKeyspace.ProteinRow;";
System.out.println("Command: " + com);
ResultSet results = session.execute(com);
if (results.isExhausted())
List<Row> rows = results.all();
System.out.println ("Query time is " + (queryTime - startTime) + " msec");
System.out.println (" rows analysed, " + rows.size());
- List<Pair<String, Integer>> res = new ArrayList<Pair<String, Integer>>();
+ Map<String, Integer> res = new HashMap<String, Integer>();
int c = 0;
for (Row r : rows) {
- String prot = r.getString("Protein");
-
+ 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 protein sequences by counter
+ */
+ public StructureJobLog ReadJobLog(String jobid) {
+ final long startTime = System.currentTimeMillis();
+ String com = "SELECT * FROM ProteinKeyspace.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 ProteinKeyspace.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();
+ StructureJobLog res = new StructureJobLog(row.getString("Protein"), row.getString("JobID"), row.getString("DataBegin"), row.getString("DataEnd"), row.getString("ip"), row1.getMap("Predictions", String.class, String.class));
+ 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;
+ }
+
/*
* getting earlest date of jobs from the db
*/
private List<String> subProt;
private List<Integer> timeRez;
private List<Integer> timeTotalExec;
+ private StructureJobLog logInfo;
public DataBase() {
}
public List<Integer> getTimeTotalExec() {
return timeTotalExec;
}
+
+ public void setLogInfo(StructureJobLog logInfo){
+ this.logInfo = logInfo;
+ }
+
+ public StructureJobLog getLogInfo() {
+ return logInfo;
+ }
}
--- /dev/null
+package compbio.cassandra;
+
+import java.util.Map;
+
+public class StructureJobLog {
+ private String jobid;
+ private String dateStart;
+ private String dateEnd;
+ private String sequence;
+ private String ip;
+ private Map<String,String> prediction;
+
+ public StructureJobLog (String seq, String id, String dateStart, String dateEnd, String ip, Map<String,String> pred) {
+ this.sequence = seq;
+ this.jobid = id;
+ this.dateStart = dateStart;
+ this.dateEnd = dateEnd;
+ this.ip = ip;
+ this.prediction = pred;
+ }
+
+ public String getSequence () {
+ return sequence;
+ }
+
+ public String getJobid () {
+ return jobid;
+ }
+
+ public String getDateStart () {
+ return dateStart;
+ }
+
+ public String getDateEnd () {
+ return dateEnd;
+ }
+
+ public String getIP () {
+ return ip;
+ }
+
+ public Map<String,String> getPrediction () {
+ return prediction;
+ }
+}
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
+import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
-import compbio.statistic.StatisticsProt;
+import compbio.statistic.CassandraRequester;
+
/**
* Servlet implementation class LogServlet
*/
-public class LogServlet extends HttpServlet {
+@WebServlet("/ServletLogInfo")
+public class ServletLogInfo extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
final long startTime = System.currentTimeMillis();
String id = request.getParameter("IdJob");
- StatisticsProt sp = new StatisticsProt();
-// request.setAttribute("result", sp.readJobLog(id));
+ CassandraRequester cr = new CassandraRequester();
+ request.setAttribute("result", cr.readJobLog(id));
final long endTime = System.currentTimeMillis();
request.setAttribute("timeExecution", (endTime - startTime));
request.setAttribute("IdJob", id);
- RequestDispatcher rd = request.getRequestDispatcher("/ReportLog.jsp");
+ RequestDispatcher rd = request.getRequestDispatcher("/ReportLogInfo.jsp");
rd.forward(request, response);
}
int counter = Integer.parseInt(request.getParameter("counterJob"));
CassandraRequester cr = new CassandraRequester();
if (search.equals("Search counter")) {
- // request.setAttribute("result", sp.readProtID(counter));
+ request.setAttribute("result", cr.readProteinByCounter(counter));
} else {
request.setAttribute("result", cr.readProteins(prot, flag));
}
import compbio.cassandra.CassandraNativeConnector;
import compbio.cassandra.DataBase;
import compbio.cassandra.Pair;
+import compbio.cassandra.StructureJobLog;
import compbio.cassandra.StructureProteinPrediction;
public class CassandraRequester {
* */
public List<DataBase> readProteinByCounter(int counter) {
query = new ArrayList<DataBase>();
- // List<Pair<String, String>> res = DBInstance.ReadProteinDataByCounter(counter);
-
+ Map<String, Integer> map = DBInstance.ReadProteinDataByCounter();
+ for (Map.Entry<String, Integer> entry : map.entrySet()) {
+ if (entry.getValue() > counter) {
+ DataBase db = new DataBase();
+ db.setTotalId(entry.getValue());
+ db.setProt(entry.getKey());
+ query.add(db);
+ }
+ }
return query;
}
-
+ /*
+ * query jobs log info
+ */
+ public DataBase readJobLog(String jobid) {
+ // query = new ArrayList<DataBase>();
+ StructureJobLog res = DBInstance.ReadJobLog(jobid);
+ DataBase query = new DataBase();
+ query.setLogInfo(res);
+ // query.setres);
+ return query;
+ }
+ /*
+ * create list of parts of protein sequence;
+ */
private static List<String> CreateSubprot (String protein, String subprot) {
List<String> sub = new ArrayList<String>();
String subStr = protein;
else if (query.equals("protein"))
response.sendRedirect("QuerySequenceProtein.jsp");
else if (query.equals("log"))
- response.sendRedirect("LogQuery.jsp");
+ response.sendRedirect("QueryLogInfo.jsp");
%>
\ No newline at end of file
</head>
<body>
<br/>
- <form method="get" action="LogServlet">
+ <form method="get" action="ServletLogInfo">
<h3>Enter job ID</h3>
<input type="text" name="IdJob"><br/>
<input type="submit" name="Search" value="Search"/><br/><br/>
<%@ taglib uri="http://displaytag.sf.net" prefix="dt" %>
<h3>Jobs log information for: ${IdJob}</h3>
<h3>Time execution: ${timeExecution} ms</h3>
-<c:forEach items="${result}" var="res">
-<p>${res.nameColumn} :
-${res.valueColumn}
-</p>
-</c:forEach>
-<c:forEach items="${result}" var="res">
-<p>${res.namePrediction} :
-${res.valuePrediction}
-</p>
-</c:forEach>
\ No newline at end of file
+<p> Date Start : ${result.logInfo.dateStart}</p>
+<p> Date End : ${result.logInfo.dateEnd}</p>
+<p> Sequence : ${result.logInfo.sequence}</p>
+
<td
style="text-align: left; border-buttom: dotted; font-family: monospace"><a
title="Click to view predictions"
- href="ProtServlet?prot=${res.prot}&protein=whole&Search=Search+sequence&counterJob=${counter}">${res.prot}</a>
+ href="ServletSequenceProtein?prot=${res.prot}&protein=whole&Search=Search+sequence&counterJob=${counter}">${res.prot}</a>
</td>
</tr>
</c:forEach>