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 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;
import compbio.cassandra.readers.JobReader;
import compbio.engine.archive.ArchivedJob;
@RequestParam(value = "option", required = false) String option, Map<String, Object> model) {
model.put("username", getPrincipalName());
final long startTime = System.currentTimeMillis();
-
- CassandraRequester sp = new CassandraRequester();
+ Calendar loccal = Calendar.getInstance();
+ ExecutionTimeReader reader = new ExecutionTimeReader();
if (option.equals("AllDates,off")) {
- Calendar cal = Calendar.getInstance();
- date1 = DateFormatYYMMDD(sp.earliestDate());
- date2 = cal.get(Calendar.YEAR) + "/" + (cal.get(Calendar.MONTH) + 1) + "/" + cal.get(Calendar.DAY_OF_MONTH);
+ date1 = theEaerlistDate;
+ date2 = theCurrentDate;
+ }
+
+ // dates in string format
+ String trimmeddate1 = date1.replaceAll("\\s", "");
+ String trimmeddate2 = date2.replaceAll("\\s", "");
+ // dates in long format
+ long longDate1 = DateFormatter.DateParsing(date1, formaterYYMMDD);
+ long longDate2 = DateFormatter.DateParsing(date2, formaterYYMMDD);
+ String error = DateChecking(trimmeddate1, trimmeddate2, longDate1, longDate2);
+ if (error != null) {
+ model.put("error", error);
+ model.put("date1", date1);
+ model.put("date2", date2);
+ return "query/JobTimeExecution";
}
+
+ if (longDate1 < CassandraReader.earliestDate())
+ longDate1 = CassandraReader.earliestDate();
+ if (longDate2 > loccal.getTimeInMillis())
+ longDate2 = loccal.getTimeInMillis();
+
+ date1 = DateFormatter.DateLongToString(longDate1, formaterYYMMDD);
+ date2 = DateFormatter.DateLongToString(longDate2, formaterYYMMDD);
model.put("date1", date1);
model.put("date2", date2);
model.put("option", option);
- List<DataBase> res = sp.extractExecutionTime(date1, date2);
+ ExecutionTimeBean res = reader.query(longDate1, longDate2);;
model.put("result", res);
+ Map<String, TotalExecutionTime> results = res.getDateTotal();
String csvline = "";
- if (0 < res.size()) {
+ if (0 < res.getDateTotal().size()) {
csvline = "\'Date\',\'Total\',\'0-30 sec\',\'30-60 sec\',\'1-2 min\',\'2-10 min\',\'more 10 min\'%0A";
- for (DataBase entry : res) {
- List<Integer> counts = entry.getTimeRez();
- int total = 0;
- for (int i = 0; i < counts.size(); ++i) {
- total += counts.get(i);
- }
- csvline += "\'" + entry.getDate() + "\',\'" + total;
- for (int i = 0; i < counts.size(); ++i) {
- csvline += "\',\'" + counts.get(i);
- }
- csvline += "\'%0A";
+ for (Map.Entry<String, TotalExecutionTime> entry : results.entrySet()) {
+ csvline += "\'" + entry.getKey() + "\',\'" + entry.getValue().getTotal() + "\',\'" + entry.getValue().getTotal0_30s() + "\',\'"
+ + entry.getValue().getTotal30_60s() + "\',\'" + entry.getValue().getTotal1_2m() + "\',\'"
+ + entry.getValue().getTotal2_10m() + "\',\'" + entry.getValue().getTotal10m() + "\'%0A";
}
}
model.put("csvfile", csvline);
- model.put("ndays", res.size() - 1);
+ model.put("ndays", res.getDateTotal().size() - 1);
final long endTime = System.currentTimeMillis();
model.put("timeExecution", (endTime - startTime));
return "/reports/TimeExecution";
* @param model
* MVC model
* @return link to the JSP query page
+ * @throws IOException
*/
@RequestMapping(value = "/job/results", method = RequestMethod.GET)
- public String findJob(@RequestParam("IdJob") String jobid, Map<String, Object> model) {
+ public String findJob(@RequestParam("IdJob") String jobid, Map<String, Object> model) throws IOException {
model.put("username", getPrincipalName());
final long startTime = System.currentTimeMillis();
JobReader reader = new JobReader();
log.error("JobController.prepareJobArchiveToWeb: IO exception with job archive file");
log.error(e.getLocalizedMessage(), e.getCause());
}
+ // add a direct link to the job
+ String remotelink = "http://www.compbio.dundee.ac.uk/www-jpred/results/" + jobid + "/" + jobid + ".results.html";
+ URL remotelinkurl = new URL(remotelink);
+ HttpURLConnection httpConnection_remotelinkurl = (HttpURLConnection) remotelinkurl.openConnection();
+ if (199 < httpConnection_remotelinkurl.getResponseCode() && httpConnection_remotelinkurl.getResponseCode() < 300) {
+ model.put("jobremotelink", remotelink);
+ }
return "reports/Job";
}