Apply formatting
[proteocache.git] / datadb / compbio / cassandra / readers / ReaderByCounter.java
1 package compbio.cassandra.readers;
2
3 import java.util.ArrayList;
4 import java.util.HashMap;
5 import java.util.List;
6 import java.util.Map;
7
8 import com.datastax.driver.core.ResultSet;
9 import com.datastax.driver.core.Row;
10
11 import compbio.beans.TotalByCounterBean;
12
13 public class ReaderByCounter extends CassandraReader {
14
15         public ReaderByCounter() {
16                 super();
17         }
18
19         /**
20          * query protein sequences with number of jobs
21          * 
22          * @param minimalcounter
23          * 
24          * @return List<TotalByCounterBean> to the controller SequenceController
25          * 
26          **/
27         public List<TotalByCounterBean> readProteinByCounter(int minimalcounter) {
28                 ResultSet results = CassandraQuery("SELECT Protein, JobID FROM ProteinRow;");
29                 return QueryByCounter(results, "Protein", minimalcounter);
30         }
31
32         /**
33          * query ip with number of jobs
34          * 
35          * @param minimalcounter
36          * 
37          * @return List<TotalByCounterBean> to the controller IPDataController
38          * 
39          **/
40         public List<TotalByCounterBean> readIpByCounter(Integer minimalcounter) {
41                 ResultSet results = CassandraQuery("SELECT JobID, ip FROM ProteinLog;");
42                 return QueryByCounter(results, "ip", minimalcounter);
43         }
44
45         /**
46          * query number of jobs by counter and parameter: ip or protein
47          * 
48          * @param results
49          *            cassandra query result
50          * @param counterParameter
51          *            parameter for a query: ip or proteint
52          * @param minimalcounter
53          * 
54          * @return List<TotalByCounterBean>
55          * 
56          **/
57         public List<TotalByCounterBean> QueryByCounter(ResultSet results, String counterParameter, int minimalcounter) {
58                 List<TotalByCounterBean> query = new ArrayList<TotalByCounterBean>();
59                 if (results.isExhausted())
60                         return null;
61                 List<Row> rows = results.all();
62                 Map<String, Integer> res = new HashMap<String, Integer>();
63                 for (Row r : rows) {
64                         String parameter = r.getString(counterParameter);
65                         if (res.containsKey(parameter))
66                                 res.put(parameter, res.get(parameter) + 1);
67                         else
68                                 res.put(parameter, 1);
69                 }
70                 for (Map.Entry<String, Integer> entry : res.entrySet()) {
71                         if (entry.getValue() > minimalcounter) {
72                                 TotalByCounterBean bean = new TotalByCounterBean();
73                                 bean.setTotaljobs(entry.getValue());
74                                 bean.setName(entry.getKey());
75                                 query.add(bean);
76                         }
77                 }
78                 return query;
79         }
80
81 }