X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=datadb%2Fcompbio%2Fcassandra%2Freaders%2FExecutionTimeReader.java;fp=datadb%2Fcompbio%2Fcassandra%2Freaders%2FExecutionTimeReader.java;h=6bd17eb15343d1002423fa29ae72d4df44d9342b;hb=2d0c3af83988ff2a68d789efb4ccf2ff3c65a88a;hp=0000000000000000000000000000000000000000;hpb=7b779a07bc1815d71534d4d9fb4d5d59eff912ff;p=proteocache.git diff --git a/datadb/compbio/cassandra/readers/ExecutionTimeReader.java b/datadb/compbio/cassandra/readers/ExecutionTimeReader.java new file mode 100644 index 0000000..6bd17eb --- /dev/null +++ b/datadb/compbio/cassandra/readers/ExecutionTimeReader.java @@ -0,0 +1,82 @@ +package compbio.cassandra.readers; + +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Calendar; +import java.util.Date; +import java.util.List; + +import com.datastax.driver.core.ResultSet; +import com.datastax.driver.core.Row; + +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.Pair; + +public class ExecutionTimeReader extends CassandraReader { + + public ExecutionTimeReader() { + super(); + } + + /** + * query: execution time statistics for the period from date1 till date2 + * + * @param dateStart + * the first date in the period + * @param dateEnd + * the last date in the period + * + * @return TotalJobsStatisticBean to the controller + * JobController + **/ + public ExecutionTimeBean query(long dateStart, long dateEnd) { + Calendar start = Calendar.getInstance(); + start.setTime(new Date(dateStart)); + Calendar end = Calendar.getInstance(); + end.setTime(new Date(dateEnd)); + ExecutionTimeBean query = new ExecutionTimeBean(); + TotalExecutionTime wholeTotal = new TotalExecutionTime(0, 0, 0, 0, 0, 0); + + for (Date date = end.getTime(); !end.before(start); end.add(Calendar.DATE, -1), date = end.getTime()) { + ResultSet results = CassandraQuery("SELECT ExecTime FROM ProteinData WHERE jobtime = " + date.getTime() + ";"); + if (results == null) + return null; + if (results.isExhausted()) + continue; + List rows = results.all(); + TotalExecutionTime currentTotal = new TotalExecutionTime(0, 0, 0, 0, 0, 0); + for (Row r : rows) { + long timeExec = r.getInt("ExecTime")/1000; + if (timeExec <= 30) + currentTotal.setTotal0_30s(currentTotal.getTotal0_30s() + 1); + else if (timeExec > 30 && timeExec <= 60) + currentTotal.setTotal30_60s(currentTotal.getTotal30_60s() + 1); + else if (timeExec > 60 && timeExec <= 120) + currentTotal.setTotal1_2m(currentTotal.getTotal1_2m() + 1); + else if (timeExec > 120 && timeExec <= 600) + currentTotal.setTotal2_10m(currentTotal.getTotal2_10m() + 1); + else + currentTotal.setTotal10m(currentTotal.getTotal10m() + 1); + + } + currentTotal.setTotal(currentTotal.getTotal0_30s() + currentTotal.getTotal30_60s() + currentTotal.getTotal1_2m() + + currentTotal.getTotal2_10m() + currentTotal.getTotal10m()); + query.setDateTotal(DateFormatter.DateLongToString(date.getTime(), DateFormatter.getFormatDDMMYY()), currentTotal); + wholeTotal.setTotal(currentTotal.getTotal() + wholeTotal.getTotal()); + wholeTotal.setTotal0_30s(currentTotal.getTotal0_30s() + wholeTotal.getTotal0_30s()); + wholeTotal.setTotal30_60s(currentTotal.getTotal30_60s() + wholeTotal.getTotal30_60s()); + wholeTotal.setTotal1_2m(currentTotal.getTotal1_2m() + wholeTotal.getTotal1_2m()); + wholeTotal.setTotal2_10m(currentTotal.getTotal2_10m() + wholeTotal.getTotal2_10m()); + wholeTotal.setTotal10m(currentTotal.getTotal10m() + wholeTotal.getTotal10m()); + } + query.setWholeTotal(wholeTotal); + return query; + + } +}