X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=server%2Fcompbio%2Fstatistic%2FCassandraRequester.java;h=f4c4c18fa37105fc947a86d0a3e9580efc866784;hb=b154a542bd08371e3bcc7d92d0ded1c638399087;hp=2da38e76f54cccc193061a232e8801c4c959b3b8;hpb=ae38ab4dc7b6e22731c1d57765605304d36ccfa2;p=proteocache.git diff --git a/server/compbio/statistic/CassandraRequester.java b/server/compbio/statistic/CassandraRequester.java index 2da38e7..f4c4c18 100755 --- a/server/compbio/statistic/CassandraRequester.java +++ b/server/compbio/statistic/CassandraRequester.java @@ -9,18 +9,20 @@ import java.util.Iterator; import java.util.List; import java.util.Map; +import compbio.cassandra.AnnotatedProteinSequenceBean; import compbio.cassandra.CassandraNativeConnector; import compbio.cassandra.CassandraReader; import compbio.cassandra.DataBase; import compbio.cassandra.Pair; import compbio.cassandra.StructureJobLog; -import compbio.cassandra.StructureProteinPrediction; public class CassandraRequester { private CassandraReader db = new CassandraReader(); private ArrayList query; private static long currentDate = 0; private static long earlestDate = 0; + private final static SimpleDateFormat formatYYMMDD = new SimpleDateFormat("yyyy/MM/dd"); + private final static SimpleDateFormat formatDDMMYY = new SimpleDateFormat("dd/MM/yyyy"); /* * query: execution time for the period from date1 till date2 @@ -32,14 +34,14 @@ public class CassandraRequester { if (null == date2) { date1 = "2100/1/1"; } - if (!isThisDateValid(date1) || !isThisDateValid(date2)) { + if (!isThisDateValid(date1,formatYYMMDD) || !isThisDateValid(date2,formatYYMMDD)) { System.out.println("Wrong date: point 3"); return null; } SetDateRange(); int nbins = 5; - long dateStart = DateParsing(date1); - long dateEnd = DateParsing(date2); + long dateStart = DateParsing(date1, formatYYMMDD); + long dateEnd = DateParsing(date2, formatYYMMDD); if (dateEnd < earlestDate || dateStart > currentDate || dateStart > dateEnd) return null; if (dateStart < earlestDate) @@ -121,13 +123,13 @@ public class CassandraRequester { if (null == date2) { date1 = "2100/1/1"; } - if (!isThisDateValid(date1) || !isThisDateValid(date2)) { + if (!isThisDateValid(date1, formatYYMMDD) || !isThisDateValid(date2, formatYYMMDD)) { System.out.println("Wrong date: point 3"); return null; } SetDateRange(); - long dateStart = DateParsing(date1); - long dateEnd = DateParsing(date2); + long dateStart = DateParsing(date1, formatYYMMDD); + long dateEnd = DateParsing(date2, formatYYMMDD); if (dateEnd < earlestDate || dateStart > currentDate || dateStart > dateEnd) return null; if (dateStart < earlestDate) @@ -141,42 +143,81 @@ public class CassandraRequester { end.setTime(new Date(dateEnd)); query = new ArrayList(); for (Date date = start.getTime(); !start.after(end); start.add(Calendar.DATE, 1), date = start.getTime()) { - long res = db.ReadDateTable(date.getTime()); - DataBase db = new DataBase(); - db.setTotal((int)res); - db.setDate(DateFormat(date.getTime())); - query.add(db); + List res = db.ReadDateTable(date.getTime()); + if (res == null) + continue; + DataBase bean = new DataBase(); + bean.setTotal((int)(long)res.get(0)); + bean.setTotalOK((int)(long)res.get(1)); + bean.setTotalStopped((int)(long)res.get(2)); + bean.setTotalError((int)(long)res.get(3)); + bean.setTotalTimeOut((int)(long)res.get(4)); + bean.setDate(DateFormat(date.getTime())); + query.add(bean); + } + System.out.println("StatisticsProt.readLength: total number of dates = " + query.size()); + return query; + } + + /* + * query: jobs and sequence at date + */ + public List readJobByDay (String date) { + System.out.println(date); + if (null == date) { + return null; + } + if (!isThisDateValid(date, formatDDMMYY)) { + System.out.println("Wrong date: point 3"); + return null; + } + SetDateRange(); + long day = DateParsing(date, formatDDMMYY); + System.out.println(day); + if (day < earlestDate || day > currentDate) + return null; + List> res = db.ReadProteinData(day); + if (res == null) + return null; + query = new ArrayList(); + for (Pair entry : res) { + DataBase bean = new DataBase(); + bean.setDate(date); + bean.setId(entry.getElement0()); + bean.setProt(entry.getElement1()); + query.add(bean); } System.out.println("StatisticsProt.readLength: total number of dates = " + query.size()); return query; } + + /* * query: protein sequence * */ public List readProteins(String protIn, String flag) { query = new ArrayList(); - List res; + List res; if (flag.equals("whole")) res = db.ReadWholeSequence(protIn); else res = db.ReadPartOfSequence(protIn); - for (StructureProteinPrediction entry : res) { - Map pred = entry.getPrediction(); - Iterator it = pred.entrySet().iterator(); - while (it.hasNext()) { - DataBase db = new DataBase(); - db.setProt(entry.getSequence()); - Map.Entry pairs = (Map.Entry)it.next(); - db.setId(entry.getJobid()); - db.setJpred(pairs.getValue().toString()); - if (flag.equals("part")) - db.setSubProt(CreateSubprot (entry.getSequence(), protIn)); - query.add(db); + if (res == null) + return null; + for (AnnotatedProteinSequenceBean entry : res) { + DataBase db = new DataBase(); + db.setProt(entry.getSequence()); + db.setPredictions(entry); + db.setId(entry.getJobid()); + if (flag.equals("part")) { + db.setSubProt(CreateSubprot (entry.getSequence(), protIn)); } + query.add(db); } return query; } + /* * query protein sequences with number of jobs */ @@ -184,27 +225,75 @@ public class CassandraRequester { query = new ArrayList(); Map map = db.ReadProteinSequenceByCounter(); for (Map.Entry entry : map.entrySet()) { - if (entry.getValue() > minimalcounter) { - DataBase db = new DataBase(); - db.setTotalId(entry.getValue()); - db.setProt(entry.getKey()); - query.add(db); + if (entry.getValue() > minimalcounter && entry.getKey().length() > 0) { + DataBase bean = new DataBase(); + bean.setTotalId(entry.getValue()); + bean.setProt(entry.getKey()); + query.add(bean); } } return query; } + /* + * query ip with number of jobs + */ + public List readIpByCounter(Integer minimalcounter) { + query = new ArrayList(); + Map map = db.ReadIpByCounter(); + if (minimalcounter == null) + minimalcounter = 0; + if (map == null) + return null; + for (Map.Entry entry : map.entrySet()) { + if (entry.getValue() > minimalcounter) { + DataBase bean = new DataBase(); + bean.setTotalId(entry.getValue()); + bean.setIp(entry.getKey()); + query.add(bean); + } + } + return query; + } /* * query jobs log info */ public DataBase readJobLog(String jobid) { - // query = new ArrayList(); + if (jobid == null) + return null; StructureJobLog res = db.ReadJobLog(jobid); + if (res == null) + return null; DataBase query = new DataBase(); query.setLogInfo(res); - // query.setres); return query; } + + + /* + * query jobs by ipStructureJobLog + */ + public List readIp(String ip) { + if (ip == null) + return null; + List> res = db.ReadIpWithJobs(ip); + // System.out.println(res.size()); + if (res == null) + return null; + query = new ArrayList(); + for (Pair entry : res) { + System.out.println("ip " + ip); + System.out.println("id " + entry.getElement0()); + DataBase bean = new DataBase(); + bean.setIp(ip); + bean.setId(entry.getElement0()); + bean.setProt(entry.getElement1()); + query.add(bean); + } + System.out.println(query.size()); + return query; + } + /* * create list of parts of protein sequence; */ @@ -225,12 +314,12 @@ public class CassandraRequester { /* * convert String date into long date (miliseconds since the epoch start) */ - private static long DateParsing(String datInput) { + private static long DateParsing(String datInput, SimpleDateFormat formatter) { if (datInput == null) { return 0; } long dateWorkSt = 0; - SimpleDateFormat formatter = new SimpleDateFormat("yyyy/MM/dd"); + try { dateWorkSt = formatter.parse(datInput).getTime(); } catch (ParseException e) { @@ -251,7 +340,7 @@ public class CassandraRequester { */ private static void SetDateRange() { Calendar cal = Calendar.getInstance(); - currentDate = DateParsing(cal.get(Calendar.YEAR) + "/" + (cal.get(Calendar.MONTH) + 1) + "/" + cal.get(Calendar.DAY_OF_MONTH)); + currentDate = DateParsing(cal.get(Calendar.YEAR) + "/" + (cal.get(Calendar.MONTH) + 1) + "/" + cal.get(Calendar.DAY_OF_MONTH), formatYYMMDD); if (0 == earlestDate) { CassandraRequester cr = new CassandraRequester(); earlestDate = cr.earliestDate(); @@ -259,12 +348,11 @@ public class CassandraRequester { } } - public boolean isThisDateValid(String dateToValidate) { + public boolean isThisDateValid(String dateToValidate, SimpleDateFormat sdf) { if (dateToValidate == null || dateToValidate.equals("")) { System.out.println("Undefined date"); return false; } - SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd"); try { // if not valid, this will throw ParseException sdf.setLenient(false);