From e8aea0549be548d481fddd08c9e15eac54b73770 Mon Sep 17 00:00:00 2001 From: Sasha Sherstnev Date: Wed, 22 Jan 2014 12:00:21 +0000 Subject: [PATCH] Introduce new table for programs and necessary infrastructure for the table --- datadb/compbio/beans/JobBean.java | 24 +++++++++++++++--- .../cassandra/CassandraNativeConnector.java | 7 ++++-- .../compbio/cassandra/CassandraNewTableWriter.java | 5 ++-- datadb/compbio/cassandra/CassandraReaderOld.java | 9 +++++-- datadb/compbio/cassandra/readers/JobReader.java | 26 ++++++++++++++++---- server/compbio/controllers/JobController.java | 20 --------------- webapp/view/reports/Job.jsp | 14 ++++++++--- 7 files changed, 67 insertions(+), 38 deletions(-) diff --git a/datadb/compbio/beans/JobBean.java b/datadb/compbio/beans/JobBean.java index ec1f030..5a499c2 100644 --- a/datadb/compbio/beans/JobBean.java +++ b/datadb/compbio/beans/JobBean.java @@ -13,16 +13,18 @@ public class JobBean implements PredictionIndex { private String ip; private String ProgramName; private String ProgramVersion; + private String ProgramLink; private LinkedHashMap predictions; - public JobBean(String seq, String id, String dateStart, String dateEnd, String ip, Map pred, String program, String version) { + public JobBean(String seq, String id, String dateStart, String dateEnd, String ip, Map pred) { this.sequence = seq; - this.ProgramName = program; - this.ProgramVersion = version; + this.ProgramName = ""; + this.ProgramVersion = ""; this.jobid = id; this.dateStart = dateStart; this.dateEnd = dateEnd; this.ip = ip; + this.ProgramLink = ""; this.predictions = new LinkedHashMap(); setPredictions(pred); } @@ -63,6 +65,22 @@ public class JobBean implements PredictionIndex { return ProgramVersion; } + public String getProgramLink() { + return ProgramLink; + } + + public void setProgramName(String name) { + ProgramName = name; + } + + public void setProgramVersion(String version) { + ProgramVersion = version; + } + + public void setProgramLink(String link) { + ProgramLink = link; + } + public Map getPrediction() { return predictions; } diff --git a/datadb/compbio/cassandra/CassandraNativeConnector.java b/datadb/compbio/cassandra/CassandraNativeConnector.java index 3360ad1..909e041 100644 --- a/datadb/compbio/cassandra/CassandraNativeConnector.java +++ b/datadb/compbio/cassandra/CassandraNativeConnector.java @@ -88,8 +88,11 @@ public class CassandraNativeConnector { session.execute("CREATE TABLE IF NOT EXISTS JobDateInfo " + "(jobday bigint, Total bigint, TotalOK bigint, TotalStopped bigint, TotalError bigint, TotalTimeOut bigint, Program varchar, Version varchar, PRIMARY KEY(jobday));"); - String com = "CREATE TABLE IF NOT EXISTS Users " - + "(name varchar, id bigint, email varchar, password varchar, organisation varchar, position varchar, signedtolist boolean, registrationdate bigint, PRIMARY KEY(id));"; + session.execute("CREATE TABLE IF NOT EXISTS Programs " + + "(Program varchar, Version varchar, Description varchar, weblink varchar, PRIMARY KEY(Program,Version));"); + + session.execute("CREATE TABLE IF NOT EXISTS Users " + + "(name varchar, id bigint, email varchar, password varchar, organisation varchar, position varchar, signedtolist boolean, registrationdate bigint, PRIMARY KEY(id));"); // session.execute("ALTER TABLE ProteinLog ADD ProgramName ascii;"); // session.execute("ALTER TABLE ProteinLog ADD ProgramVersion ascii;"); diff --git a/datadb/compbio/cassandra/CassandraNewTableWriter.java b/datadb/compbio/cassandra/CassandraNewTableWriter.java index b4e9746..4ee10c8 100644 --- a/datadb/compbio/cassandra/CassandraNewTableWriter.java +++ b/datadb/compbio/cassandra/CassandraNewTableWriter.java @@ -59,7 +59,7 @@ public class CassandraNewTableWriter { Calendar endcal = Calendar.getInstance(); long endTime = endcal.getTime().getTime(); for (Date date = runnicCal.getTime(); date.getTime() < endTime; runnicCal.add(Calendar.DATE, 1), date = runnicCal.getTime()) { - try { + try { String com = "SELECT JobID, Protein FROM ProteinData WHERE jobtime = " + date.getTime() + ";"; System.out.println(com); ResultSet results = session.execute(com); @@ -67,12 +67,11 @@ public class CassandraNewTableWriter { continue; List rows = results.all(); System.out.println(rows.size()); - int k=0; for (Row r : rows) { session.execute("UPDATE ProteinLog SET ProgramName = 'Jpred', ProgramVersion = '3.0.1' WHERE JobID = '" + r.getString("JobID") + "';"); session.execute("UPDATE JpredArchive SET ProgramName = 'Jpred', ProgramVersion = '3.0.1' WHERE JobID = '" - + r.getString("JobID") + "';"); + + r.getString("JobID") + "';"); } } catch (QueryExecutionException e) { e.printStackTrace(); diff --git a/datadb/compbio/cassandra/CassandraReaderOld.java b/datadb/compbio/cassandra/CassandraReaderOld.java index e08b39c..ff37145 100644 --- a/datadb/compbio/cassandra/CassandraReaderOld.java +++ b/datadb/compbio/cassandra/CassandraReaderOld.java @@ -314,8 +314,13 @@ public class CassandraReaderOld { 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), row.getString("ProgramName"), - row.getString("ProgramVersion")); + 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"); diff --git a/datadb/compbio/cassandra/readers/JobReader.java b/datadb/compbio/cassandra/readers/JobReader.java index a525a56..26a40e6 100644 --- a/datadb/compbio/cassandra/readers/JobReader.java +++ b/datadb/compbio/cassandra/readers/JobReader.java @@ -23,14 +23,30 @@ public class JobReader extends CassandraReader { ResultSet results = CassandraQuery("SELECT * FROM ProteinLog WHERE JobID = '" + jobid + "';"); if (results.isExhausted()) return null; - Row row = results.one(); + Row row1 = results.one(); ResultSet results1 = CassandraQuery("SELECT * FROM ProteinRow WHERE JobID = '" + jobid + "' ALLOW FILTERING;"); 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), row.getString("ProgramName"), - row.getString("ProgramVersion")); + Row row2 = results1.one(); + String program = row1.getString("ProgramName"); + String version = row1.getString("ProgramVersion"); + JobBean res = new JobBean(row1.getString("Protein"), row1.getString("JobID"), row1.getString("DataBegin"), + row1.getString("DataEnd"), row1.getString("ip"), row2.getMap("Predictions", String.class, String.class)); + + if (null != program && null != version) { + res.setProgramName(program); + res.setProgramVersion(version); + ResultSet results3 = CassandraQuery("SELECT * FROM Programs WHERE Program = '" + program + "' and Version = '" + version + + "' ALLOW FILTERING;"); + if (results3.isExhausted()) + return null; + Row row3 = results3.one(); + String link = row3.getString("weblink"); + if (null != link) { + res.setProgramLink(link); + } + } + return res; } } diff --git a/server/compbio/controllers/JobController.java b/server/compbio/controllers/JobController.java index 9fdc128..c1c7af8 100644 --- a/server/compbio/controllers/JobController.java +++ b/server/compbio/controllers/JobController.java @@ -3,10 +3,7 @@ package compbio.controllers; import java.io.IOException; import java.net.HttpURLConnection; import java.net.URL; -import java.text.SimpleDateFormat; import java.util.Calendar; -import java.util.Date; -import java.util.List; import java.util.Map; import org.apache.log4j.Logger; @@ -17,10 +14,7 @@ import org.springframework.web.bind.annotation.RequestParam; import compbio.statistic.CassandraRequester; import compbio.beans.ExecutionTimeBean; -import compbio.beans.Total; import compbio.beans.TotalExecutionTime; -import compbio.beans.TotalJobsStatisticBean; -import compbio.cassandra.DataBase; import compbio.cassandra.DateFormatter; import compbio.cassandra.readers.CassandraReader; import compbio.cassandra.readers.ExecutionTimeReader; @@ -174,18 +168,4 @@ public class JobController extends BasicController { return "reports/Job"; } - /** - * convert date from the standard long representation (milliseconds from 1 - * Jan 1970) to yyyy/mm/dd - * - * @param indate - * date in milliseconds from 1 Jan 1970 - * @return date in the form of yyyy/mm/dd - */ - private String DateFormatYYMMDD(long indate) { - SimpleDateFormat datformat = new SimpleDateFormat("yyyy/MM/dd"); - String dateString = datformat.format(new Date(indate)); - return dateString; - } - } diff --git a/webapp/view/reports/Job.jsp b/webapp/view/reports/Job.jsp index 2dd4e82..03be890 100644 --- a/webapp/view/reports/Job.jsp +++ b/webapp/view/reports/Job.jsp @@ -21,9 +21,17 @@

Start timestamp : ${result.dateStart}

End timestamp : ${result.dateEnd}

- -

Program name : ${result.programName}

-

Program version : ${result.programVersion}

+ + + +

+ Program: ${result.programName} (version : ${result.programVersion}) +

+
+ +

Program : ${result.programName} (version : ${result.programVersion})

+
+

IP: ${result.ip}

-- 1.7.10.2