package compbio.cassandra.readers; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import com.datastax.driver.core.ResultSet; import com.datastax.driver.core.Row; import compbio.beans.TotalByCounterBean; public class ReaderByCounter extends CassandraReader { public ReaderByCounter() { super(); } /** * query protein sequences with number of jobs * * @param minimalcounter * * @return List to the controller SequenceController * **/ public List readProteinByCounter(int minimalcounter) { ResultSet results = CassandraQuery("SELECT Protein, JobID FROM ProteinRow;"); return QueryByCounter(results, "Protein", minimalcounter); } /** * query ip with number of jobs * * @param minimalcounter * * @return List to the controller IPDataController * **/ public List readIpByCounter(Integer minimalcounter) { ResultSet results = CassandraQuery("SELECT JobID, ip FROM ProteinLog;"); return QueryByCounter(results, "ip", minimalcounter); } /** * query number of jobs by counter and parameter: ip or protein * * @param results * cassandra query result * @param counterParameter * parameter for a query: ip or proteint * @param minimalcounter * * @return List * **/ public List QueryByCounter(ResultSet results, String counterParameter, int minimalcounter) { List query = new ArrayList(); if (results.isExhausted()) return null; List rows = results.all(); Map res = new HashMap(); for (Row r : rows) { String parameter = r.getString(counterParameter); if (res.containsKey(parameter)) res.put(parameter, res.get(parameter) + 1); else res.put(parameter, 1); } for (Map.Entry entry : res.entrySet()) { if (entry.getValue() > minimalcounter) { TotalByCounterBean bean = new TotalByCounterBean(); bean.setTotaljobs(entry.getValue()); bean.setName(entry.getKey()); query.add(bean); } } return query; } }