package controllers; import java.util.List; import com.datastax.driver.core.Host; import controllers.mapping.CrawlLogEntryMapper; import controllers.mapping.CrawlStatsUnitMapper; import play.libs.Json; import play.mvc.Controller; import play.mvc.Result; import uk.bl.monitrix.Global; import uk.bl.monitrix.database.DBConnector; import uk.bl.monitrix.model.AlertLog; import uk.bl.monitrix.model.CrawlLog; import uk.bl.monitrix.model.CrawlStats; import uk.bl.monitrix.model.CrawlStatsUnit; import uk.bl.monitrix.model.KnownHostList; public class Home extends Controller { private static DBConnector backend = Global.getBackend(); private static CrawlLog log = backend.getCrawlLog(); private static CrawlStats stats = backend.getCrawlStats(); private static KnownHostList knownHosts = backend.getKnownHostList(); private static AlertLog alerts = backend.getAlertLog(); public static Result index() { return ok(views.html.home.index.render(log, stats, knownHosts, alerts)); } // TODO not sure where to put this API method... public static Result getMostRecentLogEntries() { if(backend == null || !backend.isAvailable()) { return ok(views.html.error.dbConnectError.render()); } else { return ok(Json.toJson(CrawlLogEntryMapper.map(log.getMostRecentEntries(100)))); } } // TODO not sure where to put this API method... public static Result getMostRecentStats() { List<CrawlStatsUnit> mostRecent = stats.getMostRecentStats(2); if (mostRecent.size() < 2) return ok(); return ok(Json.toJson(new CrawlStatsUnitMapper(mostRecent.get(1)))); } public static Result getTotals() { String total = ""+log.countEntries(); String revisits = ""+log.countRevisits(); return ok(Json.toJson(new String[] {total, revisits})); } }