diff --git a/src/main/java/cloudgene/mapred/api/v2/server/GetCounter.java b/src/main/java/cloudgene/mapred/api/v2/server/GetCounter.java index 7656aaaa..bccf597b 100644 --- a/src/main/java/cloudgene/mapred/api/v2/server/GetCounter.java +++ b/src/main/java/cloudgene/mapred/api/v2/server/GetCounter.java @@ -2,6 +2,7 @@ import java.util.Map; +import cloudgene.mapred.database.JobDao; import org.restlet.representation.Representation; import org.restlet.representation.StringRepresentation; import org.restlet.resource.Get; @@ -41,10 +42,13 @@ public Representation get() { for (String key : counters.keySet()) { jsonWaiting.put(key, counters.get(key)); } + JobDao jobDao = new JobDao(getDatabase()); + int waitingJobs = jobDao.findAllByState(AbstractJob.STATE_WAITING).size(); + jsonWaiting.put("runs", waitingJobs); jsonCounters.put("waiting", jsonWaiting); - UserDao dao = new UserDao(getDatabase()); - jsonCounters.put("users", dao.findAll().size()); + UserDao dao = new UserDao(getDatabase()); + jsonCounters.put("users", dao.countAll()); return new StringRepresentation(jsonCounters.toString()); diff --git a/src/main/java/cloudgene/mapred/database/JobDao.java b/src/main/java/cloudgene/mapred/database/JobDao.java index ac65f39f..78723a05 100644 --- a/src/main/java/cloudgene/mapred/database/JobDao.java +++ b/src/main/java/cloudgene/mapred/database/JobDao.java @@ -412,6 +412,31 @@ public List findAllByState(int state) { } } + @SuppressWarnings("unchecked") + public int countAllByState(int state) { + + StringBuilder sql = new StringBuilder(); + sql.append("select count(*) "); + sql.append("from job "); + sql.append("where state = ? "); + + Object[] params = new Object[1]; + params[0] = state; + + int result = 0; + + try { + result = (Integer) queryForObject(sql.toString(), params, new IntegerMapper()); + log.debug("count all old jobs successful. results: " + result); + + return result; + } catch (SQLException e) { + log.error("count all old jobs failed", e); + return 0; + } + } + + public AbstractJob findById(String id) { return findById(id, true); diff --git a/src/main/java/cloudgene/mapred/database/UserDao.java b/src/main/java/cloudgene/mapred/database/UserDao.java index 37af8957..fd831317 100644 --- a/src/main/java/cloudgene/mapred/database/UserDao.java +++ b/src/main/java/cloudgene/mapred/database/UserDao.java @@ -208,7 +208,28 @@ public List findAll() { } return result; } - + + @SuppressWarnings("unchecked") + public int countAll() { + + StringBuilder sql = new StringBuilder(); + sql.append("select count(*) "); + sql.append("from `user` "); + + int result = 0; + + try { + result = (Integer) queryForObject(sql.toString(), new IntegerMapper()); + log.debug("count all users successful. results: " + result); + + return result; + } catch (SQLException e) { + log.error("count all users failed", e); + return 0; + } + } + + @SuppressWarnings("unchecked") public List findByQuery(String query) {