package controllers; import java.awt.geom.Point2D; import java.util.ArrayList; import java.util.List; import play.Logger; import play.libs.Json; import play.mvc.Result; import uk.bl.monitrix.Global; import uk.bl.monitrix.database.cassandra.model.CassandraCrawlLog; import uk.bl.monitrix.database.cassandra.model.CassandraCrawlLog.Tuple; import uk.bl.monitrix.model.CrawlLogEntry; public class URLs extends AbstractController { private static CassandraCrawlLog crawlLog = (CassandraCrawlLog) Global.getBackend().getCrawlLog(); public static Result index() { return ok(views.html.urls.index.render(crawlLog)); } public static Result getURLInfo(String url) { List<CrawlLogEntry> entries = crawlLog.getEntriesForURL(url); for (CrawlLogEntry e : entries) { Logger.info("Crawl ID: " + e.getLogId()); } return ok(views.html.urls.urlInfo.render(entries)); } public static Result getCompressability() { int intervals = getQueryParamAsInt("intervals", 50); // All counts, in native resolution List<Tuple> tuples = crawlLog.getCompressabilityHistogram(); Logger.info("Got histogram from DB (" + tuples.size() + " buckets in original resolution)"); // Now resample... int ctr = 0; int step = tuples.size() / intervals; Logger.info("Resampling to " + intervals + " intervals (" + step + " stepsize)"); List<Point2D> histogram = new ArrayList<Point2D>(); while (ctr < tuples.size()) { double bucketSec = ((double) ctr) / 1000; int aggregated = 0; for (int i=0; i<step; i++) { if (ctr < tuples.size()) aggregated += tuples.get(ctr)._2; ctr++; } Logger.info("Resampled value: " + bucketSec + " -> " + aggregated); histogram.add(new Point2D.Double(bucketSec, aggregated)); } return ok(Json.toJson(histogram)); } }