From 23ef7a6a36233ee82656f6d0f602b82f009847ed Mon Sep 17 00:00:00 2001 From: Natasha Sherstneva Date: Thu, 19 Dec 2013 11:02:02 +0000 Subject: [PATCH] check the date in controller, new class dateFormatter --- datadb/compbio/cassandra/CassandraReader.java | 303 +------------------ datadb/compbio/cassandra/CassandraReaderOld.java | 318 ++++++++++++++++++++ datadb/compbio/cassandra/DateFormatter.java | 62 ++++ .../readers/CassandraReaderExecutionTime.java | 2 +- .../controllers/DailyStatisticsController.java | 62 +++- server/compbio/statistic/CassandraRequester.java | 13 +- webapp/view/query/JobStatistics.jsp | 42 ++- 7 files changed, 481 insertions(+), 321 deletions(-) create mode 100644 datadb/compbio/cassandra/CassandraReaderOld.java create mode 100644 datadb/compbio/cassandra/DateFormatter.java diff --git a/datadb/compbio/cassandra/CassandraReader.java b/datadb/compbio/cassandra/CassandraReader.java index 1720c48..00f878a 100644 --- a/datadb/compbio/cassandra/CassandraReader.java +++ b/datadb/compbio/cassandra/CassandraReader.java @@ -1,20 +1,12 @@ package compbio.cassandra; -import java.util.Date; -import java.util.HashMap; -import java.util.List; -import java.util.ArrayList; -import java.util.Map; - import org.apache.log4j.Logger; -import com.datastax.driver.core.Row; -import com.datastax.driver.core.Session; import com.datastax.driver.core.ResultSet; - -import compbio.engine.JobStatus; +import com.datastax.driver.core.Session; public class CassandraReader { + private static long earlestDate = 0; private Session session; private static Logger log = Logger.getLogger(CassandraNativeConnector.class); @@ -27,292 +19,21 @@ public class CassandraReader { assert s != null; session = s; } - - /* - * getting data from the db - */ - public List> ReadProteinDataTable() { - final long startTime = System.currentTimeMillis(); - String com = "SELECT DataBegin,DataEnd FROM ProteinLog;"; + + public ResultSet CassandraQuery(String column, String table, String condition) { + String com = "SELECT " + column + " FROM " + table + ";"; System.out.println("Command: " + com); ResultSet results = session.execute(com); - final long queryTime = System.currentTimeMillis(); - List rows = results.all(); - System.out.println("Query time is " + (queryTime - startTime) + " msec"); - - List> res = new ArrayList>(); - int c = 0; - for (Row r : rows) { - Pair pair = new Pair(r.getString("DataBegin"), r.getString("DataEnd")); - res.add(pair); - ++c; - } - final long endTime = System.currentTimeMillis(); - System.out.println(c + " rows analysed, execution time is " + (endTime - startTime) + " msec"); - return res; + return results; } - + /* - * getting data from the db - */ - public DateBean ReadProteinData(long day, String date) { - String com = "SELECT JobID, Protein FROM ProteinData WHERE jobtime = " + day + ";"; - System.out.println("Command: " + com); - ResultSet results = session.execute(com); - if (results.isExhausted()) - return null; - List rows = results.all(); - DateBean res = new DateBean(date); - for (Row r : rows) { - res.setJobidAndSeq(r.getString("JobID"), r.getString("Protein")); - } - return res; - } - - /** - * getting data from the db + * find the earliest date in the database */ - public DateBean ReadFailedJobs(long day, String date, JobStatus status) { - // FailLog (jobtime, JobID, ExecTime, ip, FinalStatus) - String com = "SELECT JobID FROM FailLog WHERE jobtime = " + day + " and FinalStatus = '" + status.name() + "';"; - ResultSet results = session.execute(com); - if (results.isExhausted()) - return null; - List rows = results.all(); - DateBean res = new DateBean(date); - for (Row r : rows) { - String jobid = r.getString("JobID"); - String com1 = "SELECT Protein FROM ProteinLog WHERE JobID = '" + jobid + "';"; - System.out.println("Command: " + com1); - ResultSet results2 = session.execute(com1); - List jrows = results2.all(); - if (1 == jrows.size()) { - String protein = jrows.get(0).getString("Protein"); - res.setJobidAndSeq(jobid, protein); - } - } - return res; - } - - /* - * getting data from the db JobDateInfo - */ - public Total ReadDateTable(long queryDate) { - ResultSet results = session.execute("SELECT * FROM JobDateInfo WHERE jobday = " + queryDate + ";"); - if (results.isExhausted()) - return null; - Row therow = results.one(); - Total res = new Total(therow.getLong("Total"), therow.getLong("TotalOK"), therow.getLong("TotalStopped"), - therow.getLong("TotalError"), therow.getLong("TotalTimeOut")); - if (!results.isExhausted()) { - Date date = new Date(queryDate); - log.warn("CassandraReader.ReadDateTable: date row for " + date.toString() + " (" + queryDate + ") duplicated "); - } - return res; - } - - /* - * getting whole protein sequence from the db ProteinRow - */ - public List ReadWholeSequence(String queryProtein) { - final long startTime = System.currentTimeMillis(); - String com = "SELECT JobID, Predictions FROM ProteinRow WHERE Protein = '" + queryProtein + "';"; - System.out.println("Command: " + com); - ResultSet results = session.execute(com); - if (results.isExhausted()) - return null; - final long queryTime = System.currentTimeMillis(); - List rows = results.all(); - System.out.println("first size : " + rows.size()); - System.out.println("Query time is " + (queryTime - startTime) + " msec"); - System.out.println(" rows analysed, " + rows.size()); - List res = new ArrayList(); - ProteinBean structure = new ProteinBean(queryProtein, rows.get(0).getMap("Predictions", String.class, String.class)); - System.out.println("second size : " + rows.size()); - int c = 0; - for (Row r : rows) { - structure.setJobid(r.getString("JobID")); - ++c; - } - res.add(structure); - final long endTime = System.currentTimeMillis(); - System.out.println(c + " rows analysed, execution time is " + (endTime - startTime) + " msec"); - return res; - } - - /* - * getting jobs by ip - */ - public Map ReadIpWithJobs(String ip) { - final long startTime = System.currentTimeMillis(); - String com = "SELECT JobID, Protein, FinalStatus, DataBegin FROM ProteinLog WHERE ip = '" + ip + "';"; - System.out.println("Command: " + com); - ResultSet results = session.execute(com); - if (results.isExhausted()) - return null; - final long queryTime = System.currentTimeMillis(); - List rows = results.all(); - Map res = new HashMap(); - System.out.println("Query time is " + (queryTime - startTime) + " msec"); - System.out.println(" rows analysed, " + rows.size()); - int c = 0; - for (Row r : rows) { - if (r.getString("FinalStatus").equals("OK")) { - String date = r.getString("DataBegin"); - res.put(r.getString("JobID"), new String[] { date.substring(0, date.indexOf(":")), r.getString("Protein") }); - ++c; - } - } - final long endTime = System.currentTimeMillis(); - System.out.println(c + " rows analysed, execution time is " + (endTime - startTime) + " msec"); - return res; + public static long earliestDate() { + earlestDate = CassandraNativeConnector.getEarliestDateInDB(); + return earlestDate; } - /* - * getting part of protein sequence from the db ProteinRow - */ - public List ReadPartOfSequence(String queryProtein) { - final long startTime = System.currentTimeMillis(); - String com = "SELECT * FROM ProteinRow;"; - System.out.println("Command: " + com); - ResultSet results = session.execute(com); - if (results.isExhausted()) - return null; - final long queryTime = System.currentTimeMillis(); - List rows = results.all(); - System.out.println("Query time is " + (queryTime - startTime) + " msec"); - System.out.println(" rows analysed, " + rows.size()); - List res = new ArrayList(); - int c = 0; - for (Row r : rows) { - String prot = r.getString("Protein"); - if (prot.matches("(.*)" + queryProtein + "(.*)")) { - ProteinBean structure = new ProteinBean(prot, r.getMap("Predictions", String.class, String.class)); - structure.setJobid(r.getString("JobID")); - res.add(structure); - ++c; - } - } - final long endTime = System.currentTimeMillis(); - System.out.println(c + " rows analysed, execution time is " + (endTime - startTime) + " msec"); - return res; - } - - /* - * getting protein sequence from the db ProteinRow - */ - public Map ReadProtein() { - final long startTime = System.currentTimeMillis(); - String com = "SELECT * FROM ProteinRow;"; - System.out.println("Command: " + com); - ResultSet results = session.execute(com); - if (results.isExhausted()) - return null; - final long queryTime = System.currentTimeMillis(); - List rows = results.all(); - System.out.println("Query time is " + (queryTime - startTime) + " msec"); - System.out.println(" rows analysed, " + rows.size()); - Map res = new HashMap(); - int c = 0; - for (Row r : rows) { - String prot = r.getString("Protein"); - String prediction = findJnetpred(r.getMap("Predictions", String.class, String.class)); - if (prot != null || prediction != null) - res.put(prot, prediction); - } - final long endTime = System.currentTimeMillis(); - System.out.println(c + " rows analysed, execution time is " + (endTime - startTime) + " msec"); - return res; - } - - private String findJnetpred (Map pred) { - if (pred != null) { - if (pred.containsKey("jnetpred")) - return pred.get("jnetpred"); - } - return null; - } - /* - * getting protein sequences by counter - */ - public Map ReadProteinSequenceByCounter() { - final long startTime = System.currentTimeMillis(); - String com = "SELECT Protein, JobID FROM ProteinRow;"; - System.out.println("Command: " + com); - ResultSet results = session.execute(com); - if (results.isExhausted()) - return null; - final long queryTime = System.currentTimeMillis(); - List rows = results.all(); - System.out.println("Query time is " + (queryTime - startTime) + " msec"); - System.out.println(" rows analysed, " + rows.size()); - Map res = new HashMap(); - int c = 0; - for (Row r : rows) { - String protein = r.getString("Protein"); - String id = r.getString("JobID"); - 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 ip by counter - */ - public Map ReadIpByCounter() { - final long startTime = System.currentTimeMillis(); - String com = "SELECT JobID, ip FROM ProteinLog;"; - System.out.println("Command: " + com); - ResultSet results = session.execute(com); - if (results.isExhausted()) - return null; - final long queryTime = System.currentTimeMillis(); - List rows = results.all(); - System.out.println("Query time is " + (queryTime - startTime) + " msec"); - System.out.println(" rows analysed, " + rows.size()); - Map res = new HashMap(); - int c = 0; - for (Row r : rows) { - String ip = r.getString("ip"); - String id = r.getString("JobID"); - if (res.containsKey(ip)) - res.put(ip, res.get(ip) + 1); - else - res.put(ip, 1); - } - final long endTime = System.currentTimeMillis(); - System.out.println(c + " rows analysed, execution time is " + (endTime - startTime) + " msec"); - return res; - } - - /* - * getting log info for jobid - */ - public JobBean ReadJobLog(String jobid) { - final long startTime = System.currentTimeMillis(); - String com = "SELECT * FROM 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 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(); - 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)); - 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; - } + } diff --git a/datadb/compbio/cassandra/CassandraReaderOld.java b/datadb/compbio/cassandra/CassandraReaderOld.java new file mode 100644 index 0000000..f29bc9f --- /dev/null +++ b/datadb/compbio/cassandra/CassandraReaderOld.java @@ -0,0 +1,318 @@ +package compbio.cassandra; + +import java.util.Date; +import java.util.HashMap; +import java.util.List; +import java.util.ArrayList; +import java.util.Map; + +import org.apache.log4j.Logger; + +import com.datastax.driver.core.Row; +import com.datastax.driver.core.Session; +import com.datastax.driver.core.ResultSet; + +import compbio.engine.JobStatus; + +public class CassandraReaderOld { + private Session session; + private static Logger log = Logger.getLogger(CassandraNativeConnector.class); + + public CassandraReaderOld() { + Session inis = CassandraNativeConnector.getSession(); + setSession(inis); + } + + public void setSession(Session s) { + assert s != null; + session = s; + } + + /* + * getting data from the db + */ + public List> ReadProteinDataTable() { + final long startTime = System.currentTimeMillis(); + String com = "SELECT DataBegin,DataEnd FROM ProteinLog;"; + System.out.println("Command: " + com); + ResultSet results = session.execute(com); + final long queryTime = System.currentTimeMillis(); + List rows = results.all(); + System.out.println("Query time is " + (queryTime - startTime) + " msec"); + + List> res = new ArrayList>(); + int c = 0; + for (Row r : rows) { + Pair pair = new Pair(r.getString("DataBegin"), r.getString("DataEnd")); + res.add(pair); + ++c; + } + final long endTime = System.currentTimeMillis(); + System.out.println(c + " rows analysed, execution time is " + (endTime - startTime) + " msec"); + return res; + } + + /* + * getting data from the db + */ + public DateBean ReadProteinData(long day, String date) { + String com = "SELECT JobID, Protein FROM ProteinData WHERE jobtime = " + day + ";"; + System.out.println("Command: " + com); + ResultSet results = session.execute(com); + if (results.isExhausted()) + return null; + List rows = results.all(); + DateBean res = new DateBean(date); + for (Row r : rows) { + res.setJobidAndSeq(r.getString("JobID"), r.getString("Protein")); + } + return res; + } + + /** + * getting data from the db + */ + public DateBean ReadFailedJobs(long day, String date, JobStatus status) { + // FailLog (jobtime, JobID, ExecTime, ip, FinalStatus) + String com = "SELECT JobID FROM FailLog WHERE jobtime = " + day + " and FinalStatus = '" + status.name() + "';"; + ResultSet results = session.execute(com); + if (results.isExhausted()) + return null; + List rows = results.all(); + DateBean res = new DateBean(date); + for (Row r : rows) { + String jobid = r.getString("JobID"); + String com1 = "SELECT Protein FROM ProteinLog WHERE JobID = '" + jobid + "';"; + System.out.println("Command: " + com1); + ResultSet results2 = session.execute(com1); + List jrows = results2.all(); + if (1 == jrows.size()) { + String protein = jrows.get(0).getString("Protein"); + res.setJobidAndSeq(jobid, protein); + } + } + return res; + } + + /* + * getting data from the db JobDateInfo + */ + public Total ReadDateTable(long queryDate) { + ResultSet results = session.execute("SELECT * FROM JobDateInfo WHERE jobday = " + queryDate + ";"); + if (results.isExhausted()) + return null; + Row therow = results.one(); + Total res = new Total(therow.getLong("Total"), therow.getLong("TotalOK"), therow.getLong("TotalStopped"), + therow.getLong("TotalError"), therow.getLong("TotalTimeOut")); + if (!results.isExhausted()) { + Date date = new Date(queryDate); + log.warn("CassandraReader.ReadDateTable: date row for " + date.toString() + " (" + queryDate + ") duplicated "); + } + return res; + } + + /* + * getting whole protein sequence from the db ProteinRow + */ + public List ReadWholeSequence(String queryProtein) { + final long startTime = System.currentTimeMillis(); + String com = "SELECT JobID, Predictions FROM ProteinRow WHERE Protein = '" + queryProtein + "';"; + System.out.println("Command: " + com); + ResultSet results = session.execute(com); + if (results.isExhausted()) + return null; + final long queryTime = System.currentTimeMillis(); + List rows = results.all(); + System.out.println("first size : " + rows.size()); + System.out.println("Query time is " + (queryTime - startTime) + " msec"); + System.out.println(" rows analysed, " + rows.size()); + List res = new ArrayList(); + ProteinBean structure = new ProteinBean(queryProtein, rows.get(0).getMap("Predictions", String.class, String.class)); + System.out.println("second size : " + rows.size()); + int c = 0; + for (Row r : rows) { + structure.setJobid(r.getString("JobID")); + ++c; + } + res.add(structure); + final long endTime = System.currentTimeMillis(); + System.out.println(c + " rows analysed, execution time is " + (endTime - startTime) + " msec"); + return res; + } + + /* + * getting jobs by ip + */ + public Map ReadIpWithJobs(String ip) { + final long startTime = System.currentTimeMillis(); + String com = "SELECT JobID, Protein, FinalStatus, DataBegin FROM ProteinLog WHERE ip = '" + ip + "';"; + System.out.println("Command: " + com); + ResultSet results = session.execute(com); + if (results.isExhausted()) + return null; + final long queryTime = System.currentTimeMillis(); + List rows = results.all(); + Map res = new HashMap(); + System.out.println("Query time is " + (queryTime - startTime) + " msec"); + System.out.println(" rows analysed, " + rows.size()); + int c = 0; + for (Row r : rows) { + if (r.getString("FinalStatus").equals("OK")) { + String date = r.getString("DataBegin"); + res.put(r.getString("JobID"), new String[] { date.substring(0, date.indexOf(":")), r.getString("Protein") }); + ++c; + } + } + final long endTime = System.currentTimeMillis(); + System.out.println(c + " rows analysed, execution time is " + (endTime - startTime) + " msec"); + return res; + } + + /* + * getting part of protein sequence from the db ProteinRow + */ + public List ReadPartOfSequence(String queryProtein) { + final long startTime = System.currentTimeMillis(); + String com = "SELECT * FROM ProteinRow;"; + System.out.println("Command: " + com); + ResultSet results = session.execute(com); + if (results.isExhausted()) + return null; + final long queryTime = System.currentTimeMillis(); + List rows = results.all(); + System.out.println("Query time is " + (queryTime - startTime) + " msec"); + System.out.println(" rows analysed, " + rows.size()); + List res = new ArrayList(); + int c = 0; + for (Row r : rows) { + String prot = r.getString("Protein"); + if (prot.matches("(.*)" + queryProtein + "(.*)")) { + ProteinBean structure = new ProteinBean(prot, r.getMap("Predictions", String.class, String.class)); + structure.setJobid(r.getString("JobID")); + res.add(structure); + ++c; + } + } + final long endTime = System.currentTimeMillis(); + System.out.println(c + " rows analysed, execution time is " + (endTime - startTime) + " msec"); + return res; + } + + /* + * getting protein sequence from the db ProteinRow + */ + public Map ReadProtein() { + final long startTime = System.currentTimeMillis(); + String com = "SELECT * FROM ProteinRow;"; + System.out.println("Command: " + com); + ResultSet results = session.execute(com); + if (results.isExhausted()) + return null; + final long queryTime = System.currentTimeMillis(); + List rows = results.all(); + System.out.println("Query time is " + (queryTime - startTime) + " msec"); + System.out.println(" rows analysed, " + rows.size()); + Map res = new HashMap(); + int c = 0; + for (Row r : rows) { + String prot = r.getString("Protein"); + String prediction = findJnetpred(r.getMap("Predictions", String.class, String.class)); + if (prot != null || prediction != null) + res.put(prot, prediction); + } + final long endTime = System.currentTimeMillis(); + System.out.println(c + " rows analysed, execution time is " + (endTime - startTime) + " msec"); + return res; + } + + private String findJnetpred (Map pred) { + if (pred != null) { + if (pred.containsKey("jnetpred")) + return pred.get("jnetpred"); + } + return null; + } + /* + * getting protein sequences by counter + */ + public Map ReadProteinSequenceByCounter() { + final long startTime = System.currentTimeMillis(); + String com = "SELECT Protein, JobID FROM ProteinRow;"; + System.out.println("Command: " + com); + ResultSet results = session.execute(com); + if (results.isExhausted()) + return null; + final long queryTime = System.currentTimeMillis(); + List rows = results.all(); + System.out.println("Query time is " + (queryTime - startTime) + " msec"); + System.out.println(" rows analysed, " + rows.size()); + Map res = new HashMap(); + int c = 0; + for (Row r : rows) { + String protein = r.getString("Protein"); + String id = r.getString("JobID"); + 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 ip by counter + */ + public Map ReadIpByCounter() { + final long startTime = System.currentTimeMillis(); + String com = "SELECT JobID, ip FROM ProteinLog;"; + System.out.println("Command: " + com); + ResultSet results = session.execute(com); + if (results.isExhausted()) + return null; + final long queryTime = System.currentTimeMillis(); + List rows = results.all(); + System.out.println("Query time is " + (queryTime - startTime) + " msec"); + System.out.println(" rows analysed, " + rows.size()); + Map res = new HashMap(); + int c = 0; + for (Row r : rows) { + String ip = r.getString("ip"); + String id = r.getString("JobID"); + if (res.containsKey(ip)) + res.put(ip, res.get(ip) + 1); + else + res.put(ip, 1); + } + final long endTime = System.currentTimeMillis(); + System.out.println(c + " rows analysed, execution time is " + (endTime - startTime) + " msec"); + return res; + } + + /* + * getting log info for jobid + */ + public JobBean ReadJobLog(String jobid) { + final long startTime = System.currentTimeMillis(); + String com = "SELECT * FROM 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 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(); + 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)); + 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; + } +} diff --git a/datadb/compbio/cassandra/DateFormatter.java b/datadb/compbio/cassandra/DateFormatter.java new file mode 100644 index 0000000..471f2a8 --- /dev/null +++ b/datadb/compbio/cassandra/DateFormatter.java @@ -0,0 +1,62 @@ +package compbio.cassandra; + +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.Date; + +public class DateFormatter { + private final static SimpleDateFormat formatYYMMDD = new SimpleDateFormat("yyyy/MM/dd"); + private final static SimpleDateFormat formatDDMMYY = new SimpleDateFormat("dd/MM/yyyy"); + + /* + * convert String date into long date (miliseconds since the epoch start) + */ + public static long DateParsing(String datInput, SimpleDateFormat formatter) { + if (datInput == null) { + return 0; + } + long dateWorkSt = 0; + + try { + dateWorkSt = formatter.parse(datInput).getTime(); + } catch (ParseException e) { + e.printStackTrace(); + } + return dateWorkSt; + } + + /* + * date validator + * true - if valid date, false - if invalid + */ + public static boolean isThisDateValid(String dateToValidate, SimpleDateFormat sdf) { + if (dateToValidate == null || dateToValidate.equals("")) { + return false; + } + try { + // if not valid, this will throw ParseException + sdf.setLenient(false); + Date date = sdf.parse(dateToValidate); + } catch (ParseException e) { + e.printStackTrace(); + return false; + } + return true; + } + + /* + * convert date from long to String + */ + public static String DateLongToString(long indate, SimpleDateFormat formatter) { + String dateString = formatter.format(new Date(indate)); + return dateString; + } + + public static SimpleDateFormat getFormatYYMMDD() { + return formatYYMMDD; + } + + public static SimpleDateFormat getFormatDDMMYY() { + return formatDDMMYY; + } +} diff --git a/datadb/compbio/cassandra/readers/CassandraReaderExecutionTime.java b/datadb/compbio/cassandra/readers/CassandraReaderExecutionTime.java index 347ebe3..3e8453e 100644 --- a/datadb/compbio/cassandra/readers/CassandraReaderExecutionTime.java +++ b/datadb/compbio/cassandra/readers/CassandraReaderExecutionTime.java @@ -13,7 +13,7 @@ import com.datastax.driver.core.ResultSet; import com.datastax.driver.core.PreparedStatement; import com.datastax.driver.core.BoundStatement; -import compbio.cassandra.CassandraReader; +import compbio.cassandra.CassandraReaderOld; import compbio.cassandra.Pair; import compbio.engine.ProteoCachePropertyHelperManager; import compbio.util.PropertyHelper; diff --git a/server/compbio/controllers/DailyStatisticsController.java b/server/compbio/controllers/DailyStatisticsController.java index d6a0c1e..ef399f5 100644 --- a/server/compbio/controllers/DailyStatisticsController.java +++ b/server/compbio/controllers/DailyStatisticsController.java @@ -12,10 +12,12 @@ import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RequestParam; import compbio.engine.JobStatus; +import compbio.cassandra.CassandraReader; import compbio.cassandra.DateBean; +import compbio.cassandra.DateFormatter; import compbio.cassandra.TotalJobsStatisticBean; import compbio.statistic.CassandraRequester; -import compbio.statistic.StatisticsProt; + /** * @author Alexander Sherstnev @@ -23,18 +25,20 @@ import compbio.statistic.StatisticsProt; */ @Controller public class DailyStatisticsController extends BasicController { - + Calendar cal = Calendar.getInstance(); + final SimpleDateFormat formaterDDMMYY = DateFormatter.getFormatDDMMYY(); + final SimpleDateFormat formaterYYMMDD = DateFormatter.getFormatYYMMDD(); + String theEaerlistDate = DateFormatter.DateLongToString(CassandraReader.earliestDate(), formaterYYMMDD); + String theCurrentDate = cal.get(Calendar.YEAR) + "/" + (cal.get(Calendar.MONTH) + 1) + "/" + cal.get(Calendar.DAY_OF_MONTH); + @RequestMapping(value = "/stat/jobs/query", method = RequestMethod.GET) public String initFindForm(Map model) { model.put("username", getPrincipalName()); - Calendar cal = Calendar.getInstance(); String date2 = cal.get(Calendar.YEAR) + "/" + (cal.get(Calendar.MONTH) + 1) + "/" + cal.get(Calendar.DATE); cal.add(Calendar.DATE, -3); String date1 = cal.get(Calendar.YEAR) + "/" + (cal.get(Calendar.MONTH) + 1) + "/" + cal.get(Calendar.DATE); - model.put("date1", date1); model.put("date2", date2); - return "query/JobStatistics"; } @@ -42,14 +46,34 @@ public class DailyStatisticsController extends BasicController { public String findJobsInPeriod(@RequestParam("date1") String date1, @RequestParam("date2") String date2, @RequestParam("option") String option, Map model) { model.put("username", getPrincipalName()); - final long startTime = System.currentTimeMillis(); - + final long startTime = System.currentTimeMillis(); CassandraRequester cr = new CassandraRequester(); if (option.equals("AllDates,off")) { - Calendar cal = Calendar.getInstance(); - date1 = StatisticsProt.DateFormatYYMMDD(cr.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/JobStatistics"; } + + if (longDate1 < CassandraReader.earliestDate()) + longDate1 = CassandraReader.earliestDate(); + if (longDate2 > cal.getTimeInMillis()) + longDate2 = cal.getTimeInMillis(); + + date1 = DateFormatter.DateLongToString(longDate1, formaterYYMMDD); + date2 = DateFormatter.DateLongToString(longDate2, formaterYYMMDD); model.put("date1", date1); model.put("date2", date2); TotalJobsStatisticBean res = cr.countJobs(date1, date2); @@ -68,8 +92,6 @@ public class DailyStatisticsController extends BasicController { final long startTime = System.currentTimeMillis(); String realdate; - final SimpleDateFormat formaterDDMMYY = new SimpleDateFormat("dd/MM/yyyy"); - final SimpleDateFormat formaterYYMMDD = new SimpleDateFormat("yyyy/MM/dd"); try { long thetime = formaterYYMMDD.parse(date).getTime(); if (thetime < 0) { @@ -97,4 +119,20 @@ public class DailyStatisticsController extends BasicController { model.put("timeExecution", (endTime - startTime)); return "/reportJobStatisticsOneDay"; } + + private String DateChecking(String trimmeddate1, String trimmeddate2, long longDate1, long longDate2) { + + if (trimmeddate1.equalsIgnoreCase("") || trimmeddate2.equalsIgnoreCase("")) + return "The date cann't be empty"; + else if (!DateFormatter.isThisDateValid(trimmeddate1, formaterYYMMDD) || !DateFormatter.isThisDateValid(trimmeddate2, formaterYYMMDD)) + return "The date format in invalid. Try format yyyy/mm/dd"; + else if (longDate2 < CassandraReader.earliestDate()) + return "The date2 is after the earlestDate " + theEaerlistDate; + else if (longDate1 > cal.getTimeInMillis()) + return "The date1 is before the current date " + theCurrentDate; + else if (longDate1 > longDate2) + return "Wrong date's diaposon. The date1 is more than date2."; + else + return null; + } } diff --git a/server/compbio/statistic/CassandraRequester.java b/server/compbio/statistic/CassandraRequester.java index f2336e7..3e5db8a 100755 --- a/server/compbio/statistic/CassandraRequester.java +++ b/server/compbio/statistic/CassandraRequester.java @@ -12,7 +12,7 @@ import java.util.Map; import compbio.cassandra.DateBean; import compbio.cassandra.ProteinBean; import compbio.cassandra.CassandraNativeConnector; -import compbio.cassandra.CassandraReader; +import compbio.cassandra.CassandraReaderOld; import compbio.cassandra.DataBase; import compbio.cassandra.Pair; import compbio.cassandra.JobBean; @@ -23,7 +23,7 @@ import compbio.cassandra.UserBean; import compbio.engine.JobStatus; public class CassandraRequester { - private CassandraReader db = new CassandraReader(); + private CassandraReaderOld db = new CassandraReaderOld(); private ArrayList query; private static long currentDate = 0; private static long earlestDate = 0; @@ -122,7 +122,7 @@ public class CassandraRequester { * query: total number of jobs for the period from date1 till date2 */ public TotalJobsStatisticBean countJobs(String date1, String date2) { - if (null == date1) { + /* if (null == date1) { date1 = "1970/1/1"; } if (null == date2) { @@ -131,17 +131,16 @@ public class CassandraRequester { if (!isThisDateValid(date1, formatYYMMDD) || !isThisDateValid(date2, formatYYMMDD)) { System.out.println("CassandraRequester.countJobs: wrong format for date1 " + date1 + "or date2 " + date2); return null; - } + }*/ SetDateRange(); long dateStart = DateParsing(date1, formatYYMMDD); long dateEnd = DateParsing(date2, formatYYMMDD); - if (dateEnd < earlestDate || dateStart > currentDate || dateStart > dateEnd) +/* if (dateEnd < earlestDate || dateStart > currentDate || dateStart > dateEnd) return null; if (dateStart < earlestDate) dateStart = earlestDate; if (dateEnd > currentDate) - dateStart = currentDate; - + dateStart = currentDate;*/ Calendar start = Calendar.getInstance(); start.setTime(new Date(dateStart)); Calendar end = Calendar.getInstance(); diff --git a/webapp/view/query/JobStatistics.jsp b/webapp/view/query/JobStatistics.jsp index 5636b95..705d306 100644 --- a/webapp/view/query/JobStatistics.jsp +++ b/webapp/view/query/JobStatistics.jsp @@ -1,6 +1,7 @@ <%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%> +<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%> <%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%> <%@ taglib prefix="form" uri="http://www.springframework.org/tags/form"%> @@ -18,16 +19,37 @@
-

Query for all dates
-

- - + + +
+

Query for all dates
+

+ + +
+
+ +
+

Query for all dates
+

+

+ Jobs executed + from + to +

+

${error}

+
+ + +
+
+
-- 1.7.10.2