Introduce new table for programs and necessary infrastructure for the table
authorSasha Sherstnev <a.sherstnev@dundee.ac.uk>
Wed, 22 Jan 2014 12:00:21 +0000 (12:00 +0000)
committerSasha Sherstnev <a.sherstnev@dundee.ac.uk>
Wed, 22 Jan 2014 12:00:21 +0000 (12:00 +0000)
datadb/compbio/beans/JobBean.java
datadb/compbio/cassandra/CassandraNativeConnector.java
datadb/compbio/cassandra/CassandraNewTableWriter.java
datadb/compbio/cassandra/CassandraReaderOld.java
datadb/compbio/cassandra/readers/JobReader.java
server/compbio/controllers/JobController.java
webapp/view/reports/Job.jsp

index ec1f030..5a499c2 100644 (file)
@@ -13,16 +13,18 @@ public class JobBean implements PredictionIndex {
        private String ip;
        private String ProgramName;
        private String ProgramVersion;
+       private String ProgramLink;
        private LinkedHashMap<String, String> predictions;
 
-       public JobBean(String seq, String id, String dateStart, String dateEnd, String ip, Map<String, String> pred, String program, String version) {
+       public JobBean(String seq, String id, String dateStart, String dateEnd, String ip, Map<String, String> 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<String, String>();
                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<String, String> getPrediction() {
                return predictions;
        }
index 3360ad1..909e041 100644 (file)
@@ -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;");
index b4e9746..4ee10c8 100644 (file)
@@ -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<Row> 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();
index e08b39c..ff37145 100644 (file)
@@ -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");
index a525a56..26a40e6 100644 (file)
@@ -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;
        }
 }
index 9fdc128..c1c7af8 100644 (file)
@@ -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;
-       }
-
 }
index 2dd4e82..03be890 100644 (file)
                <div class="panel-body">
                        <p>Start timestamp : ${result.dateStart}</p>
                        <p>End timestamp : ${result.dateEnd}</p>
-                       <c:if test='${jobarchive != null}'>
-                               <p>Program name : ${result.programName}</p>
-                               <p>Program version : ${result.programVersion}</p>
+                       <c:if test='${result.programName != null}'>
+                               <c:choose>
+                               <c:when test="${result.programLink != ''}">
+                                       <p style="font-weight:bold;">
+                                       Program: <a href="${result.programLink}">${result.programName}</a> (version : ${result.programVersion})
+                                       </p>
+                               </c:when>
+                               <c:otherwise>
+                                       <p style="font-weight:bold;">Program : ${result.programName} (version : ${result.programVersion})</p>
+                               </c:otherwise>
+                               </c:choose>
                        </c:if>
 <sec:authorize access="hasRole('ROLE_ADMIN')">
                        <p>IP: <a title="Click to view other jobs" href="${ip_query}?ip=${result.ip}">${result.ip}</a></p>